1var Uee=Object.defineProperty;var $ee=(e,t,i)=>t in e?Uee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;var ly=(e,t,i)=>$ee(e,typeof t!="symbol"?t+"":t,i);import{r as Q,k as re,a as lo,g as qT,c as wI,j as du}from"./shader-mount-BFYTwY9f.js";import{ed as Yp,ee as $Z,ef as ll,eg as Pc,eh as Qee,ei as Dee,ej as co,ek as Aee,el as eM,em as qee,en as ete,eo as tte,ep as ite,eq as PX,er as nte,aD as tM,es as ste,et as iM,eu as lte,ev as nM,ew as hb,ex as cte,ey as rte,ez as UX,eA as sM,eB as ate,eC as HI,eD as ote,eE as ute,eF as dte,eG as mte,eH as Gp,eI as bte,eJ as hte,eK as fte,l as $X,y as QX,aE as NI,x as qu,eL as DX,eM as Hf,aR as lM,aQ as fb,aP as RI,aO as kI,aN as pm,aG as QZ,aF as DZ,eN as FI,eO as SI,eP as LI,eQ as fZ,eR as AZ,eS as qZ,eT as CI,eU as pte,eV as yte,eW as oN,eX as Zte,eY as Wte,eZ as Xte,e_ as Jte,e$ as AX,f0 as xte,f1 as Yte,f2 as Gte,f3 as Cn,aC as _n,aB as $r,f4 as Vu,f5 as ro,f6 as cM,f7 as rM,f8 as aM,f9 as Vte,fa as oM,aA as uM,fb as dM,fc as mM,fd as Ite,fe as gte,ff as vte,fg as zte,fh as bM,fi as hM,fj as fM,fk as wte,fl as pM,fm as yM,fn as Hte,fo as ZM,fp as Nte,fq as Nf,b0 as WM,b1 as XM,b2 as JM,b3 as xM,b5 as YM,b4 as GM,b6 as VM,b7 as qX,ba as IM,bb as gM,v as vM,c as zM,fr as TI,fs as MI,ft as Rte,fu as wM,fv as kte,fw as Fte,fx as Ste,fy as Lte,fz as Cte,fA as Tte,fB as Mte,fC as eW,fD as vm,fE as zm,fF as Yo,fG as Kte,fH as HM,fI as sx,fJ as Bte,fK as _te,fL as Ote,fM as jte,fN as e2,aM as Ete,aL as Pte,aK as Ute,aJ as $te,aI as Qte,aH as Dte,fO as NM,fP as Ate,fQ as qte,fR as eie,fS as tie,fT as iie,fU as nie,fV as sie,fW as I9,fX as lie,fY as cie,fZ as rie,f_ as aie,f$ as oie,g0 as uie,g1 as die,g2 as mie,g3 as bie,g4 as hie,g5 as fie,g6 as RM,b as kM,g7 as pie,g8 as yie,g9 as Zie,s as fu,ga as FM,gb as tW,gc as Wie,gd as mu,b9 as Xie,b8 as Jie,ge as xie,gf as Yie}from"./inertia-CJhEvkkd.js";import{r as Gie,a as Vie,g as SM,t as Iie}from"./graphicWalkerFields-DsDgNYrH.js";import{s as zl}from"./index-XlZBlfHY.js";import{c as at,d as gie}from"./Tableau10-1LCcg9PS.js";import{a as LM,b as CM,c as TM,f as MM,e as KM,d as BM,g as _M}from"./catmullRomOpen-C2cPDS-8.js";import{d as vie}from"./arc-CZoWlK9j.js";import{o as pZ,c as uN,a as zie,r as wie,b as t2,N as OM,d as Hie,e as KI,s as Nie,p as Rie,h as kie,t as Fie,f as Sie}from"./index-Bi7T_FA4.js";import{a as Lie}from"./axis-DSWTncID.js";import"./get-shader-color-from-string-DGP5waOq.js";import"./ditherBackground-U49cB-zh.js";function i2(e,t){let i=0;if(t===void 0)for(let n of e)n!=null&&(n=+n)>=n&&++i;else{let n=-1;for(let s of e)(s=t(s,++n,e))!=null&&(s=+s)>=s&&++i}return i}function Cie(e){return e.length|0}function Tie(e){return!(e>0)}function Mie(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function Kie(e){return t=>e(...t)}function Bie(...e){const t=typeof e[e.length-1]=="function"&&Kie(e.pop());e=e.map(Mie);const i=e.map(Cie),n=e.length-1,s=new Array(n+1).fill(0),l=[];if(n<0||i.some(Tie))return l;for(;;){l.push(s.map((r,a)=>e[a][r]));let c=n;for(;++s[c]===i[c];){if(c===0)return t?l.map(t):l;s[c--]=0}}}function _ie(e,t){var i=0;return Float64Array.from(e,n=>i+=+n||0)}function jM(e,t){let i=0,n,s=0,l=0;if(t===void 0)for(let c of e)c!=null&&(c=+c)>=c&&(n=c-s,s+=n/++i,l+=n*(c-s));else{let c=-1;for(let r of e)(r=t(r,++c,e))!=null&&(r=+r)>=r&&(n=r-s,s+=n/++i,l+=n*(r-s))}if(i>1)return l/(i-1)}function BI(e,t){const i=jM(e,t);return i&&Math.sqrt(i)}function qs(e,t){let i,n;if(t===void 0)for(const s of e)s!=null&&(i===void 0?s>=s&&(i=n=s):(i>s&&(i=s),n<s&&(n=s)));else{let s=-1;for(let l of e)(l=t(l,++s,e))!=null&&(i===void 0?l>=l&&(i=n=l):(i>l&&(i=l),n<l&&(n=l)))}return[i,n]}class On{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const i=this._partials;let n=0;for(let s=0;s<this._n&&s<32;s++){const l=i[s],c=t+l,r=Math.abs(t)<Math.abs(l)?t-(c-l):l-(c-t);r&&(i[n++]=r),t=c}return i[n]=t,this._n=n+1,this}valueOf(){const t=this._partials;let i=this._n,n,s,l,c=0;if(i>0){for(c=t[--i];i>0&&(n=c,s=t[--i],c=n+s,l=s-(c-n),!l););i>0&&(l<0&&t[i-1]<0||l>0&&t[i-1]>0)&&(s=l*2,n=c+s,s==n-c&&(c=n))}return c}}function g9(e){return e}function Vp(e,...t){return _I(e,g9,g9,t)}function ym(e,t,...i){return _I(e,g9,t,i)}function Oie(e,t,...i){return _I(e,Array.from,t,i)}
1function _I(e,t,i,n){return function s(l,c){if(c>=n.length)return i(l);const r=new Yp,a=n[c++];let u=-1;for(const o of l){const d=a(o,++u,l),b=r.get(d);b?b.push(o):r.set(d,[o])}for(const[o,d]of r)r.set(o,s(d,c));return t(r)}(e,0)}function OI(e,t,i){return(t.length!==2?$Z(ym(e,t,i),([n,s],[l,c])=>ll(s,c)||ll(n,l)):$Z(Vp(e,i),([n,s],[l,c])=>t(s,c)||ll(n,l))).map(([n])=>n)}function jie(e){return Math.max(1,Math.ceil(Math.log(i2(e))/Math.LN2)+1)}function Eie(e,t){let i,n=-1,s=-1;if(t===void 0)for(const l of e)++s,l!=null&&(i<l||i===void 0&&l>=l)&&(i=l,n=s);else for(let l of e)(l=t(l,++s,e))!=null&&(i<l||i===void 0&&l>=l)&&(i=l,n=s);return n}function Pie(e,t){let i,n=-1,s=-1;if(t===void 0)for(const l of e)++s,l!=null&&(i>l||i===void 0&&l>=l)&&(i=l,n=s);else for(let l of e)(l=t(l,++s,e))!=null&&(i>l||i===void 0&&l>=l)&&(i=l,n=s);return n}function EM(e,t=ll){let i,n=!1;if(t.length===1){let s;for(const l of e){const c=t(l);(n?ll(c,s)>0:ll(c,c)===0)&&(i=l,s=c,n=!0)}}else for(const s of e)(n?t(s,i)>0:t(s,s)===0)&&(i=s,n=!0);return i}function Uie(e,t,i){const n=i2(e),s=Pc(e,.75)-Pc(e,.25);return n&&s?Math.ceil((i-t)/(2*s*Math.pow(n,-1/3))):1}function PM(e,t,i){const n=i2(e),s=BI(e);return n&&s?Math.ceil((i-t)*Math.cbrt(n)/(3.49*s)):1}function UM(e,t){let i=0,n=0;if(t===void 0)for(let s of e)s!=null&&(s=+s)>=s&&(++i,n+=s);else{let s=-1;for(let l of e)(l=t(l,++s,e))!=null&&(l=+l)>=l&&(++i,n+=l)}if(i)return n/i}function Rf(e,t){return Pc(e,.5,t)}function*$ie(e){for(const t of e)yield*t}function $M(e){return Array.from($ie(e))}function Qie(e,t){const i=new Yp;if(t===void 0)for(let l of e)l!=null&&l>=l&&i.set(l,(i.get(l)||0)+1);else{let l=-1;for(let c of e)(c=t(c,++l,e))!=null&&c>=c&&i.set(c,(i.get(c)||0)+1)}let n,s=0;for(const[l,c]of i)c>s&&(s=c,n=l);return n}function Die(e,t=Aie){const i=[];let n,s=!1;for(const l of e)s&&i.push(t(n,l)),n=l,s=!0;return i}function Aie(e,t){return[e,t]}function QM(e,t=ll){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");let i=Array.from(e);const n=new Float64Array(i.length);t.length!==2&&(i=i.map(t),t=ll);const s=(r,a)=>t(i[r],i[a]);let l,c;return e=Uint32Array.from(i,(r,a)=>a),e.sort(t===ll?(r,a)=>Qee(i[r],i[a]):Dee(s)),e.forEach((r,a)=>{const u=s(r,l===void 0?r:l);u>=0?((l===void 0||u>0)&&(l=r,c=a),n[r]=c):n[r]=NaN}),n}function Uc(e,t){let i=0;if(t===void 0)for(let n of e)(n=+n)&&(i+=n);else{let n=-1;for(let s of e)(s=+t(s,++n,e))&&(i+=s)}return i}function iW(e){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");return Array.from(e).reverse()}function qie(e,...t){e=new co(e),t=t.map(ene);e:for(const i of e)for(const n of t)if(!n.has(i)){e.delete(i);continue e}return e}function ene(e){return e instanceof co?e:new co(e)}function tne(...e){const t=new co;for(const i of e)for(const n of i)t.add(n);return t}function ine(e){var t=e.length;return function(i){return e[Math.max(0,Math.min(t-1,Math.floor(i*t)))]}}function nne(e,t){var i=Aee(+e,+t);return function(n){var s=i(n);return s-360*Math.floor(s/360)}}function al(e,t){for(var i=new Array(t),n=0;n<t;++n)i[n]=e(n/(t-1));return i}const sne=Object.freeze(Object.defineProperty({__proto__:null,interpolate:eM,interpolateArray:qee,interpolateBasis:ete,interpolateBasisClosed:tte,interpolateCubehelix:ite,interpolateCubehelixLong:PX,interpolateDate:nte,interpolateDiscrete:ine,interpolateHcl:tM,interpolateHclLong:ste,interpolateHsl:iM,interpolateHslLong:lte,interpolateHue:nne,interpolateLab:nM,interpolateNumber:hb,interpolateNumberArray:cte,interpolateObject:rte,interpolateRgb:UX,interpolateRgbBasis:sM,interpolateRgbBasisClosed:ate,interpolateRound:HI,interpolateString:ote,interpolateTransformCss:ute,interpolateTransformSvg:dte,interpolateZoom:mte,piecewise:Gp,quantize:al},Symbol.toStringTag,{value:"Module"}));function lne(e,t,i){var n=new bte,s=t;return t==null?(n.restart(e,t,i),n):(n._restart=n.restart,n.restart=function(l,c,r){c=+c,r=r==null?hte():+r,n._restart(function a(u){u+=s,n._restart(a,s+=c,r),l(u)},c,r)},n.restart(e,t,i),n)}function Yt(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];throw new Error(typeof e=="number"?"[MobX] minified error nr: "+e+(i.length?" "+i.map(String).join(","):"")+". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts":"[MobX] "+e)}var cne={};function n2(){return typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:cne}var DM=Object.assign,nW=Object.getOwnPropertyDescriptor,Cc=Object.defineProperty,s2=Object.prototype,v9=[];Object.freeze(v9);var AM={};Object.freeze(AM);var rne=typeof Proxy<"u",ane=Object.toString();function qM(){rne||Yt("Proxy not available")}function eK(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var tm=function(){};function Bl(e){return typeof e=="function"}function Iu(e){var t=typeof e;switch(t){case"string":case"symbol":case"number":return!0}return!1}function l2(e){return e!==null&&typeof e=="object"}function ao(e){if(!l2(e))return!1;var t=Object.getPrototypeOf(e);if(t==null)return!0;var i=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof i=="function"&&i.toString()===ane}function tK(e){var t=e==null?void 0:e.constructor;
1return t?t.name==="GeneratorFunction"||t.displayName==="GeneratorFunction":!1}function c2(e,t,i){Cc(e,t,{enumerable:!1,writable:!0,configurable:!0,value:i})}function iK(e,t,i){Cc(e,t,{enumerable:!1,writable:!1,configurable:!0,value:i})}function ed(e,t){var i="isMobX"+e;return t.prototype[i]=!0,function(n){return l2(n)&&n[i]===!0}}function pb(e){return e!=null&&Object.prototype.toString.call(e)==="[object Map]"}function one(e){var t=Object.getPrototypeOf(e),i=Object.getPrototypeOf(t),n=Object.getPrototypeOf(i);return n===null}function kr(e){return e!=null&&Object.prototype.toString.call(e)==="[object Set]"}var nK=typeof Object.getOwnPropertySymbols<"u";function une(e){var t=Object.keys(e);if(!nK)return t;var i=Object.getOwnPropertySymbols(e);return i.length?[].concat(t,i.filter(function(n){return s2.propertyIsEnumerable.call(e,n)})):t}var r2=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:nK?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function sK(e){return e===null?null:typeof e=="object"?""+e:e}function Kr(e,t){return s2.hasOwnProperty.call(e,t)}var dne=Object.getOwnPropertyDescriptors||function(t){var i={};return r2(t).forEach(function(n){i[n]=nW(t,n)}),i};function gs(e,t){return!!(e&t)}function vs(e,t,i){return i?e|=t:e&=~t,e}function dN(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function mne(e,t,i){if(lK())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,t);var s=new(e.bind.apply(e,n));return i&&kf(s,i.prototype),s}function bne(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,pne(n.key),n)}}function yb(e,t,i){return t&&bne(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function im(e,t){var i=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(i)return(i=i.call(e)).next.bind(i);if(Array.isArray(e)||(i=yne(e))||t){i&&(e=i);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. 2In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gu(){return gu=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)({}).hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},gu.apply(null,arguments)}function z9(e){return z9=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},z9(e)}function jI(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,kf(e,t)}function hne(e){try{return Function.toString.call(e).indexOf("[native code]")!==-1}catch{return typeof e=="function"}}function lK(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(lK=function(){return!!e})()}function kf(e,t){return kf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,n){return i.__proto__=n,i},kf(e,t)}function fne(e,t){if(typeof e!="object"||!e)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var n=i.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function pne(e){var t=fne(e,"string");return typeof t=="symbol"?t:t+""}function yne(e,t){if(e){if(typeof e=="string")return dN(e,t);var i={}.toString.call(e).slice(8,-1);return i==="Object"&&e.constructor&&(i=e.constructor.name),i==="Map"||i==="Set"?Array.from(e):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?dN(e,t):void 0}}function w9(e){var t=typeof Map=="function"?new Map:void 0;return w9=function(i){if(i===null||!hne(i))return i;if(typeof i!="function")throw new TypeError("Super expression must either be null or a function");if(t!==void 0){if(t.has(i))return t.get(i);t.set(i,n)}function n(){return mne(i,arguments,z9(this).constructor)}return n.prototype=Object.create(i.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),kf(n,i)},w9(e)}var Rc=Symbol("mobx-stored-annotations");
2function Tc(e){function t(i,n){if(gp(n))return e.decorate_20223_(i,n);Ip(i,n,e)}return Object.assign(t,e)}function Ip(e,t,i){Kr(e,Rc)||c2(e,Rc,gu({},e[Rc])),Gne(i)||(e[Rc][t]=i)}function Zne(e){return Kr(e,Rc)||c2(e,Rc,gu({},e[Rc])),e[Rc]}function gp(e){return typeof e=="object"&&typeof e.kind=="string"}var qe=Symbol("mobx administration"),Go=function(){function e(i){i===void 0&&(i="Atom"),this.name_=void 0,this.flags_=0,this.observers_=new Set,this.lastAccessedBy_=0,this.lowestObserverState_=It.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=i}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach(function(n){return n()})},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach(function(n){return n()})},t.reportObserved=function(){return JK(this)},t.reportChanged=function(){el(),xK(this),tl()},t.toString=function(){return this.name_},yb(e,[{key:"isBeingObserved",get:function(){return gs(this.flags_,e.isBeingObservedMask_)},set:function(n){this.flags_=vs(this.flags_,e.isBeingObservedMask_,n)}},{key:"isPendingUnobservation",get:function(){return gs(this.flags_,e.isPendingUnobservationMask_)},set:function(n){this.flags_=vs(this.flags_,e.isPendingUnobservationMask_,n)}},{key:"diffValue",get:function(){return gs(this.flags_,e.diffValueMask_)?1:0},set:function(n){this.flags_=vs(this.flags_,e.diffValueMask_,n===1)}}])}();Go.isBeingObservedMask_=1;Go.isPendingUnobservationMask_=2;Go.diffValueMask_=4;var EI=ed("Atom",Go);function cK(e,t,i){t===void 0&&(t=tm),i===void 0&&(i=tm);var n=new Go(e);return t!==tm&&vse(n,t),i!==tm&&gK(n,i),n}function Wne(e,t){return CK(e,t)}function Xne(e,t){return Object.is?Object.is(e,t):e===t?e!==0||1/e===1/t:e!==e&&t!==t}var sW={structural:Wne,default:Xne};function vu(e,t,i){return wK(e)?e:Array.isArray(e)?tn.array(e,{name:i}):ao(e)?tn.object(e,void 0,{name:i}):pb(e)?tn.map(e,{name:i}):kr(e)?tn.set(e,{name:i}):typeof e=="function"&&!wm(e)&&!Sf(e)?tK(e)?Hm(e):Ff(i,e):e}function Jne(e,t,i){if(e==null||b2(e)||m2(e)||id(e)||vc(e))return e;if(Array.isArray(e))return tn.array(e,{name:i,deep:!1});if(ao(e))return tn.object(e,void 0,{name:i,deep:!1});if(pb(e))return tn.map(e,{name:i,deep:!1});if(kr(e))return tn.set(e,{name:i,deep:!1})}function a2(e){return e}function xne(e,t){return CK(e,t)?t:e}var Yne="override";function Gne(e){return e.annotationType_===Yne}function vp(e,t){return{annotationType_:e,options_:t,make_:Vne,extend_:Ine,decorate_20223_:gne}}function Vne(e,t,i,n){var s;if((s=this.options_)!=null&&s.bound)return this.extend_(e,t,i,!1)===null?0:1;if(n===e.target_)return this.extend_(e,t,i,!1)===null?0:2;if(wm(i.value))return 1;var l=rK(e,this,t,i,!1);return Cc(n,t,l),2}function Ine(e,t,i,n){var s=rK(e,this,t,i);return e.defineProperty_(t,s,n)}function gne(e,t){var i=t.kind,n=t.name,s=t.addInitializer,l=this,c=function(u){var o,d,b,h;return zu((o=(d=l.options_)==null?void 0:d.name)!=null?o:n.toString(),u,(b=(h=l.options_)==null?void 0:h.autoAction)!=null?b:!1)};if(i=="field")return function(a){var u,o=a;return wm(o)||(o=c(o)),(u=l.options_)!=null&&u.bound&&(o=o.bind(this),o.isMobxAction=!0),o};if(i=="method"){var r;return wm(e)||(e=c(e)),(r=this.options_)!=null&&r.bound&&s(function(){var a=this,u=a[n].bind(a);u.isMobxAction=!0,a[n]=u}),e}Yt("Cannot apply '"+l.annotationType_+"' to '"+String(n)+"' (kind: "+i+"):"+(` 3'`+l.annotationType_+"' can only be used on properties with a function value."))}function vne(e,t,i,n){t.annotationType_,n.value}function rK(e,t,i,n,s){var l,c,r,a,u,o,d;s===void 0&&(s=ze.safeDescriptors),vne(e,t,i,n);var b=n.value;if((l=t.options_)!=null&&l.bound){var h;b=b.bind((h=e.proxy_)!=null?h:e.target_)}return{value:zu((c=(r=t.options_)==null?void 0:r.name)!=null?c:i.toString(),b,(a=(u=t.options_)==null?void 0:u.autoAction)!=null?a:!1,(o=t.options_)!=null&&o.bound?(d=e.proxy_)!=null?d:e.target_:void 0),configurable:s?e.isPlainObject_:!0,enumerable:!1,writable:!s}}function aK(e,t){return{annotationType_:e,options_:t,make_:zne,extend_:wne,decorate_20223_:Hne}}function zne(e,t,i,n){var s;if(n===e.target_)return this.extend_(e,t,i,!1)===null?0:2;if((s=this.options_)!=null&&s.bound&&(!Kr(e.target_,t)||!Sf(e.target_[t]))&&this.extend_(e,t,i,!1)===null)return 0;if(Sf(i.value))return 1;var l=oK(e,this,t,i,!1,!1);return Cc(n,t,l),2}function wne(e,t,i,n){var s,l=oK(e,this,t,i,(s=this.options_)==null?void 0:s.bound);return e.defineProperty_(t,l,n)}function Hne(e,t){var i,n=t.name,s=t.addInitializer;return Sf(e)||(e=Hm(e)),(i=this.options_)!=null&&i.bound&&s(function(){var l=this,c=l[n].bind(l);c.isMobXFlow=!0,l[n]=c}),e}function Nne(e,t,i,n){t.annotationType_,n.value}function oK(e,t,i,n,s,l){l===void 0&&(l=ze.safeDescriptors),Nne(e,t,i,n);var c=n.value;if(Sf(c)||(c=Hm(c)),s){var r;c=c.bind((r=e.proxy_)!=null?r:e.target_),c.isMobXFlow=!0}return{value:c,configurable:l?e.isPlainObject_:!0,enumerable:!1,writable:!l}}function PI(e,t){return{annotationType_:e,options_:t,make_:Rne,extend_:kne,decorate_20223_:Fne}}function Rne(e,t,i){return this.extend_(e,t,i,!1)===null?0:1}function kne(e,t,i,n){return Sne(e,this,t,i),e.defineComputedProperty_(t,gu({},this.options_,{get:i.get,set:i.set}),n)}function Fne(e,t){var i=this,n=t.name,s=t.addInitializer,l;function c(r,a){var u=gu({},i.options_,{get:e,context:r});return u.name||(u.name="ObservableObject."+n.toString()),new Rs(u)}return s(function(){var r,a=Zb(this)[qe],u=this,o=a.values_.get(n);o instanceof Rs&&o.derivation!==e&&a.values_.delete(n),((r=a.lazyComputedKeys_)!=null?r:a.lazyComputedKeys_=new Map).set(n,function(){return c(u)})}),function(){var r=this[qe],a=r.values_.get(n);if(a instanceof Rs&&a.derivation!==e){var u,o=(u=l)==null?void 0:u.get(this);if(!o){var d;o=c(this),((d=l)!=null?d:l=new WeakMap).set(this,o)}return o.get()}return r.getObservablePropValue_(n)}}function Sne(e,t,i,n){t.annotationType_,n.get}function o2(e,t){return{annotationType_:e,options_:t,make_:Lne,extend_:Cne,decorate_20223_:Tne}}function Lne(e,t,i){return this.extend_(e,t,i,!1)===null?0:1}function Cne(e,t,i,n){var s,l;return Mne(e,this),e.defineObservableProperty_(t,i.value,(s=(l=this.options_)==null?void 0:l.enhancer)!=null?s:vu,n)}function Tne(e,t){var i=this,n=t.kind,s=t.name;if(n!=="accessor")return;function l(c,r){var a,u=Zb(c)[qe];return((a=u.lazyObservableKeys_)!=null?a:u.lazyObservableKeys_=new Map).set(s,function(){var o,d;return new pu(r,(o=(d=i.options_)==null?void 0:d.enhancer)!=null?o:vu,"ObservableObject."+s.toString(),!1)}),u}return{get:function(){var r,a=(r=this[qe])!=null?r:l(this,e.get.call(this));return a.getObservablePropValue_(s)},set:function(r){var a,u=(a=this[qe])!=null?a:l(this,r);return u.setObservablePropValue_(s,r)},init:function(r){return l(this,r),r}}}function Mne(e,t,i,n){t.annotationType_}var Kne="true",Bne=uK();function uK(e){return{annotationType_:Kne,options_:e,make_:_ne,extend_:One,decorate_20223_:jne}}function _ne(e,t,i,n){var s,l;if(i.get)return u2.make_(e,t,i,n);if(i.set){var c=wm(i.set)?i.set:zu(t.toString(),i.set);return n===e.target_?e.defineProperty_(t,{configurable:ze.safeDescriptors?e.isPlainObject_:!0,set:c})===null?0:2:(Cc(n,t,{configurable:!0,set:c}),2)}if(n!==e.target_&&typeof i.value=="function"){var r;if(tK(i.value)){var a,u=(a=this.options_)!=null&&a.autoBind?Hm.bound:Hm;return u.make_(e,t,i,n)}var o=(r=this.options_)!=null&&r.autoBind?Ff.bound:Ff;return o.make_(e,t,i,n)}var d=((s=this.options_)==null?void 0:s.deep)===!1?tn.ref:tn;if(typeof i.value=="function"&&(l=this.options_)!=null&&l.autoBind){var b;i.value=i.value.bind((b=e.proxy_)!=null?b:e.target_)}return d.make_(e,t,i,n)}function One(e,t,i,n){var s,l;if(i.get)return u2.extend_(e,t,i,n);if(i.set)return e.defineProperty_(t,{configurable:ze.safeDescriptors?e.isPlainObject_:!0,set:zu(t.toString(),i.set)},n);if(typeof i.value=="function"&&(s=this.options_)!=null&&s.autoBind){var c;i.value=i.value.bind((c=e.proxy_)!=null?c:e.target_)}var r=((l=this.options_)==null?void 0:l.deep)===!1?tn.ref:tn;return r.extend_(e,t,i,n)}function jne(e,t){Yt("'"+this.annotationType_+"' cannot be used as a decorator")}var Ene="observable",Pne="observable.ref",Une="observable.shallow",$ne="observable.struct",dK={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(dK);function cy(e){return e||dK}var H9=o2(Ene),Qne=o2(Pne,{enhancer:a2}),Dne=o2(Une,{enhancer:Jne}),Ane=o2($ne,{enhancer:xne}),mK=Tc(H9);function ry(e){return e.deep===!0?vu:e.deep===!1?a2:ese(e.defaultDecorator)}function qne(e){var t;return e?(t=e.defaultDecorator)!=null?t:uK(e):void 0}function ese(e){var t,i;return e&&(t=(i=e.options_)==null?void 0:i.enhancer)!=null?t:vu}function bK(e,t,i){if(gp(t))return H9.decorate_20223_(e,t);if(Iu(t)){Ip(e,t,H9);return}return wK(e)?e:ao(e)?tn.object(e,t,i):Array.isArray(e)?tn.array(e,t):pb(e)?tn.map(e,t):kr(e)?tn.set(e,t):typeof e=="object"&&e!==null?e:tn.box(e,t)}DM(bK,mK);var tse={box:function(t,i){var n=cy(i);return new pu(t,ry(n),n.name,!0,n.equals)},array:function(t,i){var n=cy(i);return(ze.useProxies===!1||n.proxy===!1?ele:Ose)(t,ry(n),n.name)},map:function(t,i){var n=cy(i);return new NK(t,ry(n),n.name)},set:function(t,i){var n=cy(i);return new RK(t,ry(n),n.name)},object:function(t,i,n){return nd(function(){return Nse(ze.useProxies===!1||(n==null?void 0:n.proxy)===!1?Zb({},n):Mse({},n),t,i)})},ref:Tc(Qne),shallow:Tc(Dne),deep:mK,struct:Tc(Ane)},tn=DM(bK,tse),hK="computed",ise="computed.struct",N9=PI(hK),nse=PI(ise,{equals:sW.structural}),u2=function(t,i){if(gp(i))return N9.decorate_20223_(t,i);if(Iu(i))return Ip(t,i,N9);if(ao(t))return Tc(PI(hK,t));var n=ao(i)?i:{};return n.get=t,n.name||(n.name=t.name||""),new Rs(n)};Object.assign(u2,N9);u2.struct=Tc(nse);var mN,bN,lW=0,sse=1,lse=(mN=(bN=nW(function(){},"name"))==null?void 0:bN.configurable)!=null?mN:!1,hN={value:"action",configurable:!0,writable:!1,enumerable:!1};function zu(e,t,i,n){i===void 0&&(i=!1);function s(){return cse(e,i,t,n||this,arguments)}return s.isMobxAction=!0,s.toString=function(){return t.toString()},lse&&(hN.value=e,Cc(s,"name",hN)),s}function cse(e,t,i,n,s){var l=rse(e,t);try{return i.apply(n,s)}catch(c){throw l.error_=c,c}finally{ase(l)}}function rse(e,t,i,n){var s=!1,l=0,c=ze.trackingDerivation,r=!t||!c;el();var a=ze.allowStateChanges;r&&(td(),a=UI(!0));var u=QI(!0),o={runAsAction_:r,prevDerivation_:c,prevAllowStateChanges_:a,prevAllowStateReads_:u,notifySpy_:s,startTime_:l,actionId_:sse++,parentActionId_:lW};return lW=o.actionId_,o}function ase(e){lW!==e.actionId_&&Yt(30),lW=e.parentActionId_,e.error_!==void 0&&(ze.suppressReactionErrors=!0),$I(e.prevAllowStateChanges_),af(e.prevAllowStateReads_),tl(),e.runAsAction_&&Br(e.prevDerivation_),ze.suppressReactionErrors=!1}function UI(e){var t=ze.allowStateChanges;return ze.allowStateChanges=e,t}function $I(e){ze.allowStateChanges=e}var pu=function(e){function t(n,s,l,c,r){var a;return l===void 0&&(l="ObservableValue"),r===void 0&&(r=sW.default),a=e.call(this,l)||this,a.enhancer=void 0,a.name_=void 0,a.equals=void 0,a.hasUnreportedChange_=!1,a.interceptors_=void 0,a.changeListeners_=void 0,a.value_=void 0,a.dehancer=void 0,a.enhancer=s,a.name_=l,a.equals=r,a.value_=s(n,void 0,l),a}jI(t,e);var i=t.prototype;return i.dehanceValue=function(s){return this.dehancer!==void 0?this.dehancer(s):s},i.set=function(s){this.value_,s=this.prepareNewValue_(s),s!==ze.UNCHANGED&&this.setNewValue_(s)},i.prepareNewValue_=function(s){if(Qs(this)){var l=Ds(this,{object:this,type:Mc,newValue:s});if(!l)return ze.UNCHANGED;s=l.newValue}return s=this.enhancer(s,this.value_,this.name_),this.equals(this.value_,s)?ze.UNCHANGED:s},i.setNewValue_=function(s){var l=this.value_;this.value_=s,this.reportChanged(),Ll(this)&&Cl(this,{type:Mc,object:this,newValue:s,oldValue:l})},i.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},i.intercept_=function(s){return zp(this,s)},i.observe_=function(s,l){return l&&s({observableKind:"value",debugObjectName:this.name_,object:this,type:Mc,newValue:this.value_,oldValue:void 0}),wp(this,s)},i.raw=function(){return this.value_},i.toJSON=function(){return this.get()},i.toString=function(){return this.name_+"["+this.value_+"]"},i.valueOf=function(){return sK(this.get())},i[Symbol.toPrimitive]=function(){return this.valueOf()},t}(Go),Rs=function(){function e(i){this.dependenciesState_=It.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.observers_=new Set,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=It.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new rW(null),this.name_=void 0,this.triggeredBy_=void 0,this.flags_=0,this.derivation=void 0,this.setter_=void 0,this.isTracing_=cW.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,i.get||Yt(31),this.derivation=i.get,this.name_=i.name||"ComputedValue",i.set&&(this.setter_=zu("ComputedValue-setter",i.set)),this.equals_=i.equals||(i.compareStructural||i.struct?sW.structural
3:sW.default),this.scope_=i.context,this.requiresReaction_=i.requiresReaction,this.keepAlive_=!!i.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){bse(this)},t.onBO=function(){this.onBOL&&this.onBOL.forEach(function(n){return n()})},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach(function(n){return n()})},t.get=function(){if(this.isComputing&&Yt(32,this.name_,this.derivation),ze.inBatch===0&&this.observers_.size===0&&!this.keepAlive_)R9(this)&&(this.warnAboutUntrackedRead_(),el(),this.value_=this.computeValue_(!1),tl());else if(JK(this),R9(this)){var n=ze.trackingContext;this.keepAlive_&&!n&&(ze.trackingContext=this),this.trackAndCompute()&&mse(this),ze.trackingContext=n}var s=this.value_;if(yZ(s))throw s.cause;return s},t.set=function(n){if(this.setter_){this.isRunningSetter&&Yt(33,this.name_),this.isRunningSetter=!0;try{this.setter_.call(this.scope_,n)}finally{this.isRunningSetter=!1}}else Yt(34,this.name_)},t.trackAndCompute=function(){var n=this.value_,s=this.dependenciesState_===It.NOT_TRACKING_,l=this.computeValue_(!0),c=s||yZ(n)||yZ(l)||!this.equals_(n,l);return c&&(this.value_=l),c},t.computeValue_=function(n){this.isComputing=!0;var s=UI(!1),l;if(n)l=fK(this,this.derivation,this.scope_);else if(ze.disableErrorBoundaries===!0)l=this.derivation.call(this.scope_);else try{l=this.derivation.call(this.scope_)}catch(c){l=new rW(c)}return $I(s),this.isComputing=!1,l},t.suspend_=function(){this.keepAlive_||(k9(this),this.value_=void 0)},t.observe_=function(n,s){var l=this,c=!0,r=void 0;return Yse(function(){var a=l.get();if(!c||s){var u=td();n({observableKind:"computed",debugObjectName:l.name_,type:Mc,object:l,newValue:a,oldValue:r}),Br(u)}c=!1,r=a})},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return sK(this.get())},t[Symbol.toPrimitive]=function(){return this.valueOf()},yb(e,[{key:"isComputing",get:function(){return gs(this.flags_,e.isComputingMask_)},set:function(n){this.flags_=vs(this.flags_,e.isComputingMask_,n)}},{key:"isRunningSetter",get:function(){return gs(this.flags_,e.isRunningSetterMask_)},set:function(n){this.flags_=vs(this.flags_,e.isRunningSetterMask_,n)}},{key:"isBeingObserved",get:function(){return gs(this.flags_,e.isBeingObservedMask_)},set:function(n){this.flags_=vs(this.flags_,e.isBeingObservedMask_,n)}},{key:"isPendingUnobservation",get:function(){return gs(this.flags_,e.isPendingUnobservationMask_)},set:function(n){this.flags_=vs(this.flags_,e.isPendingUnobservationMask_,n)}},{key:"diffValue",get:function(){return gs(this.flags_,e.diffValueMask_)?1:0},set:function(n){this.flags_=vs(this.flags_,e.diffValueMask_,n===1)}}])}();Rs.isComputingMask_=1;Rs.isRunningSetterMask_=2;Rs.isBeingObservedMask_=4;Rs.isPendingUnobservationMask_=8;Rs.diffValueMask_=16;var d2=ed("ComputedValue",Rs),It;(function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"})(It||(It={}));var cW;(function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"})(cW||(cW={}));var rW=function(t){this.cause=void 0,this.cause=t};function yZ(e){return e instanceof rW}function R9(e){switch(e.dependenciesState_){case It.UP_TO_DATE_:return!1;case It.NOT_TRACKING_:case It.STALE_:return!0;case It.POSSIBLY_STALE_:{for(var t=QI(!0),i=td(),n=e.observing_,s=n.length,l=0;l<s;l++){var c=n[l];if(d2(c)){if(ze.disableErrorBoundaries)c.get();else try{c.get()}catch{return Br(i),af(t),!0}if(e.dependenciesState_===It.STALE_)return Br(i),af(t),!0}}return yK(e),Br(i),af(t),!1}}}function fK(e,t,i){var n=QI(!0);yK(e),e.newObserving_=new Array(e.runId_===0?100:e.observing_.length),e.unboundDepsCount_=0,e.runId_=++ze.runId;var s=ze.trackingDerivation;ze.trackingDerivation=e,ze.inBatch++;var l;if(ze.disableErrorBoundaries===!0)l=t.call(i);else try{l=t.call(i)}catch(c){l=new rW(c)}return ze.inBatch--,ze.trackingDerivation=s,ose(e),af(n),l}function ose(e){for(var t=e.observing_,i=e.observing_=e.newObserving_,n=It.UP_TO_DATE_,s=0,l=e.unboundDepsCount_,c=0;c<l;c++){var r=i[c];r.diffValue===0&&(r.diffValue=1,s!==c&&(i[s]=r),s++),r.dependenciesState_>n&&(n=r.dependenciesState_)}for(i.length=s,e.newObserving_=null,l=t.length;l--;){var a=t[l];a.diffValue===0&&WK(a,e),a.diffValue=0}for(;s--;){var u=i[s];u.diffValue===1&&(u.diffValue=0,dse(u,e))}
3n!==It.UP_TO_DATE_&&(e.dependenciesState_=n,e.onBecomeStale_())}function k9(e){var t=e.observing_;e.observing_=[];for(var i=t.length;i--;)WK(t[i],e);e.dependenciesState_=It.NOT_TRACKING_}function pK(e){var t=td();try{return e()}finally{Br(t)}}function td(){var e=ze.trackingDerivation;return ze.trackingDerivation=null,e}function Br(e){ze.trackingDerivation=e}function QI(e){var t=ze.allowStateReads;return ze.allowStateReads=e,t}function af(e){ze.allowStateReads=e}function yK(e){if(e.dependenciesState_!==It.UP_TO_DATE_){e.dependenciesState_=It.UP_TO_DATE_;for(var t=e.observing_,i=t.length;i--;)t[i].lowestObserverState_=It.UP_TO_DATE_}}var ZZ=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},WZ=!0,ZK=!1,ze=function(){var e=n2();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(WZ=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==new ZZ().version&&(WZ=!1),WZ?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ZZ):(setTimeout(function(){ZK||Yt(35)},1),new ZZ)}();function use(){if((ze.pendingReactions.length||ze.inBatch||ze.isRunningReactions)&&Yt(36),ZK=!0,WZ){var e=n2();--e.__mobxInstanceCount===0&&(e.__mobxGlobals=void 0),ze=new ZZ}}function dse(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function WK(e,t){e.observers_.delete(t),e.observers_.size===0&&XK(e)}function XK(e){e.isPendingUnobservation===!1&&(e.isPendingUnobservation=!0,ze.pendingUnobservations.push(e))}function el(){ze.inBatch++}function tl(){if(--ze.inBatch===0){YK();for(var e=ze.pendingUnobservations,t=0;t<e.length;t++){var i=e[t];i.isPendingUnobservation=!1,i.observers_.size===0&&(i.isBeingObserved&&(i.isBeingObserved=!1,i.onBUO()),i instanceof Rs&&i.suspend_())}ze.pendingUnobservations=[]}}function JK(e){var t=ze.trackingDerivation;return t!==null?(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved&&ze.trackingContext&&(e.isBeingObserved=!0,e.onBO())),e.isBeingObserved):(e.observers_.size===0&&ze.inBatch>
30&&XK(e),!1)}function xK(e){e.lowestObserverState_!==It.STALE_&&(e.lowestObserverState_=It.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===It.UP_TO_DATE_&&t.onBecomeStale_(),t.dependenciesState_=It.STALE_}))}function mse(e){e.lowestObserverState_!==It.STALE_&&(e.lowestObserverState_=It.STALE_,e.observers_.forEach(function(t){t.dependenciesState_===It.POSSIBLY_STALE_?t.dependenciesState_=It.STALE_:t.dependenciesState_===It.UP_TO_DATE_&&(e.lowestObserverState_=It.UP_TO_DATE_)}))}function bse(e){e.lowestObserverState_===It.UP_TO_DATE_&&(e.lowestObserverState_=It.POSSIBLY_STALE_,e.observers_.forEach(function(t){t.dependenciesState_===It.UP_TO_DATE_&&(t.dependenciesState_=It.POSSIBLY_STALE_,t.onBecomeStale_())}))}var Qr=function(){function e(i,n,s,l){i===void 0&&(i="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=It.NOT_TRACKING_,this.runId_=0,this.unboundDepsCount_=0,this.flags_=0,this.isTracing_=cW.NONE,this.name_=i,this.onInvalidate_=n,this.errorHandler_=s,this.requiresObservable_=l}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled||(this.isScheduled=!0,ze.pendingReactions.push(this),YK())},t.runReaction_=function(){if(!this.isDisposed){el(),this.isScheduled=!1;var n=ze.trackingContext;if(ze.trackingContext=this,R9(this)){this.isTrackPending=!0;try{this.onInvalidate_()}catch(s){this.reportExceptionInDerivation_(s)}}ze.trackingContext=n,tl()}},t.track=function(n){if(!this.isDisposed){el(),this.isRunning=!0;var s=ze.trackingContext;ze.trackingContext=this;var l=fK(this,n,void 0);ze.trackingContext=s,this.isRunning=!1,this.isTrackPending=!1,this.isDisposed&&k9(this),yZ(l)&&this.reportExceptionInDerivation_(l.cause),tl()}},t.reportExceptionInDerivation_=function(n){var s=this;if(this.errorHandler_){this.errorHandler_(n,this);return}if(ze.disableErrorBoundaries)throw n;var l="[mobx] uncaught error in '"+this+"'";ze.suppressReactionErrors||console.error(l,n),ze.globalReactionErrorHandlers.forEach(function(c){return c(n,s)})},t.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.isRunning||(el(),k9(this),tl()))},t.getDisposer_=function(n){var s=this,l=function c(){s.dispose(),n==null||n.removeEventListener==null||n.removeEventListener("abort",c)};return n==null||n.addEventListener==null||n.addEventListener("abort",l),l[qe]=this,"dispose"in Symbol&&typeof Symbol.dispose=="symbol"&&(l[Symbol.dispose]=l),l},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(n){},yb(e,[{key:"isDisposed",get:function(){return gs(this.flags_,e.isDisposedMask_)},set:function(n){this.flags_=vs(this.flags_,e.isDisposedMask_,n)}},{key:"isScheduled",get:function(){return gs(this.flags_,e.isScheduledMask_)},set:function(n){this.flags_=vs(this.flags_,e.isScheduledMask_,n)}},{key:"isTrackPending",get:function(){return gs(this.flags_,e.isTrackPendingMask_)},set:function(n){this.flags_=vs(this.flags_,e.isTrackPendingMask_,n)}},{key:"isRunning",get:function(){return gs(this.flags_,e.isRunningMask_)},set:function(n){this.flags_=vs(this.flags_,e.isRunningMask_,n)}},{key:"diffValue",get:function(){return gs(this.flags_,e.diffValueMask_)?1:0},set:function(n){this.flags_=vs(this.flags_,e.diffValueMask_,n===1)}}])}();Qr.isDisposedMask_=1;Qr.isScheduledMask_=2;Qr.isTrackPendingMask_=4;Qr.isRunningMask_=8;Qr.diffValueMask_=16;var hse=100,F9=function(t){return t()};function YK(){ze.inBatch>0||ze.isRunningReactions||F9(fse)}function fse(){ze.isRunningReactions=!0;for(var e=ze.pendingReactions,t=0;e.length>0;){++t===hse&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var i=e.splice(0),n=0,s=i.length;n<s;n++)i[n].runReaction_()}ze.isRunningReactions=!1}var aW=ed("Reaction",Qr);function pse(e){var t=F9;F9=function(n){return e(function(){return t(n)})}}function of(){return!1}function yse(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}}var GK="action",Zse="action.bound",VK="autoAction",Wse="autoAction.bound",Xse="<unnamed action>",S9=vp(GK),Jse=vp(Zse,{bound:!0}),L9=vp(VK,{autoAction:!0}
3),xse=vp(Wse,{autoAction:!0,bound:!0});function IK(e){var t=function(n,s){if(Bl(n))return zu(n.name||Xse,n,e);if(Bl(s))return zu(n,s,e);if(gp(s))return(e?L9:S9).decorate_20223_(n,s);if(Iu(s))return Ip(n,s,e?L9:S9);if(Iu(n))return Tc(vp(e?VK:GK,{name:n,autoAction:e}))};return t}var nm=IK(!1);Object.assign(nm,S9);var Ff=IK(!0);Object.assign(Ff,L9);nm.bound=Tc(Jse);Ff.bound=Tc(xse);function wm(e){return Bl(e)&&e.isMobxAction===!0}function Yse(e,t){var i,n,s,l;t===void 0&&(t=AM);var c=(i=(n=t)==null?void 0:n.name)!=null?i:"Autorun",r=!t.scheduler&&!t.delay,a;if(r)a=new Qr(c,function(){this.track(d)},t.onError,t.requiresObservable);else{var u=Vse(t),o=!1;a=new Qr(c,function(){o||(o=!0,u(function(){o=!1,a.isDisposed||a.track(d)}))},t.onError,t.requiresObservable)}function d(){e(a)}return(s=t)!=null&&(s=s.signal)!=null&&s.aborted||a.schedule_(),a.getDisposer_((l=t)==null?void 0:l.signal)}var Gse=function(t){return t()};function Vse(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Gse}var Ise="onBO",gse="onBUO";function vse(e,t,i){return vK(Ise,e,t,i)}function gK(e,t,i){return vK(gse,e,t,i)}function vK(e,t,i,n){var s=dW(t),l=Bl(n)?n:i,c=e+"L";return s[c]?s[c].add(l):s[c]=new Set([l]),function(){var r=s[c];r&&(r.delete(l),r.size===0&&delete s[c])}}var zse="never",ay="always",wse="observed";function Hse(e){e.isolateGlobalState===!0&&use();var t=e.useProxies,i=e.enforceActions;if(t!==void 0&&(ze.useProxies=t===ay?!0:t===zse?!1:typeof Proxy<"u"),t==="ifavailable"&&(ze.verifyProxies=!0),i!==void 0){var n=i===ay?ay:i===wse;ze.enforceActions=n,ze.allowStateChanges=!(n===!0||n===ay)}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach(function(s){s in e&&(ze[s]=!!e[s])}),ze.allowStateReads=!ze.observableRequiresReaction,e.reactionScheduler&&pse(e.reactionScheduler)}function Nse(e,t,i,n){var s=dne(t);return nd(function(){var l=Zb(e,n)[qe];r2(s).forEach(function(c){l.extend_(c,s[c],i&&c in i?i[c]:!0)})}),e}function Rse(e,t){return zK(dW(e,t))}function zK(e){var t={name:e.name_};return e.observing_&&e.observing_.length>0&&(t.dependencies=kse(e.observing_).map(zK)),t}function kse(e){return Array.from(new Set(e))}var Fse=0,Sse=function(e){function t(){var n;return n=e.call(this,"FLOW_CANCELLED")||this,Object.setPrototypeOf(n,(this instanceof t?this.constructor:void 0).prototype),n.name="FlowCancellationError",n}jI(t,e);var i=t.prototype;return i.toString=function(){return"Error: "+this.message},t}(w9(Error)),lx=aK("flow"),Lse=aK("flow.bound",{bound:!0}),Hm=Object.assign(function(t,i){if(gp(i))return lx.decorate_20223_(t,i);if(Iu(i))return Ip(t,i,lx);var n=t,s=n.name||"<unnamed flow>",l=function(){var r=this,a=arguments,u=++Fse,o=nm(s+" - runid: "+u+" - init",n).apply(r,a),d,b=void 0,h=new Promise(function(p,Z){var X=0;d=Z;function J(I){b=void 0;var v;try{v=nm(s+" - runid: "+u+" - yield "+X++,o.next).call(o,I)}catch(k){return Z(k)}g(v)}function V(I){b=void 0;var v;try{v=nm(s+" - runid: "+u+" - yield "+X++,o.throw).call(o,I)}catch(k){return Z(k)}g(v)}function g(I){if(Bl(I==null?void 0:I.then)){I.then(g,Z);return}return I.done?p(I.value):(b=Promise.resolve(I.value),b.then(J,V))}J(void 0)});return h.cancel=nm(s+" - runid: "+u+" - cancel",function(){try{b&&fN(b);var p=o.return(void 0),Z=Promise.resolve(p.value);Z.then(tm,tm),fN(Z),d(new Sse)}catch(X){d(X)}}),h};return l.isMobXFlow=!0,l},lx);Hm.bound=Tc(Lse);function fN(e){Bl(e.cancel)&&e.cancel()}function Sf(e){return(e==null?void 0:e.isMobXFlow)===!0}function Cse(e,t){return e?b2(e)||!!e[qe]||EI(e)||aW(e)||d2(e):!1}function wK(e){return Cse(e)}function Fr(e,t){t===void 0&&(t=void 0),el();try{return e.apply(t)}finally{tl()}}function Rd(e){return e[qe]}var Tse={has:function(t,i){return Rd(t).has_(i)},get:function(t,i){return Rd(t).get_(i)},set:function(t,i,n){var s;return Iu(i)?(s=Rd(t).set_(i,n,!0))!=null?s:!0:!1},deleteProperty:function(t,i){var n;return Iu(i)?(n=Rd(t).delete_(i,!0))!=null?n:!0:!1},defineProperty:function(t,i,n){var s;return(s=Rd(t).defineProperty_(i,n))!=null?s:!0},ownKeys:function(t){return Rd(t).ownKeys_()},preventExtensions:function(t){Yt(13)}};function Mse(e,t){var i,n;return qM(),e=Zb(e,t),(n=(i=e[qe]).proxy_)!=null?n:i.proxy_=new Proxy(e,Tse)}function Qs(e){return e.interceptors_!==void 0&&e.interceptors_.length>0}function zp(e,t){var i=e.interceptors_||(e.interceptors_=[]);return i.push(t),eK(function(){var n=i.indexOf(t);n!==-1&&i.splice(n,1)})}function Ds(e,t){var i=td();try{for(var n=[].concat(e.interceptors_||[]),s=0,l=n.length;s<l&&(t=n[s](t),t&&!t.type&&Yt(14),!!t);s++);return t}finally{Br(i)}}function Ll(e){return e.changeListeners_!==void 0&&e.changeListeners_.length>0}function wp(e,t){var i=e.changeListeners_||(e.changeListeners_=[]);return i.push(t),eK(function(){var n=i.indexOf(t);n!==-1&&i.splice(n,1)})}function Cl(e,t){var i=td(),n=e.changeListeners_;if(n){n=n.slice();for(var s=0,l=n.length;s<l;s++)n[s](t);Br(i)}}function Kse(e,t,i){return nd(function(){var n,s=Zb(e,i)[qe];(n=t)!=null||(t=Zne(e)),r2(t).forEach(function(l){return s.make_(l,t[l])})}),e}
3var pN="splice",Mc="update",Bse=1e4,_se={get:function(t,i){var n=t[qe];return i===qe?n:i==="length"?n.getArrayLength_():typeof i=="string"&&!isNaN(i)?n.get_(parseInt(i)):Kr(oW,i)?oW[i]:t[i]},set:function(t,i,n){var s=t[qe];return i==="length"&&s.setArrayLength_(n),typeof i=="symbol"||isNaN(i)?t[i]=n:s.set_(parseInt(i),n),!0},preventExtensions:function(){Yt(15)}},DI=function(){function e(i,n,s,l){i===void 0&&(i="ObservableArray"),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=s,this.legacyMode_=l,this.atom_=new Go(i),this.enhancer_=function(c,r){return n(c,r,"ObservableArray[..]")}}var t=e.prototype;return t.dehanceValue_=function(n){return this.dehancer!==void 0?this.dehancer(n):n},t.dehanceValues_=function(n){return this.dehancer!==void 0&&n.length>0?n.map(this.dehancer):n},t.intercept_=function(n){return zp(this,n)},t.observe_=function(n,s){return s===void 0&&(s=!1),s&&n({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),wp(this,n)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(n){(typeof n!="number"||isNaN(n)||n<0)&&Yt("Out of range: "+n);var s=this.values_.length;if(n!==s)if(n>s){for(var l=new Array(n-s),c=0;c<n-s;c++)l[c]=void 0;this.spliceWithArray_(s,0,l)}else this.spliceWithArray_(n,s-n)},t.updateArrayLength_=function(n,s){n!==this.lastKnownLength_&&Yt(16),this.lastKnownLength_+=s,this.legacyMode_&&s>0&&LK(n+s+1)},t.spliceWithArray_=function(n,s,l){var c=this;this.atom_;var r=this.values_.length;if(n===void 0?n=0:n>r?n=r:n<0&&(n=Math.max(0,r+n)),arguments.length===1?s=r-n:s==null?s=0:s=Math.max(0,Math.min(s,r-n)),l===void 0&&(l=v9),Qs(this)){var a=Ds(this,{object:this.proxy_,type:pN,index:n,removedCount:s,added:l});if(!a)return v9;s=a.removedCount,l=a.added}if(l=l.length===0?l:l.map(function(d){return c.enhancer_(d,void 0)}),this.legacyMode_){var u=l.length-s;this.updateArrayLength_(r,u)}var o=this.spliceItemsIntoValues_(n,s,l);return(s!==0||l.length!==0)&&this.notifyArraySplice_(n,l,o),this.dehanceValues_(o)},t.spliceItemsIntoValues_=function(n,s,l){if(l.length<Bse){var c;return(c=this.values_).splice.apply(c,[n,s].concat(l))}else{var r=this.values_.slice(n,n+s),a=this.values_.slice(n+s);this.values_.length+=l.length-s;for(var u=0;u<l.length;u++)this.values_[n+u]=l[u];for(var o=0;o<a.length;o++)this.values_[n+l.length+o]=a[o];return r}},t.notifyArrayChildUpdate_=function(n,s,l){var c=!this.owned_&&of(),r=Ll(this),a=r||c?{observableKind:"array",object:this.proxy_,type:Mc,debugObjectName:this.atom_.name_,index:n,newValue:s,oldValue:l}:null;this.atom_.reportChanged(),r&&Cl(this,a)},t.notifyArraySplice_=function(n,s,l){var c=!this.owned_&&of(),r=Ll(this),a=r||c?{observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:pN,index:n,removed:l,added:s,removedCount:l.length,addedCount:s.length}:null;this.atom_.reportChanged(),r&&Cl(this,a)},t.get_=function(n){if(this.legacyMode_&&n>=this.values_.length){console.warn("[mobx] Out of bounds read: "+n);return}return this.atom_.reportObserved(),this.dehanceValue_(this.values_[n])},t.set_=function(n,s){var l=this.values_;if(this.legacyMode_&&n>l.length&&Yt(17,n,l.length),n<l.length){this.atom_;var c=l[n];if(Qs(this)){var r=Ds(this,{type:Mc,object:this.proxy_,index:n,newValue:s});if(!r)return;s=r.newValue}s=this.enhancer_(s,c);var a=s!==c;a&&(l[n]=s,this.notifyArrayChildUpdate_(n,s,c))}else{for(var u=new Array(n+1-l.length),o=0;o<u.length-1;o++)u[o]=void 0;u[u.length-1]=s,this.spliceWithArray_(l.length,0,u)}},e}();function Ose(e,t,i,n){return i===void 0&&(i="ObservableArray"),n===void 0&&(n=!1),qM(),nd(function(){var s=new DI(i,t,n,!1);iK(s.values_,qe,s);var l=new Proxy(s.values_,_se);return s.proxy_=l,e&&e.length&&s.spliceWithArray_(0,0,e),l})}var oW={clear:function(){return this.splice(0)},replace:function(t){var i=this[qe];return i.spliceWithArray_(0,i.values_.length,t)},toJSON:function(){return this.slice()},splice:function(t,i){for(var n=arguments.length,s=new Array(n>2?n-2:0),l=2;l<n;l++)s[l-2]=arguments[l];var c=this[qe];switch(arguments.length){case 0:return[];case 1:return c.spliceWithArray_(t);case 2:return c.spliceWithArray_(t,i)}return c.spliceWithArray_(t,i,s)},spliceWithArray:function(t,i,n){return this[qe].spliceWithArray_(t,i,n)},push:function(){for(var t=this[qe],i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return t.spliceWithArray_(t.values_.length,0,n),t.values_.length},pop:function(){return this.splice(Math.max(this[qe].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var t=this[qe],i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return t.spliceWithArray_(0,0,n),t.values_.length},reverse:function(){return ze.trackingDerivation&&Yt(37,"reverse"),this.replace(this.slice().reverse()),this},sort:function(){ze.trackingDerivation&&Yt(37,"sort");var t=this.slice();return t.sort.apply(t,arguments),this.replace(t),this},remove:function(t){var i=this[qe],n=i.dehanceValues_(i.values_).indexOf(t);return n>-1?(this.splice(n,1),!0):!1}};At("at",_s);At("concat",_s);At("flat",_s);At("includes",_s);At("indexOf",_s);At("join",_s);At("lastIndexOf",_s);At("slice",_s);At("toString",_s);
3At("toLocaleString",_s);At("toSorted",_s);At("toSpliced",_s);At("with",_s);At("every",ec);At("filter",ec);At("find",ec);At("findIndex",ec);At("findLast",ec);At("findLastIndex",ec);At("flatMap",ec);At("forEach",ec);At("map",ec);At("some",ec);At("toReversed",ec);At("reduce",HK);At("reduceRight",HK);function At(e,t){typeof Array.prototype[e]=="function"&&(oW[e]=t(e))}function _s(e){return function(){var t=this[qe];t.atom_.reportObserved();var i=t.dehanceValues_(t.values_);return i[e].apply(i,arguments)}}function ec(e){return function(t,i){var n=this,s=this[qe];s.atom_.reportObserved();var l=s.dehanceValues_(s.values_);return l[e](function(c,r){return t.call(i,c,r,n)})}}function HK(e){return function(){var t=this,i=this[qe];i.atom_.reportObserved();var n=i.dehanceValues_(i.values_),s=arguments[0];return arguments[0]=function(l,c,r){return s(l,c,r,t)},n[e].apply(n,arguments)}}var jse=ed("ObservableArrayAdministration",DI);function m2(e){return l2(e)&&jse(e[qe])}var Ese={},La="add",uW="delete",NK=function(){function e(i,n,s){var l=this;n===void 0&&(n=vu),s===void 0&&(s="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[qe]=Ese,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=n,this.name_=s,Bl(Map)||Yt(18),nd(function(){l.keysAtom_=cK("ObservableMap.keys()"),l.data_=new Map,l.hasMap_=new Map,i&&l.merge(i)})}var t=e.prototype;return t.has_=function(n){return this.data_.has(n)},t.has=function(n){var s=this;if(!ze.trackingDerivation)return this.has_(n);var l=this.hasMap_.get(n);if(!l){var c=l=new pu(this.has_(n),a2,"ObservableMap.key?",!1);this.hasMap_.set(n,c),gK(c,function(){return s.hasMap_.delete(n)})}return l.get()},t.set=function(n,s){var l=this.has_(n);if(Qs(this)){var c=Ds(this,{type:l?Mc:La,object:this,newValue:s,name:n});if(!c)return this;s=c.newValue}return l?this.updateValue_(n,s):this.addValue_(n,s),this},t.delete=function(n){var s=this;if(this.keysAtom_,Qs(this)){var l=Ds(this,{type:uW,object:this,name:n});if(!l)return!1}if(this.has_(n)){var c=of(),r=Ll(this),a=r||c?{observableKind:"map",debugObjectName:this.name_,type:uW,object:this,oldValue:this.data_.get(n).value_,name:n}:null;return Fr(function(){var u;s.keysAtom_.reportChanged(),(u=s.hasMap_.get(n))==null||u.setNewValue_(!1);var o=s.data_.get(n);o.setNewValue_(void 0),s.data_.delete(n)}),r&&Cl(this,a),!0}return!1},t.updateValue_=function(n,s){var l=this.data_.get(n);if(s=l.prepareNewValue_(s),s!==ze.UNCHANGED){var c=of(),r=Ll(this),a=r||c?{observableKind:"map",debugObjectName:this.name_,type:Mc,object:this,oldValue:l.value_,name:n,newValue:s}:null;l.setNewValue_(s),r&&Cl(this,a)}},t.addValue_=function(n,s){var l=this;this.keysAtom_,Fr(function(){var u,o=new pu(s,l.enhancer_,"ObservableMap.key",!1);l.data_.set(n,o),s=o.value_,(u=l.hasMap_.get(n))==null||u.setNewValue_(!0),l.keysAtom_.reportChanged()});var c=of(),r=Ll(this),a=r||c?{observableKind:"map",debugObjectName:this.name_,type:La,object:this,name:n,newValue:s}:null;r&&Cl(this,a)},t.get=function(n){return this.has(n)?this.dehanceValue_(this.data_.get(n).get()):this.dehanceValue_(void 0)},t.getOrInsert=function(n,s){return this.has(n)||this.set(n,s),this.get(n)},t.getOrInsertComputed=function(n,s){return this.has(n)||this.set(n,s(n)),this.get(n)},t.dehanceValue_=function(n){return this.dehancer!==void 0?this.dehancer(n):n},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var n=this,s=this.keys();return yN({next:function(){var c=s.next(),r=c.done,a=c.value;return{done:r,value:r?void 0:n.get(a)}}})},t.entries=function(){var n=this,s=this.keys();return yN({next:function(){var c=s.next(),r=c.done,a=c.value;return{done:r,value:r?void 0:[a,n.get(a)]}}})},t[Symbol.iterator]=function(){return this.entries()},t.forEach=function(n,s){for(var l=im(this),c;!(c=l()).done;){var r=c.value,a=r[0],u=r[1];n.call(s,u,a,this)}},t.merge=function(n){var s=this;return id(n)&&(n=new Map(n)),Fr(function(){ao(n)?une(n).forEach(function(l){return s.set(l,n[l])}
3):Array.isArray(n)?n.forEach(function(l){var c=l[0],r=l[1];return s.set(c,r)}):pb(n)?(one(n)||Yt(19,n),n.forEach(function(l,c){return s.set(c,l)})):n!=null&&Yt(20,n)}),this},t.clear=function(){var n=this;Fr(function(){pK(function(){for(var s=im(n.keys()),l;!(l=s()).done;){var c=l.value;n.delete(c)}})})},t.replace=function(n){var s=this;return Fr(function(){for(var l=Pse(n),c=new Map,r=!1,a=im(s.data_.keys()),u;!(u=a()).done;){var o=u.value;if(!l.has(o)){var d=s.delete(o);if(d)r=!0;else{var b=s.data_.get(o);c.set(o,b)}}}for(var h=im(l.entries()),p;!(p=h()).done;){var Z=p.value,X=Z[0],J=Z[1],V=s.data_.has(X);if(s.set(X,J),s.data_.has(X)){var g=s.data_.get(X);c.set(X,g),V||(r=!0)}}if(!r)if(s.data_.size!==c.size)s.keysAtom_.reportChanged();else for(var I=s.data_.keys(),v=c.keys(),k=I.next(),N=v.next();!k.done;){if(k.value!==N.value){s.keysAtom_.reportChanged();break}k=I.next(),N=v.next()}s.data_=c}),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(n,s){return wp(this,n)},t.intercept_=function(n){return zp(this,n)},yb(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Map"}}])}(),id=ed("ObservableMap",NK);function yN(e){return e[Symbol.toStringTag]="MapIterator",qI(e)}function Pse(e){if(pb(e)||id(e))return e;if(Array.isArray(e))return new Map(e);if(ao(e)){var t=new Map;for(var i in e)t.set(i,e[i]);return t}else return Yt(21,e)}var Use={},RK=function(){function e(i,n,s){var l=this;n===void 0&&(n=vu),s===void 0&&(s="ObservableSet"),this.name_=void 0,this[qe]=Use,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=s,Bl(Set)||Yt(22),this.enhancer_=function(c,r){return n(c,r,s)},nd(function(){l.atom_=cK(l.name_),i&&l.replace(i)})}var t=e.prototype;return t.dehanceValue_=function(n){return this.dehancer!==void 0?this.dehancer(n):n},t.clear=function(){var n=this;Fr(function(){pK(function(){for(var s=im(n.data_.values()),l;!(l=s()).done;){var c=l.value;n.delete(c)}})})},t.forEach=function(n,s){for(var l=im(this),c;!(c=l()).done;){var r=c.value;n.call(s,r,r,this)}},t.add=function(n){var s=this;if(this.atom_,Qs(this)){var l=Ds(this,{type:La,object:this,newValue:n});if(!l)return this;n=l.newValue}if(!this.has(n)){Fr(function(){s.data_.add(s.enhancer_(n,void 0)),s.atom_.reportChanged()});var c=!1,r=Ll(this),a=r||c?{observableKind:"set",debugObjectName:this.name_,type:La,object:this,newValue:n}:null;r&&Cl(this,a)}return this},t.delete=function(n){var s=this;if(Qs(this)){var l=Ds(this,{type:uW,object:this,oldValue:n});if(!l)return!1}if(this.has(n)){var c=!1,r=Ll(this),a=r||c?{observableKind:"set",debugObjectName:this.name_,type:uW,object:this,oldValue:n}:null;return Fr(function(){s.atom_.reportChanged(),s.data_.delete(n)}),r&&Cl(this,a),!0}return!1},t.has=function(n){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(n))},t.entries=function(){var n=this.values();return ZN({next:function(){var l=n.next(),c=l.value,r=l.done;return r?{value:void 0,done:r}:{value:[c,c],done:r}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var n=this,s=this.data_.values();return ZN({next:function(){var c=s.next(),r=c.value,a=c.done;return a?{value:void 0,done:a}:{value:n.dehanceValue_(r),done:a}}})},t.intersection=function(n){if(kr(n)&&!vc(n))return n.intersection(this);var s=new Set(this);return s.intersection(n)},t.union=function(n){if(kr(n)&&!vc(n))return n.union(this);var s=new Set(this);return s.union(n)},t.difference=function(n){return new Set(this).difference(n)},t.symmetricDifference=function(n){if(kr(n)&&!vc(n))return n.symmetricDifference(this);var s=new Set(this);return s.symmetricDifference(n)},t.isSubsetOf=function(n){return new Set(this).isSubsetOf(n)},t.isSupersetOf=function(n){return new Set(this).isSupersetOf(n)},t.isDisjointFrom=function(n){if(kr(n)&&!vc(n))return n.isDisjointFrom(this);var s=new Set(this);return s.isDisjointFrom(n)},t.replace=function(n){var s=this;
3return vc(n)&&(n=new Set(n)),Fr(function(){Array.isArray(n)?(s.clear(),n.forEach(function(l){return s.add(l)})):kr(n)?(s.clear(),n.forEach(function(l){return s.add(l)})):n!=null&&Yt("Cannot initialize set from "+n)}),this},t.observe_=function(n,s){return wp(this,n)},t.intercept_=function(n){return zp(this,n)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return"[object ObservableSet]"},t[Symbol.iterator]=function(){return this.values()},yb(e,[{key:"size",get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:Symbol.toStringTag,get:function(){return"Set"}}])}(),vc=ed("ObservableSet",RK);function ZN(e){return e[Symbol.toStringTag]="SetIterator",qI(e)}var WN=Object.create(null),XN="remove",kK=function(){function e(i,n,s,l){n===void 0&&(n=new Map),l===void 0&&(l=Bne),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.lazyComputedKeys_=void 0,this.lazyObservableKeys_=void 0,this.target_=i,this.values_=n,this.name_=s,this.defaultAnnotation_=l,this.keysAtom_=new Go("ObservableObject.keys"),this.isPlainObject_=ao(this.target_)}var t=e.prototype;return t.getObservablePropValue_=function(n){var s,l,c=(s=(l=this.values_.get(n))!=null?l:this.materializeLazyComputed_(n))!=null?s:this.materializeLazyObservable_(n);return c.get()},t.materializeLazyComputed_=function(n){var s,l=(s=this.lazyComputedKeys_)==null?void 0:s.get(n);if(l){this.lazyComputedKeys_.delete(n),this.lazyComputedKeys_.size===0&&(this.lazyComputedKeys_=void 0);var c=l();return this.values_.set(n,c),c}},t.materializeLazyObservable_=function(n){var s,l=(s=this.lazyObservableKeys_)==null?void 0:s.get(n);if(l){this.lazyObservableKeys_.delete(n),this.lazyObservableKeys_.size===0&&(this.lazyObservableKeys_=void 0);var c=l();return this.values_.set(n,c),c}},t.setObservablePropValue_=function(n,s){var l,c,r=(l=(c=this.values_.get(n))!=null?c:this.materializeLazyComputed_(n))!=null?l:this.materializeLazyObservable_(n);if(r instanceof Rs)return r.set(s),!0;if(Qs(this)){var a=Ds(this,{type:Mc,object:this.proxy_||this.target_,name:n,newValue:s});if(!a)return null;s=a.newValue}if(s=r.prepareNewValue_(s),s!==ze.UNCHANGED){var u=Ll(this),o=!1,d=u||o?{type:Mc,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:r.value_,name:n,newValue:s}:null;r.setNewValue_(s),u&&Cl(this,d)}return!0},t.get_=function(n){return ze.trackingDerivation&&!Kr(this.target_,n)&&this.has_(n),this.target_[n]},t.set_=function(n,s,l){return l===void 0&&(l=!1),Kr(this.target_,n)?this.values_.has(n)?this.setObservablePropValue_(n,s):l?Reflect.set(this.target_,n,s):(this.target_[n]=s,!0):this.extend_(n,{value:s,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,l)},t.has_=function(n){if(!ze.trackingDerivation)return n in this.target_;this.pendingKeys_||(this.pendingKeys_=new Map);var s=this.pendingKeys_.get(n);return s||(s=new pu(n in this.target_,a2,"ObservableObject.key?",!1),this.pendingKeys_.set(n,s)),s.get()},t.make_=function(n,s){if(s===!0&&(s=this.defaultAnnotation_),s!==!1){if(!(n in this.target_)){var l;if((l=this.target_[Rc])!=null&&l[n])return;Yt(1,s.annotationType_,this.name_+"."+n.toString())}for(var c=this.target_;c&&c!==s2;){var r=nW(c,n);if(r){var a=s.make_(this,n,r,c);if(a===0)return;if(a===1)break}c=Object.getPrototypeOf(c)}xN(this,s,n)}},t.extend_=function(n,s,l,c){if(c===void 0&&(c=!1),l===!0&&(l=this.defaultAnnotation_),l===!1)return this.defineProperty_(n,s,c);var r=l.extend_(this,n,s,c);return r&&xN(this,l,n),r},t.defineProperty_=function(n,s,l){l===void 0&&(l=!1),this.keysAtom_;try{el();var c=this.delete_(n);if(!c)return c;if(Qs(this)){var r=Ds(this,{object:this.proxy_||this.target_,name:n,type:La,newValue:s.value});if(!r)return null;var a=r.newValue;s.value!==a&&(s=gu({},s,{value:a}))}if(l){if(!Reflect.defineProperty(this.target_,n,s))return!1}else Cc(this.target_,n,s);this.notifyPropertyAddition_(n,s.value)}finally{tl()}return!0},t.defineObservableProperty_=function(n,s,l,c){c===void 0&&(c=!1),this.keysAtom_;try{el();var r=this.delete_(n);if(!r)return r;if(Qs(this)){var a=Ds(this,{object:this.proxy_||this.target_,name:n,type:La,newValue:s});if(!a)return null;s=a.newValue}var u=JN(n),o={configurable:ze.safeDescriptors?this.isPlainObject_:!0,enumerable:!0,get:u.get,set:u.set};if(c){if(!Reflect.defineProperty(this.target_,n,o))return!1}else Cc(this.target_,n,o);var d=new pu(s,l,"ObservableObject.key",!1);this.values_.set(n,d),this.notifyPropertyAddition_(n,d.value_)}finally{tl()}return!0},t.defineComputedProperty_=function(n,s,l){l===void 0&&(l=!1),this.keysAtom_;try{el();var c=this.delete_(n);if(!c)return c;if(Qs(this)){var r=Ds(this,{object:this.proxy_||this.target_,name:n,type:La,newValue:void 0});if(!r)return null}s.name||(s.name="ObservableObject.key"),s.context=this.proxy_||this.target_;var a=JN(n),u={configurable:ze.safeDescriptors?this.isPlainObject_:!0,enumerable:!1,get:a.get,set:a.set};if(l){if(!Reflect.defineProperty(this.target_,n,u))return!1}else Cc(this.target_,n,u);this.values_.set(n,new Rs(s)),this.notifyPropertyAddition_(n,void 0)}finally{tl()}return!0},t.delete_=function(n,s){if(s===void 0&&(s=!1),this.keysAtom_,!Kr(this.target_,n))return!0;
3if(Qs(this)){var l=Ds(this,{object:this.proxy_||this.target_,name:n,type:XN});if(!l)return null}try{var c;el();var r=Ll(this),a=!1,u=this.values_.get(n),o=void 0;if(!u&&(r||a)){var d;o=(d=nW(this.target_,n))==null?void 0:d.value}if(s){if(!Reflect.deleteProperty(this.target_,n))return!1}else delete this.target_[n];if(u&&(this.values_.delete(n),u instanceof pu&&(o=u.value_),xK(u)),this.keysAtom_.reportChanged(),(c=this.pendingKeys_)==null||(c=c.get(n))==null||c.set(n in this.target_),r||a){var b={type:XN,observableKind:"object",object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:o,name:n};r&&Cl(this,b)}}finally{tl()}return!0},t.observe_=function(n,s){return wp(this,n)},t.intercept_=function(n){return zp(this,n)},t.notifyPropertyAddition_=function(n,s){var l,c=Ll(this),r=!1;if(c||r){var a=c||r?{type:La,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,name:n,newValue:s}:null;c&&Cl(this,a)}(l=this.pendingKeys_)==null||(l=l.get(n))==null||l.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),r2(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function Zb(e,t){var i;if(Kr(e,qe))return e;var n=(i=t==null?void 0:t.name)!=null?i:"ObservableObject",s=new kK(e,new Map,String(n),qne(t));return c2(e,qe,s),e}var $se=ed("ObservableObjectAdministration",kK);function JN(e){return WN[e]||(WN[e]={get:function(){return this[qe].getObservablePropValue_(e)},set:function(i){return this[qe].setObservablePropValue_(e,i)}})}function b2(e){return l2(e)?$se(e[qe]):!1}function xN(e,t,i){var n;(n=e.target_[Rc])==null||delete n[i]}var Qse=SK(0),Dse=function(){var e=!1,t={};return Object.defineProperty(t,"0",{set:function(){e=!0}}),Object.create(t)[0]=1,e===!1}(),cx=0,FK=function(){};function Ase(e,t){Object.setPrototypeOf?Object.setPrototypeOf(e.prototype,t):e.prototype.__proto__!==void 0?e.prototype.__proto__=t:e.prototype=t}Ase(FK,Array.prototype);var AI=function(e){function t(n,s,l,c){var r;return l===void 0&&(l="ObservableArray"),c===void 0&&(c=!1),r=e.call(this)||this,nd(function(){var a=new DI(l,s,c,!0);a.proxy_=r,iK(r,qe,a),n&&n.length&&r.spliceWithArray(0,0,n),Dse&&Object.defineProperty(r,"0",Qse)}),r}jI(t,e);var i=t.prototype;return i.concat=function(){this[qe].atom_.reportObserved();for(var s=arguments.length,l=new Array(s),c=0;c<s;c++)l[c]=arguments[c];return Array.prototype.concat.apply(this.slice(),l.map(function(r){return m2(r)?r.slice():r}))},i[Symbol.iterator]=function(){var n=this,s=0;return qI({next:function(){return s<n.length?{value:n[s++],done:!1}:{done:!0,value:void 0}}})},yb(t,[{key:"length",get:function(){return this[qe].getArrayLength_()},set:function(s){this[qe].setArrayLength_(s)}},{key:Symbol.toStringTag,get:function(){return"Array"}}])}(FK);Object.entries(oW).forEach(function(e){var t=e[0],i=e[1];t!=="concat"&&c2(AI.prototype,t,i)});function SK(e){return{enumerable:!1,configurable:!0,get:function(){return this[qe].get_(e)},set:function(i){this[qe].set_(e,i)}}}function qse(e){Cc(AI.prototype,""+e,SK(e))}function LK(e){if(e>cx){for(var t=cx;t<e+100;t++)qse(t);cx=e}}LK(1e3);function ele(e,t,i){return new AI(e,t,i)}function dW(e,t){if(typeof e=="object"&&e!==null){if(m2(e))return t!==void 0&&Yt(23),e[qe].atom_;if(vc(e))return e.atom_;if(id(e)){if(t===void 0)return e.keysAtom_;var i=e.data_.get(t)||e.hasMap_.get(t);return i||Yt(25,t,C9(e)),i}if(b2(e)){var n,s;if(!t)return Yt(26);var l=e[qe],c=(n=(s=l.values_.get(t))!=null?s:l.materializeLazyComputed_(t))!=null?n:l.materializeLazyObservable_(t);return c||Yt(27,t,C9(e)),c}if(EI(e)||d2(e)||aW(e))return e}else if(Bl(e)&&aW(e[qe]))return e[qe];Yt(28)}function tle(e,t){if(e||Yt(29),EI(e)||d2(e)||aW(e)||id(e)||vc(e))return e;if(e[qe])return e[qe];Yt(24,e)}function C9(e,t){var i;if(t!==void 0)i=dW(e,t);else{if(wm(e))return e.name;b2(e)||id(e)||vc(e)?i=tle(e):i=dW(e)}return i.name_}function nd(e){var t=td(),i=UI(!0);el();try{return e()}finally{tl(),$I(i),Br(t)}}var YN=s2.toString;function CK(e,t,i){return i===void 0&&(i=-1),T9(e,t,i)}function T9(e,t,i,n,s){if(e===t)return e!==0||1/e===1/t;if(e==null||t==null)return!1;if(e!==e)return t!==t;var l=typeof e;if(l!=="function"&&l!=="object"&&typeof t!="object")return!1;
3var c=YN.call(e);if(c!==YN.call(t))return!1;switch(c){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:+e==0?1/+e===1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object Symbol]":return typeof Symbol<"u"&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case"[object Map]":case"[object Set]":i>=0&&i++;break}e=GN(e),t=GN(t);var r=c==="[object Array]";if(!r){if(typeof e!="object"||typeof t!="object")return!1;var a=e.constructor,u=t.constructor;if(a!==u&&!(Bl(a)&&a instanceof a&&Bl(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1}if(i===0)return!1;i<0&&(i=-1),n=n||[],s=s||[];for(var o=n.length;o--;)if(n[o]===e)return s[o]===t;if(n.push(e),s.push(t),r){if(o=e.length,o!==t.length)return!1;for(;o--;)if(!T9(e[o],t[o],i-1,n,s))return!1}else{var d=Object.keys(e),b=d.length;if(Object.keys(t).length!==b)return!1;for(var h=0;h<b;h++){var p=d[h];if(!(Kr(t,p)&&T9(e[p],t[p],i-1,n,s)))return!1}}return n.pop(),s.pop(),!0}function GN(e){return m2(e)?e.slice():pb(e)||id(e)||kr(e)||vc(e)?Array.from(e.entries()):e}var VN,ile=n2(),nle=((VN=ile.Iterator)==null?void 0:VN.prototype)||{};function qI(e){return e[Symbol.iterator]=sle,Object.assign(Object.create(nle),e)}function sle(){return this}["Symbol","Map","Set"].forEach(function(e){var t=n2();typeof t[e]>"u"&&Yt("MobX requires global '"+e+"' to be available or polyfilled")});typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__=="object"&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:yse,extras:{getDebugName:C9},$mobx:qe});if(!Q.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!Kse)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");function lle(e){e()}function cle(e){e||(e=lle),Hse({reactionScheduler:e})}function rle(e){return Rse(e)}var ale=1e4,ole=1e4,ule=function(){function e(t){var i=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(n){n===void 0&&(n=ale),clearTimeout(i.sweepTimeout),i.sweepTimeout=void 0;var s=Date.now();i.registrations.forEach(function(l,c){s-l.registeredAt>=n&&(i.finalize(l.value),i.registrations.delete(c))}),i.registrations.size>0&&i.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){i.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(t,i,n){this.registrations.set(n,{value:i,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(t){this.registrations.delete(t)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.sweepTimeout===void 0&&(this.sweepTimeout=setTimeout(this.sweep,ole))}}),e}(),dle=typeof FinalizationRegistry<"u"?FinalizationRegistry:ule,M9=new dle(function(e){var t;(t=e.reaction)===null||t===void 0||t.dispose(),e.reaction=null});function IN(e){e.reaction=new Qr("observer".concat(e.name),function(){var t;e.stateVersion=Symbol(),(t=e.onStoreChange)===null||t===void 0||t.call(e)})}function mle(e,t){t===void 0&&(t="observed");var i=re.useRef(null);if(!i.current){var n={reaction:null,onStoreChange:null,stateVersion:Symbol(),name:t,subscribe:function(r){return M9.unregister(n),n.onStoreChange=r,n.reaction||(IN(n),n.stateVersion=Symbol()),function(){var a;n.onStoreChange=null,(a=n.reaction)===null||a===void 0||a.dispose(),n.reaction=null}},getSnapshot:function(){return n.stateVersion}};i.current=n}var s=i.current;s.reaction||(IN(s),M9.register(i,s,s)),re.useDebugValue(s.reaction,rle),fte.useSyncExternalStore(s.subscribe,s.getSnapshot,s.getSnapshot);var l,c;if(s.reaction.track(function(){try{l=e()}catch(r){c=r}}),c)throw c;return l}var rx,ax,TK=typeof Symbol=="function"&&Symbol.for,ble=(ax=(rx=Object.getOwnPropertyDescriptor(function(){},"name"))===null||rx===void 0?void 0:rx.configurable)!==null&&ax!==void 0?ax:!1,gN=TK?Symbol.for("react.forward_ref"):typeof Q.forwardRef=="function"&&Q.forwardRef(function(e){return null}).$$typeof,vN=TK?Symbol.for("react.memo"):typeof Q.memo=="function"&&Q.memo(function(e){return null}).$$typeof;function hle(e,t){var i;if(vN&&e.$$typeof===vN)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");var n=(i=void 0)!==null&&i!==void 0?i:!1,s=e,l=e.displayName||e.name;if(gN&&e.$$typeof===gN&&(n=!0,s=e.render,typeof s!="function"))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var c=function(r,a){return mle(function(){return s(r,a)},l)};return c.displayName=e.displayName,ble&&Object.defineProperty(c,"name",{value:e.name,writable:!0,configurable:!0}),e.contextTypes&&(c.contextTypes=e.contextTypes),n&&(c=Q.forwardRef(c)),c=Q.memo(c),ple
vendor: 11,407 bytes, lines 3-4
3(e,c),c}var fle={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function ple(e,t){Object.keys(e).forEach(function(i){fle[i]||Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}var ox;cle(lo.unstable_batchedUpdates);ox=M9.finalizeAllImmediately;var yle=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function MK(e,t){return e(t={exports:{}},t.exports),t.exports}var Zle=MK(function(e){(function(t){var i=function(X,J,V){if(!a(J)||o(J)||d(J)||b(J)||r(J))return J;var g,I=0,v=0;if(u(J))for(g=[],v=J.length;I<v;I++)g.push(i(X,J[I],V));else for(var k in g={},J)Object.prototype.hasOwnProperty.call(J,k)&&(g[X(k,V)]=i(X,J[k],V));return g},n=function(X){return h(X)?X:(X=X.replace(/[\-_\s]+(.)?/g,function(J,V){return V?V.toUpperCase():""})).substr(0,1).toLowerCase()+X.substr(1)},s=function(X){var J=n(X);return J.substr(0,1).toUpperCase()+J.substr(1)},l=function(X,J){return function(V,g){var I=(g=g||{}).separator||"_",v=g.split||/(?=[A-Z])/;return V.split(v).join(I)}(X,J).toLowerCase()},c=Object.prototype.toString,r=function(X){return typeof X=="function"},a=function(X){return X===Object(X)},u=function(X){return c.call(X)=="[object Array]"},o=function(X){return c.call(X)=="[object Date]"},d=function(X){return c.call(X)=="[object RegExp]"},b=function(X){return c.call(X)=="[object Boolean]"},h=function(X){return(X-=0)==X},p=function(X,J){var V=J&&"process"in J?J.process:J;return typeof V!="function"?X:function(g,I){return V(g,X,I)}},Z={camelize:n,decamelize:l,pascalize:s,depascalize:l,camelizeKeys:function(X,J){return i(p(n,J),X)},decamelizeKeys:function(X,J){return i(p(l,J),X,J)},pascalizeKeys:function(X,J){return i(p(s,J),X)},depascalizeKeys:function(){return this.decamelizeKeys.apply(this,arguments)}};e.exports?e.exports=Z:t.humps=Z})(yle)}).decamelize,Wle=function(e){if(Array.isArray(e))return e},Xle=function(e,t){if(typeof Symbol<"u"&&Symbol.iterator in Object(e)){var i=[],n=!0,s=!1,l=void 0;try{for(var c,r=e[Symbol.iterator]();!(n=(c=r.next()).done)&&(i.push(c.value),!t||i.length!==t);n=!0);}catch(a){s=!0,l=a}finally{try{n||r.return==null||r.return()}finally{if(s)throw l}}return i}},zN=function(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n},Jle=function(e,t){if(e){if(typeof e=="string")return zN(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return i==="Object"&&e.constructor&&(i=e.constructor.name),i==="Map"||i==="Set"?Array.from(e):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?zN(e,t):void 0}},xle=function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. 4In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)},Yle=function(e,t){return Wle(e)||Xle(e,t)||Jle(e,t)||xle()},KK=MK(function(e){function t(){return e.exports=t=Object.assign||function(i){for(var n=1;n<arguments.length;n++){var s=arguments[n];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(i[l]=s[l])}return i},t.apply(this,arguments)}e.exports=t}),Gle=function(e,t){if(e==null)return{};var i,n,s={},l=Object.keys(e);for(n=0;n<l.length;n++)i=l[n],t.indexOf(i)>=0||(s[i]=e[i]);return s},BK=function(e,t){if(e==null)return{};var i,n,s=Gle(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)i=l[n],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(s[i]=e[i])}return s},Vle=Q.createContext(null);function _K(e){var t=e.children,i=t===void 0?"":t,n=BK(e,["children"]);return typeof i!="string"&&(i=Gie(i)),re.createElement("template",KK({},n,{dangerouslySetInnerHTML:{__html:i}}))}function OK(e){var t=e.root,i=e.children;return lo.createPortal(i===void 0?null:i,t)}function Ile(e){var t=Q.forwardRef(function(i,n){var s,l,c=i.mode,r=c===void 0?"open":c,a=i.delegatesFocus,u=a!==void 0&&a,o=i.styleSheets,d=o===void 0?[]:o,b=i.ssr,h=b!==void 0&&b,p=i.children,Z=BK(i,["mode","delegatesFocus","styleSheets","ssr","children"]),X=(l=Q.useRef((s=n)&&s.current),Q.useEffect(function(){s&&(s.current=l.current)},[s]),l),J=Q.useState(null),V=Yle(J,2),g=V[0],I=V[1],v="node_".concat(r).concat(u);return Q.useLayoutEffect(function(){if(X.current)try{if(typeof n=="function"&&n(X.current),h){var k=X.current.shadowRoot;return void I(k)}var N=X.current.attachShadow({mode:r,delegatesFocus:u});d.length>0&&(N.adoptedStyleSheets=d),I(N)}catch(C){(function(f){var w=f.error,x=f.styleSheets,R=f.root;switch(w.name){case"NotSupportedError":x.length>0&&(R.adoptedStyleSheets=x);break;default:throw w}})({error:C,styleSheets:d,root:g})}},[n,X,d]),re.createElement(re.Fragment,null,re.createElement(e.tag,KK({key:v,ref:X},Z),(g||h)&&re.createElement(Vle.Provider,{value:g},h?re.createElement(_K,{shadowroot:r,shadowrootmode:r},e.render({root:g,ssr:h,children:p})):re.createElement(OK,{root:g},e.render({root:g,ssr:h,children:p})))))});return t.propTypes={mode:zl.oneOf(["open","closed"]),delegatesFocus:zl.bool,styleSheets:zl.arrayOf(zl.instanceOf(globalThis.CSSStyleSheet)),ssr:zl.bool,children:zl.node},t}_K.propTypes={children:zl.oneOfType([zl.string,zl.node])},OK.propTypes={root:zl.object.isRequired,children:zl.node};var ux=new Map;function gle(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"core",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(n){return n.children};return new Proxy(e,{get:function(n,s){var l=Zle(s,{separator:"-"}),c="".concat(t,"-").concat(l);return ux.has(c)||ux.set(c,Ile({tag:l,render:i})),ux.get(c)}})}var vle=gle();const zle='/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}.\\@container\\/chat{container:chat/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-\\[18\\%\\]{top:18%;right:18%;bottom:18%;left:18%}.top-1\\/2{top:50%}.top-1\\/4{top:25%}.top-\\[14px\\]{top:14px}.top-\\[18\\%\\]{top:18%}.top-\\[20\\%\\]{top:20%}.top-\\[20vh\\]{top:20vh}.top-\\[22\\%\\]{top:22%}.top-\\[25\\%\\]{top:25%}.top-\\[29\\%\\]{top:29%}.top-\\[34\\%\\]{top:34%}.top-\\[37\\%\\]{top:37%}.top-\\[40\\%\\]{top:40%}.top-\\[43\\%\\]{top:43%}.top-\\[53\\%\\]{top:53%}.top-\\[55\\%\\]{top:55%}.top-\\[57\\%\\]{top:57%}.top-\\[59\\%\\]{top:59%}.top-\\[67\\%\\]{top:67%}.top-\\[68\\%\\]{top:68%}.top-\\[73\\%\\]{top:73%}.top-\\[76\\%\\]{top:76%}.top-\\[82\\%\\]{top:82%}.top-auto{top:auto}.-right-px{right:-1px}.right-auto{right:auto}.-bottom-px{bottom:-1px}.bottom-auto{bottom:auto}.bottom-full{bottom:100%}.-left-\\[1\\.78rem\\]{left:-1.78rem}.-left-\\[19px\\]{left:-19px}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-\\[9px\\]{left:9px}.left-\\[15rem\\]{left:15rem}.left-\\[18\\%\\]{left:18%}.left-\\[20\\%\\]{left:20%}.left-\\[23\\%\\]{left:23%}.left-\\[27\\%\\]{left:27%}.left-\\[29\\%\\]{left:29%}.left-\\[33\\%\\]{left:33%}.left-\\[35\\%\\]{left:35%}.left-\\[42\\%\\]{left:42%}.left-\\[45\\%\\]{left:45%}.left-\\[48\\%\\]{left:48%}.left-\\[51\\%\\]{left:51%}.left-\\[54\\%\\]{left:54%}.left-\\[58\\%\\]{left:58%}.left-\\[61\\%\\]{left:61%}.left-\\[65\\%\\]{left:65%}.left-\\[69\\%\\]{left:69%}.left-\\[73\\%\\]{left:73%}.left-\\[76\\%\\]{left:76%}.left-auto{left:auto}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\\[60\\]{z-index:60}.z-\\[70\\]{z-index:70}.z-\\[80\\]{z-index:80}.z-\\[100\\]{z-index:100}.order-first{order:-9999}.order-last{order:9999}.order-none{order:0}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-full{grid-column:1/-1}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.row-span-3{grid-row:span 3/span 3}.row-span-full{grid-row:1/-1}.container{width:100%}.m-auto{margin:auto}.mx-auto{margin-inline:auto}.-my-px{margin-block:-1px}.my-auto{margin-block:auto}.mt-\\[2px\\]{margin-top:2px}.mt-\\[3px\\]{margin-top:3px}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-auto{margin-right:auto}.-mb-px{margin-bottom:-1px}.ml-\\[19px\\]{margin-left:19px}.ml-\\[29px\\]{margin-left:29px}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}
4.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.size-\\[18px\\]{width:18px;height:18px}.size-\\[22px\\]{width:22px;height:22px}.size-\\[30px\\]{width:30px;height:30px}.size-\\[42px\\]{width:42px;height:42px}.size-\\[46\\%\\]{width:46%;height:46%}.size-full{width:100%;height:100%}.h-\\[2px\\]{height:2px}.h-\\[7px\\]{height:7px}.h-\\[9px\\]{height:9px}.h-\\[13px\\]{height:13px}.h-\\[15px\\]{height:15px}.h-\\[18px\\]{height:18px}.h-\\[22px\\]{height:22px}.h-\\[26px\\]{height:26px}.h-\\[30px\\]{height:30px}.h-\\[32\\%\\]{height:32%}.h-\\[34px\\]{height:34px}.h-\\[40px\\]{height:40px}.h-\\[54\\%\\]{height:54%}.h-\\[60px\\]{height:60px}.h-\\[68px\\]{height:68px}.h-\\[75vh\\]{height:75vh}.h-\\[210px\\]{height:210px}.h-\\[220px\\]{height:220px}.h-\\[480px\\]{height:480px}.h-\\[520px\\]{height:520px}.h-\\[560px\\]{height:560px}.h-\\[620px\\]{height:620px}.h-\\[calc\\(100\\%\\+0\\.25rem\\)\\]{height:calc(100% + .25rem)}.h-\\[calc\\(100dvh-6rem\\)\\]{height:calc(100dvh - 6rem)}.h-\\[min\\(22rem\\,42vh\\)\\]{height:min(22rem,42vh)}.h-\\[min\\(75dvh\\,calc\\(100dvh-10rem\\)\\)\\]{height:min(75dvh,100dvh - 10rem)}.h-\\[min\\(88vh\\,880px\\)\\]{height:min(88vh,880px)}.h-\\[min\\(420px\\,calc\\(100vh-14rem\\)\\)\\]{height:min(420px,100vh - 14rem)}.h-\\[min\\(760px\\,calc\\(100vh-2rem\\)\\)\\]{height:min(760px,100vh - 2rem)}.h-\\[min\\(780px\\,88dvh\\)\\]{height:min(780px,88dvh)}.h-\\[min\\(780px\\,calc\\(100vh-2rem\\)\\)\\]{height:min(780px,100vh - 2rem)}.h-\\[min\\(820px\\,calc\\(100vh-2rem\\)\\)\\]{height:min(820px,100vh - 2rem)}.h-\\[min\\(860px\\,calc\\(100dvh-1\\.5rem\\)\\)\\]{height:min(860px,100dvh - 1.5rem)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-fit{height:fit-content}.h-full{height:100%}.h-max{height:max-content}.h-min{height:min-content}.h-px{height:1px}.h-screen{height:100vh}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[32rem\\]{max-height:32rem}.max-h-\\[38dvh\\]{max-height:38dvh}.max-h-\\[52vh\\]{max-height:52vh}.max-h-\\[62vh\\]{max-height:62vh}.max-h-\\[80\\%\\]{max-height:80%}.max-h-\\[82dvh\\]{max-height:82dvh}.max-h-\\[85vh\\]{max-height:85vh}.max-h-\\[88vh\\]{max-height:88vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[340px\\]{max-height:340px}.max-h-\\[360px\\]{max-height:360px}.max-h-\\[400px\\]{max-height:400px}.max-h-\\[500px\\]{max-height:500px}.max-h-\\[550px\\]{max-height:550px}.max-h-\\[calc\\(100dvh-1\\.5rem\\)\\]{max-height:calc(100dvh - 1.5rem)}.max-h-\\[calc\\(100vh-220px\\)\\]{max-height:calc(100vh - 220px)}.max-h-\\[calc\\(100vh-240px\\)\\]{max-height:calc(100vh - 240px)}.max-h-\\[calc\\(100vh-260px\\)\\]{max-height:calc(100vh - 260px)}.max-h-\\[calc\\(100vh-320px\\)\\]{max-height:calc(100vh - 320px)}.max-h-\\[calc\\(100vh-360px\\)\\]{max-height:calc(100vh - 360px)}.max-h-\\[calc\\(100vh-430px\\)\\]{max-height:calc(100vh - 430px)}.max-h-\\[calc\\(100vh-580px\\)\\]{max-height:calc(100vh - 580px)}.max-h-\\[calc\\(100vh-680px\\)\\]{max-height:calc(100vh - 680px)}.max-h-\\[min\\(760px\\,calc\\(100vh-2rem\\)\\)\\]{max-height:min(760px,100vh - 2rem)}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-\\[1\\.65em\\]{min-height:1.65em}.min-h-\\[2\\.5rem\\]{min-height:2.5rem}.min-h-\\[36px\\]{min-height:36px}.min-h-\\[44px\\]{min-height:44px}.min-h-\\[68px\\]{min-height:68px}.min-h-\\[70vh\\]{min-height:70vh}.min-h-\\[120px\\]{min-height:120px}.min-h-\\[360px\\]{min-height:360px}.min-h-\\[380px\\]{min-height:380px}.min-h-\\[420px\\]{min-height:420px}.min-h-\\[520px\\]{min-height:520px}.min-h-\\[560px\\]{min-height:560px}.min-h-\\[calc\\(100dvh-4rem\\)\\]{min-height:calc(100dvh - 4rem)}.min-h-\\[clamp\\(10rem\\,24dvh\\,16rem\\)\\]{min-height:clamp(10rem,24dvh,16rem)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-1\\/3{width:33.3333%}.w-1\\/4{width:25%}.w-1\\/5{width:20%}.w-2\\/3{width:66.6667%}.w-2\\/5{width:40%}.w-3\\/4{width:75%}.w-3\\/5{width:60%}.w-4\\/5{width:80%}.w-5\\/6,.w-10\\/12{width:83.3333%}.w-11\\/12{width:91.6667%}.w-\\[--popover-width\\]{width:--popover-width}.w-\\[--radix-dropdown-menu-trigger-width\\]{width:--radix-dropdown-menu-trigger-width}.w-\\[2px\\]{width:2px}.w-\\[7px\\]{width:7px}.w-\\[9px\\]{width:9px}.w-\\[13px\\]{width:13px}.w-\\[18\\%\\]{width:18%}.w-\\[18px\\]{width:18px}.w-\\[22\\%\\]{width:22%}.w-\\[22px\\]{width:22px}.w-\\[22rem\\]{width:22rem}.w-\\[26px\\]{width:26px}.w-\\[30px\\]{width:30px}.w-\\[34px\\]{width:34px}.w-\\[36\\%\\]{width:36%}.w-\\[42\\%\\]{width:42%}.w-\\[44px\\]{width:44px}.w-\\[58\\%\\]{width:58%}.w-\\[60px\\]{width:60px}.w-\\[72px\\]{width:72px}.w-\\[84px\\]{width:84px}.w-\\[92px\\]{width:92px}.w-\\[150px\\]{width:150px}.w-\\[160px\\]{width:160px}.w-\\[188px\\]{width:188px}.w-\\[330px\\]{width:330px}.w-\\[calc\\(100\\%\\+1rem\\)\\]{width:calc(100% + 1rem)}.w-\\[calc\\(100\\%-2rem\\)\\]{width:calc(100% - 2rem)}.w-\\[calc\\(100vw-1rem\\)\\]{width:calc(100vw - 1rem)}.w-\\[min\\(24rem\\,calc\\(100vw-2rem\\)\\)\\]{width:min(24rem,100vw - 2rem)}.w-\\[min\\(44rem\\,94\\%\\)\\]{width:min(44rem,94%)}.w-\\[min\\(94vw\\,1120px\\)\\]{width:min(94vw,1120px)}.w-\\[min\\(560px\\,calc\\(100vw-24px\\)\\)\\]{width:min(560px,100vw - 24px)}.w-\\[min\\(620px\\,calc\\(100vw-32px\\)\\)\\]{width:min(620px,100vw - 32px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-min{width:min-content}.w-px{width:1px}.w-screen{width:100vw}
4.max-w-\\[36ch\\]{max-width:36ch}.max-w-\\[36rem\\]{max-width:36rem}.max-w-\\[42rem\\]{max-width:42rem}.max-w-\\[60\\%\\]{max-width:60%}.max-w-\\[70\\%\\]{max-width:70%}.max-w-\\[75\\%\\]{max-width:75%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[80px\\]{max-width:80px}.max-w-\\[90\\%\\]{max-width:90%}.max-w-\\[96rem\\]{max-width:96rem}.max-w-\\[100\\%\\]{max-width:100%}.max-w-\\[100px\\]{max-width:100px}.max-w-\\[120px\\]{max-width:120px}.max-w-\\[140px\\]{max-width:140px}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[280px\\]{max-width:280px}.max-w-\\[300px\\]{max-width:300px}.max-w-\\[400px\\]{max-width:400px}.max-w-\\[420px\\]{max-width:420px}.max-w-\\[440px\\]{max-width:440px}.max-w-\\[460px\\]{max-width:460px}.max-w-\\[480px\\]{max-width:480px}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[620px\\]{max-width:620px}.max-w-\\[660px\\]{max-width:660px}.max-w-\\[800px\\]{max-width:800px}.max-w-\\[960px\\]{max-width:960px}.max-w-\\[1000px\\]{max-width:1000px}.max-w-\\[1200px\\]{max-width:1200px}.max-w-\\[1400px\\]{max-width:1400px}.max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.max-w-\\[min\\(640px\\,calc\\(100vw-2rem\\)\\)\\]{max-width:min(640px,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.min-w-\\[18px\\]{min-width:18px}.min-w-\\[38rem\\]{min-width:38rem}.min-w-\\[180px\\]{min-width:180px}.min-w-\\[240px\\]{min-width:240px}.min-w-\\[260px\\]{min-width:260px}.min-w-\\[280px\\]{min-width:280px}.min-w-\\[480px\\]{min-width:480px}.min-w-\\[720px\\]{min-width:720px}.min-w-\\[840px\\]{min-width:840px}.min-w-\\[1120px\\]{min-width:1120px}.min-w-\\[min\\(360px\\,calc\\(100vw-2rem\\)\\)\\]{min-width:min(360px,100vw - 2rem)}.min-w-fit{min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-\\[1\\.4\\]{flex:1.4}.flex-auto{flex:auto}.flex-initial{flex:0 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.origin-left{transform-origin:0}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[3px\\]{--tw-translate-y:3px;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-50{--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-150{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-\\[0\\.99\\]{scale:.99}.-rotate-90{rotate:-90deg}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-none{animation:none}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}
4.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\\[1\\.25rem_minmax\\(0\\,1fr\\)\\]{grid-template-columns:1.25rem minmax(0,1fr)}.grid-cols-\\[1\\.75rem_minmax\\(0\\,1fr\\)_3\\.25rem\\]{grid-template-columns:1.75rem minmax(0,1fr) 3.25rem}.grid-cols-\\[1fr_auto_1fr\\]{grid-template-columns:1fr auto 1fr}.grid-cols-\\[2\\.5rem_minmax\\(0\\,1fr\\)\\]{grid-template-columns:2.5rem minmax(0,1fr)}.grid-cols-\\[4\\.5rem_1\\.25rem_minmax\\(0\\,1fr\\)\\]{grid-template-columns:4.5rem 1.25rem minmax(0,1fr)}.grid-cols-\\[5rem_minmax\\(0\\,1fr\\)\\]{grid-template-columns:5rem minmax(0,1fr)}.grid-cols-\\[7rem_minmax\\(0\\,1fr\\)_1rem_minmax\\(0\\,1fr\\)\\]{grid-template-columns:7rem minmax(0,1fr) 1rem minmax(0,1fr)}.grid-cols-\\[260px_minmax\\(0\\,1fr\\)\\]{grid-template-columns:260px minmax(0,1fr)}.grid-cols-\\[auto_minmax\\(0\\,1fr\\)_auto\\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\\[minmax\\(0\\,0\\.8fr\\)_minmax\\(0\\,1fr\\)_8rem_auto_auto\\]{grid-template-columns:minmax(0,.8fr) minmax(0,1fr) 8rem auto auto}.grid-cols-\\[minmax\\(0\\,1fr\\)_3rem\\]{grid-template-columns:minmax(0,1fr) 3rem}.grid-cols-\\[minmax\\(0\\,1fr\\)_20rem\\]{grid-template-columns:minmax(0,1fr) 20rem}.grid-cols-\\[minmax\\(0\\,1fr\\)_auto\\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\\[minmax\\(0\\,1fr\\)_minmax\\(8rem\\,0\\.45fr\\)_7rem_2rem\\]{grid-template-columns:minmax(0,1fr) minmax(8rem,.45fr) 7rem 2rem}.grid-cols-\\[minmax\\(8rem\\,13rem\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(8rem,13rem) minmax(0,1fr)}.grid-cols-\\[minmax\\(10rem\\,1\\.1fr\\)_minmax\\(10rem\\,1fr\\)_8rem_auto\\]{grid-template-columns:minmax(10rem,1.1fr) minmax(10rem,1fr) 8rem auto}.grid-cols-\\[minmax\\(10rem\\,1fr\\)_7rem_minmax\\(10rem\\,17rem\\)\\]{grid-template-columns:minmax(10rem,1fr) 7rem minmax(10rem,17rem)}.grid-cols-\\[minmax\\(15rem\\,22rem\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(15rem,22rem) minmax(0,1fr)}.grid-cols-\\[minmax\\(120px\\,1fr\\)_150px_minmax\\(110px\\,1fr\\)_auto\\]{grid-template-columns:minmax(120px,1fr) 150px minmax(110px,1fr) auto}.grid-cols-\\[repeat\\(auto-fill\\,minmax\\(220px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.grid-cols-\\[repeat\\(auto-fill\\,minmax\\(260px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-\\[28px_repeat\\(6\\,minmax\\(64px\\,1fr\\)\\)\\]{grid-template-rows:28px repeat(6,minmax(64px,1fr))}.grid-rows-\\[auto_minmax\\(0\\,1fr\\)_auto\\]{grid-template-rows:auto minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.gap-\\[2px\\]{gap:2px}.gap-\\[9px\\]{gap:9px}.gap-px{gap:1px}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px*var(--tw-space-y-reverse));margin-block-end:calc(1px*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.scroll-smooth{scroll-behavior:smooth}.rounded-\\[1\\.75rem\\]{border-radius:1.75rem}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[7px\\]{border-radius:7px}.rounded-\\[9px\\]{border-radius:9px}
4.rounded-\\[10px\\]{border-radius:10px}.rounded-\\[18px\\]{border-radius:18px}.rounded-full{border-radius:3.40282e38px}.rounded-none{border-radius:0}.\\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.\\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.\\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\\[2\\.5px\\]{border-style:var(--tw-border-style);border-width:2.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-transparent{border-color:#0000}.border-l-transparent{border-left-color:#0000}.\\!bg-transparent{background-color:#0000!important}.bg-\\[\\#7c3aed\\]{background-color:#7c3aed}.bg-\\[\\#25D366\\]\\/10{background-color:#25d3661a}.bg-\\[\\#18171b\\]{background-color:#18171b}.bg-\\[\\#FAFAFA\\],.bg-\\[\\#fafafa\\]{background-color:#fafafa}.bg-current{background-color:currentColor}.bg-transparent{background-color:#0000}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-bl{--tw-gradient-position:to bottom left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tl{--tw-gradient-position:to top left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\\[linear-gradient\\(rgba\\(239\\,68\\,68\\,0\\.02\\)_1px\\,transparent_1px\\)\\,linear-gradient\\(90deg\\,rgba\\(239\\,68\\,68\\,0\\.02\\)_1px\\,transparent_1px\\)\\]{background-image:linear-gradient(#ef444405 1px,#0000 1px),linear-gradient(90deg,#ef444405 1px,#0000 1px)}.from-\\[oklch\\(0\\.26_0\\.09_calc\\(var\\(--agent-hue\\)_-_12\\)\\)\\]{--tw-gradient-from:oklch(.26 .09 calc(var(--agent-hue) - 12));--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-\\[oklch\\(0\\.38_0\\.18_var\\(--agent-hue\\)\\)\\]{--tw-gradient-via:oklch(.38 .18 var(--agent-hue));--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-p
4osition),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\\[oklch\\(0\\.38_0\\.17_calc\\(var\\(--agent-hue\\)_\\+_11\\)\\)\\]{--tw-gradient-to:oklch(.38 .17 calc(var(--agent-hue) + 11));--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\\[size\\:20px_20px\\]{background-size:20px 20px}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.object-none{object-fit:none}.object-scale-down{object-fit:scale-down}.object-bottom{object-position:bottom}.object-center{object-position:center}.object-top{object-position:top}.p-\\[3px\\]{padding:3px}.p-px{padding:1px}.px-\\[5px\\]{padding-inline:5px}.px-\\[7px\\]{padding-inline:7px}.px-\\[9px\\]{padding-inline:9px}.px-\\[11px\\]{padding-inline:11px}.px-\\[13px\\]{padding-inline:13px}.px-\\[15px\\]{padding-inline:15px}.py-\\[5px\\]{padding-block:5px}.py-\\[11px\\]{padding-block:11px}.py-\\[13px\\]{padding-block:13px}.py-px{padding-block:1px}.pr-\\[5rem\\]{padding-right:5rem}.pl-\\[30px\\]{padding-left:30px}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.text-\\[0\\.9em\\]{font-size:.9em}.text-\\[8px\\]{font-size:8px}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13\\.5px\\]{font-size:13.5px}.text-\\[13px\\]{font-size:13px}.text-\\[14\\.5px\\]{font-size:14.5px}.text-\\[14px\\]{font-size:14px}.text-\\[15px\\]{font-size:15px}.text-\\[16px\\]{font-size:16px}.text-\\[19px\\]{font-size:19px}.text-\\[21px\\]{font-size:21px}.text-\\[22px\\]{font-size:22px}.text-\\[28px\\]{font-size:28px}.text-\\[30px\\]{font-size:30px}.text-\\[40px\\]{font-size:40px}.leading-\\[1\\.2em\\]{--tw-leading:1.2em;line-height:1.2em}.leading-\\[1\\.05\\]{--tw-leading:1.05;line-height:1.05}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-\\[1\\.6\\]{--tw-leading:1.6;line-height:1.6}.leading-\\[1\\.7\\]{--tw-leading:1.7;line-height:1.7}.leading-\\[1\\.45\\]{--tw-leading:1.45;line-height:1.45}.leading-\\[1\\.55\\]{--tw-leading:1.55;line-height:1.55}.leading-\\[1\\.65\\]{--tw-leading:1.65;line-height:1.65}.leading-\\[18px\\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.tracking-\\[-0\\.01em\\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\\[-0\\.02em\\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\\[-0\\.04em\\]{--tw-tracking:-.04em;letter-spacing:-.04em}.tracking-\\[-0\\.015em\\]{--tw-tracking:-.015em;letter-spacing:-.015em}.tracking-\\[-0\\.022em\\]{--tw-tracking:-.022em;letter-spacing:-.022em}.tracking-\\[-0\\.025em\\]{--tw-tracking:-.025em;letter-spacing:-.025em}.tracking-\\[0\\.1em\\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\\[0\\.04em\\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\\[0\\.07em\\]{--tw-tracking:.07em;letter-spacing:.07em}.tracking-\\[0\\.08em\\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\\[0\\.12em\\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\\[0\\.18em\\]{--tw-tracking:.18em;letter-spacing:.18em}.text-balance{text-wrap:balance}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.\\[overflow-wrap\\:anywhere\\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#4B53BC\\]{color:#4b53bc}.text-\\[\\#7c3aed\\]{color:#7c3aed}.text-\\[\\#25D366\\]{color:#25d366}.text-\\[\\#26A5E4\\]{color:#26a5e4}.text-\\[\\#128C4A\\]{color:#128c4a}.text-\\[\\#5059C9\\]{color:#5059c9}.text-\\[\\#5865F2\\]{color:#5865f2}.text-\\[\\#303030\\]{color:#303030}.text-\\[\\#616161\\]{color:#616161}.text-current{color:currentColor}.text-transparent{color:#0000}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.\\!opacity-0{opacity:0!important}.opacity-0{opacity:0}
4.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-95{opacity:.95}.opacity-100{opacity:1}.shadow-\\[-20px_0_50px_-32px_rgba\\(15\\,23\\,42\\,0\\.55\\)\\]{--tw-shadow:-20px 0 50px -32px var(--tw-shadow-color,#0f172a8c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_3px_var\\(--agent-soft\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,var(--agent-soft));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_4px_rgba\\(139\\,92\\,246\\,0\\.1\\)\\]{--tw-shadow:0 0 0 4px var(--tw-shadow-color,#8b5cf61a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.shadow-\\[0_6px_20px_-8px_rgba\\(139\\,92\\,246\\,0\\.45\\)\\]{--tw-shadow:0 6px 20px -8px var(--tw-shadow-color,#8b5cf673);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.ring-\\[3px\\]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ring-offset-4{--tw-ring-offset-width:4px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-\\[0_0_4px_rgba\\(0\\,0\\,0\\,0\\.8\\)\\]{--tw-drop-shadow-size:drop-shadow(0 0 4px var(--tw-drop-shadow-color,#000c));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\\[0_0_6px_rgba\\(139\\,92\\,246\\,0\\.6\\)\\]{--tw-drop-shadow-size:drop-shadow(0 0 6px var(--tw-drop-shadow-color,#8b5cf699));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\\[0_0_6px_rgba\\(139\\,92\\,246\\,0\\.55\\)\\]{--tw-drop-shadow-size:drop-shadow(0 0 6px var(--tw-drop-shadow-color,#8b5cf68c));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\\[0_0_8px_rgba\\(0\\,0\\,0\\,0\\.6\\)\\]{--tw-drop-shadow-size:drop-shadow(0 0 8px var(--tw-drop-shadow-color,#0009));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.\\[filter\\:invert\\(39\\%\\)_sepia\\(83\\%\\)_saturate\\(2300\\%\\)_hue-rotate\\(241deg\\)_brightness\\(94\\%\\)_contrast\\(94\\%\\)\\]{filter:invert(39%)sepia(83%)saturate(2300%)hue-rotate(241deg)brightness(94%)contrast(94%)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-\\[1px\\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[background-color\\,border-color\\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[background-color\\,color\\]{transition-property:background-color,color;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[border-color\\,box-shadow\\,transform\\]{transition-property:border-color,box-shadow,transform;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[border-color\\,box-shadow\\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[flex-grow\\]{transition-property:flex-grow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[left\\,color\\]{transition-property:left,color;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[margin\\]{transition-property:margin;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[max-width\\]{transition-property:max-width;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[opacity\\,border-color\\,box-shadow\\,background-color\\]{transition-property:opacity,border-color,box-shadow,background-color;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[opacity\\,border-color\\,box-shadow\\]{transition-property:opacity,border-color,box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[stroke-dasharray\\]{transition-property:stroke-dasharray;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[width\\,opacity\\]{transition-property:width,opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}
4.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-none{transition-property:none}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\\[scrollbar-color\\:var\\(--border\\)_transparent\\]{scrollbar-color:var(--border)transparent}.\\[scrollbar-gutter\\:stable\\]{scrollbar-gutter:stable}.\\[scrollbar-width\\:none\\]{scrollbar-width:none}.\\[scrollbar-width\\:thin\\]{scrollbar-width:thin}.\\[tab-size\\:2\\]{-moz-tab-size:2;tab-size:2}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-open\\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media (hover:hover){.group-hover\\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\\:rotate-12:is(:where(.group):hover *){rotate:12deg}.group-hover\\:opacity-100:is(:where(.group):hover *),.group-hover\\/project\\:opacity-100:is(:where(.group\\/project):hover *),.group-hover\\/work\\:opacity-100:is(:where(.group\\/work):hover *){opacity:1}}.group-data-\\[copied\\=true\\]\\:block:is(:where(.group)[data-copied=true] *){display:block}.group-data-\\[copied\\=true\\]\\:hidden:is(:where(.group)[data-copied=true] *){display:none}.group-data-\\[dragging\\]\\/dropzone\\:flex:is(:where(.group\\/dropzone)[data-dragging] *){display:flex}.file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:-left-\\[1\\.61rem\\]:before{content:var(--tw-content);left:-1.61rem}.before\\:left-\\[15px\\]:before{content:var(--tw-content);left:15px}.before\\:left-\\[60px\\]:before{content:var(--tw-content);left:60px}.before\\:w-px:before{content:var(--tw-content);width:1px}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:border-2:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:2px}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:w-px:after{content:var(--tw-content);width:1px}.after\\:transition-colors:after{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.last\\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.open\\:block:is([open],:popover-open,:open){display:block}.open\\:w-full:is([open],:popover-open,:open){width:100%}.focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus-within\\:ring-\\[3px\\]:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.hover\\:-translate-y-\\[1px\\]:hover{--tw-translate-y: -1px ;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-\\[\\#4B53BC\\]:hover{border-color:#4b53bc}.hover\\:border-\\[\\#25D366\\]:hover{border-color:#25d366}.hover\\:border-\\[\\#26A5E4\\]:hover{border-color:#26a5e4}.hover\\:border-\\[\\#5865F2\\]:hover{border-color:#5865f2}.hover\\:bg-\\[\\#4B53BC\\]\\/5:hover{background-color:#4b53bc0d}.hover\\:bg-\\[\\#6d28d9\\]:hover{background-color:#6d28d9}.hover\\:bg-\\[\\#8b5cf6\\]:hover{background-color:#8b5cf6}.hover\\:bg-\\[\\#25D366\\]\\/5:hover{background-color:#25d3660d}.hover\\:bg-\\[\\#26A5E4\\]\\/5:hover{background-color:#26a5e40d}.hover\\:bg-\\[\\#5865F2\\]\\/5:hover{background-color:#5865f20d}.hover\\:text-\\[\\#4B53BC\\]:hover{color:#4b53bc}.hover\\:no-underline:hover{text-decoration-line:none}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-75:hover{opacity:.75}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-85:hover{opacity:.85}.hover\\:opacity-90:hover{opacity:.9}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-none:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.hover\\:grayscale-0:hover{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\\:border-transparent:focus{border-color:#0000}.focus\\:opacity-100:focus{opacity:1}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-\\[3px\\]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus\\:ring-offset-1:focus{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:opacity-100:focus-visible{opacity:1}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\\:scale-\\[0\\.96\\]:active{scale:.96}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.active\\:scale-\\[0\\.99\\]:active{scale:.99}.active\\:cursor-grabbing:active{cursor:grabbing}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:invisible:disabled{visibility:hidden}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:no-underline:disabled{text-decoration-line:none}.disabled\\:opacity-20:disabled{opacity:.2}.disabled\\:opacity-30:disabled{opacity:.3}.disabled\\:opacity-35:disabled{opacity:.35}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}.disabled\\:opacity-65:disabled{opacity:.65}@media (hover:hover){.disabled\\:hover\\:scale-100:disabled:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\\:hover\\:border-transparent:disabled:hover{border-color:#0000}.disabled\\:hover\\:bg-transparent:disabled:hover{background-color:#0000}}.data-\\[state\\=active\\]\\:bg-transparent[data-state=active]{background-color:#0000}.data-\\[state\\=active\\]\\:shadow-none[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.data-\\[state\\=closed\\]\\:\\[animation\\:collapse_150ms_ease-in\\][data-state=closed]{animation:.15s ease-in collapse}.data-\\[state\\=open\\]\\:\\[animation\\:expand_150ms_ease-out\\][data-state=open]{animation:.15s ease-out expand}.data-\\[state\\=open\\]\\:opacity-100[data-state=open]{opacity:1}@media (prefers-reduced-motion:reduce){.motion-reduce\\:\\[animation\\:none\\],.motion-reduce\\:animate-none{animation:none}.motion-reduce\\:transition-none{transition-property:none}}@media (prefers-color-scheme:dark){.dark\\:block{display:block}.dark\\:hidden{display:none}.dark\\:opacity-55{opacity:.55}.dark\\:data-\\[state\\=active\\]\\:border-transparent[data-state=active]{border-color:#0000}.dark\\:data-\\[state\\=active\\]\\:bg-transparent[data-state=active]{background-color:#0000}}.\\[\\&_\\[data-slot\\=scroll-area-viewport\\]\\>div\\]\\:\\!block [data-slot=scroll-area-viewport]>div{display:block!important}@media (prefers-reduced-motion:reduce){.motion-reduce\\:\\[\\&_\\[data-slot\\=skeleton\\]\\]\\:animate-none [data-slot=skeleton]{animation:none}}.\\[\\&_code\\]\\:break-words code{overflow-wrap:break-word}.\\[\\&_ol\\]\\:list-outside ol{list-style-position:outside}.\\[\\&_svg\\]\\:h-auto svg{height:auto}.\\[\\&_svg\\]\\:max-w-none svg{max-width:none}.\\[\\&_td\\]\\:border-r td{border-right-style:var(--tw-border-style);border-right-width:1px}.\\[\\&_td\\:last-child\\]\\:border-r-0 td:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.\\[\\&_th\\]\\:border-r th{border-right-style:var(--tw-border-style);border-right-width:1px}.\\[\\&_th\\]\\:border-b th{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\\[\\&_th\\]\\:text-left th{text-align:left}.\\[\\&_th\\:last-child\\]\\:border-r-0 th:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.\\[\\&_tr\\]\\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\\[\\&_tr\\:last-child\\]\\:border-b-0 tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\\[\\&_ul\\]\\:list-outside ul{list-style-position:outside}.\\[\\&\\:\\:-webkit-scrollbar\\]\\:hidden::-webkit-scrollbar{display:none}.\\[\\&\\>button\\]\\:hidden>button{display:none}.last\\:\\[\\&\\>td\\]\\:border-b-0:last-child>td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.\\[\\@media\\(hover\\:hover\\)\\]\\:opacity-0{opacity:0}.\\[\\@media\\(hover\\:hover\\)\\]\\:group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}.\\[\\@media\\(hover\\:hover\\)\\]\\:group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}
4@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}',wle="";var jK={exports:{}},Hle={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],ol
4ive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},EK={exports:{}},Nle=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")},Rle=Nle,kle=Array.prototype.concat,Fle=Array.prototype.slice,wN=EK.exports=function(t){for(var i=[],n=0,s=t.length;n<s;n++){var l=t[n];Rle(l)?i=kle.call(i,Fle.call(l)):i.push(l)}return i};wN.wrap=function(e){return function(){return e(wN(arguments))}};var Sle=EK.exports,uf=Hle,Hp=Sle,PK=Object.hasOwnProperty,UK=Object.create(null);for(var dx in uf)PK.call(uf,dx)&&(UK[uf[dx]]=dx);var ws=jK.exports={to:{},get:{}};ws.get=function(e){var t=e.substring(0,3).toLowerCase(),i,n;switch(t){case"hsl":i=ws.get.hsl(e),n="hsl";break;case"hwb":i=ws.get.hwb(e),n="hwb";break;default:i=ws.get.rgb(e),n="rgb";break}return i?{model:n,value:i}:null};ws.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,i=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,n=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,s=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,l=/^(\w+)$/,c=[0,0,0,1],r,a,u;if(r=e.match(i)){for(u=r[2],r=r[1],a=0;a<3;a++){var o=a*2;c[a]=parseInt(r.slice(o,o+2),16)}u&&(c[3]=parseInt(u,16)/255)}else if(r=e.match(t)){for(r=r[1],u=r[3],a=0;a<3;a++)c[a]=parseInt(r[a]+r[a],16);u&&(c[3]=parseInt(u+u,16)/255)}else if(r=e.match(n)){for(a=0;a<3;a++)c[a]=parseInt(r[a+1],0);r[4]&&(r[5]?c[3]=parseFloat(r[4])*.01:c[3]=parseFloat(r[4]))}else if(r=e.match(s)){for(a=0;a<3;a++)c[a]=Math.round(parseFloat(r[a+1])*2.55);r[4]&&(r[5]?c[3]=parseFloat(r[4])*.01:c[3]=parseFloat(r[4]))}else return(r=e.match(l))?r[1]==="transparent"?[0,0,0,0]:PK.call(uf,r[1])?(c=uf[r[1]],c[3]=1,c):null:null;for(a=0;a<3;a++)c[a]=Qa(c[a],0,255);return c[3]=Qa(c[3],0,1),c};ws.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,i=e.match(t);if(i){var n=parseFloat(i[4]),s=(parseFloat(i[1])%360+360)%360,l=Qa(parseFloat(i[2]),0,100),c=Qa(parseFloat(i[3]),0,100),r=Qa(isNaN(n)?1:n,0,1);return[s,l,c,r]}return null};ws.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,i=e.match(t);if(i){var n=parseFloat(i[4]),s=(parseFloat(i[1])%360+360)%360,l=Qa(parseFloat(i[2]),0,100),c=Qa(parseFloat(i[3]),0,100),r=Qa(isNaN(n)?1:n,0,1);return[s,l,c,r]}return null};ws.to.hex=function(){var e=Hp(arguments);return"#"+oy(e[0])+oy(e[1])+oy(e[2])+(e[3]<1?oy(Math.round(e[3]*255)):"")};ws.to.rgb=function(){var e=Hp(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};ws.to.rgb.percent=function(){var e=Hp(arguments),t=Math.round(e[0]/255*100),i=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+i+"%, "+n+"%)":"rgba("+t+"%, "+i+"%, "+n+"%, "+e[3]+")"};ws.to.hsl=function(){var e=Hp(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};ws.to.hwb=function(){var e=Hp(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};ws.to.keyword=function(e){return UK[e.slice(0,3)]};function Qa(e,t,i){return Math.min(Math.max(t,e),i)}function oy(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}var Lle=jK.exports;const K9=qT(Lle),Lf={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]},mW={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,i=e[1]/100,n=e[2]/100,s,l,c,r,a,u=0;if(i===0)return a=n*255,[a,a,a];for(l=n<.5?n*(1+i):n+i-n*i,s=2*n-l,r=[0,0,0];u<3;)c=t+1/3*-(u-1),c<0?c++:c>1&&c--,a=6*c<1?s+(l-s)*6*c:2*c<1?l:3*c<2?s+(l-s)*(2/3-c)*6:s,r[u++]=a*255;return r}};Lf.hsl=function(e){var t=e[0]/255,i=e[1]/255,n=e[2]/255,s=Math.min(t,i,n),l=Math.max(t,i,n),c=l-s,r,a,u;return l===s?r=0:t===l?r=(i-n)/c:i===l?r=2+(n-t)/c:n===l&&(r=4+(t-i)/c),r=Math.min(r*60,360),r<0&&(r+=360),u=(s+l)/2,l===s?a=0:u<=.5?a=c/(l+s):a=c/(2-l-s),[r,a*100,u*100]};const e3={name:"hsv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","value"],alias:["HSV","HSB"],rgb:function(e){var t=e[0]/60,i=e[1]/100,n=e[2]/100,s=Math.floor(t)%6,l=t-Math.floor(t),c=255*n*(1-i),r=255*n*(1-i*l),a=255*n*(1-i*(1-l));switch(n*=255,s){case 0:return[n,a,c];case 1:return[r,n,c];case 2:return[c,n,a];case 3:return[c,r,n];case 4:return[a,c,n];case 5:return[n,c,r]}},hsl:function(e){var t=e[0],i=e[1]/100,n=e[2]/100,s,l;return l=(2-i)*n,s=i*n,s/=l<=1?l:2-l,s=s||0,l/=2,[t,s*100,l*100]}};Lf.hsv=function(e){var t=e[0],i=e[1],n=e[2],s=Math.min(t,i,n),l=Math.max(t,i,n),c=l-s,r,a,u;return l===0?a=0:a=c/l*100,l===s?r=0:t===l?r=(i-n)/c:i===l?r=2+(n-t)/c:n===l&&(r=4+(t-i)/c),r=Math.min(r*60,360),r<0&&(r+=360),u=l/255*1e3/10,[r,a,u]};mW.hsv=function(e){var t=e[0],i=e[1]/100,n=e[2]/100,s,l;return n*=2,i*=n<=1?n:2-n,l=(n+i)/2,s=2*i/(n+i)||0,[t,s*100,l*100]};var $K={name:"hwb",min:[0,0,0],max:[360,100,100],channel:["hue","whiteness","blackness"],alias:["HWB"],rgb:function(e){var t=e[0]/360,i=e[1]/100,n=e[2]/100,s=i+n,l,c,r,a,u,o,d;switch(s>1&&(i/=s,n/=s),l=Math.floor(6*t),c=1-n,r=6*t-l,(l&1)!==0&&(r=1-r),a=i+r*(c-i),l){default:case 6:case 0:u=c,o=a,d=i;break;case 1:u=a,o=c,d=i;break;case 2:u=i,o=c,d=a;break;case 3:u=i,o=a,d=c;break;case 4:u=a,o=i,d=c;break;case 5:u=c,o=i,d=a;break}return[u*255,o*255,d*255]},hsv:function(e){var t=e[0],i=e[1],n=e[2],s,l;return i+n>=100?(s=0,l=100*i/(i+n)):(s=100-i/(1-n/100),l=100-n),[t,s,l]},hsl:function(e){return e3.hsl($K.hsv(e))}};Lf.hwb=function(e){var t=e[0],i=e[1],n=e[2],s=Lf.hsl(e)[0],l=1/255*Math.min(t,Math.min(i,n));
4return n=1-1/255*Math.max(t,Math.max(i,n)),[s,l*100,n*100]};e3.hwb=function(e){var t=e[0],i=e[1],n=e[2];return[t,n===0?0:n*(1-i/100),100-n]};mW.hwb=function(e){return e3.hwb(mW.hsv(e))};var QK={},DK={},t3={exports:{}},rt=String,AK=function(){return{isColorSupported:!1,reset:rt,bold:rt,dim:rt,italic:rt,underline:rt,inverse:rt,hidden:rt,strikethrough:rt,black:rt,red:rt,green:rt,yellow:rt,blue:rt,magenta:rt,cyan:rt,white:rt,gray:rt,bgBlack:rt,bgRed:rt,bgGreen:rt,bgYellow:rt,bgBlue:rt,bgMagenta:rt,bgCyan:rt,bgWhite:rt,blackBright:rt,redBright:rt,greenBright:rt,yellowBright:rt,blueBright:rt,magentaBright:rt,cyanBright:rt,whiteBright:rt,bgBlackBright:rt,bgRedBright:rt,bgGreenBright:rt,bgYellowBright:rt,bgBlueBright:rt,bgMagentaBright:rt,bgCyanBright:rt,bgWhiteBright:rt}};t3.exports=AK();t3.exports.createColors=AK;var Cle=t3.exports;(function(e){var t={};Object.defineProperty(e,"__esModule",{value:!0});function i(u,o){for(var d in o)Object.defineProperty(u,d,{enumerable:!0,get:o[d]})}i(e,{dim:function(){return r},default:function(){return a}});const n=s(Cle);function s(u){return u&&u.__esModule?u:{default:u}}let l=new Set;function c(u,o,d){typeof process<"u"&&t.JEST_WORKER_ID||d&&l.has(d)||(d&&l.add(d),console.warn(""),o.forEach(b=>console.warn(u,"-",b)))}function r(u){return n.default.dim(u)}const a={info(u,o){c(n.default.bold(n.default.cyan("info")),...Array.isArray(u)?[u]:[o,u])},warn(u,o){c(n.default.bold(n.default.yellow("warn")),...Array.isArray(u)?[u]:[o,u])},risk(u,o){c(n.default.bold(n.default.magenta("risk")),...Array.isArray(u)?[u]:[o,u])}}})(DK);(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return s}});const t=i(DK);function i(l){return l&&l.__esModule?l:{default:l}}function n({version:l,from:c,to:r}){t.default.warn(`${c}-color-renamed`,[`As of Tailwind CSS ${l}, \`${c}\` has been renamed to \`${r}\`.`,"Update your configuration file to silence this warning."])}const s={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827",950:"#030712"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717",950:"#0a0a0a"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"},rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"},get lightBlue(){return n({version:"v2.2",from:"lightBlue",to:"sky"}),this.sky},get warmGray(){return n({version:"v3.0",from:"warmGray",to:"stone"}),this.stone},get trueGray(){return n({version:"v3.0",from:"trueGray",to:"neutral"}),this.neutral},get coolGray(){return n({version:"v3.0",from:"coolGray",to:"gray"}),this.gray},get blueGray(){return n({version:"v3.0",from:"blueGray",to:"slate"}),this.slate}}})(QK);let mx=QK;var Tle=(mx.__esModule?mx:{default:mx}).default;const Da=qT(Tle);function Mle(e){const t=e.split("-");if(t.length===2){const[i,n]=t;if(Da[i]&&Da[i][n])return K9.get(Da[i][n])}return K9.get(e)}function qK(e){const t=Mle(e);
4if(t){if(t.model==="hsl")return t.value;if(t.model==="rgb")return Lf.hsl(t.value);if(t.model==="hwb")return $K.hsl(t.value)}throw new Error(`cannot parse color ${e}`)}function Kle(e){const[t,i,n]=qK(e);return`${t} ${i}% ${n}%`}function Ble(e){return K9.to.hex(mW.rgb(qK(e)))}function HN(e){return Object.entries(e).map(([t,i])=>`--${t}:${Kle(i)};`).join("")}const NN={light:{destructive:"hsl(0 84.2% 60.2%)","destructive-foreground":"hsl(0 0% 98%)",dimension:"hsl(217.2 91.2% 59.8%)",measure:"hsl(270.7 91% 65.1%)"},dark:{destructive:"hsl(0 62.8% 30.6%)","destructive-foreground":"hsl(0 0% 98%)",dimension:"hsl(213.1 93.9% 67.8%)",measure:"hsl(270 95.2% 75.3%)"}};function RN(e,t){return{...t,card:e.background,"card-foreground":e.foreground,popover:e.background,"popover-foreground":e.foreground,secondary:e.muted,"secondary-foreground":e.primary,accent:e.muted,"accent-foreground":e.primary,input:e.border,...e}}function _le(e){return`:host{${HN(RN(e.light,NN.light))}} 5.dark{${HN(RN(e.dark,NN.dark))}}`}function Np(e){return{light:{background:"white",foreground:e[950],primary:e[900],"primary-foreground":e[50],muted:e[100],"muted-foreground":e[500],border:e[200],ring:e[950]},dark:{background:e[950],foreground:e[50],primary:e[50],"primary-foreground":e[900],muted:e[800],"muted-foreground":e[400],border:e[800],ring:e[300]}}}const eB=Np(Da.zinc);Np(Da.slate);Np(Da.gray);Np(Da.neutral);Np(Da.stone);const Rp=Q.createContext("light"),Ole=Q.createContext({}),jle=Q.createContext(null),tB=Q.createContext(eB),Ele=Q.createContext({root:null}),Ple=function({onMount:t,onUnmount:i,children:n,uiTheme:s=eB,...l}){const[c,r]=Q.useState(null),a=Q.useRef(null),u=Q.useRef(t);u.current=t;const o=Q.useRef(i);o.current=i;const d=Q.useMemo(()=>_le(s),[s]);return Q.useEffect(()=>{var b;if(a.current){const h=a.current.shadowRoot;return r(h),(b=u.current)==null||b.call(u,h),()=>{var p;(p=o.current)==null||p.call(o)}}},[]),re.createElement(vle.div,{...l,mode:"open",ref:a},re.createElement(tB.Provider,{value:s},re.createElement("style",null,zle),re.createElement("style",null,wle),re.createElement("style",null,d),re.createElement("link",{rel:"stylesheet",href:"https://unpkg.com/[email protected]/dist/leaflet.css",integrity:"sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=",crossOrigin:""}),c&&re.createElement(Vie,{target:c},re.createElement(Ele.Provider,{value:{root:c}},n))))};function iB(e,t){const i=Q.useRef(t);Q.useEffect(function(){t!==i.current&&e.attributionControl!=null&&(i.current!=null&&e.attributionControl.removeAttribution(i.current),t!=null&&e.attributionControl.addAttribution(t)),i.current=t},[e,t])}function Ule(e,t,i){t.center!==i.center&&e.setLatLng(t.center),t.radius!=null&&t.radius!==i.radius&&e.setRadius(t.radius)}const $le=1;function Qle(e){return Object.freeze({__version:$le,map:e})}function i3(e,t){return Object.freeze({...e,...t})}const n3=Q.createContext(null);function kp(){const e=Q.use(n3);if(e==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return e}function nB(e){function t(i,n){const{instance:s,context:l}=e(i).current;Q.useImperativeHandle(n,()=>s);const{children:c}=i;return c==null?null:re.createElement(n3,{value:l},c)}return Q.forwardRef(t)}function Dle(e){function t(i,n){const[s,l]=Q.useState(!1),{instance:c}=e(i,l).current;Q.useImperativeHandle(n,()=>c),Q.useEffect(function(){s&&c.update()},[c,s,i.children]);const r=c._contentNode;return r?lo.createPortal(i.children,r):null}return Q.forwardRef(t)}function sB(e){function t(i,n){const{instance:s}=e(i).current;return Q.useImperativeHandle(n,()=>s),null}return Q.forwardRef(t)}function Ale(e){return function(i){const n=kp(),s=e(i,n),{instance:l}=s.current,c=Q.useRef(i.position),{position:r}=i;return Q.useEffect(function(){return l.addTo(n.map),function(){l.remove()}},[n.map,l]),Q.useEffect(function(){r!=null&&r!==c.current&&(l.setPosition(r),c.current=r)},[l,r]),s}}function s3(e,t){const i=Q.useRef(void 0);Q.useEffect(function(){return t!=null&&e.instance.on(t),i.current=t,function(){i.current!=null&&e.instance.off(i.current),i.current=null}},[e,t])}function h2(e,t){const i=e.pane??t.pane;return i?{...e,pane:i}:e}function qle(e,t){return function(n,s){const l=kp(),c=e(h2(n,l),l);return iB(l.map,n.attribution),s3(c.current,n.eventHandlers),t(c.current,l,n,s),c}}var B9={exports:{}};/* @preserve 6 * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com 7 * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade 8 */(function(e,t){(function(i,n){n(t)})(wI,function(i){var n="1.9.4";function s(m){var y,G,z,F;for(G=1,z=arguments.length;G<z;G++){F=arguments[G];for(y in F)m[y]=F[y]}return m}var l=Object.create||function(){function m(){}return function(y){return m.prototype=y,new m}}();function c(m,y){var G=Array.prototype.slice;
8if(m.bind)return m.bind.apply(m,G.call(arguments,1));var z=G.call(arguments,2);return function(){return m.apply(y,z.length?z.concat(G.call(arguments)):arguments)}}var r=0;function a(m){return"_leaflet_id"in m||(m._leaflet_id=++r),m._leaflet_id}function u(m,y,G){var z,F,O,q;return q=function(){z=!1,F&&(O.apply(G,F),F=!1)},O=function(){z?F=arguments:(m.apply(G,arguments),setTimeout(q,y),z=!0)},O}function o(m,y,G){var z=y[1],F=y[0],O=z-F;return m===z&&G?m:((m-F)%O+O)%O+F}function d(){return!1}function b(m,y){if(y===!1)return m;var G=Math.pow(10,y===void 0?6:y);return Math.round(m*G)/G}function h(m){return m.trim?m.trim():m.replace(/^\s+|\s+$/g,"")}function p(m){return h(m).split(/\s+/)}function Z(m,y){Object.prototype.hasOwnProperty.call(m,"options")||(m.options=m.options?l(m.options):{});for(var G in y)m.options[G]=y[G];return m.options}function X(m,y,G){var z=[];for(var F in m)z.push(encodeURIComponent(G?F.toUpperCase():F)+"="+encodeURIComponent(m[F]));return(!y||y.indexOf("?")===-1?"?":"&")+z.join("&")}var J=/\{ *([\w_ -]+) *\}/g;function V(m,y){return m.replace(J,function(G,z){var F=y[z];if(F===void 0)throw new Error("No value provided for variable "+G);return typeof F=="function"&&(F=F(y)),F})}var g=Array.isArray||function(m){return Object.prototype.toString.call(m)==="[object Array]"};function I(m,y){for(var G=0;G<m.length;G++)if(m[G]===y)return G;return-1}var v="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function k(m){return window["webkit"+m]||window["moz"+m]||window["ms"+m]}var N=0;function C(m){var y=+new Date,G=Math.max(0,16-(y-N));return N=y+G,window.setTimeout(m,G)}var f=window.requestAnimationFrame||k("RequestAnimationFrame")||C,w=window.cancelAnimationFrame||k("CancelAnimationFrame")||k("CancelRequestAnimationFrame")||function(m){window.clearTimeout(m)};function x(m,y,G){if(G&&f===C)m.call(y);else return f.call(window,c(m,y))}function R(m){m&&w.call(window,m)}var K={__proto__:null,extend:s,create:l,bind:c,get lastId(){return r},stamp:a,throttle:u,wrapNum:o,falseFn:d,formatNum:b,trim:h,splitWords:p,setOptions:Z,getParamString:X,template:V,isArray:g,indexOf:I,emptyImageUrl:v,requestFn:f,cancelFn:w,requestAnimFrame:x,cancelAnimFrame:R};function B(){}B.extend=function(m){var y=function(){Z(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},G=y.__super__=this.prototype,z=l(G);z.constructor=y,y.prototype=z;for(var F in this)Object.prototype.hasOwnProperty.call(this,F)&&F!=="prototype"&&F!=="__super__"&&(y[F]=this[F]);return m.statics&&s(y,m.statics),m.includes&&(_(m.includes),s.apply(null,[z].concat(m.includes))),s(z,m),delete z.statics,delete z.includes,z.options&&(z.options=G.options?l(G.options):{},s(z.options,m.options)),z._initHooks=[],z.callInitHooks=function(){if(!this._initHooksCalled){G.callInitHooks&&G.callInitHooks.call(this),this._initHooksCalled=!0;for(var O=0,q=z._initHooks.length;O<q;O++)z._initHooks[O].call(this)}},y},B.include=function(m){var y=this.prototype.options;return s(this.prototype,m),m.options&&(this.prototype.options=y,this.mergeOptions(m.options)),this},B.mergeOptions=function(m){return s(this.prototype.options,m),this},B.addInitHook=function(m){var y=Array.prototype.slice.call(arguments,1),G=typeof m=="function"?m:function(){this[m].apply(this,y)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(G),this};function _(m){if(!(typeof L>"u"||!L||!L.Mixin)){m=g(m)?m:[m];for(var y=0;y<m.length;
8y++)m[y]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var j={on:function(m,y,G){if(typeof m=="object")for(var z in m)this._on(z,m[z],y);else{m=p(m);for(var F=0,O=m.length;F<O;F++)this._on(m[F],y,G)}return this},off:function(m,y,G){if(!arguments.length)delete this._events;else if(typeof m=="object")for(var z in m)this._off(z,m[z],y);else{m=p(m);for(var F=arguments.length===1,O=0,q=m.length;O<q;O++)F?this._off(m[O]):this._off(m[O],y,G)}return this},_on:function(m,y,G,z){if(typeof y!="function"){console.warn("wrong listener type: "+typeof y);return}if(this._listens(m,y,G)===!1){G===this&&(G=void 0);var F={fn:y,ctx:G};z&&(F.once=!0),this._events=this._events||{},this._events[m]=this._events[m]||[],this._events[m].push(F)}},_off:function(m,y,G){var z,F,O;if(this._events&&(z=this._events[m],!!z)){if(arguments.length===1){if(this._firingCount)for(F=0,O=z.length;F<O;F++)z[F].fn=d;delete this._events[m];return}if(typeof y!="function"){console.warn("wrong listener type: "+typeof y);return}var q=this._listens(m,y,G);if(q!==!1){var ce=z[q];this._firingCount&&(ce.fn=d,this._events[m]=z=z.slice()),z.splice(q,1)}}},fire:function(m,y,G){if(!this.listens(m,G))return this;var z=s({},y,{type:m,target:this,sourceTarget:y&&y.sourceTarget||this});if(this._events){var F=this._events[m];if(F){this._firingCount=this._firingCount+1||1;for(var O=0,q=F.length;O<q;O++){var ce=F[O],ae=ce.fn;ce.once&&this.off(m,ae,ce.ctx),ae.call(ce.ctx||this,z)}this._firingCount--}}return G&&this._propagateEvent(z),this},listens:function(m,y,G,z){typeof m!="string"&&console.warn('"string" type argument expected');var F=y;typeof y!="function"&&(z=!!y,F=void 0,G=void 0);var O=this._events&&this._events[m];if(O&&O.length&&this._listens(m,F,G)!==!1)return!0;if(z){for(var q in this._eventParents)if(this._eventParents[q].listens(m,y,G,z))return!0}return!1},_listens:function(m,y,G){if(!this._events)return!1;var z=this._events[m]||[];if(!y)return!!z.length;G===this&&(G=void 0);for(var F=0,O=z.length;F<O;F++)if(z[F].fn===y&&z[F].ctx===G)return F;return!1},once:function(m,y,G){if(typeof m=="object")for(var z in m)this._on(z,m[z],y,!0);else{m=p(m);for(var F=0,O=m.length;F<O;F++)this._on(m[F],y,G,!0)}return this},addEventParent:function(m){return this._eventParents=this._eventParents||{},this._eventParents[a(m)]=m,this},removeEventParent:function(m){return this._eventParents&&delete this._eventParents[a(m)],this},_propagateEvent:function(m){for(var y in this._eventParents)this._eventParents[y].fire(m.type,s({layer:m.target,propagatedFrom:m.target},m),!0)}};j.addEventListener=j.on,j.removeEventListener=j.clearAllEventListeners=j.off,j.addOneTimeEventListener=j.once,j.fireEvent=j.fire,j.hasEventListeners=j.listens;var U=B.extend(j);function $(m,y,G){this.x=G?Math.round(m):m,this.y=G?Math.round(y):y}var te=Math.trunc||function(m){return m>0?Math.floor(m):Math.ceil(m)};$.prototype={clone:function(){return new $(this.x,this.y)},add:function(m){return this.clone()._add(E(m))},_add:function(m){return this.x+=m.x,this.y+=m.y,this},subtract:function(m){return this.clone()._subtract(E(m))},_subtract:function(m){return this.x-=m.x,this.y-=m.y,this},divideBy:function(m){return this.clone()._divideBy(m)},_divideBy:function(m){return this.x/=m,this.y/=m,this},multiplyBy:function(m){return this.clone()._multiplyBy(m)},_multiplyBy:function(m){return this.x*=m,this.y*=m,this},scaleBy:function(m){return new $(this.x*m.x,this.y*m.y)},unscaleBy:function(m){return new $(this.x/m.x,this.y/m.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=te(this.x),this.y=te(this.y),this},distanceTo:function(m){m=E(m);var y=m.x-this.x,G=m.y-this.y;return Math.sqrt(y*y+G*G)},equals:function(m){return m=E(m),m.x===this.x&&m.y===this.y},contains:function(m){return m=E(m),Math.abs(m.x)<=Math.abs(this.x)&&Math.abs(m.y)<=Math.abs(this.y)},toString:function(){return"Point("+b(this.x)+", "+b(this.y)+")"}};function E(m,y,G){return m instanceof $?m:g(m)?new $(m[0],m[1]):m==null?m:typeof m=="object"&&"x"in m&&"y"in m?new $(m.x,m.y):new $(m,y,G)}function ie(m,y){if(m)for(var G=y?[m,y]:m,z=0,F=G.length;z<F;z++)this.extend(G[z])}ie.prototype={extend:function(m){var y,G;if(!m)return this;if(m instanceof $||typeof m[0]=="number"||"x"in m)y=G=E(m);else if(m=ee(m),y=m.min,G=m.max,!y||!G)return this;return!this.min&&!this.max?(this.min=y.clone(),this.max=G.clone()):(this.min.x=Math.min(y.x,this.min.x),this.max.x=Math.max(G.x,this.max.x),this.min.y=Math.min(y.y,this.min.y),this.max.y=Math.max(G.y,this.max.y)),this},getCenter:function(m){return E((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,m)},getBottomLeft:function(){return E(this.min.x,this.max.y)},getTopRight:function(){return E(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(m){var y,G;return typeof m[0]=="number"||m instanceof $?m=E(m):m=ee(m),m instanceof ie?(y=m.min,G=m.max):y=G=m,y.x>=this.min.x&&G.x<=this.max.x&&y.y>=this.min.y&&G.y<=this.max.y},intersects:function(m){m=ee(m);var y=this.min,G=this.max,z=m.min,F=m.max,O=F.x>=y.x&&z.x<=G.x,q=F.y>=y.y&&z.y<=G.y;return O&&q},overlaps:function(m){m=ee(m);var y=this.min,G=this.max,z=m.min,F=m.max,O=F.x>y.x&&z.x<G.x,q=F.y>y.y&&z.y<G.y;return O&&q},isValid:function(){return!!(this.min&&this.max)},pad:function(m){var y=this.min,G=this.max,z=Math.abs(y.x-G.x)*m,F=Math.abs(y.y-G.y)*m;return ee(E(y.x-z,y.y-F),E(G.x+z,G.y+F))},equals:function(m){return m?(m=ee(m),this.min.equals(m.getTopLeft())&&this.max.equals(m.getBottomRight())):!1}};function ee(m,y){return!m||m instanceof ie?m:new ie(m,y)}function A(m,y){if(m)for(var G=y?[m,y]:m,z=0,F=G.length;z<F;z++)this.extend(G[z])}A.prototype={extend:function(m){var y=this._southWest,G=this._northEast,z,F;if(m instanceof ne)z=m,F=m;else if(m instanceof A){if(z=m._southWest,F=m._northEast,!z||!F)return this}else return m?this.extend(se(m)||le(m)):this;return!y&&!G?(this._southWest=new ne(z.lat,z.lng),this._northEast=new ne(F.lat,F.lng)):(y.lat=Math.min(z.lat,y.lat),y.lng=Math.min(z.lng,y.lng),G.lat=Math.max(F.lat,G.lat),G.lng=Math.max(F.lng,G.lng)),this},pad:function(m){var y=this._southWest,G=this._northEast,z=Math.abs(y.lat-G.lat)*m,F=Math.abs(y.lng-G.lng)*m;return new A(new ne(y.lat-z,y.lng-F),new ne(G.lat+z,G.lng+F))},getCenter:function(){return new ne((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new ne(this.getNorth(),this.getWest())},getSouthEast:function(){return new ne(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat}
8,getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(m){typeof m[0]=="number"||m instanceof ne||"lat"in m?m=se(m):m=le(m);var y=this._southWest,G=this._northEast,z,F;return m instanceof A?(z=m.getSouthWest(),F=m.getNorthEast()):z=F=m,z.lat>=y.lat&&F.lat<=G.lat&&z.lng>=y.lng&&F.lng<=G.lng},intersects:function(m){m=le(m);var y=this._southWest,G=this._northEast,z=m.getSouthWest(),F=m.getNorthEast(),O=F.lat>=y.lat&&z.lat<=G.lat,q=F.lng>=y.lng&&z.lng<=G.lng;return O&&q},overlaps:function(m){m=le(m);var y=this._southWest,G=this._northEast,z=m.getSouthWest(),F=m.getNorthEast(),O=F.lat>y.lat&&z.lat<G.lat,q=F.lng>y.lng&&z.lng<G.lng;return O&&q},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(m,y){return m?(m=le(m),this._southWest.equals(m.getSouthWest(),y)&&this._northEast.equals(m.getNorthEast(),y)):!1},isValid:function(){return!!(this._southWest&&this._northEast)}};function le(m,y){return m instanceof A?m:new A(m,y)}function ne(m,y,G){if(isNaN(m)||isNaN(y))throw new Error("Invalid LatLng object: ("+m+", "+y+")");this.lat=+m,this.lng=+y,G!==void 0&&(this.alt=+G)}ne.prototype={equals:function(m,y){if(!m)return!1;m=se(m);var G=Math.max(Math.abs(this.lat-m.lat),Math.abs(this.lng-m.lng));return G<=(y===void 0?1e-9:y)},toString:function(m){return"LatLng("+b(this.lat,m)+", "+b(this.lng,m)+")"},distanceTo:function(m){return de.distance(this,se(m))},wrap:function(){return de.wrapLatLng(this)},toBounds:function(m){var y=180*m/40075017,G=y/Math.cos(Math.PI/180*this.lat);return le([this.lat-y,this.lng-G],[this.lat+y,this.lng+G])},clone:function(){return new ne(this.lat,this.lng,this.alt)}};function se(m,y,G){return m instanceof ne?m:g(m)&&typeof m[0]!="object"?m.length===3?new ne(m[0],m[1],m[2]):m.length===2?new ne(m[0],m[1]):null:m==null?m:typeof m=="object"&&"lat"in m?new ne(m.lat,"lng"in m?m.lng:m.lon,m.alt):y===void 0?null:new ne(m,y,G)}var oe={latLngToPoint:function(m,y){var G=this.projection.project(m),z=this.scale(y);return this.transformation._transform(G,z)},pointToLatLng:function(m,y){var G=this.scale(y),z=this.transformation.untransform(m,G);return this.projection.unproject(z)},project:function(m){return this.projection.project(m)},unproject:function(m){return this.projection.unproject(m)},scale:function(m){return 256*Math.pow(2,m)},zoom:function(m){return Math.log(m/256)/Math.LN2},getProjectedBounds:function(m){if(this.infinite)return null;var y=this.projection.bounds,G=this.scale(m),z=this.transformation.transform(y.min,G),F=this.transformation.transform(y.max,G);return new ie(z,F)},infinite:!1,wrapLatLng:function(m){var y=this.wrapLng?o(m.lng,this.wrapLng,!0):m.lng,G=this.wrapLat?o(m.lat,this.wrapLat,!0):m.lat,z=m.alt;return new ne(G,y,z)},wrapLatLngBounds:function(m){var y=m.getCenter(),G=this.wrapLatLng(y),z=y.lat-G.lat,F=y.lng-G.lng;if(z===0&&F===0)return m;
8var O=m.getSouthWest(),q=m.getNorthEast(),ce=new ne(O.lat-z,O.lng-F),ae=new ne(q.lat-z,q.lng-F);return new A(ce,ae)}},de=s({},oe,{wrapLng:[-180,180],R:6371e3,distance:function(m,y){var G=Math.PI/180,z=m.lat*G,F=y.lat*G,O=Math.sin((y.lat-m.lat)*G/2),q=Math.sin((y.lng-m.lng)*G/2),ce=O*O+Math.cos(z)*Math.cos(F)*q*q,ae=2*Math.atan2(Math.sqrt(ce),Math.sqrt(1-ce));return this.R*ae}}),Je=6378137,Ie={R:Je,MAX_LATITUDE:85.0511287798,project:function(m){var y=Math.PI/180,G=this.MAX_LATITUDE,z=Math.max(Math.min(G,m.lat),-G),F=Math.sin(z*y);return new $(this.R*m.lng*y,this.R*Math.log((1+F)/(1-F))/2)},unproject:function(m){var y=180/Math.PI;return new ne((2*Math.atan(Math.exp(m.y/this.R))-Math.PI/2)*y,m.x*y/this.R)},bounds:function(){var m=Je*Math.PI;return new ie([-m,-m],[m,m])}()};function Ye(m,y,G,z){if(g(m)){this._a=m[0],this._b=m[1],this._c=m[2],this._d=m[3];return}this._a=m,this._b=y,this._c=G,this._d=z}Ye.prototype={transform:function(m,y){return this._transform(m.clone(),y)},_transform:function(m,y){return y=y||1,m.x=y*(this._a*m.x+this._b),m.y=y*(this._c*m.y+this._d),m},untransform:function(m,y){return y=y||1,new $((m.x/y-this._b)/this._a,(m.y/y-this._d)/this._c)}};function Te(m,y,G,z){return new Ye(m,y,G,z)}var $e=s({},de,{code:"EPSG:3857",projection:Ie,transformation:function(){var m=.5/(Math.PI*Ie.R);return Te(m,.5,-m,.5)}()}),Ve=s({},$e,{code:"EPSG:900913"});function Me(m){return document.createElementNS("http://www.w3.org/2000/svg",m)}function Ee(m,y){var G="",z,F,O,q,ce,ae;for(z=0,O=m.length;z<O;z++){for(ce=m[z],F=0,q=ce.length;F<q;F++)ae=ce[F],G+=(F?"L":"M")+ae.x+" "+ae.y;G+=y?Be.svg?"z":"x":""}return G||"M0 0"}var ye=document.documentElement.style,Ke="ActiveXObject"in window,Fe=Ke&&!document.addEventListener,nt="msLaunchUri"in navigator&&!("documentMode"in document),Qe=hc("webkit"),ft=hc("android"),Gt=hc("android 2")||hc("android 3"),$t=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),ut=ft&&hc("Google")&&$t<537&&!("AudioNode"in window),Ht=!!window.opera,si=!nt&&hc("chrome"),Tt=hc("gecko")&&!Qe&&!Ht&&!Ke,Nt=!si&&hc("safari"),Gi=hc("phantom"),bc="OTransition"in ye,kt=navigator.platform.indexOf("Win")===0,bi=Ke&&"transition"in ye,Mt="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Gt,ai="MozPerspective"in ye,ya=!window.L_DISABLE_3D&&(bi||Mt||ai)&&!bc&&!Gi,xs=typeof orientation<"u"||hc("mobile"),qt=xs&&Qe,gn=xs&&Mt,An=!window.PointerEvent&&window.MSPointerEvent,Qb=!!(window.PointerEvent||An),Mo="ontouchstart"in window||!!window.TouchEvent,Rq=!window.L_NO_TOUCH&&(Mo||Qb),kq=xs&&Ht,Fq=xs&&Tt,Sq=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Lq=function(){var m=!1;try{var y=Object.defineProperty({},"passive",{get:function(){m=!0}});window.addEventListener("testPassiveEventSupport",d,y),window.removeEventListener("testPassiveEventSupport",d,y)}catch{}return m}(),Cq=function(){return!!document.createElement("canvas").getContext}(),HJ=!!(document.createElementNS&&Me("svg").createSVGRect),Tq=!!HJ&&function(){var m=document.createElement("div");return m.innerHTML="<svg/>",(m.firstChild&&m.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"}(),Mq=!HJ&&function(){try{var m=document.createElement("div");m.innerHTML='<v:shape adj="1"/>';var y=m.firstChild;return y.style.behavior="url(#default#VML)",y&&typeof y.adj=="object"}catch{return!1}}(),Kq=navigator.platform.indexOf("Mac")===0,Bq=navigator.platform.indexOf("Linux")===0;function hc(m){return navigator.userAgent.toLowerCase().indexOf(m)>=0}var Be={ie:Ke,ielt9:Fe,edge:nt,webkit:Qe,android:ft,android23:Gt,androidStock:ut,opera:Ht,chrome:si,gecko:Tt,safari:Nt,phantom:Gi,opera12:bc,win:kt,ie3d:bi,webkit3d:Mt,gecko3d:ai,any3d:ya,mobile:xs,mobileWebkit:qt,mobileWebkit3d:gn,msPointer:An,pointer:Qb,touch:Rq,touchNative:Mo,mobileOpera:kq,mobileGecko:Fq,retina:Sq,passiveEvents:Lq,canvas:Cq,svg:HJ,vml:Mq,inlineSvg:Tq,mac:Kq,linux:Bq},hH=Be.msPointer?"MSPointerDown":"pointerdown",fH=Be.msPointer?"MSPointerMove":"pointermove",pH=Be.msPointer?"MSPointerUp":"pointerup",yH=Be.msPointer?"MSPointerCancel":"pointercancel",NJ={touchstart:hH,touchmove:fH,touchend:pH,touchcancel:yH},ZH={touchstart:Uq,touchmove:K0,touchend:K0,touchcancel:K0},Gd={},WH=!1;function _q(m,y,G){return y==="touchstart"&&Pq(),ZH[y]?(G=ZH[y].bind(this,G),m.addEventListener(NJ[y],G,!1),G):(console.warn("wrong event specified:",y
8),d)}function Oq(m,y,G){if(!NJ[y]){console.warn("wrong event specified:",y);return}m.removeEventListener(NJ[y],G,!1)}function jq(m){Gd[m.pointerId]=m}function Eq(m){Gd[m.pointerId]&&(Gd[m.pointerId]=m)}function XH(m){delete Gd[m.pointerId]}function Pq(){WH||(document.addEventListener(hH,jq,!0),document.addEventListener(fH,Eq,!0),document.addEventListener(pH,XH,!0),document.addEventListener(yH,XH,!0),WH=!0)}function K0(m,y){if(y.pointerType!==(y.MSPOINTER_TYPE_MOUSE||"mouse")){y.touches=[];for(var G in Gd)y.touches.push(Gd[G]);y.changedTouches=[y],m(y)}}function Uq(m,y){y.MSPOINTER_TYPE_TOUCH&&y.pointerType===y.MSPOINTER_TYPE_TOUCH&&Qi(y),K0(m,y)}function $q(m){var y={},G,z;for(z in m)G=m[z],y[z]=G&&G.bind?G.bind(m):G;return m=y,y.type="dblclick",y.detail=2,y.isTrusted=!1,y._simulated=!0,y}var Qq=200;function Dq(m,y){m.addEventListener("dblclick",y);var G=0,z;function F(O){if(O.detail!==1){z=O.detail;return}if(!(O.pointerType==="mouse"||O.sourceCapabilities&&!O.sourceCapabilities.firesTouchEvents)){var q=VH(O);if(!(q.some(function(ae){return ae instanceof HTMLLabelElement&&ae.attributes.for})&&!q.some(function(ae){return ae instanceof HTMLInputElement||ae instanceof HTMLSelectElement}))){var ce=Date.now();ce-G<=Qq?(z++,z===2&&y($q(O))):z=1,G=ce}}}return m.addEventListener("click",F),{dblclick:y,simDblclick:F}}function Aq(m,y){m.removeEventListener("dblclick",y.dblclick),m.removeEventListener("click",y.simDblclick)}var RJ=O0(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),Db=O0(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),JH=Db==="webkitTransition"||Db==="OTransition"?Db+"End":"transitionend";function xH(m){return typeof m=="string"?document.getElementById(m):m}function Ab(m,y){var G=m.style[y]||m.currentStyle&&m.currentStyle[y];if((!G||G==="auto")&&document.defaultView){var z=document.defaultView.getComputedStyle(m,null);G=z?z[y]:null}return G==="auto"?null:G}function Vt(m,y,G){var z=document.createElement(m);return z.className=y||"",G&&G.appendChild(z),z}function oi(m){var y=m.parentNode;y&&y.removeChild(m)}function B0(m){for(;m.firstChild;)m.removeChild(m.firstChild)}function Vd(m){var y=m.parentNode;y&&y.lastChild!==m&&y.appendChild(m)}function Id(m){var y=m.parentNode;y&&y.firstChild!==m&&y.insertBefore(m,y.firstChild)}function kJ(m,y){if(m.classList!==void 0)return m.classList.contains(y);var G=_0(m);return G.length>0&&new RegExp("(^|\\s)"+y+"(\\s|$)").test(G)}function ot(m,y){if(m.classList!==void 0)for(var G=p(y),z=0,F=G.length;z<F;z++)m.classList.add(G[z]);else if(!kJ(m,y)){var O=_0(m);FJ(m,(O?O+" ":"")+y)}}function Xi(m,y){m.classList!==void 0?m.classList.remove(y):FJ(m,h((" "+_0(m)+" ").replace(" "+y+" "," ")))}function FJ(m,y){m.className.baseVal===void 0?m.className=y:m.className.baseVal=y}function _0(m){return m.correspondingElement&&(m=m.correspondingElement),m.className.baseVal===void 0?m.className:m.className.baseVal}function Os(m,y){"opacity"in m.style?m.style.opacity=y:"filter"in m.style&&qq(m,y)}function qq(m,y){var G=!1,z="DXImageTransform.Microsoft.Alpha";try{G=m.filters.item(z)}catch{if(y===1)return}y=Math.round(y*100),G?(G.Enabled=y!==100,G.Opacity=y):m.style.filter+=" progid:"+z+"(opacity="+y+")"}function O0(m){for(var y=document.documentElement.style,G=0;G<m.length;G++)if(m[G]in y)return m[G];return!1}function Ko(m,y,G){var z=y||new $(0,0);m.style[RJ]=(Be.ie3d?"translate("+z.x+"px,"+z.y+"px)":"translate3d("+z.x+"px,"+z.y+"px,0)")+(G?" scale("+G+")":"")}function Vi(m,y){m._leaflet_pos=y,Be.any3d?Ko(m,y):(m.style.left=y.x+"px",m.style.top=y.y+"px")}function Bo(m){return m._leaflet_pos||new $(0,0)}var qb,eh,SJ;if("onselectstart"in document)qb=function(){st(window,"selectstart",Qi)},eh=function(){Qt(window,"selectstart",Qi)};else{var th=O0(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);qb=function(){if(th){var m=document.documentElement.style;SJ=m[th],m[th]="none"}},eh=function(){th&&(document.documentElement.style[th]=SJ,SJ=void 0)}}function LJ(){st(window,"dragstart",Qi)}function CJ(){Qt(window,"dragstart",Qi)}var j0,TJ;function MJ(m){for(;m.tabIndex===-1;)m=m.parentNode;m.style&&(E0(),j0=m,TJ=m.style.outlineStyle,m.style.outlineStyle="none",st(window,"keydown",E0))}function E0(){j0&&(j0.style.outlineStyle=TJ,j0=void 0,TJ=void 0,Qt(window,"keydown",E0))}function YH(m){do m=m.parentNode;while((!m.offsetWidth||!m.offsetHeight)&&m!==document.body);return m}function KJ(m){var y=m.getBoundingClientRect();return{x:y.width/m.offsetWidth||1,y:y.height/m.offsetHeight||1,boundingClientRect:y}}var eee={__proto__:null,TRANSFORM:RJ,TRANSITION:Db,TRANSITION_END:JH,get:xH,getStyle:Ab,create:Vt,remove:oi,empty:B0,toFront:Vd,toBack:Id,hasClass:kJ,addClass:ot,removeClass:Xi,setClass:FJ,getClass:_0,setOpacity:Os,testProp:O0,setTransform:Ko,setPosition:Vi,getPosition:Bo,get disableTextSelection(){return qb},get enableTextSelection(){return eh},disableImageDrag:LJ,enableImageDrag:CJ,preventOutline:MJ,restoreOutline:E0,getSizedParentNode:YH,get
8Scale:KJ};function st(m,y,G,z){if(y&&typeof y=="object")for(var F in y)_J(m,F,y[F],G);else{y=p(y);for(var O=0,q=y.length;O<q;O++)_J(m,y[O],G,z)}return this}var fc="_leaflet_events";function Qt(m,y,G,z){if(arguments.length===1)GH(m),delete m[fc];else if(y&&typeof y=="object")for(var F in y)OJ(m,F,y[F],G);else if(y=p(y),arguments.length===2)GH(m,function(ce){return I(y,ce)!==-1});else for(var O=0,q=y.length;O<q;O++)OJ(m,y[O],G,z);return this}function GH(m,y){for(var G in m[fc]){var z=G.split(/\d/)[0];(!y||y(z))&&OJ(m,z,null,null,G)}}var BJ={mouseenter:"mouseover",mouseleave:"mouseout",wheel:!("onwheel"in window)&&"mousewheel"};function _J(m,y,G,z){var F=y+a(G)+(z?"_"+a(z):"");if(m[fc]&&m[fc][F])return this;var O=function(ce){return G.call(z||m,ce||window.event)},q=O;!Be.touchNative&&Be.pointer&&y.indexOf("touch")===0?O=_q(m,y,O):Be.touch&&y==="dblclick"?O=Dq(m,O):"addEventListener"in m?y==="touchstart"||y==="touchmove"||y==="wheel"||y==="mousewheel"?m.addEventListener(BJ[y]||y,O,Be.passiveEvents?{passive:!1}:!1):y==="mouseenter"||y==="mouseleave"?(O=function(ce){ce=ce||window.event,EJ(m,ce)&&q(ce)},m.addEventListener(BJ[y],O,!1)):m.addEventListener(y,q,!1):m.attachEvent("on"+y,O),m[fc]=m[fc]||{},m[fc][F]=O}function OJ(m,y,G,z,F){F=F||y+a(G)+(z?"_"+a(z):"");var O=m[fc]&&m[fc][F];if(!O)return this;!Be.touchNative&&Be.pointer&&y.indexOf("touch")===0?Oq(m,y,O):Be.touch&&y==="dblclick"?Aq(m,O):"removeEventListener"in m?m.removeEventListener(BJ[y]||y,O,!1):m.detachEvent("on"+y,O),m[fc][F]=null}function _o(m){return m.stopPropagation?m.stopPropagation():m.originalEvent?m.originalEvent._stopped=!0:m.cancelBubble=!0,this}function jJ(m){return _J(m,"wheel",_o),this}function ih(m){return st(m,"mousedown touchstart dblclick contextmenu",_o),m._leaflet_disable_click=!0,this}function Qi(m){return m.preventDefault?m.preventDefault():m.returnValue=!1,this}function Oo(m){return Qi(m),_o(m),this}function VH(m){if(m.composedPath)return m.composedPath();for(var y=[],G=m.target;G;)y.push(G),G=G.parentNode;return y}function IH(m,y){if(!y)return new $(m.clientX,m.clientY);var G=KJ(y),z=G.boundingClientRect;return new $((m.clientX-z.left)/G.x-y.clientLeft,(m.clientY-z.top)/G.y-y.clientTop)}var tee=Be.linux&&Be.chrome?window.devicePixelRatio:Be.mac?window.devicePixelRatio*3:window.devicePixelRatio>0?2*window.devicePixelRatio:1;function gH(m){return Be.edge?m.wheelDeltaY/2:m.deltaY&&m.deltaMode===0?-m.deltaY/tee:m.deltaY&&m.deltaMode===1?-m.deltaY*20:m.deltaY&&m.deltaMode===2?-m.deltaY*60:m.deltaX||m.deltaZ?0:m.wheelDelta?(m.wheelDeltaY||m.wheelDelta)/2:m.detail&&Math.abs(m.detail)<32765?-m.detail*20:m.detail?m.detail/-32765*60:0}function EJ(m,y){var G=y.relatedTarget;if(!G)return!0;try{for(;G&&G!==m;)G=G.parentNode}catch{return!1}return G!==m}var iee={__proto__:null,on:st,off:Qt,stopPropagation:_o,disableScrollPropagation:jJ,disableClickPropagation:ih,preventDefault:Qi,stop:Oo,getPropagationPath:VH,getMousePosition:IH,getWheelDelta:gH,isExternalTarget:EJ,addListener:st,removeListener:Qt},vH=U.extend({run:function(m,y,G,z){this.stop(),this._el=m,this._inProgress=!0,this._duration=G||.25,this._easeOutPower=1/Math.max(z||.5,.2),this._startPos=Bo(m),this._offset=y.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=x(this._animate,this),this._step()},_step:function(m){var y=+new Date-this._startTime,G=this._duration*1e3;y<G?this._runFrame(this._easeOut(y/G),m):(this._runFrame(1),this._complete())},_runFrame:function(m,y){var G=this._startPos.add(this._offset.multiplyBy(m));y&&G._round(),Vi(this._el,G),this.fire("step")},_complete:function(){R(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(m){return 1-Math.pow(1-m,this._easeOutPower)}}),Wt=U.extend({options:{crs:$e,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(m,y){y=Z(this,y),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(m),this._initLayout(),this._onResize=c(this._onResize,this),this._initEvents(),y.maxBounds&&this.setMaxBounds(y.maxBounds),y.zoom!==void 0&&(this._zoom=this._limitZoom(y.zoom)),y.center&&y.zoom!==void 0&&this.setView(se(y.center),y.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=Db&&Be.any3d&&!Be.mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),st(this._proxy,JH,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)}
8,setView:function(m,y,G){if(y=y===void 0?this._zoom:this._limitZoom(y),m=this._limitCenter(se(m),y,this.options.maxBounds),G=G||{},this._stop(),this._loaded&&!G.reset&&G!==!0){G.animate!==void 0&&(G.zoom=s({animate:G.animate},G.zoom),G.pan=s({animate:G.animate,duration:G.duration},G.pan));var z=this._zoom!==y?this._tryAnimatedZoom&&this._tryAnimatedZoom(m,y,G.zoom):this._tryAnimatedPan(m,G.pan);if(z)return clearTimeout(this._sizeTimer),this}return this._resetView(m,y,G.pan&&G.pan.noMoveStart),this},setZoom:function(m,y){return this._loaded?this.setView(this.getCenter(),m,{zoom:y}):(this._zoom=m,this)},zoomIn:function(m,y){return m=m||(Be.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+m,y)},zoomOut:function(m,y){return m=m||(Be.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-m,y)},setZoomAround:function(m,y,G){var z=this.getZoomScale(y),F=this.getSize().divideBy(2),O=m instanceof $?m:this.latLngToContainerPoint(m),q=O.subtract(F).multiplyBy(1-1/z),ce=this.containerPointToLatLng(F.add(q));return this.setView(ce,y,{zoom:G})},_getBoundsCenterZoom:function(m,y){y=y||{},m=m.getBounds?m.getBounds():le(m);var G=E(y.paddingTopLeft||y.padding||[0,0]),z=E(y.paddingBottomRight||y.padding||[0,0]),F=this.getBoundsZoom(m,!1,G.add(z));if(F=typeof y.maxZoom=="number"?Math.min(y.maxZoom,F):F,F===1/0)return{center:m.getCenter(),zoom:F};
8var O=z.subtract(G).divideBy(2),q=this.project(m.getSouthWest(),F),ce=this.project(m.getNorthEast(),F),ae=this.unproject(q.add(ce).divideBy(2).add(O),F);return{center:ae,zoom:F}},fitBounds:function(m,y){if(m=le(m),!m.isValid())throw new Error("Bounds are not valid.");var G=this._getBoundsCenterZoom(m,y);return this.setView(G.center,G.zoom,y)},fitWorld:function(m){return this.fitBounds([[-90,-180],[90,180]],m)},panTo:function(m,y){return this.setView(m,this._zoom,{pan:y})},panBy:function(m,y){if(m=E(m).round(),y=y||{},!m.x&&!m.y)return this.fire("moveend");if(y.animate!==!0&&!this.getSize().contains(m))return this._resetView(this.unproject(this.project(this.getCenter()).add(m)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new vH,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),y.noMoveStart||this.fire("movestart"),y.animate!==!1){ot(this._mapPane,"leaflet-pan-anim");var G=this._getMapPanePos().subtract(m).round();this._panAnim.run(this._mapPane,G,y.duration||.25,y.easeLinearity)}else this._rawPanBy(m),this.fire("move").fire("moveend");return this},flyTo:function(m,y,G){if(G=G||{},G.animate===!1||!Be.any3d)return this.setView(m,y,G);this._stop();var z=this.project(this.getCenter()),F=this.project(m),O=this.getSize(),q=this._zoom;m=se(m),y=y===void 0?q:y;var ce=Math.max(O.x,O.y),ae=ce*this.getZoomScale(q,y),pe=F.distanceTo(z)||1,ke=1.42,De=ke*ke;function mt(Ii){var sy=Ii?-1:1,Oee=Ii?ae:ce,jee=ae*ae-ce*ce+sy*De*De*pe*pe,Eee=2*Oee*De*pe,nx=jee/Eee,aN=Math.sqrt(nx*nx+1)-nx,Pee=aN<1e-9?-18:Math.log(aN);return Pee}function vn(Ii){return(Math.exp(Ii)-Math.exp(-Ii))/2}function Ci(Ii){return(Math.exp(Ii)+Math.exp(-Ii))/2}function Es(Ii){return vn(Ii)/Ci(Ii)}var qn=mt(0);function Nd(Ii){return ce*(Ci(qn)/Ci(qn+ke*Ii))}function Mee(Ii){return ce*(Ci(qn)*Es(qn+ke*Ii)-vn(qn))/De}function Kee(Ii){return 1-Math.pow(1-Ii,1.5)}var Bee=Date.now(),cN=(mt(1)-qn)/ke,_ee=G.duration?1e3*G.duration:1e3*cN*.8;
8function rN(){var Ii=(Date.now()-Bee)/_ee,sy=Kee(Ii)*cN;Ii<=1?(this._flyToFrame=x(rN,this),this._move(this.unproject(z.add(F.subtract(z).multiplyBy(Mee(sy)/pe)),q),this.getScaleZoom(ce/Nd(sy),q),{flyTo:!0})):this._move(m,y)._moveEnd(!0)}return this._moveStart(!0,G.noMoveStart),rN.call(this),this},flyToBounds:function(m,y){var G=this._getBoundsCenterZoom(m,y);return this.flyTo(G.center,G.zoom,y)},setMaxBounds:function(m){return m=le(m),this.listens("moveend",this._panInsideMaxBounds)&&this.off("moveend",this._panInsideMaxBounds),m.isValid()?(this.options.maxBounds=m,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this)},setMinZoom:function(m){var y=this.options.minZoom;return this.options.minZoom=m,this._loaded&&y!==m&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(m):this},setMaxZoom:function(m){var y=this.options.maxZoom;return this.options.maxZoom=m,this._loaded&&y!==m&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(m):this},panInsideBounds:function(m,y){this._enforcingBounds=!0;var G=this.getCenter(),z=this._limitCenter(G,this._zoom,le(m));return G.equals(z)||this.panTo(z,y),this._enforcingBounds=!1,this},panInside:function(m,y){y=y||{};var G=E(y.paddingTopLeft||y.padding||[0,0]),z=E(y.paddingBottomRight||y.padding||[0,0]),F=this.project(this.getCenter()),O=this.project(m),q=this.getPixelBounds(),ce=ee([q.min.add(G),q.max.subtract(z)]),ae=ce.getSize();if(!ce.contains(O)){this._enforcingBounds=!0;var pe=O.subtract(ce.getCenter()),ke=ce.extend(O).getSize().subtract(ae);F.x+=pe.x<0?-ke.x:ke.x,F.y+=pe.y<0?-ke.y:ke.y,this.panTo(this.unproject(F),y),this._enforcingBounds=!1}return this},invalidateSize:function(m){if(!this._loaded)return this;m=s({animate:!1,pan:!0},m===!0?{animate:!0}:m);var y=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var G=this.getSize(),z=y.divideBy(2).round(),F=G.divideBy(2).round(),O=z.subtract(F);return!O.x&&!O.y?this:(m.animate&&m.pan?this.panBy(O):(m.pan&&this._rawPanBy(O),this.fire("move"),m.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(c(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:y,newSize:G}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(m){if(m=this._locateOptions=s({timeout:1e4,watch:!1},m),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var y=c(this._handleGeolocationResponse,this),G=c(this._handleGeolocationError,this);return m.watch?this._locationWatchId=navigator.geolocation.watchPosition(y,G,m):navigator.geolocation.getCurrentPosition(y,G,m),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(m){if(this._container._leaflet_id){var y=m.code,G=m.message||(y===1?"permission denied":y===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:y,message:"Geolocation error: "+G+"."})}},_handleGeolocationResponse:function(m){if(this._container._leaflet_id){var y=m.coords.latitude,G=m.coords.longitude,z=new ne(y,G),F=z.toBounds(m.coords.accuracy*2),O=this._locateOptions;if(O.setView){var q=this.getBoundsZoom(F);this.setView(z,O.maxZoom?Math.min(q,O.maxZoom):q)}var ce={latlng:z,bounds:F,timestamp:m.timestamp};for(var ae in m.coords)typeof m.coords[ae]=="number"&&(ce[ae]=m.coords[ae]);this.fire("locationfound",ce)}},addHandler:function(m,y){if(!y)return this;var G=this[m]=new y(this);return this._handlers.push(G),this.options[m]&&G.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),oi(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(R(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var m;for(m in this._layers)this._layers[m].remove();for(m in this._panes)oi(this._panes[m]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(m,y){var G="leaflet-pane"+(m?" leaflet-"+m.replace("Pane","")+"-pane":""),z=Vt("div",G,y||this._mapPane);return m&&(this._panes[m]=z),z},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var m=this.getPixelBounds(),y=this.unproject(m.getBottomLeft()),G=this.unproject(m.getTopRight());return new A(y,G)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZo
8om===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(m,y,G){m=le(m),G=E(G||[0,0]);var z=this.getZoom()||0,F=this.getMinZoom(),O=this.getMaxZoom(),q=m.getNorthWest(),ce=m.getSouthEast(),ae=this.getSize().subtract(G),pe=ee(this.project(ce,z),this.project(q,z)).getSize(),ke=Be.any3d?this.options.zoomSnap:1,De=ae.x/pe.x,mt=ae.y/pe.y,vn=y?Math.max(De,mt):Math.min(De,mt);return z=this.getScaleZoom(vn,z),ke&&(z=Math.round(z/(ke/100))*(ke/100),z=y?Math.ceil(z/ke)*ke:Math.floor(z/ke)*ke),Math.max(F,Math.min(O,z))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new $(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(m,y){var G=this._getTopLeftPoint(m,y);return new ie(G,G.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(m){return this.options.crs.getProjectedBounds(m===void 0?this.getZoom():m)},getPane:function(m){return typeof m=="string"?this._panes[m]:m},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(m,y){var G=this.options.crs;return y=y===void 0?this._zoom:y,G.scale(m)/G.scale(y)},getScaleZoom:function(m,y){var G=this.options.crs;y=y===void 0?this._zoom:y;var z=G.zoom(m*G.scale(y));return isNaN(z)?1/0:z},project:function(m,y){return y=y===void 0?this._zoom:y,this.options.crs.latLngToPoint(se(m),y)},unproject:function(m,y){return y=y===void 0?this._zoom:y,this.options.crs.pointToLatLng(E(m),y)},layerPointToLatLng:function(m){var y=E(m).add(this.getPixelOrigin());return this.unproject(y)},latLngToLayerPoint:function(m){var y=this.project(se(m))._round();return y._subtract(this.getPixelOrigin())},wrapLatLng:function(m){return this.options.crs.wrapLatLng(se(m))},wrapLatLngBounds:function(m){return this.options.crs.wrapLatLngBounds(le(m))},distance:function(m,y){return this.options.crs.distance(se(m),se(y))},containerPointToLayerPoint:function(m){return E(m).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(m){return E(m).add(this._getMapPanePos())},containerPointToLatLng:function(m){var y=this.containerPointToLayerPoint(E(m));return this.layerPointToLatLng(y)},latLngToContainerPoint:function(m){return this.layerPointToContainerPoint(this.latLngToLayerPoint(se(m)))},mouseEventToContainerPoint:function(m){return IH(m,this._container)},mouseEventToLayerPoint:function(m){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(m))},mouseEventToLatLng:function(m){return this.layerPointToLatLng(this.mouseEventToLayerPoint(m))},_initContainer:function(m){var y=this._container=xH(m);if(y){if(y._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");st(y,"scroll",this._onScroll,this),this._containerId=a(y)},_initLayout:function(){var m=this._container;this._fadeAnimated=this.options.fadeAnimation&&Be.any3d,ot(m,"leaflet-container"+(Be.touch?" leaflet-touch":"")+(Be.retina?" leaflet-retina":"")+(Be.ielt9?" leaflet-oldie":"")+(Be.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var y=Ab(m,"position");y!=="absolute"&&y!=="relative"&&y!=="fixed"&&y!=="sticky"&&(m.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var m=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Vi(this._mapPane,new $(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ot(m.markerPane,"leaflet-zoom-hide"),ot(m.shadowPane,"leaflet-zoom-hide"))},_resetView:function(m,y,G){Vi(this._mapPane,new $(0,0));var z=!this._loaded;this._loaded=!0,y=this._limitZoom(y),this.fire("viewprereset");var F=this._zoom!==y;this._moveStart(F,G)._move(m,y)._moveEnd(F),this.fire("viewreset"),z&&this.fire("load")},_moveStart:function(m,y){return m&&this.fire("zoomstart"),y||this.fire("movestart"),this},_move:function(m,y,G,z){y===void 0&&(y=this._zoom);var F=this._zoom!==y;return this._zoom=y,this._lastCenter=m,this._pixelOrigin=this._getNewPixelOrigin(m),z?G&&G.pinch&&this.fire("zoom",G):((F||G&&G.pinch)&&this.fire("zoom",G),this.fire("move",G)),this},_moveEnd:function(m){return m&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return R(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(m){Vi(this._mapPane,this._getMapPanePos().subtract(m))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(m){this._targets={},this._targets[a(this._container)]=this;var y=m?Qt:st;y(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&y(window,"resize",this._onResize,this),Be.any3d&&this.options.transform3DLimit&&(m?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){R(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var m=this._getMapPanePos();Math.max(Math.abs(m.x),Math.abs(m.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(m,y){for(var G=[],z,F=y==="mouseout"||y==="mouseover",O=m.target||m.srcElement,q=!1;O;){if(z=this._targets[a(O)],z&&(y==="click"||y==="preclick")&&this._draggableMoved(z)){q=!0;break}
8if(z&&z.listens(y,!0)&&(F&&!EJ(O,m)||(G.push(z),F))||O===this._container)break;O=O.parentNode}return!G.length&&!q&&!F&&this.listens(y,!0)&&(G=[this]),G},_isClickDisabled:function(m){for(;m&&m!==this._container;){if(m._leaflet_disable_click)return!0;m=m.parentNode}},_handleDOMEvent:function(m){var y=m.target||m.srcElement;if(!(!this._loaded||y._leaflet_disable_events||m.type==="click"&&this._isClickDisabled(y))){var G=m.type;G==="mousedown"&&MJ(y),this._fireDOMEvent(m,G)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(m,y,G){if(m.type==="click"){var z=s({},m);z.type="preclick",this._fireDOMEvent(z,z.type,G)}var F=this._findEventTargets(m,y);if(G){for(var O=[],q=0;q<G.length;q++)G[q].listens(y,!0)&&O.push(G[q]);F=O.concat(F)}if(F.length){y==="contextmenu"&&Qi(m);var ce=F[0],ae={originalEvent:m};if(m.type!=="keypress"&&m.type!=="keydown"&&m.type!=="keyup"){var pe=ce.getLatLng&&(!ce._radius||ce._radius<=10);ae.containerPoint=pe?this.latLngToContainerPoint(ce.getLatLng()):this.mouseEventToContainerPoint(m),ae.layerPoint=this.containerPointToLayerPoint(ae.containerPoint),ae.latlng=pe?ce.getLatLng():this.layerPointToLatLng(
8ae.layerPoint)}for(q=0;q<F.length;q++)if(F[q].fire(y,ae,!0),ae.originalEvent._stopped||F[q].options.bubblingMouseEvents===!1&&I(this._mouseEvents,y)!==-1)return}},_draggableMoved:function(m){return m=m.dragging&&m.dragging.enabled()?m:this,m.dragging&&m.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var m=0,y=this._handlers.length;m<y;m++)this._handlers[m].disable()},whenReady:function(m,y){return this._loaded?m.call(y||this,{target:this}):this.on("load",m,y),this},_getMapPanePos:function(){return Bo(this._mapPane)||new $(0,0)},_moved:function(){var m=this._getMapPanePos();return m&&!m.equals([0,0])},_getTopLeftPoint:function(m,y){var G=m&&y!==void 0?this._getNewPixelOrigin(m,y):this.getPixelOrigin();return G.subtract(this._getMapPanePos())},_getNewPixelOrigin:function(m,y){var G=this.getSize()._divideBy(2);return this.project(m,y)._subtract(G)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(m,y,G){var z=this._getNewPixelOrigin(G,y);return this.project(m,y)._subtract(z)},_latLngBoundsToNewLayerBounds:function(m,y,G){var z=this._getNewPixelOrigin(G,y);
8return ee([this.project(m.getSouthWest(),y)._subtract(z),this.project(m.getNorthWest(),y)._subtract(z),this.project(m.getSouthEast(),y)._subtract(z),this.project(m.getNorthEast(),y)._subtract(z)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(m){return this.latLngToLayerPoint(m).subtract(this._getCenterLayerPoint())},_limitCenter:function(m,y,G){if(!G)return m;var z=this.project(m,y),F=this.getSize().divideBy(2),O=new ie(z.subtract(F),z.add(F)),q=this._getBoundsOffset(O,G,y);return Math.abs(q.x)<=1&&Math.abs(q.y)<=1?m:this.unproject(z.add(q),y)},_limitOffset:function(m,y){if(!y)return m;var G=this.getPixelBounds(),z=new ie(G.min.add(m),G.max.add(m));return m.add(this._getBoundsOffset(z,y))},_getBoundsOffset:function(m,y,G){var z=ee(this.project(y.getNorthEast(),G),this.project(y.getSouthWest(),G)),F=z.min.subtract(m.min),O=z.max.subtract(m.max),q=this._rebound(F.x,-O.x),ce=this._rebound(F.y,-O.y);return new $(q,ce)},_rebound:function(m,y){return m+y>0?Math.round(m-y)/2:Math.max(0,Math.ceil(m))-Math.max(0,Math.floor(y))},_limitZoom:function(m){var y=this.getMinZoom(),G=this.getMaxZoom(),z=Be.any3d?this.options.zoomSnap:1;return z&&(m=Math.round(m/z)*z),Math.max(y,Math.min(G,m))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){Xi(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(m,y){var G=this._getCenterOffset(m)._trunc();return(y&&y.animate)!==!0&&!this.getSize().contains(G)?!1:(this.panBy(G,y),!0)},_createAnimProxy:function(){var m=this._proxy=Vt("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(m),this.on("zoomanim",function(y){var G=RJ,z=this._proxy.style[G];Ko(this._proxy,this.project(y.center,y.zoom),this.getZoomScale(y.zoom,1)),z===this._proxy.style[G]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){oi(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var m=this.getCenter(),y=this.getZoom();Ko(this._proxy,this.project(m,y),this.getZoomScale(y,1))},_catchTransitionEnd:function(m){this._animatingZoom&&m.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(m,y,G){if(this._animatingZoom)return!0;if(G=G||{},!this._zoomAnimated||G.animate===!1||this._nothingToAnimate()||Math.abs(y-this._zoom)>this.options.zoomAnimationThreshold)return!1;var z=this.getZoomScale(y),F=this._getCenterOffset(m)._divideBy(1-1/z);return G.animate!==!0&&!this.getSize().contains(F)?!1:(x(function(){this._moveStart(!0,G.noMoveStart||!1)._animateZoom(m,y,!0)},this),!0)},_animateZoom:function(m,y,G,z){this._mapPane&&(G&&(this._animatingZoom=!0,this._animateToCenter=m,this._animateToZoom=y,ot(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:m,zoom:y,noUpdate:z}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(c(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Xi(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function nee(m,y){return new Wt(m,y)}var Xl=B.extend({options:{position:"topright"},initialize:function(m){Z(this,m)},getPosition:function(){return this.options.position},setPosition:function(m){var y=this._map;return y&&y.removeControl(this),this.options.position=m,y&&y.addControl(this),this},getContainer:function(){return this._container},addTo:function(m){this.remove(),this._map=m;var y=this._container=this.onAdd(m),G=this.getPosition(),z=m._controlCorners[G];return ot(y,"leaflet-control"),G.indexOf("bottom")!==-1?z.insertBefore(y,z.firstChild):z.appendChild(y),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(oi(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(m){this._map&&m&&m.screenX>0&&m.screenY>0&&this._map.getContainer().focus()}}),nh=function(m){return new Xl(m)};Wt.include({addControl:function(m){return m.addTo(this),this},removeControl:function(m){return m.remove(),this}
vendor: 7,408 bytes, line 8
8,_initControlPos:function(){var m=this._controlCorners={},y="leaflet-",G=this._controlContainer=Vt("div",y+"control-container",this._container);function z(F,O){var q=y+F+" "+y+O;m[F+O]=Vt("div",q,G)}z("top","left"),z("top","right"),z("bottom","left"),z("bottom","right")},_clearControlPos:function(){for(var m in this._controlCorners)oi(this._controlCorners[m]);oi(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var zH=Xl.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(m,y,G,z){return G<z?-1:z<G?1:0}},initialize:function(m,y,G){Z(this,G),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,this._preventClick=!1;for(var z in m)this._addLayer(m[z],z);for(z in y)this._addLayer(y[z],z,!0)},onAdd:function(m){this._initLayout(),this._update(),this._map=m,m.on("zoomend",this._checkDisabledLayers,this);for(var y=0;y<this._layers.length;y++)this._layers[y].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(m){return Xl.prototype.addTo.call(this,m),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var m=0;m<this._layers.length;m++)this._layers[m].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(m,y){return this._addLayer(m,y),this._map?this._update():this},addOverlay:function(m,y){return this._addLayer(m,y,!0),this._map?this._update():this},removeLayer:function(m){m.off("add remove",this._onLayerChange,this);var y=this._getLayer(a(m));return y&&this._layers.splice(this._layers.indexOf(y),1),this._map?this._update():this},expand:function(){ot(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var m=this._map.getSize().y-(this._container.offsetTop+50);return m<this._section.clientHeight?(ot(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=m+"px"):Xi(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return Xi(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var m="leaflet-control-layers",y=this._container=Vt("div",m),G=this.options.collapsed;y.setAttribute("aria-haspopup",!0),ih(y),jJ(y);var z=this._section=Vt("section",m+"-list");G&&(this._map.on("click",this.collapse,this),st(y,{mouseenter:this._expandSafely,mouseleave:this.collapse},this));var F=this._layersLink=Vt("a",m+"-toggle",y);F.href="#",F.title="Layers",F.setAttribute("role","button"),st(F,{keydown:function(O){O.keyCode===13&&this._expandSafely()},click:function(O){Qi(O),this._expandSafely()}},this),G||this.expand(),this._baseLayersList=Vt("div",m+"-base",z),this._separator=Vt("div",m+"-separator",z),this._overlaysList=Vt("div",m+"-overlays",z),y.appendChild(z)},_getLayer:function(m){for(var y=0;y<this._layers.length;y++)if(this._layers[y]&&a(this._layers[y].layer)===m)return this._layers[y]},_addLayer:function(m,y,G){this._map&&m.on("add remove",this._onLayerChange,this),this._layers.push({layer:m,name:y,overlay:G}),this.options.sortLayers&&this._layers.sort(c(function(z,F){return this.options.sortFunction(z.layer,F.layer,z.name,F.name)},this)),this.options.autoZIndex&&m.setZIndex&&(this._lastZIndex++,m.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;B0(this._baseLayersList),B0(this._overlaysList),this._layerControlInputs=[];var m,y,G,z,F=0;for(G=0;G<this._layers.length;G++)z=this._layers[G],this._addItem(z),y=y||z.overlay,m=m||!z.overlay,F+=z.overlay?0:1;return this.options.hideSingleBase&&(m=m&&F>1,this._baseLayersList.style.display=m?"":"none"),this._separator.style.display=y&&m?"":"none",this},_onLayerChange:function(m){this._handlingClick||this._update();var y=this._getLayer(a(m.target)),G=y.overlay?m.type==="add"?"overlayadd":"overlayremove":m.type==="add"?"baselayerchange":null;G&&this._map.fire(G,y)},_createRadioElement:function(m,y){var G='<input type="radio" class="leaflet-control-layers-selector" name="'+m+'"'+(y?' checked="checked"':"")+"/>",z=document.createElement("div");return z.innerHTML=G,z.firstChild},_addItem:function(m){var y=document.createElement("label"),G=this._map.hasLayer(m.layer),z;m.overlay?(z=document.createElement("input"),z.type="checkbox",z.className="leaflet-control-layers-selector",z.defaultChecked=G):z=this._createRadioElement("leaflet-base-layers_"+a(this),G),this._layerControlInputs.push(z),z.layerId=a(m.layer),st(z,"click",this._onInputClick,this);var F=document.createElement("span");F.innerHTML=" "+m.name;var O=document.createElement("span");y.appendChild(O),O.appendChild(z),O.appendChild(F);var q=m.overlay?this._overlaysList:this._baseLayersList;return q.appendChild(y),this._checkDisabledLayers(),y},_onInputClick:function(){if(!this._preventClick){var m=this._layerControlInputs,y,G,z=[],F=[];this._handlingClick=!0;for(var O=m.length-1;O>=0;O--)y=m[O],G=this._getLayer(y.layerId).layer,y.checked?z.push(G):y.checked||F.push(G);for(O=0;O<F.length;O++)this._map.hasLayer(F[O])&&this._map.removeLayer(F[O]);for(O=0;O<z.length;O++)this._map.hasLayer(z[O])||this._map.addLayer(z[O]);this._handlingClick=!1,this._refocusOnMap()}},_checkDisabledLayers:function(){for(var m=this._layerControlInputs,y,G,z=this._map.getZoom(),F=m.length-1;F>=0;F--)y=m[F],G=this._getLayer(y.layerId).layer,y.disabled=G.options.minZoom!==void 0&&z<G.options.minZoom||G.options.maxZoom!==void 0&&z>G.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var m=this._section;this._preventClick=!0,st(m,"click",Qi),this.expand();var y=this;setTimeout(function(){Qt(m,"click",Qi),y._preventClick=!1})}}),see=function(m,y,G){return new zH(m,y,G)},PJ=Xl.extend({options:{position:"topleft",zoomInText:'<span aria-hidden="true">+</span>',zoomInTitle:"Zoom in",zoomOutText:'<span aria-hidden="true">−</span>',zoomOutTitle:"Zoom out"},onAdd:function(m){var y="leaflet-control-zoom",G=Vt("div",y+" leaflet-bar"),z=this.options;return this._zoomInButton=this._createButton(z.zoomInText,z.zoomInTitle,y+"-in",G,this._zoomIn),this._zoomOutButton=this._createButton(z.zoomOutText,z.zoomOutTitle,y+"-out",G,this._zoomOut),this._updateDisabled(),m.on("zoomend zoomlevelschange",this._updateDisabled,this),G},onRemove:function(m){m.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(m){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(m.shiftKey?3:1))},_zoomOut:function(m){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(m.shiftKey?3:1))},_createButton:function(m,y,G,z,F){var O=Vt("a",G,z);return O.innerHTML=m,O.href="#",O.title=y,O.setAttribute("role","button"),O.setAttribute("aria-label",y),ih(O),st(O,"click",Oo),st(O,"click",F,this),st(O,"click",this._refocusOnMap,this),O},_updateDisabled:function(){var m=this._map,y="leaflet-disabled";Xi(this._zoomInButton,y),Xi(this._zoomOutButton,y),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||m._zoom===m.getMin
8Zoom())&&(ot(this._zoomOutButton,y),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||m._zoom===m.getMaxZoom())&&(ot(this._zoomInButton,y),this._zoomInButton.setAttribute("aria-disabled","true"))}});Wt.mergeOptions({zoomControl:!0}),Wt.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new PJ,this.addControl(this.zoomControl))});var lee=function(m){return new PJ(m)},wH=Xl.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(m){var y="leaflet-control-scale",G=Vt("div",y),z=this.options;return this._addScales(z,y+"-line",G),m.on(z.updateWhenIdle?"moveend":"move",this._update,this),m.whenReady(this._update,this),G},onRemove:function(m){m.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(m,y,G){m.metric&&(this._mScale=Vt("div",y,G)),m.imperial&&(this._iScale=Vt("div",y,G))},_update:function(){var m=this._map,y=m.getSize().y/2,G=m.distance(m.containerPointToLatLng([0,y]),m.containerPointToLatLng([this.options.maxWidth,y]));this._updateScales(G)},_updateScales:function(m){this.options.metric&&m&&this._updateMetric(m),this.options.imperial&&m&&this._updateImperial(m)},_updateMetric:function(m){var y=this._getRoundNum(m),G=y<1e3?y+" m":y/1e3+" km";this._updateScale(this._mScale,G,y/m)},_updateImperial:function(m){var y=m*3.2808399,G,z,F;y>5280?(G=y/5280,z=this._getRoundNum(G),this._updateScale(this._iScale,z+" mi",z/G)):(F=this._getRoundNum(y),this._updateScale(this._iScale,F+" ft",F/y))},_updateScale:function(m,y,G){m.style.width=Math.round(this.options.maxWidth*G)+"px",m.innerHTML=y},_getRoundNum:function(m){var y=Math.pow(10,(Math.floor(m)+"").length-1),G=m/y;return G=G>=10?10:G>=5?5:G>=3?3:G>=2?2:1,y*G}}),cee=function(m){return new wH(m)},ree='<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>',UJ=Xl.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">'+(Be.inlineSvg?ree+" ":"")+"Leaflet</a>"},initialize:function(m){Z(this,m),this._attributions={}},onAdd:function(m){m.attributionControl=this,this._container=Vt("div","leaflet-control-attribution"),ih(this._container);for(var y in m._layers)m._layers[y].getAttribution&&this.addAttribution(m._layers[y].getAttribution());return this._update(),m.on("layeradd",this._addAttribution,this),this._container},onRemove:function(m){m.off("layeradd",this._addAttribution,this)},_addAttribution:function(m){m.layer.getAttribution&&(this.addAttribution(m.layer.getAttribution()),m.layer.once("remove",function(){this.removeAttribution(m.layer.getAttribution())},this))},setPrefix:function(m){return this.options.prefix=m,this._update(),this},addAttribution:function(m){return m?(this._attributions[m]||(this._attributions[m]=0),this._attributions[m]++,this._update(),this):this},removeAttribution:function(m){return m?(this._attributions[m]&&(this._attributions[m]--,this._update()),this):this},_update:function(){if(this._map){var m=[];for(var y in this._attributions)this._attributions[y]&&m.push(y);var G=[];this.options.prefix&&G.push(this.options.prefix),m.length&&G.push(m.join(", ")),this._container.innerHTML=G.join(' <span aria-hidden="true">|</span> ')}}});Wt.mergeOptions({attributionControl:!0}),Wt.addInitHook(function(){this.options.attributionControl&&new UJ().addTo(this)});var aee=function(m){return new UJ(m)};Xl.Layers=zH,Xl.Zoom=PJ,Xl.Scale=wH,Xl.Attribution=UJ,nh.layers=see,nh.zoom=lee,nh.scale=cee,nh.attribution=aee;var pc=B.extend({initialize:function(m){this._map=m},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});pc.addTo=function(m,y){return m.addHandler(y,this),this};var oee={Events:j},HH=Be.touch?"touchstart mousedown":"mousedown",Za=U.extend({options:{clickTolerance:3},initialize:function(m,y,G,z){Z(this,z),this._element=m,this._dragStartTarget=y||m,this._preventOutline=G},enable:function(){this._enabled||(st(this._dragStartTarget,HH,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Za._dragging===this&&this.finishDrag(!0),Qt(this._dragStartTarget,HH,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(m){if(this._enabled&&(this._moved=!1,!kJ(this._element,"leaflet-zoom-anim"))){if(m.touches&&m.touches.length!==1){Za._dragging===this&&this.finishDrag();return}if(!(Za._dragging||m.shiftKey||m.which!==1&&m.button!==1&&!m.touches)&&(Za._dragging=this,this._preventOutline&&MJ(this._element),LJ(),qb(),!this._moving)){this.fire("down");var y=m.touches?m.touches[0]:m,G=YH(this._element);this._startPoint=new $(y.clientX,y.clientY),this._startPos=Bo(this._element),this._parentScale=KJ(G);var z=m.type==="mousedown";st(document,z?"mousemove":"touchmove",this._onMove,this),st(document,z?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(m){if(this._enabled){if(m.touches&&m.touches.length>1){this._moved=!0;return}var y=m.touches&&m.touches.length===1?m.touches[0]:m,G=new $(y.clientX,y.clientY)._subtract(this._startPoint);!G.x&&!G.y||Math.abs(G.x)+Math.abs(G.y)<this.options.clickTolerance||(G.x/=this._parentScale.x,G.y/=this._parentScale.y,Qi(m),this._moved||(this.fire("dragstart"),this._moved=!0,ot(document.body,"leaflet-dragging"),this._lastTarget=m.target||m.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),ot(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(G),this._moving=!0,this._lastEvent=m,this._updatePosition())}},_updatePosition:function(){var m={originalEvent:this._lastEvent};this.fire("predrag",m),Vi(this._element,this._newPos),this.fire("drag",m)},_onUp:function(){this._enabled&&this.finishDrag()},finishDrag:function(m){Xi(document.body,"leaflet-dragging"),this._lastTarget&&(Xi(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),Qt(document,"mousemove touchmove",this._onMove,this),Qt(document,"mouseup touchend touchcancel",this._onUp,this),CJ(),eh();var y=this._moved&&this._moving;this._moving=!1,Za._dragging=!1,y&&this.fire("dragend",{noInertia:m,distance:this._newPos.distanceTo(this._startPos)})}});function NH(m,y,G){var z,F=[1,4,2,8],O,q,ce,ae,pe,ke,De,mt;for(O=0,ke=m.length;O<ke;O++)m[O]._code=jo(m[O],y);for(ce=0;ce<4;ce++){for(De=F[ce],z=[],O=0,ke=m.length,q=ke-1;O<ke;q=O++)ae=m[O],pe=m[q],ae._code&De?pe._code&De||(mt=P0(pe,ae,De,y,G),mt._code=jo(mt,y),z.pu
8sh(mt)):(pe._code&De&&(mt=P0(pe,ae,De,y,G),mt._code=jo(mt,y),z.push(mt)),z.push(ae));m=z}return m}function RH(m,y){var G,z,F,O,q,ce,ae,pe,ke;if(!m||m.length===0)throw new Error("latlngs not passed");js(m)||(console.warn("latlngs are not flat! Only the first ring will be used"),m=m[0]);var De=se([0,0]),mt=le(m),vn=mt.getNorthWest().distanceTo(mt.getSouthWest())*mt.getNorthEast().distanceTo(mt.getNorthWest());vn<1700&&(De=$J(m));var Ci=m.length,Es=[];for(G=0;G<Ci;G++){var qn=se(m[G]);Es.push(y.project(se([qn.lat-De.lat,qn.lng-De.lng])))}for(ce=ae=pe=0,G=0,z=Ci-1;G<Ci;z=G++)F=Es[G],O=Es[z],q=F.y*O.x-O.y*F.x,ae+=(F.x+O.x)*q,pe+=(F.y+O.y)*q,ce+=q*3;ce===0?ke=Es[0]:ke=[ae/ce,pe/ce];var Nd=y.unproject(E(ke));return se([Nd.lat+De.lat,Nd.lng+De.lng])}function $J(m){for(var y=0,G=0,z=0,F=0;F<m.length;F++){var O=se(m[F]);y+=O.lat,G+=O.lng,z++}return se([y/z,G/z])}var uee={__proto__:null,clipPolygon:NH,polygonCenter:RH,centroid:$J};function kH(m,y){if(!y||!m.length)return m.slice();var G=y*y;return m=bee(m,G),m=mee(m,G),m}function FH(m,y,G){return Math.sqrt(sh(m,y,G,!0))}function dee(m,y,G){return sh(m,y,G)}function mee(m,y){var G=m.length,z=typeof Uint8Array<"u"?Uint8Array:Array,F=new z(G);
8F[0]=F[G-1]=1,QJ(m,F,y,0,G-1);var O,q=[];for(O=0;O<G;O++)F[O]&&q.push(m[O]);return q}function QJ(m,y,G,z,F){var O=0,q,ce,ae;for(ce=z+1;ce<=F-1;ce++)ae=sh(m[ce],m[z],m[F],!0),ae>O&&(q=ce,O=ae);O>G&&(y[q]=1,QJ(m,y,G,z,q),QJ(m,y,G,q,F))}function bee(m,y){for(var G=[m[0]],z=1,F=0,O=m.length;z<O;z++)hee(m[z],m[F])>y&&(G.push(m[z]),F=z);return F<O-1&&G.push(m[O-1]),G}var SH;function LH(m,y,G,z,F){var O=z?SH:jo(m,G),q=jo(y,G),ce,ae,pe;for(SH=q;;){if(!(O|q))return[m,y];if(O&q)return!1;ce=O||q,ae=P0(m,y,ce,G,F),pe=jo(ae,G),ce===O?(m=ae,O=pe):(y=ae,q=pe)}}function P0(m,y,G,z,F){var O=y.x-m.x,q=y.y-m.y,ce=z.min,ae=z.max,pe,ke;return G&8?(pe=m.x+O*(ae.y-m.y)/q,ke=ae.y):G&4?(pe=m.x+O*(ce.y-m.y)/q,ke=ce.y):G&2?(pe=ae.x,ke=m.y+q*(ae.x-m.x)/O):G&1&&(pe=ce.x,ke=m.y+q*(ce.x-m.x)/O),new $(pe,ke,F)}function jo(m,y){var G=0;return m.x<y.min.x?G|=1:m.x>y.max.x&&(G|=2),m.y<y.min.y?G|=4:m.y>y.max.y&&(G|=8),G}function hee(m,y){var G=y.x-m.x,z=y.y-m.y;return G*G+z*z}function sh(m,y,G,z){var F=y.x,O=y.y,q=G.x-F,ce=G.y-O,ae=q*q+ce*ce,pe;return ae>0&&(pe=((m.x-F)*q+(m.y-O)*ce)/ae,pe>1?(F=G.x,O=G.y):pe>0&&(F+=q*pe,O+=ce*pe)),q=m.x-F,ce=m.y-O,z?q*q+ce*ce:new $(F,O)}function js(m){return!g(m[0])||typeof m[0][0]!="object"&&typeof m[0][0]<"u"}function CH(m){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),js(m)}function TH(m,y){var G,z,F,O,q,ce,ae,pe;if(!m||m.length===0)throw new Error("latlngs not passed");js(m)||(console.warn("latlngs are not flat! Only the first ring will be used"),m=m[0]);var ke=se([0,0]),De=le(m),mt=De.getNorthWest().distanceTo(De.getSouthWest
8())*De.getNorthEast().distanceTo(De.getNorthWest());mt<1700&&(ke=$J(m));var vn=m.length,Ci=[];for(G=0;G<vn;G++){var Es=se(m[G]);Ci.push(y.project(se([Es.lat-ke.lat,Es.lng-ke.lng])))}for(G=0,z=0;G<vn-1;G++)z+=Ci[G].distanceTo(Ci[G+1])/2;if(z===0)pe=Ci[0];else for(G=0,O=0;G<vn-1;G++)if(q=Ci[G],ce=Ci[G+1],F=q.distanceTo(ce),O+=F,O>z){ae=(O-z)/F,pe=[ce.x-ae*(ce.x-q.x),ce.y-ae*(ce.y-q.y)];break}var qn=y.unproject(E(pe));return se([qn.lat+ke.lat,qn.lng+ke.lng])}var fee={__proto__:null,simplify:kH,pointToSegmentDistance:FH,closestPointOnSegment:dee,clipSegment:LH,_getEdgeIntersection:P0,_getBitCode:jo,_sqClosestPointOnSegment:sh,isFlat:js,_flat:CH,polylineCenter:TH},DJ={project:function(m){return new $(m.lng,m.lat)},unproject:function(m){return new ne(m.y,m.x)},bounds:new ie([-180,-90],[180,90])},AJ={R:6378137,R_MINOR:6356752314245179e-9,bounds:new ie([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(m){var y=Math.PI/180,G=this.R,z=m.lat*y,F=this.R_MINOR/G,O=Math.sqrt(1-F*F),q=O*Math.sin(z),ce=Math.tan(Math.PI/4-z/2)/Math.pow((1-q)/(1+q),O/2);return z=-G*Math.log(Math.max(ce,1e-10)),new $(m.lng*y*G,z)},unproject:function(m){for(var y=180/Math.PI,G=this.R,z=this.R_MINOR/G,F=Math.sqrt(1-z*z),O=Math.exp(-m.y/G),q=Math.PI/2-2*Math.atan(O),ce=0,ae=.1,pe;ce<15&&Math.abs(ae)>1e-7;ce++)pe=F*Math.sin(q),pe=Math.pow((1-pe)/(1+pe),F/2),ae=Math.PI/2-2*Math.atan(O*pe)-q,q+=ae;return new ne(q*y,m.x*y/G)}},pee={__proto__:null,LonLat:DJ,Mercator:AJ,SphericalMercator:Ie},yee=s({},de,{code:"EPSG:3395",projection:AJ,transformation:function(){var m=.5/(Math.PI*AJ.R);return Te(m,.5,-m,.5)}()}),MH=s({},de,{code:"EPSG:4326",projection:DJ,transformation:Te(1/180,1,-1/180,.5)}),Zee=s({},oe,{projection:DJ,transformation:Te(1,0,-1,0),scale:function(m){return Math.pow(2,m)},zoom:function(m){return Math.log(m)/Math.LN2},distance:function(m,y){var G=y.lng-m.lng,z=y.lat-m.lat;return Math.sqrt(G*G+z*z)},infinite:!0});oe.Earth=de,oe.EPSG3395=yee,oe.EPSG3857=$e,oe.EPSG900913=Ve,oe.EPSG4326=MH,oe.Simple=Zee;var Jl=U.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(m){return m.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(m){return m&&m.removeLayer(this),this},getPane:function(m){return this._map.getPane(m?this.options[m]||m:this.options.pane)},addInteractiveTarget:function(m){return this._map._targets[a(m)]=this,this},removeInteractiveTarget:function(m){return delete this._map._targets[a(m)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(m){var y=m.target;if(y.hasLayer(this)){if(this._map=y,this._zoomAnimated=y._zoomAnimated,this.getEvents){var G=this.getEvents();y.on(G,this),this.once("remove",function(){y.off(G,this)},this)}this.onAdd(y),this.fire("add"),y.fire("layeradd",{layer:this})}}});Wt.include({addLayer:function(m){if(!m._layerAdd)throw new Error("The provided object is not a Layer.");var y=a(m);return this._layers[y]?this:(this._layers[y]=m,m._mapToAdd=this,m.beforeAdd&&m.beforeAdd(this),this.whenReady(m._layerAdd,m),this)},removeLayer:function(m){var y=a(m);return this._layers[y]?(this._loaded&&m.onRemove(this),delete this._layers[y],this._loaded&&(this.fire("layerremove",{layer:m}),m.fire("remove")),m._map=m._mapToAdd=null,this):this},hasLayer:function(m){return a(m)in this._layers},eachLayer:function(m,y){for(var G in this._layers)m.call(y,this._layers[G]);return this},_addLayers:function(m){m=m?g(m)?m:[m]:[];for(var y=0,G=m.length;y<G;y++)this.addLayer(m[y])},_addZoomLimit:function(m){(!isNaN(m.options.maxZoom)||!isNaN(m.options.minZoom))&&(this._zoomBoundLayers[a(m)]=m,this._updateZoomLevels())},_removeZoomLimit:function(m){var y=a(m);this._zoomBoundLayers[y]&&(delete this._zoomBoundLayers[y],this._updateZoomLevels())},_updateZoomLevels:function(){var m=1/0,y=-1/0,G=this._getZoomSpan();for(var z in this._zoomBoundLayers){var F=this._zoomBoundLayers[z].options;m=F.minZoom===void 0?m:Math.min(m,F.minZoom),y=F.maxZoom===void 0?y:Math.max(y,F.maxZoom)}
8this._layersMaxZoom=y===-1/0?void 0:y,this._layersMinZoom=m===1/0?void 0:m,G!==this._getZoomSpan()&&this.fire("zoomlevelschange"),this.options.maxZoom===void 0&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var gd=Jl.extend({initialize:function(m,y){Z(this,y),this._layers={};var G,z;if(m)for(G=0,z=m.length;G<z;G++)this.addLayer(m[G])},addLayer:function(m){var y=this.getLayerId(m);return this._layers[y]=m,this._map&&this._map.addLayer(m),this},removeLayer:function(m){var y=m in this._layers?m:this.getLayerId(m);return this._map&&this._layers[y]&&this._map.removeLayer(this._layers[y]),delete this._layers[y],this},hasLayer:function(m){var y=typeof m=="number"?m:this.getLayerId(m);return y in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(m){var y=Array.prototype.slice.call(arguments,1),G,z;for(G in this._layers)z=this._layers[G],z[m]&&z[m].apply(z,y);return this},onAdd:function(m){this.eachLayer(m.addLayer,m)},onRemove:function(m){this.eachLayer(m.removeLayer,m)},eachLayer:function(m,y){for(var G in this._layers)m.call(y,this._layers[G]);return this},getLayer:function(m){return this._layers[m]},getLayers:function(){var m=[];return this.eachLayer(m.push,m),m},setZIndex:function(m){return this.invoke("setZIndex",m)},getLayerId:function(m){return a(m)}}),Wee=function(m,y){return new gd(m,y)},yr=gd.extend({addLayer:function(m){return this.hasLayer(m)?this:(m.addEventParent(this),gd.prototype.addLayer.call(this,m),this.fire("layeradd",{layer:m}))},removeLayer:function(m){return this.hasLayer(m)?(m in this._layers&&(m=this._layers[m]),m.removeEventParent(this),gd.prototype.removeLayer.call(this,m),this.fire("layerremove",{layer:m})):this},setStyle:function(m){return this.invoke("setStyle",m)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var m=new A;for(var y in this._layers){var G=this._layers[y];m.extend(G.getBounds?G.getBounds():G.getLatLng())}return m}}),Xee=function(m,y){return new yr(m,y)},vd=B.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0],crossOrigin:!1},initialize:function(m){Z(this,m)},createIcon:function(m){return this._createIcon("icon",m)},createShadow:function(m){return this._createIcon("shadow",m)},_createIcon:function(m,y){var G=this._getIconUrl(m);if(!G){if(m==="icon")throw new Error("iconUrl not set in Icon options (see the docs).");return null}var z=this._createImg(G,y&&y.tagName==="IMG"?y:null);return this._setIconStyles(z,m),(this.options.crossOrigin||this.options.crossOrigin==="")&&(z.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),z},_setIconStyles:function(m,y){var G=this.options,z=G[y+"Size"];typeof z=="number"&&(z=[z,z]);var F=E(z),O=E(y==="shadow"&&G.shadowAnchor||G.iconAnchor||F&&F.divideBy(2,!0));m.className="leaflet-marker-"+y+" "+(G.className||""),O&&(m.style.marginLeft=-O.x+"px",m.style.marginTop=-O.y+"px"),F&&(m.style.width=F.x+"px",m.style.height=F.y+"px")},_createImg:function(m,y){return y=y||document.createElement("img"),y.src=m,y},_getIconUrl:function(m){return Be.retina&&this.options[m+"RetinaUrl"]||this.options[m+"Url"]}});function Jee(m){return new vd(m)}var lh=vd.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(m){return typeof lh.imagePath!="string"&&(lh.imagePath=this._detectIconPath()),(this.options.imagePath||lh.imagePath)+vd.prototype._getIconUrl.call(this,m)},_stripUrl:function(m){var y=function(G,z,F){var O=z.exec(G);return O&&O[F]};return m=y(m,/^url\((['"])?(.+)\1\)$/,2),m&&y(m,/^(.*)marker-icon\.png$/,1)},_detectIconPath:function(){var m=Vt("div","leaflet-default-icon-path",document.body),y=Ab(m,"background-image")||Ab(m,"backgroundImage");if(document.body.removeChild(m),y=this._stripUrl(y),y)return y;var G=document.querySelector('link[href$="leaflet.css"]');return G?G.href.substring(0,G.href.length-11-1):""}}),KH=pc.extend({initialize:function(m){this._marker=m},addHooks:function(){var m=this._marker._icon;this._draggable||(this._draggable=new Za(m,m,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),ot(m,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&Xi(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(m){var y=this._marker,G=y._map,z=this._marker.options.autoPanSpeed,F=this._marker.options.autoPanPadding,O=Bo(y._icon),q=G.getPixelBounds(),ce=G.getPixelOrigin(),ae=ee(q.min._subtract(ce).add(F),q.max._subtract(ce).subtract(F));if(!ae.contains(O)){var pe=E((Math.max(ae.max.x,O.x)-ae.max.x)/(q.max.x-ae.max.x)-(Math.min(ae.min.x,O.x)-ae.min.x)/(q.min.x-ae.min.x),(Math.max(ae.max.y,O.y)-ae.max.y)/(q.max.y-ae.max.y)-(Math.min(ae.min.y,O.y)-ae.min.y)/(q.min.y-ae.min.y)).multiplyBy(z);G.panBy(pe,{animate:!1}),this._draggable._newPos._add(pe),this._draggable._startPos._add(pe),Vi(y._icon,this._draggable._newPos),this._onDrag(m),this._panRequest=x(this._adjustPan.bind(this,m))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire("movestart").fire("dragstart")},_onPreDrag:function(m){this._marker.options.autoPan&&(R(this._panRequest),this._panRequest=x(this._adjustPan.bind(this,m)))},_onDrag:function(m){var y=this._marker,G=y._shadow,z=Bo(y._icon),F=y._map.layerPointToLatLng(z);G&&Vi(G,z),y._latlng=F,m.latlng=F,m.oldLatLng=this._oldLatLng,y.fire("move",m).fire("drag",m)},_onDragEnd:function(m){R(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",m)}}),U0=Jl.extend({options:{icon:new lh,interactive:!0,keyboard:!0,title:"",alt:"Marker",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,autoPanOnFocus:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(m,y){Z(this,y),this._latlng=se(m)},onAdd:function(m){this._zoomAnimated=this._zoomAnimated&&m.options.markerZoomAnimation,this._zoomAnimated&&m.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(m){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&m.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(m){var y=this._latlng;return this._latlng=se(m),this.update(),this.fire("move",{oldLatLng:y,latlng:this._latlng})},setZIndexOffset:function(m){return this.options.zIndexOffset=m,this.update()},getIcon:function(){return this.options.icon},setIcon:function(m){return this.options.icon=m,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var m=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(m)}return this},_initIcon:function(){var m=this.options,y="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),G=m.icon.createIcon(this._icon),z=!1;G!==this._icon&&(this._icon&&this._removeIcon(),z=!0,m.title&&(G.title=m.title),G.tagName==="IMG"&&(G.alt=m.alt||"")),ot(G,y),m.keyboard&&(G.tabIndex="0",G.setAttribute("role","button")),this._icon=G,m.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&st(G,"focus",this._panOnFocus,this);
vendor: 5,906 bytes, line 8
8var F=m.icon.createShadow(this._shadow),O=!1;F!==this._shadow&&(this._removeShadow(),O=!0),F&&(ot(F,y),F.alt=""),this._shadow=F,m.opacity<1&&this._updateOpacity(),z&&this.getPane().appendChild(this._icon),this._initInteraction(),F&&O&&this.getPane(m.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&Qt(this._icon,"focus",this._panOnFocus,this),oi(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&oi(this._shadow),this._shadow=null},_setPos:function(m){this._icon&&Vi(this._icon,m),this._shadow&&Vi(this._shadow,m),this._zIndex=m.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(m){this._icon&&(this._icon.style.zIndex=this._zIndex+m)},_animateZoom:function(m){var y=this._map._latLngToNewLayerPoint(this._latlng,m.zoom,m.center).round();this._setPos(y)},_initInteraction:function(){if(this.options.interactive&&(ot(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),KH)){var m=this.options.draggable;this.dragging&&(m=this.dragging.enabled(),this.dragging.disable()),this.dragging=new KH(this),m&&this.dragging.enable()}},setOpacity:function(m){return this.options.opacity=m,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var m=this.options.opacity;this._icon&&Os(this._icon,m),this._shadow&&Os(this._shadow,m)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_panOnFocus:function(){var m=this._map;if(m){var y=this.options.icon.options,G=y.iconSize?E(y.iconSize):E(0,0),z=y.iconAnchor?E(y.iconAnchor):E(0,0);m.panInside(this._latlng,{paddingTopLeft:z,paddingBottomRight:G.subtract(z)})}},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function xee(m,y){return new U0(m,y)}var Wa=Jl.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(m){this._renderer=m.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(m){return Z(this,m),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&m&&Object.prototype.hasOwnProperty.call(m,"weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+(this._renderer.options.tolerance||0)}}),$0=Wa.extend({options:{fill:!0,radius:10},initialize:function(m,y){Z(this,y),this._latlng=se(m),this._radius=this.options.radius},setLatLng:function(m){var y=this._latlng;return this._latlng=se(m),this.redraw(),this.fire("move",{oldLatLng:y,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(m){return this.options.radius=this._radius=m,this.redraw()},getRadius:function(){return this._radius},setStyle:function(m){var y=m&&m.radius||this._radius;return Wa.prototype.setStyle.call(this,m),this.setRadius(y),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var m=this._radius,y=this._radiusY||m,G=this._clickTolerance(),z=[m+G,y+G];this._pxBounds=new ie(this._point.subtract(z),this._point.add(z))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(m){return m.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function Yee(m,y){return new $0(m,y)}var qJ=$0.extend({initialize:function(m,y,G){if(typeof y=="number"&&(y=s({},G,{radius:y})),Z(this,y),this._latlng=se(m),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(m){return this._mRadius=m,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var m=[this._radius,this._radiusY||this._radius];return new A(this._map.layerPointToLatLng(this._point.subtract(m)),this._map.layerPointToLatLng(this._point.add(m)))},setStyle:Wa.prototype.setStyle,_project:function(){var m=this._latlng.lng,y=this._latlng.lat,G=this._map,z=G.options.crs;if(z.distance===de.distance){var F=Math.PI/180,O=this._mRadius/de.R/F,q=G.project([y+O,m]),ce=G.project([y-O,m]),ae=q.add(ce).divideBy(2),pe=G.unproject(ae).lat,ke=Math.acos((Math.cos(O*F)-Math.sin(y*F)*Math.sin(pe*F))/(Math.cos(y*F)*Math.cos(pe*F)))/F;(isNaN(ke)||ke===0)&&(ke=O/Math.cos(Math.PI/180*y)),this._point=ae.subtract(G.getPixelOrigin()),this._radius=isNaN(ke)?0:ae.x-G.project([pe,m-ke]).x,this._radiusY=ae.y-q.y}else{var De=z.unproject(z.project(this._latlng).subtract([this._mRadius,0]));this._point=G.latLngToLayerPoint(this._latlng),this._radius=this._point.x-G.latLngToLayerPoint(De).x}this._updateBounds()}});function Gee(m,y,G){return new qJ(m,y,G)}var Zr=Wa.extend({options:{smoothFactor:1,noClip:!1},initialize:function(m,y){Z(this,y),this._setLatLngs(m)},getLatLngs:function(){return this._latlngs},setLatLngs:function(m){return this._setLatLngs(m),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(m){for(var y=1/0,G=null,z=sh,F,O,q=0,ce=this._parts.length;q<ce;
8q++)for(var ae=this._parts[q],pe=1,ke=ae.length;pe<ke;pe++){F=ae[pe-1],O=ae[pe];var De=z(m,F,O,!0);De<y&&(y=De,G=z(m,F,O))}return G&&(G.distance=Math.sqrt(y)),G},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return TH(this._defaultShape(),this._map.options.crs)},getBounds:function(){return this._bounds},addLatLng:function(m,y){return y=y||this._defaultShape(),m=se(m),y.push(m),this._bounds.extend(m),this.redraw()},_setLatLngs:function(m){this._bounds=new A,this._latlngs=this._convertLatLngs(m)},_defaultShape:function(){return js(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(m){for(var y=[],G=js(m),z=0,F=m.length;z<F;z++)G?(y[z]=se(m[z]),this._bounds.extend(y[z])):y[z]=this._convertLatLngs(m[z]);return y},_project:function(){var m=new ie;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,m),this._bounds.isValid()&&m.isValid()&&(this._rawPxBounds=m,this._updateBounds())},_updateBounds:function(){var m=this._clickTolerance(),y=new $(m,m);this._rawPxBounds&&(this._pxBounds=new ie([this._rawPxBounds.min.subtract(y),this._rawPxBounds.max.add(y)]))},_projectLatlngs:function(m,y,G){var z=m[0]instanceof ne,F=m.length,O,q;if(z){for(q=[],O=0;O<F;O++)q[O]=this._map.latLngToLayerPoint(m[O]),G.extend(q[O]);y.push(q)}else for(O=0;O<F;O++)this._projectLatlngs(m[O],y,G)},_clipPoints:function(){var m=this._renderer._bounds;if(this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(m))){if(this.options.noClip){this._parts=this._rings;return}var y=this._parts,G,z,F,O,q,ce,ae;for(G=0,F=0,O=this._rings.length;G<O;G++)for(ae=this._rings[G],z=0,q=ae.length;z<q-1;z++)ce=LH(ae[z],ae[z+1],m,z,!0),ce&&(y[F]=y[F]||[],y[F].push(ce[0]),(ce[1]!==ae[z+1]||z===q-2)&&(y[F].push(ce[1]),F++))}},_simplifyPoints:function(){for(var m=this._parts,y=this.options.smoothFactor,G=0,z=m.length;G<z;G++)m[G]=kH(m[G],y)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(m,y){var G,z,F,O,q,ce,ae=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(m))return!1;for(G=0,O=this._parts.length;G<O;G++)for(ce=this._parts[G],z=0,q=ce.length,F=q-1;z<q;F=z++)if(!(!y&&z===0)&&FH(m,ce[F],ce[z])<=ae)return!0;return!1}});function Vee(m,y){return new Zr(m,y)}Zr._flat=CH;var zd=Zr.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
8,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");return RH(this._defaultShape(),this._map.options.crs)},_convertLatLngs:function(m){var y=Zr.prototype._convertLatLngs.call(this,m),G=y.length;return G>=2&&y[0]instanceof ne&&y[0].equals(y[G-1])&&y.pop(),y},_setLatLngs:function(m){Zr.prototype._setLatLngs.call(this,m),js(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return js(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var m=this._renderer._bounds,y=this.options.weight,G=new $(y,y);if(m=new ie(m.min.subtract(G),m.max.add(G)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(m))){if(this.options.noClip){this._parts=this._rings;return}for(var z=0,F=this._rings.length,O;z<F;z++)O=NH(this._rings[z],m,!0),O.length&&this._parts.push(O)}},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(m){var y=!1,G,z,F,O,q,ce,ae,pe;if(!this._pxBounds||!this._pxBounds.contains(m))return!1;for(O=0,ae=this._parts.length;O<ae;O++)for(G=this._parts[O],q=0,pe=G.length,ce=pe-1;q<pe;ce=q++)z=G[q],F=G[ce],z.y>m.y!=F.y>m.y&&m.x<(F.x-z.x)*(m.y-z.y)/(F.y-z.y)+z.x&&(y=!y);return y||Zr.prototype._containsPoint.call(this,m,!0)}});function Iee(m,y){return new zd(m,y)}var Wr=yr.extend({initialize:function(m,y){Z(this,y),this._layers={},m&&this.addData(m)},addData:function(m){var y=g(m)?m:m.features,G,z,F;if(y){for(G=0,z=y.length;G<z;G++)F=y[G],(F.geometries||F.geometry||F.features||F.coordinates)&&this.addData(F);return this}var O=this.options;if(O.filter&&!O.filter(m))return this;var q=Q0(m,O);return q?(q.feature=q0(m),q.defaultOptions=q.options,this.resetStyle(q),O.onEachFeature&&O.onEachFeature(m,q),this.addLayer(q)):this},resetStyle:function(m){return m===void 0?this.eachLayer(this.resetStyle,this):(m.options=s({},m.defaultOptions),this._setLayerStyle(m,this.options.style),this)},setStyle:function(m){return this.eachLayer(function(y){this._setLayerStyle(y,m)},this)},_setLayerStyle:function(m,y){m.setStyle&&(typeof y=="function"&&(y=y(m.feature)),m.setStyle(y))}});function Q0(m,y){var G=m.type==="Feature"?m.geometry:m,z=G?G.coordinates:null,F=[],O=y&&y.pointToLayer,q=y&&y.coordsToLatLng||ex,ce,ae,pe,ke;if(!z&&!G)return null;switch(G.type){case"Point":return ce=q(z),BH(O,m,ce,y);case"MultiPoint":for(pe=0,ke=z.length;pe<ke;pe++)ce=q(z[pe]),F.push(BH(O,m,ce,y));return new yr(F);case"LineString":case"MultiLineString":return ae=D0(z,G.type==="LineString"?0:1,q),new Zr(ae,y);case"Polygon":case"MultiPolygon":return ae=D0(z,G.type==="Polygon"?1:2,q),new zd(ae,y);case"GeometryCollection":for(pe=0,ke=G.geometries.length;pe<ke;pe++){var De=Q0({geometry:G.geometries[pe],type:"Feature",properties:m.properties},y);De&&F.push(De)}return new yr(F);case"FeatureCollection":for(pe=0,ke=G.features.length;pe<ke;pe++){var mt=Q0(G.features[pe],y);mt&&F.push(mt)}return new yr(F);default:throw new Error("Invalid GeoJSON object.")}}function BH(m,y,G,z){return m?m(y,G):new U0(G,z&&z.markersInheritOptions&&z)}function ex(m){return new ne(m[1],m[0],m[2])}function D0(m,y,G){for(var z=[],F=0,O=m.length,q;F<O;F++)q=y?D0(m[F],y-1,G):(G||ex)(m[F]),z.push(q);return z}function tx(m,y){return m=se(m),m.alt!==void 0?[b(m.lng,y),b(m.lat,y),b(m.alt,y)]:[b(m.lng,y),b(m.lat,y)]}function A0(m,y,G,z){for(var F=[],O=0,q=m.length;O<q;O++)F.push(y?A0(m[O],js(m[O])?0:y-1,G,z):tx(m[O],z));return!y&&G&&F.length>0&&F.push(F[0].slice()),F}function wd(m,y){return m.feature?s({},m.feature,{geometry:y}):q0(y)}function q0(m){return m.type==="Feature"||m.type==="FeatureCollection"?m:{type:"Feature",properties:{},geometry:m}}var ix={toGeoJSON:function(m){return wd(this,{type:"Point",coordinates:tx(this.getLatLng(),m)})}};U0.include(ix),qJ.include(ix),$0.include(ix),Zr.include({toGeoJSON:function(m){var y=!js(this._latlngs),G=A0(this._latlngs,y?1:0,!1,m);return wd(this,{type:(y?"Multi":"")+"LineString",coordinates:G})}}),zd.include({toGeoJSON:function(m){var y=!js(this._latlngs),G=y&&!js(this._latlngs[0]),z=A0(this._latlngs,G?2:y?1:0,!0,m);return y||(z=[z]),wd(this,{type:(G?"Multi":"")+"Polygon",coordinates:z})}}),gd.include({toMultiPoint:function(m){var y=[];return this.eachLayer(function(G){y.push(G.toGeoJSON(m).geometry.coordinates)}),wd(this,{type:"MultiPoint",coordinates:y})},toGeoJSON:function(m){var y=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(y==="MultiPoint")return this.toMultiPoint(m);var G=y==="GeometryCollection",z=[];return this.eachLayer(function(F){if(F.toGeoJSON){var O=F.toGeoJSON(m);if(G)z.push(O.geometry);else{var q=q0(O);q.type==="FeatureCollection"?z.push.apply(z,q.features):z.push(q)}}}),G?wd(this,{geometries:z,type:"GeometryCollection"}):{type:"FeatureCollection",features:z}}});function _H(m,y){return new Wr(m,y)}var gee=_H,ey=Jl.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(m,y,G){this._url=m,this._bounds=le(y),Z(this,G)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ot(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){oi(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(m){return this.options.opacity=m,this._image&&this._updateOpacity(),this},setStyle:function(m){return m.opacity&&this.setOpacity(m.opacity),this},bringToFront:function(){return this._map&&Vd(this._image),this},bringToBack:function(){return this._map&&Id(this._image),this},setUrl:function(m){return this._url=m,this._image&&(this._image.src=m),this},setBounds:function(m){return this._bounds=le(m),this._map&&this._reset(),this},getEvents:function(){var m={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(m.zoomanim=this._animateZoom),m},setZIndex:function(m){return this.options.zIndex=m,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var m=this._url.tagName==="IMG",y=this._image=m?this._url:Vt("img");if(ot(y,"leaflet-image-layer"),this._zoomAnimated&&ot(y,"leaflet-zoom-animated"),this.options.className&&ot(y,this.options.className),y.onselectstart=d,y.onmousemove=d,y.onload=c(this.fire,this,"load"),y.onerror=c(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(y.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),m){this._url=y.src;return}y.src=this._url,y.alt=this.options.alt},_animateZoom:function(m){var y=this._map.getZoomScale(m.zoom),G=this._map._latLngBoundsToNewLayerBounds(this._bounds,m.zoom,m.center).min;Ko(this._image,G,y)},_reset:function(){var m=this._image,y=new ie(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),G=y.getSize();Vi(m,y.min),m.style.width=G.x+"px",m.style.height=G.y+"px"},_updateOpacity:function(){Os(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var m=this.options.errorOverlayUrl;m&&this._url!==m&&(this._url=m,this._image.src=m)},getCenter:function(){return this._bounds.getCenter()}}),vee=function(m,y,G){return new ey(m,y,G)},OH=ey.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInl
8ine:!0},_initImage:function(){var m=this._url.tagName==="VIDEO",y=this._image=m?this._url:Vt("video");if(ot(y,"leaflet-image-layer"),this._zoomAnimated&&ot(y,"leaflet-zoom-animated"),this.options.className&&ot(y,this.options.className),y.onselectstart=d,y.onmousemove=d,y.onloadeddata=c(this.fire,this,"load"),m){for(var G=y.getElementsByTagName("source"),z=[],F=0;F<G.length;F++)z.push(G[F].src);this._url=G.length>0?z:[y.src];return}g(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(y.style,"objectFit")&&(y.style.objectFit="fill"),y.autoplay=!!this.options.autoplay,y.loop=!!this.options.loop,y.muted=!!this.options.muted,y.playsInline=!!this.options.playsInline;for(var O=0;O<this._url.length;O++){var q=Vt("source");q.src=this._url[O],y.appendChild(q)}}});function zee(m,y,G){return new OH(m,y,G)}var jH=ey.extend({_initImage:function(){var m=this._image=this._url;ot(m,"leaflet-image-layer"),this._zoomAnimated&&ot(m,"leaflet-zoom-animated"),this.options.className&&ot(m,this.options.className),m.onselectstart=d,m.onmousemove=d}});function wee(m,y,G){return new jH(m,y,G)}var yc=Jl.extend({options:{interactive:!1,offset:[0,0],className:"",pane:void 0,content:""},initialize:function(m,y){m&&(m instanceof ne||g(m))?(this._latlng=se(m),Z(this,y)):(Z(this,m),this._source=y),this.options.content&&(this._content=this.options.content)},openOn:function(m){return m=arguments.length?m:this._source._map,m.hasLayer(this)||m.addLayer(this),this},close:function(){return this._map&&this._map.removeLayer(this),this},toggle:function(m){return this._map?this.close():(arguments.length?this._source=m:m=this._source,this._prepareOpen(),this.openOn(m._map)),this},onAdd:function(m){this._zoomAnimated=m._zoomAnimated,this._container||this._initLayout(),m._fadeAnimated&&Os(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),m._fadeAnimated&&Os(this._container,1),this.bringToFront(),this.options.interactive&&(ot(this._container,"leaflet-interactive"),this.addInteractiveTarget(this._container))},onRemove:function(m){m._fadeAnimated?(Os(this._container,0),this._removeTimeout=setTimeout(c(oi,void 0,this._container),200)):oi(this._container),this.options.interactive&&(Xi(this._container,"leaflet-interactive"),this.removeInteractiveTarget(this._container))},getLatLng:function(){return this._latlng},setLatLng:function(m){return this._latlng=se(m),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(m){return this._content=m,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var m={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(m.zoomanim=this._animateZoom),m},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&Vd(this._container),this},bringToBack:function(){return this._map&&Id(this._container),this},_prepareOpen:function(m){var y=this._source;if(!y._map)return!1;if(y instanceof yr){y=null;var G=this._source._layers;for(var z in G)if(G[z]._map){y=G[z];break}if(!y)return!1;this._source=y}if(!m)if(y.getCenter)m=y.getCenter();else if(y.getLatLng)m=y.getLatLng();else if(y.getBounds)m=y.getBounds().getCenter();else throw new Error("Unable to get source layer LatLng.");return this.setLatLng(m),this._map&&this.update(),!0},_updateContent:function(){if(this._content){var m=this._contentNode,y=typeof this._content=="function"?this._content(this._source||this):this._content;if(typeof y=="string")m.innerHTML=y;else{for(;m.hasChildNodes();)m.removeChild(m.firstChild);m.appendChild(y)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var m=this._map.latLngToLayerPoint(this._latlng),y=E(this.options.offset),G=this._getAnchor();this._zoomAnimated?Vi(this._container,m.add(G)):y=y.add(m).add(G);var z=this._containerBottom=-y.y,F=this._containerLeft=-Math.round(this._containerWidth/2)+y.x;this._container.style.bottom=z+"px",this._container.style.left=F+"px"}},_getAnchor:function(){return[0,0]}});Wt.include({_initOverlay:function(m,y,G,z){var F=y;return F instanceof m||(F=new m(z).setContent(y)),G&&F.setLatLng(G),F}}),Jl.include({_initOverlay:function(m,y,G,z){var F=G;return F instanceof m?(Z(F,z),F._source=this):(F=y&&!z?y:new m(z,this),F.setContent(G)),F}});var ty=yc.extend({options:{pane:"popupPane",offset:[0,7],maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(m){return m=arguments.length?m:this._source._map,!m.hasLayer(this)&&m._popup&&m._popup.options.autoClose&&m.removeLayer(m._popup),m._popup=this,yc.prototype.openOn.call(this,m)}
8,onAdd:function(m){yc.prototype.onAdd.call(this,m),m.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Wa||this._source.on("preclick",_o))},onRemove:function(m){yc.prototype.onRemove.call(this,m),m.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Wa||this._source.off("preclick",_o))},getEvents:function(){var m=yc.prototype.getEvents.call(this);return(this.options.closeOnClick!==void 0?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(m.preclick=this.close),this.options.keepInView&&(m.moveend=this._adjustPan),m},_initLayout:function(){var m="leaflet-popup",y=this._container=Vt("div",m+" "+(this.options.className||"")+" leaflet-zoom-animated"),G=this._wrapper=Vt("div",m+"-content-wrapper",y);if(this._contentNode=Vt("div",m+"-content",G),ih(y),jJ(this._contentNode),st(y,"contextmenu",_o),this._tipContainer=Vt("div",m+"-tip-container",y),this._tip=Vt("div",m+"-tip",this._tipContainer),this.options.closeButton){var z=this._closeButton=Vt("a",m+"-close-button",y);z.setAttribute("role","button"),z.setAttribute("aria-label","Close popup"),z.href="#close",z.innerHTML='<span aria-hidden="true">×</span>',st(z,"click",function(F){Qi(F),this.close()},this)}},_updateLayout:function(){var m=this._contentNode,y=m.style;y.width="",y.whiteSpace="nowrap";var G=m.offsetWidth;G=Math.min(G,this.options.maxWidth),G=Math.max(G,this.options.minWidth),y.width=G+1+"px",y.whiteSpace="",y.height="";var z=m.offsetHeight,F=this.options.maxHeight,O="leaflet-popup-scrolled";F&&z>F?(y.height=F+"px",ot(m,O)):Xi(m,O),this._containerWidth=this._container.offsetWidth},_animateZoom:function(m){var y=this._map._latLngToNewLayerPoint(this._latlng,m.zoom,m.center),G=this._getAnchor();Vi(this._container,y.add(G))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var m=this._map,y=parseInt(Ab(this._container,"marginBottom"),10)||0,G=this._container.offsetHeight+y,z=this._containerWidth,F=new $(this._containerLeft,-G-this._containerBottom);F._add(Bo(this._container));var O=m.layerPointToContainerPoint(F),q=E(this.options.autoPanPadding),ce=E(this.options.autoPanPaddingTopLeft||q),ae=E(this.options.autoPanPaddingBottomRight||q),pe=m.getSize(),ke=0,De=0;O.x+z+ae.x>pe.x&&(ke=O.x+z-pe.x+ae.x),O.x-ke-ce.x<0&&(ke=O.x-ce.x),O.y+G+ae.y>pe.y&&(De=O.y+G-pe.y+ae.y),O.y-De-ce.y<0&&(De=O.y-ce.y),(ke||De)&&(this.options.keepInView&&(this._autopanning=!0),m.fire("autopanstart").panBy([ke,De]))}},_getAnchor:function(){return E(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Hee=function(m,y){return new ty(m,y)};Wt.mergeOptions({closePopupOnClick:!0}),Wt.include({openPopup:function(m,y,G){return this._initOverlay(ty,m,y,G).openOn(this),this},closePopup:function(m){return m=arguments.length?m:this._popup,m&&m.close(),this}}),Jl.include({bindPopup:function(m,y){return this._popup=this._initOverlay(ty,this._popup,m,y),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(m){return this._popup&&(this instanceof yr||(this._popup._source=this),this._popup._prepareOpen(m||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(m){return this._popup&&this._popup.setContent(m),this},getPopup:function(){return this._popup},_openPopup:function(m){if(!(!this._popup||!this._map)){Oo(m);var y=m.layer||m.target;if(this._popup._source===y&&!(y instanceof Wa)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(m.latlng);return}this._popup._source=y,this.openPopup(m.latlng)}
8},_movePopup:function(m){this._popup.setLatLng(m.latlng)},_onKeyPress:function(m){m.originalEvent.keyCode===13&&this._openPopup(m)}});var iy=yc.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(m){yc.prototype.onAdd.call(this,m),this.setOpacity(this.options.opacity),m.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(m){yc.prototype.onRemove.call(this,m),m.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var m=yc.prototype.getEvents.call(this);return this.options.permanent||(m.preclick=this.close),m},_initLayout:function(){var m="leaflet-tooltip",y=m+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=Vt("div",y),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+a(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(m){var y,G,z=this._map,F=this._container,O=z.latLngToContainerPoint(z.getCenter()),q=z.layerPointToContainerPoint(m),ce=this.options.direction,ae=F.offsetWidth,pe=F.offsetHeight,ke=E(this.options.offset),De=this._getAnchor();ce==="top"?(y=ae/2,G=pe):ce==="bottom"?(y=ae/2,G=0):ce==="center"?(y=ae/2,G=pe/2):ce==="right"?(y=0,G=pe/2):ce==="left"?(y=ae,G=pe/2):q.x<O.x?(ce="right",y=0,G=pe/2):(ce="left",y=ae+(ke.x+De.x)*2,G=pe/2),m=m.subtract(E(y,G,!0)).add(ke).add(De),Xi(F,"leaflet-tooltip-right"),Xi(F,"leaflet-tooltip-left"),Xi(F,"leaflet-tooltip-top"),Xi(F,"leaflet-tooltip-bottom"),ot(F,"leaflet-tooltip-"+ce),Vi(F,m)},_updatePosition:function(){var m=this._map.latLngToLayerPoint(this._latlng);this._setPosition(m)},setOpacity:function(m){this.options.opacity=m,this._container&&Os(this._container,m)},_animateZoom:function(m){var y=this._map._latLngToNewLayerPoint(this._latlng,m.zoom,m.center);this._setPosition(y)},_getAnchor:function(){return E(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Nee=function(m,y){return new iy(m,y)};Wt.include({openTooltip:function(m,y,G){return this._initOverlay(iy,m,y,G).openOn(this),this},closeTooltip:function(m){return m.close(),this}}),Jl.include({bindTooltip:function(m,y){return this._tooltip&&this.isTooltipOpen()&&this.unbindTooltip(),this._tooltip=this._initOverlay(iy,this._tooltip,m,y),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(m){if(!(!m&&this._tooltipHandlersAdded)){var y=m?"off":"on",G={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?G.add=this._openTooltip:(G.mouseover=this._openTooltip,G.mouseout=this.closeTooltip,G.click=this._openTooltip,this._map?this._addFocusListeners():G.add=this._addFocusListeners),this._tooltip.options.sticky&&(G.mousemove=this._moveTooltip),this[y](G),this._tooltipHandlersAdded=!m}},openTooltip:function(m){return this._tooltip&&(this instanceof yr||(this._tooltip._source=this),this._tooltip._prepareOpen(m)&&(this._tooltip.openOn(this._map),this.getElement?this._setAriaDescribedByOnLayer(this):this.eachLayer&&this.eachLayer(this._setAriaDescribedByOnLayer,this))),this},closeTooltip:function(){if(this._tooltip)return this._tooltip.close()},toggleTooltip:function(){return this._tooltip&&this._tooltip.toggle(this),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(m){return this._tooltip&&this._tooltip.setContent(m),this},getTooltip:function(){return this._tooltip},_addFocusListeners:function(){this.getElement?this._addFocusListenersOnLayer(this):this.eachLayer&&this.eachLayer(this._addFocusListenersOnLayer,this)},_addFocusListenersOnLayer:function(m){var y=typeof m.getElement=="function"&&m.getElement();
8y&&(st(y,"focus",function(){this._tooltip._source=m,this.openTooltip()},this),st(y,"blur",this.closeTooltip,this))},_setAriaDescribedByOnLayer:function(m){var y=typeof m.getElement=="function"&&m.getElement();y&&y.setAttribute("aria-describedby",this._tooltip._container.id)},_openTooltip:function(m){if(!(!this._tooltip||!this._map)){if(this._map.dragging&&this._map.dragging.moving()&&!this._openOnceFlag){this._openOnceFlag=!0;var y=this;this._map.once("moveend",function(){y._openOnceFlag=!1,y._openTooltip(m)});return}this._tooltip._source=m.layer||m.target,this.openTooltip(this._tooltip.options.sticky?m.latlng:void 0)}},_moveTooltip:function(m){var y=m.latlng,G,z;this._tooltip.options.sticky&&m.originalEvent&&(G=this._map.mouseEventToContainerPoint(m.originalEvent),z=this._map.containerPointToLayerPoint(G),y=this._map.layerPointToLatLng(z)),this._tooltip.setLatLng(y)}});var EH=vd.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(m){var y=m&&m.tagName==="DIV"?m:document.createElement("div"),G=this.options;if(G.html instanceof Element?(B0(y),y.appendChild(G.html)):y.innerHTML=G.html!==!1?G.html:"",G.bgPos){var z=E(G.bgPos);y.style.backgroundPosition=-z.x+"px "+-z.y+"px"}return this._setIconStyles(y,"icon"),y},createShadow:function(){return null}});function Ree(m){return new EH(m)}vd.Default=lh;var ch=Jl.extend({options:{tileSize:256,opacity:1,updateWhenIdle:Be.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(m){Z(this,m)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView()},beforeAdd:function(m){m._addZoomLimit(this)},onRemove:function(m){this._removeAllTiles(),oi(this._container),m._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(Vd(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(Id(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(m){return this.options.opacity=m,this._updateOpacity(),this},setZIndex:function(m){return this.options.zIndex=m,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){if(this._map){this._removeAllTiles();var m=this._clampZoom(this._map.getZoom());m!==this._tileZoom&&(this._tileZoom=m,this._updateLevels()),this._update()}return this},getEvents:function(){var m={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=u(this._onMoveEnd,this.options.updateInterval,this)),m.move=this._onMove),this._zoomAnimated&&(m.zoomanim=this._animateZoom),m},createTile:function(){return document.createElement("div")},getTileSize:function(){var m=this.options.tileSize;return m instanceof $?m:new $(m,m)},_updateZIndex:function(){this._container&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(m){for(var y=this.getPane().children,G=-m(-1/0,1/0),z=0,F=y.length,O;z<F;z++)O=y[z].style.zIndex,y[z]!==this._container&&O&&(G=m(G,+O));isFinite(G)&&(this.options.zIndex=G+m(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Be.ielt9){Os(this._container,this.options.opacity);var m=+new Date,y=!1,G=!1;for(var z in this._tiles){var F=this._tiles[z];if(!(!F.current||!F.loaded)){var O=Math.min(1,(m-F.loaded)/200);Os(F.el,O),O<1?y=!0:(F.active?G=!0:this._onOpaqueTile(F),F.active=!0)}}G&&!this._noPrune&&this._pruneTiles(),y&&(R(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this))}},_onOpaqueTile:d,_initContainer:function(){this._container||(this._container=Vt("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var m=this._tileZoom,y=this.options.maxZoom;if(m!==void 0){for(var G in this._levels)G=Number(G),this._levels[G].el.children.length||G===m?(this._levels[G].el.style.zIndex=y-Math.abs(m-G),this._onUpdateLevel(G)):(oi(this._levels[G].el),this._removeTilesAtZoom(G),this._onRemoveLevel(G),delete this._levels[G]);var z=this._levels[m],F=this._map;return z||(z=this._levels[m]={},z.el=Vt("div","leaflet-tile-container leaflet-zoom-animated",this._container),z.el.style.zIndex=y,z.origin=F.project(F.unproject(F.getPixelOrigin()),m).round(),z.zoom=m,this._setZoomTransform(z,F.getCenter(),F.getZoom()),d(z.el.offsetWidth),this._onCreateLevel(z)),this._level=z,z}},_onUpdateLevel:d,_onRemoveLevel:d,_onCreateLevel:d,_pruneTiles:function(){if(this._map){var m,y,G=this._map.getZoom();if(G>this.options.maxZoom||G<this.options.minZoom){this._removeAllTiles();return}for(m in this._tiles)y=this._tiles[m],y.retain=y.current;for(m in this._tiles)if(y=this._tiles[m],y.current&&!y.active){var z=y.coords;this._retainParent(z.x,z.y,z.z,z.z-5)||this._retainChildren(z.x,z.y,z.z,z.z+2)}for(m in this._tiles)this._tiles[m].retain||this._removeTile(m)}},_removeTilesAtZoom:function(m){for(var y in this._tiles)this._tiles[y].coords.z===m&&this._removeTile(y)},_removeAllTiles:function(){for(var m in this._tiles)this._removeTile(m)},_invalidateAll:function(){for(var m in this._levels)oi(this._levels[m].el),this._onRemoveLevel(Number(m)),delete this._levels[m];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(m,y,G,z){var F=Math.floor(m/2),O=Math.floor(y/2),q=G-1,ce=new $(+F,+O);ce.z=+q;var ae=this._tileCoordsToKey(ce),pe=this._tiles[ae];return pe&&pe.active?(pe.retain=!0,!0):(pe&&pe.loaded&&(pe.retain=!0),q>z?this._retainParent(F,O,q,z):!1)},_retainChildren:function(m,y,G,z){for(var F=2*m;F<2*m+2;F++)for(var O=2*y;O<2*y+2;O++){var q=new $(F,O);q.z=G+1;var ce=this._tileCoordsToKey(q),ae=this._tiles[ce];if(ae&&ae.active){ae.retain=!0;continue}else ae&&ae.loaded&&(ae.retain=!0);G+1<z&&this._retainChildren(F,O,G+1,z)}},_resetView:function(m){var y=m&&(m.pinch||m.flyTo);
8this._setView(this._map.getCenter(),this._map.getZoom(),y,y)},_animateZoom:function(m){this._setView(m.center,m.zoom,!0,m.noUpdate)},_clampZoom:function(m){var y=this.options;return y.minNativeZoom!==void 0&&m<y.minNativeZoom?y.minNativeZoom:y.maxNativeZoom!==void 0&&y.maxNativeZoom<m?y.maxNativeZoom:m},_setView:function(m,y,G,z){var F=Math.round(y);this.options.maxZoom!==void 0&&F>this.options.maxZoom||this.options.minZoom!==void 0&&F<this.options.minZoom?F=void 0:F=this._clampZoom(F);var O=this.options.updateWhenZooming&&F!==this._tileZoom;(!z||O)&&(this._tileZoom=F,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),F!==void 0&&this._update(m),G||this._pruneTiles(),this._noPrune=!!G),this._setZoomTransforms(m,y)},_setZoomTransforms:function(m,y){for(var G in this._levels)this._setZoomTransform(this._levels[G],m,y)},_setZoomTransform:function(m,y,G){var z=this._map.getZoomScale(G,m.zoom),F=m.origin.multiplyBy(z).subtract(this._map._getNewPixelOrigin(y,G)).round();Be.any3d?Ko(m.el,F,z):Vi(m.el,F)},_resetGrid:function(){var m=this._map,y=m.options.crs,G=this._tileSize=this.getTileSize(),z=this._tileZoom,F=this._map.getPixelWorldBounds(this._tileZoom);F&&(this._globalTileRange=this._pxBoundsToTileRange(F)),this._wrapX=y.wrapLng&&!this.options.noWrap&&[Math.floor(m.project([0,y.wrapLng[0]],z).x/G.x),Math.ceil(m.project([0,y.wrapLng[1]],z).x/G.y)],this._wrapY=y.wrapLat&&!this.options.noWrap&&[Math.floor(m.project([y.wrapLat[0],0],z).y/G.x),Math.ceil(m.project([y.wrapLat[1],0],z).y/G.y)]},_onMoveEnd:function(){!this._map||this._map._animatingZoom||this._update()},_getTiledPixelBounds:function(m){var y=this._map,G=y._animatingZoom?Math.max(y._animateToZoom,y.getZoom()):y.getZoom(),z=y.getZoomScale(G,this._tileZoom),F=y.project(m,this._tileZoom).floor(),O=y.getSize().divideBy(z*2);return new ie(F.subtract(O),F.add(O))},_update:function(m){var y=this._map;if(y){var G=this._clampZoom(y.getZoom());if(m===void 0&&(m=y.getCenter()),this._tileZoom!==void 0){var z=this._getTiledPixelBounds(m),F=this._pxBoundsToTileRange(z),O=F.getCenter(),q=[],ce=this.options.keepBuffer,ae=new ie(F.getBottomLeft().subtract([ce,-ce]),F.getTopRight().add([ce,-ce]));if(!(isFinite(F.min.x)&&isFinite(F.min.y)&&isFinite(F.max.x)&&isFinite(F.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var pe in this._tiles){var ke=this._tiles[pe].coords;(ke.z!==this._tileZoom||!ae.contains(new $(ke.x,ke.y)))&&(this._tiles[pe].current=!1)}if(Math.abs(G-this._tileZoom)>1){this._setView(m,G);return}for(var De=F.min.y;De<=F.max.y;De++)for(var mt=F.min.x;mt<=F.max.x;mt++){var vn=new $(mt,De);if(vn.z=this._tileZoom,!!this._isValidTile(vn)){var Ci=this._tiles[this._tileCoordsToKey(vn)];Ci?Ci.current=!0:q.push(vn)}}if(q.sort(function(qn,Nd){return qn.distanceTo(O)-Nd.distanceTo(O)}),q.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Es=document.createDocumentFragment();for(mt=0;mt<q.length;mt++)this._addTile(q[mt],Es);this._level.el.appendChild(Es)}}}},_isValidTile:function(m){var y=this._map.options.crs;if(!y.infinite){var G=this._globalTileRange;if(!y.wrapLng&&(m.x<G.min.x||m.x>G.max.x)||!y.wrapLat&&(m.y<G.min.y||m.y>G.max.y))return!1}if(!this.options.bounds)return!0;var z=this._tileCoordsToBounds(m);return le(this.options.bounds).overlaps(z)},_keyToBounds:function(m){return this._tileCoordsToBounds(this._keyToTileCoords(m))},_tileCoordsToNwSe:function(m){var y=this._map,G=this.getTileSize(),z=m.scaleBy(G),F=z.add(G),O=y.unproject(z,m.z),q=y.unproject(F,m.z);return[O,q]},_tileCoordsToBounds:function(m){var y=this._tileCoordsToNwSe(m),G=new A(y[0],y[1]);return this.options.noWrap||(G=this._map.wrapLatLngBounds(G)),G},_tileCoordsToKey:function(m){return m.x+":"+m.y+":"+m.z},_keyToTileCoords:function(m){var y=m.split(":"),G=new $(+y[0],+y[1]);return G.z=+y[2],G},_removeTile:function(m){var y=this._tiles[m];y&&(oi(y.el),delete this._tiles[m],this.fire("tileunload",{tile:y.el,coords:this._keyToTileCoords(m)}))},_initTile:function(m){ot(m,"leaflet-tile");var y=this.getTileSize();m.style.width=y.x+"px",m.style.height=y.y+"px",m.onselectstart=d,m.onmousemove=d,Be.ielt9&&this.options.opacity<1&&Os(m,this.options.opacity)},_addTile:function(m,y){var G=this._getTilePos(m),z=this._tileCoordsToKey(m),F=this.createTile(this._wrapCoords(m),c(this._tileReady,this,m));this._initTile(F),this.createTile.length<2&&x(c(this._tileReady,this,m,null,F)),Vi(F,G),this._tiles[z]={el:F,coords:m,current:!0},y.appendChild(F),this.fire("tileloadstart",{tile:F,coords:m})},_tileReady:function(m,y,G){y&&this.fire("tileerror",{error:y,tile:G,coords:m});var z=this._tileCoordsToKey(m);G=this._tiles[z],G&&(G.loaded=+new Date,this._map._fadeAnimated?(Os(G.el,0),R(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(G.active=!0,this._pruneTiles()),y||(ot(G.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:G.el,coords:m})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Be.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(c(this._pruneTiles,this),250)))},_getTilePos:function(m){return m.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(m){var y=new $(this._wrapX?o(m.x,this._wrapX):m.x,this._wrapY?o(m.y,this._wrapY):m.y);return y.z=m.z,y},_pxBoundsToTileRange:function(m){var y=this.getTileSize();return new ie(m.min.unscaleBy(y).floor(),m.max.unscaleBy(y).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var m in this._tiles)if(!this._tiles[m].loaded)return!1;return!0}});function kee(m){return new ch(m)}var Hd=ch.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(m,y){this._url=m,y=Z(this,y),y.detectRetina&&Be.retina&&y.maxZoom>0?(y.tileSize=Math.floor(y.tileSize/2),y.zoomReverse?(y.zoomOffset--,y.minZoom=Math.min(y.maxZoom,y.minZoom+1)):(y.zoomOffset++,y.maxZoom=Math.max(y.minZoom,y.maxZoom-1)),y.minZ
8oom=Math.max(0,y.minZoom)):y.zoomReverse?y.minZoom=Math.min(y.maxZoom,y.minZoom):y.maxZoom=Math.max(y.minZoom,y.maxZoom),typeof y.subdomains=="string"&&(y.subdomains=y.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(m,y){return this._url===m&&y===void 0&&(y=!0),this._url=m,y||this.redraw(),this},createTile:function(m,y){var G=document.createElement("img");return st(G,"load",c(this._tileOnLoad,this,y,G)),st(G,"error",c(this._tileOnError,this,y,G)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(G.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(G.referrerPolicy=this.options.referrerPolicy),G.alt="",G.src=this.getTileUrl(m),G},getTileUrl:function(m){var y={r:Be.retina?"@2x":"",s:this._getSubdomain(m),x:m.x,y:m.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var G=this._globalTileRange.max.y-m.y;this.options.tms&&(y.y=G),y["-y"]=G}return V(this._url,s(y,this.options))},_tileOnLoad:function(m,y){Be.ielt9?setTimeout(c(m,this,null,y),0):m(null,y)},_tileOnError:function(m,y,G){var z=this.options.errorTileUrl;z&&y.getAttribute("src")!==z&&(y.src=z),m(G,y)},_onTileRemove:function(m){m.tile.onload=null},_getZoomForUrl:function(){var m=this._tileZoom,y=this.options.maxZoom,G=this.options.zoomReverse,z=this.options.zoomOffset;return G&&(m=y-m),m+z},_getSubdomain:function(m){var y=Math.abs(m.x+m.y)%this.options.subdomains.length;return this.options.subdomains[y]},_abortLoading:function(){var m,y;for(m in this._tiles)if(this._tiles[m].coords.z!==this._tileZoom&&(y=this._tiles[m].el,y.onload=d,y.onerror=d,!y.complete)){y.src=v;var G=this._tiles[m].coords;oi(y),delete this._tiles[m],this.fire("tileabort",{tile:y,coords:G})}},_removeTile:function(m){var y=this._tiles[m];if(y)return y.el.setAttribute("src",v),ch.prototype._removeTile.call(this,m)},_tileReady:function(m,y,G){if(!(!this._map||G&&G.getAttribute("src")===v))return ch.prototype._tileReady.call(this,m,y,G)}});function PH(m,y){return new Hd(m,y)}var UH=Hd.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(m,y){this._url=m;var G=s({},this.defaultWmsParams);for(var z in y)z in this.options||(G[z]=y[z]);y=Z(this,y);var F=y.detectRetina&&Be.retina?2:1,O=this.getTileSize();G.width=O.x*F,G.height=O.y*F,this.wmsParams=G},onAdd:function(m){this._crs=this.options.crs||m.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var y=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[y]=this._crs.code,Hd.prototype.onAdd.call(this,m)},getTileUrl:function(m){var y=this._tileCoordsToNwSe(m),G=this._crs,z=ee(G.project(y[0]),G.project(y[1])),F=z.min,O=z.max,q=(this._wmsVersion>=1.3&&this._crs===MH?[F.y,F.x,O.y,O.x]:[F.x,F.y,O.x,O.y]).join(","),ce=Hd.prototype.getTileUrl.call(this,m);return ce+X(this.wmsParams,ce,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+q},setParams:function(m,y){return s(this.wmsParams,m),y||this.redraw(),this}});function Fee(m,y){return new UH(m,y)}Hd.WMS=UH,PH.wms=Fee;var Xr=Jl.extend({options:{padding:.1},initialize:function(m){Z(this,m),a(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),ot(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var m={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(m.zoomanim=this._onAnimZoom),m},_onAnimZoom:function(m){this._updateTransform(m.center,m.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(m,y){var G=this._map.getZoomScale(y,this._zoom),z=this._map.getSize().multiplyBy(.5+this.options.padding),F=this._map.project(this._center,y),O=z.multiplyBy(-G).add(F).subtract(this._map._getNewPixelOrigin(m,y));Be.any3d?Ko(this._container,O,G):Vi(this._container,O)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var m in this._layers)this._layers[m]._reset()},_onZoomEnd:function(){for(var m in this._layers)this._layers[m]._project()},_updatePaths:function(){for(var m in this._layers)this._layers[m]._update()},_update:function(){var m=this.options.padding,y=this._map.getSize(),G=this._map.containerPointToLayerPoint(y.multiplyBy(-m)).round();
8this._bounds=new ie(G,G.add(y.multiplyBy(1+m*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),$H=Xr.extend({options:{tolerance:0},getEvents:function(){var m=Xr.prototype.getEvents.call(this);return m.viewprereset=this._onViewPreReset,m},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Xr.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var m=this._container=document.createElement("canvas");st(m,"mousemove",this._onMouseMove,this),st(m,"click dblclick mousedown mouseup contextmenu",this._onClick,this),st(m,"mouseout",this._handleMouseOut,this),m._leaflet_disable_events=!0,this._ctx=m.getContext("2d")},_destroyContainer:function(){R(this._redrawRequest),delete this._ctx,oi(this._container),Qt(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var m;this._redrawBounds=null;for(var y in this._layers)m=this._layers[y],m._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Xr.prototype._update.call(this);var m=this._bounds,y=this._container,G=m.getSize(),z=Be.retina?2:1;Vi(y,m.min),y.width=z*G.x,y.height=z*G.y,y.style.width=G.x+"px",y.style.height=G.y+"px",Be.retina&&this._ctx.scale(2,2),this._ctx.translate(-m.min.x,-m.min.y),this.fire("update")}},_reset:function(){Xr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(m){this._updateDashArray(m),this._layers[a(m)]=m;var y=m._order={layer:m,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=y),this._drawLast=y,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(m){this._requestRedraw(m)},_removePath:function(m){var y=m._order,G=y.next,z=y.prev;G?G.prev=z:this._drawLast=z,z?z.next=G:this._drawFirst=G,delete m._order,delete this._layers[a(m)],this._requestRedraw(m)},_updatePath:function(m){this._extendRedrawBounds(m),m._project(),m._update(),this._requestRedraw(m)},_updateStyle:function(m){this._updateDashArray(m),this._requestRedraw(m)},_updateDashArray:function(m){if(typeof m.options.dashArray=="string"){var y=m.options.dashArray.split(/[, ]+/),G=[],z,F;for(F=0;F<y.length;F++){if(z=Number(y[F]),isNaN(z))return;G.push(z)}m.options._dashArray=G}else m.options._dashArray=m.options.dashArray},_requestRedraw:function(m){this._map&&(this._extendRedrawBounds(m),this._redrawRequest=this._redrawRequest||x(this._redraw,this))},_extendRedrawBounds:function(m){if(m._pxBounds){var y=(m.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new ie,this._redrawBounds.extend(m._pxBounds.min.subtract([y,y])),this._redrawBounds.extend(m._pxBounds.max.add([y,y]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var m=this._redrawBounds;if(m){var y=m.getSize();this._ctx.clearRect(m.min.x,m.min.y,y.x,y.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var m,y=this._redrawBounds;if(this._ctx.save(),y){var G=y.getSize();this._ctx.beginPath(),this._ctx.rect(y.min.x,y.min.y,G.x,G.y),this._ctx.clip()}this._drawing=!0;for(var z=this._drawFirst;z;z=z.next)m=z.layer,(!y||m._pxBounds&&m._pxBounds.intersects(y))&&m._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(m,y){if(this._drawing){var G,z,F,O,q=m._parts,ce=q.length,ae=this._ctx;if(ce){for(ae.beginPath(),G=0;G<ce;G++){for(z=0,F=q[G].length;z<F;z++)O=q[G][z],ae[z?"lineTo":"moveTo"](O.x,O.y);y&&ae.closePath()}this._fillStroke(ae,m)}}},_updateCircle:function(m){if(!(!this._drawing||m._empty())){var y=m._point,G=this._ctx,z=Math.max(Math.round(m._radius),1),F=(Math.max(Math.round(m._radiusY),1)||z)/z;F!==1&&(G.save(),G.scale(1,F)),G.beginPath(),G.arc(y.x,y.y/F,z,0,Math.PI*2,!1),F!==1&&G.restore(),this._fillStroke(G,m)}},_fillStroke:function(m,y){var G=y.options;G.fill&&(m.globalAlpha=G.fillOpacity,m.fillStyle=G.fillColor||G.color,m.fill(G.fillRule||"evenodd")),G.stroke&&G.weight!==0&&(m.setLineDash&&m.setLineDash(y.options&&y.options._dashArray||[]),m.globalAlpha=G.opacity,m.lineWidth=G.weight,m.strokeStyle=G.color,m.lineCap=G.lineCap,m.lineJoin=G.lineJoin,m.stroke())},_onClick:function(m){for(var y=this._map.mouseEventToLayerPoint(m),G,z,F=this._drawFirst;F;F=F.next)G=F.layer,G.options.interactive&&G._containsPoint(y)&&(!(m.type==="click"||m.type==="preclick")||!this._map._draggableMoved(G))&&(z=G);this._fireEvent(z?[z]:!1,m)},_onMouseMove:function(m){if(!(!this._map||this._map.dragging.moving()||this._map._animatingZoom)){var y=this._map.mouseEventToLayerPoint(m);this._handleMouseHover(m,y)}},_handleMouseOut:function(m){var y=this._hoveredLayer;y&&(Xi(this._container,"leaflet-interactive"),this._fireEvent([y],m,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(m,y){if(!this._mouseHoverThrottled){for(var G,z,F=this._drawFirst;F;F=F.next)G=F.layer,G.options.interactive&&G._containsPoint(y)&&(z=G);z!==this._hoveredLayer&&(this._handleMouseOut(m),z&&(ot(this._container,"leaflet-interactive"),this._fireEvent([z],m,"mouseover"),this._hoveredLayer=z)),this._fireEvent(this._hoveredLayer?[this._hoveredLayer]:!1,m),this._mouseHoverThrottled=!0,setTimeout(c(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(m,y,G){this._map._fireDOMEvent(y,G||y.type,m)},_bringToFront:function(m){var y=m._order;if(y){var G=y.next,z=y.prev;if(G)G.prev=z;else return;z?z.next=G:G&&(this._drawFirst=G),y.prev=this._drawLast,this._drawLast.next=y,y.next=null,this._drawLast=y,this._requestRedraw(m)}},_bringToBack:function(m){var y=m._order;if(y){var G=y.next,z=y.prev;if(z)z.next=G;else return;G?G.prev=z:z&&(this._drawLast=z),y.prev=null,y.next=this._drawFirst,this._drawFirst.prev=y,this._drawFirst=y,this._requestRedraw(m)}}});function QH(m){return Be.canvas?new $H(m):null}var rh=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(m){return document.createElement("<lvml:"+m+' class="lvml">')}}catch{}return function(m){return document.createElement("<"+m+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),See={_initContainer:function(){this._container=Vt("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Xr.prototype._update.call(this),this.fire("update"))},_initPath:function(m){var y=m._container=rh("shape");ot(y,"leaflet-vml-shape "+(this.options.className||"")),y.coordsize="1 1",m._path=rh("path"),y.appendChild(m._path),this._updateStyle(m),this._layers[a(m)]=m},_addPath:function(m){var y=m._container;this._container.appendChild(y),m.options.interactive&&m.addInteractiveTarget(y)},_removePath:function(m){var y=m._container;oi(y),m.removeInteractiveTarget(y),delete this._layers[a(m)]},_updateStyle:function(m){var y=m._stroke,G=m._fill,z=m.options,F=m._container;F.stroked=!!z.stroke,F.filled=!!z.fill,z.stroke?(y||(y=m._stroke=rh("stroke")),F.appendChild(y),y.weight=z.weight+"px",y.color=z.color,y.opacity=z.opacity,z.dashArray?y.dashStyle=g(z.dashArray)?z.dashArray.join(" "):z.dashArray.replace(/( *, *)/g," "):y.dashStyle="",y.endcap=z.lineCap.replace("butt","flat"),y.joinstyle=z.lineJoin):y&&(F.removeChild(y),m._stroke=null),z.fill?(G||(G=m._fill=rh("fill")),F.appendChild(G),G.color=z.fillColor||z.color,G.opacity=z.fillOpacity):G&&(F.removeChild(G),m._fill=null)},_updateCircle:function(m){var y=m._point.round(),G=Math.round(m._radius),z=Math.round(m._radiusY||G);this._setPath(m,m._empty()?"M0 0":"AL "+y.x+","+y.y+" "+G+","+z+" 0,"+65535*360)},_setPath:function(m,y){m._path.v=y},_bringToFront:function(m){Vd(m._container)},_bringToBack:function(m){Id(m._container)}},ny=Be.vml?rh:Me,ah=Xr.extend({_initContainer:function(){this._container=ny("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=ny("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){oi(this._container),Qt(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Xr.prototype._update.call(this);var m=this._bounds,y=m.getSize(),G=this._container;(!this._svgSize||!this._svgSize.equals(y))&&(this._svgSize=y,G.setAttribute("width",y.x),G.setAttribute("height",y.y)),Vi(G,m.min),G.setAttribute("viewBox",[m.min.x,m.min.y,y.x,y.y].join(" ")),this.fire("update")}},_initPath:function(m){var y=m._path=ny("path");m.options.className&&ot(y,m.options.className),m.options.interactive&&ot(y,"leaflet-interactive"),this._updateStyle(m),this._layers[a(m)]=m},_addPath:function(m){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(m._path),m.addInteractiveTarget(m._path)},_removePath:function(m){oi(m._path),m.removeInteractiveTarget(m._path),delete this._layers[a(m)]},_updatePath:function(m){m._project(),m._update()},_updateStyle:function(m){var y=m._path,G=m.options;y&&(G.stroke?(y.setAttribute("stroke",G.color),y.setAttribute("stroke-opacity",G.opacity),y.setAttribute("stroke-width",G.weight),y.setAttribute("stroke-linecap",G.lineCap),y.setAttribute("stroke-linejoin",G.lineJoin),G.dashArray?y.setAttribute("stroke-dasharray",G.dashArray):y.removeAttribute("stroke-dasharray"),G.dashOffset?y.setAttribute("stroke-dashoffset",G.dashOffset):y.removeAttribute("stroke-dashoffset")):y.setAttribute("stroke","none"),G.fill?(y.setAttribute("fill",G.fillColor||G.color),y.setAttribute("fill-opacity",G.fillOpacity),y.setAttribute("fill-rule",G.fillRule||"evenodd")):y.setAttribute("fill","none"))},_updatePoly:function(m,y){this._setPath(m,Ee(m._parts,y))},_updateCircle:function(m){var y=m._point,G=Math.max(Math.round(m._radius),1),z=Math.max(Math.round(m._radiusY),1)||G,F="a"+G+","+z+" 0 1,0 ",O=m._empty()?"M0 0":"M"+(y.x-G)+","+y.y+F+G*2+",0 "+F+-G*2+",0 ";this._setPath(m,O)},_setPath:function(m,y){m._path.setAttribute("d",y)},_bringToFront:function(m){Vd(m._path)},_bringToBack:function(m){Id(m._path)}});Be.vml&&ah.include(See);function DH(m){return Be.svg||Be.vml?new ah(m):null}Wt.include({getRenderer:function(m){var y=m.options.renderer||this._getPaneRenderer(m.options.pane)||this.options.renderer||this._renderer;return y||(y=this._renderer=this._createRenderer()),this.hasLayer(y)||this.addLayer(y),y},_getPaneRenderer:function(m){if(m==="overlayPane"||m===void 0)return!1;var y=this._paneRenderers[m];return y===void 0&&(y=this._createRenderer({pane:m}),this._paneRenderers[m]=y),y},_createRenderer:function(m){return this.options.preferCanvas&&QH(m)||DH(m)}});var AH=zd.extend({initialize:function(m,y){zd.prototype.initialize.call(this,this._boundsToLatLngs(m),y)},setBounds:function(m){return this.setLatLngs(this._boundsToLatLngs(m))}
8,_boundsToLatLngs:function(m){return m=le(m),[m.getSouthWest(),m.getNorthWest(),m.getNorthEast(),m.getSouthEast()]}});function Lee(m,y){return new AH(m,y)}ah.create=ny,ah.pointsToPath=Ee,Wr.geometryToLayer=Q0,Wr.coordsToLatLng=ex,Wr.coordsToLatLngs=D0,Wr.latLngToCoords=tx,Wr.latLngsToCoords=A0,Wr.getFeature=wd,Wr.asFeature=q0,Wt.mergeOptions({boxZoom:!0});var qH=pc.extend({initialize:function(m){this._map=m,this._container=m._container,this._pane=m._panes.overlayPane,this._resetStateTimeout=0,m.on("unload",this._destroy,this)},addHooks:function(){st(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Qt(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){oi(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(m){if(!m.shiftKey||m.which!==1&&m.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),qb(),LJ(),this._startPoint=this._map.mouseEventToContainerPoint(m),st(document,{contextmenu:Oo,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(m){this._moved||(this._moved=!0,this._box=Vt("div","leaflet-zoom-box",this._container),ot(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(m);var y=new ie(this._point,this._startPoint),G=y.getSize();Vi(this._box,y.min),this._box.style.width=G.x+"px",this._box.style.height=G.y+"px"},_finish:function(){this._moved&&(oi(this._box),Xi(this._container,"leaflet-crosshair")),eh(),CJ(),Qt(document,{contextmenu:Oo,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(m){if(!(m.which!==1&&m.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(c(this._resetState,this),0);var y=new A(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(y).fire("boxzoomend",{boxZoomBounds:y})}},_onKeyDown:function(m){m.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});Wt.addInitHook("addHandler","boxZoom",qH),Wt.mergeOptions({doubleClickZoom:!0});var eN=pc.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(m){var y=this._map,G=y.getZoom(),z=y.options.zoomDelta,F=m.originalEvent.shiftKey?G-z:G+z;y.options.doubleClickZoom==="center"?y.setZoom(F):y.setZoomAround(m.containerPoint,F)}});Wt.addInitHook("addHandler","doubleClickZoom",eN),Wt.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var tN=pc.extend({addHooks:function(){if(!this._draggable){var m=this._map;this._draggable=new Za(m._mapPane,m._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),m.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),m.on("zoomend",this._onZoomEnd,this),m.whenReady(this._onZoomEnd,this))}ot(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){Xi(this._map._container,"leaflet-grab"),Xi(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var m=this._map;if(m._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var y=le(this._map.options.maxBounds);this._offsetLimit=ee(this._map.latLngToContainerPoint(y.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(y.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;
8m.fire("movestart").fire("dragstart"),m.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(m){if(this._map.options.inertia){var y=this._lastTime=+new Date,G=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(G),this._times.push(y),this._prunePositions(y)}this._map.fire("move",m).fire("drag",m)},_prunePositions:function(m){for(;this._positions.length>1&&m-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var m=this._map.getSize().divideBy(2),y=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=y.subtract(m).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(m,y){return m-(m-y)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var m=this._draggable._newPos.subtract(this._draggable._startPos),y=this._offsetLimit;m.x<y.min.x&&(m.x=this._viscousLimit(m.x,y.min.x)),m.y<y.min.y&&(m.y=this._viscousLimit(m.y,y.min.y)),m.x>y.max.x&&(m.x=this._viscousLimit(m.x,y.max.x)),m.y>y.max.y&&(m.y=this._viscousLimit(m.y,y.max.y)),this._draggable._newPos=this._draggable._startPos.add(m)}},_onPreDragWrap:function(){var m=this._worldWidth,y=Math.round(m/2),G=this._initialWorldOffset,z=this._draggable._newPos.x,F=(z-y+G)%m+y-G,O=(z+y+G)%m-y-G,q=Math.abs(F+G)<Math.abs(O+G)?F:O;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=q},_onDragEnd:function(m){var y=this._map,G=y.options,z=!G.inertia||m.noInertia||this._times.length<2;if(y.fire("dragend",m),z)y.fire("moveend");else{this._prunePositions(+new Date);var F=this._lastPos.subtract(this._positions[0]),O=(this._lastTime-this._times[0])/1e3,q=G.easeLinearity,ce=F.multiplyBy(q/O),ae=ce.distanceTo([0,0]),pe=Math.min(G.inertiaMaxSpeed,ae),ke=ce.multiplyBy(pe/ae),De=pe/(G.inertiaDeceleration*q),mt=ke.multiplyBy(-De/2).round();!mt.x&&!mt.y?y.fire("moveend"):(mt=y._limitOffset(mt,y.options.maxBounds),x(function(){y.panBy(mt,{duration:De,easeLinearity:q,noMoveStart:!0,animate:!0})}))}}});Wt.addInitHook("addHandler","dragging",tN),Wt.mergeOptions({keyboard:!0,keyboardPanDelta:80});var iN=pc.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(m){this._map=m,this._setPanDelta(m.options.keyboardPanDelta),this._setZoomDelta(m.options.zoomDelta)},addHooks:function(){var m=this._map._container;m.tabIndex<=0&&(m.tabIndex="0"),st(m,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Qt(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var m=document.body,y=document.documentElement,G=m.scrollTop||y.scrollTop,z=m.scrollLeft||y.scrollLeft;this._map._container.focus(),window.scrollTo(z,G)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(m){var y=this._panKeys={},G=this.keyCodes,z,F;for(z=0,F=G.left.length;z<F;z++)y[G.left[z]]=[-1*m,0];for(z=0,F=G.right.length;z<F;z++)y[G.right[z]]=[m,0];for(z=0,F=G.down.length;z<F;z++)y[G.down[z]]=[0,m];for(z=0,F=G.up.length;z<F;z++)y[G.up[z]]=[0,-1*m]},_setZoomDelta:function(m){var y=this._zoomKeys={},G=this.keyCodes,z,F;for(z=0,F=G.zoomIn.length;z<F;z++)y[G.zoomIn[z]]=m;for(z=0,F=G.zoomOut.length;z<F;z++)y[G.zoomOut[z]]=-m},_addHooks:function(){st(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Qt(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(m){if(!(m.altKey||m.ctrlKey||m.metaKey)){var y=m.keyCode,G=this._map,z;if(y in this._panKeys){if(!G._panAnim||!G._panAnim._inProgress)if(z=this._panKeys[y],m.shiftKey&&(z=E(z).multiplyBy(3)),G.options.maxBounds&&(z=G._limitOffset(E(z),G.options.maxBounds)),G.options.worldCopyJump){var F=G.wrapLatLng(G.unproject(G.project(G.getCenter()).add(z)));G.panTo(F)}else G.panBy(z)}else if(y in this._zoomKeys)G.setZoom(G.getZoom()+(m.shiftKey?3:1)*this._zoomKeys[y]);else if(y===27&&G._popup&&G._popup.options.closeOnEscapeKey)G.closePopup();else return;Oo(m)}}});Wt.addInitHook("addHandler","keyboard",iN),Wt.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var nN=pc.extend({addHooks:function(){st(this._map._container,"wheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Qt(this._map._container,"wheel",this._onWheelScroll,this)},_onWheelScroll:function(m){var y=gH(m),G=this._map.options.wheelDebounceTime;this._delta+=y,this._lastMousePos=this._map.mouseEventToContainerPoint(m),this._startTime||(this._startTime=+new Date);var z=Math.max(G-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(c(this._performZoom,this),z),Oo(m)},_performZoom:function(){var m=this._map,y=m.getZoom(),G=this._map.options.zoomSnap||0;m._stop();var z=this._delta/(this._map.options.wheelPxPerZoomLevel*4),F=4*Math.log(2/(1+Math.exp(-Math.abs(z))))/Math.LN2,O=G?Math.ceil(F/G)*G:F,q=m._limitZoom(y+(this._delta>0?O:-O))-y;this._delta=0,this._startTime=null,q&&(m.options.scrollWheelZoom==="center"?m.setZoom(y+q):m.setZoomAround(this._lastMousePos,y+q))}});Wt.addInitHook("addHandler","scrollWheelZoom",nN);var Cee=600;Wt.mergeOptions({tapHold:Be.touchNative&&Be.safari&&Be.mobile,tapTolerance:15});var sN=pc.extend({addHooks:function(){st(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Qt(this._map._container,"touchstart",this._onDown,this)},_onDown:function(m){if(clearTimeout(this._holdTimeout),m.touches.length===1){var y=m.touches[0];this._startPos=this._newPos=new $(y.clientX,y.clientY),this._holdTimeout=setTimeout(c(function(){this._cancel(),this._isTapValid()&&(st(document,"touchend",Qi),st(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",y))},this),Cee),st(document,"touchend touchcancel contextmenu",this._cancel,this),st(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function m(){Qt(document,"touchend",Qi),Qt(document,"touchend touchcancel",m)},_cancel:function(){clearTimeout(this._holdTimeout),Qt(document,"touchend touchcancel contextmenu",this._cancel,this),Qt(document,"touchmove",this._onMove,this)},_onMove:function(m){var y=m.touches[0];this._newPos=new $(y.clientX,y.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(m,y){var G=new MouseEvent(m,{bubbles:!0,cancelable:!0,view:window,screenX:y.screenX,screenY:y.screenY,clientX:y.clientX,clientY:y.clientY});G._simulated=!0,y.target.dispatchEvent(G)}});Wt.addInitHook("addHandler","tapHold",sN),Wt.mergeOptions({touchZoom:Be.touch,bounceAtZoomLimits:!0});var lN=pc.extend({addHooks:function(){ot(this._map._container,"leaflet-touch-zoom"),st(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Xi(this._map._container,"leaflet-touch-zoom"),Qt(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(m){var y=this._map;if(!(!m.touches||m.touches.length!==2||y._animatingZoom||this._zooming)){var G=y.mouseEventToContainerPoint(m.touches[0]),z=y.mouseEventToContainerPoint(m.touches[1]);this._centerPoint=y.getSize()._divideBy(2),this._startLatLng=y.containerPointToLatLng(this._centerPoint),y.options.touchZoom!=="center"&&(this._pinchStartLatLng=y.containerPointToLatLng(G.add(z)._divideBy(2))),this._startDist=G.distanceTo(z),this._startZoom=y.getZoom(),this._moved=!1,this._zooming=!0,y._stop(),st(document,"touchmove",this._onTouchMove,this),st(document,"touchend touchcancel",this._onTouchEnd,this),Qi(m)}},_onTouchMove:function(m){if(!(!m.touches||m.touches.length!==2||!this._zooming)){var y=this._map,G=y.mouseEventToContainerPoint(m.touches[0]),z=y.mouseEventToContainerPoint(m.touches[1]),F=G.distanceTo(z)/this._startDist;if(this._zoom=y.getScaleZoom(F,this._startZoom),!y.options.bounceAtZoomLimits&&(this._zoom<y.getMinZoom()&&F<1||this._zoom>y.getMaxZoom()&&F>1)&&(this._zoom=y._limitZoom(this._zoom)),y.options.touchZoom==="center"){if(this._center=this._startLatLng,F===1)return}else{var O=G._add(z)._divideBy(2)._subtract(this._centerPoint);if(F===1&&O.x===0&&O.y===0)return;this._center=y.unproject(y.project(this._pinchStartLatLng,this._zoom).subtract(O),this._zoom)}this._moved||(y._moveStart(!0,!1),this._moved=!0),R(this._animRequest);var q=c(y._move,y,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=x(q,this,!0),Qi(m)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,R(this._animRequest),Qt(document,"touchmove",this._onTouchMove,this),Qt(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});Wt.addInitHook("addHandler","touchZoom",lN),Wt.BoxZoom=qH,Wt.DoubleClickZoom=eN,Wt.Drag=tN,Wt.Keyboard=iN,Wt.ScrollWheelZoom=nN,Wt.TapHold=sN,Wt.TouchZoom=lN,i.Bounds=ie,i.Browser=Be,i.CRS=oe,i.Canvas=$H,i.Circle=qJ,i.CircleMarker=$0,i.
8Class=B,i.Control=Xl,i.DivIcon=EH,i.DivOverlay=yc,i.DomEvent=iee,i.DomUtil=eee,i.Draggable=Za,i.Evented=U,i.FeatureGroup=yr,i.GeoJSON=Wr,i.GridLayer=ch,i.Handler=pc,i.Icon=vd,i.ImageOverlay=ey,i.LatLng=ne,i.LatLngBounds=A,i.Layer=Jl,i.LayerGroup=gd,i.LineUtil=fee,i.Map=Wt,i.Marker=U0,i.Mixin=oee,i.Path=Wa,i.Point=$,i.PolyUtil=uee,i.Polygon=zd,i.Polyline=Zr,i.Popup=ty,i.PosAnimation=vH,i.Projection=pee,i.Rectangle=AH,i.Renderer=Xr,i.SVG=ah,i.SVGOverlay=jH,i.TileLayer=Hd,i.Tooltip=iy,i.Transformation=Ye,i.Util=K,i.VideoOverlay=OH,i.bind=c,i.bounds=ee,i.canvas=QH,i.circle=Gee,i.circleMarker=Yee,i.control=nh,i.divIcon=Ree,i.extend=s,i.featureGroup=Xee,i.geoJSON=_H,i.geoJson=gee,i.gridLayer=kee,i.icon=Jee,i.imageOverlay=vee,i.latLng=se,i.latLngBounds=le,i.layerGroup=Wee,i.map=nee,i.marker=xee,i.point=E,i.polygon=Iee,i.polyline=Vee,i.popup=Hee,i.rectangle=Lee,i.setOptions=Z,i.stamp=a,i.svg=DH,i.svgOverlay=wee,i.tileLayer=PH,i.tooltip=Nee,i.transformation=Te,i.version=n,i.videoOverlay=zee;var Tee=window.L;i.noConflict=function(){return window.L=Tee,this},window.L=i})})(B9,B9.exports);var Dr=B9.exports;function Wb(e,t,i){return Object.freeze({instance:e,context:t,container:i})}function Fp(e,t){return t==null?function(n,s){const l=Q.useRef(void 0);return l.current||(l.current=e(n,s)),l}:function(n,s){const l=Q.useRef(void 0);l.current||(l.current=e(n,s));const c=Q.useRef(n),{instance:r}=l.current;return Q.useEffect(function(){c.current!==n&&(t(r,n,c.current),c.current=n)},[r,n,t]),l}}function lB(e,t){Q.useEffect(function(){return(t.layerContainer??t.map).addLayer(e.instance),function(){var l;(l=t.layerContainer)==null||l.removeLayer(e.instance),t.map.removeLayer(e.instance)}},[t,e])}function cB(e){return function(i){const n=kp(),s=e(h2(i,n),n);return iB(n.map,i.attribution),s3(s.current,i.eventHandlers),lB(s.current,n),s}}function ece(e,t){const i=Q.useRef(void 0);Q.useEffect(function(){if(t.pathOptions!==i.current){const s=t.pathOptions??{};e.instance.setStyle(s),i.current=s}},[e,t])}function tce(e){return function(i){const n=kp(),s=e(h2(i,n),n);return s3(s.current,i.eventHandlers),lB(s.current,n),ece(s.current,i),s}}function ice(e){function t(s,l){return Wb(e(s),l)}const i=Fp(t),n=Ale(i);return sB(n)}function nce(e,t){const i=Fp(e,t),n=cB(i);return nB(n)}function sce(e,t){const i=Fp(e),n=qle(i,t);return Dle(n)}function rB(e,t){const i=Fp(e,t),n=tce(i);return nB(n)}function lce(e,t){const i=Fp(e,t),n=cB(i);return sB(n)}function cce(e,t,i){const{opacity:n,zIndex:s}=t;n!=null&&n!==i.opacity&&e.setOpacity(n),s!=null&&s!==i.zIndex&&e.setZIndex(s)}function rce(){return kp().map}const aB=ice(function(t){return new Dr.Control.Attribution(t)}),_9=rB(function({center:t,children:i,...n},s){const l=new Dr.CircleMarker(t,n);return Wb(l,i3(s,{overlayContainer:l}))},Ule);function ace({bounds:e,boundsOptions:t,center:i,children:n,className:s,id:l,placeholder:c,style:r,whenReady:a,zoom:u,...o},d){const[b]=Q.useState({className:s,id:l,style:r}),[h,p]=Q.useState(null),Z=Q.useRef(void 0);Q.useImperativeHandle(d,()=>(h==null?void 0:h.map)??null,[h]);const X=Q.useCallback(V=>{if(V!==null&&!Z.current){const g=new Dr.Map(V,o);Z.current=g,i!=null&&u!=null?g.setView(i,u):e!=null&&g.fitBounds(e,t),a!=null&&g.whenReady(a),p(Qle(g))}},[]);Q.useEffect(()=>()=>{h==null||h.map.remove()},[h]);const J=h?re.createElement(n3,{value:h},n):c??null;return re.createElement("div",{...b,ref:X},J)}const oB=Q.forwardRef(ace),kN=nce(function({position:t,...i},n){const s=new Dr.Marker(t,i);return Wb(s,i3(n,{overlayContainer:s}))},function(t,i,n){i.position!==n.position&&t.setLatLng(i.position),i.icon!=null&&i.icon!==n.icon&&t.setIcon(i.icon),i.zIndexOffset!=null&&i.zIndexOffset!==n.zIndexOffset&&t.setZIndexOffset(i.zIndexOffset),i.opacity!=null&&i.opacity!==n.opacity&&t.setOpacity(i.opacity),t.dragging!=null&&i.draggable!==n.draggable&&(i.draggable===!0?t.dragging.enable():t.dragging.disable())}),FN=rB(function({positions:t,...i},n){const s=new Dr.Polygon(t,i);return Wb(s,i3(n,{overlayContainer:s}))},function(t,i,n){i.positions!==n.positions&&t.setLatLngs(i.positions)}),bW=lce(function({url:t,...i},n){const s=new Dr.TileLayer(t,h2(i,n));return Wb(s,n)},function(t,i,n){cce(t,i,n);const{url:s}=i;s!=null&&s!==n.url&&t.setUrl(s)}),Fh=sce(function(t,i){const n=new Dr.Tooltip(t,i.overlayContainer);return Wb(n,i)},function(t,i,{position:n},s){Q.useEffect(function(){const c=i.overlayContainer;if(c==null)return;const{instance:r}=t,a=o=>
8{o.tooltip===r&&(n!=null&&r.setLatLng(n),r.update(),s(!0))},u=o=>{o.tooltip===r&&s(!1)};return c.on({tooltipopen:a,tooltipclose:u}),c.bindTooltip(r),function(){c.off({tooltipopen:a,tooltipclose:u}),c._map!=null&&c.unbindTooltip()}},[t,i,s,n])});function Tl(e){"@babel/helpers - typeof";return Tl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Tl(e)}function tc(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oce(e,t){if(Tl(e)!="object"||!e)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var n=i.call(e,t);if(Tl(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function uB(e){var t=oce(e,"string");return Tl(t)=="symbol"?t:t+""}function SN(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,uB(n.key),n)}}function ic(e,t,i){return t&&SN(e.prototype,t),i&&SN(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function Aa(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function O9(e,t){return O9=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,n){return i.__proto__=n,i},O9(e,t)}function f2(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&O9(e,t)}function Sp(e,t){if(t&&(Tl(t)=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Aa(e)}function $c(e){return $c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},$c(e)}function sa(e,t,i){return(t=uB(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function dB(e){if(Array.isArray(e))return e}function uce(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function LN(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function mB(e,t){if(e){if(typeof e=="string")return LN(e,t);var i={}.toString.call(e).slice(8,-1);return i==="Object"&&e.constructor&&(i=e.constructor.name),i==="Map"||i==="Set"?Array.from(e):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?LN(e,t):void 0}}function bB(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. 9In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dce(e){return dB(e)||uce(e)||mB(e)||bB()}function CN(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function TN(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?CN(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):CN(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}var mce={type:"logger",log:function(t){this.output("log",t)},warn:function(t){this.output("warn",t)},error:function(t){this.output("error",t)},output:function(t,i){console&&console[t]&&console[t].apply(console,i)}},bce=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};tc(this,e),this.init(t,i)}return ic(e,[{key:"init",value:function(i){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=i||mce,this.options=n,this.debug=n.debug}},{key:"setDebug",value:function(i){this.debug=i}},{key:"log",value:function(){for(var i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return this.forward(n,"log","",!0)}},{key:"warn",value:function(){for(var i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return this.forward(n,"warn","",!0)}},{key:"error",value:function(){for(var i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return this.forward(n,"error","")}},{key:"deprecate",value:function(){for(var i=arguments.length,n=new Array(i),s=0;s<i;s++)n[s]=arguments[s];return this.forward(n,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(i,n,s,l){return l&&!this.debug?null:(typeof i[0]=="string"&&(i[0]="".concat(s).concat(this.prefix," ").concat(i[0])),this.logger[n](i))}},{key:"create",value:function(i){return new e(this.logger,TN(TN({},{prefix:"".concat(this.prefix,":").concat(i,":")}),this.options))}},{key:"clone",value:function(i){return i=i||this.options,i.prefix=i.prefix||this.prefix,new e(this.logger,i)}}]),e}(),kc=new bce,oo=function(){function e(){tc(this,e),this.observers={}}return ic(e,[{key:"on",value:function(i,n){var s=this;return i.split(" ").forEach(function(l){s.observers[l]=s.observers[l]||[],s.observers[l].push(n)}),this}},{key:"off",value:function(i,n){if(this.observers[i]){if(!n){delete this.observers[i];return}this.observers[i]=this.observers[i].filter(function(s){return s!==n})}}},{key:"emit",value:function(i){for(var n=arguments.length,s=new Array(n>1?n-1:0),l=1;l<n;l++)s[l-1]=arguments[l];if(this.observers[i]){var c=[].concat(this.observers[i]);
9c.forEach(function(a){a.apply(void 0,s)})}if(this.observers["*"]){var r=[].concat(this.observers["*"]);r.forEach(function(a){a.apply(a,[i].concat(s))})}}}]),e}();function oh(){var e,t,i=new Promise(function(n,s){e=n,t=s});return i.resolve=e,i.reject=t,i}function MN(e){return e==null?"":""+e}function hce(e,t,i){e.forEach(function(n){t[n]&&(i[n]=t[n])})}function l3(e,t,i){function n(r){return r&&r.indexOf("###")>-1?r.replace(/###/g,"."):r}function s(){return!e||typeof e=="string"}for(var l=typeof t!="string"?[].concat(t):t.split(".");l.length>1;){if(s())return{};var c=n(l.shift());!e[c]&&i&&(e[c]=new i),Object.prototype.hasOwnProperty.call(e,c)?e=e[c]:e={}}return s()?{}:{obj:e,k:n(l.shift())}}function KN(e,t,i){var n=l3(e,t,Object),s=n.obj,l=n.k;s[l]=i}function fce(e,t,i,n){var s=l3(e,t,Object),l=s.obj,c=s.k;l[c]=l[c]||[],l[c].push(i)}function hW(e,t){var i=l3(e,t),n=i.obj,s=i.k;if(n)return n[s]}function BN(e,t,i){var n=hW(e,i);return n!==void 0?n:hW(t,i)}function hB(e,t,i){for(var n in t)n!=="__proto__"&&n!=="constructor"&&(n in e?typeof e[n]=="string"||e[n]instanceof String||typeof t[n]=="string"||t[n]instanceof String?i&&(e[n]=t[n]):hB(e[n],t[n],i):e[n]=t[n]);return e}function kd(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var pce={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function yce(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,function(t){return pce[t]}):e}var p2=typeof window<"u"&&window.navigator&&typeof window.navigator.userAgentData>"u"&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,Zce=[" ",",","?","!",";"];function Wce(e,t,i){t=t||"",i=i||"";var n=Zce.filter(function(r){return t.indexOf(r)<0&&i.indexOf(r)<0});if(n.length===0)return!0;var s=new RegExp("(".concat(n.map(function(r){return r==="?"?"\\?":r}).join("|"),")")),l=!s.test(e);if(!l){var c=e.indexOf(i);c>0&&!s.test(e.substring(0,c))&&(l=!0)}return l}function _N(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function uy(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?_N(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):_N(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Xce(e){var t=Jce();return function(){var n=$c(e),s;if(t){var l=$c(this).constructor;s=Reflect.construct(n,arguments,l)}else s=n.apply(this,arguments);return Sp(this,s)}}function Jce(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function fB(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(e){if(e[t])return e[t];for(var n=t.split(i),s=e,l=0;l<n.length;++l){if(!s||typeof s[n[l]]=="string"&&l+1<n.length)return;if(s[n[l]]===void 0){for(var c=2,r=n.slice(l,l+c).join(i),a=s[r];a===void 0&&n.length>l+c;)c++,r=n.slice(l,l+c).join(i),a=s[r];if(a===void 0)return;if(a===null)return null;if(t.endsWith(r)){if(typeof a=="string")return a;
9if(r&&typeof a[r]=="string")return a[r]}var u=n.slice(l+c).join(i);return u?fB(a,u,i):void 0}s=s[n[l]]}return s}}var xce=function(e){f2(i,e);var t=Xce(i);function i(n){var s,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};return tc(this,i),s=t.call(this),p2&&oo.call(Aa(s)),s.data=n||{},s.options=l,s.options.keySeparator===void 0&&(s.options.keySeparator="."),s.options.ignoreJSONStructure===void 0&&(s.options.ignoreJSONStructure=!0),s}return ic(i,[{key:"addNamespaces",value:function(s){this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}},{key:"removeNamespaces",value:function(s){var l=this.options.ns.indexOf(s);l>-1&&this.options.ns.splice(l,1)}},{key:"getResource",value:function(s,l,c){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,u=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure,o=[s,l];c&&typeof c!="string"&&(o=o.concat(c)),c&&typeof c=="string"&&(o=o.concat(a?c.split(a):c)),s.indexOf(".")>-1&&(o=s.split("."));var d=hW(this.data,o);return d||!u||typeof c!="string"?d:fB(this.data&&this.data[s]&&this.data[s][l],c,a)}},{key:"addResource",value:function(s,l,c,r){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1},u=this.options.keySeparator;u===void 0&&(u=".");var o=[s,l];c&&(o=o.concat(u?c.split(u):c)),s.indexOf(".")>-1&&(o=s.split("."),r=l,l=o[1]),this.addNamespaces(l),KN(this.data,o,r),a.silent||this.emit("added",s,l,c,r)}},{key:"addResources",value:function(s,l,c){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(var a in c)(typeof c[a]=="string"||Object.prototype.toString.apply(c[a])==="[object Array]")&&this.addResource(s,l,a,c[a],{silent:!0});r.silent||this.emit("added",s,l,c)}},{key:"addResourceBundle",value:function(s,l,c,r,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},o=[s,l];s.indexOf(".")>-1&&(o=s.split("."),r=c,c=l,l=o[1]),this.addNamespaces(l);var d=hW(this.data,o)||{};r?hB(d,c,a):d=uy(uy({},d),c),KN(this.data,o,d),u.silent||this.emit("added",s,l,c)}},{key:"removeResourceBundle",value:function(s,l){this.hasResourceBundle(s,l)&&delete this.data[s][l],this.removeNamespaces(l),this.emit("removed",s,l)}},{key:"hasResourceBundle",value:function(s,l){return this.getResource(s,l)!==void 0}},{key:"getResourceBundle",value:function(s,l){return l||(l=this.options.defaultNS),this.options.compatibilityAPI==="v1"?uy(uy({},{}),this.getResource(s,l)):this.getResource(s,l)}},{key:"getDataByLanguage",value:function(s){return this.data[s]}},{key:"hasLanguageSomeTranslations",value:function(s){var l=this.getDataByLanguage(s),c=l&&Object.keys(l)||[];return!!c.find(function(r){return l[r]&&Object.keys(l[r]).length>0})}},{key:"toJSON",value:function(){return this.data}}]),i}(oo),pB={processors:{},addPostProcessor:function(t){this.processors[t.name]=t},handle:function(t,i,n,s,l){var c=this;return t.forEach(function(r){c.processors[r]&&(i=c.processors[r].process(i,n,s,l))}),i}};function ON(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function zn(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?ON(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):ON(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Yce(e){var t=Gce();return function(){var n=$c(e),s;if(t){var l=$c(this).constructor;s=Reflect.construct(n,arguments,l)}else s=n.apply(this,arguments);return Sp(this,s)}}
9function Gce(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var jN={},EN=function(e){f2(i,e);var t=Yce(i);function i(n){var s,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return tc(this,i),s=t.call(this),p2&&oo.call(Aa(s)),hce(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],n,Aa(s)),s.options=l,s.options.keySeparator===void 0&&(s.options.keySeparator="."),s.logger=kc.create("translator"),s}return ic(i,[{key:"changeLanguage",value:function(s){s&&(this.language=s)}},{key:"exists",value:function(s){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(s==null)return!1;var c=this.resolve(s,l);return c&&c.res!==void 0}},{key:"extractFromKey",value:function(s,l){var c=l.nsSeparator!==void 0?l.nsSeparator:this.options.nsSeparator;c===void 0&&(c=":");var r=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator,a=l.ns||this.options.defaultNS||[],u=c&&s.indexOf(c)>-1,o=!this.options.userDefinedKeySeparator&&!l.keySeparator&&!this.options.userDefinedNsSeparator&&!l.nsSeparator&&!Wce(s,c,r);if(u&&!o){var d=s.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:s,namespaces:a};var b=s.split(c);(c!==r||c===r&&this.options.ns.indexOf(b[0])>-1)&&(a=b.shift()),s=b.join(r)}return typeof a=="string"&&(a=[a]),{key:s,namespaces:a}}},{key:"translate",value:function(s,l,c){var r=this;if(Tl(l)!=="object"&&this.options.overloadTranslationOptionHandler&&(l=this.options.overloadTranslationOptionHandler(arguments)),l||(l={}),s==null)return"";Array.isArray(s)||(s=[String(s)]);var a=l.returnDetails!==void 0?l.returnDetails:this.options.returnDetails,u=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator,o=this.extractFromKey(s[s.length-1],l),d=o.key,b=o.namespaces,h=b[b.length-1],p=l.lng||this.language,Z=l.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(p&&p.toLowerCase()==="cimode"){if(Z){var X=l.nsSeparator||this.options.nsSeparator;return a?(J.res="".concat(h).concat(X).concat(d),J):"".concat(h).concat(X).concat(d)}return a?(J.res=d,J):d}var J=this.resolve(s,l),V=J&&J.res,g=J&&J.usedKey||d,I=J&&J.exactUsedKey||d,v=Object.prototype.toString.apply(V),k=["[object Number]","[object Function]","[object RegExp]"],N=l.joinArrays!==void 0?l.joinArrays:this.options.joinArrays,C=!this.i18nFormat||this.i18nFormat.handleAsObject,f=typeof V!="string"&&typeof V!="boolean"&&typeof V!="number";if(C&&V&&f&&k.indexOf(v)<0&&!(typeof N=="string"&&v==="[object Array]")){if(!l.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var w=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,V,zn(zn({},l),{},{ns:b})):"key '".concat(d," (").concat(this.language,")' returned an object instead of string.");return a?(J.res=w,J):w}if(u){var x=v==="[object Array]",R=x?[]:{},K=x?I:g;for(var B in V)if(Object.prototype.hasOwnProperty.call(V,B)){var _="".concat(K).concat(u).concat(B);R[B]=this.translate(_,zn(zn({},l),{joinArrays:!1,ns:b})),R[B]===_&&(R[B]=V[B])}V=R}}else if(C&&typeof N=="string"&&v==="[object Array]")V=V.join(N),V&&(V=this.extendTranslation(V,s,l,c));else{var j=!1,U=!1,$=l.count!==void 0&&typeof l.count!="string",te=i.hasDefaultValue(l),E=$?this.pluralResolver.getSuffix(p,l.count,l):"",ie=l["defaultValue".concat(E)]||l.defaultValue;!this.isValidLookup(V)&&te&&(j=!0,V=ie),this.isValidLookup(V)||(U=!0,V=d);var ee=l.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,A=ee&&U?void 0:V,le=te&&ie!==V&&this.options.updateMissing;if(U||j||le){if(this.logger.log(le?"updateKey":"missingKey",p,h,d,le?ie:V),u){var ne=this.resolve(d,zn(zn({},l),{},{keySeparator:!1}));ne&&ne.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var se=[],oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,l.lng||this.language);if(this.options.saveMissingTo==="fallback"&&oe&&oe[0])for(var de=0;de<oe.length;de++)se.push(oe[de]);else this.options.saveMissingTo==="all"?se=this.languageUtils.toResolveHierarchy(l.lng||this.language):se.push(l.lng||this.language);var Je=function(Ye,Te,$e){var Ve=te&&$e!==V?$e:A;r.options.missingKeyHandler?r.options.missingKeyHandler(Ye,h,Te,Ve,le,l):r.backendConnector&&r.backendConnector.saveMissing&&r.backendConnector.saveMissing(Ye,h,Te,Ve,le,l),r.emit("missingKey",Ye,h,Te,V)};this.options.saveMissing&&(this.options.saveMissingPlurals&&$?se.forEach(function(Ie){r.pluralResolver.getSuffixes(Ie,l).forEach(function(Ye){Je([Ie],d+Ye,l["defaultValue".concat(Ye)]||ie)})}):Je(se,d,ie))}V=this.extendTranslation(V,s,l,J,c),U&&V===d&&this.options.appendNamespaceToMissingKey&&(V="".concat(h,":").concat(d)),(U||j)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?V=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(h,":").concat(d):d,j?V:void 0):V=this.options.parseMissingKeyHandler(V))}return a?(J.res=V,J):V}},{key:"extendTranslation",value:function(s,l,c,r,a){var u=this;if(this.i18nFormat&&this.i18nFormat.parse)s=this.i18nFormat.parse(s,zn(zn({},this.options.interpolation.defaultVariables),c),r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!c.skipInterpolation){c.interpolation&&this.interpolator.init(zn(zn({},c),{interpolation:zn(zn({},this.options.interpolation),c.interpolation)}));var o=typeof s=="string"&&(c&&c.interpolation&&c.interpolation.skipOnVariables!==void 0?c.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),d;if(o){var b=s.match(this.interpolator.nestingRegexp);d=b&&b.length}var h=c.replace&&typeof c.replace!="string"?c.replace:c;if(this.options.interpolation.defaultVariables&&(h=zn(zn({},this.options.interpolation.defaultVariables),h)),s=this.interpolator.interpolate(s,h,c.lng||this.language,c),o){var p=s.match(this.interpolator.nestingRegexp),Z=p&&p.length;d<Z&&(c.nest=!1)}c.nest!==!1&&(s=this.interpolator.nest(s,function(){for(var V=arguments.length,g=new Array(V),I=0;I<V;I++)g[I]=arguments[I];return a&&a[0]===g[0]&&!c.context?(u.logger.warn("It seems you are nesting recursively key: ".concat(g[0]," in key: ").concat(l[0])),null):u.translate.apply(u,g.concat([l]))},c)),c.interpolation&&this.interpolator.reset()}var X=c.postProcess||this.options.postProcess,J=typeof X=="string"?[X]:X;return s!=null&&J&&J.length&&c.applyPostProcessor!==!1&&(s=pB.handle(J,s,l,this.options&&this.options.postProcessPassResolved?zn({i18nResolved:r},c):c,this)),s}},{key:"resolve",value:function(s){var l=this,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r,a,u,o,d;
9return typeof s=="string"&&(s=[s]),s.forEach(function(b){if(!l.isValidLookup(r)){var h=l.extractFromKey(b,c),p=h.key;a=p;var Z=h.namespaces;l.options.fallbackNS&&(Z=Z.concat(l.options.fallbackNS));var X=c.count!==void 0&&typeof c.count!="string",J=X&&!c.ordinal&&c.count===0&&l.pluralResolver.shouldUseIntlApi(),V=c.context!==void 0&&(typeof c.context=="string"||typeof c.context=="number")&&c.context!=="",g=c.lngs?c.lngs:l.languageUtils.toResolveHierarchy(c.lng||l.language,c.fallbackLng);Z.forEach(function(I){l.isValidLookup(r)||(d=I,!jN["".concat(g[0],"-").concat(I)]&&l.utils&&l.utils.hasLoadedNamespace&&!l.utils.hasLoadedNamespace(d)&&(jN["".concat(g[0],"-").concat(I)]=!0,l.logger.warn('key "'.concat(a,'" for languages "').concat(g.join(", "),`" won't get resolved as namespace "`).concat(d,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach(function(v){if(!l.isValidLookup(r)){o=v;var k=[p];if(l.i18nFormat&&l.i18nFormat.addLookupKeys)l.i18nFormat.addLookupKeys(k,p,v,I,c);else{var N;X&&(N=l.pluralResolver.getSuffix(v,c.count,c));var C="".concat(l.options.pluralSeparator,"zero");if(X&&(k.push(p+N),J&&k.push(p+C)),V){var f="".concat(p).concat(l.options.contextSeparator).concat(c.context);k.push(f),X&&(k.push(f+N),J&&k.push(f+C))}}for(var w;w=k.pop();)l.isValidLookup(r)||(u=w,r=l.getResource(v,I,w,c))}}))})}}),{res:r,usedKey:a,exactUsedKey:u,usedLng:o,usedNS:d}}},{key:"isValidLookup",value:function(s){return s!==void 0&&!(!this.options.returnNull&&s===null)&&!(!this.options.returnEmptyString&&s==="")}},{key:"getResource",value:function(s,l,c){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(s,l,c,r):this.resourceStore.getResource(s,l,c,r)}}],[{key:"hasDefaultValue",value:function(s){var l="defaultValue";for(var c in s)if(Object.prototype.hasOwnProperty.call(s,c)&&l===c.substring(0,l.length)&&s[c]!==void 0)return!0;return!1}}]),i}(oo);function bx(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Vce=function(){function e(t){tc(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=kc.create("languageUtils")}return ic(e,[{key:"getScriptPartFromCode",value:function(i){if(!i||i.indexOf("-")<0)return null;var n=i.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}},{key:"getLanguagePartFromCode",value:function(i){if(!i||i.indexOf("-")<0)return i;var n=i.split("-");return this.formatLanguageCode(n[0])}},{key:"formatLanguageCode",value:function(i){if(typeof i=="string"&&i.indexOf("-")>-1){var n=["hans","hant","latn","cyrl","cans","mong","arab"],s=i.split("-");return this.options.lowerCaseLng?s=s.map(function(l){return l.toLowerCase()}):s.length===2?(s[0]=s[0].toLowerCase(),s[1]=s[1].toUpperCase(),n.indexOf(s[1].toLowerCase())>-1&&(s[1]=bx(s[1].toLowerCase()))):s.length===3&&(s[0]=s[0].toLowerCase(),s[1].length===2&&(s[1]=s[1].toUpperCase()),s[0]!=="sgn"&&s[2].length===2&&(s[2]=s[2].toUpperCase()),n.indexOf(s[1].toLowerCase())>-1&&(s[1]=bx(s[1].toLowerCase())),n.indexOf(s[2].toLowerCase())>-1&&(s[2]=bx(s[2].toLowerCase()))),s.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?i.toLowerCase():i}},{key:"isSupportedCode",value:function(i){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(i=this.getLanguagePartFromCode(i)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(i)>-1}},{key:"getBestMatchFromCodes",value:function(i){var n=this;if(!i)return null;var s;return i.forEach(function(l){if(!s){var c=n.formatLanguageCode(l);(!n.options.supportedLngs||n.isSupportedCode(c))&&(s=c)}}),!s&&this.options.supportedLngs&&i.forEach(function(l){if(!s){var c=n.getLanguagePartFromCode(l);if(n.isSupportedCode(c))return s=c;s=n.options.supportedLngs.find(function(r){if(r.indexOf(c)===0)return r})}}),s||(s=this.getFallbackCodes(this.options.fallbackLng)[0]),s}},{key:"getFallbackCodes",value:function(i,n){if(!i)return[];if(typeof i=="function"&&(i=i(n)),typeof i=="string"&&(i=[i]),Object.prototype.toString.apply(i)==="[object Array]")return i;if(!n)return i.default||[];var s=i[n];
9return s||(s=i[this.getScriptPartFromCode(n)]),s||(s=i[this.formatLanguageCode(n)]),s||(s=i[this.getLanguagePartFromCode(n)]),s||(s=i.default),s||[]}},{key:"toResolveHierarchy",value:function(i,n){var s=this,l=this.getFallbackCodes(n||this.options.fallbackLng||[],i),c=[],r=function(u){u&&(s.isSupportedCode(u)?c.push(u):s.logger.warn("rejecting language code not found in supportedLngs: ".concat(u)))};return typeof i=="string"&&i.indexOf("-")>-1?(this.options.load!=="languageOnly"&&r(this.formatLanguageCode(i)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&r(this.getScriptPartFromCode(i)),this.options.load!=="currentOnly"&&r(this.getLanguagePartFromCode(i))):typeof i=="string"&&r(this.formatLanguageCode(i)),l.forEach(function(a){c.indexOf(a)<0&&r(s.formatLanguageCode(a))}),c}}]),e}(),Ice=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],gce={1:function(t){return+(t>1)},2:function(t){return+(t!=1)},3:function(t){return 0},4:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},5:function(t){return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},6:function(t){return t==1?0:t>=2&&t<=4?1:2},7:function(t){return t==1?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2},8:function(t){return t==1?0:t==2?1:t!=8&&t!=11?2:3},9:function(t){return+(t>=2)},10:function(t){return t==1?0:t==2?1:t<7?2:t<11?3:4},11:function(t){return t==1||t==11?0:t==2||t==12?1:t>2&&t<20?2:3},12:function(t){return+(t%10!=1||t%100==11)},13:function(t){return+(t!==0)},14:function(t){return t==1?0:t==2?1:t==3?2:3},15:function(t){return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2},16:function(t){return t%10==1&&t%100!=11?0:t!==0?1:2},17:function(t){return t==1||t%10==1&&t%100!=11?0:1},18:function(t){return t==0?0:t==1?1:2},19:function(t){return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3},20:function(t){return t==1?0:t==0||t%100>0&&t%100<20?1:2},21:function(t){return t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0},22:function(t){return t==1?0:t==2?1:(t<0||t>10)&&t%10==0?2:3}},vce=["v1","v2","v3"],PN={zero:0,one:1,two:2,few:3,many:4,other:5};function zce(){var e={};return Ice.forEach(function(t){t.lngs.forEach(function(i){e[i]={numbers:t.nr,plurals:gce[t.fc]}})}),e}var wce=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};tc(this,e),this.languageUtils=t,this.options=i,this.logger=kc.create("pluralResolver"),(!this.options.compatibilityJSON||this.options.compatibilityJSON==="v4")&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=zce()}return ic(e,[{key:"addRule",value:function(i,n){this.rules[i]=n}},{key:"getRule",value:function(i){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(i,{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[i]||this.rules[this.languageUtils.getLanguagePartFromCode(i)]}},{key:"needsPlural",value:function(i){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=this.getRule(i,n);return this.shouldUseIntlApi()?s&&s.resolvedOptions().pluralCategories.length>1:s&&s.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(i,n){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};
9return this.getSuffixes(i,s).map(function(l){return"".concat(n).concat(l)})}},{key:"getSuffixes",value:function(i){var n=this,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},l=this.getRule(i,s);return l?this.shouldUseIntlApi()?l.resolvedOptions().pluralCategories.sort(function(c,r){return PN[c]-PN[r]}).map(function(c){return"".concat(n.options.prepend).concat(c)}):l.numbers.map(function(c){return n.getSuffix(i,c,s)}):[]}},{key:"getSuffix",value:function(i,n){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l=this.getRule(i,s);return l?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(l.select(n)):this.getSuffixRetroCompatible(l,n):(this.logger.warn("no plural rule found for: ".concat(i)),"")}},{key:"getSuffixRetroCompatible",value:function(i,n){var s=this,l=i.noAbs?i.plurals(n):i.plurals(Math.abs(n)),c=i.numbers[l];this.options.simplifyPluralSuffix&&i.numbers.length===2&&i.numbers[0]===1&&(c===2?c="plural":c===1&&(c=""));var r=function(){return s.options.prepend&&c.toString()?s.options.prepend+c.toString():c.toString()};return this.options.compatibilityJSON==="v1"?c===1?"":typeof c=="number"?"_plural_".concat(c.toString()):r():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&i.numbers.length===2&&i.numbers[0]===1?r():this.options.prepend&&l.toString()?this.options.prepend+l.toString():l.toString()}},{key:"shouldUseIntlApi",value:function(){return!vce.includes(this.options.compatibilityJSON)}}]),e}();function UN(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function xl(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?UN(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):UN(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}var Hce=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};tc(this,e),this.logger=kc.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(i){return i},this.init(t)}return ic(e,[{key:"init",value:function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};i.interpolation||(i.interpolation={escapeValue:!0});var n=i.interpolation;this.escape=n.escape!==void 0?n.escape:yce,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?kd(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?kd(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?kd(n.nestingPrefix):n.nestingPrefixEscaped||kd("$t("),this.nestingSuffix=n.nestingSuffix?kd(n.nestingSuffix):n.nestingSuffixEscaped||kd(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=n.alwaysFormat!==void 0?n.alwaysFormat:!1,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var i="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(i,"g");var n="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(n,"g");var s="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(s,"g")}},{key:"interpolate",value:function(i,n,s,l){var c=this,r,a,u,o=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function d(X){return X.replace(/\$/g,"$$$$")}var b=function(J){if(J.indexOf(c.formatSeparator)<0){var V=BN(n,o,J);return c.alwaysFormat?c.format(V,void 0,s,xl(xl(xl({},l),n),{},{interpolationkey:J})):V}var g=J.split(c.formatSeparator),I=g.shift().trim(),v=g.join(c.formatSeparator).trim();return c.format(BN(n,o,I),v,s,xl(xl(xl({},l),n),{},{interpolationkey:I}))};this.resetRegExp();var h=l&&l.missingInterpolationHandler||this.options.missingInterpolationHandler,p=l&&l.interpolation&&l.interpolation.skipOnVariables!==void 0?l.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables,Z=[{regex:this.regexpUnescape,safeValue:function(J){return d(J)}},{regex:this.regexp,safeValue:function(J){return c.escapeValue?d(c.escape(J)):d(J)}}];return Z.forEach(function(X){for(u=0;r=X.regex.exec(i);){var J=r[1].trim();if(a=b(J),a===void 0)if(typeof h=="function"){var V=h(i,r,l);a=typeof V=="string"?V:""}else if(l&&l.hasOwnProperty(J))a="";else if(p){a=r[0];continue}else c.logger.warn("missed to pass in variable ".concat(J," for interpolating ").concat(i)),a="";else typeof a!="string"&&!c.useRawValueToEscape&&(a=MN(a));var g=X.safeValue(a);if(i=i.replace(r[0],g),p?(X.regex.lastIndex+=a.length,X.regex.lastIndex-=r[0].length):X.regex.lastIndex=0,u++,u>=c.maxReplaces)break}}),i}},{key:"nest",value:function(i,n){var s=this,l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},c,r,a=xl({},l);a.applyPostProcessor=!1,delete a.defaultValue;function u(h,p){var Z=this.nestingOptionsSeparator;if(h.indexOf(Z)<0)return h;var X=h.split(new RegExp("".concat(Z,"[ ]*{"))),J="{".concat(X[1]);h=X[0],J=this.interpolate(J,a);var V=J.match(/'/g),g=J.match(/"/g);(V&&V.length%2===0&&!g||g.length%2!==0)&&(J=J.replace(/'/g,'"'));try{a=JSON.parse(J),p&&(a=xl(xl({},p),a))}catch(I){return this.logger.warn("failed parsing options string in nesting for key ".concat(h),I),"".concat(h).concat(Z).concat(J)}return delete a.defaultValue,h}for(;c=this.nestingRegexp.exec(i);){var o=[],d=!1;if(c[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(c[1])){var b=c[1].split(this.formatSeparator).map(function(h){return h.trim()});c[1]=b.shift(),o=b,d=!0}if(r=n(u.call(this,c[1].trim(),a),a),r&&c[0]===i&&typeof r!="string")return r;
9typeof r!="string"&&(r=MN(r)),r||(this.logger.warn("missed to resolve ".concat(c[1]," for nesting ").concat(i)),r=""),d&&(r=o.reduce(function(h,p){return s.format(h,p,l.lng,xl(xl({},l),{},{interpolationkey:c[1].trim()}))},r.trim())),i=i.replace(c[0],r),this.regexp.lastIndex=0}return i}}]),e}();function $N(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function Xa(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?$N(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):$N(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Nce(e){var t=e.toLowerCase().trim(),i={};if(e.indexOf("(")>-1){var n=e.split("(");t=n[0].toLowerCase().trim();var s=n[1].substring(0,n[1].length-1);if(t==="currency"&&s.indexOf(":")<0)i.currency||(i.currency=s.trim());else if(t==="relativetime"&&s.indexOf(":")<0)i.range||(i.range=s.trim());else{var l=s.split(";");l.forEach(function(c){if(c){var r=c.split(":"),a=dce(r),u=a[0],o=a.slice(1),d=o.join(":").trim().replace(/^'+|'+$/g,"");i[u.trim()]||(i[u.trim()]=d),d==="false"&&(i[u.trim()]=!1),d==="true"&&(i[u.trim()]=!0),isNaN(d)||(i[u.trim()]=parseInt(d,10))}})}}return{formatName:t,formatOptions:i}}function Fd(e){var t={};return function(n,s,l){var c=s+JSON.stringify(l),r=t[c];return r||(r=e(s,l),t[c]=r),r(n)}}var Rce=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};tc(this,e),this.logger=kc.create("formatter"),this.options=t,this.formats={number:Fd(function(i,n){var s=new Intl.NumberFormat(i,n);return function(l){return s.format(l)}}),currency:Fd(function(i,n){var s=new Intl.NumberFormat(i,Xa(Xa({},n),{},{style:"currency"}));return function(l){return s.format(l)}}),datetime:Fd(function(i,n){var s=new Intl.DateTimeFormat(i,Xa({},n));return function(l){return s.format(l)}}),relativetime:Fd(function(i,n){var s=new Intl.RelativeTimeFormat(i,Xa({},n));return function(l){return s.format(l,n.range||"day")}}),list:Fd(function(i,n){var s=new Intl.ListFormat(i,Xa({},n));return function(l){return s.format(l)}})},this.init(t)}return ic(e,[{key:"init",value:function(i){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}},s=n.interpolation;this.formatSeparator=s.formatSeparator?s.formatSeparator:s.formatSeparator||","}},{key:"add",value:function(i,n){this.formats[i.toLowerCase().trim()]=n}},{key:"addCached",value:function(i,n){this.formats[i.toLowerCase().trim()]=Fd(n)}},{key:"format",value:function(i,n,s,l){var c=this,r=n.split(this.formatSeparator),a=r.reduce(function(u,o){var d=Nce(o),b=d.formatName,h=d.formatOptions;if(c.formats[b]){var p=u;try{var Z=l&&l.formatParams&&l.formatParams[l.interpolationkey]||{},X=Z.locale||Z.lng||l.locale||l.lng||s;p=c.formats[b](u,X,Xa(Xa(Xa({},h),l),Z))}catch(J){c.logger.warn(J)}return p}else c.logger.warn("there was no format function for ".concat(b));return u},i);return a}}]),e}();function QN(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function DN(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?QN(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):QN(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function kce(e){var t=Fce();return function(){var n=$c(e),s;if(t){var l=$c(this).constructor;s=Reflect.construct(n,arguments,l)}else s=n.apply(this,arguments);return Sp(this,s)}}function Fce(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}
9function Sce(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}var Lce=function(e){f2(i,e);var t=kce(i);function i(n,s,l){var c,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return tc(this,i),c=t.call(this),p2&&oo.call(Aa(c)),c.backend=n,c.store=s,c.services=l,c.languageUtils=l.languageUtils,c.options=r,c.logger=kc.create("backendConnector"),c.waitingReads=[],c.maxParallelReads=r.maxParallelReads||10,c.readingCalls=0,c.maxRetries=r.maxRetries>=0?r.maxRetries:5,c.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,c.state={},c.queue=[],c.backend&&c.backend.init&&c.backend.init(l,r.backend,r),c}return ic(i,[{key:"queueLoad",value:function(s,l,c,r){var a=this,u={},o={},d={},b={};return s.forEach(function(h){var p=!0;l.forEach(function(Z){var X="".concat(h,"|").concat(Z);!c.reload&&a.store.hasResourceBundle(h,Z)?a.state[X]=2:a.state[X]<0||(a.state[X]===1?o[X]===void 0&&(o[X]=!0):(a.state[X]=1,p=!1,o[X]===void 0&&(o[X]=!0),u[X]===void 0&&(u[X]=!0),b[Z]===void 0&&(b[Z]=!0)))}),p||(d[h]=!0)}),(Object.keys(u).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(u),pending:Object.keys(o),toLoadLanguages:Object.keys(d),toLoadNamespaces:Object.keys(b)}}},{key:"loaded",value:function(s,l,c){var r=s.split("|"),a=r[0],u=r[1];l&&this.emit("failedLoading",a,u,l),c&&this.store.addResourceBundle(a,u,c),this.state[s]=l?-1:2;var o={};this.queue.forEach(function(d){fce(d.loaded,[a],u),Sce(d,s),l&&d.errors.push(l),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(function(b){o[b]||(o[b]={});var h=d.loaded[b];h.length&&h.forEach(function(p){o[b][p]===void 0&&(o[b][p]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(function(d){return!d.done})}},{key:"read",value:function(s,l,c){var r=this,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,u=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!s.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:s,ns:l,fcName:c,tried:a,wait:u,callback:o});return}return this.readingCalls++,this.backend[c](s,l,function(d,b){if(r.readingCalls--,r.waitingReads.length>0){var h=r.waitingReads.shift();r.read(h.lng,h.ns,h.fcName,h.tried,h.wait,h.callback)}if(d&&b&&a<r.maxRetries){setTimeout(function(){r.read.call(r,s,l,c,a+1,u*2,o)},u);return}o(d,b)})}},{key:"prepareLoading",value:function(s,l){var c=this,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();typeof s=="string"&&(s=this.languageUtils.toResolveHierarchy(s)),typeof l=="string"&&(l=[l]);var u=this.queueLoad(s,l,r,a);if(!u.toLoad.length)return u.pending.length||a(),null;u.toLoad.forEach(function(o){c.loadOne(o)})}},{key:"load",value:function(s,l,c){this.prepareLoading(s,l,{},c)}},{key:"reload",value:function(s,l,c){this.prepareLoading(s,l,{reload:!0},c)}},{key:"loadOne",value:function(s){var l=this,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",r=s.split("|"),a=r[0],u=r[1];this.read(a,u,"read",void 0,void 0,function(o,d){o&&l.logger.warn("".concat(c,"loading namespace ").concat(u," for language ").concat(a," failed"),o),!o&&d&&l.logger.log("".concat(c,"loaded namespace ").concat(u," for language ").concat(a),d),l.loaded(s,o,d)})}},{key:"saveMissing",value:function(s,l,c,r,a){var u=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(l)){this.logger.warn('did not save key "'.concat(c,'" as the namespace "').concat(l,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}c==null||c===""||(this.backend&&this.backend.create&&this.backend.create(s,l,c,r,null,DN(DN({},u),{},{isUpdate:a})),!(!s||!s[0])&&this.store.addResource(s[0],l,c,r))}}]),i}(oo);function Cce(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){var i={};if(Tl(t[1])==="object"&&(i=t[1]),typeof t[1]=="string"&&(i.defaultValue=t[1]),typeof t[2]=="str
9ing"&&(i.tDescription=t[2]),Tl(t[2])==="object"||Tl(t[3])==="object"){var n=t[3]||t[2];Object.keys(n).forEach(function(s){i[s]=n[s]})}return i},interpolation:{escapeValue:!0,format:function(t,i,n,s){return t},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function AN(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function qN(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function Zc(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?qN(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):qN(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Tce(e){var t=Mce();return function(){var n=$c(e),s;if(t){var l=$c(this).constructor;s=Reflect.construct(n,arguments,l)}else s=n.apply(this,arguments);return Sp(this,s)}}function Mce(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function dy(){}function Kce(e){var t=Object.getOwnPropertyNames(Object.getPrototypeOf(e));t.forEach(function(i){typeof e[i]=="function"&&(e[i]=e[i].bind(e))})}var fW=function(e){f2(i,e);var t=Tce(i);function i(){var n,s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=arguments.length>1?arguments[1]:void 0;if(tc(this,i),n=t.call(this),p2&&oo.call(Aa(n)),n.options=AN(s),n.services={},n.logger=kc,n.modules={external:[]},Kce(Aa(n)),l&&!n.isInitialized&&!s.isClone){if(!n.options.initImmediate)return n.init(s,l),Sp(n,Aa(n));setTimeout(function(){n.init(s,l)},0)}return n}return ic(i,[{key:"init",value:function(){var s=this,l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=arguments.length>1?arguments[1]:void 0;typeof l=="function"&&(c=l,l={}),!l.defaultNS&&l.defaultNS!==!1&&l.ns&&(typeof l.ns=="string"?l.defaultNS=l.ns:l.ns.indexOf("translation")<0&&(l.defaultNS=l.ns[0]));var r=Cce();this.options=Zc(Zc(Zc({},r),this.options),AN(l)),this.options.compatibilityAPI!=="v1"&&(this.options.interpolation=Zc(Zc({},r.interpolation),this.options.interpolation)),l.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=l.keySeparator),l.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=l.nsSeparator);function a(J){return J?typeof J=="function"?new J:J:null}if(!this.options.isClone){this.modules.logger?kc.init(a(this.modules.logger),this.options):kc.init(null,this.options);var u;this.modules.formatter?u=this.modules.formatter:typeof Intl<"u"&&(u=Rce);var o=new Vce(this.options);this.store=new xce(this.options.resources,this.options);var d=this.services;d.logger=kc,d.resourceStore=this.store,d.languageUtils=o,d.pluralResolver=new wce(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),u&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(d.formatter=a(u),d.formatter.init(d,this.options),this.options.interpolation.format=d.formatter.format.bind(d.formatter)),d.interpolator=new Hce(this.options),d.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},d.backendConnector=new Lce(a(this.modules.backend),d.resourceStore,d,this.options),d.backendConnector.on("*",function(J){for(var V=arguments.length,g=new Array(V>1?V-1:0),I=1;I<V;I++)g[I-1]=arguments[I];s.emit.apply(s,[J].concat(g))}),this.modules.languageDetector&&(d.languageDetector=a(this.modules.languageDetector),d.languageDetector.init(d,this.options.detection,this.options)),this.modules.i18nFormat&&(d.i18nFormat=a(this.modules.i18nFormat),d.i18nFormat.init&&d.i18nFormat.init(this)),this.translator=new EN(this.services,this.options),this.translator.on("*",function(J){for(var V=arguments.length,g=new Array(V>1?V-1:0),I=1;I<V;I++)g[I-1]=arguments[I];s.emit.apply(s,[J].concat(g))}),this.modules.external.forEach(function(J){J.init&&J.init(s)})}if(this.format=this.options.interpolation.format,c||(c=dy),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var b=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);b.length>0&&b[0]!=="dev"&&(this.options.lng=b[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined");var h=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];h.forEach(function(J){s[J]=function(){var V;return(V=s.store)[J].apply(V,arguments)}});var p=["addResource","addResources","addResourceBundle","removeResourceBundle"];p.forEach(function(J){s[J]=function(){var V;return(V=s.store)[J].apply(V,arguments),s}});var Z=oh(),X=function(){var V=function(I,v){s.isInitialized&&!s.initializedStoreOnce&&s.logger.warn("init: i18next is already initialized. You should call init just once!"),s.isInitialized=!0,s.options.isClone||s.logger.log("initialized",s.options),s.emit("initialized",s.options),Z.resolve(v),c(I,v)};if(s.languages&&s.options.compatibilityAPI!=="v1"&&!s.isInitialized)return V(null,s.t.bind(s));s.changeLanguage(s.options.lng,V)};return this.options.resources||!this.options.initImmediate?X():setTimeout(X,0),Z}},{key:"loadResources",value:function(s){var l=this,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dy,r=c,a=typeof s=="string"?s:this.language;if(typeof s=="function"&&(r=s),!this.options.resources||this.options.partialBundledLanguages){if(a&&a.toLowerCase()==="cimode")return r();var u=[],o=function(h){if(h){var p=l.services.languageUtils.toResolveHierarchy(h);p.forEach(function(Z){u.indexOf(Z)<0&&u.push(Z)})}};if(a)o(a);else{var d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.forEach(function(b){return o(b)})}
9this.options.preload&&this.options.preload.forEach(function(b){return o(b)}),this.services.backendConnector.load(u,this.options.ns,function(b){!b&&!l.resolvedLanguage&&l.language&&l.setResolvedLanguage(l.language),r(b)})}else r(null)}},{key:"reloadResources",value:function(s,l,c){var r=oh();return s||(s=this.languages),l||(l=this.options.ns),c||(c=dy),this.services.backendConnector.reload(s,l,function(a){r.resolve(),c(a)}),r}},{key:"use",value:function(s){if(!s)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!s.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return s.type==="backend"&&(this.modules.backend=s),(s.type==="logger"||s.log&&s.warn&&s.error)&&(this.modules.logger=s),s.type==="languageDetector"&&(this.modules.languageDetector=s),s.type==="i18nFormat"&&(this.modules.i18nFormat=s),s.type==="postProcessor"&&pB.addPostProcessor(s),s.type==="formatter"&&(this.modules.formatter=s),s.type==="3rdParty"&&this.modules.external.push(s),this}},{key:"setResolvedLanguage",value:function(s){if(!(!s||!this.languages)&&!(["cimode","dev"].indexOf(s)>-1))for(var l=0;l<this.languages.length;l++){var c=this.languages[l];if(!(["cimode","dev"].indexOf(c)>-1)&&this.store.hasLanguageSomeTranslations(c)){this.resolvedLanguage=c;break}}}},{key:"changeLanguage",value:function(s,l){var c=this;this.isLanguageChangingTo=s;var r=oh();this.emit("languageChanging",s);var a=function(b){c.language=b,c.languages=c.services.languageUtils.toResolveHierarchy(b),c.resolvedLanguage=void 0,c.setResolvedLanguage(b)},u=function(b,h){h?(a(h),c.translator.changeLanguage(h),c.isLanguageChangingTo=void 0,c.emit("languageChanged",h),c.logger.log("languageChanged",h)):c.isLanguageChangingTo=void 0,r.resolve(function(){return c.t.apply(c,arguments)}),l&&l(b,function(){return c.t.apply(c,arguments)})},o=function(b){!s&&!b&&c.services.languageDetector&&(b=[]);var h=typeof b=="string"?b:c.services.languageUtils.getBestMatchFromCodes(b);h&&(c.language||a(h),c.translator.language||c.translator.changeLanguage(h),c.services.languageDetector&&c.services.languageDetector.cacheUserLanguage(h)),c.loadResources(h,function(p){u(p,h)})};return!s&&this.services.languageDetector&&!this.services.languageDetector.async?o(this.services.languageDetector.detect()):!s&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(o):o(s),r}},{key:"getFixedT",value:function(s,l,c){var r=this,a=function u(o,d){var b;if(Tl(d)!=="object"){for(var h=arguments.length,p=new Array(h>2?h-2:0),Z=2;Z<h;Z++)p[Z-2]=arguments[Z];b=r.options.overloadTranslationOptionHandler([o,d].concat(p))}else b=Zc({},d);b.lng=b.lng||u.lng,b.lngs=b.lngs||u.lngs,b.ns=b.ns||u.ns,b.keyPrefix=b.keyPrefix||c||u.keyPrefix;var X=r.options.keySeparator||".",J=b.keyPrefix?"".concat(b.keyPrefix).concat(X).concat(o):o;return r.t(J,b)};return typeof s=="string"?a.lng=s:a.lngs=s,a.ns=l,a.keyPrefix=c,a}},{key:"t",value:function(){var s;return this.translator&&(s=this.translator).translate.apply(s,arguments)}},{key:"exists",value:function(){var s;return this.translator&&(s=this.translator).exists.apply(s,arguments)}},{key:"setDefaultNamespace",value:function(s){this.options.defaultNS=s}},{key:"hasLoadedNamespace",value:function(s){var l=this,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;
9if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var r=this.resolvedLanguage||this.languages[0],a=this.options?this.options.fallbackLng:!1,u=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;var o=function(h,p){var Z=l.services.backendConnector.state["".concat(h,"|").concat(p)];return Z===-1||Z===2};if(c.precheck){var d=c.precheck(this,o);if(d!==void 0)return d}return!!(this.hasResourceBundle(r,s)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(r,s)&&(!a||o(u,s)))}},{key:"loadNamespaces",value:function(s,l){var c=this,r=oh();return this.options.ns?(typeof s=="string"&&(s=[s]),s.forEach(function(a){c.options.ns.indexOf(a)<0&&c.options.ns.push(a)}),this.loadResources(function(a){r.resolve(),l&&l(a)}),r):(l&&l(),Promise.resolve())}},{key:"loadLanguages",value:function(s,l){var c=oh();typeof s=="string"&&(s=[s]);var r=this.options.preload||[],a=s.filter(function(u){return r.indexOf(u)<0});return a.length?(this.options.preload=r.concat(a),this.loadResources(function(u){c.resolve(),l&&l(u)}),c):(l&&l(),Promise.resolve())}},{key:"dir",value:function(s){if(s||(s=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!s)return"rtl";var l=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"];return l.indexOf(this.services.languageUtils.getLanguagePartFromCode(s))>-1||s.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var s=this,l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dy,r=Zc(Zc(Zc({},this.options),l),{isClone:!0}),a=new i(r);(l.debug!==void 0||l.prefix!==void 0)&&(a.logger=a.logger.clone(l));var u=["store","services","language"];return u.forEach(function(o){a[o]=s[o]}),a.services=Zc({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a.translator=new EN(a.services,a.options),a.translator.on("*",function(o){for(var d=arguments.length,b=new Array(d>1?d-1:0),h=1;h<d;h++)b[h-1]=arguments[h];a.emit.apply(a,[o].concat(b))}),a.init(r,c),a.translator.options=a.options,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}},{key:"toJSON",value:function(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}]),i}(oo);sa(fW,"createInstance",function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new fW(e,t)});var on=fW.createInstance();on.createInstance=fW.createInstance;on.createInstance;on.init;on.loadResources;on.reloadResources;on.use;on.changeLanguage;on.getFixedT;on.t;on.exists;on.setDefaultNamespace;on.hasLoadedNamespace;on.loadNamespaces;on.loadLanguages;const Nm="gw_count_fid",wu="gw_mea_key_fid",Kc="gw_mea_val_fid",nu="gw_paint_fid";function Bce(){return{fid:Nm,name:on.t("constant.row_count"),analyticType:"measure",semanticType:"quantitative",aggName:"sum",computed:!0,expression:{op:"one",params:[],as:Nm}}}function _ce(){return[{fid:wu,name:on.t("constant.mea_key"),analyticType:"dimension",semanticType:"nominal"},{fid:Kc,name:on.t("constant.mea_val"),analyticType:"measure",semanticType:"quantitative",aggName:"sum"}]}function eR(e){return e.fid}function Cf(e,t){return!t||t==="expr"?e:`${t}(${e})`}function us(e,t){return!t||t==="expr"?e:`${e}_${t}`}function Oce(e){return e.enableAgg&&e.aggName?us(e.fid,e.aggName):e.fid}function j9({rows:e,columns:t}){return e.length&&!e.find(i=>i.analyticType==="measure")?e[e.length-1].sort||"none":t.length&&!t.find(i=>i.analyticType==="measure")&&t[t.length-1].sort||"none"}function jce({rows:e,columns:t}){return e.length&&!e.find(i=>i.analyticType==="measure")?"row":t.length&&!t.find(i=>i.analyticType==="measure")?"column":"none"}const yB=e=>{if(!e)return"null";const t=e.getFullYear(),i=e.getMonth()+1,n=e.getDate(),s=e.getHours(),l=e.getMinutes(),c=e.getSeconds(),r=a=>`${a}`.padStart(2,"0");return`${t}-${r(i)}-${r(n)} ${r(s)}:${r(l)}:${r(c)}`},Ca=e=>e!=null;function E9(e){Promise.resolve().then(e)}function tR(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}const Mi="#5B8FF9",c3={background:"transparent",boxplot:{ticks:{fill:"#d1d5db"},rule:{color:"#d1d5db"}},header:{titleColor:"#d1d5db",labelColor:"#d1d5db"},axis:{gridColor:"#666",domainColor:"#d1d5db",tickColor:"#d1d5db",labelColor:"#d1d5db",titleColor:"#d1d5db"},legend:{labelColor:"#d1d5db",titleColor:"#d1d5db"},text:{color:"#d1d5db"},view:{stroke:"#666"}},Ece={light:{background:"transparent",boxplot:{ticks:!0}},dark:c3},Pce={light:{font:"sans-serif",background:"transparent",fieldTitle:"verbal",title:{align:"left",anchor:"start",color:"#31333F",titleFontStyle:"normal",fontWeight:600,fontSize:16,orient:"top",offset:26},header:{titleFontWeight:400,titleFontSize:16,titleColor:"#808495",titleFontStyle:"normal",labelFontSize:12,labelFontWeight:400,labelColor:"#808495",labelFontStyle:"normal"},axis:{labelFontSize:12,labelFontWeight:400,labelColor:"#808495",labelFontStyle:"normal",titleFontWeight:400,titleFontSize:14,titleColor:"#808495",titleFontStyle:"normal",ticks:!1,gridColor:"#e6eaf1",domain:!1,domainWidth:1,domainColor:"#e6eaf1",labelFlush:!0,labelFlushOffset:1,labelBound:!1,labelLimit:100,titlePadding:16,labelPadding:16,labelSeparation:4,labelOverlap:!0},legend:{labelFontSize:14,labelFontWeight:400,labelColor:"#808495",titleFontSize:14,titleFontWeight:400,titleFontStyle:"normal",titleColor:"#808495",titlePadding:5,labelPadding:16,columnPadding:8,rowPadding:4,padding:7,symbolStrokeWidth:4},range:{category:["#0068c9","#83c9ff","#ff2b2b","#ffabab","#29b09d","#7defa1","#ff8700","#ffd16a","#6d3fc0","#d5dae5"],diverging:["#7d353b","#bd4043","#ff4b4b","#ff8c8c","#ffc7c7","#a6dcff","#60b4ff","#1c83e1","#0054a3","#004280"],ramp:["#e4f5ff","#c7ebff","#a6dcff","#83c9ff","#60b4ff","#3d9df3","#1c83e1","#0068c9","#0054a3","#004280"],heatmap:["#e4f5ff","#c7ebff","#a6dcff","#83c9ff","#60b4ff","#3d9df3","#1c83e1","#0068c9","#0054a3","#004280"]},view:{columns:1,strokeWidth:0,stroke:"transparent",continuousHeight:350,continuousWidth:400},concat:{columns:1},facet:{columns:1},mark:{tooltip:!0,color:"#0068C9"},bar:{binSpacing:4,discreteBandSize:{band:.85}},boxplot:{ticks:!0},axisDiscrete:{grid:!1},axisXPoint:{grid:!1},axisTemporal:{grid:!1},axisXBand:{grid:!1}},dark:{font:"sans-serif",background:"transparent",fieldTitle:"verbal",title:{align:"left",anchor:"start",color:"#fafafa",titleFontStyle:"normal",fontWeight:600,fontSize:16,orient:"top",offset:26},header:{titleFontWeight:400,titleFontSize:16,titleColor:"#e6eaf1",titleFontStyle:"normal",labelFontSize:12,labelFontWeight:400,labelColor:"#e6eaf1",labelFontStyle:"normal"},axis:{labelFontSize:12,labelFontWeight:400,labelColor:"#e6eaf1",labelFontStyle:"normal",titleFontWeight:400,titleFontSize:14,titleColor:"#e6eaf1",titleFontStyle:"normal",ticks:!1,gridColor:"#31333F",domain:!1,domainWidth:1,domainColor:"#31333F",labelFlush:!0,labelFlushOffset:1,labelBound:!1,labelLimit:100,titlePadding:16,labelPadding:16,labelSeparation:4,labelOverlap:!0},legend:{labelFontSize:14,labelFontWeight:400,labelColor:"#e6eaf1",titleFontSize:14,titleFontWeight:400,titleFontStyle:"normal",titleColor:"#e6eaf1",titlePadding:5,labelPadding:16,columnPadding:8,rowPadding:4,padding:7,symbolStrokeWidth:4},range:{category:["#83c9ff","#0068c9","#ffabab","#ff2b2b","#7defa1","#29b09d","#ffd16a","#ff8700","#6d3fc0","#d5dae5"],diverging:["#7d353b","#bd4043","#ff4b4b","#ff8c8c","#ffc7c7","#a6dcff","#60b4ff","#1c83e1","#0054a3","#004280"],ramp:["#004280","#0054a3","#0068c9","#1c83e1","#3d9df3","#60b4ff","#83c9ff","#a6dcff","#c7ebff","#e4f5ff"],heatmap:["#004280","#0054a3","#0068c9","#1c83e1","#3d9df3","#60b4ff","#83c9ff","#a6dcff","#c7ebff","#e4f5ff"]},view:{columns:1,strokeWidth:0,stroke:"transparent",continuousHeight:350,continuousWidth:400}
9,boxplot:{ticks:{fill:"#e6eaf1"},rule:{color:"#e6eaf1"}},concat:{columns:1},facet:{columns:1},mark:{tooltip:!0,color:"#83C9FF"},bar:{binSpacing:4,discreteBandSize:{band:.85}},axisDiscrete:{grid:!1},axisXPoint:{grid:!1},axisTemporal:{grid:!1},axisXBand:{grid:!1}}},Uce={light:{area:{fill:Mi},bar:{fill:Mi},circle:{fill:Mi},line:{stroke:Mi},point:{stroke:Mi},rect:{fill:Mi},tick:{fill:Mi},arc:{fill:Mi},boxplot:{ticks:!0},background:"transparent",range:{category:["#5B8FF9","#61DDAA","#65789B","#F6BD16","#7262FD","#78D3F8","#9661BC","#F6903D","#008685","#F08BB4"],diverging:["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],heatmap:["#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"],ramp:["#EBCCFF","#CCB0FF","#AE95FF","#907BFF","#7262FD","#5349E0","#2F32C3","#001BA7","#00068C"]},scale:{continuous:{range:["#d4d4e8","#3b196f"]}}},dark:{...c3,area:{fill:Mi},bar:{fill:Mi},circle:{fill:Mi},line:{stroke:Mi},point:{stroke:Mi},rect:{fill:Mi},tick:{fill:Mi},arc:{fill:Mi},range:{category:["#5B8FF9","#61DDAA","#65789B","#F6BD16","#7262FD","#78D3F8","#9661BC","#F6903D","#008685","#F08BB4"],diverging:["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],heatmap:["#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"],ramp:["#EBCCFF","#CCB0FF","#AE95FF","#907BFF","#7262FD","#5349E0","#2F32C3","#001BA7","#00068C"]},scale:{continuous:{range:["#d4d4e8","#3b196f"]}}}},Ja="#38699b",xa="#7fa8ce",iR='"Source Han Serif SC", "Songti SC", "Noto Serif SC", Georgia, serif',$ce={light:{background:"transparent",area:{fill:Ja},bar:{fill:Ja,binSpacing:2},circle:{fill:Ja},line:{stroke:Ja,strokeWidth:2},point:{stroke:Ja,strokeWidth:1.5},rect:{fill:Ja},tick:{fill:Ja},arc:{fill:Ja},boxplot:{ticks:!0},title:{font:iR,fontWeight:600},axis:{gridColor:"#e3ddcf",gridDash:[1,3],domainColor:"#b3ac9c",tickColor:"#b3ac9c",labelColor:"#6e6a61",titleColor:"#4a453b"},legend:{labelColor:"#6e6a61",titleColor:"#4a453b"},header:{labelColor:"#6e6a61",titleColor:"#4a453b"},view:{stroke:"#e3ddcf"},range:{category:["#38699b","#d45e3c","#d9a73e","#4e8d74","#7d5fa6","#c05a78","#64a6b8","#9c6b3f","#8e96cc","#97a254"],diverging:["#93321c","#b04c2d","#cb6a45","#e19067","#efbb9c","#f2ede3","#bcd0d4","#8fb3bd","#62909f","#3c6c82","#1f4a63"],heatmap:["#faf6ed","#f0e3c8","#e5c99e","#daa871","#cc8250","#b85c3b","#9a3d2c","#742a22","#4c1d18"],ramp:["#f4f8f8","#deebea","#c2d9da","#9fc2c8","#78a6b2","#568a9c","#3c6e86","#28536d","#183b52","#0c2638"]},scale:{continuous:{range:["#deebea","#28536d"]}}},dark:{background:"transparent",area:{fill:xa},bar:{fill:xa,binSpacing:2},circle:{fill:xa},line:{stroke:xa,strokeWidth:2},point:{stroke:xa,strokeWidth:1.5},rect:{fill:xa},tick:{fill:xa},arc:{fill:xa},boxplot:{ticks:{fill:"#c9c2b4"},rule:{color:"#c9c2b4"}},title:{font:iR,fontWeight:600,color:"#ece5d8"},axis:{gridColor:"#3a362e",gridDash:[1,3],domainColor:"#c9c2b4",tickColor:"#c9c2b4",labelColor:"#c9c2b4",titleColor:"#c9c2b4"},legend:{labelColor:"#c9c2b4",titleColor:"#c9c2b4"},header:{labelColor:"#c9c2b4",titleColor:"#c9c2b4"},text:{color:"#c9c2b4"},view:{stroke:"#3a362e"},range:{category:["#7fa8ce","#e68a66","#e5c168","#7cb89e","#a98fcc","#d98ba1","#8fc6d4","#c09468","#aeb5de","#b8c177"],diverging:["#93321c","#b04c2d","#cb6a45","#e19067","#efbb9c","#f2ede3","#bcd0d4","#8fb3bd","#62909f","#3c6c82","#1f4a63"],heatmap:["#4c1d18","#742a22","#9a3d2c","#b85c3b","#cc8250","#daa871","#e5c99e","#f0e3c8","#faf6ed"],ramp:["#0c2638","#183b52","#28536d","#3c6e86","#568a9c","#78a6b2","#9fc2c8","#c2d9da","#deebea","#f4f8f8"]},scale:{continuous:{range:["#183b52","#c2d9da"]}}}},Ya="#f4636e",Ga="#ff8a8f",Qce={light:{background:"transparent",area:{fill:Ya},bar:{fill:Ya,binSpacing:5,cornerRadiusEnd:4},circle:{fill:Ya},line:{stroke:Ya,strokeWidth:2.5},point:{filled:!0,fill:Ya,size:45},rect:{fill:Ya},tick:{fill:Ya},arc:{fill:Ya},boxplot:{ticks:!0},axis:{gridColor:"#eef0f4",domainColor:"#d8dce4",tickColor:"#d8dce4",labelColor:"#5a6172",titleColor:"#5a6172"},legend:{labelColor:"#5a6172",titleColor:"#5a6172"},header:{labelColor:"#5a6172",titleColor:"#5a6172"},view:{stroke:"#eef0f4"},range:{category:["#f4636e","#35c4b5","#ffc145","#7b61ff","#3d9bf5","#71c24f","#ff9052","#ef6ec0","#2c9c6e","#8d96a8"],diverging:["#b3253a","#d24e56","#ea7a78","#f8a79e","#fdd3c8","#f3f1ee","#c9e0fb","#9ac4f5","#6ba5ec","#3d83db","#1d5fbf"],heatmap:["#fff3c9","#ffde8a","#ffc145","#ff9052","#f4636e","#d6407e","#a82f8b","#712a86","#43206b"],ramp:["#f6f4ff","#e5deff","#cfc2ff","#b5a3ff","#9a82fb","#7f63ee","#654ad5","#4c35b2","#352387","#20155c"]},scale:{continuous:{range:["#e5deff","#4c35b2"]}}},dark:{background:"transparent",area:{fill:Ga},bar:{fill:Ga,binSpacing:5,cornerRadiusEnd:4},circle:{fill:Ga},line:{stroke:Ga,strokeWidth:2.5},point:{filled:!0,fill:Ga,size:45},rect:{fill:Ga}
9,tick:{fill:Ga},arc:{fill:Ga},boxplot:{ticks:{fill:"#b9becc"},rule:{color:"#b9becc"}},title:{color:"#eceef5"},axis:{gridColor:"#2b2d3a",domainColor:"#b9becc",tickColor:"#b9becc",labelColor:"#b9becc",titleColor:"#b9becc"},legend:{labelColor:"#b9becc",titleColor:"#b9becc"},header:{labelColor:"#b9becc",titleColor:"#b9becc"},text:{color:"#b9becc"},view:{stroke:"#2b2d3a"},range:{category:["#ff8a8f","#5bd9c9","#ffd06e","#9c88ff","#6fb6ff","#93d46f","#ffab7a","#f794d4","#57bf92","#a3acbe"],diverging:["#b3253a","#d24e56","#ea7a78","#f8a79e","#fdd3c8","#f3f1ee","#c9e0fb","#9ac4f5","#6ba5ec","#3d83db","#1d5fbf"],heatmap:["#43206b","#712a86","#a82f8b","#d6407e","#f4636e","#ff9052","#ffc145","#ffde8a","#fff3c9"],ramp:["#20155c","#352387","#4c35b2","#654ad5","#7f63ee","#9a82fb","#b5a3ff","#cfc2ff","#e5deff","#f6f4ff"]},scale:{continuous:{range:["#352387","#cfc2ff"]}}}},nR={vega:Ece,g2:Uce,streamlit:Pce,danqing:$ce,sodapop:Qce},Dce=e=>({light:{area:{fill:e},bar:{fill:e},circle:{fill:e},line:{stroke:e},point:{stroke:e},rect:{fill:e},tick:{fill:e},boxplot:{fill:e},errorbar:{stroke:e},errorband:{fill:e},arc:{fill:e},background:"transparent"},dark:{...c3,area:{fill:e},bar:{fill:e},circle:{fill:e},line:{stroke:e},point:{stroke:e},rect:{fill:e},tick:{fill:e},boxplot:{fill:e},errorbar:{stroke:e},errorband:{fill:e},arc:{fill:e}}}),Ace=e=>({light:{range:{category:{scheme:e},diverging:{scheme:e},heatmap:{scheme:e},ordinal:{scheme:e},ramp:{scheme:e}}},dark:{range:{category:{scheme:e},diverging:{scheme:e},heatmap:{scheme:e},ordinal:{scheme:e},ramp:{scheme:e}}}}),P9={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f",blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033
9059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"};function ZB(e){const t=e.length/6|0,i=new Array(t);for(let n=0;n<t;)i[n]="#"+e.slice(n*6,++n*6);return i}Object.entries(P9).map(([e,t])=>({name:e,value:ZB(t)}));const U9=e=>ZB(P9[e]??P9.tableau10),hx=e=>e&&typeof e=="object"&&e.constructor===Object,WB=(e,t)=>{if(hx(e)&&hx(t)){const i={...e};return Object.keys(t).forEach(n=>{i[n]=hx(i[n])?WB(i[n],t[n]):t[n]}),i}return t},qce=(...e)=>e.reduce((t,i)=>WB(t,i),{});function ere(e){var u;const{vizThemeConfig:t,mediaTheme:i,colorPalette:n,primaryColor:s}=e,l=(typeof t=="string"?nR[t]:t)??nR.vega,c=s?Dce(s):{},r=n?Ace(n):{};return(u=qce(l,c,r))==null?void 0:u[i]}function sR(e){if(e){if(e instanceof Array)return e;if(typeof e=="object"&&"scheme"in e)return e.scheme instanceof Array?e.scheme:U9(e.scheme)}}function tre(e){var l,c,r,a;const t=((l=e.point)==null?void 0:l.stroke)??((c=e.point)==null?void 0:c.fill)??Mi,i=typeof t=="string"?t:Mi,n=sR((r=e.range)==null?void 0:r.category)??U9("tableau10"),s=sR((a=e.range)==null?void 0:a.ramp)??U9("blues");return{primaryColor:i,nominalPalette:n,quantitativePalette:s}}function ire(e,t){if(e.length<2)return e[0]==="temporal"||e[0]==="quantitative"||t===!1?"tick":"bar";const i=new Map;["nominal","ordinal","quantitative","temporal"].forEach(n=>{i.set(n,0)});for(let n of e)i.set(n,i.get(n)+1);return i.get("nominal")===1?t===!1?"tick":"bar":i.get("ordinal")===1?"bar":i.get("temporal")===1&&i.get("quantitative")===1?"line":(i.get("quantitative")===2,"point")}const Et={fid:"",name:"",semanticType:"quantitative",analyticType:"measure",aggName:"sum"};function nre(e){return e==="text"?new Set(["text","color","size","x","y","xOffset","yOffset","opacity"]):e==="arc"?new Set(["opacity","color","size","theta","radius"]):new Set(["column","opacity","color","row","size","x","y","xOffset","yOffset","shape"])}function sre(e){switch(e){case"iso_year":case"year":return"utcyear";case"quarter":return"utcyearquarter";case"month":return"utcyearmonth";case"iso_week":case"week":return"utcyearweek";case"day":return"utcyearmonthdate";case"hour":return"utcyearmonthdatehours";case"minute":return"utcyearmonthdatehoursminutes";case"second":return"utcyearmonthdatehoursminutesseconds"}return e}function lre(e){switch(e){case"iso_year":return"%G";case"iso_week":return"%G W%V"}}function Zm(e){return e.replace(/([\"\'\.\[\]\/\\])/g,"\\$1").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r")}function cre(e){const t=nre(e.geomType),i={};return Object.keys(e).filter(n=>
9t.has(n)).forEach(n=>{var l,c,r,a;const s=e[n];if(s!==Et){if(i[n]={field:Zm(s.fid),title:s.name,type:s.semanticType},s.computed&&((l=s.expression)==null?void 0:l.op)==="bin"){const u=i[n].field;i[n].field=`${u}[0]`,delete i[n].type,i[n].bin={binned:!0},i[n].formatType="formatBin",i[n].format=(c=e.vegaConfig)==null?void 0:c.numberFormat,(n==="x"||n==="y")&&(i[`${n}2`]={field:`${u}[1]`,formatType:"formatBin",format:(r=e.vegaConfig)==null?void 0:r.numberFormat})}if(s.analyticType!=="measure"&&(i[n].aggregate=null),s.analyticType==="measure"&&(i[n].type="quantitative"),s.semanticType==="temporal"&&(i[n].scale={type:"utc"}),s.semanticType==="temporal"&&s.timeUnit&&(s.timeUnit.startsWith("iso")&&(i[n].format=lre(s.timeUnit)),i[n].timeUnit=sre(s.timeUnit)),n==="color"&&((a=s.expression)==null?void 0:a.op)==="paint"){const u=s.expression.params.find(d=>d.type==="map"||d.type==="newmap").value,o=u.usedColor.map(d=>u.dict[d]).filter(Boolean);i[n].scale={domain:o.map(d=>d.name),range:o.map(d=>d.color)}}}}),i.x&&(i.x.axis={labelOverlap:!0}),i&&i.y&&(i.y.axis={labelOverlap:!0}),i.x&&i.y&&(e.x.sort&&e.x.sort||e.y&&e.y.sort)&&(e.x.sort!=="none"&&(e.y.sort==="none"||!e.y.sort)?i.x.sort={encoding:"y",order:e.x.sort}:e.y.sort&&e.y.sort!=="none"&&(e.x.sort==="none"||!e.x.sort)&&(i.y.sort={encoding:"x",order:e.y.sort})),i}function rre(e,t){Object.values(e).forEach(i=>{if(i.aggregate===null)return;const n=t.find(s=>Zm(s.fid)===i.field&&(s.analyticType==="measure"||s.fid===Nm));n&&n.fid===Nm?(i.title="Count",i.field=Zm(us(n.fid,n.aggName))):n&&(i.title=Cf(n.name,n.aggName),i.field=Zm(us(n.fid,n.aggName)))})}function are(e,t){if(t==="stack"||t==="zero")return;let i=t==="none"?null:t;const n=["x","y","theta","radius"];for(let s of n)e[s]&&e[s].type==="quantitative"&&(e[s].stack=i)}function Hl(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];throw Error("[Immer] minified error nr: "+e+(i.length?" "+i.map(function(s){return"'"+s+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function Rm(e){return!!e&&!!e[Ls]}function Hu(e){var t;return!!e&&(function(i){if(!i||typeof i!="object")return!1;var n=Object.getPrototypeOf(i);if(n===null)return!0;var s=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return s===Object||typeof s=="function"&&Function.toString.call(s)===pre}(e)||Array.isArray(e)||!!e[mR]||!!(!((t=e.constructor)===null||t===void 0)&&t[mR])||r3(e)||a3(e))}function Tf(e,t,i){i===void 0&&(i=!1),Xb(e)===0?(i?Object.keys:b3)(e).forEach(function(n){i&&typeof n=="symbol"||t(n,e[n],e)}):e.forEach(function(n,s){return t(s,n,e)})}function Xb(e){var t=e[Ls];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:r3(e)?2:a3(e)?3:0}function $9(e,t){return Xb(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ore(e,t){return Xb(e)===2?e.get(t):e[t]}function XB(e,t,i){var n=Xb(e);n===2?e.set(t,i):n===3?e.add(i):e[t]=i}function ure(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function r3(e){return hre&&e instanceof Map}function a3(e){return fre&&e instanceof Set}function su(e){return e.o||e.t}function o3(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=yre(e);delete t[Ls];for(var i=b3(t),n=0;n<i.length;n++){var s=i[n],l=t[s];l.writable===!1&&(l.writable=!0,l.configurable=!0),(l.get||l.set)&&(t[s]={configurable:!0,writable:!0,enumerable:l.enumerable,value:e[s]})}return Object.create(Object.getPrototypeOf(e),t)}function u3(e,t){return t===void 0&&(t=!1),d3(e)||Rm(e)||!Hu(e)||(Xb(e)>1&&(e.set=e.add=e.clear=e.delete=dre),Object.freeze(e),t&&Tf(e,function(i,n){return u3(n,!0)},!0)),e}function dre(){Hl(2)}function d3(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function Bc(e){var t=Zre[e];return t||Hl(18,e),t}function lR(){return Mf}function fx(e,t){t&&(Bc("Patches"),e.u=[],e.s=[],e.v=t)}function pW(e){Q9(e),e.p.forEach(mre),e.p=null}function Q9(e){e===Mf&&(Mf=e.l)}function cR(e){return Mf={p:[],l:Mf,h:e,m:!0,_:0}}function mre(e){var t=e[Ls];t.i===0||t.i===1?t.j():t.g=!0}function px(e,t){t._=t.p.length;var i=t.p[0],n=e!==void 0&&e!==i;return t.h.O||Bc("ES5").S(t,e,n),n?(i[Ls].P&&(pW(t),Hl(4)),Hu(e)&&(e=yW(t,e),t.l||ZW(t,e)),t.u&&Bc("Patches").M(i[Ls].t,e,t.u,t.s)):e=yW(t,i,[]),pW(t),t.u&&t.v(t.u,t.s),e!==JB?e:void 0}function yW(e,t,i){if(d3(t))return t;var n=t[Ls];if(!n)return Tf(t,function(r,a){return rR(e,n,t,r,a,i)},!0),t;if(n.A!==e)return t;if(!n.P)return ZW(e,n.t,!0),n.t;if(!n.I){n.I=!0,n.A._--;var s=n.i===4||n.i===5?n.o=o3(n.k):n.o,l=s,c=!1;n.i===3&&(l=new Set(s),s.clear(),c=!0),Tf(l,function(r,a){return rR(e,n,s,r,a,i,c)}),ZW(e,s,!1),i&&e.u&&Bc("Patches").N(n,i,e.u,e.s)}return n.o}function rR(e,t,i,n,s,l,c){if(Rm(s)){var r=yW(e,s,l&&t&&t.i!==3&&!$9(t.R,n)?l.concat(n):void 0);if(XB(i,n,r),!Rm(r))return;e.m=!1}else c&&i.add(s);if(Hu(s)&&!d3(s)){if(!e.h.D&&e._<1)return;yW(e,s),t&&t.A.l||ZW(e,s)}}function ZW(e,t,i){i===void 0&&(i=!1),!e.l&&e.h.D&&e.m&&u3(t,i)}function yx(e,t){var i=e[Ls];return(i?su(i):e)[t]}function aR(e,t){if(t in e)for(var i=Object.getPrototypeOf(e);i;){var n=Object.getOwnPropertyDescriptor(i,t);if(n)return n;i=Object.getPrototypeOf(i)}}function D9(e){e.P||(e.P=!0,e.l&&D9(e.l))}function Zx(e){e.o||(e.o=o3(e.t))}function A9(e,t,i){var n=r3(t)?Bc("MapSet").F(t,i):a3(t)?Bc("MapSet").T(t,i):e.O?function(s,l){var c=Array.isArray(s),r={i:c?1:0,A:l?l.A:lR(),P:!1,I:!1,R:{},l,t:s,k:null,o:null,j:null,C:!1},a=r,u=q9;c&&(a=[r],u=Sh);var o=Proxy.revocable(a,u),d=o.revoke,b=o.proxy;return r.k=b,r.j=d,b}(t,i):Bc("ES5").J(t,i);return(i?i.A:lR()).p.push(n),n}function bre(e){return Rm(e)||Hl(22,e),function t(i){if(!Hu(i))return i;var n,s=i[Ls],l=Xb(i);if(s){if(!s.P&&(s.i<4||!Bc("ES5").K(s)))return s.t;s.I=!0,n=oR(i,l),s.I=!1}else n=oR(i,l);return Tf(n,function(c,r){s&&ore(s.t,c)===r||XB(n,c,t(r))}),l===3?new Set(n):n}(e)}function oR(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return o3(e)}var uR,Mf,m3=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",hre=typeof Map<"u",fre=typeof Set<"u",dR=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",JB=m3?Symbol.for("immer-nothing"):((uR={})["immer-nothing"]=!0,uR),mR=m3?Symbol.for("immer-draftable"):"__$immer_draftable",Ls=m3?Symbol.for("immer-state"):"__$immer_state",pre=""+Object.prototype.constructor,b3=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,yre=Object.getOwnPropertyDescriptors||function(e){var t={};return b3(e).forEach(function(i){t[i]=Object.getOwnPropertyDescriptor(e,i)}),t},Zre={},q9={get:function(e,t){if(t===Ls)return e;var i=su(e);if(!$9(i,t))return function(s,l,c){var r,a=aR(l,c);return a?"value"in a?a.value:(r=a.get)===null||r===void 0?void 0:r.call(s.k):void 0}(e,i,t);var n=i[t];return e.I||!Hu(n)?n:n===yx(e.t,t)?(Zx(e),e.o[t]=A9(e.A.h,n,e)):n},has:function(e,t){return t in su(e)},ownKeys:function(e){return Reflect.ownKeys(su(e))},set:function(e,t,i){var n=aR(su(e),t);if(n!=null&&n.set)return n.set.call(e.k,i),!0;if(!e.P){var s=yx(su(e),t),l=s==null?void 0:s[Ls];if(l&&l.t===i)return e.o[t]=i,e.R[t]=!1,!0;if(ure(i,s)&&(i!==void 0||$9(e.t,t)))return!0;Zx(e),D9(e)}return e.o[t]===i&&(i!==void 0||t in e.o)||Number.isNaN(i)&&Number.isNaN(e.o[t])||(e.o[t]=i,e.R[t]=!0),!0},deleteProperty:function(e,t){return yx(e.t,t)!==void 0||t in e.t?(e.R[t]=!1,Zx(e),D9(e)):delete e.R[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var i=su(e),n=Reflect.getOwnPropertyDescriptor(i,t);return n&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:n.enumerable,value:i[t]}},defineProperty:function(){Hl(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){Hl(12)}},Sh={};Tf(q9,function(e,t){Sh[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Sh.deleteProperty=function(e,t){return Sh.set.call(this,e,t,void 0)},Sh.set=function(e,t,i){return q9.set.call(this,e[0],t,i,e[0])};var Wre=function(){function e(i){var n=this;this.O=dR,this.D=!0,this.produce=function(s,l,c){if(typeof s=="function"&&typeof l!="function"){var r=l;l=s;var a=n;return function(Z){var X=this;Z===void 0&&(Z=r);for(var J=arguments.length,V=Array(J>1?J-1:0),g=1;g<J;g++)V[g-1]=arguments[g];return a.produce(Z,function(I){var v;return(v=l).call.apply(v,[X,I].concat(V))})}}var u;if(typeof l!="function"&&Hl(6),c!==void 0&&typeof c!="function"&&Hl(7),Hu(s)){var o=cR(n),d=A9(n,s,void 0),b=!0;try{u=l(d),b=!1}finally{b?pW(o):Q9(o)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(Z){return fx(o,c),px(Z,o)},function(Z){throw pW(o),Z}):(fx(o,c),px(u,o))}if(!s||typeof s!="object"){if((u=l(s))===void 0&&(u=s),u===JB&&(u=void 0),n.D&&u3(u,!0),c){var h=[],p=[];Bc("Patches").M(s,u,h,p),c(h,p)}return u}Hl(21,s)},this.produceWithPatches=function(s,l){if(typeof s=="function")return function(u){for(var o=arguments.length,d=Array(o>1?o-1:0),b=1;b<o;b++)d[b-1]=arguments[b];return n.produceWithPatches(u,function(h){return s.apply(void 0,[h].concat(d))})};var c,r,a=n.produce(s,l,function(u,o){c=u,r=o});
9return typeof Promise<"u"&&a instanceof Promise?a.then(function(u){return[u,c,r]}):[a,c,r]},typeof(i==null?void 0:i.useProxies)=="boolean"&&this.setUseProxies(i.useProxies),typeof(i==null?void 0:i.autoFreeze)=="boolean"&&this.setAutoFreeze(i.autoFreeze)}var t=e.prototype;return t.createDraft=function(i){Hu(i)||Hl(8),Rm(i)&&(i=bre(i));var n=cR(this),s=A9(this,i,void 0);return s[Ls].C=!0,Q9(n),s},t.finishDraft=function(i,n){var s=i&&i[Ls],l=s.A;return fx(l,n),px(void 0,l)},t.setAutoFreeze=function(i){this.D=i},t.setUseProxies=function(i){i&&!dR&&Hl(20),this.O=i},t.applyPatches=function(i,n){var s;for(s=n.length-1;s>=0;s--){var l=n[s];if(l.path.length===0&&l.op==="replace"){i=l.value;break}}s>-1&&(n=n.slice(s+1));var c=Bc("Patches").$;return Rm(i)?c(i,n):this.produce(i,function(r){return c(r,n)})},e}(),Cs=new Wre,xB=Cs.produce;Cs.produceWithPatches.bind(Cs);Cs.setAutoFreeze.bind(Cs);Cs.setUseProxies.bind(Cs);Cs.applyPatches.bind(Cs);Cs.createDraft.bind(Cs);Cs.finishDraft.bind(Cs);function Xre(e,t=[],i=!1){const n=Object.keys(e).filter(s=>s!=="tooltip"&&s!=="x2"&&s!=="y2").map(s=>xB({field:e[s].field.replace("[0]",""),type:e[s].type,title:e[s].title},l=>{e[s].timeUnit&&!e[s].format&&(l.timeUnit=e[s].timeUnit),e[s].scale&&(l.scale=e[s].scale),e[s].formatType&&(l.formatType=e[s].formatType),e[s].format&&(l.format=e[s].format)})).concat(t.map(s=>({field:i&&s.analyticType==="measure"?us(s.fid,s.aggName):s.fid,title:i&&s.analyticType==="measure"?Cf(s.name,s.aggName):s.name,type:s.semanticType})));e.tooltip=n}const Jre=[/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/,/^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/,/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$/,/^\d{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/,/^\d{4}\.(0[1-9]|1[0-2])\.(0[1-9]|[12][0-9]|3[01])$/,/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\s\d{2}:\d{2}:\d{2}$/,/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\d{2}:\d{2}:\d{2}$/,/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\d{2}:\d{2}:\d{2}.\d{3}Z$/,/^([1-9]|1[0-2])\/([1-9]|[12][0-9]|3[01])\/\d{4}$/,/^([1-9]|[12][0-9]|3[01])\/([1-9]|1[0-2])\/\d{4}$/],xre=["%Y-%m-%d","%m/%d/%Y","%d/%m/%Y","%Y/%m/%d","%Y.%m.%d","%Y-%m-%d %H:%M:%S","%Y-%m-%dT%H:%M:%S","%Y-%m-%dT%H:%M:%S.%gZ","%f/%e/%Y","%e/%f/%Y"];function Yre(e){if(typeof e=="number")return"timestamp";const t=Jre.findIndex(i=>i.test(e));return t>=0?xre[t]:""}function Eo(e,t){return new Proxy(new Date(e.getTime()-t*6e4),{get(i,n){if(typeof n=="string"){if(n==="getTime")return()=>i.getTime()+t*6e4;if(n.startsWith("get")&&!n.includes("UTC"))return i[n.replace("get","getUTC")].bind(i);if(n.startsWith("set")&&!n.includes("UTC"))return(...s)=>i[n.replace("set","setUTC")].call(i,...s)+t*6e4}return i[n].bind(i)}})}const Gre=[/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/,/^\d{4}-(0[1-9]|1[0-2])$/,/^\d{4}$/],Vre=["%Y","%Y-%m","%Y-%m-%d"];function bR(e=new Date().getTimezoneOffset()){function t(...i){if(i.length>1){const n=e*6e4+Date.UTC(...i);return Eo(new Date(n),e)}if(i.length>0){const n=i[0];if(n instanceof Date)return Eo(n,e);if(typeof n=="string"){if(Gre.find(c=>c.test(n))){const c=new Date(n).getTime();return Eo(new Date(c+e*6e4),e)}if(/(Z|[\+\-][0-2][0-9])$/.test(n))return Eo(new Date(n),e);const s=new Date(n),l=s.getTime()-s.getTimezoneOffset()*6e4;return Eo(new Date(l+e*6e4),e)}return n==null?null:Eo(new Date(n),e)}return Eo(new Date,e)}return t}function YB(e,t){const i=bR(e??new Date().getTimezoneOffset()),n=bR(t??new Date().getTimezoneOffset());function s(...l){return i(n(...l))}return s}function Ire(e,t){return Object.keys(e).forEach(i=>{var n;if(e[i].bin&&((n=t[0])!=null&&n[e[i].field.replace("[0]","")])){const s=t[0][e[i].field.replace("[0]","")];e[i].bin.step=s[1]-s[0]}}),e}function hR(e){return e===0?"":`${e>0?"+":"-"}${Math.abs(e)}`}function fR(e){const{x:t,y:i,color:n,opacity:s,size:l,shape:c,theta:r,radius:a,text:u,row:o,column:d,xOffset:b,yOffset:h,details:p,defaultAggregated:Z,stack:X,geomType:J,hasLegend:V=!0,hideLegend:g=!1,displayOffset:I,dataSource:v,vegaConfig:k}=e,N=[t,i,n,s,l,c,o,d,b,h,r,a,u];let C=J,f={};if(V?g&&(f.legend={gradientOpacity:0,labelColor:"transparent",symbolOpacity:0,symbolStrokeColor:"transparent",titleColor:"transparent",titleOpacity:0}):f.legend={disable:!0},J==="auto"){const K=[];t!==Et&&K.push(t.semanticType),i!==Et&&K.push(i.semanticType),C=ire(K,Z)}const w=N.filter(K=>K.semanticType==="temporal").map(K=>{var U;let B=(I??new Date().getTimezoneOffset())*-6e4;const _=Zm(K.fid),j=(U=v[0])==null?void 0:U[K.fid];if(j){const $=Yre(j);if($!=="timestamp")return B+=(K.offset??new Date().getTimezoneOffset())*6e4,Vre.includes($)||(B-=new Date().getTimezoneOffset()*6e4),B===0?null:{calculate:`datum[${JSON.stringify(_)}]!==null?(toDate(datum[${JSON.stringify(_)}])${hR(B)}):null`,as:_}}return B===0?null:{calculate:`datum[${JSON.stringify(_)}]!==null?(datum[${JSON.stringify(_)}]${hR(B)}):null`,as:_}}
9).filter(Boolean);let x=cre({geomType:C,x:t,y:i,color:n,opacity:s,size:l,shape:c,row:o,column:d,xOffset:b,yOffset:h,theta:r,radius:a,details:p,text:u,displayOffset:I,vegaConfig:k});return Z&&rre(x,N),Ire(x,v),Xre(x,p,Z),are(x,X),{config:f,transform:w,mark:{type:C,opacity:.96,tooltip:{content:"data"}},encoding:x}}function GB(e,t,i,n){if(typeof e=="function"){if(!t)return;const s=i.map(l=>l[t.fid]);return e({semanticType:t.semanticType,theme:n,values:s})}return e}function pR(e,t,i,n){const s={...t.encoding};function l(c,r){if(r=r??c,e[c]&&s[r])if(typeof e[c]=="function"){const a=s[r].field,u=i.map(o=>o[a]);s[r].scale=e[c]({semanticType:s[r].type,theme:n,values:u})}else s[r].scale=e[c]}return l("row","y"),l("column","x"),l("color"),l("opacity"),l("size"),l("radius"),l("theta"),{...t,encoding:s}}const VB=(e,t,i,n)=>{const{nominalPalette:s,primaryColor:l,quantitativePalette:c}=Q.useMemo(()=>tre(n),[n]),r=Q.useMemo(()=>()=>l,[l]),a=Q.useMemo(()=>t?i&&t.aggName&&t.analyticType==="measure"?us(t.fid,t.aggName):t.fid:"",[t,i]),u=Q.useMemo(()=>!t||t.semanticType==="nominal"?[0,0]:e.reduce((p,{[a]:Z})=>(Z<p[0]&&(p[0]=Z),Z>p[1]&&(p[1]=Z),p),[1/0,-1/0]),[e,t,a]),o=Q.useMemo(()=>!t||t.semanticType!=="nominal"?[]:[...e.reduce((p,Z)=>(p.add(Z[a]),p),new Set)],[e,t,a]),d=Q.useMemo(()=>{const[p,Z]=u,X=c.map((V,g)=>p+(Z-p)*g/(c.length-1)),J=$X().domain(X).range(c);return function(g){return J(Number(g[a]))}},[u,a,c]),b=Q.useMemo(()=>{const p=QX().domain(o).range(s);return function(X){return p(X[a])}},[o,s]),h=Q.useMemo(()=>o.map(p=>({name:p,color:b({[a]:p})})),[o,b]);return t?t.semanticType==="quantitative"||t.semanticType==="temporal"?{mapper:d,display:{type:t.semanticType,color:c,domain:u}}:{mapper:b,display:{type:"nominal",colors:h}}:{mapper:r}},IB=(e,t,i)=>Q.useMemo(()=>{let n,s;if(i&&(i.domain&&(n=Number(i.domain[0]),s=Number(i.domain[1])),Ca(i.domainMin)&&(n=i.domainMin),Ca(i.domainMax)&&(s=i.domainMax)),Ca(n)&&Ca(s))return[n,s];if(!e)return[n??0,s??0];const l=t.map(a=>Number(a[e])).filter(a=>!isNaN(a));if(l.length===0)return[n??0,s??0];const[c,r]=l.slice(1).reduce((a,u)=>(u<a[0]&&(a[0]=u),u>a[1]&&(a[1]=u),a),[l[0],l[0]]);return[n??c,s??r]},[e,t,i]),gB=(e,t,i)=>Q.useMemo(()=>{let n,s;return i&&(i.range&&(n=Number(i.range[0]),s=Number(i.range[1])),Ca(i.rangeMin)&&(n=i.rangeMin),Ca(i.rangeMax)&&(s=i.rangeMax)),[n??e,s??t]},[i,t,e]),gre=2,vre=10,zre=3,wre=(e,t,i,n)=>{const s=Q.useMemo(()=>t?i&&t.aggName&&t.analyticType==="measure"?us(t.fid,t.aggName):t.fid:"",[t,i]),l=Q.useMemo(()=>{if(n.size)return GB(n.size,t,e,"light")},[n,e,t]),[c,r]=IB(s,e,l),[a,u]=gB(gre,vre,l);return Q.useCallback(function(d){const b=Math.max(a,Math.min(zre,u));if(!s)return b;const h=Number(d[s]);if(isNaN(h))return b;const p=Math.max(Math.min((h-c)/(r-c),1),0);return a+Math.sqrt(p)*(u-a)},[s,c,r,a,u,i])},Hre=.3,Nre=.8,Rre=1,vB=(e,t,i,n)=>{const s=Q.useMemo(()=>t?i&&t.aggName&&t.analyticType==="measure"?us(t.fid,t.aggName):t.fid:"",[t,i]),l=Q.useMemo(()=>{if(n.opacity)return GB(n.opacity,t,e,"light")},[n,e,t]),[c,r]=IB(s,e,l),[a,u]=gB(Hre,Nre,l);return Q.useCallback(function(d){if(!s)return Rre;const b=Number(d[s]);if(isNaN(b))return 0;const h=Math.max(Math.min((b-c)/(r-c),1),0);return a+h*(u-a)},[s,c,r,a,u,i])},kre=e=>`${e}`,Fre=(e,t)=>{const{timeFormat:i="%b %d, %Y",numberFormat:n}=t,s=Q.useMemo(()=>{const r=NI(i);return a=>{if(typeof a!="number"&&typeof a!="string")return"";const u=new Date(a);return isNaN(u.getTime())?"Invalid Date":r(u)}},[i]),l=Q.useMemo(()=>{if(!n)return a=>typeof a!="number"?"":a.toLocaleString();const r=qu(n);return a=>typeof a!="number"?"":r(a)},[n]);return Q.useMemo(()=>e==="quantitative"?l:e==="temporal"?s:kre,[e,l,s])};function zB({bounds:e}){return rce().flyToBounds(e),null}const eG=Q.memo(function({allFields:t,vegaConfig:i,field:n,value:s}){const{fid:l,analyticType:c,aggName:r}=n,a=Q.useMemo(()=>{var d;const o=((d=t.find(b=>b.fid===l))==null?void 0:d.name)??l;return c==="measure"&&r?`${r}(${o})`:o},[t,l,c,r]),u=Fre(n.semanticType,i);return re.createElement("p",null,a,": ",u(s))}),wB=Q.createContext(null),Lp=()=>{const e=Q.useContext(wB);return e&&"current"in e?e:{current:null}},Sre=Q.forwardRef(({children:e},t)=>(Q.useImperativeHandle(t,()=>{let i="idle",n=[];return{get renderStatus(){return i},onRenderStatusChange:c=>(n.push(c),()=>{n=n.filter(a=>a!==c)}),updateRenderStatus:c=>
9{i!==c&&(i=c,n.forEach(r=>r(i)))},chartCount:1,chartIndex:0,openChart(){},exportChart:async(c="svg")=>({mode:c,title:"",nCols:0,nRows:0,charts:[],container:()=>null}),exportChartList:async function*(r="svg"){yield{mode:r,total:1,completed:0,index:0,data:{mode:r,title:"",nCols:0,nRows:0,charts:[],container:()=>null},hasNext:!1}}}},[]),re.createElement(wB.Provider,{value:t},e))),Lre=e=>t=>re.createElement(Sre,null,re.createElement(e,{...t})),my=15;function HB(e){const{display:t,field:i,aggerated:n}=e,s=n&&i.analyticType==="measure"&&i.aggName?`${i.aggName}(${i.name})`:i.name;return re.createElement("div",{className:"absolute right-5 top-5 bg-popover/30 rounded p-2",style:{zIndex:999}},t.type==="nominal"&&re.createElement("div",{className:"font-xs flex flex-col space-y-1"},re.createElement("div",{className:"font-medium max-w-[160px] overflow-hidden text-ellipsis whitespace-nowrap"},s),t.colors.slice(0,my).map(({name:l,color:c})=>re.createElement("div",{className:"flex space-x-1 items-center",key:l},re.createElement("div",{className:"w-3 h-3",style:{backgroundColor:c}}),re.createElement("div",null,l))),t.colors.length>my&&re.createElement("div",{className:"flex space-x-1 items-center"},re.createElement("div",{className:"w-3 h-3",style:{backgroundColor:t.colors[my].color}}),re.createElement("div",null,"...",t.colors.length-my," entries"))),t.type==="quantitative"&&re.createElement("div",{className:"font-xs flex flex-col space-y-1"},re.createElement("div",{className:"font-medium max-w-[160px] overflow-hidden text-ellipsis whitespace-nowrap"},s),re.createElement("div",{className:"flex space-x-1"},re.createElement("div",{className:"w-4 h-48",style:{background:`linear-gradient(${[...t.color].reverse().join(",")})`}}),re.createElement("div",{className:"font-xs flex flex-col justify-between"},re.createElement("div",null,Math.floor(t.domain[1])),re.createElement("div",null,Math.floor(t.domain[1]*.75+t.domain[0]*.25)),re.createElement("div",null,Math.floor(t.domain[1]*.5+t.domain[0]*.5)),re.createElement("div",null,Math.floor(t.domain[1]*.25+t.domain[0]*.75)),re.createElement("div",null,Math.floor(t.domain[0]))))))}const WW=(e,t)=>{const i=Number(e),n=Number(t);return i>=-90&&i<=90&&n>=-180&&n<=180},Cre=(e,t)=>`${typeof e=="number"?e:JSON.stringify(e)}, ${typeof t=="number"?t:JSON.stringify(t)}`,Wx=20,Tre=Q.forwardRef(function(t,i){const{name:n,data:s,allFields:l,latitude:c,longitude:r,color:a,opacity:u,size:o,details:d,defaultAggregated:b,vegaConfig:h,scales:p,tileUrl:Z}=t,X=Q.useMemo(()=>r&&c?s.map(x=>[Number(x[c.fid]),Number(x[r.fid])]).filter(x=>WW(x[0],x[1])):[],[r,c,s]),[J,V]=Q.useMemo(()=>{if(X.length>0){const[x,R]=X.reduce(([K,B],[_,j])=>(_<K[0][0]&&(K[0][0]=_),_>K[1][0]&&(K[1][0]=_),j<K[0][1]&&(K[0][1]=j),j>K[1][1]&&(K[1][1]=j),[K,[B[0]+j,B[1]+_]]),[[[...X[0]],[...X[0]]],[0,0]]);return[x,[R[0]/X.length,R[1]/X.length]]}return[[[-180,-90],[180,90]],[0,0]]},[X]),g=Q.useRef(null);Q.useEffect(()=>{var R;const x=(R=g.current)==null?void 0:R.getContainer();if(x){const K=new ResizeObserver(()=>{var B;(B=g.current)==null||B.invalidateSize()});return K.observe(x),()=>{K.unobserve(x)}}});const I=Lp();Q.useEffect(()=>{const x=I.current;x&&(x.exportChart=async R=>({mode:R,title:n||"untitled",nCols:0,nRows:0,charts:[],container:()=>{var K;return((K=g.current)==null?void 0:K.getContainer())??null},chartType:"map"}))},[]);const v=wre(s,o,b,p),k=vB(s,u,b,p),{mapper:N,display:C}=VB(s,a,b,h),f=Q.useMemo(()=>d.concat([o,a,u].filter(Boolean)).map(x=>({...x,key:b&&x.analyticType==="measure"&&x.aggName?us(x.fid,x.aggName):x.fid})),[b,d,o,a,u]),w=Q.useMemo(()=>{if(c&&r){const x=[],R=s.flatMap((K,B)=>{const _=K[c.fid],j=K[r.fid];if(!WW(_,j))return x.push([B,_,j]),[];const U=v(K),$=k(K),te=N(K);return[{key:`${B}-${U}-${$}-${te}`,center:[Number(_),Number(j)],radius:U,opacity:$,color:te,row:K}]});return x.length>0&&console.warn(`Failed to render ${x.length.toLocaleString()} markers of ${s.length.toLocaleString()} rows due to invalid lat/lng. 10-------- 11${`${x.slice(0,Wx).map(([K,B,_])=>`[${K+1}] ${Cre(B,_)}`).join(` 12`)}`+(x.length>Wx?`
13 ... and ${(x.length-Wx).toLocaleString()} more`:"")} 14`),R}else return[]},[c,r,s,v,k,N]);return re.createElement(oB,{attributionControl:!1,center:V,ref:g,zoom:5,bounds:J,preferCanvas:!0,style:{width:"100%",height:"100%",zIndex:1}},re.createElement(zB,{bounds:J}),Z===void 0&&re.createElement(bW,{className:"map-tile",attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),Z&&re.createElement(bW,{className:"map-tile",url:Z}),re.createElement(aB,{prefix:"Leaflet"}),w.map(({key:x,center:R,radius:K,opacity:B,color:_,row:j})=>re.createElement(_9,{key:x,center:R,radius:K,opacity:.8,fillOpacity:B,fillColor:_,color:"#00000022",stroke:!0,weight:1,fill:!0},f.length>0&&re.createElement(Fh,null,f.map((U,$)=>re.createElement(eG,{key:$,allFields:l,vegaConfig:h,field:U,value:j[U.key]}))))),C&&re.createElement(HB,{display:C,field:a}))});function Mre(e){return e}function Kre(e){if(e==null)return Mre;var t,i,n=e.scale[0],s=e.scale[1],l=e.translate[0],c=e.translate[1];return function(r,a){a||(t=i=0);var u=2,o=r.length,d=new Array(o);for(d[0]=(t+=r[0])*n+l,d[1]=(i+=r[1])*s+c;u<o;)d[u]=r[u],++u;return d}}function Bre(e,t){for(var i,n=e.length,s=n-t;s<--n;)i=e[s],e[s++]=e[n],e[n]=i}function NB(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(i){return yR(e,i)})}:yR(e,t)}function yR(e,t){var i=t.id,n=t.bbox,s=t.properties==null?{}:t.properties,l=RB(e,t);return i==null&&n==null?{type:"Feature",properties:s,geometry:l}:n==null?{type:"Feature",id:i,properties:s,geometry:l}:{type:"Feature",id:i,bbox:n,properties:s,geometry:l}}function RB(e,t){var i=Kre(e.transform),n=e.arcs;function s(o,d){d.length&&d.pop();for(var b=n[o<0?~o:o],h=0,p=b.length;h<p;++h)d.push(i(b[h],h));o<0&&Bre(d,p)}function l(o){return i(o)}function c(o){for(var d=[],b=0,h=o.length;b<h;++b)s(o[b],d);return d.length<2&&d.push(d[0]),d}function r(o){for(var d=c(o);d.length<4;)d.push(d[0]);return d}function a(o){return o.map(r)}function u(o){var d=o.type,b;switch(d){case"GeometryCollection":return{type:d,geometries:o.geometries.map(u)};case"Point":b=l(o.coordinates);break;case"MultiPoint":b=o.coordinates.map(l);break;case"LineString":b=c(o.arcs);break;case"MultiLineString":b=o.arcs.map(c);break;case"Polygon":b=a(o.arcs);break;case"MultiPolygon":b=o.arcs.map(a);break;default:return null}return{type:d,coordinates:b}}return u(t)}function _re(e,t){var i={},n={},s={},l=[],c=-1;t.forEach(function(u,o){var d=e.arcs[u<0?~u:u],b;d.length<3&&!d[1][0]&&!d[1][1]&&(b=t[++c],t[c]=u,t[o]=b)}),t.forEach(function(u){var o=r(u),d=o[0],b=o[1],h,p;if(h=s[d])if(delete s[h.end],h.push(u),h.end=b,p=n[b]){delete n[p.start];var Z=p===h?h:h.concat(p);n[Z.start=h.start]=s[Z.end=p.end]=Z}else n[h.start]=s[h.end]=h;else if(h=n[b])if(delete n[h.start],h.unshift(u),h.start=d,p=s[d]){delete s[p.end];var X=p===h?h:p.concat(h);n[X.start=p.start]=s[X.end=h.end]=X}else n[h.start]=s[h.end]=h;else h=[u],n[h.start=d]=s[h.end=b]=h});function r(u){var o=e.arcs[u<0?~u:u],d=o[0],b;return e.transform?(b=[0,0],o.forEach(function(h){b[0]+=h[0],b[1]+=h[1]})):b=o[o.length-1],u<0?[b,d]:[d,b]}function a(u,o){for(var d in u){var b=u[d];delete o[b.start],delete b.start,delete b.end,b.forEach(function(h){i[h<0?~h:h]=1}),l.push(b)}}return a(s,n),a(n,s),t.forEach(function(u){i[u<0?~u:u]||l.push([u])}),l}function Ore(e){return RB(e,jre.apply(this,arguments))}function jre(e,t,i){var n,s,l;if(arguments.length>1)n=Ere(e,t,i);else for(s=0,n=new Array(l=e.arcs.length);s<l;++s)n[s]=s;return{type:"MultiLineString",arcs:_re(e,n)}}function Ere(e,t,i){var n=[],s=[],l;function c(d){var b=d<0?~d:d;(s[b]||(s[b]=[])).push({i:d,g:l})}function r(d){d.forEach(c)}function a(d){d.forEach(r)}function u(d){d.forEach(a)}function o(d){switch(l=d,d.type){case"GeometryCollection":d.geometries.forEach(o);break;case"LineString":r(d.arcs);break;case"MultiLineString":case"Polygon":a(d.arcs);break;case"MultiPolygon":u(d.arcs);break}}return o(t),s.forEach(i==null?function(d){n.push(d[0].i)}:function(d){i(d[0].g,d[d.length-1].g)&&n.push(d[0].i)}),n}const Xx={};function Pre(e,t){const i=t?`${t.type}(${t.url})`:"",n=e||Xx[i]||t,[s,l]=Q.useState(0),c=Q.useRef(0);return Q.useEffect(()=>{if(n===t&&t){const r=Date.now();c.current=r,fetch(t.url).then(a=>a.json()).then(a=>{if(r===c.current){if(t.type==="GeoJSON")if("features"in a)Xx[i]=a;else throw"invalid geojson";else Xx[i]=NB(a,Object.keys(a.objects)[0]);l(r)}}).catch(a=>console.error(a))}},[n]),n===t?void 0:n}var Ure=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,$re={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"â¦","…":"â¦","/":"/","/":"/"},Qre=function(t){return $re[t]},Dre=function(t){return t.replace(Ure,Qre)},Are={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Dre},qre,eae=Q.createContext();function tae(){return Are}var iae=function(){function e(){tc(this,e),this.usedNamespaces={}}return ic(e,[{key:"addUsedNamespaces",value:function(i){var n=this;
14i.forEach(function(s){n.usedNamespaces[s]||(n.usedNamespaces[s]=!0)})}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}]),e}();function nae(){return qre}function sae(){if(console&&console.warn){for(var e,t=arguments.length,i=new Array(t),n=0;n<t;n++)i[n]=arguments[n];typeof i[0]=="string"&&(i[0]="react-i18next:: ".concat(i[0])),(e=console).warn.apply(e,i)}}var ZR={};function tG(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];typeof t[0]=="string"&&ZR[t[0]]||(typeof t[0]=="string"&&(ZR[t[0]]=new Date),sae.apply(void 0,t))}function WR(e,t,i){e.loadNamespaces(t,function(){if(e.isInitialized)i();else{var n=function s(){setTimeout(function(){e.off("initialized",s)},0),i()};e.on("initialized",n)}})}function lae(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=t.languages[0],s=t.options?t.options.fallbackLng:!1,l=t.languages[t.languages.length-1];if(n.toLowerCase()==="cimode")return!0;var c=function(a,u){var o=t.services.backendConnector.state["".concat(a,"|").concat(u)];return o===-1||o===2};return i.bindI18n&&i.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!c(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(n,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||c(n,e)&&(!s||c(l,e)))}function cae(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!t.languages||!t.languages.length)return tG("i18n.languages were undefined or empty",t.languages),!0;var n=t.options.ignoreJSONStructure!==void 0;return n?t.hasLoadedNamespace(e,{precheck:function(l,c){if(i.bindI18n&&i.bindI18n.indexOf("languageChanging")>-1&&l.services.backendConnector.backend&&l.isLanguageChangingTo&&!c(l.isLanguageChangingTo,e))return!1}}):lae(e,t,i)}function rae(e,t){var i=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(i!=null){var n,s,l,c,r=[],a=!0,u=!1;try{if(l=(i=i.call(e)).next,t!==0)for(;!(a=(n=l.call(i)).done)&&(r.push(n.value),r.length!==t);a=!0);}catch(o){u=!0,s=o}finally{try{if(!a&&i.return!=null&&(c=i.return(),Object(c)!==c))return}finally{if(u)throw s}}return r}}function aae(e,t){return dB(e)||rae(e,t)||mB(e,t)||bB()}function XR(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function Jx(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?XR(Object(i),!0).forEach(function(n){sa(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):XR(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}var oae=function(t,i){var n=Q.useRef();return Q.useEffect(function(){n.current=t},[t,i]),n.current};function uae(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.i18n,n=Q.useContext(eae)||{},s=n.i18n;n.defaultNS;var l=i||s||nae();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new iae),!l){tG("You will need to pass in an i18next instance by using initReactI18next");var c=function(C){return Array.isArray(C)?C[C.length-1]:C},r=[c,{},!1];return r.t=c,r.i18n={},r.ready=!1,r}l.options.react&&l.options.react.wait!==void 0&&tG("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var a=Jx(Jx(Jx({},tae()),l.options.react),t),u=a.useSuspense,o=a.keyPrefix,d=e;d=typeof d=="string"?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces&&l.reportNamespaces.addUsedNamespaces(d);var b=(l.isInitialized||l.initializedStoreOnce)&&d.every(function(N){return cae(N,l,a)});function h(){return l.getFixedT(null,a.nsMode==="fallback"?d:d[0],o)}var p=Q.useState(h),Z=aae(p,2),X=Z[0],J=Z[1],V=d.join(),g=oae(V),I=Q.useRef(!0);Q.useEffect(function(){var N=a.bindI18n,C=a.bindI18nStore;I.current=!0,!b&&!u&&WR(l,d,function(){I.current&&J(h)}),b&&g&&g!==V&&I.current&&J(h);function f(){I.current&&J(h)}return N&&l&&l.on(N,f),C&&l&&l.store.on(C,f),function(){I.current=!1,N&&l&&N.split(" ").forEach(function(w){return l.off(w,f)}
14),C&&l&&C.split(" ").forEach(function(w){return l.store.off(w,f)})}},[l,V]);var v=Q.useRef(!0);Q.useEffect(function(){I.current&&!v.current&&J(h),v.current=!1},[l,o]);var k=[X,l,b];if(k.t=X,k.i18n=l,k.ready=b,b||!b&&!u)return k;throw new Promise(function(N){WR(l,d,function(){N()})})}const iG=e=>{switch(e.type){case"Polygon":return[e.coordinates[0].map(i=>[i[1],i[0]])];case"Point":{const t=e.coordinates;return[[[t[1],t[0]]]]}case"GeometryCollection":return e.geometries.map(iG).flat();case"LineString":return[e.coordinates.map(i=>[i[1],i[0]])];case"MultiLineString":return e.coordinates.map(i=>i.map(n=>[n[1],n[0]]));case"MultiPoint":return[e.coordinates.map(i=>[i[1],i[0]])];case"MultiPolygon":return e.coordinates.map(i=>i[0].map(n=>[n[1],n[0]]));default:return[]}},JR=e=>{let t=0,i=[0,0];for(let n=0;n<e.length-1;n++){let[s,l]=e[n],[c,r]=e[n+1],a=s*r-c*l;t+=a,i[0]+=(s+c)*a,i[1]+=(l+r)*a}return t/=2,i[0]/=6*t,i[1]/=6*t,i},dae=Q.forwardRef(function(t,i){const{name:n,data:s,allFields:l,features:c,featuresUrl:r,geoKey:a,defaultAggregated:u,geoId:o,color:d,opacity:b,text:h,details:p,vegaConfig:Z,scaleIncludeUnmatchedChoropleth:X,showAllGeoshapeInChoropleth:J,scales:V,tileUrl:g}=t,I=Q.useContext(Rp);Q.useImperativeHandle(i,()=>({}));const v=Pre(c,r),{t:k}=uae("translation"),N=Q.useMemo(()=>o?s.map(ee=>ee[o.fid]):[],[o,s]),[C,f]=Q.useMemo(()=>{if(N.length&&a&&v){const ee=[],A=N.map((le,ne)=>{const se=le?v.features.find(oe=>oe.properties&&oe.properties[a]===le):void 0;return se&&ee.push(ne),se});return[ee,A]}return[[],[]]},[N,v,a]),w=Q.useMemo(()=>{if(J&&v){const ee=new Set(N);return v.features.filter(A=>A.properties).filter(A=>!ee.has(A.properties[a])).map(A=>({coords:iG(A.geometry),name:A.properties[a]}))}return[]},[N,v,J,a]);Q.useEffect(()=>{if(f.length>0){const ee=f.filter(A=>!A);ee.length&&console.warn(`Failed to render ${ee.length.toLocaleString()} items of ${s.length.toLocaleString()} rows due to missing geojson feature.`)}},[f]);const x=Q.useMemo(()=>f.length>0?f.map(ee=>ee?iG(ee.geometry):[],[]):[],[f]),[R,K]=Q.useMemo(()=>{const ee=x.flat(2);if(ee.length>0){const[A,le]=ee.reduce(([ne,se],[oe,de])=>(oe<ne[0][0]&&(ne[0][0]=oe),oe>ne[1][0]&&(ne[1][0]=oe),de<ne[0][1]&&(ne[0][1]=de),de>ne[1][1]&&(ne[1][1]=de),[ne,[se[0]+de,se[1]+oe]]),[[[...ee[0]],[...ee[0]]],[0,0]]);return[A,[le[0]/x.length,le[1]/x.length]]}return[[[-180,-90],[180,90]],[0,0]]},[x]),B=Q.useMemo(()=>X?s:C.map(ee=>s[ee]),[s,C,X]),_=vB(B,b,u,V),{mapper:j,display:U}=VB(B,d,u,Z),$=Q.useMemo(()=>p.concat([d,b].filter(Boolean)).map(ee=>({...ee,key:u&&ee.analyticType==="measure"&&ee.aggName?us(ee.fid,ee.aggName):ee.fid})),[u,p,d,b]),te=Q.useRef(null);Q.useEffect(()=>{var A;const ee=(A=te.current)==null?void 0:A.getContainer();if(ee){const le=new ResizeObserver(()=>{var ne;(ne=te.current)==null||ne.invalidateSize()});return le.observe(ee),()=>{le.unobserve(ee)}}});const E=Lp();if(Q.useEffect(()=>{const ee=E.current;ee&&(ee.exportChart=async A=>({mode:A,title:n||"untitled",nCols:0,nRows:0,charts:[],container:()=>{var le;return((le=te.current)==null?void 0:le.getContainer())??null},chartType:"map"}))},[]),!v&&(c||r))return re.createElement("div",{className:"flex items-center justify-center w-full h-full"},k("main.tabpanel.settings.geography_settings.loading"));const ie=I==="dark"?"#fff4":"#0004";return re.createElement(oB,{preferCanvas:!0,attributionControl:!1,center:K,ref:te,zoom:5,bounds:R,style:{width:"100%",height:"100%",zIndex:1}},re.createElement(zB,{bounds:R}),g===void 0&&re.createElement(bW,{className:"map-tile",attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),g&&re.createElement(bW,{className:"map-tile",url:g}),re.createElement(aB,{prefix:"Leaflet"}),x.length>0&&s.flatMap((ee,A)=>{const le=x[A],ne=_(ee),se=j(ee);return le.map((oe,de)=>{if(oe.length===0)return null;if(oe.length===1)return re.createElement(_9,{key:`${A}-${ne}-${se}-${de}`,center:oe[0],radius:3,opacity:.8,fillOpacity:ne,fillColor:se,color:ie,weight:1,stroke:!0,fill:!0},$.length>0&&re.createElement(Fh,null,re.createElement("header",null,s[A][o.fid]),$.map((Ie,Ye)=>re.createElement(eG,{key:Ye,allFields:l,vegaConfig:Z,field:Ie,value:ee[Ie.ke
14y]}))));const Je=h&&oe.length>=3?JR(oe):[NaN,NaN];return re.createElement(Q.Fragment,{key:`${A}-${ne}-${se}-${de}`},re.createElement(FN,{positions:oe,pathOptions:{fillOpacity:ne*.8,fillColor:se,color:ie,weight:1,stroke:!0,fill:!0}},re.createElement(Fh,null,re.createElement("header",null,s[A][o.fid]),$.map((Ie,Ye)=>re.createElement(eG,{key:Ye,allFields:l,vegaConfig:Z,field:Ie,value:ee[Ie.key]})))),h&&s[A][h.fid]&&WW(Je[0],Je[1])&&re.createElement(kN,{position:Je,interactive:!1,icon:Dr.divIcon({className:"!bg-transparent !border-none",html:`<div style="font-size: 11px; transform: translate(-50%, -50%); opacity: 0.8;">${s[A][h.fid]}</div>`})}))})}),w.flatMap(({coords:ee,name:A},le)=>{const se="#808080";return ee.map((oe,de)=>{if(oe.length===0)return null;if(oe.length===1)return re.createElement(_9,{key:`missing-${le}-${de}`,center:oe[0],radius:3,opacity:.8,fillOpacity:.3,fillColor:se,color:ie,weight:1,stroke:!0,fill:!0},$.length>0&&re.createElement(Fh,null,re.createElement("header",null,A),$.map((Ie,Ye)=>re.createElement("p",{key:Ye},Ie.analyticType==="measure"&&Ie.aggName?Cf(Ie.name,Ie.aggName):Ie.name,": Null"))));const Je=h&&oe.length>=3?JR(oe):[NaN,NaN];return re.createElement(Q.Fragment,{key:`missing-${le}-${de}`},re.createElement(FN,{positions:oe,pathOptions:{fillOpacity:.3*.8,fillColor:se,color:ie,weight:1,stroke:!0,fill:!0}},re.createElement(Fh,null,re.createElement("header",null,A),$.map((Ie,Ye)=>re.createElement("p",{key:Ye},Ie.analyticType==="measure"&&Ie.aggName?Cf(Ie.name,Ie.aggName):Ie.name,": Null")))),h&&s[le][h.fid]&&WW(Je[0],Je[1])&&re.createElement(kN,{position:Je,interactive:!1,icon:Dr.divIcon({className:"!bg-transparent !border-none",html:`<div style="font-size: 11px; transform: translate(-50%, -50%); opacity: 0.8;">${s[le][h.fid]}</div>`})}))})}),U&&re.createElement(HB,{display:U,field:d}))}),mae=800,kB=600,FB=Q.forwardRef(function(t,i){const{name:n,draggableFieldState:s,data:l,visualConfig:c,visualLayout:r,vegaConfig:a={},scales:u,scale:o}=t,{latitude:[d],longitude:[b],geoId:[h],dimensions:p,measures:Z,size:[X],color:[J],opacity:[V],text:[g],details:I}=s,{defaultAggregated:v,geoms:[k]}=c,{geojson:N,geoKey:C="",geoUrl:f,scaleIncludeUnmatchedChoropleth:w=!1,showAllGeoshapeInChoropleth:x=!1,geoMapTileUrl:R}=r,K=Q.useMemo(()=>[...p,...Z],[p,Z]),B=Q.useMemo(()=>K.find(E=>E.geoRole==="latitude"),[K]),_=Q.useMemo(()=>K.find(E=>E.geoRole==="longitude"),[K]),j=Q.useMemo(()=>d??B,[d,B]),U=Q.useMemo(()=>b??_,[b,_]),$=Q.useMemo(()=>{const E=u??{};if(o)for(const ie of Object.keys(o))E[ie]={...E[ie]??{},...o[ie]};return E},[u,o]),te=R??a.leafletGeoTileUrl;return k==="poi"?re.createElement(Tre,{tileUrl:te,name:n,data:l,allFields:K,defaultAggregated:v,latitude:j,longitude:U,color:J,opacity:V,size:X,details:I,vegaConfig:a,scales:$}):k==="choropleth"?re.createElement(dae,{tileUrl:te,name:n,data:l,allFields:K,features:N,featuresUrl:f,geoKey:C,defaultAggregated:v,geoId:h,color:J,opacity:V,text:g,details:I,vegaConfig:a,scaleIncludeUnmatchedChoropleth:w,showAllGeoshapeInChoropleth:x,scales:$}):null});var gi=function(){return gi=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},gi.apply(this,arguments)},xR={width:"100%",height:"10px",top:"0px",left:"0px",cursor:"row-resize"},YR={width:"10px",height:"100%",top:"0px",left:"0px",cursor:"col-resize"},by={width:"20px",height:"20px",position:"absolute",zIndex:1},bae={top:gi(gi({},xR),{top:"-5px"}),right:gi(gi({},YR),{left:void 0,right:"-5px"}),bottom:gi(gi({},xR),{top:void 0,bottom:"-5px"}),left:gi(gi({},YR),{left:"-5px"}),topRight:gi(gi({},by),{right:"-10px",top:"-10px",cursor:"ne-resize"}),bottomRight:gi(gi({},by),{right:"-10px",bottom:"-10px",cursor:"se-resize"}),bottomLeft:gi(gi({},by),{left:"-10px",bottom:"-10px",cursor:"sw-resize"}),topLeft:gi(gi({},by),{left:"-10px",top:"-10px",cursor:"nw-resize"})},hae=Q.memo(function(e){var t=e.onResizeStart,i=e.direction,n=e.children,s=e.replaceStyles,l=e.className,c=Q.useCallback(function(u){t(u,i)},[t,i]),r=Q.useCallback(function(u){t(u,i)},[t,i]),a=Q.useMemo(function(){return gi(gi({position:"absolute",userSelect:"none"},bae[i]),s??{})},[s,i]);return du.jsx("div",{className:l||void 0,style:a,onMouseDown:c,onTouchStart:r,children:n})}),fae=function(){var e=function(t,i){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,s){n.__proto__=s}||function(n,s){for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(n[l]=s[l])},e(t,i)};return function(t,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");e(t,i);function n(){this.constructor=t}
14t.prototype=i===null?Object.create(i):(n.prototype=i.prototype,new n)}}(),xc=function(){return xc=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},xc.apply(this,arguments)},pae={width:"auto",height:"auto"},hy=function(e,t,i){return Math.max(Math.min(e,i),t)},GR=function(e,t,i){var n=Math.round(e/t);return n*t+i*(n-1)},Sd=function(e,t){return new RegExp(e,"i").test(t)},fy=function(e){return!!(e.touches&&e.touches.length)},yae=function(e){return!!((e.clientX||e.clientX===0)&&(e.clientY||e.clientY===0))},VR=function(e,t,i){i===void 0&&(i=0);var n=t.reduce(function(l,c,r){return Math.abs(c-e)<Math.abs(t[l]-e)?r:l},0),s=Math.abs(t[n]-e);return i===0||s<i?t[n]:e},xx=function(e){return e=e.toString(),e==="auto"||e.endsWith("px")||e.endsWith("%")||e.endsWith("vh")||e.endsWith("vw")||e.endsWith("vmax")||e.endsWith("vmin")?e:"".concat(e,"px")},py=function(e,t,i,n){if(e&&typeof e=="string"){if(e.endsWith("px"))return Number(e.replace("px",""));if(e.endsWith("%")){var s=Number(e.replace("%",""))/100;return t*s}if(e.endsWith("vw")){var s=Number(e.replace("vw",""))/100;return i*s}if(e.endsWith("vh")){var s=Number(e.replace("vh",""))/100;return n*s}}return e},Zae=function(e,t,i,n,s,l,c){return n=py(n,e.width,t,i),s=py(s,e.height,t,i),l=py(l,e.width,t,i),c=py(c,e.height,t,i),{maxWidth:typeof n>"u"?void 0:Number(n),maxHeight:typeof s>"u"?void 0:Number(s),minWidth:typeof l>"u"?void 0:Number(l),minHeight:typeof c>"u"?void 0:Number(c)}},Wae=function(e){return Array.isArray(e)?e:[e,e]},Xae=["as","ref","style","className","grid","gridGap","snap","bounds","boundsByDirection","size","defaultSize","minWidth","minHeight","maxWidth","maxHeight","lockAspectRatio","lockAspectRatioExtraWidth","lockAspectRatioExtraHeight","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","children","onResizeStart","onResize","onResizeStop","handleComponent","scale","resizeRatio","snapGap"],IR="__resizable_base__",Jae=function(e){fae(t,e);function t(i){var n,s,l,c,r=e.call(this,i)||this;return r.ratio=1,r.resizable=null,r.parentLeft=0,r.parentTop=0,r.resizableLeft=0,r.resizableRight=0,r.resizableTop=0,r.resizableBottom=0,r.targetLeft=0,r.targetTop=0,r.delta={width:0,height:0},r.appendBase=function(){if(!r.resizable||!r.window)return null;var a=r.parentNode;if(!a)return null;var u=r.window.document.createElement("div");return u.style.width="100%",u.style.height="100%",u.style.position="absolute",u.style.transform="scale(0, 0)",u.style.left="0",u.style.flex="0 0 100%",u.classList?u.classList.add(IR):u.className+=IR,a.appendChild(u),u},r.removeBase=function(a){var u=r.parentNode;u&&u.removeChild(a)},r.state={isResizing:!1,width:(s=(n=r.propsSize)===null||n===void 0?void 0:n.width)!==null&&s!==void 0?s:"auto",height:(c=(l=r.propsSize)===null||l===void 0?void 0:l.height)!==null&&c!==void 0?c:"auto",direction:"right",original:{x:0,y:0,width:0,height:0},backgroundStyle:{height:"100%",width:"100%",backgroundColor:"rgba(0,0,0,0)",cursor:"auto",opacity:0,position:"fixed",zIndex:9999,top:"0",left:"0",bottom:"0",right:"0"},flexBasis:void 0},r.onResizeStart=r.onResizeStart.bind(r),r.onMouseMove=r.onMouseMove.bind(r),r.onMouseUp=r.onMouseUp.bind(r),r}return Object.defineProperty(t.prototype,"parentNode",{get:function(){return this.resizable?this.resizable.parentNode:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"window",{get:function(){return!this.resizable||!this.resizable.ownerDocument?null:this.resizable.ownerDocument.defaultView},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"propsSize",{get:function(){return this.props.size||this.props.defaultSize||pae},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){var i=0,n=0;if(this.resizable&&this.window){var s=this.resizable.offsetWidth,l=this.resizable.offsetHeight,c=this.resizable.style.position;c!=="relative"&&(this.resizable.style.position="relative"),i=this.resizable.style.width!=="auto"?this.resizable.offsetWidth:s,n=this.resizable.style.height!=="auto"?this.resizable.offsetHeight:l,this.resizable.style.position=c}return{width:i,height:n}}
14,enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sizeStyle",{get:function(){var i=this,n=this.props.size,s=function(r){var a;if(typeof i.state[r]>"u"||i.state[r]==="auto")return"auto";if(i.propsSize&&i.propsSize[r]&&(!((a=i.propsSize[r])===null||a===void 0)&&a.toString().endsWith("%"))){if(i.state[r].toString().endsWith("%"))return i.state[r].toString();var u=i.getParentSize(),o=Number(i.state[r].toString().replace("px","")),d=o/u[r]*100;return"".concat(d,"%")}return xx(i.state[r])},l=n&&typeof n.width<"u"&&!this.state.isResizing?xx(n.width):s("width"),c=n&&typeof n.height<"u"&&!this.state.isResizing?xx(n.height):s("height");return{width:l,height:c}},enumerable:!1,configurable:!0}),t.prototype.getParentSize=function(){if(!this.parentNode)return this.window?{width:this.window.innerWidth,height:this.window.innerHeight}:{width:0,height:0};var i=this.appendBase();if(!i)return{width:0,height:0};var n=!1,s=this.parentNode.style.flexWrap;s!=="wrap"&&(n=!0,this.parentNode.style.flexWrap="wrap"),i.style.position="relative",i.style.minWidth="100%",i.style.minHeight="100%";var l={width:i.offsetWidth,height:i.offsetHeight};return n&&(this.parentNode.style.flexWrap=s),this.removeBase(i),l},t.prototype.bindEvents=function(){this.window&&(this.window.addEventListener("mouseup",this.onMouseUp),this.window.addEventListener("mousemove",this.onMouseMove),this.window.addEventListener("mouseleave",this.onMouseUp),this.window.addEventListener("touchmove",this.onMouseMove,{capture:!0,passive:!1}),this.window.addEventListener("touchend",this.onMouseUp))},t.prototype.unbindEvents=function(){this.window&&(this.window.removeEventListener("mouseup",this.onMouseUp),this.window.removeEventListener("mousemove",this.onMouseMove),this.window.removeEventListener("mouseleave",this.onMouseUp),this.window.removeEventListener("touchmove",this.onMouseMove,!0),this.window.removeEventListener("touchend",this.onMouseUp))},t.prototype.componentDidMount=function(){if(!(!this.resizable||!this.window)){var i=this.window.getComputedStyle(this.resizable);this.setState({width:this.state.width||this.size.width,height:this.state.height||this.size.height,flexBasis:i.flexBasis!=="auto"?i.flexBasis:void 0})}},t.prototype.componentWillUnmount=function(){this.window&&this.unbindEvents()},t.prototype.createSizeForCssProperty=function(i,n){var s=this.propsSize&&this.propsSize[n];return this.state[n]==="auto"&&this.state.original[n]===i&&(typeof s>"u"||s==="auto")?"auto":i},t.prototype.calculateNewMaxFromBoundary=function(i,n){var s=this.props.boundsByDirection,l=this.state.direction,c=s&&Sd("left",l),r=s&&Sd("top",l),a,u;if(this.props.bounds==="parent"){var o=this.parentNode;o&&(a=c?this.resizableRight-this.parentLeft:o.offsetWidth+(this.parentLeft-this.resizableLeft),u=r?this.resizableBottom-this.parentTop:o.offsetHeight+(this.parentTop-this.resizableTop))}else this.props.bounds==="window"?this.window&&(a=c?this.resizableRight:this.window.innerWidth-this.resizableLeft,u=r?this.resizableBottom:this.window.innerHeight-this.resizableTop):this.props.bounds&&(a=c?this.resizableRight-this.targetLeft:this.props.bounds.offsetWidth+(this.targetLeft-this.resizableLeft),u=r?this.resizableBottom-this.targetTop:this.props.bounds.offsetHeight+(this.targetTop-this.resizableTop));return a&&Number.isFinite(a)&&(i=i&&i<a?i:a),u&&Number.isFinite(u)&&(n=n&&n<u?n:u),{maxWidth:i,maxHeight:n}},t.prototype.calculateNewSizeFromDirection=function(i,n){var s=this.props.scale||1,l=Wae(this.props.resizeRatio||1),c=l[0],r=l[1],a=this.state,u=a.direction,o=a.original,d=this.props,b=d.lockAspectRatio,h=d.lockAspectRatioExtraHeight,p=d.lockAspectRatioExtraWidth,Z=o.width,X=o.height,J=h||0,V=p||0;return Sd("right",u)&&(Z=o.width+(i-o.x)*c/s,b&&(X=(Z-V)/this.ratio+J)),Sd("left",u)&&(Z=o.width-(i-o.x)*c/s,b&&(X=(Z-V)/this.ratio+J)),Sd("bottom",u)&&(X=o.height+(n-o.y)*r/s,b&&(Z=(X-J)*this.ratio+V)),Sd("top",u)&&(X=o.height-(n-o.y)*r/s,b&&(Z=(X-J)*this.ratio+V)),{newWidth:Z,newHeight:X}},t.prototype.calculateNewSizeFromAspectRatio=function(i,n,s,l){var c=this.props,r=c.lockAspectRatio,a=c.lockAspectRatioExtraHeight,u=c.lockA
14spectRatioExtraWidth,o=typeof l.width>"u"?10:l.width,d=typeof s.width>"u"||s.width<0?i:s.width,b=typeof l.height>"u"?10:l.height,h=typeof s.height>"u"||s.height<0?n:s.height,p=a||0,Z=u||0;if(r){var X=(b-p)*this.ratio+Z,J=(h-p)*this.ratio+Z,V=(o-Z)/this.ratio+p,g=(d-Z)/this.ratio+p,I=Math.max(o,X),v=Math.min(d,J),k=Math.max(b,V),N=Math.min(h,g);i=hy(i,I,v),n=hy(n,k,N)}else i=hy(i,o,d),n=hy(n,b,h);return{newWidth:i,newHeight:n}},t.prototype.setBoundingClientRect=function(){var i=1/(this.props.scale||1);if(this.props.bounds==="parent"){var n=this.parentNode;if(n){var s=n.getBoundingClientRect();this.parentLeft=s.left*i,this.parentTop=s.top*i}}if(this.props.bounds&&typeof this.props.bounds!="string"){var l=this.props.bounds.getBoundingClientRect();this.targetLeft=l.left*i,this.targetTop=l.top*i}if(this.resizable){var c=this.resizable.getBoundingClientRect(),r=c.left,a=c.top,u=c.right,o=c.bottom;this.resizableLeft=r*i,this.resizableRight=u*i,this.resizableTop=a*i,this.resizableBottom=o*i}},t.prototype.onResizeStart=function(i,n){if(!(!this.resizable||!this.window)){var s=0,l=0;if(i.nativeEvent&&yae(i.nativeEvent)?(s=i.nativeEvent.clientX,l=i.nativeEvent.clientY):i.nativeEvent&&fy(i.nativeEvent)&&(s=i.nativeEvent.touches[0].clientX,l=i.nativeEvent.touches[0].clientY),this.props.onResizeStart&&this.resizable){var c=this.props.onResizeStart(i,n,this.resizable);if(c===!1)return}this.props.size&&(typeof this.props.size.height<"u"&&this.props.size.height!==this.state.height&&this.setState({height:this.props.size.height}),typeof this.props.size.width<"u"&&this.props.size.width!==this.state.width&&this.setState({width:this.props.size.width})),this.ratio=typeof this.props.lockAspectRatio=="number"?this.props.lockAspectRatio:this.size.width/this.size.height;var r,a=this.window.getComputedStyle(this.resizable);if(a.flexBasis!=="auto"){var u=this.parentNode;if(u){var o=this.window.getComputedStyle(u).flexDirection;this.flexDir=o.startsWith("row")?"row":"column",r=a.flexBasis}}this.setBoundingClientRect(),this.bindEvents();var d={original:{x:s,y:l,width:this.size.width,height:this.size.height},isResizing:!0,backgroundStyle:xc(xc({},this.state.backgroundStyle),{cursor:this.window.getComputedStyle(i.target).cursor||"auto"}),direction:n,flexBasis:r};this.setState(d)}},t.prototype.onMouseMove=function(i){var n=this;if(!(!this.state.isResizing||!this.resizable||!this.window)){if(this.window.TouchEvent&&fy(i))try{i.preventDefault(),i.stopPropagation()}catch{}var s=this.props,l=s.maxWidth,c=s.maxHeight,r=s.minWidth,a=s.minHeight,u=fy(i)?i.touches[0].clientX:i.clientX,o=fy(i)?i.touches[0].clientY:i.clientY,d=this.state,b=d.direction,h=d.original,p=d.width,Z=d.height,X=this.getParentSize(),J=Zae(X,this.window.innerWidth,this.window.innerHeight,l,c,r,a);l=J.maxWidth,c=J.maxHeight,r=J.minWidth,a=J.minHeight;var V=this.calculateNewSizeFromDirection(u,o),g=V.newHeight,I=V.newWidth,v=this.calculateNewMaxFromBoundary(l,c);this.props.snap&&this.props.snap.x&&(I=VR(I,this.props.snap.x,this.props.snapGap)),this.props.snap&&this.props.snap.y&&(g=VR(g,this.props.snap.y,this.props.snapGap));var k=this.calculateNewSizeFromAspectRatio(I,g,{width:v.maxWidth,height:v.maxHeight},{width:r,height:a});if(I=k.newWidth,g=k.newHeight,this.props.grid){var N=GR(I,this.props.grid[0],this.props.gridGap?this.props.gridGap[0]:0),C=GR(g,this.props.grid[1],this.props.gridGap?this.props.gridGap[1]:0),f=this.props.snapGap||0,w=f===0||Math.abs(N-I)<=f?N:I,x=f===0||Math.abs(C-g)<=f?C:g;I=w,g=x}var R={width:I-h.width,height:g-h.height};if(this.delta=R,p&&typeof p=="string"){if(p.endsWith("%")){var K=I/X.width*100;I="".concat(K,"%")}else if(p.endsWith("vw")){var B=I/this.window.innerWidth*100;I="".concat(B,"vw")}else if(p.endsWith("vh")){var _=I/this.window.innerHeight*100;I="".concat(_,"vh")}}if(Z&&typeof Z=="string"){if(Z.endsWith("%")){var K=g/X.height*100;g="".concat(K,"%")}else if(Z.endsWith("vw")){var B=g/this.window.innerWidth*100;g="".concat(B,"vw")}else if(Z.endsWith("vh")){var _=g/this.window.innerHeight*100;g="".concat(_,"vh")}}var j={width:this.createSizeForCssProperty(I,"width"),height:this.createSizeForCssProperty(g,"height")};this.flexDir==="row"?j.flexBasis=j.width:this.flexDir==="column"&&(j.flexBasis=j.height);var U=this.state.width!==j.width,$=this.state.height!==j.height,te=this.state.flexBasis!==j.flexBasis,E=U||$||te;E&&lo.flushSync(function(){n.setState(j)}),this.props.onResize&&E&&this.props.onResize(i,b,this.resizable,R)}},t.prototype.onMouseUp=function(i){var n,s,l=this.state,c=l.isResizing,r=l.direction;l.original,!(!c||!this.resizable)&&(this.props.onResizeStop&&this.props.onResizeStop(i,r,this.resizable,this.delta),this.props.size&&this.setState({width:(n=this.props.size.width)!==null&&n!==void 0?n:"auto",height:(s=this.props.size.height)!==null&&s!==void 0?s:"auto"}),this.unbindEvents(),this.setState({isResizing:!1,backgroundStyle:xc(xc({},this.state.backgroundStyle),{cursor:"auto"})}))},t.prototype.updateSize=function(i){var n,s;this.setState({width:(n=i.width)!==null&&n!==void 0?n:"auto",height:(s=i.height)!==null&&s!==void 0?s:"auto"})},t.prototype.renderResizer=function(){var i=this,n=this.props,s=n.enable,l=n.handleStyles,c=n.handleClasses,r=n.handleWrapperStyle,a=n.handleWrapperClass,u=n.handleComponent;if(!s)return null;var o=Object.keys(s).map(function(d){return s[d]!==!1?du.jsx(hae,{direction:d,onResizeStart:i.onResizeStart,replaceStyles:l&&l[d],className:c&&c[d],children:u&&u[d]?u[d]:null},d):null});return du.jsx("div",{className:a,style:r,children:o})},t.prototype.render=function(){var i=this,n=Object.keys(this.props).reduce(function(c,r){return Xae.indexOf(r)!==-1||(c[r]=i.props[r]),c},{}),s=xc(xc(xc({position:"relative",userSelect:this.state.isResizing?"none":"auto"},this.props.style),this.sizeStyle),{maxWidth:this.props.maxWidth,maxHeight:this.props.maxHeight,minWidth:this.props.minWidth,minHeight:this.props.minHeight,boxSizing:"border-box",flexShrink:0});this.state.flexBasis&&(s.flexBasis=this.state.flexBasis);var l=this.props.as||"div";return du.jsxs(l,xc({style:s,className:this.props.className},n,{ref:function(c){c&&(i.resizable=c)},children:[this.state.isResizing&&du.jsx("div",{style:this.state.backgroundStyle}),this.props.children,this.renderResizer()]}))},t.defaultProps={as:"div",onResizeStart:function(){},onResize:function(){},onResizeStop:function(){},enable:{top:!0,right:!0,bottom:!0,left:!0,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},style:{}
14,grid:[1,1],gridGap:[0,0],lockAspectRatio:!1,lockAspectRatioExtraWidth:0,lockAspectRatioExtraHeight:0,scale:1,resizeRatio:1,snapGap:0},t}(Q.PureComponent);const SB="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFAoaSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG59OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZuIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Ygbn0sUChpKX1mdW5jdGlvbiBSKGksbil7aWYoIShpIGluc3RhbmNlb2YgbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTWUoaSxuKXtpZihQKGkpIT0ib2JqZWN0Inx8IWkpcmV0dXJuIGk7dmFyIHI9aVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHIhPT12b2lkIDApe3ZhciB0PXIuY2FsbChpLG4pO2lmKFAodCkhPSJvYmplY3QiKXJldHVybiB0O3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKG49PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShpKX1mdW5jdGlvbiBkZShpKXt2YXIgbj1NZShpLCJzdHJpbmciKTtyZXR1cm4gUChuKT09InN5bWJvbCI/bjpuKyIifWZ1bmN0aW9uIGhlKGksbil7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciB0PW5bcl07dC5lbnVtZXJhYmxlPXQuZW51bWVyYWJsZXx8ITEsdC5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHQmJih0LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxkZSh0LmtleSksdCl9fWZ1bmN0aW9uIGsoaSxuLHIpe3JldHVybiBuJiZoZShpLnByb3RvdHlwZSxuKSxyJiZoZShpLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGl9ZnVuY3Rpb24gRChpKXtpZihpPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGl9ZnVuY3Rpb24gc2UoaSxuKXtyZXR1cm4gc2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocix0KXtyZXR1cm4gci5fX3Byb3RvX189dCxyfSxzZShpLG4pfWZ1bmN0aW9uIFooaSxuKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmbiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4mJm4ucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6aSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbiYmc2UoaSxuKX1mdW5jdGlvbiBNKGksbil7aWYobiYmKFAobik9PSJvYmplY3QifHx0eXBlb2Ygbj09ImZ1bmN0aW9uIikpcmV0dXJuIG47aWYobiE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBEKGkpfWZ1bmN0aW9uIGooaSl7cmV0dXJuIGo9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LGooaSl9ZnVuY3Rpb24gRihpLG4scil7cmV0dXJuKG49ZGUobikpaW4gaT9PYmplY3QuZGVmaW5lUHJvcGVydHkoaSxuLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6aVtuXT1yLGl9ZnVuY3Rpb24gSGUoaSl7aWYoQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gaX1mdW5jdGlvbiBKZShpKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmaVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxpWyJAQGl0ZXJhdG9yIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oaSl9ZnVuY3Rpb24gdmUoaSxuKXsobj09bnVsbHx8bj5pLmxlbmd0aCkmJihuPWkubGVuZ3RoKTtmb3IodmFyIHI9MCx0PUFycmF5KG4pO3I8bjtyKyspdFtyXT1pW3JdO3JldHVybiB0fWZ1bmN0aW9uIHplKGksbil7aWYoaSl7aWYodHlwZW9mIGk9PSJzdHJpbmciKXJldHVybiB2ZShpLG4pO3ZhciByPXt9LnRvU3RyaW5nLmNhbGwoaSkuc2xpY2UoOCwtMSk7cmV0dXJuIHI9PT0iT2JqZWN0IiYmaS5jb25zdHJ1Y3RvciYmKHI9aS5jb25zdHJ1Y3Rvci5uYW1lKSxyPT09Ik1hcCJ8fHI9PT0iU2V0Ij9BcnJheS5mcm9tKGkpOnI9PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/dmUoaSxuKTp2b2lkIDB9fWZ1bmN0aW9uIFdlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFllKGkpe3JldHVybiBIZShpKXx8SmUoaSl8fHplKGkpfHxXZSgpfWZ1bmN0aW9uIG1lKGksbil7dmFyIHI9T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTtuJiYodD10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksci5wdXNoLmFwcGx5KHIsdCl9cmV0dXJuIHJ9ZnVuY3Rpb24geWUoaSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHI9YXJndW1lbnRzW25dIT1udWxsP2FyZ3VtZW50c1tuXTp7fTtuJTI/bWUoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe0YoaSx0LHJbdF0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6bWUoT2JqZWN0KHIpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLHQpKX0pfXJldHVybi
14BpfXZhciBHZT17dHlwZToibG9nZ2VyIixsb2c6ZnVuY3Rpb24obil7dGhpcy5vdXRwdXQoImxvZyIsbil9LHdhcm46ZnVuY3Rpb24obil7dGhpcy5vdXRwdXQoIndhcm4iLG4pfSxlcnJvcjpmdW5jdGlvbihuKXt0aGlzLm91dHB1dCgiZXJyb3IiLG4pfSxvdXRwdXQ6ZnVuY3Rpb24obixyKXtjb25zb2xlJiZjb25zb2xlW25dJiZjb25zb2xlW25dLmFwcGx5KGNvbnNvbGUscil9fSxRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGkobil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O1IodGhpcyxpKSx0aGlzLmluaXQobixyKX1yZXR1cm4gayhpLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307dGhpcy5wcmVmaXg9dC5wcmVmaXh8fCJpMThuZXh0OiIsdGhpcy5sb2dnZXI9cnx8R2UsdGhpcy5vcHRpb25zPXQsdGhpcy5kZWJ1Zz10LmRlYnVnfX0se2tleToic2V0RGVidWciLHZhbHVlOmZ1bmN0aW9uKHIpe3RoaXMuZGVidWc9cn19LHtrZXk6ImxvZyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShyKSxlPTA7ZTxyO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHQsImxvZyIsIiIsITApfX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShyKSxlPTA7ZTxyO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHQsIndhcm4iLCIiLCEwKX19LHtrZXk6ImVycm9yIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KHIpLGU9MDtlPHI7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiB0aGlzLmZvcndhcmQodCwiZXJyb3IiLCIiKX19LHtrZXk6ImRlcHJlY2F0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShyKSxlPTA7ZTxyO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHQsIndhcm4iLCJXQVJOSU5HIERFUFJFQ0FURUQ6ICIsITApfX0se2tleToiZm9yd2FyZCIsdmFsdWU6ZnVuY3Rpb24ocix0LGUsYSl7cmV0dXJuIGEmJiF0aGlzLmRlYnVnP251bGw6KHR5cGVvZiByWzBdPT0ic3RyaW5nIiYmKHJbMF09IiIuY29uY2F0KGUpLmNvbmNhdCh0aGlzLnByZWZpeCwiICIpLmNvbmNhdChyWzBdKSksdGhpcy5sb2dnZXJbdF0ocikpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbihyKXtyZXR1cm4gbmV3IGkodGhpcy5sb2dnZXIseWUoeWUoe30se3ByZWZpeDoiIi5jb25jYXQodGhpcy5wcmVmaXgsIjoiKS5jb25jYXQociwiOiIpfSksdGhpcy5vcHRpb25zKSl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24ocil7cmV0dXJuIHI9cnx8dGhpcy5vcHRpb25zLHIucHJlZml4PXIucHJlZml4fHx0aGlzLnByZWZpeCxuZXcgaSh0aGlzLmxvZ2dlcixyKX19XSksaX0oKSxOPW5ldyBRZSxUPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSgpe1IodGhpcyxpKSx0aGlzLm9ic2VydmVycz17fX1yZXR1cm4gayhpLFt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24ocix0KXt2YXIgZT10aGlzO3JldHVybiByLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXtlLm9ic2VydmVyc1thXT1lLm9ic2VydmVyc1thXXx8W10sZS5vYnNlcnZlcnNbYV0ucHVzaCh0KX0pLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKHIsdCl7aWYodGhpcy5vYnNlcnZlcnNbcl0pe2lmKCF0KXtkZWxldGUgdGhpcy5vYnNlcnZlcnNbcl07cmV0dXJufXRoaXMub2JzZXJ2ZXJzW3JdPXRoaXMub2JzZXJ2ZXJzW3JdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXR9KX19fSx7a2V5OiJlbWl0Iix2YWx1ZTpmdW5jdGlvbihyKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheSh0PjE/dC0xOjApLGE9MTthPHQ7YSsrKWVbYS0xXT1hcmd1bWVudHNbYV07aWYodGhpcy5vYnNlcnZlcnNbcl0pe3ZhciBvPVtdLmNvbmNhdCh0aGlzLm9ic2VydmVyc1tyXSk7by5mb3JFYWNoKGZ1bmN0aW9uKHUpe3UuYXBwbHkodm9pZCAwLGUpfSl9aWYodGhpcy5vYnNlcnZlcnNbIioiXSl7dmFyIHM9W10uY29uY2F0KHRoaXMub2JzZXJ2ZXJzWyIqIl0pO3MuZm9yRWFjaChmdW5jdGlvbih1KXt1LmFwcGx5KHUsW3JdLmNvbmNhdChlKSl9KX19fV0pLGl9KCk7ZnVuY3Rpb24gSCgpe3ZhciBpLG4scj1uZXcgUHJvbWlzZS
14hmdW5jdGlvbih0LGUpe2k9dCxuPWV9KTtyZXR1cm4gci5yZXNvbHZlPWksci5yZWplY3Q9bixyfWZ1bmN0aW9uIGJlKGkpe3JldHVybiBpPT1udWxsPyIiOiIiK2l9ZnVuY3Rpb24gWmUoaSxuLHIpe2kuZm9yRWFjaChmdW5jdGlvbih0KXtuW3RdJiYoclt0XT1uW3RdKX0pfWZ1bmN0aW9uIHVlKGksbixyKXtmdW5jdGlvbiB0KHMpe3JldHVybiBzJiZzLmluZGV4T2YoIiMjIyIpPi0xP3MucmVwbGFjZSgvIyMjL2csIi4iKTpzfWZ1bmN0aW9uIGUoKXtyZXR1cm4haXx8dHlwZW9mIGk9PSJzdHJpbmcifWZvcih2YXIgYT10eXBlb2YgbiE9InN0cmluZyI/W10uY29uY2F0KG4pOm4uc3BsaXQoIi4iKTthLmxlbmd0aD4xOyl7aWYoZSgpKXJldHVybnt9O3ZhciBvPXQoYS5zaGlmdCgpKTshaVtvXSYmciYmKGlbb109bmV3IHIpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLG8pP2k9aVtvXTppPXt9fXJldHVybiBlKCk/e306e29iajppLGs6dChhLnNoaWZ0KCkpfX1mdW5jdGlvbiBPZShpLG4scil7dmFyIHQ9dWUoaSxuLE9iamVjdCksZT10Lm9iaixhPXQuaztlW2FdPXJ9ZnVuY3Rpb24gcWUoaSxuLHIsdCl7dmFyIGU9dWUoaSxuLE9iamVjdCksYT1lLm9iaixvPWUuazthW29dPWFbb118fFtdLGFbb10ucHVzaChyKX1mdW5jdGlvbiBxKGksbil7dmFyIHI9dWUoaSxuKSx0PXIub2JqLGU9ci5rO2lmKHQpcmV0dXJuIHRbZV19ZnVuY3Rpb24gd2UoaSxuLHIpe3ZhciB0PXEoaSxyKTtyZXR1cm4gdCE9PXZvaWQgMD90OnEobixyKX1mdW5jdGlvbiBTZShpLG4scil7Zm9yKHZhciB0IGluIG4pdCE9PSJfX3Byb3RvX18iJiZ0IT09ImNvbnN0cnVjdG9yIiYmKHQgaW4gaT90eXBlb2YgaVt0XT09InN0cmluZyJ8fGlbdF1pbnN0YW5jZW9mIFN0cmluZ3x8dHlwZW9mIG5bdF09PSJzdHJpbmcifHxuW3RdaW5zdGFuY2VvZiBTdHJpbmc/ciYmKGlbdF09blt0XSk6U2UoaVt0XSxuW3RdLHIpOmlbdF09blt0XSk7cmV0dXJuIGl9ZnVuY3Rpb24gVShpKXtyZXR1cm4gaS5yZXBsYWNlKC9bXC1cW1xdXC9ce1x9XChcKVwqXCtcP1wuXFxcXlwkXHxdL2csIlxcJCYiKX12YXIgWGU9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyIsIi8iOiImI3gyRjsifTtmdW5jdGlvbiBldChpKXtyZXR1cm4gdHlwZW9mIGk9PSJzdHJpbmciP2kucmVwbGFjZSgvWyY8PiInXC9dL2csZnVuY3Rpb24obil7cmV0dXJuIFhlW25dfSk6aX12YXIgWD10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lm5hdmlnYXRvciYmdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50RGF0YT4idSImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIik+LTEsdHQ9WyIgIiwiLCIsIj8iLCIhIiwiOyJdO2Z1bmN0aW9uIG50KGksbixyKXtuPW58fCIiLHI9cnx8IiI7dmFyIHQ9dHQuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiBuLmluZGV4T2Yocyk8MCYmci5pbmRleE9mKHMpPDB9KTtpZih0Lmxlbmd0aD09PTApcmV0dXJuITA7dmFyIGU9bmV3IFJlZ0V4cCgiKCIuY29uY2F0KHQubWFwKGZ1bmN0aW9uKHMpe3JldHVybiBzPT09Ij8iPyJcXD8iOnN9KS5qb2luKCJ8IiksIikiKSksYT0hZS50ZXN0KGkpO2lmKCFhKXt2YXIgbz1pLmluZGV4T2Yocik7bz4wJiYhZS50ZXN0KGkuc3Vic3RyaW5nKDAsbykpJiYoYT0hMCl9cmV0dXJuIGF9ZnVuY3Rpb24geGUoaSxuKXt2YXIgcj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO24mJih0PXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocix0KX1yZXR1cm4gcn1mdW5jdGlvbiBlZShpKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1hcmd1bWVudHNbbl0hPW51bGw/YXJndW1lbnRzW25dOnt9O24lMj94ZShPYmplY3QociksITApLmZvckVhY2goZnVuY3Rpb24odCl7RihpLHQsclt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTp4ZShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gcnQoaSl7dmFyIG49YXQoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1qKGkpLGU7aWYobil7dmFyIGE9aih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLGEpfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTSh0aGlzLGUpfX1mdW5jdGlvbiBhdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBQZShpLG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXToiLiI7aWYoaSl7aWYoaVtuXSlyZXR1cm4gaVtuXTtmb3IodmFyIHQ9bi5zcGxpdChyKSxlPWksYT0wO2E8dC5sZW5ndGg7KythKXtpZighZXx8dHlwZW9mIGVbdFthXV09PSJzdHJpbmciJiZhKzE8dC5sZW5ndGgpcmV0dXJuO2lmKGVbdFthXV09PT12b2lkIDApe2Zvcih2YXIgbz0yLHM9dC5zbGljZShhLGErbykuam9pbihyKSx1PWVbc107dT09PXZvaWQgMCYmdC5sZW5ndGg+YStvOylvKysscz10LnNsaWNlKGEsYStvKS5qb2luKHIpLHU9ZVtzXTtpZih1PT09dm9pZCAwKXJldHVybjtpZih1PT09bnVsbClyZXR1cm4gbnVsbDtpZihuLmVuZHNXaXRoKHMpKXtpZih0eXBlb2YgdT09InN0cmluZyIpcmV0dXJuIHU7aWYocyYmdHlwZW9mIHVbc109PSJzdHJpbmciKXJldHVybi
14B1W3NdfXZhciBsPXQuc2xpY2UoYStvKS5qb2luKHIpO3JldHVybiBsP1BlKHUsbCxyKTp2b2lkIDB9ZT1lW3RbYV1dfXJldHVybiBlfX12YXIgaXQ9ZnVuY3Rpb24oaSl7WihyLGkpO3ZhciBuPXJ0KHIpO2Z1bmN0aW9uIHIodCl7dmFyIGUsYT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e25zOlsidHJhbnNsYXRpb24iXSxkZWZhdWx0TlM6InRyYW5zbGF0aW9uIn07cmV0dXJuIFIodGhpcyxyKSxlPW4uY2FsbCh0aGlzKSxYJiZULmNhbGwoRChlKSksZS5kYXRhPXR8fHt9LGUub3B0aW9ucz1hLGUub3B0aW9ucy5rZXlTZXBhcmF0b3I9PT12b2lkIDAmJihlLm9wdGlvbnMua2V5U2VwYXJhdG9yPSIuIiksZS5vcHRpb25zLmlnbm9yZUpTT05TdHJ1Y3R1cmU9PT12b2lkIDAmJihlLm9wdGlvbnMuaWdub3JlSlNPTlN0cnVjdHVyZT0hMCksZX1yZXR1cm4gayhyLFt7a2V5OiJhZGROYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnMubnMuaW5kZXhPZihlKTwwJiZ0aGlzLm9wdGlvbnMubnMucHVzaChlKX19LHtrZXk6InJlbW92ZU5hbWVzcGFjZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBhPXRoaXMub3B0aW9ucy5ucy5pbmRleE9mKGUpO2E+LTEmJnRoaXMub3B0aW9ucy5ucy5zcGxpY2UoYSwxKX19LHtrZXk6ImdldFJlc291cmNlIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9LHU9cy5rZXlTZXBhcmF0b3IhPT12b2lkIDA/cy5rZXlTZXBhcmF0b3I6dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcixsPXMuaWdub3JlSlNPTlN0cnVjdHVyZSE9PXZvaWQgMD9zLmlnbm9yZUpTT05TdHJ1Y3R1cmU6dGhpcy5vcHRpb25zLmlnbm9yZUpTT05TdHJ1Y3R1cmUsYz1bZSxhXTtvJiZ0eXBlb2YgbyE9InN0cmluZyImJihjPWMuY29uY2F0KG8pKSxvJiZ0eXBlb2Ygbz09InN0cmluZyImJihjPWMuY29uY2F0KHU/by5zcGxpdCh1KTpvKSksZS5pbmRleE9mKCIuIik+LTEmJihjPWUuc3BsaXQoIi4iKSk7dmFyIGY9cSh0aGlzLmRhdGEsYyk7cmV0dXJuIGZ8fCFsfHx0eXBlb2YgbyE9InN0cmluZyI/ZjpQZSh0aGlzLmRhdGEmJnRoaXMuZGF0YVtlXSYmdGhpcy5kYXRhW2VdW2FdLG8sdSl9fSx7a2V5OiJhZGRSZXNvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8scyl7dmFyIHU9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOntzaWxlbnQ6ITF9LGw9dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcjtsPT09dm9pZCAwJiYobD0iLiIpO3ZhciBjPVtlLGFdO28mJihjPWMuY29uY2F0KGw/by5zcGxpdChsKTpvKSksZS5pbmRleE9mKCIuIik+LTEmJihjPWUuc3BsaXQoIi4iKSxzPWEsYT1jWzFdKSx0aGlzLmFkZE5hbWVzcGFjZXMoYSksT2UodGhpcy5kYXRhLGMscyksdS5zaWxlbnR8fHRoaXMuZW1pdCgiYWRkZWQiLGUsYSxvLHMpfX0se2tleToiYWRkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOntzaWxlbnQ6ITF9O2Zvcih2YXIgdSBpbiBvKSh0eXBlb2Ygb1t1XT09InN0cmluZyJ8fE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkob1t1XSk9PT0iW29iamVjdCBBcnJheV0iKSYmdGhpcy5hZGRSZXNvdXJjZShlLGEsdSxvW3VdLHtzaWxlbnQ6ITB9KTtzLnNpbGVudHx8dGhpcy5lbWl0KCJhZGRlZCIsZSxhLG8pfX0se2tleToiYWRkUmVzb3VyY2VCdW5kbGUiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvLHMsdSl7dmFyIGw9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOntzaWxlbnQ6ITF9LGM9W2UsYV07ZS5pbmRleE9mKCIuIik+LTEmJihjPWUuc3BsaXQoIi4iKSxzPW8sbz1hLGE9Y1sxXSksdGhpcy5hZGROYW1lc3BhY2VzKGEpO3ZhciBmPXEodGhpcy5kYXRhLGMpfHx7fTtzP1NlKGYsbyx1KTpmPWVlKGVlKHt9LGYpLG8pLE9lKHRoaXMuZGF0YSxjLGYpLGwuc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixlLGEsbyl9fSx7a2V5OiJyZW1vdmVSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oZSxhKXt0aGlzLmhhc1Jlc291cmNlQnVuZGxlKGUsYSkmJmRlbGV0ZSB0aGlzLmRhdGFbZV1bYV0sdGhpcy5yZW1vdmVOYW1lc3BhY2VzKGEpLHRoaXMuZW1pdCgicmVtb3ZlZCIsZSxhKX19LHtrZXk6Imhhc1Jlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihlLGEpe3JldHVybiB0aGlzLmdldFJlc291cmNlKGUsYSkhPT12b2lkIDB9fSx7a2V5OiJnZXRSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gYXx8KGE9dGhpcy5vcHRpb25zLmRlZmF1bHROUyksdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEk9PT0idjEiP2VlKGVlKHt9LHt9KSx0aGlzLmdldFJlc291cmNlKGUsYSkpOnRoaXMuZ2V0UmVzb3VyY2UoZSxhKX19LHtrZXk6ImdldERhdGFCeUxhbmd1YWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kYXRhW2VdfX0se2tleToiaGFzTGFuZ3VhZ2VTb21lVHJhbnNsYXRpb25zIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLmdldERhdGFCeUxhbmd1YWdlKGUpLG89YSYmT2JqZWN0LmtleXMoYSl8fFtdO3JldHVybiEhby5maW5kKGZ1bmN0aW9uKHMpe3JldHVybiBhW3NdJiZPYmplY3Qua2V5cyhhW3NdKS5sZW5ndGg+MH0pfX0se2tleToidG9KU09OIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fV0pLHJ9KFQpLExlPXtwcm9jZXNzb3JzOnt9LGFkZFBvc3RQcm9jZXNzb3I6ZnVuY3Rpb24obil7dGhpcy5wcm9jZXNzb3JzW24ubmFtZV09bn0saGFuZGxlOmZ1bmN0aW9uKG4scix0LGUsYSl7dmFyIG89dGhpcztyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKHMpe28ucHJvY2Vzc29yc1tzXSYmKHI9by5wcm9jZXNzb3JzW3NdLnByb2Nlc3Mocix0LGUsYSkpfSkscn19O2Z1bmN0aW9uIFJlKGksbil7dmFyIHI9T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTtuJiYodD10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksci5wdXNoLmFwcGx5KHIsdCl9cmV0dXJuIHJ9ZnVuY3Rpb24gdyhpKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1hcmd1bWVudHNbbl0hPW51bGw/YXJndW1lbnRzW25dOnt9O24lMj9SZShPYmplY3QociksITApLmZvckVhY2goZnVuY3Rpb24odCl7RihpLHQsclt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpSZShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gb3QoaSl7dmFyIG49c3QoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1qKGkpLGU7aWYobil7dmFyIGE9aih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLGEpfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTSh0aGlzLGUpfX1mdW5jdGlvbiBzdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX12YXIga2U9e30samU9ZnVuY3Rpb24oaSl7WihyLGkpO3ZhciBuPW90KHIpO2Z1bmN0aW9uIHIodCl7dmFyIGUsYT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307cmV0dXJuIFIodGhpcyxyKSxlPW4uY2FsbCh0aGlzKSxYJiZULmNhbGwoRChlKSksWmUoWyJyZXNvdXJjZVN0b3JlIiwibGFuZ3VhZ2VVdGlscyIsInBsdXJhbFJlc29sdmVyIiwiaW50ZXJwb2xhdG9yIiwiYmFja2VuZENvbm5lY3RvciIsImkxOG5Gb3JtYXQiLCJ1dGlscyJdLHQsRChlKSksZS5vcHRpb25zPWEsZS5vcHRpb25zLmtleVNlcGFyYXRvcj09PXZvaWQgMCYmKGUub3B0aW9ucy5rZXlTZXBhcmF0b3I9Ii4iKSxlLmxvZ2dlcj1OLmNyZWF0ZSgidHJhbnNsYXRvciIpLGV9cmV0dXJuIGsocixbe2tleToiY2hhbmdlTGFuZ3VhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2UmJih0aGlzLmxhbmd1YWdlPWUpfX0se2tleToiZXhpc3RzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e2ludGVycG9sYXRpb246e319O2lmKGU9PW51bGwpcmV0dXJuITE7dmFyIG89dGhpcy5yZXNvbHZlKGUsYSk7cmV0dXJuIG8mJm8ucmVzIT09dm9pZCAwfX0se2tleToiZXh0cmFjdEZyb21LZXkiLHZhbHVlOmZ1bmN0aW9uKGUsYSl7dmFyIG89YS5uc1NlcGFyYXRvciE9PXZvaWQgMD9hLm5zU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5uc1NlcGFyYXRvcjtvPT09dm9pZCAwJiYobz0iOiIpO3ZhciBzPWEua2V5U2VwYXJhdG9yIT09dm9pZCAwP2Eua2V5U2VwYXJhdG9yOnRoaXMub3B0aW9ucy5rZXlTZXBhcmF0b3IsdT1hLm5zfHx0aGlzLm9wdGlvbnMuZGVmYXVsdE5TfHxbXSxsPW8mJmUuaW5kZXhPZihvKT4tMSxjPSF0aGlzLm9wdGlvbnMudXNlckRlZmluZWRLZXlTZXBhcmF0b3ImJiFhLmtleVNlcGFyYXRvciYmIXRoaXMub3B0aW9ucy51c2VyRGVmaW5lZE5zU2VwYXJhdG9yJiYhYS5uc1NlcGFyYXRvciYmIW50KGUsbyxzKTtpZihsJiYhYyl7dmFyIGY9ZS5tYXRjaCh0aGlzLmludGVycG9sYXRvci5uZXN0aW5nUmVnZXhwKTtpZihmJiZmLmxlbmd0aD4wKXJldHVybntrZXk6ZSxuYW1lc3BhY2VzOnV9O3ZhciBnPWUuc3BsaXQobyk7KG8hPT1zfHxvPT09cyYmdGhpcy5vcHRpb25zLm5zLmluZGV4T2YoZ1swXSk+LTEpJiYodT1nLnNoaWZ0KCkpLGU9Zy5qb2luKHMpfXJldHVybi
14B0eXBlb2YgdT09InN0cmluZyImJih1PVt1XSkse2tleTplLG5hbWVzcGFjZXM6dX19fSx7a2V5OiJ0cmFuc2xhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz10aGlzO2lmKFAoYSkhPT0ib2JqZWN0IiYmdGhpcy5vcHRpb25zLm92ZXJsb2FkVHJhbnNsYXRpb25PcHRpb25IYW5kbGVyJiYoYT10aGlzLm9wdGlvbnMub3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXIoYXJndW1lbnRzKSksYXx8KGE9e30pLGU9PW51bGwpcmV0dXJuIiI7QXJyYXkuaXNBcnJheShlKXx8KGU9W1N0cmluZyhlKV0pO3ZhciB1PWEucmV0dXJuRGV0YWlscyE9PXZvaWQgMD9hLnJldHVybkRldGFpbHM6dGhpcy5vcHRpb25zLnJldHVybkRldGFpbHMsbD1hLmtleVNlcGFyYXRvciE9PXZvaWQgMD9hLmtleVNlcGFyYXRvcjp0aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yLGM9dGhpcy5leHRyYWN0RnJvbUtleShlW2UubGVuZ3RoLTFdLGEpLGY9Yy5rZXksZz1jLm5hbWVzcGFjZXMscD1nW2cubGVuZ3RoLTFdLG09YS5sbmd8fHRoaXMubGFuZ3VhZ2UseT1hLmFwcGVuZE5hbWVzcGFjZVRvQ0lNb2RlfHx0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGU7aWYobSYmbS50b0xvd2VyQ2FzZSgpPT09ImNpbW9kZSIpe2lmKHkpe3ZhciB2PWEubnNTZXBhcmF0b3J8fHRoaXMub3B0aW9ucy5uc1NlcGFyYXRvcjtyZXR1cm4gdT8oZC5yZXM9IiIuY29uY2F0KHApLmNvbmNhdCh2KS5jb25jYXQoZiksZCk6IiIuY29uY2F0KHApLmNvbmNhdCh2KS5jb25jYXQoZil9cmV0dXJuIHU/KGQucmVzPWYsZCk6Zn12YXIgZD10aGlzLnJlc29sdmUoZSxhKSxoPWQmJmQucmVzLE89ZCYmZC51c2VkS2V5fHxmLGI9ZCYmZC5leGFjdFVzZWRLZXl8fGYseD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGgpLEU9WyJbb2JqZWN0IE51bWJlcl0iLCJbb2JqZWN0IEZ1bmN0aW9uXSIsIltvYmplY3QgUmVnRXhwXSJdLEE9YS5qb2luQXJyYXlzIT09dm9pZCAwP2Euam9pbkFycmF5czp0aGlzLm9wdGlvbnMuam9pbkFycmF5cyxKPSF0aGlzLmkxOG5Gb3JtYXR8fHRoaXMuaTE4bkZvcm1hdC5oYW5kbGVBc09iamVjdCx6PXR5cGVvZiBoIT0ic3RyaW5nIiYmdHlwZW9mIGghPSJib29sZWFuIiYmdHlwZW9mIGghPSJudW1iZXIiO2lmKEomJmgmJnomJkUuaW5kZXhPZih4KTwwJiYhKHR5cGVvZiBBPT0ic3RyaW5nIiYmeD09PSJbb2JqZWN0IEFycmF5XSIpKXtpZighYS5yZXR1cm5PYmplY3RzJiYhdGhpcy5vcHRpb25zLnJldHVybk9iamVjdHMpe3RoaXMub3B0aW9ucy5yZXR1cm5lZE9iamVjdEhhbmRsZXJ8fHRoaXMubG9nZ2VyLndhcm4oImFjY2Vzc2luZyBhbiBvYmplY3QgLSBidXQgcmV0dXJuT2JqZWN0cyBvcHRpb25zIGlzIG5vdCBlbmFibGVkISIpO3ZhciAkPXRoaXMub3B0aW9ucy5yZXR1cm5lZE9iamVjdEhhbmRsZXI/dGhpcy5vcHRpb25zLnJldHVybmVkT2JqZWN0SGFuZGxlcihPLGgsdyh3KHt9LGEpLHt9LHtuczpnfSkpOiJrZXkgJyIuY29uY2F0KGYsIiAoIikuY29uY2F0KHRoaXMubGFuZ3VhZ2UsIiknIHJldHVybmVkIGFuIG9iamVjdCBpbnN0ZWFkIG9mIHN0cmluZy4iKTtyZXR1cm4gdT8oZC5yZXM9JCxkKTokfWlmKGwpe3ZhciBfZT14PT09IltvYmplY3QgQXJyYXldIixhZT1fZT9bXTp7fSxDdD1fZT9iOk87Zm9yKHZhciBWIGluIGgpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsVikpe3ZhciBBZT0iIi5jb25jYXQoQ3QpLmNvbmNhdChsKS5jb25jYXQoVik7YWVbVl09dGhpcy50cmFuc2xhdGUoQWUsdyh3KHt9LGEpLHtqb2luQXJyYXlzOiExLG5zOmd9KSksYWVbVl09PT1BZSYmKGFlW1ZdPWhbVl0pfWg9YWV9fWVsc2UgaWYoSiYmdHlwZW9mIEE9PSJzdHJpbmciJiZ4PT09IltvYmplY3QgQXJyYXldIiloPWguam9pbihBKSxoJiYoaD10aGlzLmV4dGVuZFRyYW5zbGF0aW9uKGgsZSxhLG8pKTtlbHNle3ZhciBpZT0hMSxXPSExLFVlPWEuY291bnQhPT12b2lkIDAmJnR5cGVvZiBhLmNvdW50IT0ic3RyaW5nIixsZT1yLmhhc0RlZmF1bHRWYWx1ZShhKSxFdD1VZT90aGlzLnBsdXJhbFJlc29sdmVyLmdldFN1ZmZpeChtLGEuY291bnQsYSk6IiIsWT1hWyJkZWZhdWx0VmFsdWUiLmNvbmNhdChFdCldfHxhLmRlZmF1bHRWYWx1ZTshdGhpcy5pc1ZhbGlkTG9va3VwKGgpJiZsZSYmKGllPSEwLGg9WSksdGhpcy5pc1ZhbGlkTG9va3VwKGgpfHwoVz0hMCxoPWYpO3ZhciBEdD1hLm1pc3NpbmdLZXlOb1ZhbHVlRmFsbGJhY2tUb0tleXx8dGhpcy5vcHRpb25zLm1pc3NpbmdLZXlOb1ZhbHVlRmFsbGJhY2tUb0tleSxGdD1EdCYmVz92b2lkIDA6aCxHPWxlJiZZIT09aCYmdGhpcy5vcHRpb25zLnVwZGF0ZU1pc3Npbmc7aWYoV3x8aWV8fEcpe2lmKHRoaXMubG9nZ2VyLmxvZyhHPyJ1cGRhdGVLZXkiOiJtaXNzaW5nS2V5IixtLHAsZixHP1k6aCksbCl7dmFyIEtlPXRoaXMucmVzb2x2ZShmLHcodyh7fSxhKSx7fSx7a2V5U2VwYXJhdG9yOiExfSkpO0tlJiZLZS5yZXMmJnRoaXMubG9nZ2VyLndhcm4oIlNlZW1zIHRoZSBsb2FkZWQgdHJhbnNsYXRpb25zIHdlcmUgaW4gZmxhdCBKU09OIGZvcm1hdCBpbnN0ZWFkIG9mIG5lc3RlZC4gRWl0aGVyIHNldCBrZXlTZXBhcmF0b3I6IGZhbHNlIG9uIGluaXQgb3IgbWFrZSBzdXJlIHlvdXIgdHJhbnNsYXRpb25zIGFyZSBwdWJsaXNoZWQgaW4gbmVzdGVkIGZvcm1hdC4iKX12YXIgUT1bXSxvZT10aGlzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcsYS5sbmd8fHRoaXMubGFuZ3VhZ2UpO2lmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImZhbGxiYWNrIiYmb2UmJm9lWzBdKWZvcih2YXIgY2U9MDtjZTxvZS5sZW5ndGg7Y2UrKylRLnB1c2gob2VbY2VdKTtlbHNlIHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImFsbCI/UT10aGlzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGEubG5nfHx0aGlzLmxhbmd1YWdlKTpRLnB1c2goYS5sbmd8fHRoaXMubGFuZ3VhZ2UpO3ZhciAkZT1mdW5jdGlvbihCLHBlLFZlKXt2YXIgQmU9bGUmJlZlIT09aD9WZTpGdDtzLm9wdGlvbnMubWlzc2luZ0tleUhhbmRsZXI/cy5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyKEIscCxwZSxCZSxHLGEpOnMuYmFja2VuZENvbm5lY3RvciYmcy5iYWNrZW5kQ29ubmVjdG9yLnNh
14dmVNaXNzaW5nJiZzLmJhY2tlbmRDb25uZWN0b3Iuc2F2ZU1pc3NpbmcoQixwLHBlLEJlLEcsYSkscy5lbWl0KCJtaXNzaW5nS2V5IixCLHAscGUsaCl9O3RoaXMub3B0aW9ucy5zYXZlTWlzc2luZyYmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1BsdXJhbHMmJlVlP1EuZm9yRWFjaChmdW5jdGlvbihnZSl7cy5wbHVyYWxSZXNvbHZlci5nZXRTdWZmaXhlcyhnZSxhKS5mb3JFYWNoKGZ1bmN0aW9uKEIpeyRlKFtnZV0sZitCLGFbImRlZmF1bHRWYWx1ZSIuY29uY2F0KEIpXXx8WSl9KX0pOiRlKFEsZixZKSl9aD10aGlzLmV4dGVuZFRyYW5zbGF0aW9uKGgsZSxhLGQsbyksVyYmaD09PWYmJnRoaXMub3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXkmJihoPSIiLmNvbmNhdChwLCI6IikuY29uY2F0KGYpKSwoV3x8aWUpJiZ0aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlciYmKHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5QVBJIT09InYxIj9oPXRoaXMub3B0aW9ucy5wYXJzZU1pc3NpbmdLZXlIYW5kbGVyKHRoaXMub3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXk/IiIuY29uY2F0KHAsIjoiKS5jb25jYXQoZik6ZixpZT9oOnZvaWQgMCk6aD10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcihoKSl9cmV0dXJuIHU/KGQucmVzPWgsZCk6aH19LHtrZXk6ImV4dGVuZFRyYW5zbGF0aW9uIix2YWx1ZTpmdW5jdGlvbihlLGEsbyxzLHUpe3ZhciBsPXRoaXM7aWYodGhpcy5pMThuRm9ybWF0JiZ0aGlzLmkxOG5Gb3JtYXQucGFyc2UpZT10aGlzLmkxOG5Gb3JtYXQucGFyc2UoZSx3KHcoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyksbykscy51c2VkTG5nLHMudXNlZE5TLHMudXNlZEtleSx7cmVzb2x2ZWQ6c30pO2Vsc2UgaWYoIW8uc2tpcEludGVycG9sYXRpb24pe28uaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IuaW5pdCh3KHcoe30sbykse2ludGVycG9sYXRpb246dyh3KHt9LHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uKSxvLmludGVycG9sYXRpb24pfSkpO3ZhciBjPXR5cGVvZiBlPT0ic3RyaW5nIiYmKG8mJm8uaW50ZXJwb2xhdGlvbiYmby5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyE9PXZvaWQgMD9vLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzOnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyksZjtpZihjKXt2YXIgZz1lLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApO2Y9ZyYmZy5sZW5ndGh9dmFyIHA9by5yZXBsYWNlJiZ0eXBlb2Ygby5yZXBsYWNlIT0ic3RyaW5nIj9vLnJlcGxhY2U6bztpZih0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5kZWZhdWx0VmFyaWFibGVzJiYocD13KHcoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcykscCkpLGU9dGhpcy5pbnRlcnBvbGF0b3IuaW50ZXJwb2xhdGUoZSxwLG8ubG5nfHx0aGlzLmxhbmd1YWdlLG8pLGMpe3ZhciBtPWUubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCkseT1tJiZtLmxlbmd0aDtmPHkmJihvLm5lc3Q9ITEpfW8ubmVzdCE9PSExJiYoZT10aGlzLmludGVycG9sYXRvci5uZXN0KGUsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxPPW5ldyBBcnJheShoKSxiPTA7YjxoO2IrKylPW2JdPWFyZ3VtZW50c1tiXTtyZXR1cm4gdSYmdVswXT09PU9bMF0mJiFvLmNvbnRleHQ/KGwubG9nZ2VyLndhcm4oIkl0IHNlZW1zIHlvdSBhcmUgbmVzdGluZyByZWN1cnNpdmVseSBrZXk6ICIuY29uY2F0KE9bMF0sIiBpbiBrZXk6ICIpLmNvbmNhdChhWzBdKSksbnVsbCk6bC50cmFuc2xhdGUuYXBwbHkobCxPLmNvbmNhdChbYV0pKX0sbykpLG8uaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IucmVzZXQoKX12YXIgdj1vLnBvc3RQcm9jZXNzfHx0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3MsZD10eXBlb2Ygdj09InN0cmluZyI/W3ZdOnY7cmV0dXJuIGUhPW51bGwmJmQmJmQubGVuZ3RoJiZvLmFwcGx5UG9zdFByb2Nlc3NvciE9PSExJiYoZT1MZS5oYW5kbGUoZCxlLGEsdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3NQYXNzUmVzb2x2ZWQ/dyh7aTE4blJlc29sdmVkOnN9LG8pOm8sdGhpcykpLGV9fSx7a2V5OiJyZXNvbHZlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHMsdSxsLGMsZjtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT1bZV0pLGUuZm9yRWFjaChmdW5jdGlvbihnKXtpZighYS5pc1ZhbGlkTG9va3VwKHMpKXt2YXIgcD1hLmV4dHJhY3RGcm9tS2V5KGcsbyksbT1wLmtleTt1PW07dmFyIHk9cC5uYW1lc3BhY2VzO2Eub3B0aW9ucy5mYWxsYmFja05TJiYoeT15LmNvbmNhdChhLm9wdGlvbnMuZmFsbGJhY2tOUykpO3ZhciB2PW8uY291bnQhPT12b2lkIDAmJnR5cGVvZiBvLmNvdW50IT0ic3RyaW5nIixkPXYmJiFvLm9yZGluYWwmJm8uY291bnQ9PT0wJiZhLnBsdXJhbFJlc29sdmVyLnNob3VsZFVzZUludGxBcGkoKSxoPW8uY29udGV4dCE9PXZvaWQgMCYmKHR5cGVvZiBvLmNvbnRleHQ9PSJzdHJpbmcifHx0eXBlb2Ygby5jb250ZXh0PT0ibnVtYmVyIikmJm8uY29udGV4dCE9PSIiLE89by5sbmdzP28ubG5nczphLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KG8ubG5nfHxhLmxhbmd1YWdlLG8uZmFsbGJhY2tMbmcpO3kuZm9yRWFjaChmdW5jdGlvbihiKXthLmlzVmFsaWRMb29rdXAocyl8fChmPWIsIWtlWyIiLmNvbmNhdChPWzBdLCItIikuY29uY2F0KGIpXSYmYS51dGlscyYmYS51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UmJiFhLnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZShmKSYmKGtlWyIiLmNvbmNhdChPWzBdLCItIikuY29uY2F0KGIpXT0hMCxhLmxvZ2dlci53YXJuKCdrZXkgIicuY29uY2F0KHUsJyIgZm9yIGxhbmd1YWdlcyAiJykuY29uY2F0KE8uam9pbigiLCAiKSxgIiB3b24ndCBnZXQgcmVzb2x2ZWQgYXMgbmFtZXNwYWNlICJgKS5jb25jYXQoZiwnIiB3YXMgbm90IHlldCBsb2FkZWQnKSwiVGh
14pcyBtZWFucyBzb21ldGhpbmcgSVMgV1JPTkcgaW4geW91ciBzZXR1cC4gWW91IGFjY2VzcyB0aGUgdCBmdW5jdGlvbiBiZWZvcmUgaTE4bmV4dC5pbml0IC8gaTE4bmV4dC5sb2FkTmFtZXNwYWNlIC8gaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSB3YXMgZG9uZS4gV2FpdCBmb3IgdGhlIGNhbGxiYWNrIG9yIFByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgYWNjZXNzaW5nIGl0ISEhIikpLE8uZm9yRWFjaChmdW5jdGlvbih4KXtpZighYS5pc1ZhbGlkTG9va3VwKHMpKXtjPXg7dmFyIEU9W21dO2lmKGEuaTE4bkZvcm1hdCYmYS5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMpYS5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMoRSxtLHgsYixvKTtlbHNle3ZhciBBO3YmJihBPWEucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4KHgsby5jb3VudCxvKSk7dmFyIEo9IiIuY29uY2F0KGEub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsInplcm8iKTtpZih2JiYoRS5wdXNoKG0rQSksZCYmRS5wdXNoKG0rSikpLGgpe3ZhciB6PSIiLmNvbmNhdChtKS5jb25jYXQoYS5vcHRpb25zLmNvbnRleHRTZXBhcmF0b3IpLmNvbmNhdChvLmNvbnRleHQpO0UucHVzaCh6KSx2JiYoRS5wdXNoKHorQSksZCYmRS5wdXNoKHorSikpfX1mb3IodmFyICQ7JD1FLnBvcCgpOylhLmlzVmFsaWRMb29rdXAocyl8fChsPSQscz1hLmdldFJlc291cmNlKHgsYiwkLG8pKX19KSl9KX19KSx7cmVzOnMsdXNlZEtleTp1LGV4YWN0VXNlZEtleTpsLHVzZWRMbmc6Yyx1c2VkTlM6Zn19fSx7a2V5OiJpc1ZhbGlkTG9va3VwIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXZvaWQgMCYmISghdGhpcy5vcHRpb25zLnJldHVybk51bGwmJmU9PT1udWxsKSYmISghdGhpcy5vcHRpb25zLnJldHVybkVtcHR5U3RyaW5nJiZlPT09IiIpfX0se2tleToiZ2V0UmVzb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e307cmV0dXJuIHRoaXMuaTE4bkZvcm1hdCYmdGhpcy5pMThuRm9ybWF0LmdldFJlc291cmNlP3RoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZShlLGEsbyxzKTp0aGlzLnJlc291cmNlU3RvcmUuZ2V0UmVzb3VyY2UoZSxhLG8scyl9fV0sW3trZXk6Imhhc0RlZmF1bHRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9ImRlZmF1bHRWYWx1ZSI7Zm9yKHZhciBvIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJmE9PT1vLnN1YnN0cmluZygwLGEubGVuZ3RoKSYmZVtvXSE9PXZvaWQgMClyZXR1cm4hMDtyZXR1cm4hMX19XSkscn0oVCk7ZnVuY3Rpb24gZmUoaSl7cmV0dXJuIGkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkraS5zbGljZSgxKX12YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKG4pe1IodGhpcyxpKSx0aGlzLm9wdGlvbnM9bix0aGlzLnN1cHBvcnRlZExuZ3M9dGhpcy5vcHRpb25zLnN1cHBvcnRlZExuZ3N8fCExLHRoaXMubG9nZ2VyPU4uY3JlYXRlKCJsYW5ndWFnZVV0aWxzIil9cmV0dXJuIGsoaSxbe2tleToiZ2V0U2NyaXB0UGFydEZyb21Db2RlIix2YWx1ZTpmdW5jdGlvbihyKXtpZighcnx8ci5pbmRleE9mKCItIik8MClyZXR1cm4gbnVsbDt2YXIgdD1yLnNwbGl0KCItIik7cmV0dXJuIHQubGVuZ3RoPT09Mnx8KHQucG9wKCksdFt0Lmxlbmd0aC0xXS50b0xvd2VyQ2FzZSgpPT09IngiKT9udWxsOnRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKHQuam9pbigiLSIpKX19LHtrZXk6ImdldExhbmd1YWdlUGFydEZyb21Db2RlIix2YWx1ZTpmdW5jdGlvbihyKXtpZighcnx8ci5pbmRleE9mKCItIik8MClyZXR1cm4gcjt2YXIgdD1yLnNwbGl0KCItIik7cmV0dXJuIHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKHRbMF0pfX0se2tleToiZm9ybWF0TGFuZ3VhZ2VDb2RlIix2YWx1ZTpmdW5jdGlvbihyKXtpZih0eXBlb2Ygcj09InN0cmluZyImJnIuaW5kZXhPZigiLSIpPi0xKXt2YXIgdD1bImhhbnMiLCJoYW50IiwibGF0biIsImN5cmwiLCJjYW5zIiwibW9uZyIsImFyYWIiXSxlPXIuc3BsaXQoIi0iKTtyZXR1cm4gdGhpcy5vcHRpb25zLmxvd2VyQ2FzZUxuZz9lPWUubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG93ZXJDYXNlKCl9KTplLmxlbmd0aD09PTI/KGVbMF09ZVswXS50b0xvd2VyQ2FzZSgpLGVbMV09ZVsxXS50b1VwcGVyQ2FzZSgpLHQuaW5kZXhPZihlWzFdLnRvTG93ZXJDYXNlKCkpPi0xJiYoZVsxXT1mZShlWzFdLnRvTG93ZXJDYXNlKCkpKSk6ZS5sZW5ndGg9PT0zJiYoZVswXT1lWzBdLnRvTG93ZXJDYXNlKCksZVsxXS5sZW5ndGg9PT0yJiYoZVsxXT1lWzFdLnRvVXBwZXJDYXNlKCkpLGVbMF0hPT0ic2duIiYmZVsyXS5sZW5ndGg9PT0yJiYoZVsyXT1lWzJdLnRvVXBwZXJDYXNlKCkpLHQuaW5kZXhPZihlWzFdLnRvTG93ZXJDYXNlKCkpPi0xJiYoZVsxXT1mZShlWzFdLnRvTG93ZXJDYXNlKCkpKSx0LmluZGV4T2YoZVsyXS50b0xvd2VyQ2FzZSgpKT4tMSYmKGVbMl09ZmUoZVsyXS50b0xvd2VyQ2FzZSgpKSkpLGUuam9pbigiLSIpfXJldHVybiB0aGlzLm9wdGlvbnMuY2xlYW5Db2RlfHx0aGlzLm9wdGlvbnMubG93ZXJDYXNlTG5nP3IudG9Mb3dlckNhc2UoKTpyfX0se2tleToiaXNTdXBwb3J0ZWRDb2RlIix2YWx1ZTpmdW5jdGlvbihyKXtyZXR1cm4odGhpcy5vcHRpb25zLmxvYWQ9PT0ibGFuZ3VhZ2VPbmx5Inx8dGhpcy5vcHRpb25zLm5vbkV4cGxpY2l0U3VwcG9ydGVkTG5ncykmJihyPXRoaXMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUocikpLCF0aGlzLnN1cHBvcnRlZExuZ3N8fCF0aGlzLnN1cHBvcnRlZExuZ3MubGVuZ3RofHx0aGlzLnN1cHBvcnRlZExuZ3MuaW5kZXhPZihyKT4tMX19LHtrZXk6ImdldEJlc3RNYXRjaEZyb21Db2RlcyIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpcztpZighcilyZXR1cm4gbnVsbDt2YXIgZTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCFlKXt2YXIgbz10LmZvcm1hdExhbmd1YWdlQ29kZShhKTsoIXQub3B0aW9ucy5zdXBwb3J0ZWRMbmdzfHx0LmlzU3VwcG9ydGVkQ29kZShvKSkmJihlPW8pfX0pLCFlJiZ0aGlzLm9wdGlvbnMuc3VwcG9ydGVkTG5ncyYmci5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCFlKXt2YXIgbz10LmdldExhbmd1YWdlUGFydEZyb21Db2RlKGEpO2lmKHQuaXNTdXBwb3J0ZWRDb2RlKG8pKXJldHVybi
14BlPW87ZT10Lm9wdGlvbnMuc3VwcG9ydGVkTG5ncy5maW5kKGZ1bmN0aW9uKHMpe2lmKHMuaW5kZXhPZihvKT09PTApcmV0dXJuIHN9KX19KSxlfHwoZT10aGlzLmdldEZhbGxiYWNrQ29kZXModGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nKVswXSksZX19LHtrZXk6ImdldEZhbGxiYWNrQ29kZXMiLHZhbHVlOmZ1bmN0aW9uKHIsdCl7aWYoIXIpcmV0dXJuW107aWYodHlwZW9mIHI9PSJmdW5jdGlvbiImJihyPXIodCkpLHR5cGVvZiByPT0ic3RyaW5nIiYmKHI9W3JdKSxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHIpPT09IltvYmplY3QgQXJyYXldIilyZXR1cm4gcjtpZighdClyZXR1cm4gci5kZWZhdWx0fHxbXTt2YXIgZT1yW3RdO3JldHVybiBlfHwoZT1yW3RoaXMuZ2V0U2NyaXB0UGFydEZyb21Db2RlKHQpXSksZXx8KGU9clt0aGlzLmZvcm1hdExhbmd1YWdlQ29kZSh0KV0pLGV8fChlPXJbdGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZSh0KV0pLGV8fChlPXIuZGVmYXVsdCksZXx8W119fSx7a2V5OiJ0b1Jlc29sdmVIaWVyYXJjaHkiLHZhbHVlOmZ1bmN0aW9uKHIsdCl7dmFyIGU9dGhpcyxhPXRoaXMuZ2V0RmFsbGJhY2tDb2Rlcyh0fHx0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmd8fFtdLHIpLG89W10scz1mdW5jdGlvbihsKXtsJiYoZS5pc1N1cHBvcnRlZENvZGUobCk/by5wdXNoKGwpOmUubG9nZ2VyLndhcm4oInJlamVjdGluZyBsYW5ndWFnZSBjb2RlIG5vdCBmb3VuZCBpbiBzdXBwb3J0ZWRMbmdzOiAiLmNvbmNhdChsKSkpfTtyZXR1cm4gdHlwZW9mIHI9PSJzdHJpbmciJiZyLmluZGV4T2YoIi0iKT4tMT8odGhpcy5vcHRpb25zLmxvYWQhPT0ibGFuZ3VhZ2VPbmx5IiYmcyh0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShyKSksdGhpcy5vcHRpb25zLmxvYWQhPT0ibGFuZ3VhZ2VPbmx5IiYmdGhpcy5vcHRpb25zLmxvYWQhPT0iY3VycmVudE9ubHkiJiZzKHRoaXMuZ2V0U2NyaXB0UGFydEZyb21Db2RlKHIpKSx0aGlzLm9wdGlvbnMubG9hZCE9PSJjdXJyZW50T25seSImJnModGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShyKSkpOnR5cGVvZiByPT0ic3RyaW5nIiYmcyh0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShyKSksYS5mb3JFYWNoKGZ1bmN0aW9uKHUpe28uaW5kZXhPZih1KTwwJiZzKGUuZm9ybWF0TGFuZ3VhZ2VDb2RlKHUpKX0pLG99fV0pLGl9KCksZnQ9W3tsbmdzOlsiYWNoIiwiYWsiLCJhbSIsImFybiIsImJyIiwiZmlsIiwiZ3VuIiwibG4iLCJtZmUiLCJtZyIsIm1pIiwib2MiLCJwdCIsInB0LUJSIiwidGciLCJ0bCIsInRpIiwidHIiLCJ1eiIsIndhIl0sbnI6WzEsMl0sZmM6MX0se2xuZ3M6WyJhZiIsImFuIiwiYXN0IiwiYXoiLCJiZyIsImJuIiwiY2EiLCJkYSIsImRlIiwiZGV2IiwiZWwiLCJlbiIsImVvIiwiZXMiLCJldCIsImV1IiwiZmkiLCJmbyIsImZ1ciIsImZ5IiwiZ2wiLCJndSIsImhhIiwiaGkiLCJodSIsImh5IiwiaWEiLCJpdCIsImtrIiwia24iLCJrdSIsImxiIiwibWFpIiwibWwiLCJtbiIsIm1yIiwibmFoIiwibmFwIiwibmIiLCJuZSIsIm5sIiwibm4iLCJubyIsIm5zbyIsInBhIiwicGFwIiwicG1zIiwicHMiLCJwdC1QVCIsInJtIiwic2NvIiwic2UiLCJzaSIsInNvIiwic29uIiwic3EiLCJzdiIsInN3IiwidGEiLCJ0ZSIsInRrIiwidXIiLCJ5byJdLG5yOlsxLDJdLGZjOjJ9LHtsbmdzOlsiYXkiLCJibyIsImNnZyIsImZhIiwiaHQiLCJpZCIsImphIiwiamJvIiwia2EiLCJrbSIsImtvIiwia3kiLCJsbyIsIm1zIiwic2FoIiwic3UiLCJ0aCIsInR0IiwidWciLCJ2aSIsIndvIiwiemgiXSxucjpbMV0sZmM6M30se2xuZ3M6WyJiZSIsImJzIiwiY25yIiwiZHoiLCJociIsInJ1Iiwic3IiLCJ1ayJdLG5yOlsxLDIsNV0sZmM6NH0se2xuZ3M6WyJhciJdLG5yOlswLDEsMiwzLDExLDEwMF0sZmM6NX0se2xuZ3M6WyJjcyIsInNrIl0sbnI6WzEsMiw1XSxmYzo2fSx7bG5nczpbImNzYiIsInBsIl0sbnI6WzEsMiw1XSxmYzo3fSx7bG5nczpbImN5Il0sbnI6WzEsMiwzLDhdLGZjOjh9LHtsbmdzOlsiZnIiXSxucjpbMSwyXSxmYzo5fSx7bG5nczpbImdhIl0sbnI6WzEsMiwzLDcsMTFdLGZjOjEwfSx7bG5nczpbImdkIl0sbnI6WzEsMiwzLDIwXSxmYzoxMX0se2xuZ3M6WyJpcyJdLG5yOlsxLDJdLGZjOjEyfSx7bG5nczpbImp2Il0sbnI6WzAsMV0sZmM6MTN9LHtsbmdzOlsia3ciXSxucjpbMSwyLDMsNF0sZmM6MTR9LHtsbmdzOlsibHQiXSxucjpbMSwyLDEwXSxmYzoxNX0se2xuZ3M6WyJsdiJdLG5yOlsxLDIsMF0sZmM6MTZ9LHtsbmdzOlsibWsiXSxucjpbMSwyXSxmYzoxN30se2xuZ3M6WyJtbmsiXSxucjpbMCwxLDJdLGZjOjE4fSx7bG5nczpbIm10Il0sbnI6WzEsMiwxMSwyMF0sZmM6MTl9LHtsbmdzOlsib3IiXSxucjpbMiwxXSxmYzoyfSx7bG5nczpbInJvIl0sbnI6WzEsMiwyMF0sZmM6MjB9LHtsbmdzOlsic2wiXSxucjpbNSwxLDIsM10sZmM6MjF9LHtsbmdzOlsiaGUiLCJpdyJdLG5yOlsxLDIsMjAsMjFdLGZjOjIyfV0sbHQ9ezE6ZnVuY3Rpb24obil7cmV0dXJuKyhuPjEpfSwyOmZ1bmN0aW9uKG4pe3JldHVybisobiE9MSl9LDM6ZnVuY3Rpb24obil7cmV0dXJuIDB9LDQ6ZnVuY3Rpb24obil7cmV0dXJuIG4lMTA9PTEmJm4lMTAwIT0xMT8wOm4lMTA+PTImJm4lMTA8PTQmJihuJTEwMDwxMHx8biUxMDA+PTIwKT8xOjJ9LDU6ZnVuY3Rpb24obil7cmV0dXJuIG49PTA/MDpuPT0xPzE6bj09Mj8yOm4lMTAwPj0zJiZuJTEwMDw9MTA/MzpuJTEwMD49MTE/NDo1fSw2OmZ1bmN0aW9uKG4pe3JldHVybiBuPT0xPzA6bj49MiYmbjw9ND8xOjJ9LDc6ZnVuY3Rpb24obil7cmV0dXJuIG49PTE/MDpuJTEwPj0yJiZuJTEwPD00JiYobiUxMDA8MTB8fG4lMTAwPj0yMCk/MToyfSw4OmZ1bmN0aW9uKG4pe3JldHVybiBuPT0xPzA6bj09Mj8xOm4hPTgmJm4hPTExPzI6M30sOTpmdW5jdGlvbihuKXtyZXR1cm4rKG4+PTIpfSwxMDpmdW5jdGlvbihuKXtyZXR1cm4gbj09MT8wOm49PTI/MTpuPDc/MjpuPDExPzM6NH0sMTE6ZnVuY3Rpb24obil7cmV0dXJuIG49PTF8fG49PTExPzA6bj09Mnx8bj09MTI/MTpuPjImJm48MjA/MjozfSwxMjpmdW5jdGlvbihuKXtyZXR1cm4rKG4lMTAhPTF8fG4lMTAwPT0xMSl9LDEzOmZ1bmN0aW9uKG4pe3JldHVybisobiE9PTApfSwxNDpmdW5jdGlvbihuKXtyZXR1cm4gbj09MT8wOm49PTI/MTpuPT0zPzI6M30sMTU6ZnVuY3Rpb24obil7cmV0dXJuIG4lMTA9PTEmJm4lMTAwIT0xMT8wOm4lMTA+PTImJihuJTEwMDwxMHx8biUxMDA+PTIwKT8xOjJ9LDE2OmZ1bmN0aW9uKG4pe3JldHVybiBuJTEwPT0xJiZuJTEwMCE9MT
14E/MDpuIT09MD8xOjJ9LDE3OmZ1bmN0aW9uKG4pe3JldHVybiBuPT0xfHxuJTEwPT0xJiZuJTEwMCE9MTE/MDoxfSwxODpmdW5jdGlvbihuKXtyZXR1cm4gbj09MD8wOm49PTE/MToyfSwxOTpmdW5jdGlvbihuKXtyZXR1cm4gbj09MT8wOm49PTB8fG4lMTAwPjEmJm4lMTAwPDExPzE6biUxMDA+MTAmJm4lMTAwPDIwPzI6M30sMjA6ZnVuY3Rpb24obil7cmV0dXJuIG49PTE/MDpuPT0wfHxuJTEwMD4wJiZuJTEwMDwyMD8xOjJ9LDIxOmZ1bmN0aW9uKG4pe3JldHVybiBuJTEwMD09MT8xOm4lMTAwPT0yPzI6biUxMDA9PTN8fG4lMTAwPT00PzM6MH0sMjI6ZnVuY3Rpb24obil7cmV0dXJuIG49PTE/MDpuPT0yPzE6KG48MHx8bj4xMCkmJm4lMTA9PTA/MjozfX0sY3Q9WyJ2MSIsInYyIiwidjMiXSxOZT17emVybzowLG9uZToxLHR3bzoyLGZldzozLG1hbnk6NCxvdGhlcjo1fTtmdW5jdGlvbiBndCgpe3ZhciBpPXt9O3JldHVybiBmdC5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ubG5ncy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lbcl09e251bWJlcnM6bi5ucixwbHVyYWxzOmx0W24uZmNdfX0pfSksaX12YXIgcHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtSKHRoaXMsaSksdGhpcy5sYW5ndWFnZVV0aWxzPW4sdGhpcy5vcHRpb25zPXIsdGhpcy5sb2dnZXI9Ti5jcmVhdGUoInBsdXJhbFJlc29sdmVyIiksKCF0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT058fHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2NCIpJiYodHlwZW9mIEludGw+InUifHwhSW50bC5QbHVyYWxSdWxlcykmJih0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049InYzIix0aGlzLmxvZ2dlci5lcnJvcigiWW91ciBlbnZpcm9ubWVudCBzZWVtcyBub3QgdG8gYmUgSW50bCBBUEkgY29tcGF0aWJsZSwgdXNlIGFuIEludGwuUGx1cmFsUnVsZXMgcG9seWZpbGwuIFdpbGwgZmFsbGJhY2sgdG8gdGhlIGNvbXBhdGliaWxpdHlKU09OIHYzIGZvcm1hdCBoYW5kbGluZy4iKSksdGhpcy5ydWxlcz1ndCgpfXJldHVybiBrKGksW3trZXk6ImFkZFJ1bGUiLHZhbHVlOmZ1bmN0aW9uKHIsdCl7dGhpcy5ydWxlc1tyXT10fX0se2tleToiZ2V0UnVsZSIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O2lmKHRoaXMuc2hvdWxkVXNlSW50bEFwaSgpKXRyeXtyZXR1cm4gbmV3IEludGwuUGx1cmFsUnVsZXMocix7dHlwZTp0Lm9yZGluYWw/Im9yZGluYWwiOiJjYXJkaW5hbCJ9KX1jYXRjaHtyZXR1cm59cmV0dXJuIHRoaXMucnVsZXNbcl18fHRoaXMucnVsZXNbdGhpcy5sYW5ndWFnZVV0aWxzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKHIpXX19LHtrZXk6Im5lZWRzUGx1cmFsIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sZT10aGlzLmdldFJ1bGUocix0KTtyZXR1cm4gdGhpcy5zaG91bGRVc2VJbnRsQXBpKCk/ZSYmZS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmxlbmd0aD4xOmUmJmUubnVtYmVycy5sZW5ndGg+MX19LHtrZXk6ImdldFBsdXJhbEZvcm1zT2ZLZXkiLHZhbHVlOmZ1bmN0aW9uKHIsdCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9O3JldHVybiB0aGlzLmdldFN1ZmZpeGVzKHIsZSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiIiLmNvbmNhdCh0KS5jb25jYXQoYSl9KX19LHtrZXk6ImdldFN1ZmZpeGVzIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LGE9dGhpcy5nZXRSdWxlKHIsZSk7cmV0dXJuIGE/dGhpcy5zaG91bGRVc2VJbnRsQXBpKCk/YS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLnNvcnQoZnVuY3Rpb24obyxzKXtyZXR1cm4gTmVbb10tTmVbc119KS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIiIuY29uY2F0KHQub3B0aW9ucy5wcmVwZW5kKS5jb25jYXQobyl9KTphLm51bWJlcnMubWFwKGZ1bmN0aW9uKG8pe3JldHVybiB0LmdldFN1ZmZpeChyLG8sZSl9KTpbXX19LHtrZXk6ImdldFN1ZmZpeCIsdmFsdWU6ZnVuY3Rpb24ocix0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30sYT10aGlzLmdldFJ1bGUocixlKTtyZXR1cm4gYT90aGlzLnNob3VsZFVzZUludGxBcGkoKT8iIi5jb25jYXQodGhpcy5vcHRpb25zLnByZXBlbmQpLmNvbmNhdChhLnNlbGVjdCh0KSk6dGhpcy5nZXRTdWZmaXhSZXRyb0NvbXBhdGlibGUoYSx0KToodGhpcy5sb2dnZXIud2Fybigibm8gcGx1cmFsIHJ1bGUgZm91bmQgZm9yOiAiLmNvbmNhdChyKSksIiIpfX0se2tleToiZ2V0U3VmZml4UmV0cm9Db21wYXRpYmxlIix2YWx1ZTpmdW5jdGlvbihyLHQpe3ZhciBlPXRoaXMsYT1yLm5vQWJzP3IucGx1cmFscyh0KTpyLnBsdXJhbHMoTWF0aC5hYnModCkpLG89ci5udW1iZXJzW2FdO3RoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCYmci5udW1iZXJzLmxlbmd0aD09PTImJnIubnVtYmVyc1swXT09PTEmJihvPT09Mj9vPSJwbHVyYWwiOm89PT0xJiYobz0iIikpO3ZhciBzPWZ1bmN0aW9uKCl7cmV0dXJuIGUub3B0aW9ucy5wcmVwZW5kJiZvLnRvU3RyaW5nKCk/ZS5vcHRpb25zLnByZXBlbmQrby50b1N0cmluZygpOm8udG9TdHJpbmcoKX07cmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2MSI/bz09PTE/IiI6dHlwZW9mIG89PSJudW1iZXIiPyJfcGx1cmFsXyIuY29uY2F0KG8udG9TdHJpbmcoKSk6cygpOnRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2MiJ8fHRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCYmci5udW1iZXJzLmxlbmd0aD09PTImJnIubnVtYmVyc1swXT09PTE/cygpOnRoaXMub3B0aW9ucy5wcmVwZW5kJiZhLnRvU3RyaW5nKCk/dGhpcy5vcHRpb25zLnByZXBlbmQrYS50b1N0cmluZygpOmEudG9TdHJpbmc
14oKX19LHtrZXk6InNob3VsZFVzZUludGxBcGkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIWN0LmluY2x1ZGVzKHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTil9fV0pLGl9KCk7ZnVuY3Rpb24gQ2UoaSxuKXt2YXIgcj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO24mJih0PXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocix0KX1yZXR1cm4gcn1mdW5jdGlvbiBMKGkpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciByPWFyZ3VtZW50c1tuXSE9bnVsbD9hcmd1bWVudHNbbl06e307biUyP0NlKE9iamVjdChyKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtGKGksdCxyW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOkNlKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KX1yZXR1cm4gaX12YXIgZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O1IodGhpcyxpKSx0aGlzLmxvZ2dlcj1OLmNyZWF0ZSgiaW50ZXJwb2xhdG9yIiksdGhpcy5vcHRpb25zPW4sdGhpcy5mb3JtYXQ9bi5pbnRlcnBvbGF0aW9uJiZuLmludGVycG9sYXRpb24uZm9ybWF0fHxmdW5jdGlvbihyKXtyZXR1cm4gcn0sdGhpcy5pbml0KG4pfXJldHVybiBrKGksW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3IuaW50ZXJwb2xhdGlvbnx8KHIuaW50ZXJwb2xhdGlvbj17ZXNjYXBlVmFsdWU6ITB9KTt2YXIgdD1yLmludGVycG9sYXRpb247dGhpcy5lc2NhcGU9dC5lc2NhcGUhPT12b2lkIDA/dC5lc2NhcGU6ZXQsdGhpcy5lc2NhcGVWYWx1ZT10LmVzY2FwZVZhbHVlIT09dm9pZCAwP3QuZXNjYXBlVmFsdWU6ITAsdGhpcy51c2VSYXdWYWx1ZVRvRXNjYXBlPXQudXNlUmF3VmFsdWVUb0VzY2FwZSE9PXZvaWQgMD90LnVzZVJhd1ZhbHVlVG9Fc2NhcGU6ITEsdGhpcy5wcmVmaXg9dC5wcmVmaXg/VSh0LnByZWZpeCk6dC5wcmVmaXhFc2NhcGVkfHwie3siLHRoaXMuc3VmZml4PXQuc3VmZml4P1UodC5zdWZmaXgpOnQuc3VmZml4RXNjYXBlZHx8In19Iix0aGlzLmZvcm1hdFNlcGFyYXRvcj10LmZvcm1hdFNlcGFyYXRvcj90LmZvcm1hdFNlcGFyYXRvcjp0LmZvcm1hdFNlcGFyYXRvcnx8IiwiLHRoaXMudW5lc2NhcGVQcmVmaXg9dC51bmVzY2FwZVN1ZmZpeD8iIjp0LnVuZXNjYXBlUHJlZml4fHwiLSIsdGhpcy51bmVzY2FwZVN1ZmZpeD10aGlzLnVuZXNjYXBlUHJlZml4PyIiOnQudW5lc2NhcGVTdWZmaXh8fCIiLHRoaXMubmVzdGluZ1ByZWZpeD10Lm5lc3RpbmdQcmVmaXg/VSh0Lm5lc3RpbmdQcmVmaXgpOnQubmVzdGluZ1ByZWZpeEVzY2FwZWR8fFUoIiR0KCIpLHRoaXMubmVzdGluZ1N1ZmZpeD10Lm5lc3RpbmdTdWZmaXg/VSh0Lm5lc3RpbmdTdWZmaXgpOnQubmVzdGluZ1N1ZmZpeEVzY2FwZWR8fFUoIikiKSx0aGlzLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yPXQubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I/dC5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcjp0Lm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yfHwiLCIsdGhpcy5tYXhSZXBsYWNlcz10Lm1heFJlcGxhY2VzP3QubWF4UmVwbGFjZXM6MWUzLHRoaXMuYWx3YXlzRm9ybWF0PXQuYWx3YXlzRm9ybWF0IT09dm9pZCAwP3QuYWx3YXlzRm9ybWF0OiExLHRoaXMucmVzZXRSZWdFeHAoKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhpcy5pbml0KHRoaXMub3B0aW9ucyl9fSx7a2V5OiJyZXNldFJlZ0V4cCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj0iIi5jb25jYXQodGhpcy5wcmVmaXgsIiguKz8pIikuY29uY2F0KHRoaXMuc3VmZml4KTt0aGlzLnJlZ2V4cD1uZXcgUmVnRXhwKHIsImciKTt2YXIgdD0iIi5jb25jYXQodGhpcy5wcmVmaXgpLmNvbmNhdCh0aGlzLnVuZXNjYXBlUHJlZml4LCIoLis/KSIpLmNvbmNhdCh0aGlzLnVuZXNjYXBlU3VmZml4KS5jb25jYXQodGhpcy5zdWZmaXgpO3RoaXMucmVnZXhwVW5lc2NhcGU9bmV3IFJlZ0V4cCh0LCJnIik7dmFyIGU9IiIuY29uY2F0KHRoaXMubmVzdGluZ1ByZWZpeCwiKC4rPykiKS5jb25jYXQodGhpcy5uZXN0aW5nU3VmZml4KTt0aGlzLm5lc3RpbmdSZWdleHA9bmV3IFJlZ0V4cChlLCJnIil9fSx7a2V5OiJpbnRlcnBvbGF0ZSIsdmFsdWU6ZnVuY3Rpb24ocix0LGUsYSl7dmFyIG89dGhpcyxzLHUsbCxjPXRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24mJnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmRlZmF1bHRWYXJpYWJsZXN8fHt9O2Z1bmN0aW9uIGYodil7cmV0dXJuIHYucmVwbGFjZSgvXCQvZywiJCQkJCIpfXZhciBnPWZ1bmN0aW9uKGQpe2lmKGQuaW5kZXhPZihvLmZvcm1hdFNlcGFyYXRvcik8MCl7dmFyIGg9d2UodCxjLGQpO3JldHVybiBvLmFsd2F5c0Zvcm1hdD9vLmZvcm1hdChoLHZvaWQgMCxlLEwoTChMKHt9LGEpLHQpLHt9LHtpbnRlcnBvbGF0aW9ua2V5OmR9KSk6aH12YXIgTz1kLnNwbGl0KG8uZm9ybWF0U2VwYXJhdG9yKSxiPU8uc2hpZnQoKS50cmltKCkseD1PLmpvaW4oby5mb3JtYXRTZXBhcmF0b3IpLnRyaW0oKTtyZXR1cm4gby5mb3JtYXQod2UodCxjLGIpLHgsZSxMKEwoTCh7fSxhKSx0KSx7fSx7aW50ZXJwb2xhdGlvbmtleTpifSkpfTt0aGlzLnJlc2V0UmVnRXhwKCk7dmFyIHA9YSYmYS5taXNzaW5nSW50ZXJwb2xhdGlvbkhhbmRsZXJ8fHRoaXMub3B0aW9ucy5taXNzaW5nSW50ZXJwb2xhdGlvbkhhbmRsZXIsbT1hJiZhLmludGVycG9sYXRpb24mJmEuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXMhPT12b2lkIDA/YS5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlczp0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXMseT1be3JlZ2V4OnRoaXMucmVnZXhwVW5lc2NhcGUsc2FmZVZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiBmKGQpfX0se3JlZ2V4OnRoaXMucmVnZXhwLHNhZmVWYWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gby5lc2NhcGVWYWx1ZT9mKG8uZXNjYXBlKGQpKTpmKGQpfX1dO3JldHVybiB5LmZvckVhY2goZnVuY3Rpb24odil7Zm9yKGw9MDtzPXYucmVnZXguZXhlYyhyKTspe3ZhciBkPXNbMV0udHJpbSgpO2lmKHU9ZyhkKSx1PT09dm9pZCAwKWlmKHR5cGVvZiBwPT0iZnVuY3Rpb24iKXt2YXIgaD1wKHIscyxhKTt1PXR5cGVvZiBoPT0ic3RyaW5nIj9oOiIifWVsc2UgaWYoYSYmYS5oYXNPd25Qcm9wZXJ0eShkKSl1PSIiO2Vsc2UgaWYobSl7dT1zWzBdO2Nvbn
14RpbnVlfWVsc2Ugby5sb2dnZXIud2FybigibWlzc2VkIHRvIHBhc3MgaW4gdmFyaWFibGUgIi5jb25jYXQoZCwiIGZvciBpbnRlcnBvbGF0aW5nICIpLmNvbmNhdChyKSksdT0iIjtlbHNlIHR5cGVvZiB1IT0ic3RyaW5nIiYmIW8udXNlUmF3VmFsdWVUb0VzY2FwZSYmKHU9YmUodSkpO3ZhciBPPXYuc2FmZVZhbHVlKHUpO2lmKHI9ci5yZXBsYWNlKHNbMF0sTyksbT8odi5yZWdleC5sYXN0SW5kZXgrPXUubGVuZ3RoLHYucmVnZXgubGFzdEluZGV4LT1zWzBdLmxlbmd0aCk6di5yZWdleC5sYXN0SW5kZXg9MCxsKyssbD49by5tYXhSZXBsYWNlcylicmVha319KSxyfX0se2tleToibmVzdCIsdmFsdWU6ZnVuY3Rpb24ocix0KXt2YXIgZT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9LG8scyx1PUwoe30sYSk7dS5hcHBseVBvc3RQcm9jZXNzb3I9ITEsZGVsZXRlIHUuZGVmYXVsdFZhbHVlO2Z1bmN0aW9uIGwocCxtKXt2YXIgeT10aGlzLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yO2lmKHAuaW5kZXhPZih5KTwwKXJldHVybiBwO3ZhciB2PXAuc3BsaXQobmV3IFJlZ0V4cCgiIi5jb25jYXQoeSwiWyBdKnsiKSkpLGQ9InsiLmNvbmNhdCh2WzFdKTtwPXZbMF0sZD10aGlzLmludGVycG9sYXRlKGQsdSk7dmFyIGg9ZC5tYXRjaCgvJy9nKSxPPWQubWF0Y2goLyIvZyk7KGgmJmgubGVuZ3RoJTI9PT0wJiYhT3x8Ty5sZW5ndGglMiE9PTApJiYoZD1kLnJlcGxhY2UoLycvZywnIicpKTt0cnl7dT1KU09OLnBhcnNlKGQpLG0mJih1PUwoTCh7fSxtKSx1KSl9Y2F0Y2goYil7cmV0dXJuIHRoaXMubG9nZ2VyLndhcm4oImZhaWxlZCBwYXJzaW5nIG9wdGlvbnMgc3RyaW5nIGluIG5lc3RpbmcgZm9yIGtleSAiLmNvbmNhdChwKSxiKSwiIi5jb25jYXQocCkuY29uY2F0KHkpLmNvbmNhdChkKX1yZXR1cm4gZGVsZXRlIHUuZGVmYXVsdFZhbHVlLHB9Zm9yKDtvPXRoaXMubmVzdGluZ1JlZ2V4cC5leGVjKHIpOyl7dmFyIGM9W10sZj0hMTtpZihvWzBdLmluZGV4T2YodGhpcy5mb3JtYXRTZXBhcmF0b3IpIT09LTEmJiEvey4qfS8udGVzdChvWzFdKSl7dmFyIGc9b1sxXS5zcGxpdCh0aGlzLmZvcm1hdFNlcGFyYXRvcikubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnRyaW0oKX0pO29bMV09Zy5zaGlmdCgpLGM9ZyxmPSEwfWlmKHM9dChsLmNhbGwodGhpcyxvWzFdLnRyaW0oKSx1KSx1KSxzJiZvWzBdPT09ciYmdHlwZW9mIHMhPSJzdHJpbmciKXJldHVybiBzO3R5cGVvZiBzIT0ic3RyaW5nIiYmKHM9YmUocykpLHN8fCh0aGlzLmxvZ2dlci53YXJuKCJtaXNzZWQgdG8gcmVzb2x2ZSAiLmNvbmNhdChvWzFdLCIgZm9yIG5lc3RpbmcgIikuY29uY2F0KHIpKSxzPSIiKSxmJiYocz1jLnJlZHVjZShmdW5jdGlvbihwLG0pe3JldHVybiBlLmZvcm1hdChwLG0sYS5sbmcsTChMKHt9LGEpLHt9LHtpbnRlcnBvbGF0aW9ua2V5Om9bMV0udHJpbSgpfSkpfSxzLnRyaW0oKSkpLHI9ci5yZXBsYWNlKG9bMF0scyksdGhpcy5yZWdleHAubGFzdEluZGV4PTB9cmV0dXJuIHJ9fV0pLGl9KCk7ZnVuY3Rpb24gRWUoaSxuKXt2YXIgcj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO24mJih0PXQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSkuZW51bWVyYWJsZX0pKSxyLnB1c2guYXBwbHkocix0KX1yZXR1cm4gcn1mdW5jdGlvbiBJKGkpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciByPWFyZ3VtZW50c1tuXSE9bnVsbD9hcmd1bWVudHNbbl06e307biUyP0VlKE9iamVjdChyKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtGKGksdCxyW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOkVlKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KX1yZXR1cm4gaX1mdW5jdGlvbiBodChpKXt2YXIgbj1pLnRvTG93ZXJDYXNlKCkudHJpbSgpLHI9e307aWYoaS5pbmRleE9mKCIoIik+LTEpe3ZhciB0PWkuc3BsaXQoIigiKTtuPXRbMF0udG9Mb3dlckNhc2UoKS50cmltKCk7dmFyIGU9dFsxXS5zdWJzdHJpbmcoMCx0WzFdLmxlbmd0aC0xKTtpZihuPT09ImN1cnJlbmN5IiYmZS5pbmRleE9mKCI6Iik8MClyLmN1cnJlbmN5fHwoci5jdXJyZW5jeT1lLnRyaW0oKSk7ZWxzZSBpZihuPT09InJlbGF0aXZldGltZSImJmUuaW5kZXhPZigiOiIpPDApci5yYW5nZXx8KHIucmFuZ2U9ZS50cmltKCkpO2Vsc2V7dmFyIGE9ZS5zcGxpdCgiOyIpO2EuZm9yRWFjaChmdW5jdGlvbihvKXtpZihvKXt2YXIgcz1vLnNwbGl0KCI6IiksdT1ZZShzKSxsPXVbMF0sYz11LnNsaWNlKDEpLGY9Yy5qb2luKCI6IikudHJpbSgpLnJlcGxhY2UoL14nK3wnKyQvZywiIik7cltsLnRyaW0oKV18fChyW2wudHJpbSgpXT1mKSxmPT09ImZhbHNlIiYmKHJbbC50cmltKCldPSExKSxmPT09InRydWUiJiYocltsLnRyaW0oKV09ITApLGlzTmFOKGYpfHwocltsLnRyaW0oKV09cGFyc2VJbnQoZiwxMCkpfX0pfX1yZXR1cm57Zm9ybWF0TmFtZTpuLGZvcm1hdE9wdGlvbnM6cn19ZnVuY3Rpb24gSyhpKXt2YXIgbj17fTtyZXR1cm4gZnVuY3Rpb24odCxlLGEpe3ZhciBvPWUrSlNPTi5zdHJpbmdpZnkoYSkscz1uW29dO3JldHVybiBzfHwocz1pKGUsYSksbltvXT1zKSxzKHQpfX12YXIgdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O1IodGhpcyxpKSx0aGlzLmxvZ2dlcj1OLmNyZWF0ZSgiZm9ybWF0dGVyIiksdGhpcy5vcHRpb25zPW4sdGhpcy5mb3JtYXRzPXtudW1iZXI6SyhmdW5jdGlvbihyLHQpe3ZhciBlPW5ldyBJbnRsLk51bWJlckZvcm1hdChyLHQpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZS5mb3JtYXQoYSl9fSksY3VycmVuY3k6SyhmdW5jdGlvbihyL
14HQpe3ZhciBlPW5ldyBJbnRsLk51bWJlckZvcm1hdChyLEkoSSh7fSx0KSx7fSx7c3R5bGU6ImN1cnJlbmN5In0pKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGUuZm9ybWF0KGEpfX0pLGRhdGV0aW1lOksoZnVuY3Rpb24ocix0KXt2YXIgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdChyLEkoe30sdCkpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZS5mb3JtYXQoYSl9fSkscmVsYXRpdmV0aW1lOksoZnVuY3Rpb24ocix0KXt2YXIgZT1uZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQocixJKHt9LHQpKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGUuZm9ybWF0KGEsdC5yYW5nZXx8ImRheSIpfX0pLGxpc3Q6SyhmdW5jdGlvbihyLHQpe3ZhciBlPW5ldyBJbnRsLkxpc3RGb3JtYXQocixJKHt9LHQpKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGUuZm9ybWF0KGEpfX0pfSx0aGlzLmluaXQobil9cmV0dXJuIGsoaSxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntpbnRlcnBvbGF0aW9uOnt9fSxlPXQuaW50ZXJwb2xhdGlvbjt0aGlzLmZvcm1hdFNlcGFyYXRvcj1lLmZvcm1hdFNlcGFyYXRvcj9lLmZvcm1hdFNlcGFyYXRvcjplLmZvcm1hdFNlcGFyYXRvcnx8IiwifX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihyLHQpe3RoaXMuZm9ybWF0c1tyLnRvTG93ZXJDYXNlKCkudHJpbSgpXT10fX0se2tleToiYWRkQ2FjaGVkIix2YWx1ZTpmdW5jdGlvbihyLHQpe3RoaXMuZm9ybWF0c1tyLnRvTG93ZXJDYXNlKCkudHJpbSgpXT1LKHQpfX0se2tleToiZm9ybWF0Iix2YWx1ZTpmdW5jdGlvbihyLHQsZSxhKXt2YXIgbz10aGlzLHM9dC5zcGxpdCh0aGlzLmZvcm1hdFNlcGFyYXRvciksdT1zLnJlZHVjZShmdW5jdGlvbihsLGMpe3ZhciBmPWh0KGMpLGc9Zi5mb3JtYXROYW1lLHA9Zi5mb3JtYXRPcHRpb25zO2lmKG8uZm9ybWF0c1tnXSl7dmFyIG09bDt0cnl7dmFyIHk9YSYmYS5mb3JtYXRQYXJhbXMmJmEuZm9ybWF0UGFyYW1zW2EuaW50ZXJwb2xhdGlvbmtleV18fHt9LHY9eS5sb2NhbGV8fHkubG5nfHxhLmxvY2FsZXx8YS5sbmd8fGU7bT1vLmZvcm1hdHNbZ10obCx2LEkoSShJKHt9LHApLGEpLHkpKX1jYXRjaChkKXtvLmxvZ2dlci53YXJuKGQpfXJldHVybiBtfWVsc2Ugby5sb2dnZXIud2FybigidGhlcmUgd2FzIG5vIGZvcm1hdCBmdW5jdGlvbiBmb3IgIi5jb25jYXQoZykpO3JldHVybiBsfSxyKTtyZXR1cm4gdX19XSksaX0oKTtmdW5jdGlvbiBEZShpLG4pe3ZhciByPU9iamVjdC5rZXlzKGkpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSk7biYmKHQ9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKS5lbnVtZXJhYmxlfSkpLHIucHVzaC5hcHBseShyLHQpfXJldHVybiByfWZ1bmN0aW9uIEZlKGkpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciByPWFyZ3VtZW50c1tuXSE9bnVsbD9hcmd1bWVudHNbbl06e307biUyP0RlKE9iamVjdChyKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtGKGksdCxyW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOkRlKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KX1yZXR1cm4gaX1mdW5jdGlvbiBtdChpKXt2YXIgbj15dCgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWooaSksZTtpZihuKXt2YXIgYT1qKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsYSl9ZWxzZSBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBNKHRoaXMsZSl9fWZ1bmN0aW9uIHl0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIGJ0KGksbil7aS5wZW5kaW5nW25dIT09dm9pZCAwJiYoZGVsZXRlIGkucGVuZGluZ1tuXSxpLnBlbmRpbmdDb3VudC0tKX12YXIgT3Q9ZnVuY3Rpb24oaSl7WihyLGkpO3ZhciBuPW10KHIpO2Z1bmN0aW9uIHIodCxlLGEpe3ZhciBvLHM9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9O3JldHVybiBSKHRoaXMsciksbz1uLmNhbGwodGhpcyksWCYmVC5jYWxsKEQobykpLG8uYmFja2VuZD10LG8uc3RvcmU9ZSxvLnNlcnZpY2VzPWEsby5sYW5ndWFnZVV0aWxzPWEubGFuZ3VhZ2VVdGlscyxvLm9wdGlvbnM9cyxvLmxvZ2dlcj1OLmNyZWF0ZSgiYmFja2VuZENvbm5lY3RvciIpLG8ud2FpdGluZ1JlYWRzPVtdLG8ubWF4UGFyYWxsZWxSZWFkcz1zLm1heFBhcmFsbGVsUmVhZHN8fDEwLG8ucmVhZGluZ0NhbGxzPTAsby5tYXhSZXRyaWVzPXMubWF4UmV0cmllcz49MD9zLm1heFJldHJpZXM6NSxvLnJldHJ5VGltZW91dD1zLnJldHJ5VGltZW91dD49MT9zLnJldHJ5VGltZW91dDozNTAsby5zdGF0ZT17fSxvLnF1ZXVlPVtdLG8uYmFja2VuZCYmby5iYWNrZW5kLmluaXQmJm8uYmFja2VuZC5pbml0KGEscy5iYWNrZW5kLHMpLG99cmV0dXJuIGsocixbe2tleToicXVldWVMb2FkIix2YWx1ZTpmdW5jdGlvbihlLGEsbyxzKXt2YXIgdT10aGlzLGw9e30sYz17fSxmPXt9LGc9e307cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihwKXt2YXIgbT0hMDthLmZvckVhY2goZnVuY3Rpb24oeSl7dmFyIHY9IiIuY29uY2F0KHAsInwiKS5jb25jYXQoeSk7IW8ucmVsb2FkJiZ1LnN0b3JlLmhhc1Jlc291cmNlQnVuZGxlKHAseSk/dS5zdGF0ZVt2XT0yOnUuc3RhdGVbdl08MHx8KHUuc3RhdGVbdl09PT0xP2Nbdl09PT12b2lkIDAmJihjW3ZdPSEwKToodS5zdGF0ZVt2XT0xLG09ITEsY1t2XT09PXZvaWQgMCYmKGNbdl09ITApLGxbdl09PT12b2lkIDAmJihsW3ZdPSEwKSxnW3ldPT09dm9pZCAwJiYoZ1t5XT0hMCkpKX0pLG18fChmW3BdPSEwKX0pLChPYmplY3Qua2V5cyhsKS5sZW5ndGh8fE9iamVjdC5rZXlzKGMpLmxlbmd0aCkmJnRoaXMucXVldWUucHVzaCh7cGVuZGluZzpjLHBlbmRpbmdDb3VudDpPYmplY3Qua2V5cyhjKS5sZW5ndGgsbG9hZGVkOnt9LGVycm9yczpbXSxjYWxsYmFjazpzfSkse3RvTG9hZDpPYmplY3Qua2V5cyhsKSxwZW5kaW5nOk9iamVjdC5rZXlzKGMpLHRvTG9hZExhbmd1YWdlczpPYmplY3Qua2V5cyhmKSx0b0xvYWROYW1lc3BhY2VzOk9iamVjdC5rZXlzKGcpfX19LHtrZXk6ImxvYWRlZCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8pe3ZhciBzPWUuc3BsaXQoInwiKSx1PXNbMF0sbD1zWzFdO2EmJnRoaXMuZW1pdCgiZmFpbGVkTG9hZGluZyIsdSxsLGEpLG8mJnRoaXMuc3RvcmUuYWRkUmVzb3VyY2VCdW5kbGUodSxsLG8pLHRoaXMuc3RhdGVbZV09YT8tMToyO3ZhciBjPXt9O3RoaXMucXVldWUuZm9yRWFjaChmdW5jdGlvbihmKXtxZShmLmxvYWRlZCxbdV0sbCksYnQoZixlKSxhJiZmLmVycm9ycy5wdXNoKGEpLGYucGVuZGluZ0NvdW50PT09MCYmIWYuZG9uZSYmKE9iamVjdC5rZXlzKGYubG9hZGVkKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2NbZ118fChjW2ddPXt9KTt2YXIgcD1mLmxvYWRlZFtnXTtwLmxlbmd0aCYmcC5mb3JFYWNoKGZ1bmN0aW9uKG0pe2NbZ11bbV09PT12b2lkIDAmJihjW2ddW21dPSEwKX0pfSksZi5kb25lPSEwLGYuZXJyb3JzLmxlbmd0aD9mLmNhbGxiYWNrKGYuZXJyb3JzKTpmLmNhbGxiYWNrKCkpfSksdGhpcy5lbWl0KCJsb2FkZWQiLGMpLHRoaXMucXVldWU9dGhpcy5xdWV1ZS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIWYuZG9uZX0pfX0se2tleToicmVhZCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8pe3ZhciBzPXRoaXMsdT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106MCxsPWFyZ3VtZW50cy5sZW5ndGg+NCYmYXJndW1lbnRzWzRdIT09dm9pZCAwP2FyZ3VtZW50c1s0XTp0aGlzLnJldHJ5VGltZW91dCxjPWFyZ3VtZW50cy5sZW5ndGg+NT9hcmd1bWVudHNbNV06dm9pZCAwO2lmKCFlLmxlbmd0aClyZXR1cm4gYyhudWxsLHt9KTtpZih0aGlzLnJlYWRpbmdDYWxscz49dGhpcy5tYXhQYXJhbGxlbFJlYWRzKXt0aGlzLndhaXRpbmdSZWFkcy5wdXNoKHtsbmc6ZSxuczphLGZjTmFtZTpvLHRyaWVkOnUsd2FpdDpsLGNhbGxiYWNrOmN9KTtyZXR1cm59cmV0dXJuIHRoaXMucmVhZGluZ0NhbGxzKyssdGhpcy5iYWNrZW5kW29dKGUsYSxmdW5jdGlvbihmLGcpe2lmKHMucmVhZGluZ0NhbGxzLS0scy53YWl
140aW5nUmVhZHMubGVuZ3RoPjApe3ZhciBwPXMud2FpdGluZ1JlYWRzLnNoaWZ0KCk7cy5yZWFkKHAubG5nLHAubnMscC5mY05hbWUscC50cmllZCxwLndhaXQscC5jYWxsYmFjayl9aWYoZiYmZyYmdTxzLm1heFJldHJpZXMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzLnJlYWQuY2FsbChzLGUsYSxvLHUrMSxsKjIsYyl9LGwpO3JldHVybn1jKGYsZyl9KX19LHtrZXk6InByZXBhcmVMb2FkaW5nIix2YWx1ZTpmdW5jdGlvbihlLGEpe3ZhciBvPXRoaXMscz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30sdT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtpZighdGhpcy5iYWNrZW5kKXJldHVybiB0aGlzLmxvZ2dlci53YXJuKCJObyBiYWNrZW5kIHdhcyBhZGRlZCB2aWEgaTE4bmV4dC51c2UuIFdpbGwgbm90IGxvYWQgcmVzb3VyY2VzLiIpLHUmJnUoKTt0eXBlb2YgZT09InN0cmluZyImJihlPXRoaXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkoZSkpLHR5cGVvZiBhPT0ic3RyaW5nIiYmKGE9W2FdKTt2YXIgbD10aGlzLnF1ZXVlTG9hZChlLGEscyx1KTtpZighbC50b0xvYWQubGVuZ3RoKXJldHVybiBsLnBlbmRpbmcubGVuZ3RofHx1KCksbnVsbDtsLnRvTG9hZC5mb3JFYWNoKGZ1bmN0aW9uKGMpe28ubG9hZE9uZShjKX0pfX0se2tleToibG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8pe3RoaXMucHJlcGFyZUxvYWRpbmcoZSxhLHt9LG8pfX0se2tleToicmVsb2FkIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dGhpcy5wcmVwYXJlTG9hZGluZyhlLGEse3JlbG9hZDohMH0sbyl9fSx7a2V5OiJsb2FkT25lIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiIiLHM9ZS5zcGxpdCgifCIpLHU9c1swXSxsPXNbMV07dGhpcy5yZWFkKHUsbCwicmVhZCIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbihjLGYpe2MmJmEubG9nZ2VyLndhcm4oIiIuY29uY2F0KG8sImxvYWRpbmcgbmFtZXNwYWNlICIpLmNvbmNhdChsLCIgZm9yIGxhbmd1YWdlICIpLmNvbmNhdCh1LCIgZmFpbGVkIiksYyksIWMmJmYmJmEubG9nZ2VyLmxvZygiIi5jb25jYXQobywibG9hZGVkIG5hbWVzcGFjZSAiKS5jb25jYXQobCwiIGZvciBsYW5ndWFnZSAiKS5jb25jYXQodSksZiksYS5sb2FkZWQoZSxjLGYpfSl9fSx7a2V5OiJzYXZlTWlzc2luZyIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8scyx1KXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06e307aWYodGhpcy5zZXJ2aWNlcy51dGlscyYmdGhpcy5zZXJ2aWNlcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UmJiF0aGlzLnNlcnZpY2VzLnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZShhKSl7dGhpcy5sb2dnZXIud2FybignZGlkIG5vdCBzYXZlIGtleSAiJy5jb25jYXQobywnIiBhcyB0aGUgbmFtZXNwYWNlICInKS5jb25jYXQoYSwnIiB3YXMgbm90IHlldCBsb2FkZWQnKSwiVGhpcyBtZWFucyBzb21ldGhpbmcgSVMgV1JPTkcgaW4geW91ciBzZXR1cC4gWW91IGFjY2VzcyB0aGUgdCBmdW5jdGlvbiBiZWZvcmUgaTE4bmV4dC5pbml0IC8gaTE4bmV4dC5sb2FkTmFtZXNwYWNlIC8gaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSB3YXMgZG9uZS4gV2FpdCBmb3IgdGhlIGNhbGxiYWNrIG9yIFByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgYWNjZXNzaW5nIGl0ISEhIik7cmV0dXJufW89PW51bGx8fG89PT0iInx8KHRoaXMuYmFja2VuZCYmdGhpcy5iYWNrZW5kLmNyZWF0ZSYmdGhpcy5iYWNrZW5kLmNyZWF0ZShlLGEsbyxzLG51bGwsRmUoRmUoe30sbCkse30se2lzVXBkYXRlOnV9KSksISghZXx8IWVbMF0pJiZ0aGlzLnN0b3JlLmFkZFJlc291cmNlKGVbMF0sYSxvLHMpKX19XSkscn0oVCk7ZnVuY3Rpb24gd3QoKXtyZXR1cm57ZGVidWc6ITEsaW5pdEltbWVkaWF0ZTohMCxuczpbInRyYW5zbGF0aW9uIl0sZGVmYXVsdE5TOlsidHJhbnNsYXRpb24iXSxmYWxsYmFja0xuZzpbImRldiJdLGZhbGxiYWNrTlM6ITEsc3VwcG9ydGVkTG5nczohMSxub25FeHBsaWNpdFN1cHBvcnRlZExuZ3M6ITEsbG9hZDoiYWxsIixwcmVsb2FkOiExLHNpbXBsaWZ5UGx1cmFsU3VmZml4OiEwLGtleVNlcGFyYXRvcjoiLiIsbnNTZXBhcmF0b3I6IjoiLHBsdXJhbFNlcGFyYXRvcjoiXyIsY29udGV4dFNlcGFyYXRvcjoiXyIscGFydGlhbEJ1bmRsZWRMYW5ndWFnZXM6ITEsc2F2ZU1pc3Npbmc6ITEsdXBkYXRlTWlzc2luZzohMSxzYXZlTWlzc2luZ1RvOiJmYWxsYmFjayIsc2F2ZU1pc3NpbmdQbHVyYWxzOiEwLG1pc3NpbmdLZXlIYW5kbGVyOiExLG1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcjohMSxwb3N0UHJvY2VzczohMSxwb3N0UHJvY2Vzc1Bhc3NSZXNvbHZlZDohMSxyZXR1cm5OdWxsOiEwLHJldHVybkVtcHR5U3RyaW5nOiEwLHJldHVybk9iamVjdHM6ITEsam9pbkFycmF5czohMSxyZXR1cm5lZE9iamVjdEhhbmRsZXI6ITEscGFyc2VNaXNzaW5nS2V5SGFuZGxlcjohMSxhcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXk6ITEsYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGU6ITEsb3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXI6ZnVuY3Rpb24obil7dmFyIHI9e307aWYoUChuWzFdKT09PSJvYmplY3QiJiYocj1uWzFdKSx0eXBlb2YgblsxXT09InN0cmluZyImJihyLmRlZmF1bHRWYWx1ZT1uWzFdKSx0eXBlb2YgblsyXT09InN0cmluZyImJihyLnREZXNjcmlwdGlvbj1uWzJdKSxQKG5bMl0pPT09Im9iamVjdCJ8fFAoblszXSk9PT0ib2JqZWN0Iil7dmFyIHQ9blszXXx8blsyXTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09dFtlXX0pfXJldHVybiByfSxpbnRlcnBvbGF0aW9uOntlc2NhcGVWYWx1ZTohMCxmb3JtYXQ6ZnVuY3Rpb24obixyLHQsZSl7cmV0dXJuIG59LHByZWZpeDoie3siLHN1ZmZpeDoifX0iLGZvcm1hdFNlcGFyYXRvcjoiLCIsdW5lc2NhcGVQcmVmaXg6Ii0iLG5lc3RpbmdQcmVmaXg6IiR0KCIsbmVzdGluZ1N1ZmZpeDoiKSIsbmVzdGluZ09wdGlvbnNTZXBhcmF0b3I6IiwiLG1heFJlcGxhY2VzOjFlMyxza2lwT25WYXJpYWJsZXM6ITB9fX1mdW5jdGlvbiBUZShpKXtyZXR1cm4gdHlwZW9mIGkubnM9PSJzdHJpbmciJiYoaS5ucz1baS5uc10pLHR5cGVvZiBpLmZhbGxiYWNrTG5nPT0ic3RyaW5nIiYmKGkuZmFsbGJhY2tMbmc9W2kuZmFsbGJhY2tMbmddKSx0eXBlb2YgaS5mYWxsYmFja05TPT0ic3RyaW5nIiYmKGkuZmFsbGJhY2tOUz1baS5mYWxsYmFja05TXSksaS5zdXBwb3J0ZWRMbmdzJiZpLnN1cHBvcnRlZExuZ3MuaW5kZXhPZigiY2ltb2RlIik8MCYmKGkuc3VwcG9ydGVkTG5ncz1pLnN1cHBvcnRlZExuZ3MuY29uY2F0KFsiY2ltb2RlIl0pKSxpfWZ1bmN0aW9uIEllKGksbil7dmFyIHI9T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTtuJiYodD10LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksci5wdXNoLmFwcGx5KHIsdCl9cmV0dXJuIHJ9ZnVuY3Rpb24gQyhpKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgcj1hcmd1bWVudHNbbl0hPW51bGw/YXJndW1lbnRzW25dOnt9O24lMj9JZShPYmplY3QociksITApLmZvckVhY2goZnVuY3Rpb24odCl7RihpLHQsclt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpJZShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gU3QoaSl7dmFyIG49eHQoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1qKGkpLGU7aWYobil7dmFyIGE9aih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHQsYXJndW1lbnRzLGEpfWVsc2UgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTSh0aGlzLGUpfX1mdW5jdGlvbiB4dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiB0ZSgpe31mdW5jdGlvbiBQdChpKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoaSkpO24uZm9yRWFjaChmdW5jdGlvbihyKXt0eXBlb2YgaVtyXT09ImZ1bmN0aW9uIiYmKGlbcl09aVtyXS5iaW5kKGkpKX0pfXZhciBuZT1mdW5jdGlvbihpKXtaKHIsaSk7dmFyIG49U3Qocik7ZnVuY3Rpb24gcigpe3ZhciB0LGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGE9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7aWYoUih0aGlzLHIpLHQ9bi5jYWxsKHRoaXMpLFgmJlQuY2FsbChEKHQpKSx0Lm9wdGlvbnM9VGUoZSksdC5zZXJ2aWNlcz17fSx0LmxvZ2dlcj1OLHQubW9kdWxlcz17ZXh0ZXJuYWw6W119LFB0KEQodCkpLGEmJiF0LmlzSW5pdGlhbGl6ZWQmJiFlLmlzQ2xvbmUpe2lmKCF0Lm9wdGlvbnMuaW5pdEltbWVkaWF0ZSlyZXR1cm4gdC5pbml0KGUsYSksTSh0LEQodCkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmluaXQoZSxhKX0sMCl9cmV0dXJuIHR9cmV0dXJuIGsocixbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LG89YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7dHlwZW9mIGE9PSJmdW5jdGlvbiImJihvPWEsYT17fSksIWEuZGVmYXVsdE5TJiZhLmRlZmF1bHROUyE9PSExJiZhLm5zJiYodHlwZW9mIGEubnM9PSJzdHJpbmciP2EuZGVmYXVsdE5TPWEubnM6YS5ucy5pbmRleE9mKCJ0cmFuc2xhdGlvbiIpPDAmJihhLmRlZmF1bHROUz1hLm5zWzBdKSk7dmFyIHM9d3QoKTt0aGlzLm9wdGlvbnM9QyhDKEMoe30scyksdGhpcy5vcHRpb25zKSxUZShhKSksdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkhPT0idjEiJiYodGhpcy5vcHRpb25zLmludGVycG9sYXRpb249QyhDKHt9LHMuaW50ZXJwb2xhdGlvbiksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24pKSxhLmtleVNlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZEtleVNlcGFyYXRvcj1hLmtleVNlcGFyYXRvciksYS5uc1NlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZE5zU2VwYXJhdG9yPWEubnNTZXBhcmF0b3IpO2Z1bmN0aW9uIHUoZCl7cmV0dXJuIGQ/dHlwZW9mIGQ9PSJmdW5jdGlvbiI/bmV3IGQ6ZDpudWxsfWlmKCF0aGlzLm9wdGlvbnMuaXNDbG9uZSl7dGhpcy5tb2R1bGVzLmxvZ2dlcj9OLmluaXQo
14dSh0aGlzLm1vZHVsZXMubG9nZ2VyKSx0aGlzLm9wdGlvbnMpOk4uaW5pdChudWxsLHRoaXMub3B0aW9ucyk7dmFyIGw7dGhpcy5tb2R1bGVzLmZvcm1hdHRlcj9sPXRoaXMubW9kdWxlcy5mb3JtYXR0ZXI6dHlwZW9mIEludGw8InUiJiYobD12dCk7dmFyIGM9bmV3IHV0KHRoaXMub3B0aW9ucyk7dGhpcy5zdG9yZT1uZXcgaXQodGhpcy5vcHRpb25zLnJlc291cmNlcyx0aGlzLm9wdGlvbnMpO3ZhciBmPXRoaXMuc2VydmljZXM7Zi5sb2dnZXI9TixmLnJlc291cmNlU3RvcmU9dGhpcy5zdG9yZSxmLmxhbmd1YWdlVXRpbHM9YyxmLnBsdXJhbFJlc29sdmVyPW5ldyBwdChjLHtwcmVwZW5kOnRoaXMub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsY29tcGF0aWJpbGl0eUpTT046dGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OLHNpbXBsaWZ5UGx1cmFsU3VmZml4OnRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeH0pLGwmJighdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0fHx0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQ9PT1zLmludGVycG9sYXRpb24uZm9ybWF0KSYmKGYuZm9ybWF0dGVyPXUobCksZi5mb3JtYXR0ZXIuaW5pdChmLHRoaXMub3B0aW9ucyksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0PWYuZm9ybWF0dGVyLmZvcm1hdC5iaW5kKGYuZm9ybWF0dGVyKSksZi5pbnRlcnBvbGF0b3I9bmV3IGR0KHRoaXMub3B0aW9ucyksZi51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOnRoaXMuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQodGhpcyl9LGYuYmFja2VuZENvbm5lY3Rvcj1uZXcgT3QodSh0aGlzLm1vZHVsZXMuYmFja2VuZCksZi5yZXNvdXJjZVN0b3JlLGYsdGhpcy5vcHRpb25zKSxmLmJhY2tlbmRDb25uZWN0b3Iub24oIioiLGZ1bmN0aW9uKGQpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLE89bmV3IEFycmF5KGg+MT9oLTE6MCksYj0xO2I8aDtiKyspT1tiLTFdPWFyZ3VtZW50c1tiXTtlLmVtaXQuYXBwbHkoZSxbZF0uY29uY2F0KE8pKX0pLHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yJiYoZi5sYW5ndWFnZURldGVjdG9yPXUodGhpcy5tb2R1bGVzLmxhbmd1YWdlRGV0ZWN0b3IpLGYubGFuZ3VhZ2VEZXRlY3Rvci5pbml0KGYsdGhpcy5vcHRpb25zLmRldGVjdGlvbix0aGlzLm9wdGlvbnMpKSx0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCYmKGYuaTE4bkZvcm1hdD11KHRoaXMubW9kdWxlcy5pMThuRm9ybWF0KSxmLmkxOG5Gb3JtYXQuaW5pdCYmZi5pMThuRm9ybWF0LmluaXQodGhpcykpLHRoaXMudHJhbnNsYXRvcj1uZXcgamUodGhpcy5zZXJ2aWNlcyx0aGlzLm9wdGlvbnMpLHRoaXMudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24oZCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGgsTz1uZXcgQXJyYXkoaD4xP2gtMTowKSxiPTE7YjxoO2IrKylPW2ItMV09YXJndW1lbnRzW2JdO2UuZW1pdC5hcHBseShlLFtkXS5jb25jYXQoTykpfSksdGhpcy5tb2R1bGVzLmV4dGVybmFsLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5pbml0JiZkLmluaXQoZSl9KX1pZih0aGlzLmZvcm1hdD10aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQsb3x8KG89dGUpLHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMub3B0aW9ucy5sbmcpe3ZhciBnPXRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRGYWxsYmFja0NvZGVzKHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyk7Zy5sZW5ndGg+MCYmZ1swXSE9PSJkZXYiJiYodGhpcy5vcHRpb25zLmxuZz1nWzBdKX0hdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yJiYhdGhpcy5vcHRpb25zLmxuZyYmdGhpcy5sb2dnZXIud2FybigiaW5pdDogbm8gbGFuZ3VhZ2VEZXRlY3RvciBpcyB1c2VkIGFuZCBubyBsbmcgaXMgZGVmaW5lZCIpO3ZhciBwPVsiZ2V0UmVzb3VyY2UiLCJoYXNSZXNvdXJjZUJ1bmRsZSIsImdldFJlc291cmNlQnVuZGxlIiwiZ2V0RGF0YUJ5TGFuZ3VhZ2UiXTtwLmZvckVhY2goZnVuY3Rpb24oZCl7ZVtkXT1mdW5jdGlvbigpe3ZhciBoO3JldHVybihoPWUuc3RvcmUpW2RdLmFwcGx5KGgsYXJndW1lbnRzKX19KTt2YXIgbT1bImFkZFJlc291cmNlIiwiYWRkUmVzb3VyY2VzIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJyZW1vdmVSZXNvdXJjZUJ1bmRsZSJdO20uZm9yRWFjaChmdW5jdGlvbihkKXtlW2RdPWZ1bmN0aW9uKCl7dmFyIGg7cmV0dXJuKGg9ZS5zdG9yZSlbZF0uYXBwbHkoaCxhcmd1bWVudHMpLGV9fSk7dmFyIHk9SCgpLHY9ZnVuY3Rpb24oKXt2YXIgaD1mdW5jdGlvbihiLHgpe2UuaXNJbml0aWFsaXplZCYmIWUuaW5pdGlhbGl6ZWRTdG9yZU9uY2UmJmUubG9nZ2VyLndhcm4oImluaXQ6IGkxOG5leHQgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4gWW91IHNob3VsZCBjYWxsIGluaXQganVzdCBvbmNlISIpLGUuaXNJbml0aWFsaXplZD0hMCxlLm9wdGlvbnMuaXNDbG9uZXx8ZS5sb2dnZXIubG9nKCJpbml0aWFsaXplZCIsZS5vcHRpb25zKSxlLmVtaXQoImluaXRpYWxpemVkIixlLm9wdGlvbnMpLHkucmVzb2x2ZSh4KSxvKGIseCl9O2lmKGUubGFuZ3VhZ2VzJiZlLm9wdGlvbnMuY29tcGF0aWJpbGl0eUFQSSE9PSJ2MSImJiFlLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIGgobnVsbCxlLnQuYmluZChlKSk7ZS5jaGFuZ2VMYW5ndWFnZShlLm9wdGlvbnMubG5nLGgpfTtyZXR1cm4gdGhpcy5vcHRpb25zLnJlc291cmNlc3x8IXRoaXMub3B0aW9ucy5pbml0SW1tZWRpYXRlP3YoKTpzZXRUaW1lb3V0KHYsMCkseX19LHtrZXk6ImxvYWRSZXNvdXJjZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBhPXRoaXMsbz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06dGUscz1vLHU9dHlwZW9mIGU9PSJzdHJpbmciP2U6dGhpcy5sYW5ndWFnZTtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKHM9ZSksIXRoaXMub3B0aW9ucy5yZXNvdXJjZXN8fHRoaXMub3B0aW9ucy5wYXJ0aWFsQnVuZGxlZExhbmd1YWdlcyl7aWYodSYmdS50b0xvd2VyQ2FzZSgpPT09ImNpbW9kZSIpcmV0dXJuIHMoKTt2YXIgbD1bXSxjPWZ1bmN0aW9uKHApe2lmKHApe3ZhciBtPWEuc2VydmljZXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkocCk7bS5mb3JFYWNoKGZ1bmN0aW9uKHkpe2wuaW5kZXhPZih5KTwwJiZsLnB1c2goeSl9KX19O2lmKHUpYyh1KTtlbHNle3ZhciBmPXRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRGYWxsYmFja0NvZGVzKHR
14oaXMub3B0aW9ucy5mYWxsYmFja0xuZyk7Zi5mb3JFYWNoKGZ1bmN0aW9uKGcpe3JldHVybiBjKGcpfSl9dGhpcy5vcHRpb25zLnByZWxvYWQmJnRoaXMub3B0aW9ucy5wcmVsb2FkLmZvckVhY2goZnVuY3Rpb24oZyl7cmV0dXJuIGMoZyl9KSx0aGlzLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3IubG9hZChsLHRoaXMub3B0aW9ucy5ucyxmdW5jdGlvbihnKXshZyYmIWEucmVzb2x2ZWRMYW5ndWFnZSYmYS5sYW5ndWFnZSYmYS5zZXRSZXNvbHZlZExhbmd1YWdlKGEubGFuZ3VhZ2UpLHMoZyl9KX1lbHNlIHMobnVsbCl9fSx7a2V5OiJyZWxvYWRSZXNvdXJjZXMiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz1IKCk7cmV0dXJuIGV8fChlPXRoaXMubGFuZ3VhZ2VzKSxhfHwoYT10aGlzLm9wdGlvbnMubnMpLG98fChvPXRlKSx0aGlzLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3IucmVsb2FkKGUsYSxmdW5jdGlvbih1KXtzLnJlc29sdmUoKSxvKHUpfSksc319LHtrZXk6InVzZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJZb3UgYXJlIHBhc3NpbmcgYW4gdW5kZWZpbmVkIG1vZHVsZSEgUGxlYXNlIGNoZWNrIHRoZSBvYmplY3QgeW91IGFyZSBwYXNzaW5nIHRvIGkxOG5leHQudXNlKCkiKTtpZighZS50eXBlKXRocm93IG5ldyBFcnJvcigiWW91IGFyZSBwYXNzaW5nIGEgd3JvbmcgbW9kdWxlISBQbGVhc2UgY2hlY2sgdGhlIG9iamVjdCB5b3UgYXJlIHBhc3NpbmcgdG8gaTE4bmV4dC51c2UoKSIpO3JldHVybiBlLnR5cGU9PT0iYmFja2VuZCImJih0aGlzLm1vZHVsZXMuYmFja2VuZD1lKSwoZS50eXBlPT09ImxvZ2dlciJ8fGUubG9nJiZlLndhcm4mJmUuZXJyb3IpJiYodGhpcy5tb2R1bGVzLmxvZ2dlcj1lKSxlLnR5cGU9PT0ibGFuZ3VhZ2VEZXRlY3RvciImJih0aGlzLm1vZHVsZXMubGFuZ3VhZ2VEZXRlY3Rvcj1lKSxlLnR5cGU9PT0iaTE4bkZvcm1hdCImJih0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdD1lKSxlLnR5cGU9PT0icG9zdFByb2Nlc3NvciImJkxlLmFkZFBvc3RQcm9jZXNzb3IoZSksZS50eXBlPT09ImZvcm1hdHRlciImJih0aGlzLm1vZHVsZXMuZm9ybWF0dGVyPWUpLGUudHlwZT09PSIzcmRQYXJ0eSImJnRoaXMubW9kdWxlcy5leHRlcm5hbC5wdXNoKGUpLHRoaXN9fSx7a2V5OiJzZXRSZXNvbHZlZExhbmd1YWdlIix2YWx1ZTpmdW5jdGlvbihlKXtpZighKCFlfHwhdGhpcy5sYW5ndWFnZXMpJiYhKFsiY2ltb2RlIiwiZGV2Il0uaW5kZXhPZihlKT4tMSkpZm9yKHZhciBhPTA7YTx0aGlzLmxhbmd1YWdlcy5sZW5ndGg7YSsrKXt2YXIgbz10aGlzLmxhbmd1YWdlc1thXTtpZighKFsiY2ltb2RlIiwiZGV2Il0uaW5kZXhPZihvKT4tMSkmJnRoaXMuc3RvcmUuaGFzTGFuZ3VhZ2VTb21lVHJhbnNsYXRpb25zKG8pKXt0aGlzLnJlc29sdmVkTGFuZ3VhZ2U9bzticmVha319fX0se2tleToiY2hhbmdlTGFuZ3VhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsYSl7dmFyIG89dGhpczt0aGlzLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPWU7dmFyIHM9SCgpO3RoaXMuZW1pdCgibGFuZ3VhZ2VDaGFuZ2luZyIsZSk7dmFyIHU9ZnVuY3Rpb24oZyl7by5sYW5ndWFnZT1nLG8ubGFuZ3VhZ2VzPW8uc2VydmljZXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkoZyksby5yZXNvbHZlZExhbmd1YWdlPXZvaWQgMCxvLnNldFJlc29sdmVkTGFuZ3VhZ2UoZyl9LGw9ZnVuY3Rpb24oZyxwKXtwPyh1KHApLG8udHJhbnNsYXRvci5jaGFuZ2VMYW5ndWFnZShwKSxvLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCxvLmVtaXQoImxhbmd1YWdlQ2hhbmdlZCIscCksby5sb2dnZXIubG9nKCJsYW5ndWFnZUNoYW5nZWQiLHApKTpvLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCxzLnJlc29sdmUoZnVuY3Rpb24oKXtyZXR1cm4gby50LmFwcGx5KG8sYXJndW1lbnRzKX0pLGEmJmEoZyxmdW5jdGlvbigpe3JldHVybiBvLnQuYXBwbHkobyxhcmd1bWVudHMpfSl9LGM9ZnVuY3Rpb24oZyl7IWUmJiFnJiZvLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJihnPVtdKTt2YXIgcD10eXBlb2YgZz09InN0cmluZyI/ZzpvLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0QmVzdE1hdGNoRnJvbUNvZGVzKGcpO3AmJihvLmxhbmd1YWdlfHx1KHApLG8udHJhbnNsYXRvci5sYW5ndWFnZXx8by50cmFuc2xhdG9yLmNoYW5nZUxhbmd1YWdlKHApLG8uc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmby5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmNhY2hlVXNlckxhbmd1YWdlKHApKSxvLmxvYWRSZXNvdXJjZXMocCxmdW5jdGlvbihtKXtsKG0scCl9KX07cmV0dXJuIWUmJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5hc3luYz9jKHRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QoKSk6IWUmJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmFzeW5jP3RoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QoYyk6YyhlKSxzfX0se2tleToiZ2V0Rml4ZWRUIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9dGhpcyx1PWZ1bmN0aW9uIGwoYyxmKXt2YXIgZztpZihQKGYpIT09Im9iamVjdCIpe2Zvcih2YXIgcD1hcmd1bWVudHMubGVuZ3RoLG09bmV3IEFycmF5KHA+Mj9wLTI6MCkseT0yO3k8cDt5KyspbVt5LTJdPWFyZ3VtZW50c1t5XTtnPXMub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihbYyxmXS5jb25jYXQobSkpfWVsc2UgZz1DKHt9LGYpO2cubG5nPWcubG5nfHxsLmxuZyxnLmxuZ3M9Zy5sbmdzfHxsLmxuZ3MsZy5ucz1nLm5zfHxsLm5zLGcua2V5UHJlZml4PWcua2V5UHJlZml4fHxvfHxsLmtleVByZWZpeDt2YXIgdj1zLm9wdGlvbnMua2V5U2VwYXJhdG9yfHwiLiIsZD1nLmtleVByZWZpeD8iIi5jb25jYXQoZy5rZXlQcmVmaXgpLmNvbmNhdCh2KS5jb25jYXQoYyk6YztyZXR1cm4gcy50KGQsZyl9O3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/dS5sbmc9ZTp1LmxuZ3M9ZSx1Lm5zPWEsdS5rZXlQcmVmaXg9byx1fX0se2tleToidCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdGhpcy50cmFuc2xhdG9yJiYoZT10aGlzLnRyYW5zbGF0b3IpLnRyYW5zbGF0ZS5hcHBseShlLGFyZ3VtZW50cyl9fSx7a2V5OiJleGlzdHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHRoaXMudHJhbnNsYXRvciYmKGU9dGhpcy50cmFuc2xhdG9yKS5leGlzdHMuYXBwbHkoZSxhcmd1bWVudHMpfX0se2tleToic2V0RGVmYXVsdE5hbWVzcGFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zLmRlZmF1bHROUz1lfX0se2tleToiaGFzTG9hZGVkTmFtZXNwYWNlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O2lmKCF0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHRoaXMubG9nZ2VyLndhcm4oImhhc0xvYWRlZE5hbWVzcGFjZTogaTE4bmV4dCB3YXMgbm90IGluaXRpYWxpemVkIix0aGlzLmxhbmd1YWdlcyksITE7aWYoIXRoaXMubGFuZ3VhZ2VzfHwhdGhpcy5sYW5ndWFnZXMubGVuZ3RoKXJldHVybi
14B0aGlzLmxvZ2dlci53YXJuKCJoYXNMb2FkZWROYW1lc3BhY2U6IGkxOG4ubGFuZ3VhZ2VzIHdlcmUgdW5kZWZpbmVkIG9yIGVtcHR5Iix0aGlzLmxhbmd1YWdlcyksITE7dmFyIHM9dGhpcy5yZXNvbHZlZExhbmd1YWdlfHx0aGlzLmxhbmd1YWdlc1swXSx1PXRoaXMub3B0aW9ucz90aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmc6ITEsbD10aGlzLmxhbmd1YWdlc1t0aGlzLmxhbmd1YWdlcy5sZW5ndGgtMV07aWYocy50b0xvd2VyQ2FzZSgpPT09ImNpbW9kZSIpcmV0dXJuITA7dmFyIGM9ZnVuY3Rpb24ocCxtKXt2YXIgeT1hLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3Iuc3RhdGVbIiIuY29uY2F0KHAsInwiKS5jb25jYXQobSldO3JldHVybiB5PT09LTF8fHk9PT0yfTtpZihvLnByZWNoZWNrKXt2YXIgZj1vLnByZWNoZWNrKHRoaXMsYyk7aWYoZiE9PXZvaWQgMClyZXR1cm4gZn1yZXR1cm4hISh0aGlzLmhhc1Jlc291cmNlQnVuZGxlKHMsZSl8fCF0aGlzLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3IuYmFja2VuZHx8dGhpcy5vcHRpb25zLnJlc291cmNlcyYmIXRoaXMub3B0aW9ucy5wYXJ0aWFsQnVuZGxlZExhbmd1YWdlc3x8YyhzLGUpJiYoIXV8fGMobCxlKSkpfX0se2tleToibG9hZE5hbWVzcGFjZXMiLHZhbHVlOmZ1bmN0aW9uKGUsYSl7dmFyIG89dGhpcyxzPUgoKTtyZXR1cm4gdGhpcy5vcHRpb25zLm5zPyh0eXBlb2YgZT09InN0cmluZyImJihlPVtlXSksZS5mb3JFYWNoKGZ1bmN0aW9uKHUpe28ub3B0aW9ucy5ucy5pbmRleE9mKHUpPDAmJm8ub3B0aW9ucy5ucy5wdXNoKHUpfSksdGhpcy5sb2FkUmVzb3VyY2VzKGZ1bmN0aW9uKHUpe3MucmVzb2x2ZSgpLGEmJmEodSl9KSxzKTooYSYmYSgpLFByb21pc2UucmVzb2x2ZSgpKX19LHtrZXk6ImxvYWRMYW5ndWFnZXMiLHZhbHVlOmZ1bmN0aW9uKGUsYSl7dmFyIG89SCgpO3R5cGVvZiBlPT0ic3RyaW5nIiYmKGU9W2VdKTt2YXIgcz10aGlzLm9wdGlvbnMucHJlbG9hZHx8W10sdT1lLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gcy5pbmRleE9mKGwpPDB9KTtyZXR1cm4gdS5sZW5ndGg/KHRoaXMub3B0aW9ucy5wcmVsb2FkPXMuY29uY2F0KHUpLHRoaXMubG9hZFJlc291cmNlcyhmdW5jdGlvbihsKXtvLnJlc29sdmUoKSxhJiZhKGwpfSksbyk6KGEmJmEoKSxQcm9taXNlLnJlc29sdmUoKSl9fSx7a2V5OiJkaXIiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGV8fChlPXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8KHRoaXMubGFuZ3VhZ2VzJiZ0aGlzLmxhbmd1YWdlcy5sZW5ndGg+MD90aGlzLmxhbmd1YWdlc1swXTp0aGlzLmxhbmd1YWdlKSksIWUpcmV0dXJuInJ0bCI7dmFyIGE9WyJhciIsInNodSIsInNxciIsInNzaCIsInhhYSIsInloZCIsInl1ZCIsImFhbyIsImFiaCIsImFidiIsImFjbSIsImFjcSIsImFjdyIsImFjeCIsImFjeSIsImFkZiIsImFkcyIsImFlYiIsImFlYyIsImFmYiIsImFqcCIsImFwYyIsImFwZCIsImFyYiIsImFycSIsImFycyIsImFyeSIsImFyeiIsImF1eiIsImF2bCIsImF5aCIsImF5bCIsImF5biIsImF5cCIsImJieiIsInBnYSIsImhlIiwiaXciLCJwcyIsInBidCIsInBidSIsInBzdCIsInBycCIsInByZCIsInVnIiwidXIiLCJ5ZGQiLCJ5ZHMiLCJ5aWgiLCJqaSIsInlpIiwiaGJvIiwibWVuIiwieG1uIiwiZmEiLCJqcHIiLCJwZW8iLCJwZXMiLCJwcnMiLCJkdiIsInNhbSIsImNrYiJdO3JldHVybiBhLmluZGV4T2YodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKGUpKT4tMXx8ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIi1hcmFiIik+MT8icnRsIjoibHRyIn19LHtrZXk6ImNsb25lSW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp0ZSxzPUMoQyhDKHt9LHRoaXMub3B0aW9ucyksYSkse2lzQ2xvbmU6ITB9KSx1PW5ldyByKHMpOyhhLmRlYnVnIT09dm9pZCAwfHxhLnByZWZpeCE9PXZvaWQgMCkmJih1LmxvZ2dlcj11LmxvZ2dlci5jbG9uZShhKSk7dmFyIGw9WyJzdG9yZSIsInNlcnZpY2VzIiwibGFuZ3VhZ2UiXTtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uKGMpe3VbY109ZVtjXX0pLHUuc2VydmljZXM9Qyh7fSx0aGlzLnNlcnZpY2VzKSx1LnNlcnZpY2VzLnV0aWxzPXtoYXNMb2FkZWROYW1lc3BhY2U6dS5oYXNMb2FkZWROYW1lc3BhY2UuYmluZCh1KX0sdS50cmFuc2xhdG9yPW5ldyBqZSh1LnNlcnZpY2VzLHUub3B0aW9ucyksdS50cmFuc2xhdG9yLm9uKCIqIixmdW5jdGlvbihjKXtmb3IodmFyIGY9YXJndW1lbnRzLmxlbmd0aCxnPW5ldyBBcnJheShmPjE/Zi0xOjApLHA9MTtwPGY7cCsrKWdbcC0xXT1hcmd1bWVudHNbcF07dS5lbWl0LmFwcGx5KHUsW2NdLmNvbmNhdChnKSl9KSx1LmluaXQocyxvKSx1LnRyYW5zbGF0b3Iub3B0aW9ucz11Lm9wdGlvbnMsdS50cmFuc2xhdG9yLmJhY2tlbmRDb25uZWN0b3Iuc2VydmljZXMudXRpbHM9e2hhc0xvYWRlZE5hbWVzcGFjZTp1Lmhhc0xvYWRlZE5hbWVzcGFjZS5iaW5kKHUpfSx1fX0se2tleToidG9KU09OIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntvcHRpb25zOnRoaXMub3B0aW9ucyxzdG9yZTp0aGlzLnN0b3JlLGxhbmd1YWdlOnRoaXMubGFuZ3VhZ2UsbGFuZ3VhZ2VzOnRoaXMubGFuZ3VhZ2VzLHJlc29sdmVkTGFuZ3VhZ2U6dGhpcy5yZXNvbHZlZExhbmd1YWdlfX19XSkscn0oVCk7RihuZSwiY3JlYXRlSW5zdGFuY2UiLGZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LG49YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIG5ldyBuZShpLG4pfSk7dmFyIFM9bmUuY3JlYXRlSW5zdGFuY2UoKTtTLmNyZWF0ZUluc3RhbmNlPW5lLmNyZWF0ZUluc3RhbmNlLFMuY3JlYXRlSW5zdGFuY2UsUy5pbml0LFMubG9hZFJlc291cmNlcyxTLnJlbG9hZFJlc291cmNlcyxTLnVzZSxTLmNoYW5nZUxhbmd1YWdlLFMuZ2V0Rml4ZWRULFMudCxTLmV4aXN0cyxTLnNldERlZmF1bHROYW1lc3BhY2UsUy5oYXNMb2FkZWROYW1lc3BhY2UsUy5sb2FkTmFtZXNwYWNlcyxTLmxvYWRMYW5ndWFnZXM7ZnVuY3Rpb24gcmUoaSl7cmV0dXJuIHR5cGVvZiBpPT0ib2JqZWN0Ij9KU09OLnN0cmluZ2lmeShpKTppfWZ1bmN0aW9uIF8oaSxuKXtyZXR1cm4gbmV3IFByb3h5KG5ldyBEYXRlKGkuZ2V0VGltZSgpLW4qNmU0KSx7Z2V0KHIsdCl7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXtpZih0PT09ImdldFRpbWUiKXJldHVybigpPT5yLmdldFRpbWUoKStuKjZlNDtpZih0LnN0YXJ0c1dpdGgoImdldCIpJiYhdC5pbmNsdWRlcygiVVRDIikpcmV0dXJuIHJbdC5yZXBsYWNlKCJnZXQiLCJ
14nZXRVVEMiKV0uYmluZChyKTtpZih0LnN0YXJ0c1dpdGgoInNldCIpJiYhdC5pbmNsdWRlcygiVVRDIikpcmV0dXJuKC4uLmUpPT5yW3QucmVwbGFjZSgic2V0Iiwic2V0VVRDIildLmNhbGwociwuLi5lKStuKjZlNH1yZXR1cm4gclt0XS5iaW5kKHIpfX0pfWNvbnN0IEx0PVsvXlxkezR9LSgwWzEtOV18MVswLTJdKS0oMFsxLTldfFsxMl1bMC05XXwzWzAxXSkkLywvXlxkezR9LSgwWzEtOV18MVswLTJdKSQvLC9eXGR7NH0kL107ZnVuY3Rpb24gUnQoaT1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkpe2Z1bmN0aW9uIG4oLi4ucil7aWYoci5sZW5ndGg+MSl7Y29uc3QgdD1pKjZlNCtEYXRlLlVUQyguLi5yKTtyZXR1cm4gXyhuZXcgRGF0ZSh0KSxpKX1pZihyLmxlbmd0aD4wKXtjb25zdCB0PXJbMF07aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIF8odCxpKTtpZih0eXBlb2YgdD09InN0cmluZyIpe2lmKEx0LmZpbmQobz0+by50ZXN0KHQpKSl7Y29uc3Qgbz1uZXcgRGF0ZSh0KS5nZXRUaW1lKCk7cmV0dXJuIF8obmV3IERhdGUobytpKjZlNCksaSl9aWYoLyhafFtcK1wtXVswLTJdWzAtOV0pJC8udGVzdCh0KSlyZXR1cm4gXyhuZXcgRGF0ZSh0KSxpKTtjb25zdCBlPW5ldyBEYXRlKHQpLGE9ZS5nZXRUaW1lKCktZS5nZXRUaW1lem9uZU9mZnNldCgpKjZlNDtyZXR1cm4gXyhuZXcgRGF0ZShhK2kqNmU0KSxpKX1yZXR1cm4gdD09bnVsbD9udWxsOl8obmV3IERhdGUodCksaSl9cmV0dXJuIF8obmV3IERhdGUsaSl9cmV0dXJuIG59Y29uc3Qga3Q9aT0+e2NvbnN0e3J1bGU6bixmaWQ6cn09aTtpZighbilyZXR1cm4oKT0+ITA7c3dpdGNoKG4udHlwZSl7Y2FzZSJvbmUgb2YiOntjb25zdCB0PW5ldyBTZXQobi52YWx1ZS5tYXAoZT0+cmUoZSkpKTtyZXR1cm4gZT0+dC5oYXMocmUoZVtyXSkpfWNhc2Uibm90IGluIjp7Y29uc3QgdD1uZXcgU2V0KG4udmFsdWUubWFwKGU9PnJlKGUpKSk7cmV0dXJuIGU9PiF0LmhhcyhyZShlW3JdKSl9Y2FzZSJyYW5nZSI6cmV0dXJuIHQ9PihuLnZhbHVlWzBdPz8tMS8wKTw9dFtyXSYmdFtyXTw9KG4udmFsdWVbMV0/PzEvMCk7Y2FzZSJ0ZW1wb3JhbCByYW5nZSI6cmV0dXJuIHQ9Pnt0cnl7Y29uc3QgZT1uLm9mZnNldD9SdChuLm9mZnNldCkodFtyXSkuZ2V0VGltZSgpOm5ldyBEYXRlKHRbcl0pLmdldFRpbWUoKTtyZXR1cm4obi52YWx1ZVswXT8/LTEvMCk8PWUmJmU8PShuLnZhbHVlWzFdPz8xLzApfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKGUpLCExfX07Y2FzZSJyZWdleHAiOnRyeXtjb25zdCB0PW5ldyBSZWdFeHAobi52YWx1ZSxuLmNhc2VTZW5zaXRpdmU/IiI6ImkiKTtyZXR1cm4gZT0+dC50ZXN0KGVbcl0pfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKHQpLCgpPT4hMX1kZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlVucmVzb2x2YWJsZSBmaWx0ZXIgcnVsZSIsbiksKCk9PiEwfX0sanQ9KGksbik9Pntjb25zdCByPW4ubWFwKGt0KTtyZXR1cm4gaS5maWx0ZXIodD0+e2Zvcihjb25zdCBlIG9mIHIpaWYoIWUodCkpcmV0dXJuITE7cmV0dXJuITB9KX0sTnQ9aT0+e2NvbnN0e2RhdGFTb3VyY2U6bixmaWx0ZXJzOnJ9PWkuZGF0YSx0PWp0KG4scik7c2VsZi5wb3N0TWVzc2FnZSh0KX07c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixOdCwhMSl9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1maWx0ZXIud29ya2VyLXpOSnFNd2RoLmpzLm1hcAo=",xae=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),gR=typeof self<"u"&&self.Blob&&new Blob([xae(SB)],{type:"text/javascript;charset=utf-8"});function Yae(e){let t;try{if(t=gR&&(self.URL||self.webkitURL).createObjectURL(gR),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+SB,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const LB="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHllKHAsYyl7cmV0dXJuIG5ldyBQcm94eShuZXcgRGF0ZShwLmdldFRpbWUoKS1jKjZlNCkse2dldChvLGkpe2lmKHR5cGVvZiBpPT0ic3RyaW5nIil7aWYoaT09PSJnZXRUaW1lIilyZXR1cm4oKT0+by5nZXRUaW1lKCkrYyo2ZTQ7aWYoaS5zdGFydHNXaXRoKCJnZXQiKSYmIWkuaW5jbHVkZXMoIlVUQyIpKXJldHVybiBvW2kucmVwbGFjZSgiZ2V0IiwiZ2V0VVRDIildLmJpbmQobyk7aWYoaS5zdGFydHNXaXRoKCJzZX
14QiKSYmIWkuaW5jbHVkZXMoIlVUQyIpKXJldHVybiguLi5uKT0+b1tpLnJlcGxhY2UoInNldCIsInNldFVUQyIpXS5jYWxsKG8sLi4ubikrYyo2ZTR9cmV0dXJuIG9baV0uYmluZChvKX19KX1jb25zdCBkcz1bL15cZHs0fS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMTJdWzAtOV18M1swMV0pJC8sL15cZHs0fS0oMFsxLTldfDFbMC0yXSkkLywvXlxkezR9JC9dO2Z1bmN0aW9uIGtlKHA9bmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKXtmdW5jdGlvbiBjKC4uLm8pe2lmKG8ubGVuZ3RoPjEpe2NvbnN0IGk9cCo2ZTQrRGF0ZS5VVEMoLi4ubyk7cmV0dXJuIHllKG5ldyBEYXRlKGkpLHApfWlmKG8ubGVuZ3RoPjApe2NvbnN0IGk9b1swXTtpZihpIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4geWUoaSxwKTtpZih0eXBlb2YgaT09InN0cmluZyIpe2lmKGRzLmZpbmQocj0+ci50ZXN0KGkpKSl7Y29uc3Qgcj1uZXcgRGF0ZShpKS5nZXRUaW1lKCk7cmV0dXJuIHllKG5ldyBEYXRlKHIrcCo2ZTQpLHApfWlmKC8oWnxbXCtcLV1bMC0yXVswLTldKSQvLnRlc3QoaSkpcmV0dXJuIHllKG5ldyBEYXRlKGkpLHApO2NvbnN0IG49bmV3IERhdGUoaSkscz1uLmdldFRpbWUoKS1uLmdldFRpbWV6b25lT2Zmc2V0KCkqNmU0O3JldHVybiB5ZShuZXcgRGF0ZShzK3AqNmU0KSxwKX1yZXR1cm4gaT09bnVsbD9udWxsOnllKG5ldyBEYXRlKGkpLHApfXJldHVybiB5ZShuZXcgRGF0ZSxwKX1yZXR1cm4gY31jb25zdCBKPXA9PnAuZ2V0VGltZSgpO2Z1bmN0aW9uIGhzKHAsYyxvKXt2YXIgJCxfLGwsYjtjb25zdCBpPSgkPWMuZmluZCh3PT53LnR5cGU9PT0iZmllbGQiKSk9PW51bGw/dm9pZCAwOiQudmFsdWUsbj0oXz1jLmZpbmQodz0+dy50eXBlPT09InZhbHVlIikpPT1udWxsP3ZvaWQgMDpfLnZhbHVlLHM9KGw9Yy5maW5kKHc9PncudHlwZT09PSJvZmZzZXQiKSk9PW51bGw/dm9pZCAwOmwudmFsdWUscj0oYj1jLmZpbmQodz0+dy50eXBlPT09ImRpc3BsYXlPZmZzZXQiKSk9PW51bGw/dm9pZCAwOmIudmFsdWU7aWYoIWl8fCFuKXJldHVybi
14BvO2NvbnN0IG09b1tpXSxoPWtlKHMpLHk9a2UociksdD0oLi4udyk9PnkoaCguLi53KSk7c3dpdGNoKG4pe2Nhc2UieWVhciI6e2NvbnN0IHc9bS5tYXAoZD0+e2lmKCFkKXJldHVybiBudWxsO2NvbnN0IEE9dChkKS5nZXRGdWxsWWVhcigpO3JldHVybiBKKHkoQSwwLDEpKX0pO3JldHVybnsuLi5vLFtwXTp3fX1jYXNlInF1YXJ0ZXIiOntjb25zdCB3PW0ubWFwKGQ9PntpZighZClyZXR1cm4gbnVsbDtjb25zdCB4PXQoZCksQT14LmdldEZ1bGxZZWFyKCksTj1NYXRoLmZsb29yKHguZ2V0TW9udGgoKS8zKTtyZXR1cm4gSih5KEEsTiozLDEpKX0pO3JldHVybnsuLi5vLFtwXTp3fX1jYXNlIm1vbnRoIjp7Y29uc3Qgdz1tLm1hcChkPT57aWYoIWQpcmV0dXJuIG51bGw7Y29uc3QgeD10KGQpLEE9eC5nZXRGdWxsWWVhcigpLE49eC5nZXRNb250aCgpO3JldHVybiBKKHkoQSxOLDEpKX0pO3JldHVybnsuLi5vLFtwXTp3fX1jYXNlIndlZWsiOntjb25zdCB3PW0ubWFwKGQ9PntpZighZClyZXR1cm4gbnVsbDtjb25zdCB4PXQoZCksQT10KHguc2V0RGF0ZSh4LmdldERhdGUoKS14LmdldERheSgpKSksTj1BLmdldEZ1bGxZZWFyKCksaz1BLmdldE1vbnRoKCksdj1BLmdldERhdGUoKTtyZXR1cm4gSih5KE4sayx2KSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJkYXkiOntjb25zdCB3PW0ubWFwKGQ9PntpZighZClyZXR1cm4gbnVsbDtjb25zdCB4PXQoZCksQT14LmdldEZ1bGxZZWFyKCksTj14LmdldE1vbnRoKCksaz14LmdldERhdGUoKTtyZXR1cm4gSih5KEEsTixrKSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJpc29feWVhciI6e2NvbnN0IHc9bS5tYXAoZD0+e2lmKCFkKXJldHVybiBudWxsO2NvbnN0IHg9dChkKSxBPXguZ2V0RnVsbFllYXIoKSxOPXkoQSwwLDQpLGs9dCh0KE4pLnNldERhdGUoTi5nZXREYXRlKCktKE4uZ2V0RGF5KCl8fDcpKzEpKTtpZih4LmdldFRpbWUoKTxrLmdldFRpbWUoKSlyZXR1cm4gSih5KEEtMSwwLDEpKTtjb25zdCB2PXkoQSsxLDAsNCksRT10KHQodikuc2V0RGF0ZSh2LmdldERhdGUoKS0odi5nZXREYXkoKXx8NykrMSkpO3JldHVybiBKKHkoeC5nZXRUaW1lKCk8RS5nZXRUaW1lKCk/QTpBKzEsMCwxKSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJpc29fd2VlayI6e2NvbnN0IHc9bS5tYXAoZD0+e2lmKCFkKXJldHVybiBudWxsO2NvbnN0IHg9dChkKSxBPXQoeC5zZXREYXRlKHguZ2V0RGF0ZSgpLSh4LmdldERheSgpfHw3KSsxKSksTj1BLmdldEZ1bGxZZWFyKCksaz1BLmdldE1vbnRoKCksdj1BLmdldERhdGUoKTtyZXR1cm4gSih5KE4sayx2KSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJob3VyIjp7Y29uc3Qgdz1tLm1hcChkPT57aWYoIWQpcmV0dXJuIG51bGw7Y29uc3QgeD10KGQpLEE9eC5nZXRGdWxsWWVhcigpLE49eC5nZXRNb250aCgpLGs9eC5nZXREYXRlKCksdj14LmdldEhvdXJzKCk7cmV0dXJuIEooeShBLE4sayx2KSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJtaW51dGUiOntjb25zdCB3PW0ubWFwKGQ9PntpZighZClyZXR1cm4gbnVsbDtjb25zdCB4PXQoZCksQT14LmdldEZ1bGxZZWFyKCksTj14LmdldE1vbnRoKCksaz14LmdldERhdGUoKSx2PXguZ2V0SG91cnMoKSxFPXguZ2V0TWludXRlcygpO3JldHVybiBKKHkoQSxOLGssdixFKSl9KTtyZXR1cm57Li4ubyxbcF06d319Y2FzZSJzZWNvbmQiOntjb25zdCB3PW0ubWFwKGQ9PntpZighZClyZXR1cm4gbnVsbDtjb25zdCB4PXQoZCksQT14LmdldEZ1bGxZZWFyKCksTj14LmdldE1vbnRoKCksaz14LmdldERhdGUoKSx2PXguZ2V0SG91cnMoKSxFPXguZ2V0TWludXRlcygpLEM9eC5nZXRTZWNvbmRzKCk7cmV0dXJuIEooeShBLE4sayx2LEUsQykpfSk7cmV0dXJuey4uLm8sW3BdOnd9fWRlZmF1bHQ6cmV0dXJuIG99fWZ1bmN0aW9uIHdzKHAsYyxvKXt2YXIgXyxsLGIsdztjb25zdCBpPShfPWMuZmluZChkPT5kLnR5cGU9PT0iZmllbGQiKSk9PW51bGw/dm9pZCAwOl8udmFsdWUsbj0obD1jLmZpbmQoZD0+ZC50eXBlPT09InZhbHVlIikpPT1udWxsP3ZvaWQgMDpsLnZhbHVlLHM9KGI9Yy5maW5kKGQ9PmQudHlwZT09PSJvZmZzZXQiKSk9PW51bGw/dm9pZCAwOmIudmFsdWUscj0odz1jLmZpbmQoZD0+ZC50eXBlPT09ImRpc3BsYXlPZmZzZXQiKSk9PW51bGw/dm9pZCAwOncudmFsdWU7aWYoIWl8fCFuKXJldHVybi
14BvO2NvbnN0IG09b1tpXSxoPWtlKHMpLHk9a2UociksdD0oLi4uZCk9PnkoaCguLi5kKSk7ZnVuY3Rpb24gJChkKXtjb25zdCB4PXQoZCk7aWYoIXgpcmV0dXJuIG51bGw7Y29uc3QgQT14LmdldEZ1bGxZZWFyKCksTj15KEEsMCw0KSxrPXQodChOKS5zZXREYXRlKE4uZ2V0RGF0ZSgpLShOLmdldERheSgpfHw3KSsxKSk7aWYoeC5nZXRUaW1lKCk8ay5nZXRUaW1lKCkpcmV0dXJuIEEtMTtjb25zdCB2PUErMSxFPXkodiwwLDQpLEM9dCh0KEUpLnNldERhdGUoRS5nZXREYXRlKCktKEUuZ2V0RGF5KCl8fDcpKzEpKTtyZXR1cm4geC5nZXRUaW1lKCk8Qy5nZXRUaW1lKCk/QTp2fXN3aXRjaChuKXtjYXNlInllYXIiOntjb25zdCBkPW0ubWFwKHg9Png/dCh4KS5nZXRGdWxsWWVhcigpOm51bGwpO3JldHVybnsuLi5vLFtwXTpkfX1jYXNlInF1YXJ0ZXIiOntjb25zdCBkPW0ubWFwKHg9PntpZigheClyZXR1cm4gbnVsbDtjb25zdCBBPXQoeCk7cmV0dXJuIE1hdGguZmxvb3IoQS5nZXRNb250aCgpLzMpKzF9KTtyZXR1cm57Li4ubyxbcF06ZH19Y2FzZSJtb250aCI6e2NvbnN0IGQ9bS5tYXAoeD0+eD90KHgpLmdldE1vbnRoKCkrMTpudWxsKTtyZXR1cm57Li4ubyxbcF06ZH19Y2FzZSJ3ZWVrIjp7Y29uc3QgZD1tLm1hcCh4PT57aWYoIXgpcmV0dXJuIG51bGw7Y29uc3QgQT10KHgpLE49QS5nZXRGdWxsWWVhcigpLGs9eShOLDAsMSksdj10KGsuc2V0RGF0ZShrLmdldERhdGUoKS1rLmdldERheSgpKSksRT12LmdldEZ1bGxZZWFyKCk9PT1OP3Y6dCh2LnNldERhdGUodi5nZXREYXRlKCkrNykpO3JldHVybiBNYXRoLmZsb29yKChBLmdldFRpbWUoKS1FLmdldFRpbWUoKSkvKDcqMjQqNjAqNjAqMWUzKSkrMX0pO3JldHVybnsuLi5vLFtwXTpkfX1jYXNlIndlZWtkYXkiOntjb25zdCBkPW0ubWFwKHg9Png/dCh4KS5nZXREYXkoKTpudWxsKTtyZXR1cm57Li4ubyxbcF06ZH19Y2FzZSJpc29feWVhciI6e2NvbnN0IGQ9bS5tYXAoJCk7cmV0dXJuey4uLm8sW3BdOmR9fWNhc2UiaXNvX3dlZWsiOntjb25zdCBkPW0ubWFwKHg9PntpZigheClyZXR1cm4gbnVsbDtjb25zdCBBPXQoeCksTj0kKHgpLGs9eShOLDAsNCksdj10KHQoaykuc2V0RGF0ZShrLmdldERhdGUoKS0oay5nZXREYXkoKXx8NykrMSkpO3JldHVybiBNYXRoLmZsb29yKChBLmdldFRpbWUoKS12LmdldFRpbWUoKSkvKDcqMjQqNjAqNjAqMWUzKSkrMX0pO3JldHVybnsuLi5vLFtwXTpkfX1jYXNlImlzb193ZWVrZGF5Ijp7Y29uc3QgZD1tLm1hcCh4PT54P3QoeCkuZ2V0RGF5KCl8fDc6bnVsbCk7cmV0dXJuey4uLm8sW3BdOmR9fWNhc2UiZGF5Ijp7Y29uc3QgZD1tLm1hcCh4PT54P3QoeCkuZ2V0RGF0ZSgpOm51bGwpO3JldHVybnsuLi5vLFtwXTpkfX1jYXNlImhvdXIiOntjb25zdCBkPW0ubWFwKHg9Png/dCh4KS5nZXRIb3VycygpOm51bGwpO3JldHVybnsuLi5vLFtwXTpkfX1jYXNlIm1pbnV0ZSI6e2NvbnN0IGQ9bS5tYXAoeD0+eD90KHgpLmdldE1pbnV0ZXMoKTpudWxsKTtyZXR1cm57Li4ubyxbcF06ZH19Y2FzZSJzZWNvbmQiOntjb25zdCBkPW0ubWFwKHg9Png/dCh4KS5nZXRTZWNvbmRzKCk6bnVsbCk7cmV0dXJuey4uLm8sW3BdOmR9fWRlZmF1bHQ6cmV0dXJuIG99fWZ1bmN0aW9uIHhzKHAsYyxvKXtyZXR1cm4gYypvK3B9YXN5bmMgZnVuY3Rpb24gRmUocCl7Y29uc3QgYz1hd2FpdCBmZXRjaCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIrcCkudGhlbihpPT5pLmJvZHkucGlwZVRocm91Z2gobmV3IERlY29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUtcmF3IikpKSxvPWF3YWl0IG5ldyBSZXNwb25zZShjKS5hcnJheUJ1ZmZlcigpO3JldHVybiBuZXcgVWludDhBcnJheShvKX1mdW5jdGlvbiBUZShwLGMsbyl7cmV0dXJuIGM+PXBbMV0/by0xOmM8PXBbMF0/MDpNYXRoLmZsb29yKG8qKGMtcFswXSkvKHBbMV0tcFswXSkpfWZ1bmN0aW9uIGtzKHAsYyxvLGksbil7cmV0dXJuIHAubWFwKChzLHIpPT57Y29uc3QgbT1jW3JdO3JldHVybiB4cyhUZShvLHMsbiksVGUoaSxtLG4pLG4pfSl9YXN5bmMgZnVuY3Rpb24gZ3MocCxjLG8pe2NvbnN0e2RpY3Q6aSxkb21haW5YOm4sZG9tYWluWTpzLG1hcDpyLG1hcHdpZHRoOm19PW8saD1hd2FpdCBGZShyKTtyZXR1cm4ga3MocCxjLG4scyxtKS5tYXAoeT0+e3ZhciB0O3JldHVybih0PWlbaFt5XV0pPT1udWxsP3ZvaWQgMDp0Lm5hbWV9KX1mdW5jdGlvbiB2cyhwKXtjb25zdCBjPXAubWFwKG89Pm8uZG9tYWluLndpZHRoKS5yZWR1Y2VSaWdodCgoW28sLi4uaV0sbik9PltuKm8sbywuLi5pXSxbMV0pLnNsaWNlKDEpO3JldHVybiBvPT5vLm1hcCgoaSxuKT0+aSpjW25dKS5yZWR1Y2UoKGksbik9Pmkrbil9ZnVuY3Rpb24gQXMocCl7Y29uc3QgYz1wLm1hcCgoe2RvbWFpbjppLGZpZDpufSk9PntpZihpLnR5cGU9PT0ibm9taW5hbCIpe2NvbnN0IHI9bmV3IE1hcChpLnZhbHVlLm1hcCgobSxoKT0+W2Ake219YCxoXSkpO3JldHVybiBtPT5yLmdldChgJHttW25dfWApPz8wfWlmKGkudHlwZT09PSJxdWFudGl0YXRpdmUiKXJldHVybiByPT5UZShpLnZhbHVlLHJbbl0saS53aWR0aCk7Y29uc3Qgcz1pO3Rocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgZG9tYWluIHR5cGUgJHtzLnR5cGV9YCl9KSxvPXZzKHApO3JldHVybiBpPT5vKGMubWFwKG49Pm4oaSkpKX1hc3luYyBmdW5jdGlvbiBPcyhwLGMpe2NvbnN0e2RpY3Q6byxmYWNldHM6aX09YztsZXQgbj1wLm1hcCgoKT0+b1sxXS5uYW1lKTtmb3IoY29uc3R7bWFwOnMsZGltZW5zaW9uczpyfW9mIGkpe2NvbnN0IG09YXdhaXQgRmUocyksaD1BcyhyKTtuPXAubWFwKGgpLm1hcCgoeSx0KT0+e3ZhciAkO3JldHVybiBtW3ldIT09MD8oJD1vW21beV1dKT09bnVsbD92b2lkIDA6JC5uYW1lOm5bdF19KX1yZXR1cm4gbn12YXIgemU9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSxmZT17fSxOZT17ZXhwb3J0czp7fX0sQmU7ZnVuY3Rpb24gU3MoKXtyZXR1cm4gQmV8fChCZT0xLGZ1bmN0aW9uKHApeyhmdW5jdGlvbihjLG8pe3AuZXhwb3J0cz9wLmV4cG9ydHM9bygpOmMubW9vPW8oKX0pKHplLGZ1bmN0aW9uKCl7dmFyIGM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxvPU9
14iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT10eXBlb2YgbmV3IFJlZ0V4cCgpLnN0aWNreT09ImJvb2xlYW4iO2Z1bmN0aW9uIG4oYSl7cmV0dXJuIGEmJm8uY2FsbChhKT09PSJbb2JqZWN0IFJlZ0V4cF0ifWZ1bmN0aW9uIHMoYSl7cmV0dXJuIGEmJnR5cGVvZiBhPT0ib2JqZWN0IiYmIW4oYSkmJiFBcnJheS5pc0FycmF5KGEpfWZ1bmN0aW9uIHIoYSl7cmV0dXJuIGEucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csZnVuY3Rpb24oZil7cmV0dXJuIGY9PT0iLSI/IlxceDJkIjoiXFwiK2Z9KX1mdW5jdGlvbiBtKGEpe3ZhciBmPW5ldyBSZWdFeHAoInwiK2EpO3JldHVybiBmLmV4ZWMoIiIpLmxlbmd0aC0xfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIigiK2ErIikifWZ1bmN0aW9uIHkoYSl7aWYoIWEubGVuZ3RoKXJldHVybiIoPyEpIjt2YXIgZj1hLm1hcChmdW5jdGlvbihnKXtyZXR1cm4iKD86IitnKyIpIn0pLmpvaW4oInwiKTtyZXR1cm4iKD86IitmKyIpIn1mdW5jdGlvbiB0KGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4iKD86IityKGEpKyIpIjtpZihuKGEpKXtpZihhLmlnbm9yZUNhc2UpdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgL2kgZmxhZyBub3QgYWxsb3dlZCIpO2lmKGEuZ2xvYmFsKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC9nIGZsYWcgaXMgaW1wbGllZCIpO2lmKGEuc3RpY2t5KXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC95IGZsYWcgaXMgaW1wbGllZCIpO2lmKGEubXVsdGlsaW5lKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC9tIGZsYWcgaXMgaW1wbGllZCIpO3JldHVybiBhLnNvdXJjZX1lbHNlIHRocm93IG5ldyBFcnJvcigiTm90IGEgcGF0dGVybjogIithKX1mdW5jdGlvbiAkKGEsZil7cmV0dXJuIGEubGVuZ3RoPmY/YTpBcnJheShmLWEubGVuZ3RoKzEpLmpvaW4oIiAiKSthfWZ1bmN0aW9uIF8oYSxmKXtmb3IodmFyIGc9YS5sZW5ndGgsTz0wOzspe3ZhciBSPWEubGFzdEluZGV4T2YoYApgLGctMSk7aWYoUj09PS0xfHwoTysrLGc9UixPPT09Zil8fGc9PT0wKWJyZWFrfXZhciBMPU88Zj8wOmcrMTtyZXR1cm4gYS5zdWJzdHJpbmcoTCkuc3BsaXQoYApgKX1mdW5jdGlvbiBsKGEpe2Zvcih2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKSxnPVtdLE89MDtPPGYubGVuZ3RoO08rKyl7dmFyIFI9ZltPXSxMPWFbUl0sST1bXS5jb25jYXQoTCk7aWYoUj09PSJpbmNsdWRlIil7Zm9yKHZhciBGPTA7RjxJLmxlbmd0aDtGKyspZy5wdXNoKHtpbmNsdWRlOklbRl19KTtjb250aW51ZX12YXIgVT1bXTtJLmZvckVhY2goZnVuY3Rpb24oail7cyhqKT8oVS5sZW5ndGgmJmcucHVzaCh3KFIsVSkpLGcucHVzaCh3KFIsaikpLFU9W10pOlUucHVzaChqKX0pLFUubGVuZ3RoJiZnLnB1c2godyhSLFUpKX1yZXR1cm4gZ31mdW5jdGlvbiBiKGEpe2Zvcih2YXIgZj1bXSxnPTA7ZzxhLmxlbmd0aDtnKyspe3ZhciBPPWFbZ107aWYoTy5pbmNsdWRlKXtmb3IodmFyIFI9W10uY29uY2F0KE8uaW5jbHVkZSksTD0wO0w8Ui5sZW5ndGg7TCsrKWYucHVzaCh7aW5jbHVkZTpSW0xdfSk7Y29udGludWV9aWYoIU8udHlwZSl0aHJvdyBuZXcgRXJyb3IoIlJ1bGUgaGFzIG5vIHR5cGU6ICIrSlNPTi5zdHJpbmdpZnkoTykpO2YucHVzaCh3KE8udHlwZSxPKSl9cmV0dXJuIGZ9ZnVuY3Rpb24gdyhhLGYpe2lmKHMoZil8fChmPXttYXRjaDpmfSksZi5pbmNsdWRlKXRocm93IG5ldyBFcnJvcigiTWF0Y2hpbmcgcnVsZXMgY2Fubm90IGFsc28gaW5jbHVkZSBzdGF0ZXMiKTt2YXIgZz17ZGVmYXVsdFR5cGU6YSxsaW5lQnJlYWtzOiEhZi5lcnJvcnx8ISFmLmZhbGxiYWNrLHBvcDohMSxuZXh0Om51bGwscHVzaDpudWxsLGVycm9yOiExLGZhbGxiYWNrOiExLHZhbHVlOm51bGwsdHlwZTpudWxsLHNob3VsZFRocm93OiExfTtmb3IodmFyIE8gaW4gZiljLmNhbGwoZixPKSYmKGdbT109ZltPXSk7aWYodHlwZW9mIGcudHlwZT09InN0cmluZyImJmEhPT1nLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJUeXBlIHRyYW5zZm9ybSBjYW5ub3QgYmUgYSBzdHJpbmcgKHR5cGUgJyIrZy50eXBlKyInIGZvciB0b2tlbiAnIithKyInKSIpO3ZhciBSPWcubWF0Y2g7cmV0dXJuIGcubWF0Y2g9QXJyYXkuaXNBcnJheShSKT9SOlI/W1JdOltdLGcubWF0Y2guc29ydChmdW5jdGlvbihMLEkpe3JldHVybiBuKEwpJiZuKEkpPzA6bihJKT8tMTpuKEwpPzE6SS5sZW5ndGgtTC5sZW5ndGh9KSxnfWZ1bmN0aW9uIGQoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YihhKTpsKGEpfXZhciB4PXcoImVycm9yIix7bGluZUJyZWFrczohMCxzaG91bGRUaHJvdzohMH0pO2Z1bmN0aW9uIEEoYSxmKXtmb3IodmFyIGc9bnVsbCxPPU9iamVjdC5jcmVhdGUobnVsbCksUj0hMCxMPW51bGwsST1bXSxGPVtdLFU9MDtVPGEubGVuZ3RoO1UrKylhW1VdLmZhbGxiYWNrJiYoUj0hMSk7Zm9yKHZhciBVPTA7VTxhLmxlbmd0aDtVKyspe3ZhciBqPWFbVV07aWYoai5pbmNsdWRlKXRocm93IG5ldyBFcnJvcigiSW5oZXJpdGFuY2UgaXMgbm90IGFsbG93ZWQgaW4gc3RhdGVsZXNzIGxleGVycyIpO2lmKGouZXJyb3J8fGouZmFsbGJhY2spe2lmKGcpdGhyb3chai5mYWxsYmFjaz09IWcuZmFsbGJhY2s
14/bmV3IEVycm9yKCJNdWx0aXBsZSAiKyhqLmZhbGxiYWNrPyJmYWxsYmFjayI6ImVycm9yIikrIiBydWxlcyBub3QgYWxsb3dlZCAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIik6bmV3IEVycm9yKCJmYWxsYmFjayBhbmQgZXJyb3IgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIik7Zz1qfXZhciB6PWoubWF0Y2guc2xpY2UoKTtpZihSKWZvcig7ei5sZW5ndGgmJnR5cGVvZiB6WzBdPT0ic3RyaW5nIiYmelswXS5sZW5ndGg9PT0xOyl7dmFyIG9lPXouc2hpZnQoKTtPW29lLmNoYXJDb2RlQXQoMCldPWp9aWYoai5wb3B8fGoucHVzaHx8ai5uZXh0KXtpZighZil0aHJvdyBuZXcgRXJyb3IoIlN0YXRlLXN3aXRjaGluZyBvcHRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBzdGF0ZWxlc3MgbGV4ZXJzIChmb3IgdG9rZW4gJyIrai5kZWZhdWx0VHlwZSsiJykiKTtpZihqLmZhbGxiYWNrKXRocm93IG5ldyBFcnJvcigiU3RhdGUtc3dpdGNoaW5nIG9wdGlvbnMgYXJlIG5vdCBhbGxvd2VkIG9uIGZhbGxiYWNrIHRva2VucyAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIil9aWYoei5sZW5ndGghPT0wKXtSPSExLEkucHVzaChqKTtmb3IodmFyIGxlPTA7bGU8ei5sZW5ndGg7bGUrKyl7dmFyIEs9eltsZV07aWYobihLKSl7aWYoTD09PW51bGwpTD1LLnVuaWNvZGU7ZWxzZSBpZihMIT09Sy51bmljb2RlJiZqLmZhbGxiYWNrPT09ITEpdGhyb3cgbmV3IEVycm9yKCJJZiBvbmUgcnVsZSBpcyAvdSB0aGVuIGFsbCBtdXN0IGJlIil9fXZhciBpZT15KHoubWFwKHQpKSxCPW5ldyBSZWdFeHAoaWUpO2lmKEIudGVzdCgiIikpdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgbWF0Y2hlcyBlbXB0eSBzdHJpbmc6ICIrQik7dmFyIG5lPW0oaWUpO2lmKG5lPjApdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgaGFzIGNhcHR1cmUgZ3JvdXBzOiAiK0IrYApVc2UgKD86IOKApiApIGluc3RlYWRgKTtpZighai5saW5lQnJlYWtzJiZCLnRlc3QoYApgKSl0aHJvdyBuZXcgRXJyb3IoIlJ1bGUgc2hvdWxkIGRlY2xhcmUgbGluZUJyZWFrczogIitCKTtGLnB1c2goaChpZSkpfX12YXIgYWU9ZyYmZy5mYWxsYmFjaywkZT1pJiYhYWU/InltIjoiZ20iLF9lPWl8fGFlPyIiOiJ8IjtMPT09ITAmJigkZSs9InUiKTt2YXIgYmU9bmV3IFJlZ0V4cCh5KEYpK19lLCRlKTtyZXR1cm57cmVnZXhwOmJlLGdyb3VwczpJLGZhc3Q6TyxlcnJvcjpnfHx4fX1mdW5jdGlvbiBOKGEpe3ZhciBmPUEoZChhKSk7cmV0dXJuIG5ldyBDKHtzdGFydDpmfSwic3RhcnQiKX1mdW5jdGlvbiBrKGEsZixnKXt2YXIgTz1hJiYoYS5wdXNofHxhLm5leHQpO2lmKE8mJiFnW09dKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBzdGF0ZSAnIitPKyInIChpbiB0b2tlbiAnIithLmRlZmF1bHRUeXBlKyInIG9mIHN0YXRlICciK2YrIicpIik7aWYoYSYmYS5wb3AmJithLnBvcCE9MSl0aHJvdyBuZXcgRXJyb3IoInBvcCBtdXN0IGJlIDEgKGluIHRva2VuICciK2EuZGVmYXVsdFR5cGUrIicgb2Ygc3RhdGUgJyIrZisiJykiKX1mdW5jdGlvbiB2KGEsZil7dmFyIGc9YS4kYWxsP2QoYS4kYWxsKTpbXTtkZWxldGUgYS4kYWxsO3ZhciBPPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2Z8fChmPU9bMF0pO2Zvcih2YXIgUj1PYmplY3QuY3JlYXRlKG51bGwpLEw9MDtMPE8ubGVuZ3RoO0wrKyl7dmFyIEk9T1tMXTtSW0ldPWQoYVtJXSkuY29uY2F0KGcpfWZvcih2YXIgTD0wO0w8Ty5sZW5ndGg7TCsrKWZvcih2YXIgST1PW0xdLEY9UltJXSxVPU9iamVjdC5jcmVhdGUobnVsbCksaj0wO2o8Ri5sZW5ndGg7aisrKXt2YXIgej1GW2pdO2lmKHouaW5jbHVkZSl7dmFyIG9lPVtqLDFdO2lmKHouaW5jbHVkZSE9PUkmJiFVW3ouaW5jbHVkZV0pe1Vbei5pbmNsdWRlXT0hMDt2YXIgbGU9Ult6LmluY2x1ZGVdO2lmKCFsZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbmNsdWRlIG5vbmV4aXN0ZW50IHN0YXRlICciK3ouaW5jbHVkZSsiJyAoaW4gc3RhdGUgJyIrSSsiJykiKTtmb3IodmFyIEs9MDtLPGxlLmxlbmd0aDtLKyspe3ZhciBpZT1sZVtLXTtGLmluZGV4T2YoaWUpPT09LTEmJm9lLnB1c2goaWUpfX1GLnNwbGljZS5hcHBseShGLG9lKSxqLS19fWZvcih2YXIgQj1PYmplY3QuY3JlYXRlKG51bGwpLEw9MDtMPE8ubGVuZ3RoO0wrKyl7dmFyIEk9T1tMXTtCW0ldPUEoUltJXSwhMCl9Zm9yKHZhciBMPTA7TDxPLmxlbmd0aDtMKyspe2Zvcih2YXIgbmU9T1tMXSxhZT1CW25lXSwkZT1hZS5ncm91cHMsaj0wO2o8JGUubGVuZ3RoO2orKylrKCRlW2pdLG5lLEIpO2Zvcih2YXIgX2U9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWUuZmFzdCksaj0wO2o8X2UubGVuZ3RoO2orKylrKGFlLmZhc3RbX2Vbal1dLG5lLEIpfXJldHVybiBuZXcgQyhCLGYpfWZ1bmN0aW9uIEUoYSl7Zm9yKHZhciBmPXR5cGVvZiBNYXA8InUiLGc9Zj9uZXcgTWFwOk9iamVjdC5jcmVhdGUobnVsbCksTz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKSxSPTA7UjxPLmxlbmd0aDtSKyspe3ZhciBMPU9bUl0sST1hW0xdLEY9QXJyYXkuaXNBcnJheShJKT9JOltJXTtGLmZvckVhY2goZnVuY3Rpb24oVSl7aWYodHlwZW9mIFUhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigia2V5d29yZCBtdXN0IGJlIHN0cmluZyAoaW4ga2V5d29yZCAnIitMKyInKSIpO2Y/Zy5zZXQoVSxMKTpnW1VdPUx9KX1yZXR1cm4gZnVuY3Rpb24oVSl7cmV0dXJuIGY/Zy5nZXQoVSk6Z1tVXX19dmFyIEM9ZnVuY3Rpb24oYSxmKXt0aGlzLnN0YXJ0U3RhdGU9Zix0aGlzLnN0YXRlcz1hLHRoaXMuYnVmZmVyPSIiLHRoaXMuc3RhY2s9W10sdGhpcy5yZXNldCgpfTtDLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihhLGYpe3JldHVybiB0aGlzLmJ1ZmZlcj1hfHwiIix0aGlzLmluZGV4PTAsdGhpcy5saW5lPWY/Zi5saW5lOjEsdGhpcy5jb2w9Zj9mLmNvbDoxLHRoaXMucXVldWVkVG9rZW49Zj9mLnF1ZXVlZFRva2VuOm51bGwsdGhpcy5xdWV1ZWRUZXh0PWY/Zi5xdWV1ZWRUZXh0OiIiLHRoaXMucXVldWVkVGhyb3c9Zj9mLnF1ZXVlZFRocm93Om51bGwsdGhpcy5zZXRTdGF0ZShmP2Yuc3Rh
14dGU6dGhpcy5zdGFydFN0YXRlKSx0aGlzLnN0YWNrPWYmJmYuc3RhY2s/Zi5zdGFjay5zbGljZSgpOltdLHRoaXN9LEMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57bGluZTp0aGlzLmxpbmUsY29sOnRoaXMuY29sLHN0YXRlOnRoaXMuc3RhdGUsc3RhY2s6dGhpcy5zdGFjay5zbGljZSgpLHF1ZXVlZFRva2VuOnRoaXMucXVldWVkVG9rZW4scXVldWVkVGV4dDp0aGlzLnF1ZXVlZFRleHQscXVldWVkVGhyb3c6dGhpcy5xdWV1ZWRUaHJvd319LEMucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEpe2lmKCEoIWF8fHRoaXMuc3RhdGU9PT1hKSl7dGhpcy5zdGF0ZT1hO3ZhciBmPXRoaXMuc3RhdGVzW2FdO3RoaXMuZ3JvdXBzPWYuZ3JvdXBzLHRoaXMuZXJyb3I9Zi5lcnJvcix0aGlzLnJlPWYucmVnZXhwLHRoaXMuZmFzdD1mLmZhc3R9fSxDLnByb3RvdHlwZS5wb3BTdGF0ZT1mdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUodGhpcy5zdGFjay5wb3AoKSl9LEMucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbihhKXt0aGlzLnN0YWNrLnB1c2godGhpcy5zdGF0ZSksdGhpcy5zZXRTdGF0ZShhKX07dmFyIHE9aT9mdW5jdGlvbihhLGYpe3JldHVybiBhLmV4ZWMoZil9OmZ1bmN0aW9uKGEsZil7dmFyIGc9YS5leGVjKGYpO3JldHVybiBnWzBdLmxlbmd0aD09PTA/bnVsbDpnfTtDLnByb3RvdHlwZS5fZ2V0R3JvdXA9ZnVuY3Rpb24oYSl7Zm9yKHZhciBmPXRoaXMuZ3JvdXBzLmxlbmd0aCxnPTA7ZzxmO2crKylpZihhW2crMV0hPT12b2lkIDApcmV0dXJuIHRoaXMuZ3JvdXBzW2ddO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgdG9rZW4gdHlwZSBmb3IgbWF0Y2hlZCB0ZXh0Iil9O2Z1bmN0aW9uIGUoKXtyZXR1cm4gdGhpcy52YWx1ZX1pZihDLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pbmRleDtpZih0aGlzLnF1ZXVlZEdyb3VwKXt2YXIgZj10aGlzLl90b2tlbih0aGlzLnF1ZXVlZEdyb3VwLHRoaXMucXVldWVkVGV4dCxhKTtyZXR1cm4gdGhpcy5xdWV1ZWRHcm91cD1udWxsLHRoaXMucXVldWVkVGV4dD0iIixmfXZhciBnPXRoaXMuYnVmZmVyO2lmKGEhPT1nLmxlbmd0aCl7dmFyIEk9dGhpcy5mYXN0W2cuY2hhckNvZGVBdChhKV07aWYoSSlyZXR1cm4gdGhpcy5fdG9rZW4oSSxnLmNoYXJBdChhKSxhKTt2YXIgTz10aGlzLnJlO08ubGFzdEluZGV4PWE7dmFyIFI9cShPLGcpLEw9dGhpcy5lcnJvcjtpZihSPT1udWxsKXJldHVybiB0aGlzLl90b2tlbihMLGcuc2xpY2UoYSxnLmxlbmd0aCksYSk7dmFyIEk9dGhpcy5fZ2V0R3JvdXAoUiksRj1SWzBdO3JldHVybiBMLmZhbGxiYWNrJiZSLmluZGV4IT09YT8odGhpcy5xdWV1ZWRHcm91cD1JLHRoaXMucXVldWVkVGV4dD1GLHRoaXMuX3Rva2VuKEwsZy5zbGljZShhLFIuaW5kZXgpLGEpKTp0aGlzLl90b2tlbihJLEYsYSl9fSxDLnByb3RvdHlwZS5fdG9rZW49ZnVuY3Rpb24oYSxmLGcpe3ZhciBPPTA7aWYoYS5saW5lQnJlYWtzKXt2YXIgUj0vXG4vZyxMPTE7aWYoZj09PWAKYClPPTE7ZWxzZSBmb3IoO1IuZXhlYyhmKTspTysrLEw9Ui5sYXN0SW5kZXh9dmFyIEk9e3R5cGU6dHlwZW9mIGEudHlwZT09ImZ1bmN0aW9uIiYmYS50eXBlKGYpfHxhLmRlZmF1bHRUeXBlLHZhbHVlOnR5cGVvZiBhLnZhbHVlPT0iZnVuY3Rpb24iP2EudmFsdWUoZik6Zix0ZXh0OmYsdG9TdHJpbmc6ZSxvZmZzZXQ6ZyxsaW5lQnJlYWtzOk8sbGluZTp0aGlzLmxpbmUsY29sOnRoaXMuY29sfSxGPWYubGVuZ3RoO2lmKHRoaXMuaW5kZXgrPUYsdGhpcy5saW5lKz1PLE8hPT0wP3RoaXMuY29sPUYtTCsxOnRoaXMuY29sKz1GLGEuc2hvdWxkVGhyb3cpe3ZhciBVPW5ldyBFcnJvcih0aGlzLmZvcm1hdEVycm9yKEksImludmFsaWQgc3ludGF4IikpO3Rocm93IFV9cmV0dXJuIGEucG9wP3RoaXMucG9wU3RhdGUoKTphLnB1c2g/dGhpcy5wdXNoU3RhdGUoYS5wdXNoKTphLm5leHQmJnRoaXMuc2V0U3RhdGUoYS5uZXh0KSxJfSx0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yKXt2YXIgdT1mdW5jdGlvbihhKXt0aGlzLmxleGVyPWF9O3UucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxleGVyLm5leHQoKTtyZXR1cm57dmFsdWU6YSxkb25lOiFhfX0sdS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxDLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB1KHRoaXMpfX1yZXR1cm4gQy5wcm90b3R5cGUuZm9ybWF0RXJyb3I9ZnVuY3Rpb24oYSxmKXtpZihhPT1udWxsKXZhciBnPXRoaXMuYnVmZmVyLnNsaWNlKHRoaXMuaW5kZXgpLGE9e3RleHQ6ZyxvZmZzZXQ6dGhpcy5pbmRleCxsaW5lQnJlYWtzOmcuaW5kZXhPZihgCmApPT09LTE/MDoxLGxpbmU6dGhpcy5saW5lLGNvbDp0aGlzLmNvbH07dmFyIE89MixSPU1hdGgubWF4KGEubGluZS1PLDEpLEw9YS5saW5lK08sST1TdHJpbmcoTCkubGVuZ3RoLEY9Xyh0aGlzLmJ1ZmZlcix0aGlzLmxpbmUtYS5saW5lK08rMSkuc2xpY2UoMCw1KSxVPVtdO1UucHVzaChmKyIgYXQgbGluZSAiK2EubGluZSsiIGNvbCAiK2EuY29sKyI6IiksVS5wdXNoKCIiKTtmb3IodmFyIGo9MDtqPEYubGVuZ3RoO2orKyl7dmFyIHo9RltqXSxvZT1SK2o7VS5wdXNoKCQoU3RyaW5nKG9lKSxJKSsiICAiK3opLG9lPT09YS5saW5lJiZVLnB1c2goJCgiIixJK2EuY29sKzEpKyJeIil9cmV0dXJuIFUuam9pbihgCmApfSxDLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgQyh0aGlzLnN0YXRlcyx0aGlzLnN0YXRlKX0sQy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiEwfSx7Y29tcGlsZTpOLHN0YXRlczp2LGVycm9yOk9iamVjdC5mcmVlemUoe2Vycm9yOiEwfSksZmFsbGJhY2s6T2JqZWN0LmZyZWV6ZSh7ZmFsbGJhY2s6ITB9KSxrZXl3b3JkczpFfX0pfShOZSkpLE5lLmV4cG9ydHN9dmFyIENlPXtleHBvcnRzOnt9fSxWZTtmdW5jdGlvbiBFcygpe3JldHVybiBWZXx8KFZlPTEsZnVuY3Rpb24ocCl7KGZ1bmN0aW9uKGMsbyl7cC5leHBvcnRzP3AuZXhwb3J0cz1vKCk6Yy5uZWFybGV5PW8oKX0pKHplLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyh5LHQsJCl7cmV0dXJuIHRoaXMuaWQ9KytjLmhpZ2hlc3RJZCx0aGlzLm5hbWU9eSx0aGlzLnN5bWJvbHM9dCx0aGlzLnBvc3Rwcm9jZXNzPSQsdGhpc31jLmhpZ2hlc3RJZD0wLGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHkpe3ZhciB0PXR5cGVvZiB5PiJ1Ij90aGlzLnN5bWJvbHMubWFwKGgpLmpvaW4oIiAiKTp0aGlzLnN5bWJvbHMuc2xpY2UoMCx5KS5tYXAoaCkuam9pbigiICIpKyIg4pePICIrdGhpcy5zeW1ib2xzLnNsaWNlKHkpLm1hcChoKS5qb2luKCIgIik7cmV0dXJuIHRoaXMubmFtZSsiIOKGkiAiK3R9O2Z1bmN0aW9uIG8oeSx0LCQsXyl7dGhpcy5ydWxlPXksdGhpcy5kb3Q9dCx0aGlzLnJlZmVyZW5jZT0kLHRoaXMuZGF0YT1bXSx0aGlzLndhbnRlZEJ5PV8sdGhpcy5pc0NvbXBsZXRlPXRoaXMuZG90PT09eS5zeW1ib2xzLmxlbmd0aH1vLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJ7Iit0aGlzLnJ1bGUudG9TdHJpbmc
14odGhpcy5kb3QpKyJ9LCBmcm9tOiAiKyh0aGlzLnJlZmVyZW5jZXx8MCl9LG8ucHJvdG90eXBlLm5leHRTdGF0ZT1mdW5jdGlvbih5KXt2YXIgdD1uZXcgbyh0aGlzLnJ1bGUsdGhpcy5kb3QrMSx0aGlzLnJlZmVyZW5jZSx0aGlzLndhbnRlZEJ5KTtyZXR1cm4gdC5sZWZ0PXRoaXMsdC5yaWdodD15LHQuaXNDb21wbGV0ZSYmKHQuZGF0YT10LmJ1aWxkKCksdC5yaWdodD12b2lkIDApLHR9LG8ucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKCl7dmFyIHk9W10sdD10aGlzO2RvIHkucHVzaCh0LnJpZ2h0LmRhdGEpLHQ9dC5sZWZ0O3doaWxlKHQubGVmdCk7cmV0dXJuIHkucmV2ZXJzZSgpLHl9LG8ucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3RoaXMucnVsZS5wb3N0cHJvY2VzcyYmKHRoaXMuZGF0YT10aGlzLnJ1bGUucG9zdHByb2Nlc3ModGhpcy5kYXRhLHRoaXMucmVmZXJlbmNlLHIuZmFpbCkpfTtmdW5jdGlvbiBpKHksdCl7dGhpcy5ncmFtbWFyPXksdGhpcy5pbmRleD10LHRoaXMuc3RhdGVzPVtdLHRoaXMud2FudHM9e30sdGhpcy5zY2FubmFibGU9W10sdGhpcy5jb21wbGV0ZWQ9e319aS5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih5KXtmb3IodmFyIHQ9dGhpcy5zdGF0ZXMsJD10aGlzLndhbnRzLF89dGhpcy5jb21wbGV0ZWQsbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgYj10W2xdO2lmKGIuaXNDb21wbGV0ZSl7aWYoYi5maW5pc2goKSxiLmRhdGEhPT1yLmZhaWwpe2Zvcih2YXIgdz1iLndhbnRlZEJ5LGQ9dy5sZW5ndGg7ZC0tOyl7dmFyIHg9d1tkXTt0aGlzLmNvbXBsZXRlKHgsYil9aWYoYi5yZWZlcmVuY2U9PT10aGlzLmluZGV4KXt2YXIgQT1iLnJ1bGUubmFtZTsodGhpcy5jb21wbGV0ZWRbQV09dGhpcy5jb21wbGV0ZWRbQV18fFtdKS5wdXNoKGIpfX19ZWxzZXt2YXIgQT1iLnJ1bGUuc3ltYm9sc1tiLmRvdF07aWYodHlwZW9mIEEhPSJzdHJpbmciKXt0aGlzLnNjYW5uYWJsZS5wdXNoKGIpO2NvbnRpbnVlfWlmKCRbQV0pe2lmKCRbQV0ucHVzaChiKSxfLmhhc093blByb3BlcnR5KEEpKWZvcih2YXIgTj1fW0FdLGQ9MDtkPE4ubGVuZ3RoO2QrKyl7dmFyIGs9TltkXTt0aGlzLmNvbXBsZXRlKGIsayl9fWVsc2UgJFtBXT1bYl0sdGhpcy5wcmVkaWN0KEEpfX19LGkucHJvdG90eXBlLnByZWRpY3Q9ZnVuY3Rpb24oeSl7Zm9yKHZhciB0PXRoaXMuZ3JhbW1hci5ieU5hbWVbeV18fFtdLCQ9MDskPHQubGVuZ3RoOyQrKyl7dmFyIF89dFskXSxsPXRoaXMud2FudHNbeV0sYj1uZXcgbyhfLDAsdGhpcy5pbmRleCxsKTt0aGlzLnN0YXRlcy5wdXNoKGIpfX0saS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oeSx0KXt2YXIgJD15Lm5leHRTdGF0ZSh0KTt0aGlzLnN0YXRlcy5wdXNoKCQpfTtmdW5jdGlvbiBuKHksdCl7dGhpcy5ydWxlcz15LHRoaXMuc3RhcnQ9dHx8dGhpcy5ydWxlc1swXS5uYW1lO3ZhciAkPXRoaXMuYnlOYW1lPXt9O3RoaXMucnVsZXMuZm9yRWFjaChmdW5jdGlvbihfKXskLmhhc093blByb3BlcnR5KF8ubmFtZSl8fCgkW18ubmFtZV09W10pLCRbXy5uYW1lXS5wdXNoKF8pfSl9bi5mcm9tQ29tcGlsZWQ9ZnVuY3Rpb24oXyx0KXt2YXIgJD1fLkxleGVyO18uUGFyc2VyU3RhcnQmJih0PV8uUGFyc2VyU3RhcnQsXz1fLlBhcnNlclJ1bGVzKTt2YXIgXz1fLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gbmV3IGMoYi5uYW1lLGIuc3ltYm9scyxiLnBvc3Rwcm9jZXNzKX0pLGw9bmV3IG4oXyx0KTtyZXR1cm4gbC5sZXhlcj0kLGx9O2Z1bmN0aW9uIHMoKXt0aGlzLnJlc2V0KCIiKX1zLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih5LHQpe3RoaXMuYnVmZmVyPXksdGhpcy5pbmRleD0wLHRoaXMubGluZT10P3QubGluZToxLHRoaXMubGFzdExpbmVCcmVhaz10Py10LmNvbDowfSxzLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5pbmRleDx0aGlzLmJ1ZmZlci5sZW5ndGgpe3ZhciB5PXRoaXMuYnVmZmVyW3RoaXMuaW5kZXgrK107cmV0dXJuIHk9PT1gCmAmJih0aGlzLmxpbmUrPTEsdGhpcy5sYXN0TGluZUJyZWFrPXRoaXMuaW5kZXgpLHt2YWx1ZTp5fX19LHMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57bGluZTp0aGlzLmxpbmUsY29sOnRoaXMuaW5kZXgtdGhpcy5sYXN0TGluZUJyZWFrfX0scy5wcm90b3R5cGUuZm9ybWF0RXJyb3I9ZnVuY3Rpb24oeSx0KXt2YXIgJD10aGlzLmJ1ZmZlcjtpZih0eXBlb2YgJD09InN0cmluZyIpe3ZhciBfPSQuc3BsaXQoYApgKS5zbGljZShNYXRoLm1heCgwLHRoaXMubGluZS01KSx0aGlzLmxpbmUpLGw9JC5pbmRleE9mKGAKYCx0aGlzLmluZGV4KTtsPT09LTEmJihsPSQubGVuZ3RoKTt2YXIgYj10aGlzLmluZGV4LXRoaXMubGFzdExpbmVCcmVhayx3PVN0cmluZyh0aGlzLmxpbmUpLmxlbmd0aDtyZXR1cm4gdCs9IiBhdCBsaW5lICIrdGhpcy5saW5lKyIgY29sICIrYitgOgoKYCx0Kz1fLm1hcChmdW5jdGlvbih4LEEpe3JldHVybiBkKHRoaXMubGluZS1fLmxlbmd0aCtBKzEsdykrIiAiK3h9LHRoaXMpLmpvaW4oYApgKSx0Kz1gCmArZCgiIix3K2IpK2BeCmAsdH1lbHNlIHJldHVybiB0KyIgYXQgaW5kZXggIisodGhpcy5pbmRleC0xKTtmdW5jdGlvbiBkKHgsQSl7dmFyIE49U3RyaW5nKHgpO3JldHVybiBBcnJheShBLU4ubGVuZ3RoKzEpLmpvaW4oIiAiKStOfX07ZnVuY3Rpb24gcih5LHQsJCl7aWYoeSBpbnN0YW5jZW9mIG4pdmFyIF89eSwkPXQ7ZWxzZSB2YXIgXz1uLmZyb21Db21waWxlZCh5LHQpO3RoaXMuZ3JhbW1hcj1fLHRoaXMub3B0aW9ucz17a2VlcEhpc3Rvcnk6ITEsbGV4ZXI6Xy5sZXhlcnx8bmV3IHN9O2Zvcih2YXIgbCBpbiAkfHx7fSl0aGlzLm9wdGlvbnNbbF09JFtsXTt0aGlzLmxleGVyPXRoaXMub3B0aW9ucy5sZXhlcix0aGlzLmxleGVyU3RhdGU9dm9pZCAwO3ZhciBiPW5ldyBpKF8sMCk7dGhpcy50YWJsZT1bYl0sYi53YW50c1tfLnN0YXJ0XT1bXSxiLnByZWRpY3QoXy5zdGFydCksYi5wcm9jZXNzKCksdGhpcy5jdXJyZW50PTB9ci5mYWlsPXt9LHIucHJvdG90eXBlLmZlZWQ9ZnVuY3Rpb24oeSl7dmFyIHQ9dGhpcy5sZXhlcjt0LnJlc2V0KHksdGhpcy5sZXhlclN0YXRlKTtmb3IodmFyICQ7Oyl7dHJ5e2lmKCQ9dC5uZXh0KCksISQpYnJlYWt9Y2F0Y2goQyl7dmFyIHc9bmV3IGkodGhpcy5ncmFtbWFyLHRoaXMuY3VycmVudCsxKTt0aGlzLnRhYmxlLnB1c2godyk7dmFyIF89bmV3IEVycm9yKHRoaXMucmVwb3J0TGV4ZXJFcnJvcihDKSk7dGhyb3cgXy5vZmZzZXQ9dGhpcy5jdXJyZW50LF8udG9rZW49Qy50b2tlbixffXZhciBsPXRoaXMudGFibGVbdGhpcy5jdXJyZW50XTt0aGlzLm9wdGlvbnMua2VlcEhpc3Rvcnl8fGRlbGV0ZSB0aGlzLnRhYmxlW3RoaXMuY3VycmVudC0xXTt2YXIgYj10aGlzLmN1cnJlbnQrMSx3PW5ldyBpKHRoaXMuZ3JhbW1hcixiKTt0aGlzLnRhYmxlLnB1c2godyk7Zm9yKHZhciBkPSQudGV4dCE9PXZvaWQgMD8kLnRleHQ6JC52YWx1ZSx4PXQuY29uc3RydWN0b3I9PT1zPyQudmFsdWU6JCxBPWwuc2Nhbm5hYmxlLE49QS5sZW5ndGg7Ti0tOyl7dmFyIGs9QVtOXSx2PWsucnVsZS5zeW1ib2xzW2suZG90XTtpZih2LnRlc3Q/di50ZXN0KHgpOnYudHlwZT92LnR5cGU9PT0kLnR5cGU6di5saXRlcmFsPT09ZCl7dmFyIEU9ay5uZXh0U3RhdGUoe2RhdGE6eCx0b2tlbjokLGlzVG9rZW46ITAscmVmZXJlbmNlOmItMX0pO3cuc3RhdGVzLnB1c2goRSl9fWlmKHcucHJvY2VzcygpLHcuc3RhdGVzLmxlbmd0aD09PTApe3ZhciBfPW5ldyBFcnJvcih0aGlzLnJlcG9ydEVycm9yKCQpKTt0aHJvdyBfLm9mZnNldD10aGlzLmN1cnJlbnQsXy50b2tlbj0kLF99dGhpcy5vcHRpb25zLmtlZXBIaXN0b3J5JiYobC5sZXhlclN0YXRlPXQuc2F2ZSgpKSx0aGlzLmN1cnJlbnQrK31yZXR1cm4gbCYmKHRoaXMubGV4ZXJTdGF0ZT10LnNhdmUoKSksdGhpcy5yZXN1bHRzPXRoaXMuZmluaXNoKCksdGhpc30sci5wcm90b3R5cGUucmVwb3J0TGV4ZXJFcnJvcj1mdW5jdGlvbih5KXt2YXIgdCwkLF89eS50b2tlbjtyZXR1cm4gXz8odD0iaW5wdXQgIitKU09OLnN0cmluZ2lmeShfLnRleHRbMF0pKyIgKGxleGVyIGVycm9yKSIsJD10aGlzLmxleGVyLmZvcm1hdEVycm9yKF8sIlN5bnRheCBlcnJvciIpKToodD0iaW5wdXQgKGxleGVyIGVycm9yKSIsJD15Lm1lc3NhZ2UpLHRoaXMucmVwb3J0RXJyb3JDb21tb24oJCx0KX0sci5wcm90b3R5cGUucmVwb3J0RXJyb3I9ZnVuY3Rpb24oeSl7dmFyIHQ9KHkudHlwZT95LnR5cGUrIiB0b2tlbjogIjoiIikrSlNPTi5zdHJpbmdpZnkoeS52YWx1ZSE9PXZvaWQgMD95LnZhbHVlOnkpLCQ9dGhpcy5sZXhlci5mb3JtYXRFcnJvcih5LCJTeW50YXggZXJyb3IiKTtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvckNvbW1vbigkLHQpfS
14xyLnByb3RvdHlwZS5yZXBvcnRFcnJvckNvbW1vbj1mdW5jdGlvbih5LHQpe3ZhciAkPVtdOyQucHVzaCh5KTt2YXIgXz10aGlzLnRhYmxlLmxlbmd0aC0yLGw9dGhpcy50YWJsZVtfXSxiPWwuc3RhdGVzLmZpbHRlcihmdW5jdGlvbihkKXt2YXIgeD1kLnJ1bGUuc3ltYm9sc1tkLmRvdF07cmV0dXJuIHgmJnR5cGVvZiB4IT0ic3RyaW5nIn0pO2lmKGIubGVuZ3RoPT09MCkkLnB1c2goIlVuZXhwZWN0ZWQgIit0K2AuIEkgZGlkIG5vdCBleHBlY3QgYW55IG1vcmUgaW5wdXQuIEhlcmUgaXMgdGhlIHN0YXRlIG9mIG15IHBhcnNlIHRhYmxlOgpgKSx0aGlzLmRpc3BsYXlTdGF0ZVN0YWNrKGwuc3RhdGVzLCQpO2Vsc2V7JC5wdXNoKCJVbmV4cGVjdGVkICIrdCtgLiBJbnN0ZWFkLCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgpgKTt2YXIgdz1iLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5idWlsZEZpcnN0U3RhdGVTdGFjayhkLFtdKXx8W2RdfSx0aGlzKTt3LmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIHg9ZFswXSxBPXgucnVsZS5zeW1ib2xzW3guZG90XSxOPXRoaXMuZ2V0U3ltYm9sRGlzcGxheShBKTskLnB1c2goIkEgIitOKyIgYmFzZWQgb246IiksdGhpcy5kaXNwbGF5U3RhdGVTdGFjayhkLCQpfSx0aGlzKX1yZXR1cm4gJC5wdXNoKCIiKSwkLmpvaW4oYApgKX0sci5wcm90b3R5cGUuZGlzcGxheVN0YXRlU3RhY2s9ZnVuY3Rpb24oeSx0KXtmb3IodmFyICQsXz0wLGw9MDtsPHkubGVuZ3RoO2wrKyl7dmFyIGI9eVtsXSx3PWIucnVsZS50b1N0cmluZyhiLmRvdCk7dz09PSQ/XysrOihfPjAmJnQucHVzaCgiICAgIF4gIitfKyIgbW9yZSBsaW5lcyBpZGVudGljYWwgdG8gdGhpcyIpLF89MCx0LnB1c2goIiAgICAiK3cpKSwkPXd9fSxyLnByb3RvdHlwZS5nZXRTeW1ib2xEaXNwbGF5PWZ1bmN0aW9uKHkpe3JldHVybiBtKHkpfSxyLnByb3RvdHlwZS5idWlsZEZpcnN0U3RhdGVTdGFjaz1mdW5jdGlvbih5LHQpe2lmKHQuaW5kZXhPZih5KSE9PS0xKXJldHVybiBudWxsO2lmKHkud2FudGVkQnkubGVuZ3RoPT09MClyZXR1cm5beV07dmFyICQ9eS53YW50ZWRCeVswXSxfPVt5XS5jb25jYXQodCksbD10aGlzLmJ1aWxkRmlyc3RTdGF0ZVN0YWNrKCQsXyk7cmV0dXJuIGw9PT1udWxsP251bGw6W3ldLmNvbmNhdChsKX0sci5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3ZhciB5PXRoaXMudGFibGVbdGhpcy5jdXJyZW50XTtyZXR1cm4geS5sZXhlclN0YXRlPXRoaXMubGV4ZXJTdGF0ZSx5fSxyLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHkpe3ZhciB0PXkuaW5kZXg7dGhpcy5jdXJyZW50PXQsdGhpcy50YWJsZVt0XT15LHRoaXMudGFibGUuc3BsaWNlKHQrMSksdGhpcy5sZXhlclN0YXRlPXkubGV4ZXJTdGF0ZSx0aGlzLnJlc3VsdHM9dGhpcy5maW5pc2goKX0sci5wcm90b3R5cGUucmV3aW5kPWZ1bmN0aW9uKHkpe2lmKCF0aGlzLm9wdGlvbnMua2VlcEhpc3RvcnkpdGhyb3cgbmV3IEVycm9yKCJzZXQgb3B0aW9uIGBrZWVwSGlzdG9yeWAgdG8gZW5hYmxlIHJld2luZGluZyIpO3RoaXMucmVzdG9yZSh0aGlzLnRhYmxlW3ldKX0sci5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7dmFyIHk9W10sdD10aGlzLmdyYW1tYXIuc3RhcnQsJD10aGlzLnRhYmxlW3RoaXMudGFibGUubGVuZ3RoLTFdO3JldHVybiAkLnN0YXRlcy5mb3JFYWNoKGZ1bmN0aW9uKF8pe18ucnVsZS5uYW1lPT09dCYmXy5kb3Q9PT1fLnJ1bGUuc3ltYm9scy5sZW5ndGgmJl8ucmVmZXJlbmNlPT09MCYmXy5kYXRhIT09ci5mYWlsJiZ5LnB1c2goXyl9KSx5Lm1hcChmdW5jdGlvbihfKXtyZXR1cm4gXy5kYXRhfSl9O2Z1bmN0aW9uIG0oeSl7dmFyIHQ9dHlwZW9mIHk7aWYodD09PSJzdHJpbmciKXJldHVybiB5O2lmKHQ9PT0ib2JqZWN0Iil7aWYoeS5saXRlcmFsKXJldHVybiBKU09OLnN0cmluZ2lmeSh5LmxpdGVyYWwpO2lmKHkgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuImNoYXJhY3RlciBtYXRjaGluZyAiK3k7aWYoeS50eXBlKXJldHVybi
14B5LnR5cGUrIiB0b2tlbiI7aWYoeS50ZXN0KXJldHVybiJ0b2tlbiBtYXRjaGluZyAiK1N0cmluZyh5LnRlc3QpO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBzeW1ib2wgdHlwZTogIit5KX19ZnVuY3Rpb24gaCh5KXt2YXIgdD10eXBlb2YgeTtpZih0PT09InN0cmluZyIpcmV0dXJuIHk7aWYodD09PSJvYmplY3QiKXtpZih5LmxpdGVyYWwpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHkubGl0ZXJhbCk7aWYoeSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4geS50b1N0cmluZygpO2lmKHkudHlwZSlyZXR1cm4iJSIreS50eXBlO2lmKHkudGVzdClyZXR1cm4iPCIrU3RyaW5nKHkudGVzdCkrIj4iO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBzeW1ib2wgdHlwZTogIit5KX19cmV0dXJue1BhcnNlcjpyLEdyYW1tYXI6bixSdWxlOmN9fSl9KENlKSksQ2UuZXhwb3J0c30oZnVuY3Rpb24ocCl7KGZ1bmN0aW9uKGMsbyl7Zm9yKHZhciBpIGluIG8pY1tpXT1vW2ldfSkocCxmdW5jdGlvbihjKXt2YXIgbz17fTtmdW5jdGlvbiBpKG4pe2lmKG9bbl0pcmV0dXJuIG9bbl0uZXhwb3J0czt2YXIgcz1vW25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gY1tuXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyxpKSxzLmw9ITAscy5leHBvcnRzfXJldHVybiBpLm09YyxpLmM9byxpLmQ9ZnVuY3Rpb24obixzLHIpe2kubyhuLHMpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixzLHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LGkucj1mdW5jdGlvbihuKXt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxpLnQ9ZnVuY3Rpb24obixzKXtpZihzJjEmJihuPWkobikpLHMmOHx8cyY0JiZ0eXBlb2Ygbj09Im9iamVjdCImJm4mJm4uX19lc01vZHVsZSlyZXR1cm4gbjt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGkucihyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6bn0pLHMmMiYmdHlwZW9mIG4hPSJzdHJpbmciKWZvcih2YXIgbSBpbiBuKWkuZChyLG0sKGZ1bmN0aW9uKGgpe3JldHVybiBuW2hdfSkuYmluZChudWxsLG0pKTtyZXR1cm4gcn0saS5uPWZ1bmN0aW9uKG4pe3ZhciBzPW4mJm4uX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIG59O3JldHVybiBpLmQocywiYSIscyksc30saS5vPWZ1bmN0aW9uKG4scyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHMpfSxpLnA9IiIsaShpLnM9Nyl9KFtmdW5jdGlvbihjLG8pe2MuZXhwb3J0cz1TcygpfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8udW5ib3g9by5kb3VibGVRdW90ZWQ9by5ib3g9by50cmFjaz1vLnRyYWNraW5nPW8udHJhY2tpbmdDb21tZW50cz1vLmxleGVyQW55PW8ubGV4ZXI9dm9pZCAwO2NvbnN0IG49aSgwKSxzPWkoMykscj17fTtmb3IoY29uc3QgdiBvZiBzLnNxbEtleXdvcmRzKXJbImt3XyIrdi50b0xvd2VyQ2FzZSgpXT12O2NvbnN0IG09dj0+e2NvbnN0IEU9KDAsbi5rZXl3b3Jkcykodik7cmV0dXJuIEM9PkUoQy50b1VwcGVyQ2FzZSgpKX07by5sZXhlcj0oMCxuLmNvbXBpbGUpKHt3b3JkOnttYXRjaDovW2VFXSg/IScpW0EtWmEtejAtOV9dKnxbYS1kZi16QS1ERi1aX11bQS1aYS16MC05X10qLyx0eXBlOm0ociksdmFsdWU6dj0+di50b0xvd2VyQ2FzZSgpfSx3b3JkUXVvdGVkOnttYXRjaDovIig/OlteIlwqXXwiIikrIi8sdHlwZTooKT0+InF1b3RlZF93b3JkIix2YWx1ZTp2PT52LnN1YnN0cmluZygxLHYubGVuZ3RoLTEpfSxzdHJpbmc6e21hdGNoOi8nKD86W14nXXxcJ1wnKSonLyx2YWx1ZTp2PT52LnN1YnN0cmluZygxLHYubGVuZ3RoLTEpLnJlcGxhY2UoLycnL2csIiciKX0sZVN0cmluZzp7bWF0Y2g6L1xiKD86ZXxFKScoPzpbXidcXF18W1xyXG5cc118KD86XFxccyl8KD86XFxcbil8KD86XFwuKXwoPzpcJ1wnKSkrJy8sdmFsdWU6dj0+di5zdWJzdHJpbmcoMix2Lmxlbmd0aC0xKS5yZXBsYWNlKC8nJy9nLCInIikucmVwbGFjZSgvXFwoW1xzXG5dKS9nLChFLEMpPT5DKS5yZXBsYWNlKC9cXC4vZyxFPT5KU09OLnBhcnNlKCciJytFKyciJykpfSxxcGFyYW06e21hdGNoOi9cJFxkKy99LGNvbW1lbnRMaW5lOi9cLVwtLio/JFtcc1xyXG5dKi8sY29tbWVudEZ1bGxPcGVuOi9cL1wqLyxjb21tZW50RnVsbENsb3NlOi9cKlwvW1xzXHJcbl0qLyxzdGFyOiIqIixjb21tYToiLCIsc3BhY2U6e21hdGNoOi9bXHNcdFxuXHZcZlxyXSsvLGxpbmVCcmVha3M6ITB9LGludDovXC0/XGQrKD8hW1wuXGRdKS8sZmxvYXQ6L1wtPyg/Oig/OlxkKlwuXGQrKXwoPzpcZCtcLlxkKikpLyxscGFyZW46IigiLHJwYXJlbjoiKSIsbGJyYWNrZXQ6IlsiLHJicmFja2V0OiJdIixzZW1pY29sb246IjsiLGRvdDovXC4oPyFcZCkvLG9wX2Nhc3Q6Ijo6IixvcF9jb2xvbjoiOiIsb3BfcGx1czoiKyIsb3BfZXE6Ij0iLG9wX25lcTp7bWF0Y2g6Lyg/OiE9KXwoPzpcPFw+KS8sdmFsdWU6KCk9PiIhPSJ9LG9wX21lbWJlcnRleHQ6Ii0+PiIsb3BfbWVtYmVyOiItPiIsb3BfbWludXM6Ii0iLG9wX2RpdjovXC8vLG9wX25vdF9pbGlrZTovXCF+flwqLyxvcF9ub3RfbGlrZTovXCF+fi8sb3BfaWxpa2U6L35+XCovLG9wX2xpa2U6L35+LyxvcF9tb2Q6IiUiLG9wX2V4cDoiXiIsb3BfYWRkaXRpdmU6e21hdGNoOlsifHwiLCItIiwiIy0iLCImJiJdfSxvcF9jb21wYXJlOnttYXRjaDpbIj4iLCI+PSIsIjwiLCI8PSIsIkA+IiwiPEAiLCI/IiwiP3wiLCI/JiIsIiM+PiIsIj4+IiwiPDwiLCJ+IiwifioiLCIhfiIsIiF+KiIsIkBAIl19LG9wc19vdGhlcnM6e21hdGNoOlsifCIsIiYiLCJeIiwiIyJdfSxjb2RlYmxvY2s6e21hdGNoOi9cJFwkKD86LnxbXHNcdFxuXHZcZlxyXSkqP1wkXCQvcyxsaW5lQnJlYWtzOiEwLHZhbHVlOnY9PnYuc3Vic3RyaW5nKDIsdi5sZW5ndGgtMil9fSksby5sZXhlci5uZXh0PSh2PT4oKT0+e2xldCBFLEM9bnVsbDtmb3IoO0U9di5jYWxsKG8ubGV4ZXIpOyl7aWYoRS50eXBlPT09ImNvbW1lbnRGdWxsT3BlbiIpe2lmKEM9PT1udWxsKXtDPXtuZXN0ZWQ6MCxvZmZzZXQ6RS5vZmZzZXQsdGV4dDpFLnRleHR9O2NvbnRpbnVlfUMubmVzdGVkKyt9aWYoQyE9bnVsbCl7aWYoQy50ZXh0Kz1FLnRleHQsRS50eXBlPT09ImNvbW1lbnRGdWxsQ2xvc2UiKXtpZihDLm5lc3RlZD09PTApe2g9PW51bGx8fGgucHVzaCh5KEMpKSxDPW51bGw7Y29udGludWV9Qy5uZXN0ZWQtLX1jb250aW51ZX1pZihFLnR5cGUhPT0ic3BhY2UiKXtpZihFLnR5cGU9PT0iY29tbWVudExpbmUiKXtoPT1udWxsfHxoLnB1c2goeShFKSk7Y29udGludWV9YnJlYWt9fWlmKCQmJkUpe2NvbnN0IHE9RS5vZmZzZXQsZT17c3RhcnQ6cSxlbmQ6cStFLnRleHQubGVuZ3RofTtFLl9sb2NhdGlvbj1lfXJldHVybi
14BFfSkoby5sZXhlci5uZXh0KSxvLmxleGVyQW55PW8ubGV4ZXI7bGV0IGg9bnVsbDtjb25zdCB5PSh7b2Zmc2V0OnYsdGV4dDpFfSk9Pih7X2xvY2F0aW9uOntzdGFydDp2LGVuZDp2K0UubGVuZ3RofSxjb21tZW50OkV9KTtmdW5jdGlvbiB0KHYpe2lmKGgpdGhyb3cgbmV3IEVycm9yKCJXQVQgPyBSZWN1cnNpdmUgY29tbWVudHMgdHJhY2tpbmcg8J+klPCfpKggPyIpO3RyeXtoPVtdO2NvbnN0IEU9digpO3JldHVybntjb21tZW50czpoLGFzdDpFfX1maW5hbGx5e2g9bnVsbH19by50cmFja2luZ0NvbW1lbnRzPXQ7bGV0ICQ9ITE7ZnVuY3Rpb24gXyh2KXtpZigkKXJldHVybiB2KCk7dHJ5e3JldHVybiAkPSEwLHYoKX1maW5hbGx5eyQ9ITF9fW8udHJhY2tpbmc9XztmdW5jdGlvbiBsKHYsRSl7aWYoISR8fCFFfHx0eXBlb2YgRSE9Im9iamVjdCIpcmV0dXJuIEU7Y29uc3QgQz1rKHYsITApLHE9ayh2LCExKTtpZighQ3x8IXEpcmV0dXJuIEU7aWYoQz09PXEpRS5fbG9jYXRpb249QztlbHNle2NvbnN0IGU9e3N0YXJ0OkMuc3RhcnQsZW5kOnEuZW5kfTtFLl9sb2NhdGlvbj1lfXJldHVybiBFfW8udHJhY2s9bDtjb25zdCBiPVN5bWJvbCgiX2xpdGVyYWwiKSx3PVN5bWJvbCgiX2RvdWJsZXF1b3RlZCIpO2Z1bmN0aW9uIGQodixFLEMpe3JldHVybiEkJiYhQz9FOmwodix7W2JdOkUsW3ddOkN9KX1vLmJveD1kO2Z1bmN0aW9uIHgodil7cmV0dXJuIEFycmF5LmlzQXJyYXkodikmJnYubGVuZ3RoPT09MSYmKHY9eCh2WzBdKSksQXJyYXkuaXNBcnJheSh2KSYmIXYubGVuZ3RoP251bGw6dn1mdW5jdGlvbiBBKHYpe2NvbnN0IEU9eCh2KTtpZih0eXBlb2Ygdj09Im9iamVjdCImJihFIT1udWxsJiZFW3ddKSlyZXR1cm57ZG91YmxlUXVvdGVkOiEwfX1vLmRvdWJsZVF1b3RlZD1BO2Z1bmN0aW9uIE4odil7dmFyIEU7cmV0dXJuIHR5cGVvZiB2PT0ib2JqZWN0IiYmKEU9dj09bnVsbD92b2lkIDA6dltiXSkhPT1udWxsJiZFIT09dm9pZCAwP0U6dn1vLnVuYm94PU47ZnVuY3Rpb24gayh2LEUpe2lmKCF2KXJldHVybiBudWxsO2lmKEFycmF
145LmlzQXJyYXkodikpe2NvbnN0IEM9RT8xOi0xO2ZvcihsZXQgcT1FPzA6di5sZW5ndGgtMTtxPj0wJiZxPHYubGVuZ3RoO3ErPUMpe2NvbnN0IGU9ayh2W3FdLEUpO2lmKGUpcmV0dXJuIGV9cmV0dXJuIG51bGx9cmV0dXJuIHR5cGVvZiB2IT0ib2JqZWN0Ij9udWxsOnYuX2xvY2F0aW9ufX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLkFzdERlZmF1bHRNYXBwZXI9by5hcnJheU5pbE1hcD1vLmFzc2lnbkNoYW5nZWQ9by5hc3RNYXBwZXI9dm9pZCAwO2NvbnN0IG49aSg2KTtmdW5jdGlvbiBzKF8pe2NvbnN0IGw9bmV3IHk7cmV0dXJuIGwud3JhcHBlZD1fKGwpLGx9by5hc3RNYXBwZXI9cztmdW5jdGlvbiByKF8sbCl7aWYoIV8pcmV0dXJuIF87bGV0IGI9ITE7Zm9yKGNvbnN0IHcgb2YgT2JqZWN0LmtleXMobCkpaWYoX1t3XSE9PWxbd10pe2I9ITA7YnJlYWt9cmV0dXJuIGI/KDAsbi50cmltTnVsbGlzaCkoey4uLl8sLi4ubH0sMCk6X31vLmFzc2lnbkNoYW5nZWQ9cjtmdW5jdGlvbiBtKF8sbCl7aWYoIShfIT1udWxsJiZfLmxlbmd0aCkpcmV0dXJuIF87bGV0IGI9ITEsdz1fO2ZvcihsZXQgZD0wO2Q8Xy5sZW5ndGg7ZCsrKXtjb25zdCB4PV9bZF0sQT1sKHgpOyFiJiYoIUF8fEEhPT14KSYmKGI9ITAsdz1fLnNsaWNlKDAsZCkpLEEmJmImJncucHVzaChBKX1yZXR1cm4gd31vLmFycmF5TmlsTWFwPW07ZnVuY3Rpb24gaChfKXtzd2l0Y2goXz09bnVsbD92b2lkIDA6Xy50eXBlKXtjYXNlInNlbGVjdCI6Y2FzZSJkZWxldGUiOmNhc2UiaW5zZXJ0IjpjYXNlInVwZGF0ZSI6Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOmNhc2Uid2l0aCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19Y2xhc3MgeXtzdXBlcigpe3JldHVybiBuZXcgJCh0aGlzKX1zdGF0ZW1lbnQobCl7c3dpdGNoKGwudHlwZSl7Y2FzZSJhbHRlciB0YWJsZSI6cmV0dXJuIHRoaXMuYWx0ZXJUYWJsZShsKTtjYXNlImFsdGVyIGluZGV4IjpyZXR1cm4gdGhpcy5hbHRlckluZGV4KGwpO2Nhc2UiY29tbWl0IjpjYXNlInN0YXJ0IHRyYW5zYWN0aW9uIjpjYXNlInJvbGxiYWNrIjpyZXR1cm4gdGhpcy50cmFuc2FjdGlvbihsKTtjYXNlImNyZWF0ZSBpbmRleCI6cmV0dXJuIHRoaXMuY3JlYXRlSW5kZXgobCk7Y2FzZSJjcmVhdGUgdGFibGUiOnJldHVybiB0aGlzLmNyZWF0ZVRhYmxlKGwpO2Nhc2UidHJ1bmNhdGUgdGFibGUiOnJldHVybiB0aGlzLnRydW5jYXRlVGFibGUobCk7Y2FzZSJkZWxldGUiOnJldHVybiB0aGlzLmRlbGV0ZShsKTtjYXNlImluc2VydCI6cmV0dXJuIHRoaXMuaW5zZXJ0KGwpO2Nhc2Uid2l0aCI6cmV0dXJuIHRoaXMud2l0aChsKTtjYXNlIndpdGggcmVjdXJzaXZlIjpyZXR1cm4gdGhpcy53aXRoUmVjdXJzaXZlKGwpO2Nhc2Uic2VsZWN0IjpyZXR1cm4gdGhpcy5zZWxlY3Rpb24obCk7Y2FzZSJ1cGRhdGUiOnJldHVybiB0aGlzLnVwZGF0ZShsKTtjYXNlImNyZWF0ZSBleHRlbnNpb24iOnJldHVybiB0aGlzLmNyZWF0ZUV4dGVuc2lvbihsKTtjYXNlInRhYmxlc3BhY2UiOnJldHVybiB0aGlzLnRhYmxlc3BhY2UobCk7Y2FzZSJzZXQiOnJldHVybiB0aGlzLnNldEdsb2JhbChsKTtjYXNlInNldCB0aW1lem9uZSI6cmV0dXJuIHRoaXMuc2V0VGltZXpvbmUobCk7Y2FzZSJzZXQgbmFtZXMiOnJldHVybiB0aGlzLnNldE5hbWVzKGwpO2Nhc2UiY3JlYXRlIHNlcXVlbmNlIjpyZXR1cm4gdGhpcy5jcmVhdGVTZXF1ZW5jZShsKTtjYXNlImFsdGVyIHNlcXVlbmNlIjpyZXR1cm4gdGhpcy5hbHRlclNlcXVlbmNlKGwpO2Nhc2UiYmVnaW4iOnJldHVybiB0aGlzLmJlZ2luKGwpO2Nhc2UiZHJvcCB0YWJsZSI6Y2FzZSJkcm9wIGluZGV4IjpjYXNlImRyb3Agc2VxdWVuY2UiOmNhc2UiZHJvcCB0eXBlIjpjYXNlImRyb3AgdHJpZ2dlciI6cmV0dXJuIHRoaXMuZHJvcChsKTtjYXNlImNyZWF0ZSBlbnVtIjpyZXR1cm4gdGhpcy5jcmVhdGVFbnVtKGwpO2Nhc2UiY3JlYXRlIGNvbXBvc2l0ZSB0eXBlIjpyZXR1cm4gdGhpcy5jcmVhdGVDb21wb3NpdGVUeXBlKGwpO2Nhc2UidW5pb24iOmNhc2UidW5pb24gYWxsIjpyZXR1cm4gdGhpcy51bmlvbihsKTtjYXNlInNob3ciOnJldHVybiB0aGlzLnNob3cobCk7Y2FzZSJwcmVwYXJlIjpyZXR1cm4gdGhpcy5wcmVwYXJlKGwpO2Nhc2UiZGVhbGxvY2F0ZSI6cmV0dXJuIHRoaXMuZGVhbGxvY2F0ZShsKTtjYXNlImNyZWF0ZSB2aWV3IjpyZXR1cm4gdGhpcy5jcmVhdGVWaWV3KGwpO2Nhc2UiY3JlYXRlIG1hdGVyaWFsaXplZCB2aWV3IjpyZXR1cm4gdGhpcy5jcmVhdGVNYXRlcmlhbGl6ZWRWaWV3KGwpO2Nhc2UicmVmcmVzaCBtYXRlcmlhbGl6ZWQgdmlldyI6cmV0dXJuIHRoaXMucmVmcmVzaE1hdGVyaWFsaXplZFZpZXcobCk7Y2FzZSJjcmVhdGUgc2NoZW1hIjpyZXR1cm4gdGhpcy5jcmVhdGVTY2hlbWEobCk7Y2FzZSJyYWlzZSI6cmV0dXJuIHRoaXMucmFpc2UobCk7Y2FzZSJjb21tZW50IjpyZXR1cm4gdGhpcy5jb21tZW50KGwpO2Nhc2UiZG8iOnJldHVybiB0aGlzLmRvKGwpO2Nhc2UiY3JlYXRlIGZ1bmN0aW9uIjpyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvbihsKTtjYXNlImRyb3AgZnVuY3Rpb24iOnJldHVybiB0aGlzLmRyb3BGdW5jdGlvbihsKTtjYXNlInZhbHVlcyI6cmV0dXJuIHRoaXMudmFsdWVzKGwpO2RlZmF1bHQ6dGhyb3cgbi5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fWNvbW1lbnQobCl7cmV0dXJuIGx9Y3JlYXRlVmlldyhsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwucXVlcnkpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IHc9dGhpcy50YWJsZVJlZihsLm5hbWUpO3JldHVybiB3P3IobCx7cXVlcnk6YixuYW1lOnd9KTpudWxsfWNyZWF0ZU1hdGVyaWFsaXplZFZpZXcobCl7Y29uc3QgYj10aGlzLnNlbGVjdChsLnF1ZXJ5KTtpZighYilyZXR1cm4gbnVsbDtjb25zdCB3PXRoaXMudGFibGVSZWYobC5uYW1lKTtyZXR1cm4gdz9yKGwse3F1ZXJ5OmIsbmFtZTp3fSk6bnVsbH1yZWZyZXNoTWF0ZXJpYWxpemVkVmlldyhsKXtyZXR1cm4gbH1kbyhsKXtyZXR1cm4gbH1jcmVhdGVGdW5jdGlvbihsKXtjb25zdCBiPW0obC5hcmd1bWVudHMsZD0+e2NvbnN0IHg9dGhpcy5kYXRhV
14HlwZShkLnR5cGUpO3JldHVybiByKGQse3R5cGU6eH0pfSk7bGV0IHc7aWYobC5yZXR1cm5zKXN3aXRjaChsLnJldHVybnMua2luZCl7Y2FzZSJ0YWJsZSI6dz1yKGwucmV0dXJucyx7Y29sdW1uczptKGwucmV0dXJucy5jb2x1bW5zLGQ9Pntjb25zdCB4PXRoaXMuZGF0YVR5cGUoZC50eXBlKTtyZXR1cm4geCYmcihkLHt0eXBlOnh9KX0pfSk7YnJlYWs7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOmNhc2UiYXJyYXkiOnc9dGhpcy5kYXRhVHlwZShsLnJldHVybnMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbi5Ob3RTdXBwb3J0ZWQubmV2ZXIobC5yZXR1cm5zKX1yZXR1cm4gcihsLHtyZXR1cm5zOncsYXJndW1lbnRzOmJ9KX1kcm9wRnVuY3Rpb24obCl7Y29uc3QgYj1tKGwuYXJndW1lbnRzLHc9Pntjb25zdCBkPXRoaXMuZGF0YVR5cGUody50eXBlKTtyZXR1cm4gcih3LHt0eXBlOmR9KX0pO3JldHVybiByKGwse2FyZ3VtZW50czpifSl9c2hvdyhsKXtyZXR1cm4gbH1jcmVhdGVFbnVtKGwpe3JldHVybiBsfWNyZWF0ZUNvbXBvc2l0ZVR5cGUobCl7Y29uc3QgYj1tKGwuYXR0cmlidXRlcyx3PT5yKHcse2RhdGFUeXBlOnRoaXMuZGF0YVR5cGUody5kYXRhVHlwZSl9KSk7cmV0dXJuIHIobCx7YXR0cmlidXRlczpifSl9ZHJvcChsKXtyZXR1cm4gbH1hbHRlclNlcXVlbmNlKGwpe3JldHVybiBsLmNoYW5nZS50eXBlPT09InNldCBvcHRpb25zIiYmbC5jaGFuZ2UuYXMmJnRoaXMuZGF0YVR5cGUobC5jaGFuZ2UuYXMpLGx9YmVnaW4obCl7cmV0dXJuIGx9Y3JlYXRlU2VxdWVuY2UobCl7cmV0dXJuIGwub3B0aW9ucy5hcyYmdGhpcy5kYXRhVHlwZShsLm9wdGlvbnMuYXMpLGx9dGFibGVzcGFjZShsKXtyZXR1cm4gbH1zZXRHbG9iYWwobCl7cmV0dXJuIGx9c2V0VGltZXpvbmUobCl7cmV0dXJuIGx9c2V0TmFtZXMobCl7cmV0dXJuIGx9dXBkYXRlKGwpe2lmKCFsKXJldHVybiBsO2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLnRhYmxlKTtpZighYilyZXR1cm4gbnVsbDtjb25zdCB3PWwuZnJvbSYmdGhpcy5mcm9tKGwuZnJvbSksZD1sLndoZXJlJiZ0aGlzLmV4cHIobC53aGVyZSkseD1tKGwuc2V0cyxOPT50aGlzLnNldChOKSk7aWYoISh4IT1udWxsJiZ4Lmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgQT1tKGwucmV0dXJuaW5nLE49PnRoaXMuc2VsZWN0aW9uQ29sdW1uKE4pKTtyZXR1cm4gcihsLHt0YWJsZTpiLHdoZXJlOmQsc2V0czp4LGZyb206dyxyZXR1cm5pbmc6QX0pfWluc2VydChsKXt2YXIgYix3O2NvbnN0IGQ9dGhpcy50YWJsZVJlZihsLmludG8pO2lmKCFkKXJldHVybiBudWxsO2NvbnN0IHg9bC5pbnNlcnQmJnRoaXMuc2VsZWN0KGwuaW5zZXJ0KTtpZigheClyZXR1cm4gbnVsbDtjb25zdCBBPW0obC5yZXR1cm5pbmcsdj0+dGhpcy5zZWxlY3Rpb25Db2x1bW4odikpO2xldCBOPShiPWwub25Db25mbGljdCk9PT1udWxsfHxiPT09dm9pZCAwP3ZvaWQgMDpiLm9uO3N3aXRjaChOPT1udWxsP3ZvaWQgMDpOLnR5cGUpe2Nhc2Uib24gY29uc3RyYWludCI6YnJlYWs7Y2FzZSJvbiBleHByIjpOPXIoTix7ZXhwcnM6bShOLmV4cHJzLHY9PnRoaXMuZXhwcih2KSl9KTticmVhaztjYXNlIG51bGw6Y2FzZSB2b2lkIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuLk5vdFN1cHBvcnRlZC5uZXZlcihOKX1sZXQgaz0odz1sLm9uQ29uZmxpY3QpPT09bnVsbHx8dz09PXZvaWQgMD92b2lkIDA6dy5kbztpZihrJiZrIT09ImRvIG5vdGhpbmciKXtjb25zdCB2PW0oay5zZXRzLEU9PnRoaXMuc2V0KEUpKTt2IT1udWxsJiZ2Lmxlbmd0aD9rLnNldHMhPT12JiYoaz17c2V0czp2fSk6az0iZG8gbm90aGluZyJ9cmV0dXJuIHIobCx7aW50bzpkLGluc2VydDp4LHJldHVybmluZzpBLG9uQ29uZmxpY3Q6az9yKGwub25Db25mbGljdCx7ZG86ayxvbjpOfSk6bC5vbkNvbmZsaWN0fSl9cmFpc2UobCl7cmV0dXJuIHIobCx7Zm9ybWF0RXhwcnM6bC5mb3JtYXRFeHBycyYmbShsLmZvcm1hdEV4cHJzLGI9PnRoaXMuZXhwcihiKSksdXNpbmc6bC51c2luZyYmbShsLnVzaW5nLGI9PnIoYix7dmFsdWU6dGhpcy5leHByKGIudmFsdWUpfSkpfSl9ZGVsZXRlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLmZyb20pO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IHc9bC53aGVyZSYmdGhpcy5leHByKGwud2hlcmUpLGQ9bShsLnJldHVybmluZyx4PT50aGlzLnNlbGVjdGlvbkNvbHVtbih4KSk7cmV0dXJuIHIobCx7d2hlcmU6dyxyZXR1cm5pbmc6ZCxmcm9tOmJ9KX1jcmVhdGVTY2hlbWEobCl7cmV0dXJuIGx9Y3JlYXRlVGFibGUobCl7Y29uc3QgYj1tKGwuY29sdW1ucyx3PT57c3dpdGNoKHcua2luZCl7Y2FzZSJjb2x1bW4iOnJldHVybiB0aGlzLmNyZWF0ZUNvbHVtbih3KTtjYXNlImxpa2UgdGFibGUiOnJldHVybiB0aGlzLmxpa2VUYWJsZSh3KTtkZWZhdWx0OnRocm93IG4uTm90U3VwcG9ydGVkLm5ldmVyKHcpfX0pO3JldHVybiBiIT1udWxsJiZiLmxlbmd0aD9yKGwse2NvbHVtbnM6Yn0pOm51bGx9bGlrZVRhYmxlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLmxpa2UpO3JldHVybiBiP3IobCx7bGlrZTpifSk6bnVsbH10cnVuY2F0ZVRhYmxlKGwpe3JldHVybiBsfWNvbnN0cmFpbnQobCl7c3dpdGNoKGwudHlwZSl7Y2FzZSJub3QgbnVsbCI6Y2FzZSJudWxsIjpjYXNlInByaW1hcnkga2V5IjpjYXNlInVuaXF1ZSI6Y2FzZSJhZGQgZ2VuZXJhdGVkIjpyZXR1cm4gbDtjYXNlImRlZmF1bHQiOntjb25zdCBiPXRoaXMuZXhwcihsLmRlZmF1bHQpO3JldHVybiBiP3IobCx7ZGVmYXVsdDpifSk6bnVsbH1jYXNlImNoZWNrIjp7Y29uc3QgYj10aGlzLmV4cHIobC5leHByKTtyZXR1cm4gYj9yKGwse2V4cHI6Yn0pOm51bGx9Y2FzZSJyZWZlcmVuY2UiOntjb25zdCBiPXRoaXMudGFibGVSZWYobC5mb3JlaWduVGFibGUpO3JldHVybiBiP3IobCx7Zm9yZWlnblRhYmxlOmJ9KTpudWxsfWRlZmF1bHQ6dGhyb3cgbi5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fXNldChsKXtjb25zdCBiPXRoaXMuZXhwcihsLnZhbHVlKTtyZXR1cm4gYj9yKGwse3ZhbHVlOmJ9KTpudWxsfWRhdGFUeXBlKGwpe3JldHVybiBsfXRhYmxlUmVmKGwpe3JldHVybiBsfXRyYW5zYWN0aW9uKGwpe3JldHVybiBsfWNyZWF0ZUV4dGVuc2lvbihsKXtyZXR1cm4gbH1jcmVhdGVJbmRleChsKXtjb25zdCBiPW0obC5leHByZXNzaW9ucyx3PT57Y29uc3QgZD10aGlzLmV4cHIody5leHByZXNzaW9uKTtyZXR1cm4gZD09PXcuZXhwcmVzc2lvbj93OmQ/ey4uLncsZXhwcmVzc2lvbjpkfTpudWxsfSk7cmV0dXJuIGIhPW51bGwmJmIubGVuZ3RoP3IobCx7ZXhwcmVzc2lvbnM6Yn0pOm51bGx9cHJlcGFyZShsKXtjb25zdCBiPXRoaXMuc3RhdGVtZW50KGwuc3RhdGVtZW50KTtyZXR1cm4gYj9yKGwse2FyZ3M6bShsLmFyZ3Msdz0+dGhpcy5kYXRhV
14HlwZSh3KSksc3RhdGVtZW50OmJ9KTpudWxsfWRlYWxsb2NhdGUobCl7cmV0dXJuIGx9YWx0ZXJJbmRleChsKXtyZXR1cm4gbH1hbHRlclRhYmxlKGwpe3ZhciBiO2NvbnN0IHc9dGhpcy50YWJsZVJlZihsLnRhYmxlKTtpZighdylyZXR1cm4gbnVsbDtsZXQgZD1bXSx4PSExO2ZvcihsZXQgQT0wO0E8KCgoYj1sLmNoYW5nZXMpPT09bnVsbHx8Yj09PXZvaWQgMD92b2lkIDA6Yi5sZW5ndGgpfHwwKTtBKyspe2NvbnN0IE49bC5jaGFuZ2VzW0FdLGs9dGhpcy50YWJsZUFsdGVyYXRpb24oTixsLnRhYmxlKTt4PXh8fGshPU4sayYmZC5wdXNoKGspfXJldHVybiBkLmxlbmd0aD94P3IobCx7dGFibGU6dyxjaGFuZ2VzOmR9KTpsOm51bGx9dGFibGVBbHRlcmF0aW9uKGwsYil7c3dpdGNoKGwudHlwZSl7Y2FzZSJhZGQgY29sdW1uIjpyZXR1cm4gdGhpcy5hZGRDb2x1bW4obCxiKTtjYXNlImFkZCBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5hZGRDb25zdHJhaW50KGwsYik7Y2FzZSJhbHRlciBjb2x1bW4iOnJldHVybiB0aGlzLmFsdGVyQ29sdW1uKGwsYik7Y2FzZSJyZW5hbWUiOnJldHVybiB0aGlzLnJlbmFtZVRhYmxlKGwsYik7Y2FzZSJyZW5hbWUgY29sdW1uIjpyZXR1cm4gdGhpcy5yZW5hbWVDb2x1bW4obCxiKTtjYXNlInJlbmFtZSBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5yZW5hbWVDb25zdHJhaW50KGwsYik7Y2FzZSJkcm9wIGNvbHVtbiI6cmV0dXJuIHRoaXMuZHJvcENvbHVtbihsLGIpO2Nhc2UiZHJvcCBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5kcm9wQ29uc3RyYWludChsLGIpO2Nhc2Uib3duZXIiOnJldHVybiB0aGlzLnNldFRhYmxlT3duZXIobCxiKTtkZWZhdWx0OnRocm93IG4uTm90U3VwcG9ydGVkLm5ldmVyKGwpfX1kcm9wQ29sdW1uKGwsYil7cmV0dXJuIGx9ZHJvcENvbnN0cmFpbnQobCxiKXtyZXR1cm4gbH1zZXRUYWJsZU93bmVyKGwsYil7cmV0dXJuIGx9cmVuYW1lQ29uc3RyYWludChsLGIpe3JldHVybiBsfXJlbmFtZUNvbHVtbihsLGIpe3JldHVybiBsfXJlbmFtZVRhYmxlKGwsYil7cmV0dXJuIGx9YWx0ZXJDb2x1bW4obCxiKXtsZXQgdztzd2l0Y2gobC5hbHRlci50eXBlKXtjYXNlInNldCBkZWZhdWx0Ijp3PXRoaXMuc2V0Q29sdW1uRGVmYXVsdChsLmFsdGVyLGIsbC5jb2x1bW4pO2JyZWFrO2Nhc2Uic2V0IHR5cGUiOnc9dGhpcy5zZXRDb2x1bW5UeXBlKGwuYWx0ZXIsYixsLmNvbHVtbik7YnJlYWs7Y2FzZSJkcm9wIGRlZmF1bHQiOmNhc2Uic2V0IG5vdCBudWxsIjpjYXNlImRyb3Agbm90IG51bGwiOnc9dGhpcy5hbHRlckNvbHVtblNpbXBsZShsLmFsdGVyLGIsbC5jb2x1bW4pO2JyZWFrO2Nhc2UiYWRkIGdlbmVyYXRlZCI6dz10aGlzLmFsdGVyQ29sdW1uQWRkR2VuZXJhdGVkKGwuYWx0ZXIsYixsLmNvbHVtbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuLk5vdFN1cHBvcnRlZC5uZXZlcihsLmFsdGVyKX1yZXR1cm4gdz9yKGwse2FsdGVyOnd9KTpudWxsfXNldENvbHVtblR5cGUobCxiLHcpe2NvbnN0IGQ9dGhpcy5kYXRhVHlwZShsLmRhdGFUeXBlKTtyZXR1cm4gcihsLHtkYXRhVHlwZTpkfSl9YWx0ZXJDb2x1bW5BZGRHZW5lcmF0ZWQobCxiLHcpe3JldHVybiBsfWFsdGVyQ29sdW1uU2ltcGxlKGwsYix3KXtyZXR1cm4gbH1zZXRDb2x1bW5EZWZhdWx0KGwsYix3KXtjb25zdCBkPXRoaXMuZXhwcihsLmRlZmF1bHQpO3JldHVybiBkP3IobCx7ZGVmYXVsdDpkfSk6bnVsbH1hZGRDb25zdHJhaW50KGwsYil7cmV0dXJuIGx9YWRkQ29sdW1uKGwsYil7Y29uc3Qgdz10aGlzLmNyZWF0ZUNvbHVtbihsLmNvbHVtbik7cmV0dXJuIHc/cihsLHtjb2x1bW46d30pOm51bGx9Y3JlYXRlQ29sdW1uKGwpe3ZhciBiO2NvbnN0IHc9dGhpcy5kYXRhVHlwZShsLmRhdGFUeXBlKTtpZighdylyZXR1cm4gbnVsbDtjb25zdCBkPShiPW0obC5jb25zdHJhaW50cyx4PT50aGlzLmNvbnN0cmFpbnQoeCkpKSE9PW51bGwmJmIhPT12b2lkIDA/Yjp2b2lkIDA7cmV0dXJuIHIobCx7ZGF0YVR5cGU6dyxjb25zdHJhaW50czpkfSl9c2VsZWN0KGwpe3N3aXRjaChsLnR5cGUpe2Nhc2Uic2VsZWN0IjpyZXR1cm4gdGhpcy5zZWxlY3Rpb24obCk7Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOnJldHVybiB0aGlzLnVuaW9uKGwpO2Nhc2Uid2l0aCI6cmV0dXJuIHRoaXMud2l0aChsKTtjYXNlInZhbHVlcyI6cmV0dXJuIHRoaXMudmFsdWVzKGwpO2Nhc2Uid2l0aCByZWN1cnNpdmUiOnJldHVybiB0aGlzLndpdGhSZWN1cnNpdmUobCk7ZGVmYXVsdDp0aHJvdyBuLk5vdFN1cHBvcnRlZC5uZXZlcihsKX19c2VsZWN0aW9uKGwpe3ZhciBiLHc7Y29uc3QgZD1tKGwuZnJvbSxDPT50aGlzLmZyb20oQykpLHg9bShsLmNvbHVtbnMsQz0+dGhpcy5zZWxlY3Rpb25Db2x1bW4oQykpLEE9bC53aGVyZSYmdGhpcy5leHByKGwud2hlcmUpLE49bShsLmdyb3VwQnksQz0+dGhpcy5leHByKEMpKSxrPWwuaGF2aW5nJiZ0aGlzLmV4cHIobC5oYXZpbmcpLHY9dGhpcy5vcmRlckJ5KGwub3JkZXJCeSksRT1yKGwubGltaXQse2xpbWl0OnRoaXMuZXhwcigoYj1sLmxpbWl0KT09PW51bGx8fGI9PT12b2lkIDA/dm9pZCAwOmIubGltaXQpLG9mZnNldDp0aGlzLmV4cHIoKHc9bC5saW1pdCk9PT1udWxsfHx3PT09dm9pZCAwP3ZvaWQgMDp3Lm9mZnNldCl9KTtyZXR1cm4gcihsLHtmcm9tOmQsY29sdW1uczp4LHdoZXJlOkEsZ3JvdXBCeTpOLGhhdmluZzprLG9yZGVyQnk6dixsaW1pdDpFfSl9b3JkZXJCeShsKXtyZXR1cm4gbShsLGI9Pntjb25zdCB3PXRoaXMuZXhwcihiLmJ5KTtyZXR1cm4gdz93PT09Yi5ieT9iOnsuLi5iLGJ5Ond9Om51bGx9KX11bmlvbihsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwubGVmdCksdz10aGlzLnNlbGVjdChsLnJpZ2h0KTtyZXR1cm4hYnx8IXc/Yj8/dzpyKGwse2xlZnQ6YixyaWdodDp3fSl9d2l0aChsKXtjb25zdCBiPW0obC5iaW5kLGQ9Pntjb25zdCB4PXRoaXMuc3RhdGVtZW50KGQuc3RhdGVtZW50KTtyZXR1cm4gaCh4KT9yKGQse3N0YXRlbWVudDp4fSk6bnVsbH0pO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IHc9dGhpcy5zdGF0ZW1lbnQobC5pbik7cmV0dXJuIGgodyk/cihsLHtiaW5kOmIsaW46d30pOm51bGx9d2l0aFJlY3Vyc2l2ZShsKXtjb25zdCBiPXRoaXMudW5pb24obC5iaW5kKTtpZighYnx8Yi50eXBlIT09InVuaW9uIiYmYi50eXBlIT09InVuaW9uIGFsbCIpcmV0dXJuIG51bGw7Y29uc3Qgdz10aGlzLnN0YXRlbWVudChsLmluKTtyZXR1cm4gaCh3KT9yKGwse2JpbmQ6Yixpbjp3fSk6bnVsbH1mcm9tKGwpe3N3aXRjaC
14hsLnR5cGUpe2Nhc2UidGFibGUiOnJldHVybiB0aGlzLmZyb21UYWJsZShsKTtjYXNlInN0YXRlbWVudCI6cmV0dXJuIHRoaXMuZnJvbVN0YXRlbWVudChsKTtjYXNlImNhbGwiOnJldHVybiB0aGlzLmZyb21DYWxsKGwpO2RlZmF1bHQ6dGhyb3cgbi5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fWZyb21DYWxsKGwpe2NvbnN0IGI9dGhpcy5jYWxsKGwpO3JldHVybiFifHxiLnR5cGUhPT0iY2FsbCI/bnVsbDpyKGwsYil9ZnJvbVN0YXRlbWVudChsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwuc3RhdGVtZW50KTtpZighYilyZXR1cm4gbnVsbDtjb25zdCB3PWwuam9pbiYmdGhpcy5qb2luKGwuam9pbik7cmV0dXJuIHIobCx7c3RhdGVtZW50OmIsam9pbjp3fSl9dmFsdWVzKGwpe2NvbnN0IGI9bShsLnZhbHVlcyx3PT5tKHcsZD0+dGhpcy5leHByKGQpKSk7cmV0dXJuIGIhPW51bGwmJmIubGVuZ3RoP3IobCx7dmFsdWVzOmJ9KTpudWxsfWpvaW4obCl7Y29uc3QgYj1sLm9uJiZ0aGlzLmV4cHIobC5vbik7cmV0dXJuIWImJiFsLnVzaW5nP2w6cihsLHtvbjpifSl9ZnJvbVRhYmxlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLm5hbWUpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IHc9bC5qb2luJiZ0aGlzLmpvaW4obC5qb2luKTtyZXR1cm4gcihsLHtuYW1lOmIsam9pbjp3fSl9c2VsZWN0aW9uQ29sdW1uKGwpe2NvbnN0IGI9dGhpcy5leHByKGwuZXhwcik7cmV0dXJuIGI/cihsLHtleHByOmJ9KTpudWxsfWV4cHIobCl7aWYoIWwpcmV0dXJuIGw7c3dpdGNoKGwudHlwZSl7Y2FzZSJiaW5hcnkiOnJldHVybiB0aGlzLmJpbmFyeShsKTtjYXNlInVuYXJ5IjpyZXR1cm4gdGhpcy51bmFyeShsKTtjYXNlInJlZiI6cmV0dXJuIHRoaXMucmVmKGwpO2Nhc2Uic3RyaW5nIjpjYXNlIm51bWVyaWMiOmNhc2UiaW50ZWdlciI6Y2FzZSJib29sZWFuIjpjYXNlImNvbnN0YW50IjpjYXNlIm51bGwiOnJldHVybiB0aGlzLmNvbnN0YW50KGwpO2Nhc2UibGlzdCI6Y2FzZSJhcnJheSI6cmV0dXJuIHRoaXMuYXJyYXkobCk7Y2FzZSJhcnJheSBzZWxlY3QiOnJldHVybiB0aGlzLmFycmF5U2VsZWN0KGwpO2Nhc2UiY2FsbCI6cmV0dXJuIHRoaXMuY2FsbChsKTtjYXNlImNhc3QiOnJldHVybiB0aGlzLmNhc3QobCk7Y2FzZSJjYXNlIjpyZXR1cm4gdGhpcy5jYXNlKGwpO2Nhc2UibWVtYmVyIjpyZXR1cm4gdGhpcy5tZW1iZXIobCk7Y2FzZSJhcnJheUluZGV4IjpyZXR1cm4gdGhpcy5hcnJheUluZGV4KGwpO2Nhc2UidGVybmFyeSI6cmV0dXJuIHRoaXMudGVybmFyeShsKTtjYXNlInNlbGVjdCI6Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOmNhc2Uid2l0aCI6Y2FzZSJ3aXRoIHJlY3Vyc2l2ZSI6cmV0dXJuIHRoaXMuc2VsZWN0KGwpO2Nhc2Uia2
14V5d29yZCI6cmV0dXJuIHRoaXMudmFsdWVLZXl3b3JkKGwpO2Nhc2UicGFyYW1ldGVyIjpyZXR1cm4gdGhpcy5wYXJhbWV0ZXIobCk7Y2FzZSJleHRyYWN0IjpyZXR1cm4gdGhpcy5leHRyYWN0KGwpO2Nhc2Uib3ZlcmxheSI6cmV0dXJuIHRoaXMuY2FsbE92ZXJsYXkobCk7Y2FzZSJzdWJzdHJpbmciOnJldHVybiB0aGlzLmNhbGxTdWJzdHJpbmcobCk7Y2FzZSJ2YWx1ZXMiOnJldHVybiB0aGlzLnZhbHVlcyhsKTtjYXNlImRlZmF1bHQiOnJldHVybiB0aGlzLmRlZmF1bHQobCk7ZGVmYXVsdDp0aHJvdyBuLk5vdFN1cHBvcnRlZC5uZXZlcihsKX19YXJyYXlTZWxlY3QobCl7Y29uc3QgYj10aGlzLnNlbGVjdChsLnNlbGVjdCk7cmV0dXJuIGI/cihsLHtzZWxlY3Q6Yn0pOm51bGx9ZXh0cmFjdChsKXtjb25zdCBiPXRoaXMuZXhwcihsLmZyb20pO3JldHVybiBiP3IobCx7ZnJvbTpifSk6bnVsbH12YWx1ZUtleXdvcmQobCl7cmV0dXJuIGx9dGVybmFyeShsKXtjb25zdCBiPXRoaXMuZXhwcihsLnZhbHVlKSx3PXRoaXMuZXhwcihsLmxvKSxkPXRoaXMuZXhwcihsLmhpKTtyZXR1cm4hYnx8IXd8fCFkP251bGw6cihsLHt2YWx1ZTpiLGxvOncsaGk6ZH0pfXBhcmFtZXRlcihsKXtyZXR1cm4gbH1hcnJheUluZGV4KGwpe2NvbnN0IGI9dGhpcy5leHByKGwuYXJyYXkpLHc9dGhpcy5leHByKGwuaW5kZXgpO3JldHVybiFifHwhdz9udWxsOnIobCx7YXJyYXk6YixpbmRleDp3fSl9bWVtYmVyKGwpe2NvbnN0IGI9dGhpcy5leHByKGwub3BlcmFuZCk7cmV0dXJuIGI/cihsLHtvcGVyYW5kOmJ9KTpudWxsfWNhc2UobCl7Y29uc3QgYj1sLnZhbHVlJiZ0aGlzLmV4cHIobC52YWx1ZSksdz1tKGwud2hlbnMseD0+e2NvbnN0IEE9dGhpcy5leHByKHgud2hlbiksTj10aGlzLmV4cHIoeC52YWx1ZSk7cmV0dXJuIUF8fCFOP251bGw6cih4LHt2YWx1ZTpOLHdoZW46QX0pfSk7aWYoISh3IT1udWxsJiZ3Lmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgZD1sLmVsc2UmJnRoaXMuZXhwcihsLmVsc2UpO3JldHVybiByKGwse3ZhbHVlOmIsd2hlbnM6dyxlbHNlOmR9KX1jYXN0KGwpe2NvbnN0IGI9dGhpcy5leHByKGwub3BlcmFuZCk7cmV0dXJuIGI/cihsLHtvcGVyYW5kOmJ9KTpudWxsfWNhbGwobCl7Y29uc3QgYj1tKGwuYXJncyx4PT50aGlzLmV4cHIoeCkpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IHc9dGhpcy5vcmRlckJ5KGwub3JkZXJCeSksZD10aGlzLmV4cHIobC5maWx0ZXIpO3JldHVybiByKGwse2FyZ3M6YixvcmRlckJ5OncsZmlsdGVyOmR9KX1jYWxsU3Vic3RyaW5nKGwpe3JldHVybiByKGwse3ZhbHVlOnRoaXMuZXhwcihsLnZhbHVlKSxmcm9tOnRoaXMuZXhwcihsLmZyb20pLGZvcjp0aGlzLmV4cHIobC5mb3IpfSl9Y2FsbE92ZXJsYXkobCl7cmV0dXJuIHIobCx7dmFsdWU6dGhpcy5leHByKGwudmFsdWUpLHBsYWNpbmc6dGhpcy5leHByKGwucGxhY2luZyksZnJvbTp0aGlzLmV4cHIobC5mcm9tKSxmb3I6dGhpcy5leHByKGwuZm9yKX0pfWFycmF5KGwpe2NvbnN0IGI9bShsLmV4cHJlc3Npb25zLHc9PnRoaXMuZXhwcih3KSk7cmV0dXJuIGI/cihsLHtleHByZXNzaW9uczpifSk6bnVsbH1jb25zdGFudChsKXtyZXR1cm4gbH1kZWZhdWx0KGwpe3JldHVybiBsfXJlZihsKXtyZXR1cm4gbH11bmFyeShsKXtjb25zdCBiPXRoaXMuZXhwcihsLm9wZXJhbmQpO3JldHVybiBiP3IobCx7b3BlcmFuZDpifSk6bnVsbH1iaW5hcnkobCl7Y29uc3QgYj10aGlzLmV4cHIobC5sZWZ0KSx3PXRoaXMuZXhwcihsLnJpZ2h0KTtyZXR1cm4hYnx8IXc/bnVsbDpyKGwse2xlZnQ6YixyaWdodDp3fSl9fW8uQXN0RGVmYXVsdE1hcHBlcj15O2NvbnN0IHQ9eS5wcm90b3R5cGU7Zm9yKGNvbnN0IF8gb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkpe2NvbnN0IGw9dFtfXTtfPT09ImNvbnN0cnVjdG9yInx8Xz09PSJzdXBlciJ8fHR5cGVvZiBsIT0iZnVuY3Rpb24ifHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxfLHtjb25maWd1cmFibGU6ITEsZ2V0KCl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3ZhciB3O2lmKHRoaXMuc2tpcE5leHQpcmV0dXJuIHRoaXMuc2tpcE5leHQ9ITEsbC5hcHBseSh0aGlzLGIpO2NvbnN0IGQ9KHc9dGhpcy53cmFwcGVkKT09PW51bGx8fHc9PT12b2lkIDA/dm9pZCAwOndbX107cmV0dXJuIGQ/ZC5hcHBseSh0aGlzLndyYXBwZWQsYik6bC5hcHBseSh0aGlzLGIpfX19KX1jbGFzcyAkIGV4dGVuZHMgeXtjb25zdHJ1Y3RvcihsKXtzdXBlcigpLHRoaXMucGFyZW50PWx9fWZvcihjb25zdCBfIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpKXtjb25zdCBsPXRbX107Xz09PSJjb25zdHJ1Y3RvciJ8fF89PT0ic3VwZXIifHx0eXBlb2YgbCE9ImZ1bmN0aW9uInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KCQucHJvdG90eXBlLF8se2NvbmZpZ3VyYWJsZTohMSxnZXQoKXtyZXR1cm4gZnVuY3Rpb24oLi4uYil7cmV0dXJuIHRoaXMucGFyZW50LnNraXBOZXh0PSEwLGwuYXBwbHkodGhpcy5wYXJlbnQsYil9fX0pfX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLnNxbEtleXdvcmRzPXZvaWQgMCxvLnNxbEtleXdvcmRzPVsiQUxMIiwiQU5BTFlTRSIsIkFOQUxZWkUiLCJBTkQiLCJBTlkiLCJBUlJBWSIsIkFTIiwiQVNDIiwiQVNZTU1FVFJJQyIsIkFVVEhPUklaQVRJT04iLCJCSU5BUlkiLCJCT1RIIiwiQ0FTRSIsIkNBU1QiLCJDSEVDSyIsIkNPTExBVEUiLCJDT0xMQVRJT04iLCJDT05DVVJSRU5UTFkiLCJDT05TVFJBSU5UIiwiQ1JFQVRFIiwiQ1JPU1MiLCJDVVJSRU5UX0NBVEFMT0ciLCJDVVJSRU5UX0RBVEUiLCJDVVJSRU5UX1JPTEUiLCJDVVJSRU5UX1NDSEVNQSIsIkNVUlJFTlRfVElNRSIsIkNVUlJFTlRfVElNRVNUQU1QIiwiQ1VSUkVOVF9VU0VSIiwiREVGQVVMVCIsIkRFRkVSUkFCTEUiLCJERVNDIiwiRElTVElOQ1QiLCJETyIsIkVMU0UiLCJFTkQiLCJFWENFUFQiLCJGQUxTRSIsIkZFVENIIiwiRk9SIiwiRk9SRUlHTiIsIkZSRUVaRSIsIkZST00iLCJGVUxMIiwiR1JBTlQiLCJHUk9VUCIsIkhBVklORyIsIklMSUtFIiwiSU4iLCJJTklUSUFMTFkiLCJJTk5FUiIsIklOVEVSU0VDVCIsIklOVE8iLCJJUyIsIklTTlVMTCIsIk
14pPSU4iLCJMQVRFUkFMIiwiTEVBRElORyIsIkxFRlQiLCJMSUtFIiwiTElNSVQiLCJMT0NBTFRJTUUiLCJMT0NBTFRJTUVTVEFNUCIsIk5BVFVSQUwiLCJOT1QiLCJOT1ROVUxMIiwiTlVMTCIsIk9GRlNFVCIsIk9OIiwiT05MWSIsIk9SIiwiT1JERVIiLCJPVVRFUiIsIk9WRVJMQVBTIiwiUExBQ0lORyIsIlBSSU1BUlkiLCJSRUZFUkVOQ0VTIiwiUkVUVVJOSU5HIiwiUklHSFQiLCJTRUxFQ1QiLCJTRVNTSU9OX1VTRVIiLCJTSU1JTEFSIiwiU09NRSIsIlNZTU1FVFJJQyIsIlRBQkxFIiwiVEFCTEVTQU1QTEUiLCJUSEVOIiwiVE8iLCJUUkFJTElORyIsIlRSVUUiLCJVTklPTiIsIlVOSVFVRSIsIlVTRVIiLCJVU0lORyIsIlZBUklBRElDIiwiVkVSQk9TRSIsIldIRU4iLCJXSEVSRSIsIldJTkRPVyIsIldJVEgiLCJQUkVDSVNJT04iXX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmludGVydmFsVG9TdHJpbmc9by5ub3JtYWxpemVJbnRlcnZhbD1vLmJ1aWxkSW50ZXJ2YWw9dm9pZCAwO2NvbnN0IG49W1sieWVhcnMiLDEyXSxbIm1vbnRocyIsMzBdLFsiZGF5cyIsMjRdLFsiaG91cnMiLDYwXSxbIm1pbnV0ZXMiLDYwXSxbInNlY29uZHMiLDFlM10sWyJtaWxsaXNlY29uZHMiLDBdXTtmdW5jdGlvbipzKCQpe2lmKHR5cGVvZiAkWzFdPT0ibnVtYmVyIil5aWVsZCAkO2Vsc2UgZm9yKGNvbnN0IF8gb2YgJCl5aWVsZCpzKF8pfWZ1bmN0aW9uIHIoJCxfKXt2YXIgbDtjb25zdCBiPXt9O2lmKF89PT0iaW52YWxpZCIpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlcnZhbDogIiR7JH0iYCk7Zm9yKGNvbnN0W3csZF1vZiBzKF8pKWJbd109KChsPWJbd10pIT09bnVsbCYmbCE9PXZvaWQgMD9sOjApK2Q7cmV0dXJuIGJ9by5idWlsZEludGVydmFsPXI7ZnVuY3Rpb24gbSgkKXt2YXIgXyxsLGIsdyxkLHgsQSxOLGs7Y29uc3Qgdj17Li4uJH07Zm9yKGxldCBxPTA7cTxuLmxlbmd0aDtxKyspe2NvbnN0W2UsdV09bltxXSxhPShfPXZbZV0pIT09bnVsbCYmXyE9PXZvaWQgMD9fOjAsZj1hPj0wP01hdGguZmxvb3IoYSk6TWF0aC5jZWlsKGEpO2lmKCFhfHxmPT09YSljb250aW51ZTtjb25zdCBnPShsPW5bcSsxXSk9PT1udWxsfHxsPT09dm9pZCAwP3ZvaWQgMDpsWzBdO2cmJih2W2ddPSgoYj12W2ddKSE9PW51bGwmJmIhPT12b2lkIDA/YjowKSt1KihhLWYpKSx2W2VdPWZ9aWYodi5tb250aHN8fHYueWVhcnMpe2NvbnN0IHE9KCh3PXYubW9udGhzKSE9PW51bGwmJnchPT12b2lkIDA/dzowKSsoKGQ9di55ZWFycykhPT1udWxsJiZkIT09dm9pZCAwP2Q6MCkqMTI7di5tb250aHM9cSUxMix2LnllYXJzPShxLXYubW9udGhzKS8xMn1sZXQgRT0oKHg9di5ob3VycykhPT1udWxsJiZ4IT09dm9pZCAwP3g6MCkqMzYwMCsoKEE9di5taW51dGVzKSE9PW51bGwmJkEhPT12b2lkIDA/QTowKSo2MCsoKE49di5zZWNvbmRzKSE9PW51bGwmJk4hPT12b2lkIDA/TjowKSsoKGs9di5taWxsaXNlY29uZHMpIT09bnVsbCYmayE9PXZvaWQgMD9rOjApLzFlMyxDPTE7RTwwJiYoQz0tMSxFPS1FKSxFPj0zNjAwPyh2LmhvdXJzPUMqTWF0aC5mbG9vcihFLzM2MDApLEUtPUMqdi5ob3VycyozNjAwKTpkZWxldGUgdi5ob3VycyxFPj02MD8odi5taW51dGVzPUMqTWF0aC5mbG9vcihFLzYwKSxFLT1DKnYubWludXRlcyo2MCk6ZGVsZXRlIHYubWludXRlcyxFPjA/KHYuc2Vjb25kcz1DKk1hdGguZmxvb3IoRSksRS09Qyp2LnNlY29uZHMpOmRlbGV0ZSB2LnNlY29uZHMsRT4wP3YubWlsbGlzZWNvbmRzPUMqTWF0aC5yb3VuZChFKjFlMyk6ZGVsZXRlIHYubWlsbGlzZWNvbmRzO2Zvcihjb25zdFtxXW9mIG4pdltxXXx8ZGVsZXRlIHZbcV07cmV0dXJuIHZ9by5ub3JtYWxpemVJbnRlcnZhbD1tO2Z1bmN0aW9uIGgoJCl7dmFyIF8sbCxiOyQ9bSgkKTtjb25zdCB3PVtdO2lmKCQueWVhcnMmJncucHVzaCgkLnllYXJzPT09MT8iMSB5ZWFyIjokLnllYXJzKyIgeWVhcnMiKSwkLm1vbnRocyYmdy5wdXNoKCQubW9udGhzPT09MT8iMSBtb250aCI6JC5tb250aHMrIiBtb250aHMiKSwkLmRheXMmJncucHVzaCgkLmRheXM9PT0xPyIxIGRheSI6JC5kYXlzKyIgZGF5cyIpLCQuaG91cnN8fCQubWludXRlc3x8JC5zZWNvbmRzfHwkLm1pbGxpc2Vjb25kcyl7bGV0IGQ9YCR7eSgoXz0kLmhvdXJzKSE9PW51bGwmJl8hPT12b2lkIDA/XzowKX06JHt5KChsPSQubWludXRlcykhPT1udWxsJiZsIT09dm9pZCAwP2w6MCl9OiR7eSgoYj0kLnNlY29uZHMpIT09bnVsbCYmYiE9PXZvaWQgMD9iOjApfWA7JC5taWxsaXNlY29uZHMmJihkPWQrKCQubWlsbGlzZWNvbmRzLzFlMykudG9TdHJpbmcoKS5zdWJzdHIoMSkpLCh0KCQuaG91cnMpfHx0KCQubWludXRlcyl8fHQoJC5zZWNvbmRzKXx8dCgkLm1pbGxpc2Vjb25kcykpJiYoZD0iLSIrZCksdy5wdXNoKGQpfXJldHVybiB3LmpvaW4oIiAiKX1vLmludGVydmFsVG9TdHJpbmc9aDtmdW5jdGlvbiB5KCQpe3JldHVybiAkPU1hdGguYWJzKCQpLCQ8MTA/IjAiKyQ6JC50b1N0cmluZygpfWZ1bmN0aW9uIHQoJCl7cmV0dXJuICQmJiQ8MH19LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby5hc3RWaXNpdG9yPXZvaWQgMDtjb25zdCBuPWkoMik7Y2xhc3Mgc3tzdXBlcigpe3JldHVybiBuZXcgbSh0aGlzKX19Y29uc3Qgcj1uLkFzdERlZmF1bHRNYXBwZXIucHJvdG90eXBlO2Zvcihjb25zdCB5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpKXtjb25zdCB0PXJbeV07eT09PSJjb25zdHJ1Y3RvciJ8fHk9PT0ic3VwZXIifHx0eXBlb2YgdCE9ImZ1bmN0aW9uInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLHkse2NvbmZpZ3VyYWJsZTohMSxnZXQoKXtyZXR1cm4gZnVuY3Rpb24oLi4uJCl7Y29uc3QgXz10aGlzLnZpc2l0b3JbeV07cmV0dXJuIF8/KF8uYXBwbHkodGhpcy52aXNpdG9yLCQpLCRbMF0pOnQuYXBwbHkodGhpcywkKX19fSl9Y2xhc3MgbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnBhcmVudD10fX1mb3IoY29uc3QgeSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKSl7Y29uc3QgdD1yW3ldO3k9PT0iY29uc3RydWN0b3IifHx5PT09InN1cGVyInx8dHlwZW9mIHQhPSJmdW5jdGlvbiJ8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtLnByb3RvdHlwZSx5LHtjb25maWd1cmFibGU6ITEsZ2V0KCl7cmV0dXJuIGZ1bmN0aW9uKC4uLiQpe3JldHVybiB0LmFwcGx5KHRoaXMucGFyZW50LCQpfX19KX1mdW5jdGlvbiBoKHkpe3JldHVybigwLG4uYXN0TWFwcGVyKSh0PT57Y29uc3QgJD1uZXcgcztyZXR1cm4gJC5tYXBwZXI9dCwkLnZpc2l0b3I9eSgkKSwkfSl9by5hc3RWaXNpdG9yPWh9LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby50cmltTnVsbGlzaD1vLk5vdFN1cHBvcnRlZD12b2lkIDA7Y2xhc3MgbiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG0pe3N1cGVyKCJOb3Qgc3VwcG9ydGVkIisobT8iOiAiK206IiIpKX1zdGF0aWMgbmV2ZXIobSxoKXtyZXR1cm4gbmV3IG4oYCR7aD8/IiJ9ICR7SlNPTi5zdHJpbmdpZnkobSl9YCl9fW8uTm90U3VwcG9ydGVkPW47ZnVuY3Rpb24gcyhyLG09NSl7aWYobTwwfHwociBpbnN0YW5jZW9mIEFycmF5JiZyLmZvckVhY2goaD0+cyhoLG0tMSkpLHR5cGVvZiByIT0ib2JqZWN0Inx8ciBpbnN0YW5jZW9mIERhdGUpfHwhcilyZXR1cm4gcjtmb3IoY29uc3QgaCBvZiBPYmplY3Qua2V5cyhyKSl7Y29uc3QgeT1yW2hdO3k9PW51bGw/ZGVsZXRlIHJbaF06cyh5LG0tMSl9cmV0dXJuIHJ9by50cmltTnVsbGlzaD1zfSxmdW5jdGlvbihjLG8saSl7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKCQsXyxsLGIpe2I9PT12b2lkIDAmJihiPWwpO3ZhciB3PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXyxsKTsoIXd8fCgiZ2V0ImluIHc/IV8u
14X19lc01vZHVsZTp3LndyaXRhYmxlfHx3LmNvbmZpZ3VyYWJsZSkpJiYodz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX1tsXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxiLHcpfTpmdW5jdGlvbigkLF8sbCxiKXtiPT09dm9pZCAwJiYoYj1sKSwkW2JdPV9bbF19KSxzPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbigkLF8pe2Zvcih2YXIgbCBpbiAkKWwhPT0iZGVmYXVsdCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXyxsKSYmbihfLCQsbCl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLm5vcm1hbGl6ZUludGVydmFsPW8uaW50ZXJ2YWxUb1N0cmluZz1vLnRvU3FsPW8uYXN0TWFwcGVyPW8uYXNzaWduQ2hhbmdlZD1vLmFycmF5TmlsTWFwPW8uYXN0VmlzaXRvcj1vLnBhcnNlV2l0aENvbW1lbnRzPW8ucGFyc2VJbnRlcnZhbExpdGVyYWw9by5wYXJzZUdlb21ldHJpY0xpdGVyYWw9by5wYXJzZUFycmF5TGl0ZXJhbD1vLnBhcnNlRmlyc3Q9by5wYXJzZT12b2lkIDA7dmFyIHI9aSg4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobywicGFyc2UiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnBhcnNlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUZpcnN0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZUZpcnN0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUFycmF5TGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VBcnJheUxpdGVyYWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInBhcnNlR2VvbWV0cmljTGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VHZW9tZXRyaWNMaXRlcmFsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUludGVydmFsTGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VJbnRlcnZhbExpdGVyYWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInBhcnNlV2l0aENvbW1lbnRzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZVdpdGhDb21tZW50c319KTt2YXIgbT1pKDUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJhc3RWaXNpdG9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5hc3RWaXNpdG9yfX0pO3ZhciBoPWkoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImFycmF5TmlsTWFwIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5hcnJheU5pbE1hcH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobywiYXNzaWduQ2hhbmdlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGguYXNzaWduQ2hhbmdlZH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobywiYXN0TWFwcGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5hc3RNYXBwZXJ9fSk7dmFyIHk9aSgxOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInRvU3FsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS50b1NxbH19KSxzKGkoMjEpLG8pO3ZhciB0PWkoNCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImludGVydmFsVG9TdHJpbmciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LmludGVydmFsVG9TdHJpbmd9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIm5vcm1hbGl6ZUludGVydmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5ub3JtYWxpemVJbnRlcnZhbH19KX0sZnVuY3Rpb24oYyxvLGkpe3ZhciBuPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLnBhcnNlR2VvbWV0cmljTGl0ZXJhbD1vLnBhcnNlSW50ZXJ2YWxMaXRlcmFsPW8ucGFyc2VBcnJheUxpdGVyYWw9by5wYXJzZT1vLnBhcnNlV2l0aENvbW1lbnRzPW8ucGFyc2VGaXJzdD12b2lkIDA7Y29uc3Qgcz1pKDkpLHI9bihpKDEwKSksbT1uKGkoMTEpKSxoPW4oaSgxMykpLHk9bihpKDE1KSksdD1uKGkoMTcpKSwkPWkoNCksXz1pKDEpO2xldCBsLGIsdyxkLHg7ZnVuY3Rpb24gQShlKXtyZXR1cm4gayhlKVswXX1vLnBhcnNlRmlyc3Q9QTtmdW5jdGlvbiBOKGUsdSl7cmV0dXJuKDAsXy50cmFja2luZ0NvbW1lbnRzKSgoKT0+ayhlLHUpKX1vLnBhcnNlV2l0aENvbW1lbnRzPU47ZnVuY3Rpb24gayhlLHUpe2x8fChsPXMuR3JhbW1hci5mcm9tQ29tcGlsZWQoci5kZWZhdWx0KSk7Y29uc3QgYT10eXBlb2YgdT09InN0cmluZyI/dTp1PT1udWxsP3ZvaWQgMDp1LmVudHJ5LGY9dHlwZW9mIHU9PSJzdHJpbmciP251bGw6dSxnPSgpPT5xKGUsbCxhKTtsZXQgTz1mIT1udWxsJiZmLmxvY2F0aW9uVHJhY2tpbmc/KDAsXy50cmFja2luZykoZyk6ZygpO3JldHVybiB0eXBlb2YgdSE9InN0cmluZyImJiFBcnJheS5pc0FycmF5KE8pJiYoTz1bT10pLE99by5wYXJzZT1rO2Z1bmN0aW9uIHYoZSl7cmV0dXJuIGJ8fChiPXMuR3JhbW1hci5mcm9tQ29tcGlsZWQobS5kZWZhdWx0KSkscShlLGIpfW8ucGFyc2VBcnJheUxpdGVyYWw9djtmdW5jdGlvbiBFKGUpe2lmKGUuc3RhcnRzV2l0aCgiUCIpKXJldHVybiB4fHwoeD1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKHQuZGVmYXVsdCkpLCgwLCQuYnVpbGRJbnRlcnZhbCkoZSxxKGUseCkpO3tkfHwoZD1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKHkuZGVmYXVsdCkpO2NvbnN0IHU9ZS50b0xvd2VyQ2FzZSgpO3JldHVybigwLCQuYnVpbGRJbnRlcnZhbCkoZSxxKHUsZCkpfX1vLnBhcnNlSW50ZXJ2YWxMaXRlcmFsPUU7ZnVuY3Rpb24gQyhlLHUpe3JldHVybiB3fHwodz1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKGguZGVmYXVsdCkpLHEoZSx3LHUpfW8ucGFyc2VHZW9tZXRyaWNMaXRlcmFsPUM7ZnVuY3Rpb24gcShlLHUsYSl7dHJ5e3Uuc3RhcnQ9YT8/Im1haW4iO2NvbnN0IGY9bmV3IHMuUGFyc2VyKHUpO2YuZmVlZChlKTtjb25zdCBnPWYuZmluaXNoKCk7aWYoZy5sZW5ndGgpe2lmKGcubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoYPCfkoAgQW1iaWd1b3VzIFNRTCBzeW50YXg6IFBsZWFzZSBmaWxlIGFuIGlzc3VlIHN0YXRpbmcgdGhlIHJlcXVlc3QgdGhhdCBoYXMgZmFpbGVkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vZ3VpbWJhbC9wZ3NxbC1hc3QtcGFyc2VyOgoKICAgICAgICAke2V9CgogICAgICAgIGApfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpO3JldHVybiBnWzBdfWNhdGNoKGYpe2lmKHR5cGVvZihmPT1udWxsP3ZvaWQgMDpmLm1lc3NhZ2UpIT0ic3RyaW5nIil0aHJvdyBmO2xldCBnPWYubWVzc2FnZSxPPW51bGw7Y29uc3QgUj1bXSxMPS9BICguKykgdG9rZW4gYmFzZWQgb246L2c7bGV0IEk7Zm9yKDtJPUwuZXhlYyhnKTspTz1PPz9nLnN1YnN0cigwLEkuaW5kZXgpLFIucHVzaChgICAgIC0gQSAiJHtJWzFdfSIgdG9rZW5gKTt0aHJvdyBPJiYoZz1PK1Iuam9pbihgCmApK2AKCmApLGYubWVzc2FnZT1nLGZ9fX0sZnVuY3Rpb24oYyxv
14KXtjLmV4cG9ydHM9RXMoKX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBuKGUpe3JldHVybiBlWzBdfWNvbnN0IHM9aSgxKSxyPWkoMSk7ZnVuY3Rpb24gbShlKXtyZXR1cm4gaChlLHZvaWQgMCl9ZnVuY3Rpb24gaChlLHUpe2NvbnN0IGE9ZChlKTtyZXR1cm4hdXx8dS5sZW5ndGg9PT0wPygwLHIudHJhY2spKGUse25hbWU6YX0pOigwLHIudHJhY2spKGUse25hbWU6YSxjb2x1bW5zOnUubWFwKGY9Pih7bmFtZTpkKGYpfSkpfSl9ZnVuY3Rpb24geShlKXtjb25zdCB1PWQoZSk7cmV0dXJuKDAsci50cmFjaykoZSx7dmFsdWU6dX0pfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPT09MSYmKGU9dChlWzBdKSksQXJyYXkuaXNBcnJheShlKSYmIWUubGVuZ3RoP251bGw6KDAsci51bmJveCkoZSl9Y29uc3QgJD1lPT51PT4oMCxyLnRyYWNrKSh1LHVbZV0pLF89ZT0+QXJyYXkuaXNBcnJheShlKT8oMCxyLnRyYWNrKShlW2UubGVuZ3RoLTFdLGVbZS5sZW5ndGgtMV0pOmU7ZnVuY3Rpb24gbChlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB1PVtdO2Zvcihjb25zdCBhIG9mIGUpdS5wdXNoKC4uLmwoYSkpO3JldHVybiB1fXJldHVybiBlP1tlXTpbXX1mdW5jdGlvbiBiKGUpe3ZhciB1O3JldHVybiBlPSgwLHIudW5ib3gpKGUpLCh1PWU9PW51bGw/dm9pZCAwOmUudmFsdWUpIT09bnVsbCYmdSE9PXZvaWQgMD91OmV9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gbCgoMCxyLnVuYm94KShlKSkuZmlsdGVyKGE9PiEhYSkubWFwKGE9PmIoYSkpLmZpbHRlcihhPT50eXBlb2YgYT09InN0cmluZyIpLm1hcChhPT5hLnRyaW0oKSkuZmlsdGVyKGE9PiEhYSl9ZnVuY3Rpb24gZChlLHUpe3JldHVybiB3KGUpLmpvaW4odXx8IiIpfWZ1bmN0aW9uIHgoZSl7Y29uc3QgdT17fTtmb3IoY29uc3RbYSxmXW9mIGUpdVthXT1mO3JldHVybiB1fWNvbnN0IEE9e3NlbnNpdGl2aXR5OiJhY2NlbnQifSxOPShlLHUpPT5lLmxvY2FsZUNvbXBhcmUodSx2b2lkIDAsQSk9PT0wLGs9ZT0+KHUsYSxmKT0+e2NvbnN0IGc9Yih1WzBdKTtyZXR1cm4gTihnLGUpPygwLHIuYm94KSh1LGUpOmZ9LHY9ayxFPSguLi5lKT0+e2NvbnN0IHU9bmV3IFNldChlKTtyZXR1cm4oYSxmLGcpPT57Y29uc3QgTz10eXBlb2YgYVswXT09InN0cmluZyI/YVswXTphWzBdLnZhbHVlO3JldHVybiB1LmhhcyhPKT9POmd9fTtmdW5jdGlvbiBDKGUsdSl7Y29uc3QgYT1uZXcgU2V0LGY9dS5tYXAoci51bmJveCk7Zm9yKGNvbnN0W2csT11vZiBmKXtpZihhLmhhcyhnKSl0aHJvdyBuZXcgRXJyb3IoImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIik7YS5hZGQoZyksZVtnXT0oMCxyLnVuYm94KShPKX19Y29uc3QgcT17TGV4ZXI6cy5sZXhlckFueSxQYXJzZXJSdWxlczpbe25hbWU6ImxwYXJlbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW5dfSx7bmFtZToicnBhcmVuIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl19LHtuYW1lOiJudW1iZXIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZmxvYXQiXX0se25hbWU6Im51bWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6Im51bWJlciIsc3ltYm9sczpbIm51bWJlciRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZG90IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZG90Iik/e3R5cGU6ImRvdCJ9OmRvdF0scG9zdHByb2Nlc3M6bn0se25hbWU6ImZsb2F0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZmxvYXQiKT97dHlwZToiZmxvYXQifTpmbG9hdF0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUscGFyc2VGbG9hdCh0KGUpKSl9LHtuYW1lOiJpbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxwYXJzZUludCh0KGUpLDEwKSl9LHtuYW1lOiJjb21tYSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWFdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzdGFyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic3RhciIpP3t0eXBlOiJzdGFyIn06c3Rhcl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsZVswXS52YWx1ZSl9LHtuYW1lOiJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic3RyaW5nIik/e3R5cGU6InN0cmluZyJ9OnN0cmluZ119LHtuYW1lOiJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZVN0cmluZyIpP3t0eXBlOiJlU3RyaW5nIn06ZVN0cmluZ119LHtuYW1lOiJzdHJpbmciLHN5bWJvbHM6WyJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsdChlWzBdKS52YWx1ZSl9LHtuYW1lOiJpZGVudCIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczokKDApfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ByaW1hcnkiKT97dHlwZToia3dfcHJpbWFyeSJ9Omt3X3ByaW1hcnldLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJwcmltYXJ5Iil9LHtuYW1lOiJ3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdW5pcXVlIik/e3R5cGU6Imt3X3VuaXF1ZSJ9Omt3X3VuaXF1ZV0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsInVuaXF1ZSIpfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInF1b3RlZF93b3JkIik/e3R5cGU6InF1b3RlZF93b3JkIn06cXVvdGVkX3dvcmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLGVbMF0udmFsdWUsITApfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLGVbMF0udmFsdWUpfSx7bmFtZToiY29sbGlzdF9wYXJlbiIsc3ltYm9sczpbImxwYXJlbiIsImNvbGxpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiY29sbGlzdCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjb2xsaXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNvbGxpc3QkZWJuZiQxIixzeW1ib2xzOlsiY29sbGlzdCRlYm5mJDEiLCJjb2xsaXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY29sbGlzdCIsc3ltYm9sczpbImlkZW50IiwiY29sbGlzdCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bZSwuLi51fHxbXV19LHtuYW1lOiJrd19iZXR3ZWVuIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiYmV0d2VlbiIpfSx7bmFtZToia3dfY29uZmxpY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJjb25mbGljdCIpfSx7bmFtZToia3dfbm90aGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm5vdGhpbmciKX0se25hbWU6Imt3X2JlZ2luIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiYmVnaW4iKX0se25hbWU6Imt3X2lmIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiaWYiKX0se25hbWU6Imt3X2V4aXN0cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImV4aXN0cyIpfSx7bmFtZToia3dfa2V5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygia2V5Iil9LHtuYW1lOiJrd19pbmRleCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImluZGV4Iil9LHtuYW1lOiJrd19leHRlbnNpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJleHRlbnNpb24iKX0se25hbWU6Imt3X3NjaGVtYSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInNjaGVtYSIpfSx7bmFtZToia3dfbnVsbHMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJudWxscyIpfSx7bmFtZToia3dfZmlyc3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJmaXJzdCIpfS
14x7bmFtZToia3dfbGFzdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImxhc3QiKX0se25hbWU6Imt3X3N0YXJ0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic3RhcnQiKX0se25hbWU6Imt3X3Jlc3RhcnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJyZXN0YXJ0Iil9LHtuYW1lOiJrd19maWx0ZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJmaWx0ZXIiKX0se25hbWU6Imt3X2NvbW1pdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImNvbW1pdCIpfSx7bmFtZToia3dfdGFibGVzcGFjZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInRhYmxlc3BhY2UiKX0se25hbWU6Imt3X3RyYW5zYWN0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidHJhbnNhY3Rpb24iKX0se25hbWU6Imt3X3dvcmsiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ3b3JrIil9LHtuYW1lOiJrd19yZWFkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicmVhZCIpfSx7bmFtZToia3dfd3JpdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ3cml0ZSIpfSx7bmFtZToia3dfaXNvbGF0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiaXNvbGF0aW9uIil9LHtuYW1lOiJrd19sZXZlbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImxldmVsIil9LHtuYW1lOiJrd19zZXJpYWxpemFibGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJzZXJpYWxpemFibGUiKX0se25hbWU6Imt3X3JvbGxiYWNrIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicm9sbGJhY2siKX0se25hbWU6Imt3X2luc2VydCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImluc2VydCIpfSx7bmFtZToia3dfdmFsdWUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ2YWx1ZSIpfSx7bmFtZToia3dfdmFsdWVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidmFsdWVzIil9LHtuYW1lOiJrd191cGRhdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ1cGRhdGUiKX0se25hbWU6Imt3X2NvbHVtbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImNvbHVtbiIpfSx7bmFtZToia3dfc2V0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic2V0Iil9LHtuYW1lOiJrd192ZXJzaW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidmVyc2lvbiIpfSx7bmFtZToia3dfYWx0ZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJhbHRlciIpfSx7bmFtZToia3dfcmVuYW1lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicmVuYW1lIil9LHtuYW1lOiJrd19zZXF1ZW5jZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInNlcXVlbmNlIil9LHtuYW1lOiJrd190ZW1wIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidGVtcCIpfSx7bmFtZToia3dfdGVtcG9yYXJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidGVtcG9yYXJ5Iil9LHtuYW1lOiJrd19hZGQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJhZGQiKX0se25hbWU6Imt3X293bmVyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygib3duZXIiKX0se25hbWU6Imt3X293bmVkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygib3duZWQiKX0se25hbWU6Imt3X2luY2x1ZGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImluY2x1ZGluZyIpfSx7bmFtZToia3dfZXhjbHVkaW5nIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiZXhjbHVkaW5nIil9LHtuYW1lOiJrd19ub25lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibm9uZSIpfSx7bmFtZToia3dfZHJvcCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImRyb3AiKX0se25hbWU6Imt3X29wZXJhdG9yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygib3BlcmF0b3IiKX0se25hbWU6Imt3X21pbnZhbHVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibWludmFsdWUiKX0se25hbWU6Imt3X21heHZhbHVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibWF4dmFsdWUiKX0se25hbWU6Imt3X2RhdGEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJkYXRhIil9LHtuYW1lOiJrd190eXBlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidHlwZSIpfS
14x7bmFtZToia3dfdHJpZ2dlciIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInRyaWdnZXIiKX0se25hbWU6Imt3X2RlbGV0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImRlbGV0ZSIpfSx7bmFtZToia3dfY2FjaGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJjYWNoZSIpfSx7bmFtZToia3dfY2FzY2FkZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImNhc2NhZGUiKX0se25hbWU6Imt3X25vIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibm8iKX0se25hbWU6Imt3X3RpbWVzdGFtcCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInRpbWVzdGFtcCIpfSx7bmFtZToia3dfY3ljbGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJjeWNsZSIpfSx7bmFtZToia3dfZnVuY3Rpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJmdW5jdGlvbiIpfSx7bmFtZToia3dfcmV0dXJucyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInJldHVybnMiKX0se25hbWU6Imt3X2xhbmd1YWdlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibGFuZ3VhZ2UiKX0se25hbWU6Imt3X291dCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm91dCIpfSx7bmFtZToia3dfaW5vdXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJpbm91dCIpfSx7bmFtZToia3dfdmFyaWFkaWMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ2YXJpYWRpYyIpfSx7bmFtZToia3dfYWN0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiYWN0aW9uIil9LHtuYW1lOiJrd19yZXN0cmljdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInJlc3RyaWN0Iil9LHtuYW1lOiJrd190cnVuY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInRydW5jYXRlIil9LHtuYW1lOiJrd19pbmNyZW1lbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJpbmNyZW1lbnQiKX0se25hbWU6Imt3X2J5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiYnkiKX0se25hbWU6Imt3X3JvdyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInJvdyIpfSx7bmFtZToia3dfcm93cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInJvd3MiKX0se25hbWU6Imt3X25leHQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJuZXh0Iil9LHtuYW1lOiJrd19tYXRjaCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm1hdGNoIil9LHtuYW1lOiJrd19yZXBsYWNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicmVwbGFjZSIpfSx7bmFtZToia3dfcmVjdXJzaXZlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicmVjdXJzaXZlIil9LHtuYW1lOiJrd192aWV3IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygidmlldyIpfSx7bmFtZToia3dfY2FzY2FkZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJjYXNjYWRlZCIpfSx7bmFtZToia3dfdW5sb2dnZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ1bmxvZ2dlZCIpfSx7bmFtZToia3dfZ2xvYmFsIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiZ2xvYmFsIil9LHtuYW1lOiJrd19vcHRpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJvcHRpb24iKX0se25hbWU6Imt3X21hdGVyaWFsaXplZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm1hdGVyaWFsaXplZCIpfSx7bmFtZToia3dfcGFydGlhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInBhcnRpYWwiKX0se25hbWU6Imt3X3BhcnRpdGlvbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInBhcnRpdGlvbiIpfSx7bmFtZToia3dfc2ltcGxlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic2ltcGxlIil9LHtuYW1lOiJrd19nZW5lcmF0ZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJnZW5lcmF0ZWQiKX0se25hbWU6Imt3X2Fsd2F5cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImFsd2F5cyIpfSx7bmFtZToia3dfaWRlbnRpdHkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJpZGVudGl0eSIpfSx7bmFtZToia3dfbmFtZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm5hbWUiKX0se25hbWU6Imt3X2VudW0iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJlbnVtIil9LHtuYW1lOiJrd19zaG93IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic2hvdyIpfSx7bmFtZToia3dfb3JkaW5hbGl0eSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoIm9yZGluYWxpdHkiKX0se25hbWU6Imt3X292ZXJyaWRpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJvdmVycmlkaW5nIil9LHtuYW1lOiJrd19vdmVyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygib3ZlciIpfSx7bmFtZToia3dfc3lzdGVtIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic3lzdGVtIil9LHtuYW1lOiJrd19jb21tZW50IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiY29tbWVudCIpfSx7bmFtZToia3dfdGltZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoInRpbWUiKX0se25hbWU6Imt3X25hbWVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibmFtZXMiKX0se25hbWU6Imt3X2F0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiYXQiKX0se25hbWU6Imt3X3pvbmUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJ6b25lIil9LHtuYW1lOiJrd19pbnRlcnZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImludGVydmFsIil9LHtuYW1lOiJrd19ob3VyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiaG91ciIpfSx7bmFtZToia3dfbWludXRlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygibWludXRlIil9LHtuYW1lOiJrd19sb2NhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImxvY2FsIil9LHtuYW1lOiJrd19wcmVwYXJlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic
14HJlcGFyZSIpfSx7bmFtZToia3dfZGVhbGxvY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmsoImRlYWxsb2NhdGUiKX0se25hbWU6Imt3X3JhaXNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygicmFpc2UiKX0se25hbWU6Imt3X2NvbnRpbnVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygiY29udGludWUiKX0se25hbWU6Imt3X3NoYXJlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6aygic2hhcmUiKX0se25hbWU6Imt3X3JlZnJlc2giLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJyZWZyZXNoIil9LHtuYW1lOiJrd19ub3dhaXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJub3dhaXQiKX0se25hbWU6Imt3X3NraXAiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJza2lwIil9LHtuYW1lOiJrd19sb2NrZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczprKCJsb2NrZWQiKX0se25hbWU6Imt3X2lmbm90ZXhpc3RzIixzeW1ib2xzOlsia3dfaWYiLHMubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90LCJrd19leGlzdHMiXX0se25hbWU6Imt3X2lmZXhpc3RzIixzeW1ib2xzOlsia3dfaWYiLCJrd19leGlzdHMiXX0se25hbWU6Imt3X3dpdGhvcmRpbmFsaXR5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwia3dfb3JkaW5hbGl0eSJdfSx7bmFtZToia3dfbm90X251bGwiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90LHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsXX0se25hbWU6Imt3X3ByaW1hcnlfa2V5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcHJpbWFyeSIpP3t0eXBlOiJrd19wcmltYXJ5In06a3dfcHJpbWFyeSwia3dfa2V5Il19LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImludCJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJkYXRhX3R5cGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9PltlLC4uLnV8fFtdXX0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FycmF5Iik/e3R5cGU6Imt3X2FycmF5In06a3dfYXJyYXldfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQscy5sZXhlckFueS5oYXMoInJicmFja2V0Iik/e3R5cGU6InJicmFja2V0In06cmJyYWNrZXRdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQscy5sZXhlckFueS5oYXMoInJicmFja2V0Iik/e3R5cGU6InJicmFja2V0In06cmJyYWNrZXRdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIiwiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkYXRhX3R5cGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfc2ltcGxlIiwiZGF0YV90eXBlJGVibmYkMSIsImRhdGFfdHlwZSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57bGV0IHU9ZVsyXTtjb25zdCBhPXQoZVswXSk7bGV0IGY7aWYoZj17Li4uYSwu
14Li5BcnJheS5pc0FycmF5KGVbMV0pJiZlWzFdLmxlbmd0aD97Y29uZmlnOmVbMV0ubWFwKHQpfTp7fX0sdSl7dVswXS50eXBlPT09Imt3X2FycmF5IiYmKHU9W1siYXJyYXkiXV0pO2Zvcihjb25zdCBnIG9mIHVbMF0pZj17a2luZDoiYXJyYXkiLGFycmF5T2Y6Zn19cmV0dXJuKDAsci50cmFjaykoZSxmKX19LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJkYXRhX3R5cGUiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZGF0YV90eXBlX2xpc3QkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlX2xpc3QkZWJuZiQxIiwiZGF0YV90eXBlX2xpc3QkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCIsc3ltYm9sczpbImRhdGFfdHlwZSIsImRhdGFfdHlwZV9saXN0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9PltlLC4uLnV8fFtdXX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfdGV4dCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6ZChlLCIgIil9KX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfbnVtZXJpYyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6ZChlLCIgIil9KX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfZGF0ZSJdfSx7bmFtZToiZGF0YV90eXBlX3NpbXBsZSIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lX21hcmtfcXVvdGVzIl19LHtuYW1lOiJkYXRhX3R5cGVfbnVtZXJpYyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp2KCJkb3VibGUiKX0se25hbWU6ImRhdGFfdHlwZV9udW1lcmljIixzeW1ib2xzOlsiZGF0YV90eXBlX251bWVyaWMkc3ViZXhwcmVzc2lvbiQxIixzLmxleGVyQW55Lmhhcygia3dfcHJlY2lzaW9uIik/e3R5cGU6Imt3X3ByZWNpc2lvbiJ9Omt3X3ByZWNpc2lvbl19LHtuYW1lOiJkYXRhX3R5cGVfdGV4dCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJjaGFyYWN0ZXIiLCJiaXQiKX0se25hbWU6ImRhdGFfdHlwZV90ZXh0JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOnYoInZhcnlpbmciKX0se25hbWU6ImRhdGFfdHlwZV90ZXh0IixzeW1ib2xzOlsiZGF0YV90eXBlX3RleHQkc3ViZXhwcmVzc2lvbiQxIiwiZGF0YV90eXBlX3RleHQkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJ0aW1lc3RhbXAiLCJ0aW1lIil9LHtuYW1lOiJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOnYoIndpdGhvdXQiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOnYoInRpbWUiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kNCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOnYoInpvbmUiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlIixzeW1ib2xzOlsiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQxIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQyIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQzIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTpkKGUsIiAiKX0pfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ1IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6RSgidGltZXN0YW1wIiwidGltZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ2IixzeW1ib2xzOlsibHBhcmVuIiwiaW50IiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kNyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGhdfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ3IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6digid2l0aG91dCIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ4IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6digidGltZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6digiem9uZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDUiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDYiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDciLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDgiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDkiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtuYW1lOmB0aW
141lc3RhbXAgJHtkKGVbMl0pfSB0aW1lIHpvbmVgLGNvbmZpZzpbKDAsci51bmJveCkoZVsxXSldfSl9LHtuYW1lOiJpZGVudF9hbGlhc2VkJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImlkZW50X2FsaWFzZWQiLHN5bWJvbHM6WyJpZGVudF9hbGlhc2VkJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiaWRlbnRfYWxpYXNlZCIsc3ltYm9sczpbImlkZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InRhYmxlX3JlZiIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lIl0scG9zdHByb2Nlc3M6dH0se25hbWU6InFjb2x1bW4kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImRvdCIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6InFjb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsicWNvbHVtbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InFjb2x1bW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicWNvbHVtbiIsc3ltYm9sczpbImlkZW50IiwiZG90IiwiaWRlbnQiLCJxY29sdW1uJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PmVbM10/KDAsci50cmFjaykoZSx7c2NoZW1hOigwLHIudW5ib3gpKGVbMF0pLHRhYmxlOigwLHIudW5ib3gpKGVbMl0pLGNvbHVtbjooMCxyLnVuYm94KShlWzNdKX0pOigwLHIudHJhY2spKGUse3RhYmxlOigwLHIudW5ib3gpKGVbMF0pLGNvbHVtbjooMCxyLnVuYm94KShlWzJdKX0pfSx7bmFtZToidGFibGVfcmVmX2FsaWFzZWQkZWJuZiQxIixzeW1ib2xzOlsiaWRlbnRfYWxpYXNlZCJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJ0YWJsZV9yZWZfYWxpYXNlZCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ0YWJsZV9yZWZfYWxpYXNlZCIsc3ltYm9sczpbInRhYmxlX3JlZiIsInRhYmxlX3JlZl9hbGlhc2VkJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PXQoZVsxXSk7cmV0dXJuKDAsci50cmFjaykoZSx7Li4udChlWzBdKSwuLi51P3thbGlhczp1fTp7fX0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOlsicW5hbWVfaWRlbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtuYW1lOmQoZSl9KX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOlsiaWRlbnQiLCJkb3QiLCJpZGVudF9leHRlbmRlZCJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PWQoZVswXSksYT1kKGVbMl0pO3JldHVybigwLHIudHJhY2spKGUse3NjaGVtYTp1LG5hbWU6YX0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZToiY3VycmVudF9zY2hlbWEifSl9LHtuYW1lOiJxdWFsaWZpZWRfbmFtZV9tYXJrX3F1b3RlcyIsc3ltYm9sczpbInFuYW1lX2lkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTpkKGUpLC4uLigwLHIuZG91YmxlUXVvdGVkKShlKX0pfSx7bmFtZToicXVhbGlmaWVkX25hbWVfbWFya19xdW90ZXMiLHN5bWJvbHM6WyJpZGVudCIsImRvdCIsImlkZW50X2V4dGVuZGVkIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHU9ZChlWzBdKSxhPWQoZVsyXSk7cmV0dXJuKDAsci50cmFjaykoZSx7c2NoZW1hOnUsbmFtZTphLC4uLigwLHIuZG91YmxlUXVvdGVkKShlWzJdKX0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lX21hcmtfcXVvdGVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZToiY3VycmVudF9zY2hlbWEifSl9LHtuYW1lOiJxbmFtZV9pZGVudCIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJxbmFtZV9pZGVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ByZWNpc2lvbiIpP3t0eXBlOiJrd19wcmVjaXNpb24ifTprd19wcmVjaXNpb25dfSx7bmFtZToicW5hbWUiLHN5bWJvbHM6WyJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbmFseXNlIik/e3R5cGU6Imt3X2FuYWx5c2UifTprd19hbmFseXNlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYW5hbHl6ZSIpP3t0eXBlOiJrd19hbmFseXplIn06a3dfYW5hbHl6ZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FuZCIpP3t0eXBlOiJrd19hbmQifTprd19hbmRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbnkiKT97dHlwZToia3dfYW55In06a3dfYW55XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXJyYXkiKT97dHlwZToia3dfYXJyYXkifTprd19hcnJheV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hc2MiKT97dHlwZToia3dfYXNjIn06a3dfYXNjXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXN5bW1ldHJpYyIpP3t0eXBlOiJrd19hc3ltbWV0cmljIn06a3dfYXN5bW1ldHJpY119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2F1dGhvcml6YXRpb24iKT97dHlwZToia3dfYXV0aG9yaXphdGlvbiJ9Omt3X2F1dGhvcml6YXRpb25dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19iaW5hcnkiKT97dHlwZToia3dfYmluYXJ5In06a3dfYmluYXJ5XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYm90aCIpP3t0eXBlOiJrd19ib3RoIn06a3dfYm90aF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nhc2UiKT97dHlwZToia3dfY2FzZSJ9Omt3X2Nhc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jYXN0Iik/e3R5cGU6Imt3X2Nhc3QifTprd19jYXN0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY2hlY2siKT97dHlwZToia3dfY2hlY2sifTprd19jaGVja119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbGxhdGUiKT97dHlwZToia3dfY29sbGF0ZSJ9Omt3X2NvbGxhdGV
14dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb2xsYXRpb24iKT97dHlwZToia3dfY29sbGF0aW9uIn06a3dfY29sbGF0aW9uXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY29uY3VycmVudGx5Iik/e3R5cGU6Imt3X2NvbmN1cnJlbnRseSJ9Omt3X2NvbmN1cnJlbnRseV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3Jvc3MiKT97dHlwZToia3dfY3Jvc3MifTprd19jcm9zc119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfY2F0YWxvZyIpP3t0eXBlOiJrd19jdXJyZW50X2NhdGFsb2cifTprd19jdXJyZW50X2NhdGFsb2ddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jdXJyZW50X2RhdGUiKT97dHlwZToia3dfY3VycmVudF9kYXRlIn06a3dfY3VycmVudF9kYXRlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9yb2xlIik/e3R5cGU6Imt3X2N1cnJlbnRfcm9sZSJ9Omt3X2N1cnJlbnRfcm9sZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfc2NoZW1hIik/e3R5cGU6Imt3X2N1cnJlbnRfc2NoZW1hIn06a3dfY3VycmVudF9zY2hlbWFdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jdXJyZW50X3RpbWUiKT97dHlwZToia3dfY3VycmVudF90aW1lIn06a3dfY3VycmVudF90aW1lXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lc3RhbXAiKT97dHlwZToia3dfY3VycmVudF90aW1lc3RhbXAifTprd19jdXJyZW50X3RpbWVzdGFtcF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfdXNlciIpP3t0eXBlOiJrd19jdXJyZW50X3VzZXIifTprd19jdXJyZW50X3VzZXJdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVmZXJyYWJsZSIpP3t0eXBlOiJrd19kZWZlcnJhYmxlIn06a3dfZGVmZXJyYWJsZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Rlc2MiKT97dHlwZToia3dfZGVzYyJ9Omt3X2Rlc2NdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kaXN0aW5jdCIpP3t0eXBlOiJrd19kaXN0aW5jdCJ9Omt3X2Rpc3RpbmN0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZG8iKT97dHlwZToia3dfZG8ifTprd19kb119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Vsc2UiKT97dHlwZToia3dfZWxzZSJ9Omt3X2Vsc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19lbmQiKT97dHlwZToia3dfZW5kIn06a3dfZW5kXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZXhjZXB0Iik/e3R5cGU6Imt3X2V4Y2VwdCJ9Omt3X2V4Y2VwdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mZXRjaCIpP3t0eXBlOiJrd19mZXRjaCJ9Omt3X2ZldGNoXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZm9yIik/e3R5cGU6Imt3X2ZvciJ9Omt3X2Zvcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvcmVpZ24iKT97dHlwZToia3dfZm9yZWlnbiJ9Omt3X2ZvcmVpZ25dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mcmVlemUiKT97dHlwZToia3dfZnJlZXplIn06a3dfZnJlZXplXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Z1bGwiKT97dHlwZToia3dfZnVsbCJ9Omt3X2Z1bGxdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ncmFudCIpP3t0eXBlOiJrd19ncmFudCJ9Omt3X2dyYW50XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZ3JvdXAiKT97dHlwZToia3dfZ3JvdXAifTprd19ncm91cF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2hhdmluZyIpP3t0eXBlOiJrd19oYXZpbmcifTprd19oYXZpbmddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbGlrZSIpP3t0eXBlOiJrd19pbGlrZSJ9Omt3X2lsaWtlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaW4iKT97dHlwZToia3dfaW4ifTprd19pbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2luaXRpYWxseSIpP3t0eXBlOiJrd19pbml0aWFsbHkifTprd19pbml0aWFsbHldfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbm5lciIpP3t0eXBlOiJrd19pbm5lciJ9Omt3X2lubmVyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaW50ZXJzZWN0Iik/e3R5cGU6Imt3X2ludGVyc2VjdCJ9Omt3X2ludGVyc2VjdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ludG8iKT97dHlwZToia3dfaW50byJ9Omt3X2ludG9dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaXNudWxsIik/e3R5cGU6Imt3X2lzbnVsbCJ9Omt3X2lzbnVsbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2pvaW4iKT97dHlwZToia3dfam9pbiJ9Omt3X2pvaW5dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19sYXRlcmFsIik/e3R5cGU6Imt3X2xhdGVyYWwifTprd19sYXRlcmFsXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGVhZGluZyIpP3t0eXBlOiJrd19sZWFkaW5nIn06a3dfbGVhZGluZ119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xlZnQiKT97dHlwZToia3dfbGVmdCJ9Omt3X2xlZnRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19saWtlIik/e3R5cGU6Imt3X2xpa2UifTprd19saWtlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGltaXQiKT97dHlwZToia3dfbGltaXQifTprd19saW1pdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xvY2FsdGltZSIpP3t0eXBlOiJrd19sb2NhbHRpbWUifTprd19sb2NhbHRpbWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19sb2NhbHRpbWVzdGFtcCIpP3t0eXBlOiJrd19sb2NhbHRpbWVzdGFtcCJ9Omt3X2xvY2FsdGltZXN0YW1wXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbmF0dXJhbCIpP3t0eXBlOiJrd19uYXR1cmFsIn06a3dfbmF0dXJhbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3RudWxsIik/e3R5cGU6Imt3X25vdG51bGwifTprd19ub3RudWxsXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29mZnNldCIpP3t0eXBlOiJrd19vZmZzZXQifTprd19vZmZzZXRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb25seSIpP3t0eXBlOiJrd19vbmx5In06a3dfb25seV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29yIik/e3R5cGU6Imt3X29yIn06a3dfb3JdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vcmRlciIpP3t0eXBlOiJrd19vcmRlciJ9Omt3X29yZGVyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X292ZXJsYXBzIik/e3R5cGU6Imt3X292ZXJsYXBzIn06a3dfb3ZlcmxhcHNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19wbGFjaW5nIik/e3R5cGU6Imt3X3BsYWNpbmcifTprd19wbGFjaW5nXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcHJpbWFyeSIpP3t0eXBlOiJrd19wcmltYXJ5In06a3dfcHJpbWFyeV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3JlZmVyZW5jZXMiKT97dHlwZToia3dfcmVmZXJlbmNlcyJ9Omt3X3JlZmVyZW5jZXNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcmlnaHQiKT97dHlwZToia3dfcmlnaHQifTprd19yaWdodF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3NlbGVjdCIpP3t0eXBlOiJrd19zZWxlY3QifTprd19zZWxlY3RdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZXNzaW9uX3VzZXIiKT97dHlwZToia3dfc2Vzc2lvbl91c2VyIn06a3dfc2Vzc2lvbl91c2VyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc2ltaWxhciIpP3t0eXBlOiJrd19zaW1pbGFyIn06a3dfc2ltaWxhcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3NvbWUiKT97dHlwZToia3dfc29tZSJ9Omt3X3NvbWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zeW1tZXRyaWMiKT97dHlwZToia3dfc3ltbWV0cmljIn06a3dfc3ltbWV0cmljXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlc2FtcGxlIik/e3R5cGU6Imt3X3RhYmxlc2FtcGxlIn06a3dfdGFibGVzYW1wbGVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190aGVuIik/e3R5cGU6Imt3X3RoZW4ifTprd190aGVuXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdG8iKT97dHlwZToia3dfdG8ifTprd190b119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RyYWlsaW5nIik/e3R5cGU6Imt3X3RyYWlsaW5nIn06a3dfdHJhaWxpbmddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190cnVlIik/e3R5cGU6Imt3X3RydWUifTprd190cnVlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdW5pb24iKT97dHlwZToia3dfdW5pb24ifTprd191bmlvbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VuaXF1ZSIpP3t0eXBlOiJrd191bmlxdWUifTprd191bmlxdWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191c2VyIik/e3R5cGU6Imt3X3VzZXIifTprd191c2VyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZ119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ZhcmlhZGljIik/e3R5cGU6Imt3X3ZhcmlhZGljIn06a3dfdmFyaWFkaWNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd192ZXJib3NlIik/e3R5cGU6Imt3X3ZlcmJvc2UifTprd192ZXJib3NlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2hlbiIpP3t0eXBlOiJrd193aGVuIn06a3dfd2hlbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aW5kb3ciKT97dHlwZToia3dfd2luZG93In06a3dfd2luZG93XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aF19LHtuYW1lOiJpZGVudF9leHRlbmRlZCIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJpZGVudF9leHRlbmRlZCIsc3ltYm9sczpbImFueV9rZXl3b3JkIl19LHtuYW1lOiJzZWxlY3Rfc3Rh
14dGVtZW50JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9mcm9tIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJzZWxlY3Rfd2hlcmUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X2hhdmluZyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0X2dyb3VwYnkiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0Il0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9za2lw
14Il0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3RfZm9yIiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSJdfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6WyJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50IixzeW1ib2xzOlsic2VsZWN0X3doYXQiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMSIsInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQyIiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDMiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNCIsInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ1Iiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiXSxwb3N0cHJvY2VzczplPT57bGV0W3UsYSxmLGcsTyxSLExdPWU7YT10KGEpO2xldCBJPWcmJmdbMF0sRj1nJiZnWzFdO0k9SSYmKEkubGVuZ3RoPT09MSYmSVswXS50eXBlPT09Imxpc3QiP0lbMF0uZXhwcmVzc2lvbnM6SSksRj1GJiZ0KEYpO2xldCBVPUwmJkxbMF0saj1MJiZMWzFdO3JldHVybiBqPXQoaiksKDAsci50cmFjaykoZSx7Li4udSwuLi5hP3tmcm9tOkFycmF5LmlzQXJyYXkoYSk/YTpbYV19Ont9LC4uLkk/e2dyb3VwQnk6SX06e30sLi4uRj97aGF2aW5nOkZ9Ont9LC4uLlI/e2xpbWl0OnQoUil9Ont9LC4uLk8/e29yZGVyQnk6T306e30sLi4uZj97d2hlcmU6Zn06e30sLi4uVT97Zm9yOlVbMV19Ont9LC4uLmo/e3NraXA6an06e30sdHlwZToic2VsZWN0In0pfX0se25hbWU6InNlbGVjdF9mcm9tIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwic2VsZWN0X2Zyb21faXRlbXMiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2Zyb21faXRlbXMkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbXMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwic2VsZWN0X2Zyb21faXRlbSJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEiLCJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6InNlbGVjdF9mcm9tX2l0ZW1zIixzeW1ib2xzOlsic2VsZWN0X2Zyb21faXRlbSIsInNlbGVjdF9mcm9tX2l0ZW1zJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9PlsuLi5lLC4uLmwodSl8fFtdXX0se25hbWU6InNlbGVjdF9mcm9tX2l0ZW0iLHN5bWJvbHM6WyJzZWxlY3RfZnJvbV9zdWJqZWN0Il19LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtIixzeW1ib2xzOlsic2VsZWN0X2Zyb21faXRlbV9qb2lucyJdLHBvc3Rwcm9jZXNzOiQoMCl9LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtX2pvaW5zJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9mcm9tX2l0ZW0iXSxwb3N0cHJvY2VzczokKDApfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbV9qb2lucyIsc3ltYm9sczpbInNlbGVjdF9mcm9tX2l0ZW1fam9pbnMkc3ViZXhwcmVzc2lvbiQxIiwic2VsZWN0X3RhYmxlX2pvaW4iXSxwb3N0cHJvY2VzczpsfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbV9qb2lucyIsc3ltYm9sczpbImxwYXJlbiIsInNlbGVjdF9mcm9tX2l0ZW1fam9pbnMiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToic2VsZWN0X2Zyb21fc3ViamVjdCIsc3ltYm9sczpbInN0Yl90YWJsZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3RfZnJvbV9zdWJqZWN0IixzeW1ib2xzOlsic3RiX3N0YXRlbWVudCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3RfZnJvbV9zdWJqZWN0IixzeW1ib2xzOlsic3RiX2NhbGwiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic3RiX29wdHMkZWJuZiQxIixzeW1ib2xzOlsiY29sbGlzdF9wYXJlbiJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzdGJfb3B0cyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzdGJfb3B0cyIsc3ltYm9sczpbImlkZW50X2FsaWFzZWQiLCJzdGJfb3B0cyRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHthbGlhczpkKGVbMF0pLC4uLmVbMV0mJntjb2x1bW5OYW1lczooMCxyLnVuYm94KShlWzFdKS5tYXAobSl9fSl9LHtuYW1lOiJzdGJfdGFibGUkZWJuZiQxIixzeW1ib2xzOlsic3RiX29wdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic3RiX3RhYmxlJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl90YWJsZSIsc3ltYm9sczpbInRhYmxlX3JlZiIsInN0Yl90YWJsZSRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ0YWJsZSIsbmFtZTooMCxyLnRyYWNrKShlLHsuLi5lWzBdLC4uLmVbMV19KX0pfSx7bmFtZToic3RiX3N0YXRlbWVudCIsc3ltYm9sczpbInNlbGVjdGlvbl9wYXJlbiIsInN0Yl9vcHRzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic3RhdGVtZW50IixzdGF0ZW1lbnQ6dChlWzBdKSwuLi5lWzFdfSl9LHtuYW1lOiJzZWxlY3RfdmFsdWVzIixzeW1ib2xzOlsia3dfdmFsdWVzIiwiaW5zZXJ0X3ZhbHVlcyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InZhbHVlcyIsdmFsdWVzOmVbMV19KX0se25hbWU6InN0Yl9jYWxsJGVibmYkMSIsc3ltYm9sczpbImt3X3dpdGhvcmRpbmFsaXR5Il0scG9zdHByb2Nlc3M6bn0se25hbWU6InN0Yl9jYWxsJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsJGVibmYkMiIsc3ltYm9sczpbInN0Yl9jYWxsX2FsaWFzIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InN0Yl9jYWxsJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsIixzeW1ib2xzOlsiZXhwcl9mdW5jdGlvbl9jYWxsIiwic3RiX2NhbGwkZWJuZiQxIiwic3RiX2NhbGwkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHU9ZVsxXSxhPWVbMl07cmV0dXJuIXUmJiFhP2VbMF06KDAsci50cmFjaykoZSx7Li4uZVswXSwuLi51J
14iZ7d2l0aE9yZGluYWxpdHk6ITB9LGFsaWFzOmE/aChhWzBdLGFbMV0pOnZvaWQgMH0pfX0se25hbWU6InN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzXSxwb3N0cHJvY2VzczpufSx7bmFtZToic3RiX2NhbGxfYWxpYXMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJpZGVudCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzdGJfY2FsbF9hbGlhcyRlYm5mJDEiLHN5bWJvbHM6WyJzdGJfY2FsbF9hbGlhc19saXN0Il0scG9zdHByb2Nlc3M6bn0se25hbWU6InN0Yl9jYWxsX2FsaWFzJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsX2FsaWFzIixzeW1ib2xzOlsic3RiX2NhbGxfYWxpYXMkc3ViZXhwcmVzc2lvbiQxIiwic3RiX2NhbGxfYWxpYXMkZWJuZiQxIl19LHtuYW1lOiJzdGJfY2FsbF9hbGlhc19saXN0IixzeW1ib2xzOlsibHBhcmVuIiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwiaWRlbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIixzeW1ib2xzOlsic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzdGJfY2FsbF9hbGlhc19saXN0X3JhdyIsc3ltYm9sczpbImlkZW50Iiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW4kZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF90YWJsZV9qb2luJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF90YWJsZV9qb2luIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3AiLHMubGV4ZXJBbnkuaGFzKCJrd19qb2luIik/e3R5cGU6Imt3X2pvaW4ifTprd19qb2luLCJzZWxlY3RfZnJvbV9zdWJqZWN0Iiwic2VsZWN0X3RhYmxlX2pvaW4kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7Li4udChlWzJdKSxqb2luOnt0eXBlOmQoZVswXSwiICIpLC4uLmVbM10mJnQoZVszXSl9fSl9LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uLCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b246XyhlKX0pfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiaWRlbnQiXX0se25hbWU6InNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQxJGVibmYkMSIsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6InNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMiIsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bdChlKSwuLi51Lm1hcCh0KXx8W11dfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZywibHBhcmVuIiwic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dXNpbmc6ZVsyXS5tYXAobSl9KX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbm5lciIpP3t0eXBlOiJrd19pbm5lciJ9Omt3X2lubmVyXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSwiSU5ORVIgSk9JTiIpfSx7bmFtZToic2VsZWN0X2pvaW5fb3AiLHN5bWJvbHM6WyJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nyb3NzIik/e3R5cGU6Imt3X2Nyb3NzIn06a3dfY3Jvc3NdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJDUk9TUyBKT0lOIil9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCIsc3ltYm9sczpbInNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMiJdfSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X291dGVyIik/e3R5cGU6Imt3X291dGVyIn06a3dfb3V0ZXJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGVmdCIpP3t0eXBlOiJrd19sZWZ0In06a3dfbGVmdCwic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJMRUZUIEpPSU4iKX0se25hbWU6InNlbGVjdF9qb2luX29wIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzIl19
14LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kNCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yaWdodCIpP3t0eXBlOiJrd19yaWdodCJ9Omt3X3JpZ2h0LCJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsIlJJR0hUIEpPSU4iKX0se25hbWU6InNlbGVjdF9qb2luX29wIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQ0Il19LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kNSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mdWxsIik/e3R5cGU6Imt3X2Z1bGwifTprd19mdWxsLCJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsIkZVTEwgSk9JTiIpfSx7bmFtZToic2VsZWN0X2pvaW5fb3AiLHN5bWJvbHM6WyJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUiXX0se25hbWU6InNlbGVjdF93aGF0JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9kaXN0aW5jdCJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3Rfd2hhdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfd2hhdCRlYm5mJDIiLHN5bWJvbHM6WyJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X3doYXQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZWxlY3QiKT97dHlwZToia3dfc2VsZWN0In06a3dfc2VsZWN0LCJzZWxlY3Rfd2hhdCRlYm5mJDEiLCJzZWxlY3Rfd2hhdCRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtjb2x1bW5zOmVbMl0sLi4uZVsxXSYme2Rpc3RpbmN0OigwLHIudW5ib3gpKGVbMV0pfX0pfSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9hbGlhc2VkJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6InNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJzZWxlY3RfZXhwcl9saXN0X2l0ZW0iXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9hbGlhc2VkJGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCRlYm5mJDEiLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiLHN5bWJvbHM6WyJzZWxlY3RfZXhwcl9saXN0X2l0ZW0iLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9pdGVtJGVibmYkMSIsc3ltYm9sczpbImlkZW50X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9pdGVtJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9leHByX2xpc3RfaXRlbSIsc3ltYm9sczpbImV4cHIiLCJzZWxlY3RfZXhwcl9saXN0X2l0ZW0kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7ZXhwcjplWzBdLC4uLmVbMV0/e2FsaWFzOm0oZVsxXSl9Ont9fSl9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbGwiKT97dHlwZToia3dfYWxsIn06a3dfYWxsXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSwiYWxsIil9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDIpfSx7bmFtZToic2VsZWN0X2Rpc3RpbmN0JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9kaXN0aW5jdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9kaXN0aW5jdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kaXN0aW5jdCIpP3t0eXBlOiJrd19kaXN0aW5jdCJ9Omt3X2Rpc3RpbmN0LCJzZWxlY3RfZGlzdGluY3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsZVsxXXx8ImRpc3RpbmN0Iil9LHtuYW1lOiJzZWxlY3Rfd2hlcmUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aGVyZSIpP3t0eXBlOiJrd193aGVyZSJ9Omt3X3doZXJlLCJleHByIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9ncm91cGJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZ3JvdXAiKT97dHlwZToia3dfZ3JvdXAifTprd19ncm91cCwia3dfYnkiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9oYXZpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19oYXZpbmciKT97dHlwZToia3dfaGF2aW5nIn06a3dfaGF2aW5nLCJleHByIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9vZmZzZXQiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9saW1pdCJdfSx7bmFtZToic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNlbGVjdF9vZmZzZXQiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNlbGVjdF9saW1pdCJdfSx7bmFtZToic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0JGVibmYkMSIsInNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3RfbGltaXRfb2Zmc2V0IixzeW1ib2xzOlsic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiXSxwb3N0cHJvY2VzczooZSx1KT0+e2NvbnN0IGE9dChl
14KTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4oMCxyLnRyYWNrKShlLGEpO2lmKGEubGVuZ3RoIT0yKXJldHVybiB1O2NvbnN0IGY9dChhWzBdKSxnPXQoYVsxXSk7cmV0dXJuIGYub2Zmc2V0JiZnLm9mZnNldHx8Zi5saW1pdCYmZy5saW1pdD91OigwLHIudHJhY2spKGUsey4uLmYsLi4uZ30pfX0se25hbWU6InNlbGVjdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JvdyJdfSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcm93cyJdfSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfb2Zmc2V0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfb2Zmc2V0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb2Zmc2V0Iik/e3R5cGU6Imt3X29mZnNldCJ9Omt3X29mZnNldCwiZXhwcl9ub3N0YXIiLCJzZWxlY3Rfb2Zmc2V0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29mZnNldDp0KGVbMV0pfSl9LHtuYW1lOiJzZWxlY3RfbGltaXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0X2xpbWl0XzEiXX0se25hbWU6InNlbGVjdF9saW1pdCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfMiJdfSx7bmFtZToic2VsZWN0X2xpbWl0IixzeW1ib2xzOlsic2VsZWN0X2xpbWl0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2xpbWl0OnQoZSl9KX0se25hbWU6InNlbGVjdF9saW1pdF8xIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGltaXQiKT97dHlwZToia3dfbGltaXQifTprd19saW1pdCwiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2xpbWl0XzIkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2ZpcnN0Il19LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbmV4dCJdfSx7bmFtZToic2VsZWN0X2xpbWl0XzIkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X2xpbWl0XzIkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yb3ciXX0se25hbWU6InNlbGVjdF9saW1pdF8yJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3Jvd3MiXX0se25hbWU6InNlbGVjdF9saW1pdF8yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZmV0Y2giKT97dHlwZToia3dfZmV0Y2gifTprd19mZXRjaCwic2VsZWN0X2xpbWl0XzIkZWJuZiQxIiwiZXhwcl9ub3N0YXIiLCJzZWxlY3RfbGltaXRfMiRzdWJleHByZXNzaW9uJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19vbmx5Iik/e3R5cGU6Imt3X29ubHkifTprd19vbmx5XSxwb3N0cHJvY2VzczokKDIpfSx7bmFtZToic2VsZWN0X2ZvciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd191cGRhdGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1cGRhdGUifSl9LHtuYW1lOiJzZWxlY3RfZm9yJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vIiwia3dfa2V5Iiwia3dfdXBkYXRlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToibm8ga2V5IHVwZGF0ZSJ9KX0se25hbWU6InNlbGVjdF9mb3Ikc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2hhcmUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzaGFyZSJ9KX0se25hbWU6InNlbGVjdF9mb3Ikc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfa2V5Iiwia3dfc2hhcmUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJrZXkgc2hhcmUifSl9LHtuYW1lOiJzZWxlY3RfZm9yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZm9yIik/e3R5cGU6Imt3X2ZvciJ9Omt3X2Zvciwic2VsZWN0X2ZvciRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9za2lwJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vd2FpdCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im5vd2FpdCJ9KX0se25hbWU6InNlbGVjdF9za2lwJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NraXAiLCJrd19sb2NrZWQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJza2lwIGxvY2tlZCJ9KX0se25hbWU6InNlbGVjdF9za2lw
14IixzeW1ib2xzOlsic2VsZWN0X3NraXAkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3JkZXIiKT97dHlwZToia3dfb3JkZXIifTprd19vcmRlciwia3dfYnkiXX0se25hbWU6InNlbGVjdF9vcmRlcl9ieSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwic2VsZWN0X29yZGVyX2J5X2V4cHIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X29yZGVyX2J5JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9vcmRlcl9ieSRlYm5mJDEiLCJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkiLHN5bWJvbHM6WyJzZWxlY3Rfb3JkZXJfYnkkc3ViZXhwcmVzc2lvbiQxIiwic2VsZWN0X29yZGVyX2J5X2V4cHIiLCJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHUsYV0pPT5bdSwuLi5hfHxbXV19LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXNjIik/e3R5cGU6Imt3X2FzYyJ9Omt3X2FzY119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVzYyIpP3t0eXBlOiJrd19kZXNjIn06a3dfZGVzY119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfZmlyc3QiXX0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbGFzdCJdfSx7bmFtZToic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X251bGxzIiwic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciIsc3ltYm9sczpbImV4cHIiLCJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEiLCJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtieTplWzBdLC4uLmVbMV0mJntvcmRlcjpkKGVbMV0pLnRvVXBwZXJDYXNlKCl9LC4uLmVbMl0mJntudWxsczpkKGVbMl0pLnRvVXBwZXJDYXNlKCl9fSl9LHtuYW1lOiJleHByIixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwciIsc3ltYm9sczpbImV4cHJfc3RhciJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX25vc3RhciIsc3ltYm9sczpbImV4cHJfcGFyZW4iXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9ub3N0YXIiLHN5bWJvbHM6WyJleHByX29yIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfcGFyZW4kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9vcl9zZWxlY3QiXX0se25hbWU6ImV4cHJfcGFyZW4kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X21hbnkiXX0se25hbWU6ImV4cHJfcGFyZW4iLHN5bWJvbHM6WyJscGFyZW4iLCJleHByX3BhcmVuJHN1YmV4cHJlc3Npb24kMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3IiKT97dHlwZToia3dfb3IifTprd19vcl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfb3IiXX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2FuZCJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQzIl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLCJleHByX29yJG1hY3JvY2FsbCQyIiwiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfb3IiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FuZCIpP3t0eXBlOiJrd19hbmQifTprd19hbmRdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfYW5kJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfYW5kIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfbm90Il19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9hbmQkbWFjcm9jYWxsJDIiLCJleHByX2FuZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9hbmQiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XX0se25hbWU6ImV4cHJfbm90JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9ub3QkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX25vdCJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2VxIl19LHtuYW1lOiJleHByX25vdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMiIsImV4cHJfbm90JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IiwuLi50KGVbMF0pLG9wZXJhbmQ6dChlWzFdKX0pfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX25vdCIsc3ltYm9sczpbImV4cHJfbm90JG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXFdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9uZXEiKT97dHlwZToib3BfbmVxIn06b3BfbmVxXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KGQoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOmQoZVsyXSl9KX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9lcSJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfaXMiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9lcSRtYWNyb2NhbGwkMiIsImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2VxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9zdGFyIixzeW1ib2xzOlsic3RhciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZiIsbmFtZToiKiJ9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2lzbnVsbCIpP3t0eXBlOiJrd19pc251bGwifTprd19pc251bGxdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzLHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsXX0se25hbWU6ImV4cHJfaXMiLHN5bWJvbHM6WyJleHByX2lzJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToidW5hcnkiLG9wOiJJUyBOVUxMIixvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kNCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdG51bGwiKT97dHlwZToia3dfbm90bnVsbCJ9Omt3X25vdG51bGxdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzLCJrd19ub3RfbnVsbCJdfSx7bmFtZToiZXhwcl9pcyIsc3ltYm9sczpbImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQzIiwiZXhwcl9pcyRzdWJleHByZXNzaW9uJDQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1bmFyeSIsb3A6IklTIE5PVCBOVUxMIixvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ1IixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDUiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJleHByX2lzJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ2IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdHJ1ZSIpP3t0eXBlOiJrd190cnVlIn06a3dfdHJ1ZV19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kNiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToiZXhwcl9pcyIsc3ltYm9sczpbImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ1IixzLmxleGVyQW55Lmhhcygia3dfaXMiKT97dHlwZToia3dfaXMifTprd19pcywiZXhwcl9pcyRlYm5mJDEiLCJleHByX2lzJHN1YmV4cHJlc3Npb24kNiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IixvcDoiSVMgIit3KFtlWzJdLGVbM11dKS5qb2luKCIgIikudG9VcHBlckNhc2UoKSxvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfY29tcGFyZSIpP3t0eXBlOiJvcF9jb21wYXJlIn06b3BfY29tcGFyZV19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsia3dfb3BlcmF0b3IiLCJscGFyZW4iLCJpZGVudCIsImRvdCIsImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOmQoZVsyXSl9KX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlIl19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3JhbmdlIl19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQzIl19
14LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLCJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIiLCJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsib3BzX2JldHdlZW4iXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbmQiKT97dHlwZToia3dfYW5kIn06a3dfYW5kXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3JhbmdlIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQ1IixzeW1ib2xzOlsiZXhwcl9vdGhlcnMiXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX3JhbmdlJG1hY3JvY2FsbCQ1Il19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDIiLCJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDMiLCJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRlcm5hcnkiLHZhbHVlOnQoZVswXSksbG86dChlWzJdKSxoaTp0KGVbNF0pLG9wOih3KGVbMV0pLmpvaW4oIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkNSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX3JhbmdlIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcHNfb3RoZXJzIik/e3R5cGU6Im9wc19vdGhlcnMifTpvcHNfb3RoZXJzXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOmQoZVsyXSl9KX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9saWtlIl19LHtuYW1lOiJleHByX290aGVycyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIiLCJleHByX290aGVycyRtYW
14Nyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9vdGhlcnMiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsib3BzX2xpa2UiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2xpa2UkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfbGlrZSJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9pbiJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2xpa2UkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9saWtlJG1hY3JvY2FsbCQyIiwiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJpbmFyeSIsbGVmdDp0KGVbMF0pLHJpZ2h0OnQoZVsyXSksLi4udChlWzFdKX0pfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9saWtlJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfbGlrZSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbIm9wc19pbiJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX2luIl19LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9hZGQiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9pbiRtYWNyb2NhbGwkMiIsImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2luIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfcGx1cyIpP3t0eXBlOiJvcF9wbHVzIn06b3BfcGx1c119LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9taW51cyIpP3t0eXBlOiJvcF9taW51cyJ9Om9wX21pbnVzXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2FkZGl0aXZlIik/e3R5cGU6Im9wX2FkZGl0aXZlIn06b3BfYWRkaXRpdmVdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOihkKGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOmQoZVsyXSl9KX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9hZGQiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9tdWx0Il19LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9hZGQkbWFjcm9jYWxsJDIiLCJleHByX2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9hZGQiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInN0YXIiKT97dHlwZToic3RhciJ9OnN0YXJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2RpdiIpP3t0eXBlOiJvcF9kaXYifTpvcF9kaXZdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX21vZCIpP3t0eXBlOiJvcF9tb2QifTpvcF9tb2RdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfbXVsdCRtYW
14Nyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTpkKGVbMl0pfSl9LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfbXVsdCJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9leHAiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDMiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQ0Il19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfbXVsdCRtYWNyb2NhbGwkMiIsImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfbXVsdCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX211bHQiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfZXhwIik/e3R5cGU6Im9wX2V4cCJ9Om9wX2V4cF19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KGQoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTpkKGVbMl0pfSl9LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfZXhwIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2V4cCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9leHAkbWFjcm9jYWxsJDIiLCJleHByX2V4cCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9leHAiLHN5bWJvbHM6WyJleHByX2V4cCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfcGx1cyIpP3t0eXBlOiJvcF9wbHVzIn06b3BfcGx1c119LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9taW51cyIpP3t0eXBlOiJvcF9taW51cyJ9Om9wX21pbnVzXX0se25hbWU6ImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KGQoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTpkKGVbMl0pfSl9LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiIsImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IiwuLi50KGVbMF0pLG9wZXJhbmQ6dChlWzFdKX0pfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX3VuYXJ5X2FkZCIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInZhcmlvdXNfYmluYXJpZXMiXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDooZChlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4Il19LHtuYW1lOiJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIiLCJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9hcnJheV9pbmRleCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4Il19LHtuYW1lOiJleHByX2FycmF5X2luZGV4JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYXJyYXlfaW5kZXgiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4JHN1YmV4cHJlc3Npb24kMSIscy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQsImV4cHJfbm9zdGFyIixzLmxleGVyQW55LmhhcygicmJyYWNrZXQiKT97dHlwZToicmJyYWNrZXQifTpyYnJhY2tldF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYXJyYXlJbmRleCIsYXJyYXk6dChlWzBdKSxpbmRleDp0KGVbMl0pfSl9LHtuYW1lOiJleHByX2FycmF5X2luZGV4IixzeW1ib2xzOlsiZXhwcl9tZW1iZXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9tZW1iZXIiXX0se25hbWU6ImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInN0cmluZyJdfSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiaW50Il19LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsIm9wc19tZW1iZXIiLCJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJtZW1iZXIiLG9wZXJhbmQ6dChlWzBdKSxvcDplWzFdLG1lbWJlcjp0KGVbMl0pfSl9LHtuYW1lOiJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX21lbWJlciJdfSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9tZW1iZXIiLHN5bWJvbHM6WyJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDMiLHMubGV4ZXJBbnkuaGFzKCJvcF9jYXN0Iik/e3R5cGU6Im9wX2Nhc3QifTpvcF9jYXN0LCJkYXRhX3R5cGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJjYXN0IixvcGVyYW5kOnQoZVswXSksdG86ZVsyXX0pfSx7bmFtZToiZXhwcl9tZW1iZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jYXN0Iik/e3R5cGU6Imt3X2Nhc3QifTprd19jYXN0LCJscGFyZW4iLCJleHByX25vc3RhciIscy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImRh
14dGFfdHlwZSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc3QiLG9wZXJhbmQ6dChlWzJdKSx0bzplWzRdfSl9LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImRhdGFfdHlwZSIsInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc3QiLG9wZXJhbmQ6KDAsci50cmFjaykoZVsxXSx7dHlwZToic3RyaW5nIix2YWx1ZTooMCxyLnVuYm94KShlWzFdKX0pLHRvOigwLHIudW5ib3gpKGVbMF0pfSl9LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImV4cHJfZG90Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfZG90JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXX0se25hbWU6ImV4cHJfZG90JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0YXIiXX0se25hbWU6ImV4cHJfZG90IixzeW1ib2xzOlsicW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LCJleHByX2RvdCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJyZWYiLHRhYmxlOnQoZVswXSksbmFtZTpkKGVbMl0pfSl9LHtuYW1lOiJleHByX2RvdCIsc3ltYm9sczpbImV4cHJfZmluYWwiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9maW5hbCIsc3ltYm9sczpbImV4cHJfYmFzaWMiXX0se25hbWU6ImV4cHJfZmluYWwiLHN5bWJvbHM6WyJleHByX3ByaW1hcnkiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX3NwZWNpYWxfY2FsbHMiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX2NhbGwiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX2FycmF5Il19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsiZXhwcl9jYXNlIl19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsiZXhwcl9leHRyYWN0Il19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZiIsbmFtZTp0KGVbMF0pfSl9LHtuYW1lOiJleHByX2FycmF5JGVibmYkMSIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9hcnJheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2FycmF5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXJyYXkiKT97dHlwZToia3dfYXJyYXkifTprd19hcnJheSxzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldCwiZXhwcl9hcnJheSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhcnJheSIsZXhwcmVzc2lvbnM6ZVsyXXx8W119KX0se25hbWU6ImV4cHJfYXJyYXkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcnJheSIpP3t0eXBlOiJrd19hcnJheSJ9Omt3X2FycmF5LCJscGFyZW4iLCJzZWxlY3Rpb24iLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhcnJheSBzZWxlY3QiLHNlbGVjdDp0KGVbMl0pfSl9LHtuYW1lOiJleHByX3N1YmFycmF5JGVibmYkMSIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9zdWJhcnJheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX3N1YmFycmF5IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldCwiZXhwcl9zdWJhcnJheSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfbGlzdF9pdGVtIl19LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxJGVibmYkMSIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMiIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLm1hcCh0KX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5Il19LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMyRlYm5mJDEiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzJGVibmYkMSIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkNCIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMiXSxwb3N0cHJvY2VzczplPT5lWzBdLm1hcCh1PT4oMCxyLnRyYWNrKSh1LHt0eXBlOiJhcnJheSIsZXhwcmVzc2lvbnM6dVswXS5tYXAodCl9KSl9LHtuYW1lOiJleHByX2Z1bmN0aW9uX2NhbGwkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3JhdyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJleHByX2Z1bmN0aW9uX2NhbGwkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZXhwcl9mdW5jdGlvbl9jYWxsIixzeW1ib2xzOlsiZXhwcl9mbl9uYW1lIiwibHBhcmVuIiwiZXhwcl9mdW5jdGlvbl9jYWxsJGVibmYkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhbGwiLGZ1bmN0aW9uOnQoZVswXSksYXJnczplWzJdfHxbXX0pfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbGwiKT97dHlwZToia3dfYWxsIn06a3dfYWxsXX0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGlzdGluY3QiKT97dHlwZToia3dfZGlzdGluY3QifTprd19kaXN0aW5jdF19LHtuYW1lOiJleHByX2NhbGwkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9jYWxsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9jYWxsJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDIiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6bn0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQzIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6bn0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2ZpbHRlciIsImxwYXJlbiIscy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmUsImV4cHIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDMpfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkNCIsc3ltYm9sczpbImV4cHJfY2FsbCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQ1IixzeW1ib2xzOlsiZXhwcl9jYWxsX292ZXIiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9jYWxsJGVibmYkNSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbCIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSIsImxwYXJlbiIsImV4cHJfY2FsbCRlYm5mJDEiLCJleHByX2NhbGwkZWJuZiQyIiwiZXhwcl9jYWxsJGVibmYkMyIsInJwYXJlbiIsImV4cHJfY2FsbCRlYm5mJDQiLCJleHByX2NhbGwkZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY2FsbCIsZnVuY3Rpb246dChlWzBdKSwuLi5lWzJdJiZ7ZGlzdGluY3Q6ZChlWzJdKX0sYXJnczplWzNdfHxbXSwuLi5lWzRdJiZ7b3JkZXJCeTplWzRdfSwuLi5lWzZdJiZ7ZmlsdGVyOnQoZVs2XSl9LC4uLmVbN10mJntvdmVyOnQoZVs3XSl9fSl9LHtuYW1lOiJleHByX2NhbGxfb3ZlciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcGFydGl0aW9uIiwia3dfYnkiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImV4cHJfY2FsbF9vdmVyJGVibmYkMSIsc3ltYm9sczpbImV4cHJfY2FsbF9vdmVyJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9jYWxsX292ZXIkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZXhwcl9jYWxsX292ZXIkZWJuZiQyIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6bn0se25hbWU6ImV4cHJfY2FsbF9vdmVyJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbF9vdmVyIixzeW1ib2xzOlsia3dfb3ZlciIsImxwYXJlbiIsImV4cHJfY2FsbF9vdmVyJGVibmYkMSIsImV4cHJfY2FsbF9vdmVyJGVibmYkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUsey4uLmVbMl0mJntwYXJ0aXRpb25CeTplWzJdfSwuLi5lWzNdJiZ7b3JkZXJCeTplWzNdfX0pfSx7bmFtZToiZXhwcl9leHRyYWN0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2Vzczp2KCJleHRyYWN0Iil9LHtuYW1lOiJleHByX2V4dHJhY3QiLHN5bWJvbHM6WyJleHByX2V4dHJhY3Qkc3ViZXhwcmVzc2lvbiQxIiwibHBhcmVuIiwid29yZCIscy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sImV4cHIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJleHRyYWN0IixmaWVsZDptKGVbMl0pLGZyb206ZVs0XX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOlsiZmxvYXQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJudW1lcmljIix2YWx1ZTooMCxyLnVuYm94KShlWzBdKX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOlsiaW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaW50ZWdlciIsdmFsdWU6KDAsci51bmJveCkoZVswXSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InN0cmluZyIsdmFsdWU6KDAsci51bmJveCkoZVswXSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RydWUiKT97dHlwZToia3dfdHJ1ZSJ9Omt3X3RydWVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJvb2xlYW4iLHZhbHVlOiEwfSl9LHtuYW1lOiJleHByX3ByaW1hcnkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mYWxzZSIpP3t0eXBlOiJrd19mYWxzZSJ9Omt3X2ZhbHNlXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJib29sZWFuIix2YWx1ZTohMX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToibnVsbCJ9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbInZhbHVlX2tleXdvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJrZXl3b3JkIixrZXl3b3JkOmQoZSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInFwYXJhbSIpP3t0eXBlOiJxcGFyYW0ifTpxcGFyYW1dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InBhcmFtZXRlciIsbmFtZTpkKGVbMF0pfSl9LHtuYW1lOiJleHByX3ByaW1hcnkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWZhdWx0In0pfSx7bmFtZToib3BzX2xpa2UiLHN5bWJvbHM6WyJvcHNfbGlrZV9rZXl3b3JzIl19LHtuYW1lOiJvcHNfbGlrZSIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyJdfSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczpufSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJvcHNfbGlrZV9rZXl3b3JzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xpa2UiKT97dHlwZToia3dfbGlrZSJ9Omt3X2xpa2VdfSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbGlrZSIpP3t0eXBlOiJrd19pbGlrZSJ9Omt3X2lsaWtlXX0se25hbWU6Im9wc19saWtlX2tleXdvcnMiLHN5bWJvbHM6WyJvcHNfbGlrZV9rZXl3b3JzJGVibmYkMSIsIm9wc19saWtlX2tleXdvcnMkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJvcHNfbGlrZV9vcGVyYXRvcnMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfbGlrZSIpP3t0eXBlOiJvcF9saWtlIn06b3BfbGlrZV0scG9zdHByb2Nlc3M6KCk9PiJMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9pbGlrZSIpP3t0eXBlOiJvcF9pbGlrZSJ9Om9wX2lsaWtlXSxwb3N0cHJvY2VzczooKT0+IklMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDIiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9ub3RfbGlrZSIpP3t0eXBlOiJvcF9ub3RfbGlrZSJ9Om9wX25vdF9saWtlXSxwb3N0cHJvY2VzczooKT0+Ik5PVCBMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDMiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9ub3RfaWxpa2UiKT97dHlwZToib3Bfbm90X2lsaWtlIn06b3Bfbm90X2lsaWtlXSxwb3N0cHJvY2VzczooKT0+Ik5PVCBJTElLRSJ9LHtuYW1lOiJvcHNfbGlrZV9vcGVyYXRvcnMiLHN5bWJvbHM6WyJvcHNfbGlrZV9vcGVyYXRvcnMkc3ViZXhwcmVzc2lvbiQ0Il19LHtuYW1lOiJvcHNfaW4kZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbm90Iik/e3R5cGU6Imt3X25vdCJ9Omt3X25vdF0scG9zdHByb2Nlc3M6bn0se25hbWU6Im9wc19pbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJvcHNfaW4iLHN5bWJvbHM6WyJvcHNfaW4kZWJuZiQxIixzLmxleGVyQW55Lmhhcygia3dfaW4iKT97dHlwZToia3dfaW4ifTprd19pbl19LHtuYW1lOiJvcHNfYmV0d2VlbiRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczpufSx7bmFtZToib3BzX2JldHdlZW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToib3BzX2JldHdlZW4iLHN5bWJvbHM6WyJvcHNfYmV0d2VlbiRlYm5mJDEiLCJrd19iZXR3ZWVuIl19LHtuYW1lOiJvcHNfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX21lbWJlciIpP3t0eXBlOiJvcF9tZW1iZXIifTpvcF9tZW1iZXJdfSx7bmFtZToib3BzX21lbWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9tZW1iZXJ0ZXh0Iik/e3R5cGU6Im9wX21lbWJlcnRleHQifTpvcF9tZW1iZXJ0ZXh0XX0se25hbWU6Im9wc19tZW1iZXIiLHN5bWJvbHM6WyJvcHNfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pnt2YXIgdTtyZXR1cm4odT10KGUpKT09PW51bGx8fHU9PT12b2lkIDA/dm9pZCAwOnUudmFsdWV9fSx7bmFtZToiZXhwcl9saXN0X2l0ZW0iLHN5bWJvbHM6WyJleHByX29yX3NlbGVjdCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2xpc3RfaXRlbSIsc3ltYm9sczpbImV4cHJfc3RhciJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9saXN0X2l0ZW0iXX0se25hbWU6ImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEkZWJuZiQxIiwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQyIiwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bZSwuLi51fHxbXV19LHtuYW1lOiJleHByX2xpc3RfcmF3IixzeW1ib2xzOlsiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOihbZV0pPT5lLm1hcCh0KX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfbGlzdF9pdGVtIl19LHtuYW1lOiJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQyIiwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9PltlLC4uLnV8fFtdXX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSIsc3ltYm9sczpbImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOihbZV0pPT5lLm1hcCh0KX0se25hbWU6ImV4cHJfb3Jfc2
14VsZWN0IixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9vcl9zZWxlY3QiLHN5bWJvbHM6WyJzZWxlY3Rpb24iXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9saXN0X21hbnkiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3X21hbnkiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsaXN0IixleHByZXNzaW9uczplWzBdfSl9LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9jYXNlJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FzZSRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQyIixzeW1ib2xzOlsiZXhwcl9jYXNlJGVibmYkMiIsImV4cHJfY2FzZV93aGVucyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQzIixzeW1ib2xzOlsiZXhwcl9jYXNlX2Vsc2UiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZXhwcl9jYXNlJGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FzZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nhc2UiKT97dHlwZToia3dfY2FzZSJ9Omt3X2Nhc2UsImV4cHJfY2FzZSRlYm5mJDEiLCJleHByX2Nhc2UkZWJuZiQyIiwiZXhwcl9jYXNlJGVibmYkMyIscy5sZXhlckFueS5oYXMoImt3X2VuZCIpP3t0eXBlOiJrd19lbmQifTprd19lbmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc2UiLHZhbHVlOmVbMV0sd2hlbnM6ZVsyXSxlbHNlOmVbM119KX0se25hbWU6ImV4cHJfY2FzZV93aGVucyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZW4iKT97dHlwZToia3dfd2hlbiJ9Omt3X3doZW4sImV4cHJfbm9zdGFyIixzLmxleGVyQW55Lmhhcygia3dfdGhlbiIpP3t0eXBlOiJrd190aGVuIn06a3dfdGhlbiwiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt3aGVuOmVbMV0sdmFsdWU6ZVszXX0pfSx7bmFtZToiZXhwcl9jYXNlX2Vsc2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19lbHNlIik/e3R5cGU6Imt3X2Vsc2UifTprd19lbHNlLCJleHByX25vc3RhciJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIixzLmxleGVyQW55LmhhcygiZG90Iik/e3R5cGU6ImRvdCJ9OmRvdF19LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsIndvcmRfb3Jfa2V5d29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6KDAsci51bmJveCkodChlWzFdKSksLi4uZVswXSYme3NjaGVtYTpkKGVbMF1bMF0pfX0pfSx7bmFtZToiZXhwcl9mbl9uYW1lIixzeW1ib2xzOlsiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbnkiKT97dHlwZToia3dfYW55In06a3dfYW55XX0se25hbWU6ImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc29tZSIpP3t0eXBlOiJrd19zb21lIn06a3dfc29tZV19LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTpkKHQoZSkpfSl9LHtuYW1lOiJleHByX2ZuX25hbWUiLHN5bWJvbHM6WyJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJ3b3JkX29yX2tleXdvcmQiLHN5bWJvbHM6WyJ3b3JkIl19LHtuYW1lOiJ3b3JkX29yX2tleXdvcmQiLHN5bWJvbHM6WyJ2YWx1ZV9rZXl3b3JkIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsZChlKSl9LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9jYXRhbG9nIik/e3R5cGU6Imt3X2N1cnJlbnRfY2F0YWxvZyJ9Omt3X2N1cnJlbnRfY2F0YWxvZ119LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9kYXRlIik/e3R5cGU6Imt3X2N1cnJlbnRfZGF0ZSJ9Omt3X2N1cnJlbnRfZGF0ZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9yb2xlIik/e3R5cGU6Imt3X2N1cnJlbnRfcm9sZSJ9Omt3X2N1cnJlbnRfcm9sZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lc3RhbXAiKT97dHlwZToia3dfY3VycmVudF90aW1lc3RhbXAifTprd19jdXJyZW50X3RpbWVzdGFtcF19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lIik/e3R5cGU6Imt3X2N1cnJlbnRfdGltZSJ9Omt3X2N1cnJlbnRfdGltZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbG9jYWx0aW1lc3RhbXAiKT97dHlwZToia3dfbG9jYWx0aW1lc3RhbXAifTprd19sb2NhbHRpbWVzdGFtcF19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbG9jYWx0aW1lIik/e3R5cGU6Imt3X2xvY2FsdGltZSJ9Omt3X2xvY2FsdGltZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc2Vzc2lvbl91c2VyIik/e3R5cGU6Imt3X3Nlc3Npb25fdXNlciJ9Omt3X3Nlc3Npb25fdXNlcl19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNlciIpP3t0eXBlOiJrd191c2VyIn06a3dfdXNlcl19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF91c2VyIik/e3R5cGU6Imt3X2N1cnJlbnRfdXNlciJ9Omt3X2N1cnJlbnRfdXNlcl19LHtuYW1lOiJleHByX3NwZWNpYWxfY2FsbHMiLHN5bWJvbHM6WyJzcGVfb3ZlcmxheSJdfSx7bmFtZToiZXhwcl9zcGVjaWFsX2NhbGxzIixzeW1ib2xzOlsic3BlX3N1YnN0cmluZyJdfSx7bmFtZToic3BlX292ZXJsYXkkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOnYoIm92ZXJsYXkiKX0se25hbWU6InNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW4sImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfb3ZlcmxheSRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19wbGFjaW5nIik/e3R5cGU6Imt3X3BsYWNpbmcifTprd19wbGFjaW5nLCJleHByX25vc3RhciJdfSx7bmFtZToic3BlX292ZXJsYXkkc3ViZXhwcmVzc2lvbiQ0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwiZXhwcl9ub3N0YXIiXX0se25hbWU6InNwZV9vdmVybGF5JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mb3IiKT97dHlwZToia3dfZm9yIn06a3dfZm9yLCJleHByX25vc3RhciJdfSx7bmFtZToic3BlX292ZXJsYXkkZWJuZiQxIixzeW1ib2xzOlsic3BlX292ZXJsYXkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzcGVfb3ZlcmxheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzcGVfb3ZlcmxheSIsc3ltYm9sczpbInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMSIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMiIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMyIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kNCIsInNwZV9vdmVybGF5JGVibmYkMSIscy5sZXhlckFueS5oYXMoInJwYXJlbiIpP3t0eXBlOiJycGFyZW4ifTpycGFyZW5dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im92ZXJsYXkiLHZhbHVlOmVbMV1bMV0scGxhY2luZzplWzJdWzFdLGZyb206ZVszXVsxXSwuLi5lWzRdJiZ7Zm9yOmVbNF1bMV19fSl9LHtuYW1lOiJzcGVfc3Vic3RyaW5nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2Vzczp2KCJzdWJzdHJpbmciKX0se25hbWU6InNwZV9zdWJzdHJpbmckc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbiwiZXhwcl9ub3N0YXIiXX0se25hbWU6InNwZV9zdWJzdHJpbmckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMSIsc3ltYm9sczpbInNwZV9zdWJzdHJpbmckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNwZV9zdWJzdHJpbmckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvciIpP3t0eXBlOiJrd19mb3IifTprd19mb3IsImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMiIsc3ltYm9sczpbInNwZV9zdWJzdHJpbmckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNwZV9zdWJzdHJpbmciLHN5bWJvbHM6WyJzcGVfc3Vic3RyaW5nJHN1YmV4cHJlc3Npb24kMSIsInNwZV9zdWJzdHJpbmckc3ViZXhwcmVzc2lvbiQyIiwic3BlX3N1YnN0cmluZyRlYm5mJDEiLCJzcGVfc3Vic3RyaW5nJGVibmYkMiIscy5sZXhlckFueS5oYXMoInJwYXJlbiIpP3t0eXBlOiJycGFyZW4ifTpycGFyZW5dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InN1YnN0cmluZyIsdmFsdWU6ZVsxXVsxXSwuLi5lWzJdJiZ7ZnJvbTplWzJdWzFdfSwuLi5lWzNdJiZ7Zm9yOmVbM11bMV19fSl9LHtuYW1lOiJ2YXJpb3VzX2JpbmFyaWVzIixzeW1ib2xzOlsia3dfYXQiLCJrd190aW1lIiwia3dfem9uZSJdLHBvc3Rwcm9jZXNzOigpPT4iQVQgVElNRSBaT05FIn0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9tb2RpZmllcnMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlLCJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIiwicW5hbWUiLCJscGFyZW4iLCJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QiLCJycGFyZW4iLCJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQzIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHU9ZVs2XS5maWx0ZXIoZj0+ImtpbmQiaW4gZiksYT1lWzZdLmZpbHRlcihmPT4hKCJraW5kImluIGYpKTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgdGFibGUiLC4uLmVbM10/e2lmTm90RXhpc3RzOiEwfTp7fSxuYW1lOmVbNF0sY29sdW1uczp1LC4uLnQoZVsxXSksLi4uYS5sZW5ndGg/e2NvbnN0cmFpbnRzOmF9Ont9LC4uLl8oZSl9KX19LHtuYW1lOiJjcmVhdGV0YWJsZV9tb2RpZmllcnMiLHN5bWJvbHM6WyJrd191bmxvZ2dlZCJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0/e3VubG9nZ2VkOiEwfTp7fX0se25hbWU6ImNyZWF0ZXRhYmxlX21vZGlmaWVycyIsc3ltYm9sczpbIm1fbG9jZ2xvYiJdfSx7bmFtZToiY3JlYXRldGFibGVfbW9kaWZpZXJzIixzeW1ib2xzOlsibV90bXAiXX0se25hbWU6ImNyZWF0ZXRhYmxlX21vZGlmaWVycyIsc3ltYm9sczpbIm1fbG9jZ2xvYiIsIm1fdG1wIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+KHsuLi5lLC4uLnV9KX0se25hbWU6Im1fbG9jZ2xvYiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19sb2NhbCJdfSx7bmFtZToibV9sb2NnbG9iJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2dsb2JhbCJdfSx7bmFtZToibV9sb2NnbG9iIixzeW1ib2xzOlsibV9sb2NnbG9iJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pih7bG9jYWxpdHk6ZChlKX0pfSx7bmFtZToibV90bXAkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcCJdfSx7bmFtZToibV90bXAkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcG9yYXJ5Il19LHtuYW1lOiJtX3RtcCIsc3ltYm9sczpbIm1fdG1wJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pih7dGVtcG9yYXJ5OiEwfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9uIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9ubGlzdCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIiwiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0IixzeW1ib2xzOlsiY3JlYXRldGFibGVfZGVjbGFyYXRpb24iLCJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCJdfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9saWtlIl19
14LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbiIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9uJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsIndvcmQiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PWVbMF0mJm0oZVswXVsxXSk7cmV0dXJuIHU/KDAsci50cmFjaykoZSx7Y29uc3RyYWludE5hbWU6dSwuLi50KGVbMV0pfSk6KDAsci50cmFjaykoZSx0KGVbMV0pKX19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50IixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2RlZiIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2RlZl9jaGVjayJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXkiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19wcmltYXJ5X2tleSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWZfdW5pcXVlIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWZfdW5pcXVlJHN1YmV4cHJlc3Npb24kMSIsImxwYXJlbiIsImNyZWF0ZXRhYmxlX2NvbGxpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOmQoZVswXSwiICIpLGNvbHVtbnM6ZVsyXS5tYXAobSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX2NoZWNrIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY2hlY2siKT97dHlwZToia3dfY2hlY2sifTprd19jaGVjaywiZXhwcl9wYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNoZWNrIixleHByOnQoZVsxXSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZm9yZWlnbmtleSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvcmVpZ24iKT97dHlwZToia3dfZm9yZWlnbiJ9Omt3X2ZvcmVpZ24sImt3X2tleSIsImNvbGxpc3RfcGFyZW4iLCJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZm9yZWlnbiBrZXkiLGxvY2FsQ29sdW1uczplWzJdLm1hcChtKSwuLi5lWzNdfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZXRhYmxlX3JlZmVyZW5jZXMkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfcmVmZXJlbmNlcyRlYm5mJDEiLCJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcmVmZXJlbmNlcyIpP3t0eXBlOiJrd19yZWZlcmVuY2VzIn06a3dfcmVmZXJlbmNlcywidGFibGVfcmVmIiwiY29sbGlzdF9wYXJlbiIsImNyZWF0ZXRhYmxlX3JlZmVyZW5jZXMkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7Zm9yZWlnblRhYmxlOnQoZVsxXSksZm9yZWlnbkNvbHVtbnM6ZVsyXS5tYXAobSksLi4uZVszXS5yZWR1Y2UoKHUsYSk9Pih7Li4udSwuLi5hfSkse30pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImt3X2RlbGV0ZSIsImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfb25fYWN0aW9uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b25EZWxldGU6XyhlKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uLCJrd191cGRhdGUiLCJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29uVXBkYXRlOl8oZSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZm9yZWlnbmtleV9vbnNvbWV0aW5nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Z1bGwiKT97dHlwZToia3dfZnVsbCJ9Omt3X2Z1bGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcGFydGlhbCJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2ltcGxlIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyIsc3ltYm9sczpbImt3X21hdGNoIiwiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bWF0Y2g6ZChfKGUpKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY2FzY2FkZSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vIiwia3dfYWN0aW9uIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X251bGwiKT97dHlwZToia3dfbnVsbCJ9Omt3X251bGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHRdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2V0IiwiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24iLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5kKGUsIiAiKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfY29sbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJpZGVudCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2xsaXN0JGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIiwiY3JlYXRldGFibGVfY29sbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbGxpc3QiLHN5bWJvbHM6WyJpZGVudCIsImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxhdGUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbiRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMiIsImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50Il0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbiIsc3ltYm9sczpbIndvcmQiLCJkYXRhX3R5cGUiLCJjcmVhdGV0YWJsZV9jb2x1bW4kZWJuZiQxIiwiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2tpbmQ6ImNvbHVtbiIsbmFtZTptKGVbMF0pLGRhdGFUeXBlOmVbMV0sLi4uZVsyXT97Y29sbGF0ZTplWzJdWzFdfTp7fSwuLi5lWzNdJiZlWzNdLmxlbmd0aD97Y29uc3RyYWludHM6ZVszXX06e319KX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2UkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfbGlrZSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9saWtlJGVibmYkMSIsImNyZWF0ZXRhYmxlX2xpa2Vfb3B0Il0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19saWtlIik/e3R5cGU6Imt3X2xpa2UifTprd19saWtlLCJxbmFtZSIsImNyZWF0ZXRhYmxlX2xpa2UkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7a2luZDoibGlrZSB0YWJsZSIsbGlrZTplWzFdLG9wdGlvbnM6ZVsyXX0pfSx7bmFtZToiY3JlYXRldGFibGVfbGlrZV9vcHQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfaW5jbHVkaW5nIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9saWtlX29wdCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19leGNsdWRpbmciXX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2Vfb3B0IixzeW1ib2xzOlsiY3JlYXRldGFibGVfbGlrZV9vcHQkc3ViZXhwcmVzc2lvbiQxIiwiY3JlYXRldGFibGVfbGlrZV9vcHRfdmFsIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dmVyYjpkKGVbMF0pLG9wdGlvbjpkKGVbMV0pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9saWtlX29wdF92YWwiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6RSgiZGVmYXVsdHMiLCJjb25zdHJhaW50cyIsImluZGV4ZXMiLCJzdG9yYWdlIiwiY29tbWVudHMiKX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2Vfb3B0X3ZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25zdHJhaW50Iik/e3R5cGU6Imt3X2NvbnN0cmFpbnQifTprd19jb25zdHJhaW50LCJ3b3JkIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgdT1lWzBdJiZtKGVbMF1bMV0pO3JldHVybiB1PygwLHIudHJhY2spKGUse2NvbnN0cmFpbnROYW1lOnUsLi4udChlWzFdKX0pOigwLHIudHJhY2spKGUsdChlWzFdKSl9fSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1bmlxdWUifSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJrd19wcmltYXJ5X2tleSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InByaW1hcnkga2V5In0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsia3dfbm90X251bGwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJub3QgbnVsbCJ9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50X2RlZiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X251bGwiKT97dHlwZToia3dfbnVsbCJ9Omt3X251bGxdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im51bGwifSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0LCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZGVmYXVsdCIsZGVmYXVsdDp0KGVbMV0pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jaGVjayIpP3t0eXBlOiJrd19jaGVjayJ9Omt3X2NoZWNrLCJleHByX3BhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY2hlY2siLGV4cHI6dChlWzFdKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsiY3JlYXRldGFibGVfcmVmZXJlbmNlcyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZmVyZW5jZSIsLi4udChlKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsiYWx0ZXJjb2xfZ2VuZXJhdGVkIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2xsYXRlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY29sbGF0ZSIpP3t0eXBlOiJrd19jb2xsYXRlIn06a3dfY29sbGF0ZSwicXVhbGlmaWVkX25hbWUiXX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOnYoImluaGVyaXRzIil9LHtuYW1lOiJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsicW5hbWUiXX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfb3B0cyRtYW
14Nyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQyIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bdChlKSwuLi51Lm1hcCh0KXx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfb3B0cyIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMkc3ViZXhwcmVzc2lvbiQxIiwibHBhcmVuIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2luaGVyaXRzOmVbMl19KX0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZywiaWRlbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfd2l0aCJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNiIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3RibHNwYWNlIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ3IixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfcHJlZGljYXRlIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDciLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQxIiwia3dfaW5kZXgiLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQyIiwiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIscy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sInRhYmxlX3JlZiIsImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQiLCJscGFyZW4iLCJjcmVhdGVpbmRleF9leHByZXNzaW9ucyIsInJwYXJlbiIsImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDUiLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ2IiwiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSBpbmRleCIsLi4uZVsxXSYme3VuaXF1ZTohMH0sLi4uZVszXSYme2lmTm90RXhpc3RzOiEwfSwuLi5lWzRdJiZ7aW5kZXhOYW1lOm0oZVs0XSl9LHRhYmxlOmVbNl0sLi4uZVs3XSYme3VzaW5nOm0oZVs3XSl9LGV4cHJlc3Npb25zOmVbOV0sLi4uZVsxMV0mJnt3aXRoOmVbMTFdfSwuLi5lWzEyXSYme3RhYmxlc3BhY2U6dChlWzEyXSl9LC4uLmVbMTNdJiZ7d2hlcmU6dChlWzEzXSl9fSl9LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9ucyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9ucyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJjcmVhdGVpbmRleF9leHByZXNzaW9uIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbnMiLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9leHByZXNzaW9uIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbnMkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W2UsLi4udXx8W11dfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2Jhc2ljIl19LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbGxhdGUiKT97dHlwZToia3dfY29sbGF0ZSJ9Omt3X2NvbGxhdGUsInF1YWxpZmllZF9uYW1lIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDIiLHN5bWJvbHM6WyJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzYyIpP3t0eXBlOiJrd19hc2MifTprd19hc2NdfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVzYyIpP3t0eXBlOiJrd19kZXNjIn06a3dfZGVzY119LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19maXJzdCJdfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2xhc3QiXX0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X251bGxzIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkNCIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24iLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9leHByZXNzaW9uJHN1YmV4cHJlc3Npb24kMSIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDIiLCJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7ZXhwcmVzc2lvbjp0KGVbMF0pLC4uLmVbMV0mJntjb2xsYXRlOnQoZVsxXSl9LC4uLmVbMl0mJntvcGNsYXNzOnQoZVsyXSl9LC4uLmVbM10mJntvcmRlcjp0KGVbM10pLnZhbHVlfSwuLi5lWzRdJiZ7bnVsbHM6dChlWzRdKX19KX0se25hbWU6ImNyZWF0ZWluZGV4X3ByZWRpY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmUsImV4cHIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3dpdGhfaXRlbSJdfSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X3dpdGgkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3dpdGgkbWFjcm9jYWxsJDIiLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9Plt0KGUpLC4uLnUubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwibHBhcmVuIiwiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMil9LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic3RyaW5nIl19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiaW50Il19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0iLHN5bWJvbHM6WyJpZGVudCIscy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXEsImNyZWF0ZWluZGV4X3dpdGhfaXRlbSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtwYXJhbWV0ZXI6ZChlWzBdKSx2YWx1ZTp0KGVbMl0pLnRvU3RyaW5nKCl9KX0se25hbWU6ImNyZWF0ZWluZGV4X3RibHNwYWNlIixzeW1ib2xzOlsia3dfdGFibGVzcGFjZSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlZXh0
14ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGhdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NjaGVtYSIsIndvcmQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6WyJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkNCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd192ZXJzaW9uIiwic3RyaW5nIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOlsiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDUkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwic3RyaW5nIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDUkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X2V4dGVuc2lvbiIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQxIiwid29yZCIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQyIiwiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLCJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkNCIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIGV4dGVuc2lvbiIsLi4uZVsyXT97aWZOb3RFeGlzdHM6ITB9Ont9LGV4dGVuc2lvbjptKGVbM10pLC4uLmVbNV0/e3NjaGVtYTptKGVbNV0pfTp7fSwuLi5lWzZdP3t2ZXJzaW9uOnkoZVs2XSl9Ont9LC4uLmVbN10/e2Zyb206eShlWzddKX06e319KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYWxsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2NvbW1pdCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3JvbGxiYWNrIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2FsbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfdGFibGVzcGFjZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3Nob3ciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYWxsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zdGFydCIsImt3X3RyYW5zYWN0aW9uIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3N0YXJ0X3RyYW5zYWN0aW9uIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzdGFydCB0cmFuc2FjdGlvbiJ9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfY29tbWl0IixzeW1ib2xzOlsia3dfY29tbWl0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY29tbWl0In0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19yb2xsYmFjayIsc3ltYm9sczpbImt3X3JvbGxiYWNrIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicm9sbGJhY2sifSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3RhYmxlc3BhY2UiLHN5bWJvbHM6WyJrd190YWJsZXNwYWNlIiwid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRhYmxlc3BhY2UiLHRhYmxlc3BhY2U6bShlWzFdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfbmFtZXMiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0IixzeW1ib2xzOlsia3dfc2V0Iiwic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lIixzeW1ib2xzOlsia3dfdGltZSIsImt3X3pvbmUiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZV92YWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgdGltZXpvbmUiLHRvOmVbMl19KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzdHJpbmciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ2YWx1ZSIsdmFsdWU6dChlWzBdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdGltZXpvbmVfdmFsIixzeW1ib2xzOlsia3dfbG9jYWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsb2NhbCJ9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHRdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRlZmF1bHQifSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZV92YWwiLHN5bWJvbHM6WyJrd19pbnRlcnZhbCIsInN0cmluZyIsImt3X2hvdXIiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJrd19taW51dGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJpbnRlcnZhbCIsdmFsdWU6KDAsci51bmJveCkoZVsxXSl9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzIixzeW1ib2xzOlsia3dfbmFtZXMiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF9uYW1lc192YWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgbmFtZXMiLHRvOmVbMV19KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzdHJpbmciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ2YWx1ZSIsdmFsdWU6dChlWzBdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXFdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG9dfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlIixzeW1ib2xzOlsiaWRlbnQiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF9zaW1wbGUkc3ViZXhwcmVzc2lvbiQxIiwic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic2V0Iix2YXJpYWJsZTptKGVbMF0pLHNldDooMCxyLnVuYm94KShlWzJdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWZhdWx0In0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJjb21tYSIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwkZWJuZiQxIiwic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsaXN0Iix2YWx1ZXM6W2VbMF0sLi4uZVsxXXx8W11dfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0cmluZyJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InZhbHVlIix2YWx1ZTp0KGUpfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXckc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdHJ1ZSIpP3t0eXBlOiJrd190cnVlIn06a3dfdHJ1ZV19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXckc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaWRlbnRpZmllciIsbmFtZTp0KGUpLnZhbHVlfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicXVvdGVkX3dvcmQiKT97dHlwZToicXVvdGVkX3dvcmQifTpxdW90ZWRfd29yZF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaWRlbnRpZmllciIsZG91YmxlUXVvdGVkOiEwLG5hbWU6dChlKS52YWx1ZX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zaG93IixzeW1ib2xzOlsia3dfc2hvdyIsImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic2hvdyIsdmFyaWFibGU6bShlWzFdKX0pfSx7bmFtZToiY3JlYXRlX3NjaGVtYSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlLCJrd19zY2hlbWEiXX0se25hbWU6ImNyZWF0ZV9zY2hlbWEkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX3NjaGVtYSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2NoZW1hIixzeW1ib2xzOlsiY3JlYXRlX3NjaGVtYSRzdWJleHByZXNzaW9uJDEiLCJjcmVhdGVfc2NoZW1hJGVibmYkMSIsImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIHNjaGVtYSIsbmFtZTptKGVbMl0pLC4uLmVbMV0/e2lmTm90RXhpc3RzOiEwfTp7fX0pfSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJkZWJ1ZyIsImxvZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXhjZXB0aW9uIil9LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsicmFpc2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInJhaXNlX3VzaW5nIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19yYWlzZSIsInJhaXNlX3N0YXRlbWVudCRlYm5mJDEiLCJzdHJpbmciLCJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyIiwicmFpc2Vfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJhaXNlIixmb3JtYXQ6ZChlWzJdKSwuLi5lWzFdJiZ7bGV2ZWw6ZChlWzFdKX0sLi4uZVszXSYmZVszXS5sZW5ndGgmJntmb3JtYXRFeHByczplWzNdfSwuLi5lWzRdJiZlWzRdLmxlbmd0aCYme3VzaW5nOmVbNF19fSl9LHtuYW1lOiJyYWlzZV91c2luZyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInJhaXNlX3VzaW5nX29uZSJdfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSIsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJyYWlzZV91c2luZyRtYWNyb2NhbGwkMiIsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9Plt0KGUpLC4uLnUubWFwKHQpfHxbXV19LHtuYW1lOiJyYWlzZV91c2luZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VzaW5nIik/e3R5cGU6Imt3X3VzaW5nIn06a3dfdXNpbmcsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3VzaW5nX29uZSIsc3ltYm9sczpbInJhaXNlX3VzaW5nX3doYXQiLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZTpkKGVbMF0pLHZhbHVlOmVbMl19KX0se25hbWU6InJhaXNlX3VzaW5nX3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlXX0se25hbWU6InJhaXNlX3VzaW5nX3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJtZXNzYWdlIiwiZGV0YWlsIiwiaGludCIsImVycmNvZGUiLCJjb2x1bW4iLCJjb25zdHJhaW50Iiwi
14ZGF0YXR5cGUiLCJzY2hlbWEiKX0se25hbWU6ImNvbW1lbnRfc3RhdGVtZW50IixzeW1ib2xzOlsia3dfY29tbWVudCIscy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImNvbW1lbnRfd2hhdCIscy5sZXhlckFueS5oYXMoImt3X2lzIik/e3R5cGU6Imt3X2lzIn06a3dfaXMsInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNvbW1lbnQiLGNvbW1lbnQ6KDAsci51bmJveCkoXyhlKSksb246dChlWzJdKX0pfSx7bmFtZToiY29tbWVudF93aGF0IixzeW1ib2xzOlsiY29tbWVudF93aGF0X2NvbCJdfSx7bmFtZToiY29tbWVudF93aGF0IixzeW1ib2xzOlsiY29tbWVudF93aGF0X25tIl19LHtuYW1lOiJjb21tZW50X3doYXRfbm0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZV19LHtuYW1lOiJjb21tZW50X3doYXRfbm0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbWF0ZXJpYWxpemVkIiwia3dfdmlldyJdfSx7bmFtZToiY29tbWVudF93aGF0X25tJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOkUoImRhdGFiYXNlIiwiaW5kZXgiLCJ0cmlnZ2VyIiwidHlwZSIsInZpZXciKX0se25hbWU6ImNvbW1lbnRfd2hhdF9ubSIsc3ltYm9sczpbImNvbW1lbnRfd2hhdF9ubSRzdWJleHByZXNzaW9uJDEiLCJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ZChlWzBdKSxuYW1lOmVbMV19KX0se25hbWU6ImNvbW1lbnRfd2hhdF9jb2wiLHN5bWJvbHM6WyJrd19jb2x1bW4iLCJxY29sdW1uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY29sdW1uIixjb2x1bW46XyhlKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdHJhbnNhY3Rpb24iXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3dvcmsiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbl9kZWYiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQyIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiIsc3ltYm9sczpbImt3X2JlZ2luIiwic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJlZ2luIiwuLi5lWzJdLnJlZHVjZSgodSxhKT0+KHsuLi50KHUpLC4uLnQoYSl9KSx7fSl9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19pc29sYXRpb24iLCJrd19sZXZlbCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImt3X3NlcmlhbGl6YWJsZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6digicmVwZWF0YWJsZSIpfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIiwia3dfcmVhZCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6digiY29tbWl0dGVkIil9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsia3dfcmVhZCIsInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2Vzczp2KCJ1bmNvbW1pdHRlZCIpfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImt3X3JlYWQiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMyJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMSIsInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtpc29sYXRpb25MZXZlbDpkKGVbMV0sIiAiKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl93cml0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JlYWQiLCJrd193cml0ZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl93cml0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JlYWQiLHMubGV4ZXJBbnkuaGFzKCJrd19vbmx5Iik/e3R5cGU6Imt3X29ubHkifTprd19vbmx5XX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt3cml0ZWFibGU6ZChlLCIgIil9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5fZGVmJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2RlZiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2RlZiIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fZGVmJGVibmYkMSIscy5sZXhlckFueS5oYXMoImt3X2RlZmVycmFibGUiKT97dHlwZToia3dfZGVmZXJyYWJsZSJ9Omt3X2RlZmVycmFibGVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2RlZmVycmFibGU6IWVbMF19KX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfaW5zZXJ0IixzLmxleGVyQW55Lmhhcygia3dfaW50byIpP3t0eXBlOiJrd19pbnRvIn06a3dfaW50b119LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbImNvbGxpc3RfcGFyZW4iXSxwb3N0cHJvY2VzczpufSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc3lzdGVtIl19
14LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNlciIpP3t0eXBlOiJrd191c2VyIn06a3dfdXNlcl19LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19vdmVycmlkaW5nIiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsImt3X3ZhbHVlIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0aW9uIl19LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3Rpb25fcGFyZW4iXX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQzIixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb24iKT97dHlwZToia3dfb24ifTprd19vbiwia3dfY29uZmxpY3QiLCJpbnNlcnRfb25fY29uZmxpY3QiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50JGVibmYkNCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkNSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50JGVibmYkNSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50IixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImluc2VydF9zdGF0ZW1lbnQkZWJuZiQxIiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIiLCJpbnNlcnRfc3RhdGVtZW50JGVibmYkMyIsImluc2VydF9zdGF0ZW1lbnQkZWJuZiQ0IiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgdT1lWzJdJiZlWzJdLm1hcChtKSxhPWQoZVszXSksZj10KGVbNF0pLGc9ZVs1XSxPPWVbNl07cmV0dXJuKDAsci50cmFjaykoZSx7dHlwZToiaW5zZXJ0IixpbnRvOnQoZVsxXSksaW5zZXJ0OmYsLi4uYSYme292ZXJyaWRpbmc6YX0sLi4udSYme2NvbHVtbnM6dX0sLi4uTyYme3JldHVybmluZzpPfSwuLi5nJiZ7b25Db25mbGljdDpnfX0pfX0se25hbWU6Imluc2VydF92YWx1ZXMkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJpbnNlcnRfdmFsdWUiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEiLHN5bWJvbHM6WyJpbnNlcnRfdmFsdWVzJGVibmYkMSIsImluc2VydF92YWx1ZXMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJpbnNlcnRfdmFsdWVzIixzeW1ib2xzOlsiaW5zZXJ0X3ZhbHVlIiwiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bZSwuLi51fHxbXV19LHtuYW1lOiJpbnNlcnRfdmFsdWUiLHN5bWJvbHM6WyJscGFyZW4iLCJpbnNlcnRfZXhwcl9saXN0X3JhdyIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJleHByX29yX3NlbGVjdCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLHN5bWJvbHM6WyJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLCJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6Imluc2VydF9leHByX2xpc3RfcmF3IixzeW1ib2xzOlsiZXhwcl9vcl9zZWxlY3QiLCJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bZSwuLi51fHxbXV19LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3QkZWJuZiQxIixzeW1ib2xzOlsiaW5zZXJ0X29uX2NvbmZsaWN0X3doYXQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiaW5zZXJ0X29uX2NvbmZsaWN0JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6Imluc2VydF9vbl9jb25mbGljdCIsc3ltYm9sczpbImluc2VydF9vbl9jb25mbGljdCRlYm5mJDEiLCJpbnNlcnRfb25fY29uZmxpY3RfZG8iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHsuLi5lWzBdP3tvbjp0KGVbMF0pfTp7fSwuLi5lWzFdfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3Rfd2hhdCIsc3ltYm9sczpbImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJvbiBleHByIixleHByczplWzFdfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3Rfd2hhdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24scy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsInFuYW1lIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToib24gY29uc3RyYWludCIsY29uc3RyYWludDpfKGUpfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3RfZG8iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kbyIpP3t0eXBlOiJrd19kbyJ9Omt3X2RvLCJrd19ub3RoaW5nIl0scG9zdHByb2Nlc3M6ZT0+KHtkbzoiZG8gbm90aGluZyJ9KX0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kbyIpP3t0eXBlOiJrd19kbyJ9Omt3X2RvLCJrd191cGRhdGUiLCJrd19zZXQiXX0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2hlcmUiKT97dHlwZToia3dfd2hlcmUifTprd193aGVyZSwiZXhwciJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3RfZG8kZWJuZiQxIixzeW1ib2xzOlsiaW5zZXJ0X29uX2NvbmZsaWN0X2RvJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiaW5zZXJ0X29uX2NvbmZsaWN0X2RvJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyIsc3ltYm9sczpbImluc2VydF9vbl9jb25mbGljdF9kbyRzdWJleHByZXNzaW9uJDEiLCJ1cGRhdGVfc2V0X2xpc3QiLCJpbnNlcnRfb25fY29uZmxpY3RfZG8kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KHtkbzp7c2V0czplWzFdfSwuLi5lWzJdJiZ7d2hlcmU6ZVsyXX19KX0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sInNlbGVjdF9mcm9tX3N1YmplY3QiXSxwb3N0cHJvY2VzczpffSx7bmFtZToidXBkYXRlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToidXBkYXRlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbInNlbGVjdF93aGVyZSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3JldHVybmluZyIpP3t0eXBlOiJrd19yZXR1cm5pbmcifTprd19yZXR1cm5pbmcsInNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd191cGRhdGUiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImt3X3NldCIsInVwZGF0ZV9zZXRfbGlzdCIsInVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQxIiwidXBkYXRlX3N0YXRlbWVudCRlYm5mJDIiLCJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PXQoZVs0XSksYT10KGVbNV0pLGY9ZVs2XTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1cGRhdGUiLHRhYmxlOnQoZVsxXSksc2V0czplWzNdLC4uLmE/e3doZXJlOmF9Ont9LC4uLnU/e2Zyb206dX06e30sLi4uZj97cmV0dXJuaW5nOmZ9Ont9fSl9fSx7bmFtZToidXBkYXRlX3NldF9saXN0JGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6InVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJ1cGRhdGVfc2V0Il0scG9zdHByb2Nlc3M6X30se25hbWU6InVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEiLHN5bWJvbHM6WyJ1cGRhdGVfc2V0X2xpc3QkZWJuZiQxIiwidXBkYXRlX3NldF9saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToidXBkYXRlX3NldF9saXN0IixzeW1ib2xzOlsidXBkYXRlX3NldCIsInVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT57Y29uc3QgYT1bXTtmb3IoY29uc3QgZiBvZltlLC4uLnV8fFtdXSl7Y29uc3QgZz10KGYpO0FycmF5LmlzQXJyYXkoZyk/YS5wdXNoKC4uLmcpOmEucHVzaChnKX1yZXR1cm4gYX19LHtuYW1lOiJ1cGRhdGVfc2V0IixzeW1ib2xzOlsidXBkYXRlX3NldF9vbmUiXX0se25hbWU6InVwZGF0ZV9zZXQiLHN5bWJvbHM6WyJ1cGRhdGVfc2V0X211bHRpcGxlIl19LHtuYW1lOiJ1cGRhdGVfc2V0X29uZSIsc3ltYm9sczpbImlkZW50IixzLmxleGVyQW55Lmhhcygib3BfZXEiKT97dHlwZToib3BfZXEifTpvcF9lcSwiZXhwciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLHtjb2x1bW46bShlWzBdKSx2YWx1ZTp0KGVbMl0pfSl9LHtuYW1lOiJ1cGRhdGVfc2V0X211bHRpcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToidXBkYXRlX3NldF9tdWx0aXBsZSIsc3ltYm9sczpbImNvbGxpc3RfcGFyZW4iLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJ1cGRhdGVfc2V0X211bHRpcGxlJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PWVbMF0sYT1lWzJdO2lmKHUubGVuZ3RoIT09YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgdmFsdWVzIik7cmV0dXJuKDAsci5ib3gpKGUsdS5tYXAoKGYsZyk9Pih7Y29sdW1uOm0oZiksdmFsdWU6dChhW2ddKX0pKSl9fSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZleGlzdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb25seSIpP3t0eXBlOiJrd19vbmx5In06a3dfb25seV0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVydGFibGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfc3RhdGVtZW50IixzeW1ib2xzOlsia3dfYWx0ZXIiLHMubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlLCJhbHRlcnRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLCJhbHRlcnRhYmxlX3N0YXRlbWVudCRlYm5mJDIiLCJ0YWJsZV9yZWYiLCJhbHRlcnRhYmxlX2FjdGlvbnMiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhbHRlciB0YWJsZSIsLi4uZVsyXT97aWZFeGlzdHM6ITB9Ont9LC4uLmVbM10/e29ubHk6ITB9Ont9LHRhYmxlOnQoZVs0XSksY2hhbmdlczooMCxyLnVuYm94KShlWzVdKS5tYXAodCl9KX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbnMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwiYWx0ZXJ0YWJsZV9hY3Rpb24iXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb25zJGVibmYkMSIsc3ltYm9sczpbImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiLCJhbHRlcnRhYmxlX2FjdGlvbnMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbnMiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2FjdGlvbiIsImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bZSwuLi51fHxbXV19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfcmVuYW1lX3RhYmxlIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfcmVuYW1lX2NvbHVtbiJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcnRhYmxlX3JlbmFtZV9jb25zdHJhaW50Il19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWRkX2NvbHVtbiJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWx0ZXJfY29sdW1uIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWRkX2NvbnN0cmFpbnQiXX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9uIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9kcm9wX2NvbnN0cmFpbnQiXX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9uIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9vd25lciJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9yZW5
14hbWVfdGFibGUiLHN5bWJvbHM6WyJrd19yZW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJ3b3JkIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIix0bzptKF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsia3dfY29sdW1uIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVydGFibGVfcmVuYW1lX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4iLHN5bWJvbHM6WyJrd19yZW5hbWUiLCJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4kZWJuZiQxIiwiaWRlbnQiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJpZGVudCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlbmFtZSBjb2x1bW4iLGNvbHVtbjptKGVbMl0pLHRvOm0oXyhlKSl9KX0se25hbWU6ImFsdGVydGFibGVfcmVuYW1lX2NvbnN0cmFpbnQiLHN5bWJvbHM6WyJrd19yZW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJrd19jb25zdHJhaW50Iik/e3R5cGU6Imt3X2NvbnN0cmFpbnQifTprd19jb25zdHJhaW50LCJpZGVudCIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIGNvbnN0cmFpbnQiLGNvbnN0cmFpbnQ6bShlWzJdKSx0bzptKF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsia3dfY29sdW1uIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVydGFibGVfYWRkX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJ0YWJsZV9hZGRfY29sdW1uJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfYWRkX2NvbHVtbiIsc3ltYm9sczpbImt3X2FkZCIsImFsdGVydGFibGVfYWRkX2NvbHVtbiRlYm5mJDEiLCJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQyIiwiY3JlYXRldGFibGVfY29sdW1uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYWRkIGNvbHVtbiIsLi4uZVsyXT97aWZOb3RFeGlzdHM6ITB9Ont9LGNvbHVtbjp0KGVbM10pfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbImt3X2NvbHVtbiJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsia3dfaWZleGlzdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY2FzY2FkZSJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uIixzeW1ib2xzOlsia3dfZHJvcCIsImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQxIiwiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDIiLCJpZGVudCIsImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCBjb2x1bW4iLC4uLmVbMl0/e2lmRXhpc3RzOiEwfTp7fSxjb2x1bW46bShlWzNdKSwuLi5lWzRdP3tiZWhhdmlvdXI6ZChlWzRdLCIgIil9Ont9fSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FsdGVyX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6WyJrd19jb2x1bW4iXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJ0YWJsZV9hbHRlcl9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJ0YWJsZV9hbHRlcl9jb2x1bW4iLHN5bWJvbHM6WyJrd19hbHRlciIsImFsdGVydGFibGVfYWx0ZXJfY29sdW1uJGVibmYkMSIsImlkZW50IiwiYWx0ZXJjb2wiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhbHRlciBjb2x1bW4iLGNvbHVtbjptKGVbMl0pLGFsdGVyOnQoZVszXSl9KX0se25hbWU6ImFsdGVyY29sJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zZXQiLCJrd19kYXRhIl19LHtuYW1lOiJhbHRlcmNvbCRlYm5mJDEiLHN5bWJvbHM6WyJhbHRlcmNvbCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVyY29sJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVyY29sIixzeW1ib2xzOlsiYWx0ZXJjb2wkZWJuZiQxIiwia3dfdHlwZSIsImRhdGFfdHlwZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InNldCB0eXBlIixkYXRhVHlwZTp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImt3X3NldCIscy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHQsImV4cHIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgZGVmYXVsdCIsZGVmYXVsdDp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImt3X2Ryb3AiLHMubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkcm9wIGRlZmF1bHQifSl9LHtuYW1lOiJhbHRlcmNvbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zZXQiXX0se25hbWU6ImFsdGVyY29sJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2Ryb3AiXX0se25hbWU6ImFsdGVyY29sIixzeW1ib2xzOlsiYWx0ZXJjb2wkc3ViZXhwcmVzc2lvbiQxIiwia3dfbm90X251bGwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOmQoZSwiICIpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9hZGQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiYWx0ZXJ0YWJsZV9hZGRfY29uc3RyYWludCIsc3ltYm9sczpbImt3X2FkZCIsImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhZGQgY29uc3RyYWludCIsY29uc3RyYWludDp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdHJpY3QiXX0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50IixzeW1ib2xzOlsia3dfZHJvcCIscy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMSIsImlkZW50IiwiYWx0ZXJ0YWJsZV9kcm9wX2NvbnN0cmFpbnQkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCBjb25zdHJhaW50IiwuLi5lWzJdP3tpZkV4aXN0czohMH06e30sY29uc3RyYWludDptKGVbM10pLC4uLmVbNF0/e2JlaGF2aW91cjpkKGVbNF0sIiAiKX06e319KX0se25hbWU6ImFsdGVydGFibGVfb3duZXIiLHN5bWJvbHM6WyJrd19vd25lciIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToib3duZXIiLHRvOm0oXyhlKSl9KX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9hZGQiLHN5bWJvbHM6WyJrd19hZGQiLCJhbHRlcmNvbF9nZW5lcmF0ZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19hbHdheXMiXX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfYnkiLHMubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDEiLHN5bWJvbHM6WyJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImt3X2lkZW50aXR5Il19LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImFsdGVyY29sX2dlbmVyYXRlZF9zZXEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJGVibmYkMiIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQiLHN5bWJvbHM6WyJrd19nZW5lcmF0ZWQiLCJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxIiwiYWx0ZXJjb2xfZ2VuZXJhdGVkJHN1YmV4cHJlc3Npb24kMSIsImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhZGQgZ2VuZXJhdGVkIiwuLi5lWzFdJiZ7YWx3YXlzOmQoZVsxXSwiICIpfSwuLi5lWzNdJiZ7c2VxdWVuY2U6dChlWzNdKX19KX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NlcXVlbmNlIiwia3dfbmFtZSIsInF1YWxpZmllZF9uYW1lIl19LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMSIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQyIixzeW1ib2xzOltdfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSRlYm5mJDIiLHN5bWJvbHM6WyJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMiIsImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxIiwiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgdT17Li4uZVswXSYme25hbWU6dChfKGVbMF0pKX19O3JldHVybiBDKHUsZVsxXSksKDAsci50cmFjaykoZSx1KX19LHtuYW1lOiJhbHRlcmluZGV4X3
14N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJhbHRlcmluZGV4X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcmluZGV4X3N0YXRlbWVudCIsc3ltYm9sczpbImt3X2FsdGVyIiwia3dfaW5kZXgiLCJhbHRlcmluZGV4X3N0YXRlbWVudCRlYm5mJDEiLCJ0YWJsZV9yZWYiLCJhbHRlcmluZGV4X2FjdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImFsdGVyIGluZGV4IiwuLi5lWzJdP3tpZkV4aXN0czohMH06e30saW5kZXg6dChlWzNdKSxjaGFuZ2U6dChlWzRdKX0pfSx7bmFtZToiYWx0ZXJpbmRleF9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcmluZGV4X3JlbmFtZSJdfSx7bmFtZToiYWx0ZXJpbmRleF9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcmluZGV4X3NldF90YWJsZXNwYWNlIl19LHtuYW1lOiJhbHRlcmluZGV4X3JlbmFtZSIsc3ltYm9sczpbImt3X3JlbmFtZSIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sIndvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJyZW5hbWUiLHRvOm0oXyhlKSl9KX0se25hbWU6ImFsdGVyaW5kZXhfc2V0X3RhYmxlc3BhY2UiLHN5bWJvbHM6WyJrd19zZXQiLCJrd190YWJsZXNwYWNlIiwid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InNldCB0YWJsZXNwYWNlIix0YWJsZXNwYWNlOm0oXyhlKSl9KX0se25hbWU6ImRlbGV0ZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJkZWxldGVfZGVsZXRlIl19LHtuYW1lOiJkZWxldGVfc3RhdGVtZW50IixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlIl19LHtuYW1lOiJkZWxldGVfZGVsZXRlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2RlbGV0ZSIscy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb21dfSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfd2hlcmUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWxldGVfZGVsZXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiLHN5bWJvbHM6WyJkZWxldGVfZGVsZXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWxldGVfZGVsZXRlIixzeW1ib2xzOlsiZGVsZXRlX2RlbGV0ZSRzdWJleHByZXNzaW9uJDEiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImRlbGV0ZV9kZWxldGUkZWJuZiQxIiwiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgdT1lWzJdLGE9ZVszXTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWxldGUiLGZyb206dChlWzFdKSwuLi51P3t3aGVyZTp1fTp7fSwuLi5hP3tyZXR1cm5pbmc6YX06e319KX19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlIik/e3R5cGU6Imt3X3RhYmxlIn06a3dfdGFibGVdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd190cnVuY2F0ZSIsImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJ0YWJsZV9yZWYiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJG1hY3JvY2FsbCQxJGVibmYkMSIsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMiIsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bdChlKSwuLi51Lm1hcCh0KXx8W11dfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdGFydCJdfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY29udGludWUiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIiwia3dfaWRlbnRpdHkiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRlYm5mJDEiLHN5bWJvbHM6WyJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkZWJuZiQyIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSIsc3ltYm9sczpbImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEiLCJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEiLCJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxIiwiZGVsZXRlX3RydW5jYXRlJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRydW5jYXRlIHRhYmxlIix0YWJsZXM6ZVsxXSwuLi5lWzJdJiZ7aWRlbnRpdHk6ZChlWzJdWzBdKX0sLi4uZVszXSYme2Nhc2NhZGU6ZChlWzNdKX19KX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXAiXX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXBvcmFyeSJdfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbImt3X2lmbm90ZXhpc3RzIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQzIiwiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3JlYXRlIik/e3R5cGU6Imt3X2NyZWF0ZSJ9Omt3X2NyZWF0ZSwiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLCJrd19zZXF1ZW5jZSIsImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQyIiwicXVhbGlmaWVkX25hbWUiLCJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCB1PXt0eXBlOiJjcmVhdGUgc2VxdWVuY2UiLC4uLmVbMV0mJnt0ZW1wOiEwfSwuLi5lWzNdJiZ7aWZOb3RFeGlzdHM6ITB9LG5hbWU6dChlWzRdKSxvcHRpb25zOnt9fTtyZXR1cm4gQyh1Lm9wdGlvbnMsZVs1XSksKDAsci50cmFjaykoZSx1KX19LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXMiKT97dHlwZToia3dfYXMifTprd19hcywiZGF0YV90eXBlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsWyJhcyIsZVsxXV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEiLHN5bWJvbHM6WyJrd19ieSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJrd19pbmNyZW1lbnQiLCJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsImludCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsiaW5jcmVtZW50QnkiLGVbMl1dKX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2VfbWludmFsdWUiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbIm1pblZhbHVlIixlWzBdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsWyJtYXhWYWx1ZSIsZVswXV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsia3dfc3RhcnQiLCJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMiIsImludCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsic3RhcnRXaXRoIixlWzJdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsia3dfY2FjaGUiLCJpbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbImNhY2hlIixlWzFdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMyIsc3ltYm9sczpbImt3X25vIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24kZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24kZWJuZiQzIiwia3dfY3ljbGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbImN5Y2xlIixkKGUsIiAiKV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9vd25lZ
14F9ieSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsib3duZWRCeSIsdChlKV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21pbnZhbHVlIixzeW1ib2xzOlsia3dfbWludmFsdWUiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21pbnZhbHVlIixzeW1ib2xzOlsia3dfbm8iLCJrd19taW52YWx1ZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJubyBtaW52YWx1ZSIpfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIixzeW1ib2xzOlsia3dfbWF4dmFsdWUiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIixzeW1ib2xzOlsia3dfbm8iLCJrd19tYXh2YWx1ZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJubyBtYXh2YWx1ZSIpfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX293bmVkX2J5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vbmUiXX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vd25lZF9ieSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJxY29sdW1uIl19LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3duZWRfYnkiLHN5bWJvbHM6WyJrd19vd25lZCIsImt3X2J5IiwiY3JlYXRlX3NlcXVlbmNlX293bmVkX2J5JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLHQoXyhlKSkpfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbImt3X2lmZXhpc3RzIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19hbHRlciIsImt3X3NlcXVlbmNlIiwiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSIsInF1YWxpZmllZF9uYW1lIiwiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgdT17dHlwZToiYWx0ZXIgc2VxdWVuY2UiLC4uLmVbMl0mJntpZkV4aXN0czohMH0sbmFtZTp0KGVbM10pLGNoYW5nZTplWzRdfTtyZXR1cm4oMCxyLnRyYWNrKShlLHUpfX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JGVibmYkMSIsc3ltYm9sczpbImFsdGVyX3NlcXVlbmNlX29wdGlvbiJdfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIiwiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5IixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHU9e3R5cGU6InNldCBvcHRpb25zIn07cmV0dXJuIEModSxlWzBdKSwoMCxyLnRyYWNrKShlLHUpfX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnRfYm9keSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZXNzaW9uX3VzZXIiKT97dHlwZToia3dfc2Vzc2lvbl91c2VyIn06a3dfc2Vzc2lvbl91c2VyXX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfdXNlciIpP3t0eXBlOiJrd19jdXJyZW50X3VzZXIifTprd19jdXJyZW50X3VzZXJdfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkiLHN5bWJvbHM6WyJrd19vd25lciIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im93bmVyIHRvIixvd25lcjptKF8oZSkpfSl9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnRfYm9keSIsc3ltYm9sczpbImt3X3JlbmFtZSIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIixuZXdOYW1lOm0oXyhlKSl9KX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5IixzeW1ib2xzOlsia3dfc2V0Iiwia3dfc2NoZW1hIiwiaWRlbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgc2NoZW1hIixuZXdTY2hlbWE6bShfKGUpKX0pfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9vcHRpb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXSxwb3N0cHJvY2VzczpufSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJhbHRlcl9zZXF1ZW5jZV9vcHRpb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsc3ltYm9sczpbImFsdGVyX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImFsdGVyX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJrd19yZXN0YXJ0IiwiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsicmVzdGFydCIsdHlwZW9mKDAsci51bmJveCkoZVsxXSk9PSJudW1iZXIiPygwLHIudW5ib3gpKGVbMV0pOiEwXSl9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lIl19LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZHJv
14cF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImRyb3Bfc3RhdGVtZW50JG1hY3JvY2FsbCQyIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W3QoZSksLi4udS5tYXAodCl8fFtdXX0se25hbWU6ImRyb3Bfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdHJpY3QiXX0se25hbWU6ImRyb3Bfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbImRyb3Bfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZHJvcF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZHJvcF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19kcm9wIiwiZHJvcF93aGF0IiwiZHJvcF9zdGF0ZW1lbnQkZWJuZiQxIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEiLCJkcm9wX3N0YXRlbWVudCRlYm5mJDIiXSxwb3N0cHJvY2VzczooZSx1KT0+e2NvbnN0IGE9dChlWzFdKTtyZXR1cm4oMCxyLnRyYWNrKShlLHsuLi5hLC4uLmVbMl0mJntpZkV4aXN0czohMH0sbmFtZXM6ZVszXSwuLi5lWzRdJiZ7Y2FzY2FkZTpkKGVbNF0pfX0pfX0se25hbWU6ImRyb3Bfd2hhdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlIik/e3R5cGU6Imt3X3RhYmxlIn06a3dfdGFibGVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgdGFibGUifSl9LHtuYW1lOiJkcm9wX3doYXQiLHN5bWJvbHM6WyJrd19zZXF1ZW5jZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3Agc2VxdWVuY2UifSl9LHtuYW1lOiJkcm9wX3doYXQiLHN5bWJvbHM6WyJrd190eXBlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCB0eXBlIn0pfSx7bmFtZToiZHJv
14cF93aGF0IixzeW1ib2xzOlsia3dfdHJpZ2dlciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgdHJpZ2dlciJ9KX0se25hbWU6ImRyb3Bfd2hhdCRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25jdXJyZW50bHkiKT97dHlwZToia3dfY29uY3VycmVudGx5In06a3dfY29uY3VycmVudGx5XSxwb3N0cHJvY2VzczpufSx7bmFtZToiZHJvcF93aGF0JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3Bfd2hhdCIsc3ltYm9sczpbImt3X2luZGV4IiwiZHJvcF93aGF0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgaW5kZXgiLC4uLmVbMV0mJntjb25jdXJyZW50bHk6ITB9fSl9LHtuYW1lOiJ3aXRoX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGgsIndpdGhfc3RhdGVtZW50X2JpbmRpbmdzIiwid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToid2l0aCIsYmluZDplWzFdLGluOnQoZVsyXSl9KX0se25hbWU6IndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJrd19yZWN1cnNpdmUiXX0se25hbWU6IndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCIsc3ltYm9sczpbIndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLCJpZGVudCIsImNvbGxpc3RfcGFyZW4iLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJscGFyZW4iLCJ1bmlvbl9zdGF0ZW1lbnQiLCJycGFyZW4iLCJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ3aXRoIHJlY3Vyc2l2ZSIsYWxpYXM6bShlWzFdKSxjb2x1bW5OYW1lczplWzJdLm1hcChtKSxiaW5kOmVbNV0saW46dChlWzddKX0pfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfYmluZGluZ3MkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfYmluZGluZ3MkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwid2l0aF9zdGF0ZW1lbnRfYmluZGluZyJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEiLHN5bWJvbHM6WyJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEiLCJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6IndpdGhfc3RhdGVtZW50X2JpbmRpbmdzIixzeW1ib2xzOlsid2l0aF9zdGF0ZW1lbnRfYmluZGluZyIsIndpdGhfc3RhdGVtZW50X2JpbmRpbmdzJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9PltlLC4uLnV8fFtdXX0se25hbWU6IndpdGhfc3RhdGVtZW50X2JpbmRpbmciLHN5bWJvbHM6WyJ3b3JkIixzLmxleGVyQW55Lmhhcygia3dfYXMiKT97dHlwZToia3dfYXMifTprd19hcywibHBhcmVuIiwid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50IiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7YWxpYXM6bShlWzBdKSxzdGF0ZW1lbnQ6dChlWzNdKX0pfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50IixzeW1ib2xzOlsic2VsZWN0aW9uIl19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50Il19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50Il19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJkZWxldGVfc3RhdGVtZW50Il19LHtuYW1lOiJjcmVhdGV0eXBlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2VudW0iXX0se25hbWU6ImNyZWF0ZXR5cGVfc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNyZWF0ZXR5cGVfY29tcG9zaXRlIl19LHtuYW1lOiJjcmVhdGV0eXBlX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X3R5cGUiLCJxdWFsaWZpZWRfbmFtZSIsImNyZWF0ZXR5cGVfc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6ZVsyXSwuLi50KGVbM10pfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJlbnVtX3ZhbHVlIl19LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldHlwZV9lbnVtJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRldHlwZV9lbnVtJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXR5cGVfZW51bSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W3QoZSksLi4udS5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZXR5cGVfZW51bSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImt3X2VudW0iLCJscGFyZW4iLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgZW51bSIsdmFsdWVzOmVbM119KX0se25hbWU6ImVudW1fdmFsdWUiLHN5bWJvbHM6WyJzdHJpbmciXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt2YWx1ZTpkKGUpfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImNyZWF0ZXR5cGVfY29tcG9zaXRlX2F0dHIiXX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRldHlwZV9jb21wb3NpdGUkbWFjcm9jYWxsJDIiLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UsdV0pPT5bdChlKSwuLi51Lm1hcCh0KXx8W11dfSx7bmFtZToiY3JlYXRldHlwZV9jb21wb3NpdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJscGFyZW4iLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSBjb21wb3NpdGUgdHlwZSIsYXR0cmlidXRlczplWzJdfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZV9hdHRyJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxhdGUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRldHlwZV9jb21wb3NpdGVfYXR0ciRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZV9hdHRyIixzeW1ib2xzOlsid29yZCIsImRhdGFfdHlwZSIsImNyZWF0ZXR5cGVfY29tcG9zaXRlX2F0dHIkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTptKGVbMF0pLGRhdGFUeXBlOmVbMV0sLi4uZVsyXT97Y29sbGF0ZTplWzJdWzFdfTp7fX0pfSx7bmFtZToidW5pb25fbGVmdCIsc3ltYm9sczpbInNlbGVjdF9zdGF0ZW1lbnQiXX0se25hbWU6InVuaW9uX2xlZnQiLHN5bWJvbHM6WyJzZWxlY3RfdmFsdWVzIl19LHtuYW1lOiJ1bmlvbl9sZWZ0IixzeW1ib2xzOlsic2VsZWN0aW9uX3BhcmVuIl19LHtuYW1lOiJ1bmlvbl9yaWdodCIsc3ltYm9sczpbInNlbGVjdGlvbiJdfSx7bmFtZToidW5pb25fcmlnaHQiLHN5bWJvbHM6WyJzZWxlY3Rpb25fcGFyZW4iXX0se25hbWU6InVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYWxsIik/e3R5cGU6Imt3X2FsbCJ9Omt3X2FsbF0scG9zdHByb2Nlc3M6bn0se25hbWU6InVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToidW5pb25fc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VuaW9uIik/e3R5cGU6Imt3X3VuaW9uIn06a3dfdW5pb24sInVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJ1bmlvbl9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJ1bmlvbl9sZWZ0IiwidW5pb25fc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsInVuaW9uX3JpZ2h0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZTpkKGVbMV0sIiAiKSxsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKX0pfSx7bmFtZToicHJlcGFyZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiZGF0YV90eXBlX2xpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToicHJlcGFyZSRlYm5mJDEiLHN5bWJvbHM6WyJwcmVwYXJlJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToicHJlcGFyZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJwcmVwYXJlIixzeW1ib2xzOlsia3dfcHJlcGFyZSIsImlkZW50IiwicHJlcGFyZSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJzdGF0ZW1lbnRfbm9wcmVwIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicHJlcGFyZSIsbmFtZTptKGVbMV0pLC4uLmVbMl0mJnthcmdzOmVbMl19LHN0YXRlbWVudDp0KF8oZSkpfSl9LHtuYW1lOiJkZWFsbG9jYXRlJGVibmYkMSIsc3ltYm9sczpbImt3X3ByZXBhcmUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZGVhbGxvY2F0ZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWFsbG9jYXRlIixzeW1ib2xzOlsia3dfZGVhbGxvY2F0ZSIsImRlYWxsb2
14NhdGUkZWJuZiQxIiwiZGVhbGxvY2F0ZV90YXJnZXQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWFsbG9jYXRlIix0YXJnZXQ6ZVsyXX0pfSx7bmFtZToiZGVhbGxvY2F0ZV90YXJnZXQiLHN5bWJvbHM6WyJkZWFsbG9jYXRlX2FsbCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJkZWFsbG9jYXRlX3RhcmdldCIsc3ltYm9sczpbImRlYWxsb2NhdGVfbmFtZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJkZWFsbG9jYXRlX25hbWUiLHN5bWJvbHM6WyJpZGVudCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUsbShlWzBdKSl9LHtuYW1lOiJkZWFsbG9jYXRlX2FsbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wdGlvbjoiYWxsIn0pfSx7bmFtZToiY3JlYXRlX3ZpZXdfc3RhdGVtZW50cyIsc3ltYm9sczpbImNyZWF0ZV92aWV3Il19LHtuYW1lOiJjcmVhdGVfdmlld19zdGF0ZW1lbnRzIixzeW1ib2xzOlsiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3Il19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3IiKT97dHlwZToia3dfb3IifTprd19vciwia3dfcmVwbGFjZSJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcCJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXBvcmFyeSJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQyIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDMiLHN5bWJvbHM6WyJrd19yZWN1cnNpdmUiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W3QoZSksLi4udS5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJscGFyZW4iLCJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDUiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2xvY2FsIl19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2Nhc2NhZGVkIl19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwiY3JlYXRlX3ZpZXckZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19jaGVjayIpP3t0eXBlOiJrd19jaGVjayJ9Omt3X2NoZWNrLCJrd19vcHRpb24iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ2IixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZV92aWV3JGVibmYkMSIsImNyZWF0ZV92aWV3JGVibmYkMiIsImNyZWF0ZV92aWV3JGVibmYkMyIsImt3X3ZpZXciLCJxdWFsaWZpZWRfbmFtZSIsImNyZWF0ZV92aWV3JGVibmYkNCIsImNyZWF0ZV92aWV3JGVibmYkNSIscy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsInNlbGVjdGlvbiIsImNyZWF0ZV92aWV3JGVibmYkNiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSB2aWV3IiwuLi5lWzFdJiZ7b3JSZXBsYWNlOiEwfSwuLi5lWzJdJiZ7dGVtcDohMH0sLi4uZVszXSYme3JlY3Vyc2l2ZTohMH0sbmFtZTplWzVdLC4uLmVbNl0mJntjb2x1bW5OYW1lczplWzZdLm1hcChtKX0sLi4uZVs3XSYme3BhcmFtZXRlcnM6eChlWzddKX0scXVlcnk6ZVs5XSwuLi5lWzEwXSYme2NoZWNrT3B0aW9uOmQoZVsxMF0pfX0pfSx7bmFtZToiY3JlYXRlX3ZpZXdfb3B0IixzeW1ib2xzOlsiaWRlbnQiLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJpZGVudCJdLHBvc3Rwcm9jZXNzOihbZSx1LGFdKT0+W2QoZSksZChhKV19LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0Il19LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3ZpZXdfb3B0cyRtYW
14Nyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0cyRtYWNyb2NhbGwkMiIsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W3QoZSksLi4udS5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZV92aWV3X29wdHMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJpZGVudCJdfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9Plt0KGUpLC4uLnUubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZV92aWV3X29wdHMiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGFibGVzcGFjZSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsia3dfbm8iXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1JHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJrd19kYXRhIl19LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X21hdGVyaWFsaXplZCIsImt3X3ZpZXciLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQxIiwicXVhbGlmaWVkX25hbWUiLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyIiwiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQiLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJzZWxlY3Rpb24iLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIG1hdGVyaWFsaXplZCB2aWV3IiwuLi5lWzNdJiZ7aWZOb3RFeGlzdHM6ITB9LG5hbWU6
14ZVs0XSwuLi5lWzVdJiZ7Y29sdW1uTmFtZXM6ZVs2XS5tYXAobSl9LC4uLmVbNl0mJntwYXJhbWV0ZXJzOngoZVs2XSl9LC4uLmVbN10mJnt0YWJsZXNwYWNlOm0oZVs3XSl9LHF1ZXJ5OmVbOV0sLi4uZVsxMF0mJnt3aXRoRGF0YTpkKGVbMTBdWzFdKSE9PSJubyJ9fSl9LHtuYW1lOiJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25jdXJyZW50bHkiKT97dHlwZToia3dfY29uY3VycmVudGx5In06a3dfY29uY3VycmVudGx5XSxwb3N0cHJvY2VzczpufSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6WyJrd19ubyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsImt3X2RhdGEiXX0se25hbWU6InJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiIsc3ltYm9sczpbInJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMiLHN5bWJvbHM6WyJrd19yZWZyZXNoIiwia3dfbWF0ZXJpYWxpemVkIiwia3dfdmlldyIsInJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMSIsInFuYW1lIiwicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVmcmVzaCBtYXRlcmlhbGl6ZWQgdmlldyIsLi4uZVszXT97Y29uY3VycmVudGx5OiEwfTp7fSxuYW1lOmVbNF0sLi4uZVs1XT97d2l0aERhdGE6ZChlWzVdWzFdKSE9PSJubyJ9Ont9fSl9LHtuYW1lOiJmdW5jdGlvbnNfc3RhdGVtZW50cyIsc3ltYm9sczpbImNyZWF0ZV9mdW5jIl19LHtuYW1lOiJmdW5jdGlvbnNfc3RhdGVtZW50cyIsc3ltYm9sczpbImRvX3N0bSJdfSx7bmFtZToiZnVuY3Rpb25zX3N0YXRlbWVudHMiLHN5bWJvbHM6WyJkcm9wX2Z1bmMiXX0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vciIpP3t0eXBlOiJrd19vciJ9Omt3X29yLCJrd19yZXBsYWNlIl19LHtuYW1lOiJjcmVhdGVfZnVuYyRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfZnVuYyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZiJdfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDIiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9Plt0KGUpLC4uLnUubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJjcmVhdGVfZnVuYyRlYm5mJDIiLHN5bWJvbHM6WyJmdW5jX3NwZWMiXX0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMiIsc3ltYm9sczpbImNyZWF0ZV9mdW5jJGVibmYkMiIsImZ1bmNfc3BlYyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfZnVuYyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZV9mdW5jJGVibmYkMSIsImt3X2Z1bmN0aW9uIiwicW5hbWUiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEiLCJjcmVhdGVfZnVuYyRlYm5mJDIiXSxwb3N0cHJvY2VzczooZSx1KT0+e3ZhciBhO2NvbnN0IGY9e307Zm9yKGNvbnN0IGcgb2YgZVs1XSl7Zm9yKGNvbnN0IE8gaW4gZylpZihPWzBdIT09Il8iJiZPIGluIGYpdGhyb3cgbmV3IEVycm9yKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyAiK08pO09iamVjdC5hc3NpZ24oZixnKX1yZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgZnVuY3Rpb24iLC4uLmVbMV0mJntvclJlcGxhY2U6ITB9LG5hbWU6
14ZVszXSxhcmd1bWVudHM6KGE9ZVs0XSkhPT1udWxsJiZhIT09dm9pZCAwP2E6W10sLi4uZn0pfX0se25hbWU6ImZ1bmNfYXJnZGVmJGVibmYkMSIsc3ltYm9sczpbImZ1bmNfYXJnb3B0cyJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJmdW5jX2FyZ2RlZiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJmdW5jX2FyZ2RlZiRlYm5mJDIiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZmF1bHQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZnVuY19hcmdkZWYkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZnVuY19hcmdkZWYiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZiRlYm5mJDEiLCJkYXRhX3R5cGUiLCJmdW5jX2FyZ2RlZiRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtkZWZhdWx0OmVbMl0sdHlwZTplWzFdLC4uLmVbMF19KX0se25hbWU6ImZ1bmNfYXJnZGVmYXVsdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHQsImV4cHIiXSxwb3N0cHJvY2VzczplPT5lWzFdfSx7bmFtZToiZnVuY19hcmdkZWZhdWx0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfZXEiKT97dHlwZToib3BfZXEifTpvcF9lcSwiZXhwciJdLHBvc3Rwcm9jZXNzOmU9PmVbMV19LHtuYW1lOiJmdW5jX2FyZ29wdHMkZWJuZiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJmdW5jX2FyZ29wdHMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZnVuY19hcmdvcHRzIixzeW1ib2xzOlsiZnVuY19hcmdtb2QiLCJmdW5jX2FyZ29wdHMkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bW9kZTpkKGVbMF0pLC4uLmVbMV0mJntuYW1lOm0oZVsxXSl9fSl9LHtuYW1lOiJmdW5jX2FyZ29wdHMiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6KGUsdSk9Pntjb25zdCBhPW0oZSk7cmV0dXJuIGE9PT0ib3V0Inx8YT09PSJpbm91dCJ8fGE9PT0idmFyaWFkaWMiP3U6KDAsci50cmFjaykoZSx7bmFtZTphfSl9fSx7bmFtZToiZnVuY19hcmdtb2QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbiIpP3t0eXBlOiJrd19pbiJ9Omt3X2luXX0se25hbWU6ImZ1bmNfYXJnbW9kIixzeW1ib2xzOlsia3dfb3V0Il19LHtuYW1lOiJmdW5jX2FyZ21vZCIsc3ltYm9sczpbImt3X2lub3V0Il19LHtuYW1lOiJmdW5jX2FyZ21vZCIsc3ltYm9sczpbImt3X3ZhcmlhZGljIl19LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJrd19sYW5ndWFnZSIsIndvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtsYW5ndWFnZTptKF8oZSkpfSl9LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJmdW5jX3B1cml0eSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3B1cml0eTpkKGUpfSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29kZWJsb2NrIik/e3R5cGU6ImNvZGVibG9jayJ9OmNvZGVibG9ja119LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic3RyaW5nIl19LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KHtjb2RlOmQoXyhlKSl9KX0se25hbWU6ImZ1bmNfc3BlYyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczpufSx7bmFtZToiZnVuY19zcGVjJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6digibGVha3Byb29mIil9LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJmdW5jX3NwZWMkZWJuZiQxIiwiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2xlYWtwcm9vZjohZVswXX0pfSx7bmFtZToiZnVuY19zcGVjIixzeW1ib2xzOlsiZnVuY19yZXR1cm5zIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7cmV0dXJuczp0KGUpfSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOnYoImNhbGxlZCIpfSx7bmFtZToiZnVuY19zcGVjIixzeW1ib2xzOlsiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kMyIsIm9uaW5wIl0scG9zdHByb2Nlc3M6KCk9Pih7b25OdWxsSW5wdXQ6ImNhbGwifSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQ0IixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOnYoInJldHVybnMiKX0se25hbWU6ImZ1bmNfc3BlYyIsc3ltYm9sczpbImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDQiLHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsLCJvbmlucCJdLHBvc3Rwcm9jZXNzOigpPT4oe29uTnVsbElucHV0OiJudWxsIn0pfSx7bmFtZToiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kNSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2Vzczp2KCJzdHJpY3QiKX0se25hbWU6ImZ1bmNfc3BlYyIsc3ltYm9sczpbImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDUiXSxwb3N0cHJvY2VzczooKT0+KHtvbk51bGxJbnB1dDoic3RyaWN0In0pfSx7bmFtZToiZnVuY19wdXJpdHkiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6digiaW1tdXRhYmxlIil9LHtuYW1lOiJmdW5jX3B1cml0eSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2Vzczp2KCJzdGFibGUiKX0se25hbWU6ImZ1bmNfcHVyaXR5IixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOnYoInZvbGF0aWxlIil9LHtuYW1lOiJvbmlucCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6digiaW5wdXQiKX0se25hbWU6Im9uaW5wIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb24iKT97dHlwZToia3dfb24ifTprd19vbixzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbCwib25pbnAkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJmdW5jX3JldHVybnMiLHN5bWJvbHM6WyJrd19yZXR1cm5zIiwiZGF0YV90eXBlIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImZ1bmNfcmV0X3RhYmxlX2NvbCJdfSx7bmFtZToiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJmdW5jX3JldHVybnMkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQyIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSx1XSk9Plt0KGUpLC4uLnUubWFwKHQpfHxbXV19LHtuYW1lOiJmdW5jX3JldHVybnMiLHN5bWJvbHM6WyJrd19yZXR1cm5zIixzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZSwibHBhcmVuIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7a2luZDoidGFibGUiLGNvbHVtbnM6ZVszXX0pfSx7bmFtZToiZnVuY19yZXRfdGFibGVfY29sIixzeW1ib2xzOlsid29yZCIsImRhdGFfdHlwZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6bShlWzBdKSx0eXBlOmVbMV19KX0se25hbWU6ImRvX3N0bSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbGFuZ3VhZ2UiLCJ3b3JkIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImRvX3N0bSRlYm5mJDEiLHN5bWJvbHM6WyJkb19zdG0kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJkb19zdG0kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZG9fc3RtIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZG8iKT97dHlwZToia3dfZG8ifTprd19kbywiZG9fc3RtJGVibmYkMSIscy5sZXhlckFueS5oYXMoImNvZGVibG9jayIpP3t0eXBlOiJjb2RlYmxvY2sifTpjb2RlYmxvY2tdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRvIiwuLi5lWzFdJiZ7bGFuZ3VhZ2U6bShlWzFdKX0sY29kZTplWzJdLnZhbHVlfSl9LHtuYW1lOiJkcm9wX2Z1bmMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2lmIiwia3dfZXhpc3RzIl19LHtuYW1lOiJkcm9wX2Z1bmMkZWJuZiQxIixzeW1ib2xzOlsiZHJvcF9mdW5jJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZHJv
14cF9mdW5jJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3BfZnVuYyRlYm5mJDIiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZHJvcF9mdW5jJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3BfZnVuYyIsc3ltYm9sczpbImt3X2Ryb3AiLCJrd19mdW5jdGlvbiIsImRyb3BfZnVuYyRlYm5mJDEiLCJxbmFtZSIsImRyb3BfZnVuYyRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkcm9wIGZ1bmN0aW9uIiwuLi5lWzJdJiZ7aWZFeGlzdHM6ITB9LG5hbWU6ZVszXSwuLi5lWzRdJiZ7YXJndW1lbnRzOmVbNF19fSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sIl19LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZHJvcF9mdW5jX292ZXJsb2FkJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZHJvcF9mdW5jX292ZXJsb2FkJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImRyb3BfZnVuY19vdmVybG9hZCRtYWNyb2NhbGwkMSRlYm5mJDEiLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHVdKT0+W3QoZSksLi4udS5tYXAodCl8fFtdXX0se25hbWU6ImRyb3BfZnVuY19vdmVybG9hZCIsc3ltYm9sczpbImxwYXJlbiIsImRyb3BfZnVuY19vdmVybG9hZCRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sJGVibmYkMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpufSx7bmFtZToiZHJv
14cF9mdW5jX292ZXJsb2FkX2NvbCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sIixzeW1ib2xzOlsiZHJvcF9mdW5jX292ZXJsb2FkX2NvbCRlYm5mJDEiLCJxbmFtZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ZVsxXSwuLi5lWzBdJiZ7bmFtZTptKGVbMF0pfX0pfSx7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJtYWluJGVibmYkMSIsc3ltYm9sczpbIm1haW4kZWJuZiQxIiwic3RhdGVtZW50X3NlcGFyYXRvciJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJtYWluJGVibmYkMiIsc3ltYm9sczpbXX0se25hbWU6Im1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6WyJzdGF0ZW1lbnRfc2VwYXJhdG9yIl19LHtuYW1lOiJtYWluJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInN0YXRlbWVudF9zZXBhcmF0b3IiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInN0YXRlbWVudCJdfSx7bmFtZToibWFpbiRlYm5mJDIiLHN5bWJvbHM6WyJtYWluJGVibmYkMiIsIm1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJtYWluJGVibmYkMyIsc3ltYm9sczpbXX0se25hbWU6Im1haW4kZWJuZiQzIixzeW1ib2xzOlsibWFpbiRlYm5mJDMiLCJzdGF0ZW1lbnRfc2VwYXJhdG9yIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6Im1haW4iLHN5bWJvbHM6WyJtYWluJGVibmYkMSIsInN0YXRlbWVudCIsIm1haW4kZWJuZiQyIiwibWFpbiRlYm5mJDMiXSxwb3N0cHJvY2VzczooW2UsdSxhXSk9Pntjb25zdCBmPWEsZz1bdCh1KSwuLi5mLm1hcChPPT50KE9bMV0pKV07cmV0dXJuIGcubGVuZ3RoPT09MT9nWzBdOmd9fSx7bmFtZToic3RhdGVtZW50X3NlcGFyYXRvciIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInNlbWljb2xvbiIpP3t0eXBlOiJzZW1pY29sb24ifTpzZW1pY29sb25dfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsic3RhdGVtZW50X25vcHJlcCJdfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsicHJlcGFyZSJdfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsiZGVhbGxvY2F0ZSJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbInNlbGVjdGlvbiJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2FsbCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImluc2VydF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJhbHRlcmluZGV4X3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImRlbGV0ZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiZHJvcF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZV92aWV3X3N0YXRlbWVudHMiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZV9zY2hlbWEiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJyYWlzZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjb21tZW50X3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImZ1bmN0aW9uc19zdGF0ZW1lbnRzIl19LHtuYW1lOiJzZWxlY3Rpb24iLHN5bWJvbHM6WyJzZWxlY3Rfc3Rh
14dGVtZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InNlbGVjdGlvbiIsc3ltYm9sczpbInNlbGVjdF92YWx1ZXMiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic2VsZWN0aW9uIixzeW1ib2xzOlsid2l0aF9zdGF0ZW1lbnQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic2VsZWN0aW9uIixzeW1ib2xzOlsid2l0aF9yZWN1cnNpdmVfc3RhdGVtZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InNlbGVjdGlvbiIsc3ltYm9sczpbInVuaW9uX3N0YXRlbWVudCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3Rpb25fcGFyZW4iLHN5bWJvbHM6WyJscGFyZW4iLCJzZWxlY3Rpb24iLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfV0sUGFyc2VyU3RhcnQ6Im1haW4ifTtvLmRlZmF1bHQ9cX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBuKGgpe3JldHVybiBoWzBdfWNvbnN0IHM9aSgxMikscj1oPT5oJiZoW2gubGVuZ3RoLTFdLG09e0xleGVyOnMubGV4ZXJBbnksUGFyc2VyUnVsZXM6W3tuYW1lOiJtYWluJGVibmYkMSIsc3ltYm9sczpbImVsZW1lbnRzIl0scG9zdHByb2Nlc3M6bn0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToibWFpbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInN0YXJ0X2xpc3QiKT97dHlwZToic3RhcnRfbGlzdCJ9OnN0YXJ0X2xpc3QsIm1haW4kZWJuZiQxIixzLmxleGVyQW55LmhhcygiZW5kX2xpc3QiKT97dHlwZToiZW5kX2xpc3QifTplbmRfbGlzdF0scG9zdHByb2Nlc3M6aD0+aFsxXXx8W119LHtuYW1lOiJlbGVtZW50cyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJlbGVtZW50cyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZWx0Il0scG9zdHByb2Nlc3M6cn0se25hbWU6ImVsZW1lbnRzJGVibmYkMSIsc3ltYm9sczpbImVsZW1lbnRzJGVibmYkMSIsImVsZW1lbnRzJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpoPT5oWzBdLmNvbmNhdChbaFsxXV0pfSx7bmFtZToiZWxlbWVudHMiLHN5bWJvbHM6WyJlbHQiLCJlbGVtZW50cyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2gseV0pPT5baCwuLi55fHxbXV19LHtuYW1lOiJlbHQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ2YWx1ZSIpP3t0eXBlOiJ2YWx1ZSJ9OnZhbHVlXSxwb3N0cHJvY2VzczpoPT5oWzBdLnZhbHVlfSx7bmFtZToiZWx0IixzeW1ib2xzOlsibWFpbiJdLHBvc3Rwcm9jZXNzOmg9PmhbMF19XSxQYXJzZXJTdGFydDoibWFpbiJ9O28uZGVmYXVsdD1tfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGV4ZXJBbnk9by5sZXhlcj12b2lkIDA7Y29uc3Qgbj1pKDApO28ubGV4ZXI9KDAsbi5jb21waWxlKSh7dmFsdWVTdHJpbmc6e21hdGNoOi8iKD86XFxbIlxcXXxbXlxuIlxcXSkqIi8sdmFsdWU6cz0+SlNPTi5wYXJzZShzKSx0eXBlOnM9PiJ2YWx1ZSJ9LHZhbHVlUmF3OnttYXRjaDovW15ccyxce1x9Il0oPzpbXixce1x9Il0qW15ccyxce1x9Il0pPy8sdHlwZTooKT0+InZhbHVlIn0sY29tbWE6IiwiLHNwYWNlOnttYXRjaDovW1xzXHRcblx2XGZccl0rLyxsaW5lQnJlYWtzOiEwfSxzdGFydF9saXN0OiJ7IixlbmRfbGlzdDoifSJ9KSxvLmxleGVyLm5leHQ9KHM9PigpPT57bGV0IHI7Zm9yKDsocj1zLmNhbGwoby5sZXhlcikpJiZyLnR5cGU9PT0ic3BhY2UiOyk7cmV0dXJuIHJ9KShvLmxleGVyLm5leHQpLG8ubGV4ZXJBbnk9by5sZXhlcn0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBuKHQpe3JldHVybiB0WzBdfWNvbnN0IHM9aSgxNCkscj10PT4kPT4kW3RdLG09dD0+dCYmdFt0Lmxlbmd0aC0xXTtmdW5jdGlvbiBoKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD09PTEmJih0PWgodFswXSkpLEFycmF5LmlzQXJyYXkodCkmJiF0Lmxlbmd0aD9udWxsOnR9Y29uc3QgeT17TGV4ZXI6cy5sZXhlckFueSxQYXJzZXJSdWxlczpbe25hbWU6Im51bWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJmbG9hdCJdfSx7bmFtZToibnVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImludCJdfSx7bmFtZToibnVtYmVyIixzeW1ib2xzOlsibnVtYmVyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmh9LHtuYW1lOiJmbG9hdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImZsb2F0Iik/e3R5cGU6ImZsb2F0In06ZmxvYXRdLHBvc3Rwcm9jZXNzOnQ9PnBhcnNlRmxvYXQoaCh0KSl9LHtuYW1lOiJpbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2Vzczp0PT5wYXJzZUludChoKHQpLDEwKX0se25hbWU6ImNvbW1hIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYV0scG9zdHByb2Nlc3M6bn0se25hbWU6InBvaW50JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsicG9pbnRfY29udGVudCJdfSx7bmFtZToicG9pbnQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDIiXX0se25hbWU6InBvaW50JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW4sInBvaW50JG1hY3JvY2FsbCQyIixzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl0scG9zdHByb2Nlc3M6cigxKX0se25hbWU6InBvaW50JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6aH0se25hbWU6InBvaW50IixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczpofSx7bmFtZToicG9pbnRfY29udGVudCIsc3ltYm9sczpbIm51bWJlciIsImNvbW1hIiwibnVtYmVyIl0scG9zdHByb2Nlc3M6dD0+KHt4OnRbMF0seTp0WzJdfSl9LHtuYW1lOiJsaW5lIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGN1cmwiKT97dHlwZToibGN1cmwifTpsY3VybCwibnVtYmVyIiwiY29tbWEiLCJudW1iZXIiLCJjb21tYSIsIm51bWJlciIscy5sZXhlckFueS5oYXMoInJjdXJsIik/e3R5cGU6InJjdXJsIn06cmN1cmxdLHBvc3Rwcm9jZXNzOnQ9Pih7YTp0WzFdLGI6dFszXSxjOnRbNV19KX0se25hbWU6ImJveCIsc3ltYm9sczpbImNsb3NlZF9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSwkKT0+dC5sZW5ndGghPT0yPyQ6dH0se25hbWU6ImxzZWciLHN5bWJvbHM6WyJwYXRoIl0scG9zdHByb2Nlc3M6KFt0XSwkKT0+dC5wYXRoLmxlbmd0aCE9PTI/JDp0LnBhdGh9LHtuYW1lOiJwYXRoIixzeW1ib2xzOlsib3Blbl9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSk9Pih7Y2xvc2VkOiExLHBhdGg6dH0pfSx7bmFtZToicGF0aCIsc3ltYm9sczpbImNsb3NlZF9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSk9Pih7Y2xvc2VkOiEwLHBhdGg6dH0pfSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldF19LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XX0se25hbWU6Im9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInBvaW50Il19LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczptfSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbIm9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnQ9PnRbMF0uY29uY2F0KFt0WzFdXSl9LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFt0LCRdKT0+W2godCksLi4uJC5tYXAoaCl8fFtdXX0se25hbWU6Im9wZW5fcGF0aCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbIm9wZW5fcGF0aCRtYWNyb2NhbGwkMiIsIm9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsIm9wZW5fcGF0aCRtYWNyb2NhbGwkMyJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJvcGVuX3BhdGgiLHN5bWJvbHM6WyJvcGVuX3BhdGgkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczptfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbl19LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJycGFyZW4iKT97dHlwZToicnBhcmVuIn06cnBhcmVuXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInBvaW50Il19LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczptfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnQ9PnRbMF0uY29uY2F0KFt0WzFdXSl9LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFt0LCRdKT0+W2godCksLi4uJC5tYXAoaCl8fFtdXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMyJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczptfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ1IixzeW1ib2xzOlsicG9pbnQiXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSJdLHBvc3Rwcm9jZXNzOm19LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDQkZWJuZiQxIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0JGVibmYkMSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6dD0+dFswXS5jb25jYXQoW3RbMV1dKX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW3QsJF0pPT5baCh0KSwuLi4kLm1hcChoKXx8W11dfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6bX0se25hbWU6ImNsb3NlZF9wYXRoIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6cigwKX0se25hbWU6InBvbHlnb24iLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCJdLHBvc3Rwcm9jZXNzOnIoMCl9LHtuYW1lOiJjaXJjbGVfYm9keSIsc3ltYm9sczpbInBvaW50IiwiY29tbWEiLCJudW1iZXIiXSxwb3N0cHJvY2Vzczp0PT4oe2M6dFswXSxyOnRbMl19KX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJsY29tcCIpP3t0eXBlOiJsY29tcCJ9Omxjb21wXX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJyY29tcCIpP3t0eXBlOiJyY29tcCJ9OnJjb21wXX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIiwiY2lyY2xlX2JvZHkiLCJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQzIl0scG9zdHByb2Nlc3M6cigxKX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ1IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbl19LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ2IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl
1419LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSIsImNpcmNsZV9ib2R5IiwiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNiJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNpcmNsZV9ib2R5Il19LHtuYW1lOiJjaXJjbGUiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6aH1dLFBhcnNlclN0YXJ0OiJudW1iZXIifTtvLmRlZmF1bHQ9eX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmxleGVyQW55PW8ubGV4ZXI9dm9pZCAwO2NvbnN0IG49aSgwKTtvLmxleGVyPSgwLG4uY29tcGlsZSkoe2NvbW1hOiIsIixzcGFjZTp7bWF0Y2g6L1tcc1x0XG5cdlxmXHJdKy8sbGluZUJyZWFrczohMH0saW50Oi9cLT9cZCsoPyFbXC5cZF0pLyxmbG9hdDovXC0/KD86KD86XGQqXC5cZCspfCg/OlxkK1wuXGQqKSkvLGxjdXJsOiJ7IixyY3VybDoifSIsbHBhcmVuOiIoIixycGFyZW46IikiLGxicmFja2V0OiJbIixyYnJhY2tldDoiXSIsbGNvbXA6IjwiLHJjb21wOiI+In0pLG8ubGV4ZXIubmV4dD0ocz0+KCk9PntsZXQgcjtmb3IoOyhyPXMuY2FsbChvLmxleGVyKSkmJnIudHlwZT09PSJzcGFjZSI7KTtyZXR1cm4gcn0pKG8ubGV4ZXIubmV4dCksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIG4obSl7cmV0dXJuIG1bMF19Y29uc3Qgcz1pKDE2KSxyPXtMZXhlcjpzLmxleGVyQW55LFBhcnNlclJ1bGVzOlt7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6WyJlbHQiXX0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDEiLCJlbHQiXSxwb3N0cHJvY2VzczptPT5tWzBdLmNvbmNhdChbbVsxXV0pfSx7bmFtZToibWFpbiIsc3ltYm9sczpbIm1haW4kZWJuZiQxIl0scG9zdHByb2Nlc3M6KFttXSk9Pntjb25zdCBoPW5ldyBTZXQ7Zm9yKGNvbnN0IHkgb2YgbSl7Y29uc3QgdD10eXBlb2YgeVsxXT09Im51bWJlciI/eVswXToidGltZSI7aWYoaC5oYXModCkpcmV0dXJuImludmFsaWQiO2guYWRkKHQpfXJldHVybiBtfX0se25hbWU6ImVsdCIsc3ltYm9sczpbInRpbWUiXX0se25hbWU6ImVsdCIsc3ltYm9sczpbIm51bSIsInVuaXQiXSxwb3N0cHJvY2VzczooW1ttXSxoXSk9PihoPWhbMF0udHlwZSxbaCxtXSl9LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygieWVhcnMiKT97dHlwZToieWVhcnMifTp5ZWFyc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibW9udGhzIik/e3R5cGU6Im1vbnRocyJ9Om1vbnRoc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZGF5cyIpP3t0eXBlOiJkYXlzIn06ZGF5c119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaG91cnMiKT97dHlwZToiaG91cnMifTpob3Vyc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibWludXRlcyIpP3t0eXBlOiJtaW51dGVzIn06bWludXRlc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic2Vjb25kcyIpP3t0eXBlOiJzZWNvbmRzIn06c2Vjb25kc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibWlsbGlzZWNvbmRzIik/e3R5cGU6Im1pbGxpc2Vjb25kcyJ9Om1pbGxpc2Vjb25kc119LHtuYW1lOiJudW0iLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6Im51bSIsc3ltYm9sczpbImZsb2F0Il19LHtuYW1lOiJ1aW50IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaW50Iik/e3R5cGU6ImludCJ9OmludF0scG9zdHByb2Nlc3M6KFttXSk9PnBhcnNlSW50KG0sMTApfSx7bmFtZToiaW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJuZWciKT97dHlwZToibmVnIn06bmVnXX0se25hbWU6ImludCRlYm5mJDEiLHN5bWJvbHM6WyJpbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJpbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW50IixzeW1ib2xzOlsiaW50JGVibmYkMSIscy5sZXhlckFueS5oYXMoImludCIpP3t0eXBlOiJpbnQifTppbnRdLHBvc3Rwcm9jZXNzOihbbSxoXSk9PnBhcnNlSW50KGgsMTApKihtPy0xOjEpfSx7bmFtZToiZmxvYXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm5lZyIpP3t0eXBlOiJuZWcifTpuZWddfSx7bmFtZToiZmxvYXQkZWJuZiQxIixzeW1ib2xzOlsiZmxvYXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJmbG9hdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJmbG9hdCRlYm5mJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczpufSx7bmFtZToiZmxvYXQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZmxvYXQiLHN5bWJvbHM6WyJmbG9hdCRlYm5mJDEiLCJmbG9hdCRlYm5mJDIiLHMubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LHMubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczooW20sLi4uaF0pPT5wYXJzZUZsb2F0KGgubWFwKHk9Pnk/eS50ZXh0OiIwIikuam9pbigiIikpKihtPy0xOjEpfSx7bmFtZToidGltZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29sb24iKT97dHlwZToiY29sb24ifTpjb2xvbiwidWludCJdfSx7bmFtZToidGltZSRlYm5mJDEiLHN5bWJvbHM6WyJ0aW1lJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpufSx7bmFtZToidGltZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ0aW1lJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LHMubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XX0se25hbWU6InRpbWUkZWJuZiQyIixzeW1ib2xzOlsidGltZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6InRpbWUkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToidGltZSIsc3ltYm9sczpbInVpbnQiLHMubGV4ZXJBbnkuaGFzKCJjb2xvbiIpP3t0eXBlOiJjb2xvbiJ9OmNvbG9uLCJ1aW50IiwidGltZSRlYm5mJDEiLCJ0aW1lJGVibmYkMiJdLHBvc3Rwcm9jZXNzOihbbSxoLHksdCwkXSk9Pnt0PXQmJnRbMV0sJD0kJiYkWzFdO2NvbnN0IF89dHlwZW9mIHQ9PSJudW1iZXIiP1tbImhvdXJzIixtXSxbIm1pbnV0ZXMiLHldLFsic2Vjb25kcyIsdF1dOltbIm1pbnV0ZXMiLG1dLFsic2Vjb25kcyIseV1dO3JldHVybiAkJiZfLnB1c2goWyJtaWxsaXNlY29uZHMiLHBhcnNlRmxvYXQoIjAuIiskKSoxZTNdKSxffX1dLFBhcnNlclN0YXJ0OiJtYWluIn07by5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby5sZXhlckFueT1vLmxleGVyPXZvaWQgMDtjb25zdCBuPWkoMCk7by5sZXhlcj0oMCxuLmNvbXBpbGUpKHtpbnQ6L1xkKy8sbmVnOiItIixkb3Q6Ii4iLHllYXJzOi8oPzp5fHlycz98eWVhcnM/KVxiLyxtb250aHM6Lyg/Om1vbig/OnRoKT9zPylcYi8sZGF5czovKD86ZHxkYXlzPylcYi8saG91cnM6Lyg/Omh8aHJzP3xob3Vycz8pXGIvLG1pbnV0ZXM6Lyg/Om18bWlucz98bWludXRlcz8pXGIvLHNlY29uZHM6Lyg/OnN8c2Vjcz98c2Vjb25kcz8pXGIvLG1pbGx
14pc2Vjb25kczovKD86bXN8bWlsbGlzZWNvbmRzPylcYi8sc3BhY2U6e21hdGNoOi9bXHNcdFxuXHZcZlxyXSsvLGxpbmVCcmVha3M6ITB9LGNvbG9uOiI6In0pLG8ubGV4ZXIubmV4dD0ocz0+KCk9PntsZXQgcjtmb3IoOyhyPXMuY2FsbChvLmxleGVyKSkmJnIudHlwZT09PSJzcGFjZSI7KTtyZXR1cm4gcn0pKG8ubGV4ZXIubmV4dCksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIG4obSl7cmV0dXJuIG1bMF19Y29uc3Qgcz1pKDE4KSxyPXtMZXhlcjpzLmxleGVyQW55LFBhcnNlclJ1bGVzOlt7bmFtZToibnVtIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaW50Iik/e3R5cGU6ImludCJ9OmludF19LHtuYW1lOiJudW0iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJmbG9hdCIpP3t0eXBlOiJmbG9hdCJ9OmZsb2F0XX0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6WyJtYWluJGVibmYkMSIsImxvbmciXSxwb3N0cHJvY2VzczptPT5tWzBdLmNvbmNhdChbbVsxXV0pfSx7bmFtZToibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbInNob3J0Il19LHtuYW1lOiJtYWluJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInNob3J0Il0scG9zdHByb2Nlc3M6bT0+bVswXS5jb25jYXQoW21bMV1dKX0se25hbWU6Im1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlQiKT97dHlwZToiVCJ9OlQsIm1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiXX0se25hbWU6Im1haW4kZWJuZiQyIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6bn0se25hbWU6Im1haW4kZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToibWFpbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlAiKT97dHlwZToiUCJ9OlAsIm1haW4kZWJuZiQxIiwibWFpbiRlYm5mJDIiXSxwb3N0cHJvY2VzczooW20saCx5XSx0KT0+KHk9eT95WzFdOltdLCFoLmxlbmd0aCYmIXkubGVuZ3RoP3Q6aC5sZW5ndGg/eS5sZW5ndGg/Wy4uLmgsLi4ueV06aDp5KX0se25hbWU6Imxvbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiWSIpP3t0eXBlOiJZIn06WV19LHtuYW1lOiJsb25nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIk0iKT97dHlwZToiTSJ9Ok1dfSx7bmFtZToibG9uZyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJXIik/e3R5cGU6IlcifTpXXX0se25hbWU6Imxvbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiRCIpP3t0eXBlOiJEIn06RF19LHtuYW1lOiJsb25nIixzeW1ib2xzOlsibnVtIiwibG9uZyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczooW20saF0pPT57c3dpdGNoKG09cGFyc2VGbG9hdChtWzBdLnZhbHVlKSxoPWhbMF0udHlwZSxoKXtjYXNlIlkiOnJldHVyblsieWVhcnMiLG1dO2Nhc2UiTSI6cmV0dXJuWyJtb250aHMiLG1dO2Nhc2UiVyI6cmV0dXJuWyJkYXlzIixtKjddO2Nhc2UiRCI6cmV0dXJuWyJkYXlzIixtXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB1bml0ICIraCl9fX0se25hbWU6InNob3J0JGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlQiKT97dHlwZToiVCJ9OlRdLHBvc3Rwcm9jZXNzOm59LHtuYW1lOiJzaG9ydCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzaG9ydCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJIIik/e3R5cGU6IkgifTpIXX0se25hbWU6InNob3J0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIk0iKT97dHlwZToiTSJ9Ok1dfSx7bmFtZToic2hvcnQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiUyIpP3t0eXBlOiJTIn06U119LHtuYW1lOiJzaG9ydCIsc3ltYm9sczpbInNob3J0JGVibmYkMSIsIm51bSIsInNob3J0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOihbbSxoLHldKT0+e3N3aXRjaChoPXBhcnNlRmxvYXQoaFswXS52YWx1ZSkseT15WzBdLnR5cGUseSl7Y2FzZSJIIjpyZXR1cm5bImhvdXJzIixoXTtjYXNlIk0iOnJldHVyblsibWludXRlcyIsaF07Y2FzZSJTIjpyZXR1cm5bInNlY29uZHMiLGhdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHVuaXQgIit5KX19fV0sUGFyc2VyU3RhcnQ6Im51bSJ9O28uZGVmYXVsdD1yfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGV4ZXJBbnk9by5sZXhlcj12b2lkIDA7Y29uc3Qgbj1pKDApO28ubGV4ZXI9KDAsbi5jb21waWxlKSh7aW50Oi9cLT9cZCsoPyFbXC5cZF0pLyxmbG9hdDovXC0/KD86KD86XGQqXC5cZCspfCg/OlxkK1wuXGQqKSkvLFA6IlAiLFk6IlkiLE06Ik0iLFc6IlciLEQ6IkQiLEg6IkgiLFM6IlMiLFQ6IlQifSksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8udG9TcWw9dm9pZCAwO2NvbnN0IG49aSgyKSxzPWkoNSkscj1pKDYpLG09aSgyMCksaD1pKDMpLHk9bmV3IFNldChoLnNxbEtleXdvcmRzLm1hcCh1PT51LnRvTG93ZXJDYXNlKCkpKTtsZXQgdD1bXTtmdW5jdGlvbiAkKHUpe3JldHVybiBfKHUubmFtZSl9ZnVuY3Rpb24gXyh1LGEpe2lmKCFhKXtjb25zdCBmPXUudG9Mb3dlckNhc2UoKTtpZihmPT09dSYmIXkuaGFzKGYpJiYvXlthLXpdW2EtejAtOV9dKiQvLnRlc3QoZikpcmV0dXJuIHV9cmV0dXJuJyInK3UrJyInfWZ1bmN0aW9uIGwodSxhLGYpe2YmJnQucHVzaCgiKCIpO2xldCBnPSEwO2Zvcihjb25zdCBPIG9mIHUpZ3x8dC5wdXNoKCIsICIpLGc9ITEsYShPKTtmJiZ0LnB1c2goIikiKX1mdW5jdGlvbiBiKHUsYSl7c3dpdGNoKHUudHlwZSl7Y2FzZSJmb3JlaWduIGtleSI6dC5wdXNoKCIgZm9yZWlnbiBrZXkgKCIsLi4udS5sb2NhbENvbHVtbnMubWFwKCQpLmpvaW4oIiwgIiksIikiKTtjYXNlInJlZmVyZW5jZSI6dC5wdXNoKCIgUkVGRVJFTkNFUyAiKSxhLnRhYmxlUmVmKHUuZm9yZWlnblRhYmxlKSx0LnB1c2goIigiLC4uLnUuZm9yZWlnbkNvbHVtbnMubWFwKCQpLmpvaW4oIiwgIiksIikgIiksdS5tYXRjaCYmdC5wdXNoKCIgTUFUQ0ggIix1Lm1hdGNoLnRvVXBwZXJDYXNlKCkpLHUub25EZWxldGUmJnQucHVzaCgiIE9OIERFTEVURSAiLHUub25EZWxldGUpLHUub25VcGRhdGUmJnQucHVzaCgiIE9OIFVQREFURSAiLHUub25VcGRhdGUpO2JyZWFrO2Nhc2UicHJpbWFyeSBrZXkiOmNhc2UidW5pcXVlIjp0LnB1c2goIiAiLHUudHlwZSwiICIpLCJjb2x1bW5zImluIHUmJnQucHVzaCgiKCIsLi4udS5jb2x1bW5zLm1hcCgkKS5qb2luKCIsICIpLCIpICIpO2JyZWFrO2Nhc2UiY2hlY2siOnQucHVzaCgiIGNoZWNrICIpLGEuZXhwcih1LmV4cHIpO2JyZWFrO2Nhc2Uibm90IG51bGwiOmNhc2UibnVsbCI6dC5wdXNoKCIgIix1LnR5cGUsIiAiKTticmVhaztjYXNlImRlZmF1bHQiOnQucHVzaCgiIGRlZmF1bHQgIiksYS5leHByKHUuZGVmYXVsdCk7YnJlYWs7Y2FzZSJhZGQgZ2VuZXJhdGVkIjp0LnB1c2goIiBHRU5FUkFURUQgIiksTihhLHUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIodSl9dC5wdXNoKCIgIil9ZnVuY3Rpb24gdyh1LGEpe3Uuc2NoZW1hJiZ0LnB1c2goXyh1LnNjaGVtYSksIi4iKSx0LnB1c2goXyh1Lm5hbWUsYSksIiAiKX1mdW5jdGlvbiBkKHUpe3codSksdS5hbGlhcyYmdC5wdXNoKCIgQVMgIixfKHUuYWxpYXMpLCIgIil9ZnVuY3Rpb24geCh1LGEpe3QucHVzaCgiIE9SREVSIEJZICIpLGwoYSxmPT57dS5leHByKGYuYnkpLGYub3JkZXImJnQucHVzaCgiICIsZi5vcmRlciwiICIpLGYubnVsbHMmJnQucHVzaCgiIE5VTExTICIsZi5udWxscywiICIpfSwhMSl9ZnVuY3Rpb24gQSh1KXtzd2l0Y2godS50eXBlKXtjYXNlImRlZmF1bHQiOnQucHVzaCgiREVGQVVMVCAiKTticmVhaztjYXNlImlkZW50aWZpZXIiOnQucHVzaCh1Lm5hbWUpO2JyZWFrO2Nhc2UibGlzdCI6bGV0IGE9ITA7Zm9yKGNvbnN0IGYgb2YgdS52YWx1ZXMpYXx8dC5wdXNoKCIsICIpLGE9ITEsQShmKTticmVhaztjYXNlInZhbHVlIjp0LnB1c2godHlwZW9mIHUudmFsdWU9PSJudW1iZXIiP3UudmFsdWUudG9TdHJpbmc
14oKTooMCxtLmxpdGVyYWwpKHUudmFsdWUpKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKHUpfX1mdW5jdGlvbiBOKHUsYSl7YS5hbHdheXMmJnQucHVzaChhLmFsd2F5cy50b1VwcGVyQ2FzZSgpLCIgIiksdC5wdXNoKCJBUyBJREVOVElUWSAiKSxhLnNlcXVlbmNlJiYodC5wdXNoKCIoIiksYS5zZXF1ZW5jZS5uYW1lJiYodC5wdXNoKCJTRVFVRU5DRSBOQU1FICIpLHcoYS5zZXF1ZW5jZS5uYW1lKSx0LnB1c2goIiAiKSksayh1LGEuc2VxdWVuY2UpLHQucHVzaCgiKSAiKSl9ZnVuY3Rpb24gayh1LGEpe2EuYXMmJih0LnB1c2goIkFTICIpLHUuZGF0YVR5cGUoYS5hcyksdC5wdXNoKCIgIikpLHR5cGVvZiBhLmluY3JlbWVudEJ5PT0ibnVtYmVyIiYmdC5wdXNoKCJJTkNSRU1FTlQgQlkgIixhLmluY3JlbWVudEJ5LnRvU3RyaW5nKCksIiAiKSxhLm1pblZhbHVlPT09Im5vIG1pbnZhbHVlIiYmdC5wdXNoKCJOTyBNSU5WQUxVRSAiKSx0eXBlb2YgYS5taW5WYWx1ZT09Im51bWJlciImJnQucHVzaCgiTUlOVkFMVUUgIixhLm1pblZhbHVlLnRvU3RyaW5nKCksIiAiKSxhLm1heFZhbHVlPT09Im5vIG1heHZhbHVlIiYmdC5wdXNoKCJOTyBNQVhWQUxVRSAiKSx0eXBlb2YgYS5tYXhWYWx1ZT09Im51bWJlciImJnQucHVzaCgiTUFYVkFMVUUgIixhLm1heFZhbHVlLnRvU3RyaW5nKCksIiAiKSx0eXBlb2YgYS5zdGFydFdpdGg9PSJudW1iZXIiJiZ0LnB1c2goIlNUQVJUIFdJVEggIixhLnN0YXJ0V2l0aC50b1N0cmluZygpLCIgIiksdHlwZW9mIGEuY2FjaGU9PSJudW1iZXIiJiZ0LnB1c2goIkNBQ0hFICIsYS5jYWNoZS50b1N0cmluZygpLCIgIiksYS5jeWNsZSYmdC5wdXNoKGEuY3ljbGUsIiAiKSxhLm93bmVkQnk9PT0ibm9uZSI/dC5wdXNoKCJPV05FRCBCWSBOT05FICIpOmEub3duZWRCeSYmKHQucHVzaCgiT1dORUQgQlkgIiksdihhLm93bmVkQnkpKSwicmVzdGFydCJpbiBhJiYoYS5yZXN0YXJ0PT09ITA/dC5wdXNoKCJSRVNUQVJUICIpOmEucmVzdGFydCYmdC5wdXNoKCJSRVNUQVJUIFdJVEggIixhLnJlc3RhcnQudG9TdHJpbmcoKSwiICIpKX1mdW5jdGlvbiB2KHUpe3Uuc2NoZW1hJiZ0LnB1c2goXyh1LnNjaGVtYSksIi4iKSx0LnB1c2goXyh1LnRhYmxlKSwiLiIsXyh1LmNvbHVtbiksIiAiKX1mdW5jdGlvbiBFKHUsYSxmKXtpZighYSl7ZigpO3JldHVybn10LnB1c2goYS50eXBlLCIgIiksZigpLGEub24mJih0LnB1c2goIk9OICIpLHUuZXhwcihhLm9uKSksYS51c2luZyYmKHQucHVzaCgiVVNJTkcgKCIpLGwoYS51c2luZyxnPT50LnB1c2goJChnKSksITEpLHQucHVzaCgiKSAiKSksdC5wdXNoKCIgIil9ZnVuY3Rpb24gQyh1KXt1Lm9wU2NoZW1hP3QucHVzaCgiIG9wZXJhdG9yKCIsXyh1Lm9wU2NoZW1hKSwiLiIsdS5vcCwiKSAiKTp0LnB1c2goIiAiLHUub3AsIiAiKX1jb25zdCBxPSgwLHMuYXN0VmlzaXRvcikodT0+KHthZGRDb2x1bW46KC4uLmEpPT57dC5wdXNoKCIgQUREIENPTFVNTiAiKSxhWzBdLmlmTm90RXhpc3RzJiZ0LnB1c2goIklGIE5PVCBFWElTVFMgIiksdS5zdXBlcigpLmFkZENvbHVtbiguLi5hKX0sY3JlYXRlRXh0ZW5zaW9uOmE9Pnt0LnB1c2goIkNSRUFURSBFWFRFTlNJT04gIiksYS5pZk5vdEV4aXN0cyYmdC5wdXNoKCIgSUYgTk9UIEVYSVNUUyAiKSx0LnB1c2goJChhLmV4dGVuc2lvbikpLCEoIWEuZnJvbSYmIWEudmVyc2lvbiYmIWEuc2NoZW1hKSYmKHQucHVzaCgiIFdJVEgiKSxhLnNjaGVtYSYmdC5wdXNoKCIgU0NIRU1BICIsJChhLnNjaGVtYSkpLGEudmVyc2lvbiYmdC5wdXNoKCIgVkVSU0lPTiAiLCgwLG0ubGl0ZXJhbCkoYS52ZXJzaW9uLnZhbHVlKSksYS5mcm9tJiZ0LnB1c2goIiBGUk9NICIsKDAsbS5saXRlcmFsKShhLmZyb20udmFsdWUpKSl9LHRhYmxlc3BhY2U6YT0+e3QucHVzaCgiVEFCTEVTUEFDRSAiLCQoYS50YWJsZXNwYWNlKSl9LGFkZENvbnN0cmFpbnQ6YT0+e3QucHVzaCgiIEFERCAiKTtjb25zdCBmPWEuY29uc3RyYWludC5jb25zdHJhaW50TmFtZTtmJiZ0LnB1c2goIiBDT05TVFJBSU5UICIsJChmKSwiICIpLGIoYS5jb25zdHJhaW50LHUpfSxhbHRlckNvbHVtbjooYSxmKT0+e3QucHVzaCgiIEFMVEVSIENPTFVNTiAiLCQoYS5jb2x1bW4pLCIgIiksdS5zdXBlcigpLmFsdGVyQ29sdW1uKGEsZil9LHNldENvbHVtbkRlZmF1bHQ6KGEsZixnKT0+e2lmKHQucHVzaCgiIFNFVCBERUZBVUxUICIpLHUuZXhwcihhLmRlZmF1bHQpLGEudXBkYXRlRXhpc3RpbmcpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IHVwZGF0ZUV4aXN0aW5nIG9uIHNldCBjb2x1bW4gZGVmYXVsdCIpfSxjcmVhdGVFbnVtOmE9Pnt0LnB1c2goIkNSRUFURSBUWVBFICIpLHcoYS5uYW1lKSx0LnB1c2goIiBBUyBFTlVNICIpLGwoYS52YWx1ZXMsZj0+dC5wdXNoKCgwLG0ubGl0ZXJhbCkoZi52YWx1ZSkpLCEwKSx0LnB1c2goIiAiKX0sY3JlYXRlQ29tcG9zaXRlVHlwZTphPT57dC5wdXNoKCJDUkVBVEUgVFlQRSAiKSx3KGEubmFtZSksdC5wdXNoKCIgQVMgIiksbChhLmF0dHJpYnV0ZXMsZj0+e3QucHVzaCgkKGYubmFtZSksIiAiKSx1LmRhdGFUeXBlKGYuZGF0YVR5cGUpLGYuY29sbGF0ZSYmKHQucHVzaCgiQ09MTEFURSAiKSx3KGYuY29sbGF0ZSkpfSwhMCksdC5wdXNoKCIgIil9LHNldFRhYmxlT3duZXI6YT0+e3QucHVzaCgiIE9XTkVSIFRPICIsJChhLnRvKSl9LGFsdGVyQ29sdW1uU2ltcGxlOmE9PnQucHVzaChhLnR5cGUpLGFsdGVyQ29sdW1uQWRkR2VuZXJhdGVkOmE9Pnt0LnB1c2goIiBBREQgR0VORVJBVEVEICIpLE4odSxhKX0sc2V0Q29sdW1uVHlwZTphPT57dC5wdXNoKCIgU0VUIERBVEEgVFlQRSAiKSx1LmRhdGFUeXBlKGEuZGF0YVR5cGUpLHQucHVzaCgiICIpfSxhbHRlclRhYmxlOmE9Pnt0LnB1c2goIkFMVEVSIFRBQkxFICIpLGEuaWZFeGlzdHMmJnQucHVzaCgiIElGIEVYSVNUUyAiKSxhLm9ubHkmJnQucHVzaCgiIE9OTFkgIiksZChhLnRhYmxlKSxsKGEuY2hhbmdlcyxmPT51LnRhYmxlQWx0ZXJhdGlvbihmLGEudGFibGUpLCExKX0sYWx0ZXJJbmRleDphPT57c3dpdGNoKHQucHVzaCgiQUxURVIgSU5ERVggIiksYS5pZkV4aXN0cyYmdC5wdXNoKCIgSUYgRVhJU1RTICIpLGQoYS5pbmRleCksYS5jaGFuZ2UudHlwZSl7Y2FzZSJyZW5hbWUiOnQucHVzaCgiIFJFTkFNRSBUTyAiKSx3KGEuY2hhbmdlLnRvKSx0LnB1c2goIiAiKTticmVhaztjYXNlInNldCB0YWJsZXNwYWNlIjp0LnB1c2goIiBTRVQgVEFCTEVTUEFDRSAiKSx3KGEuY2hhbmdlLnRhYmxlc3BhY2UpLHQucHVzaCgiICIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoYS5jaGFuZ2UsIkFsdGVyIGluZGV4IHR5cGUgbm90IHN1cHBvcnRlZDogIil9fSx0YWJsZUFsdGVyYXRpb246KGEsZik9Pntzd2l0Y2goYS50eX
14BlKXtjYXNlImFkZCBjb2x1bW4iOnJldHVybiB1LmFkZENvbHVtbihhLGYpO2Nhc2UiYWRkIGNvbnN0cmFpbnQiOnJldHVybiB1LmFkZENvbnN0cmFpbnQoYSxmKTtjYXNlImFsdGVyIGNvbHVtbiI6cmV0dXJuIHUuYWx0ZXJDb2x1bW4oYSxmKTtjYXNlInJlbmFtZSI6cmV0dXJuIHUucmVuYW1lVGFibGUoYSxmKTtjYXNlInJlbmFtZSBjb2x1bW4iOnJldHVybiB1LnJlbmFtZUNvbHVtbihhLGYpO2Nhc2UicmVuYW1lIGNvbnN0cmFpbnQiOnJldHVybiB1LnJlbmFtZUNvbnN0cmFpbnQoYSxmKTtjYXNlImRyb3AgY29sdW1uIjpyZXR1cm4gdS5kcm9wQ29sdW1uKGEsZik7Y2FzZSJkcm9wIGNvbnN0cmFpbnQiOnJldHVybiB1LmRyb3BDb25zdHJhaW50KGEsZik7Y2FzZSJvd25lciI6cmV0dXJuIHUuc2V0VGFibGVPd25lcihhLGYpO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoYSl9fSxhcnJheTphPT57dC5wdXNoKGEudHlwZT09PSJhcnJheSI/IkFSUkFZWyI6IigiKSxsKGEuZXhwcmVzc2lvbnMsZj0+dS5leHByKGYpLCExKSx0LnB1c2goYS50eXBlPT09ImFycmF5Ij8iXSI6IikiKX0sYXJyYXlJbmRleDphPT57dS5leHByKGEuYXJyYXkpLHQucHVzaCgiWyIpLHUuZXhwcihhLmluZGV4KSx0LnB1c2goIl0gIil9LGV4cHI6YT0+e2lmKGEudHlwZT09PSJyZWYiKXt1LnJlZihhKTtyZXR1cm59aWYoYS50eXBlPT09Imxpc3QiKXt1LnN1cGVyKCkuZXhwcihhKTtyZXR1cm59dC5wdXNoKCIoIiksdS5zdXBlcigpLmV4cHIoYSksdC5wdXNoKCIpIil9LGNhbGxPdmVybGF5OmE9Pnt0LnB1c2goIk9WRVJMQVkoIiksdS5leHByKGEudmFsdWUpLHQucHVzaCgiIFBMQUNJTkcgIiksdS5leHByKGEucGxhY2luZyksdC5wdXNoKCIgRlJPTSAiKSx1LmV4cHIoYS5mcm9tKSxhLmZvciYmKHQucHVzaCgiIEZPUiAiKSx1LmV4cHIoYS5mb3IpKSx0LnB1c2goIikiKX0sY2FsbFN1YnN0cmluZzphPT57dC5wdXNoKCJTVUJTVFJJTkcoIiksdS5leHByKGEudmFsdWUpLGEuZnJvbSYmKHQucHVzaCgiIEZST00gIiksdS5leHByKGEuZnJvbSkpLGEuZm9yJiYodC5wdXNoKCIgRk9SICIpLHUuZXhwcihhLmZvcikpLHQucHVzaCgiKSIpfSxiaW5hcnk6YT0+e3UuZXhwcihhLmxlZnQpLEMoYSksdS5leHByKGEucmlnaHQpfSxjYWxsOmE9Pnt3KGEuZnVuY3Rpb24pLHQucHVzaCgiKCIpLGEuZGlzdGluY3QmJnQucHVzaChhLmRpc3RpbmN0LCIgIiksbChhLmFyZ3MsZj0+dS5leHByKGYpLCExKSxhLm9yZGVyQnkmJngodSxhLm9yZGVyQnkpLHQucHVzaCgiKSAiKSxhLmZpbHRlciYmKHQucHVzaCgiZmlsdGVyICh3aGVyZSAiKSx1LmV4cHIoYS5maWx0ZXIpLHQucHVzaCgiKSAiKSksYS5vdmVyJiYodC5wdXNoKCJvdmVyICgiKSxhLm92ZXIucGFydGl0aW9uQnkmJih0LnB1c2goIlBBUlRJVElPTiBCWSAiKSxsKGEub3Zlci5wYXJ0aXRpb25CeSxmPT51LmV4cHIoZiksITEpLHQucHVzaCgiICIpKSxhLm92ZXIub3JkZXJCeSYmKHgodSxhLm92ZXIub3JkZXJCeSksdC5wdXNoKCIgIikpLHQucHVzaCgiKSAiKSl9LGNhc2U6YT0+e3QucHVzaCgiQ0FTRSAiKSxhLnZhbHVlJiZ1LmV4cHIoYS52YWx1ZSk7Zm9yKGNvbnN0IGYgb2YgYS53aGVucyl0LnB1c2goIiBXSEVOICIpLHUuZXhwcihmLndoZW4pLHQucHVzaCgiIFRIRU4gIiksdS5leHByKGYudmFsdWUpO2EuZWxzZSYmKHQucHVzaCgiIEVMU0UgIiksdS5leHByKGEuZWxzZSkpLHQucHVzaCgiIEVORCAiKX0sY2FzdDphPT57dS5leHByKGEub3BlcmFuZCksdC5wdXNoKCI6OiIpLHUuZGF0YVR5cGUoYS50byl9LGNvbnN0YW50OmE9Pntzd2l0Y2goYS50eXBlKXtjYXNlImJvb2xlYW4iOnQucHVzaChhLnZhbHVlPyJ0cnVlIjoiZmFsc2UiKTticmVhaztjYXNlImludGVnZXIiOnQucHVzaChhLnZhbHVlLnRvU3RyaW5nKDEwKSk7YnJlYWs7Y2FzZSJudW1lcmljIjp0LnB1c2goYS52YWx1ZS50b1N0cmluZygpKSxOdW1iZXIuaXNJbnRlZ2VyKGEudmFsdWUpJiZ0LnB1c2goIi4iKTticmVhaztjYXNlIm51bGwiOnQucHVzaCgibnVsbCIpO2JyZWFrO2Nhc2UiY29uc3RhbnQiOmJyZWFrO2Nhc2Uic3RyaW5nIjp0LnB1c2goKDAsbS5saXRlcmFsKShhLnZhbHVlKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyByLk5vdFN1cHBvcnRlZC5uZXZlcihhKX19LHZhbHVlS2V5d29yZDphPT57
14dC5wdXNoKGEua2V5d29yZCwiICIpfSxjb21tZW50OmE9Pntzd2l0Y2godC5wdXNoKCJDT01NRU5UIE9OICIsYS5vbi50eXBlLnRvVXBwZXJDYXNlKCksIiAiKSxhLm9uLnR5cGUpe2Nhc2UiY29sdW1uIjp2KGEub24uY29sdW1uKTticmVhaztkZWZhdWx0OncoYS5vbi5uYW1lKTticmVha310LnB1c2goIiBJUyAiLCgwLG0ubGl0ZXJhbCkoYS5jb21tZW50KSwiICIpfSxleHRyYWN0OmE9Pnt0LnB1c2goIkVYVFJBQ1QgKCIsYS5maWVsZC5uYW1lLnRvVXBwZXJDYXNlKCksIiBGUk9NICIpLHUuZXhwcihhLmZyb20pLHQucHVzaCgiKSAiKX0sY3JlYXRlQ29sdW1uOmE9Pnt2YXIgZjt0LnB1c2goJChhLm5hbWUpLCIgIiksdS5kYXRhVHlwZShhLmRhdGFUeXBlKSx0LnB1c2goIiAiKSxhLmNvbGxhdGUmJih0LnB1c2goIkNPTExBVEUgIiksdyhhLmNvbGxhdGUpKTtmb3IoY29uc3QgZyBvZihmPWEuY29uc3RyYWludHMpIT09bnVsbCYmZiE9PXZvaWQgMD9mOltdKXUuY29uc3RyYWludChnKX0sYmVnaW46YT0+e3QucHVzaCgiQkVHSU4gIiksYS5pc29sYXRpb25MZXZlbCYmdC5wdXNoKCJJU09MQVRJT04gTEVWRUwgIixhLmlzb2xhdGlvbkxldmVsLnRvVXBwZXJDYXNlKCksIiAiKSxhLndyaXRlYWJsZSYmdC5wdXNoKGEud3JpdGVhYmxlLnRvVXBwZXJDYXNlKCksIiAiKSx0eXBlb2YgYS5kZWZlcnJhYmxlPT0iYm9vbGVhbiImJihhLmRlZmVycmFibGV8fHQucHVzaCgiTk9UICIpLHQucHVzaCgiREVGRVJSQUJMRSAiKSl9LGFsdGVyU2VxdWVuY2U6YT0+e3N3aXRjaCh0LnB1c2goIkFMVEVSIFNFUVVFTkNFICIpLGEuaWZFeGlzdHMmJnQucHVzaCgiSUYgRVhJU1RTICIpLHcoYS5uYW1lKSxhLmNoYW5nZS50eXBlKXtjYXNlInNldCBvcHRpb25zIjprKHUsYS5jaGFuZ2UpO2JyZWFrO2Nhc2UicmVuYW1lIjp0LnB1c2goIlJFTkFNRSBUTyAiLCQoYS5jaGFuZ2UubmV3TmFtZSksIiAiKTticmVhaztjYXNlInNldCBzY2hlbWEiOnQucHVzaCgiU0VUIFNDSEVNQSAiLCQoYS5jaGFuZ2UubmV3U2NoZW1hKSwiICIpO2JyZWFrO2Nhc2Uib3duZXIgdG8iOmEuY2hhbmdlLm93bmVyLHQucHVzaCgiT1dORVIgVE8gIiwkKGEuY2hhbmdlLm93bmVyKSwiICIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoYS5jaGFuZ2UpfX0sY3JlYXRlU2VxdWVuY2U6YT0+e3QucHVzaCgiQ1JFQVRFICIpLGEudGVtcCYmdC5wdXNoKCJURU1QT1JBUlkgIiksdC5wdXNoKCJTRVFVRU5DRSAiKSxhLmlmTm90RXhpc3RzJiZ0LnB1c2goIklGIE5PVCBFWElTVFMgIiksdyhhLm5hbWUpLGsodSxhLm9wdGlvbnMpfSxkcm9wOmE9Pnt0LnB1c2goYS50eXBlLnRvVXBwZXJDYXNlKCksIiAiKSxhLmNvbmN1cnJlbnRseSYmdC5wdXNoKCJDT05DVVJSRU5UTFkgIiksYS5pZkV4aXN0cyYmdC5wdXNoKCJJRiBFWElTVFMgIiksbChhLm5hbWVzLGY9PnUudGFibGVSZWYoZiksITEpLGEuY2FzY2FkZSYmdC5wdXNoKGEuY2FzY2FkZS50b1VwcGVyQ2FzZSgpLCIgIil9LGNvbnN0cmFpbnQ6YT0+e2EuY29uc3RyYWludE5hbWUmJnQucHVzaCgiIENPTlNUUkFJTlQgIiwkKGEuY29uc3RyYWludE5hbWUpLCIgIiksYihhLHUpfSxkbzphPT57dC5wdXNoKCJETyIpLGEubGFuZ3VhZ2UmJnQucHVzaCgiIExBTkdVQUdFICIsYS5sYW5ndWFnZS5uYW1lKSx0LnB1c2goIiAkJCIsYS5jb2RlLCIkJCIpfSxjcmVhdGVGdW5jdGlvbjphPT57dmFyIGY7aWYodC5wdXNoKGEub3JSZXBsYWNlPyJDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiOiJDUkVBVEUgRlVOQ1RJT04gIiksdyhhLm5hbWUpLGwoYS5hcmd1bWVudHMsZz0+e2cubW9kZSYmdC5wdXNoKGcubW9kZSwiICIpLGcubmFtZSYmdC5wdXNoKCQoZy5uYW1lKSwiICIpLHUuZGF0YVR5cGUoZy50eXBlKSxnLmRlZmF1bHQmJih0LnB1c2goIiA9ICIpLHUuZXhwcihnLmRlZmF1bHQpKX0sITApLGEucmV0dXJucylzd2l0Y2goYS5yZXR1cm5zLmtpbmQpe2Nhc2UidGFibGUiOnQucHVzaCgiIFJFVFVSTlMgVEFCTEUgIiksbChhLnJldHVybnMuY29sdW1ucyxnPT57dC5wdXNoKCQoZy5uYW1lKSwiICIpLHUuZGF0YVR5cGUoZy50eXBlKX0sITApO2JyZWFrO2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpjYXNlImFycmF5Ijp0LnB1c2goIiBSRVRVUk5TICIpLHUuZGF0YVR5cGUoYS5yZXR1cm5zKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKGEucmV0dXJucyl9c3dpdGNoKHQucHVzaCgiIEFTICQkIiwoZj1hLmNvZGUpIT09bnVsbCYmZiE9PXZvaWQgMD9mOiIiLCIkJCIpLGEubGFuZ3VhZ2UmJnQucHVzaCgiTEFOR1VBR0UgIixhLmxhbmd1YWdlLm5hbWUsIiAiKSxhLnB1cml0eSYmdC5wdXNoKGEucHVyaXR5LnRvVXBwZXJDYXNlKCksIiAiKSx0eXBlb2YgYS5sZWFrcHJvb2Y9PSJib29sZWFuIiYmdC5wdXNoKGEubGVha3Byb29mPyJMRUFLUFJPT0YgIjoiTk9UIExFQUtQUk9PRiAiKSxhLm9uTnVsbElucHV0KXtjYXNlImNhbGwiOnQucHVzaCgiQ0FMTEVEIE9OIE5VTEwgSU5QVVQgIik7YnJlYWs7Y2FzZSJudWxsIjp0LnB1c2goIlJFVFVSTlMgTlVMTCBPTiBOVUxMIElOUFVUICIpO2JyZWFrO2Nhc2Uic3RyaWN0Ijp0LnB1c2goIlNUUklDVCAiKTticmVhaztjYXNlIG51bGw6Y2FzZSB2b2lkIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyByLk5vdFN1cHBvcnRlZC5uZXZlcihhLm9uTnVsbElucHV0KX19LGRyb3BGdW5jdGlvbjphPT57dC5wdXNoKCJEUk9QIEZVTkNUSU9OICIpLGEuaWZFeGlzdHMmJnQucHVzaCgiSUYgRVhJU1RTICIpLHcoYS5uYW1lKSxhLmFyZ3VtZW50cyYmbChhLmFyZ3VtZW50cyxmPT57Zi5uYW1lJiYodyhmLm5hbWUpLHQucHVzaCgiICIpKSx1LmRhdGFUeXBlKGYudHlwZSl9LCEwKSx0LnB1c2goIiAiKX0sd2l0aDphPT57dC5wdXNoKCJXSVRIICIpLGwoYS5iaW5kLGY9Pnt0LnB1c2goJChmLmFsaWFzKSwiIEFTICgiKSx1LnN0YXRlbWVudChmLnN0YXRlbWVudCksdC5wdXNoKCIpICIpfSwhMSksdS5zdGF0ZW1lbnQoYS5pbil9LHdpdGhSZWN1cnNpdmU6YT0+e3QucHVzaCgiV0lUSCBSRUNVUlNJVkUgIiwkKGEuYWxpYXMpLCIoIiwuLi5hLmNvbHVtbk5hbWVzLm1hcCgkKS5qb2luKCIsICIpLCIpIEFTICgiKSx1LnVuaW9uKGEuYmluZCksdC5wdXNoKCIpICIpLHUuc3RhdGVtZW50KGEuaW4pfSxzZXRHbG9iYWw6YT0+e3QucHVzaCgiU0VUICIsJChhLnZhcmlhYmxlKSwiID0gIiksQShhLnNldCl9LHNldFRpbWV6b25lOmE9Pntzd2l0Y2godC5wdXNoKCJTRVQgVElNRSBaT05FICIpLGEudG8udHlwZSl7Y2FzZSJkZWZhdWx0IjpjYXNlImxvY2FsIjp0LnB1c2goYS50by50eXBlLnRvVXBwZXJDYXNlKCksIiAiKTticmVhaztjYXNlInZhbHVlIjp0LnB1c2godHlwZW9mIGEudG8udmFsdWU9PSJzdHJpbmciPygwLG0ubGl0ZXJhbCkoYS50by52YWx1ZSk6Y
14S50by52YWx1ZS50b1N0cmluZygxMCkpO2JyZWFrO2Nhc2UiaW50ZXJ2YWwiOnQucHVzaCgiSU5URVJWQUwgIiwoMCxtLmxpdGVyYWwpKGEudG8udmFsdWUpLCIgSE9VUiBUTyBNSU5VVEUiKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKGEudG8pfX0sc2V0TmFtZXM6YT0+e3N3aXRjaCh0LnB1c2goIlNFVCBOQU1FUyAiKSxhLnRvLnR5cGUpe2Nhc2UidmFsdWUiOnQucHVzaCgoMCxtLmxpdGVyYWwpKGEudG8udmFsdWUpKTticmVha319LGRhdGFUeXBlOmE9Pnt2YXIgZixnO2lmKChhPT1udWxsP3ZvaWQgMDphLmtpbmQpPT09ImFycmF5Iil7dS5kYXRhVHlwZShhLmFycmF5T2YpLHQucHVzaCgiW10iKTtyZXR1cm59aWYoIShhIT1udWxsJiZhLm5hbWUpKXt0LnB1c2goInVua293biIpO3JldHVybn1sZXQgTz0hMDtpZihhLnNjaGVtYSl3KGEsYS5kb3VibGVRdW90ZWQpO2Vsc2UgaWYoYS5kb3VibGVRdW90ZWQpdyhhLCEwKTtlbHNlIHN3aXRjaChhLm5hbWUpe2Nhc2UiZG91YmxlIHByZWNpc2lvbiI6Y2FzZSJjaGFyYWN0ZXIgdmFyeWluZyI6Y2FzZSJiaXQgdmFyeWluZyI6dC5wdXNoKGEubmFtZSwiICIpO2JyZWFrO2Nhc2UidGltZSB3aXRob3V0IHRpbWUgem9uZSI6Y2FzZSJ0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUiOmNhc2UidGltZSB3aXRoIHRpbWUgem9uZSI6Y2FzZSJ0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUiOmNvbnN0IFI9YS5uYW1lLnNwbGl0KCIgIik7dC5wdXNoKFIuc2hpZnQoKSksISgoZj1hLmNvbmZpZyk9PT1udWxsfHxmPT09dm9pZCAwKSYmZi5sZW5ndGgmJmwoYS5jb25maWcsTD0+dC5wdXNoKEwudG9TdHJpbmcoMTApKSwhMCksdC5wdXNoKCIgIiksdC5wdXNoKFIuam9pbigiICIpLCIgIiksTz0hMTticmVhaztkZWZhdWx0OncoYSk7YnJlYWt9TyYmKCEoKGc9YS5jb25maWcpPT09bnVsbHx8Zz09PXZvaWQgMCkmJmcubGVuZ3RoKSYmbChhLmNvbmZpZyxSPT50LnB1c2goUi50b1N0cmluZygxMCkpLCEwKX0sY3JlYXRlSW5kZXg6YT0+e3QucHVzaChhLnVuaXF1ZT8iQ1JFQVRFIFVOSVFVRSBJTkRFWCAiOiJDUkVBVEUgSU5ERVggIiksYS5pZk5vdEV4aXN0cyYmdC5wdXNoKCIgSUYgTk9UIEVYSVNUUyAiKSxhLmluZGV4TmFtZSYmdC5wdXNoKCQoYS5pbmRleE5hbWUpLCIgIiksdC5wdXNoKCJPTiAiKSx1LnRhYmxlUmVmKGEudGFibGUpLGEudXNpbmcmJnQucHVzaCgiVVNJTkcgIiwkKGEudXNpbmcpLCIgIiksbChhLmV4cHJlc3Npb25zLGY9Pnt1LmV4cHIoZi5leHByZXNzaW9uKSx0LnB1c2goIiAiKSxmLmNvbGxhdGUmJih0LnB1c2goIkNPTExBVEUgIiksdyhmLmNvbGxhdGUpKSxmLm9wY2xhc3MmJncoZi5vcGNsYXNzKSxmLm9yZGVyJiZ0LnB1c2goZi5vcmRlciwiICIpLGYubnVsbHMmJnQucHVzaCgibnVsbHMgIixmLm51bGxzLCIgIil9LCEwKSxhLndpdGgmJih0LnB1c2goIldJVEggIiksbChhLndpdGgsZj0+e3QucHVzaChmLnBhcmFtZXRlciwiID0gIiwoMCxtLmxpdGVyYWwpKGYudmFsdWUpKX0sITApKSxhLnRhYmxlc3BhY2UmJnQucHVzaCgiVEFCTEVTUEFDRSAiLF8oYS50YWJsZXNwYWNlKSksYS53aGVyZSYmKHQucHVzaCgiIFdIRVJFICIpLHUuZXhwcihhLndoZXJlKSksdC5wdXNoKCIgIil9LGNyZWF0ZVRhYmxlOmE9Pnt2YXIgZjt0LnB1c2goIkNSRUFURSAiKSxhLmxvY2FsaXR5JiZ0LnB1c2goYS5sb2NhbGl0eS50b1VwcGVyQ2FzZSgpLCIgIiksYS50ZW1wb3JhcnkmJnQucHVzaCgiVEVNUE9SQVJZICIpLGEudW5sb2dnZWQmJnQucHVzaCgiVU5MT0dHRUQgIiksdC5wdXNoKGEuaWZOb3RFeGlzdHM/IlRBQkxFIElGIE5PVCBFWElTVFMgIjoiVEFCTEUgIiksdS50YWJsZVJlZihhLm5hbWUpLHQucHVzaCgiKCIpLGwoYS5jb2x1bW5zLGc9Pntzd2l0Y2goZy5raW5kKXtjYXNlImNvbHVtbiI6cmV0dXJuIHUuY3JlYXRlQ29sdW1uKGcpO2Nhc2UibGlrZSB0YWJsZSI6cmV0dXJuIHUubGlrZVRhYmxlKGcpO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoZyl9fSwhMSksYS5jb25zdHJhaW50cyYmKHQucHVzaCgiLCAiKSxsKGEuY29uc3RyYWludHMsZz0+e2NvbnN0IE89Zy5jb25zdHJhaW50TmFtZTtPJiZ0LnB1c2goIkNPTlNUUkFJTlQgIiwkKE8pLCIgIiksYihnLHUpfSwhMSkpLHQucHVzaCgiKSAiKSwhKChmPWEuaW5oZXJpdHMpPT09bnVsbHx8Zj09PXZvaWQgMCkmJmYubGVuZ3RoJiYodC5wdXNoKCIgSU5IRVJJVFMgIiksbChhLmluaGVyaXRzLGc9PncoZyksITApKX0sbGlrZVRhYmxlOmE9Pnt0LnB1c2goIiBMSUtFICIpLHUudGFibGVSZWYoYS5saWtlKSx0LnB1c2goIiAiKTtmb3IoY29uc3R7dmVyYjpmLG9wdGlvbjpnfW9mIGEub3B0aW9ucyl0LnB1c2goZi50b1VwcGVyQ2FzZSgpLCIgIixnLnRvVXBwZXJDYXNlKCksIiAiKX0sY3JlYXRlU2NoZW1hOmE9Pnt0LnB1c2goYS5pZk5vdEV4aXN0cz8iQ1JFQVRFIFNDSEVNQSBJRiBOT1QgRVhJU1RTICI6IkNSRUFURSBTQ0hFTUEgIiksdC5wdXNoKCQoYS5uYW1lKSl9LHRydW5jYXRlVGFibGU6YT0+e3QucHVzaCgiVFJVTkNBVEUgVEFCTEUgIik7bGV0IGY9ITA7Zm9yKGNvbnN0IGcgb2YgYS50YWJsZXMpZnx8dC5wdXNoKCIsICIpLGY9ITEsdS50YWJsZVJlZihnKTtpZihhLmlkZW50aXR5KXN3aXRjaChhLmlkZW50aXR5KXtjYXNlInJlc3RhcnQiOnQucHVzaCgiIFJFU1RBUlQgSURFTlRJVFkgIik7YnJlYWs7Y2FzZSJjb250aW51ZSI6dC5wdXNoKCIgQ09OVElOVUUgSURFTlRJVFkgIik7YnJlYWt9YS5jYXNjYWRlJiZ0LnB1c2goIiAiLGEuY2FzY2FkZSwiICIpfSxkZWxldGU6YT0+e3QucHVzaCgiREVMRVRFIEZST00gIiksdS50YWJsZVJlZihhLmZyb20pLGEud2hlcmUmJih0LnB1c2goIiBXSEVSRSAiKSx1LmV4cHIoYS53aGVyZSkpLGEucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwoYS5yZXR1cm5pbmcsZj0+dS5zZWxlY3Rpb25Db2x1bW4oZiksITEpKSx0LnB1c2goIiAiKX0sZHJvcENvbHVtbjphPT57dC5wdXNoKCIgRFJPUCBDT0xVTU4gIiksYS5pZkV4aXN0cyYmdC5wdXNoKCIgSUYgRVhJU1RTICIpLHQucHVzaCgkKGEuY29sdW1uKSksYS5iZWhhdmlvdXImJnQucHVzaCgiICIsYS5iZWhhdmlvdXIpLHQucHVzaCgiICIpfSxkcm9wQ29uc3RyYWludDphPT57dC5wdXNoKCIgRFJPUCBDT05TVFJBSU5UICIpLGEuaWZFeGlzdHMmJnQucHVzaCgiIElGIEVYSVNUUyAiKSx0LnB1c2goJChhLmNvbnN0cmFpbnQpKSxhLmJlaGF2aW91ciYmdC5wdXNoKCIgIixhLmJlaGF2aW91ci50b1VwcGVyQ2FzZSgpLCIgIil9LGZyb206YT0+dS5zdXBlcigpLmZyb20oYSksZnJvbUNhbGw6YT0+e0UodSxhLmpvaW4sKCk9Pnt2YXIgZixnO2lmKHUuY2FsbChhKSxhLndpdGhPcmRpbmFsaXR5JiZ0LnB1c2goIiBXSVRIIE9SRElOQUxJVFkiKSxhLmFsaWFzKXt0LnB1c2goIiBBUyAiLCQoYS5hbGlhcyksIiAiKTtjb25zdCBPPShnPShmPWEuYWxpYXMuY29sdW1ucyk9PT1udWxsfHxmPT09dm9pZCAwP3ZvaWQgMDpmLmxlbmd0aCkhPT1udWxsJiZnIT09dm9pZCAwP2c6MDtpZihPPjApe3QucHVzaCgiKCIpO2ZvcihsZXQgUj0wO1I8TzsrK1IpUiE9PTAmJnQucHVzaCgiLCAiKSx0LnB1c2goJChhLmFsaWFzLmNvbHVtbnNbUl0pKTt0LnB1c2goIikiKX19fSksdC5wdXNoKCIgIil9LGZyb21TdGF0ZW1lbnQ6YT0+e0UodSxhLmpvaW4sKCk9Pnt0LnB1c2goIigiKSx1LnNlbGVjdChhLnN0YXRlbWVudCksdC5wdXNoKCIpICIpLGEuYWxpYXMmJih0LnB1c2goIiBBUyAiLF8oYS5hbGlhcykpLGEuY29sdW1uTmFtZXMmJmwoYS5jb2x1bW5OYW1lcyxmPT50LnB1c2goJChmKSksITApLHQucHVzaCgiICIpKX0pLHQucHVzaCgiICIpfSx2YWx1ZXM6YT0+e3QucHVzaCgiVkFMVUVTICIpLGwoYS52YWx1ZXMsZj0+e2woZixnPT57dS5leHByKGcpfSwhMCl9LCExKX0sZnJvbVRhYmxlOmE9PntFKHUsYS5qb2luLCgpPT57aWYodS50YWJsZVJlZi
14hhLm5hbWUpLGEubmFtZS5jb2x1bW5OYW1lcyl7aWYoIWEubmFtZS5hbGlhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGFsaWFzZWQgY29sdW1uIG5hbWVzIHdpdGhvdXQgYW4gYWxpYXMiKTtsKGEubmFtZS5jb2x1bW5OYW1lcyxmPT50LnB1c2goJChmKSksITApfX0pfSxqb2luOmE9Pnt0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBub3QgaGFwcGVuIPCfkoAiKX0saW5zZXJ0OmE9PntpZih0LnB1c2goIklOU0VSVCBJTlRPICIpLHUudGFibGVSZWYoYS5pbnRvKSxhLmNvbHVtbnMmJnQucHVzaCgiKCIsYS5jb2x1bW5zLm1hcCgkKS5qb2luKCIsICIpLCIpIiksdC5wdXNoKCIgIiksYS5vdmVycmlkaW5nJiZ0LnB1c2goIk9WRVJSSURJTkcgIixhLm92ZXJyaWRpbmcudG9VcHBlckNhc2UoKSwiIFZBTFVFICIpLHUuc2VsZWN0KGEuaW5zZXJ0KSx0LnB1c2goIiAiKSxhLm9uQ29uZmxpY3Qpe3QucHVzaCgiT04gQ09ORkxJQ1QgIik7Y29uc3QgZj1hLm9uQ29uZmxpY3Qub247c3dpdGNoKGY9PW51bGw/dm9pZCAwOmYudHlwZSl7Y2FzZSJvbiBleHByIjpsKGYuZXhwcnMsZz0+dS5leHByKGcpLCEwKTticmVhaztjYXNlIm9uIGNvbnN0cmFpbnQiOnQucHVzaCgiT04gQ09OU1RSQUlOVCAiKSx3KGYuY29uc3RyYWludCk7Y2FzZSBudWxsOmNhc2Ugdm9pZCAwOmJyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoZil9YS5vbkNvbmZsaWN0LmRvPT09ImRvIG5vdGhpbmciP3QucHVzaCgiIERPIE5PVEhJTkciKToodC5wdXNoKCIgRE8gVVBEQVRFIFNFVCAiKSxsKGEub25Db25mbGljdC5kby5zZXRzLGc9PnUuc2V0KGcpLCExKSxhLm9uQ29uZmxpY3Qud2hlcmUmJih0LnB1c2goIiBXSEVSRSAiKSx1LmV4cHIoYS5vbkNvbmZsaWN0LndoZXJlKSkpLHQucHVzaCgiICIpfWEucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwoYS5yZXR1cm5pbmcsZj0+dS5zZWxlY3Rpb25Db2x1bW4oZiksITEpKX0scmFpc2U6YT0+e3ZhciBmLGc7dC5wdXNoKCJSQUlTRSAiKSxhLmxldmVsJiZ0LnB1c2goYS5sZXZlbC50b1VwcGVyQ2FzZSgpLCIgIiksdC5wdXNoKCgwLG0ubGl0ZXJhbCkoYS5mb3JtYXQpLCIgIiksISgoZj1hLmZvcm1hdEV4cHJzKT09PW51bGx8fGY9PT12b2lkIDApJiZmLmxlbmd0aCYmKHQucHVzaCgiLCAiKSxsKGEuZm9ybWF0RXhwcnMsTz0+dS5leHByKE8pLCExKSksISgoZz1hLnVzaW5nKT09PW51bGx8fGc9PT12b2lkIDApJiZnLmxlbmd0aCYmKHQucHVzaCgiIFVTSU5HICIpLGwoYS51c2luZywoe3R5cGU6Tyx2YWx1ZTpSfSk9Pnt0LnB1c2goTy50b1VwcGVyQ2FzZSgpLCI9IiksdS5leHByKFIpfSwhMSkpLHQucHVzaCgiICIpfSxkZWZhdWx0OigpPT57dC5wdXNoKCIgREVGQVVMVCAiKX0sbWVtYmVyOmE9Pnt1LmV4cHIoYS5vcGVyYW5kKSx0LnB1c2goYS5vcCksdC5wdXNoKHR5cGVvZiBhLm1lbWJlcj09Im51bWJlciI/YS5tZW1iZXIudG9TdHJpbmcoMTApOigwLG0ubGl0ZXJhbCkoYS5tZW1iZXIpKX0scmVmOmE9PnthLnRhYmxlJiYodyhhLnRhYmxlKSx0LnB1c2goIi4iKSksdC5wdXNoKGEubmFtZT09PSIqIj8iKiI6XyhhLm5hbWUpKX0scGFyYW1ldGVyOmE9Pnt0LnB1c2goYS5uYW1lKX0scmVuYW1lQ29sdW1uOmE9Pnt0LnB1c2goIiBSRU5BTUUgQ09MVU1OICIsJChhLmNvbHVtbiksIiBUTyAiLCQoYS50bykpfSxyZW5hbWVDb25zdHJhaW50OmE9Pnt0LnB1c2goIiBSRU5BTUUgQ09OU1RSQUlOVCAiLCQoYS5jb25zdHJhaW50KSwiIFRPICIsJChhLnRvKSl9LHJlbmFtZVRhYmxlOmE9Pnt0LnB1c2goIiBSRU5BTUUgVE8gIiwkKGEudG8pKX0sY3JlYXRlVmlldzphPT57dC5wdXNoKCJDUkVBVEUgIiksYS5vclJlcGxhY2UmJnQucHVzaCgiT1IgUkVQTEFDRSAiKSxhLnRlbXAmJnQucHVzaCgiVEVNUCAiKSxhLnJlY3Vyc2l2ZSYmdC5wdXNoKCJSRUNVUlNJVkUgIiksdC5wdXNoKCJWSUVXICIpLHUudGFibGVSZWYoYS5uYW1lKSxhLmNvbHVtbk5hbWVzJiZsKGEuY29sdW1uTmFtZXMsZz0+dC5wdXNoKCQoZykpLCEwKTtjb25zdCBmPWEucGFyYW1ldGVycyYmT2JqZWN0LmVud
14HJpZXMoYS5wYXJhbWV0ZXJzKTtmIT1udWxsJiZmLmxlbmd0aCYmKHQucHVzaCgiIFdJVEggIiksbChmLChbZyxPXSk9PnQucHVzaChnLCI9IixPKSwhMSkpLHQucHVzaCgiIEFTICIpLHUuc2VsZWN0KGEucXVlcnkpLGEuY2hlY2tPcHRpb24mJnQucHVzaCgiIFdJVEggIixhLmNoZWNrT3B0aW9uLnRvVXBwZXJDYXNlKCksIiBDSEVDSyBPUFRJT04iKX0sY3JlYXRlTWF0ZXJpYWxpemVkVmlldzphPT57dC5wdXNoKCJDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgIiksYS5pZk5vdEV4aXN0cyYmdC5wdXNoKCJJRiBOT1QgRVhJU1RTICIpLHUudGFibGVSZWYoYS5uYW1lKSxhLmNvbHVtbk5hbWVzJiZsKGEuY29sdW1uTmFtZXMsZz0+dC5wdXNoKCQoZykpLCEwKTtjb25zdCBmPWEucGFyYW1ldGVycyYmT2JqZWN0LmVudHJpZXMoYS5wYXJhbWV0ZXJzKTtmIT1udWxsJiZmLmxlbmd0aCYmKHQucHVzaCgiIFdJVEggIiksbChmLChbZyxPXSk9PnQucHVzaChnLCI9IixPKSwhMSkpLGEudGFibGVzcGFjZSYmdC5wdXNoKCIgVEFCTEVTUEFDRSAiLCQoYS50YWJsZXNwYWNlKSksdC5wdXNoKCIgQVMgIiksdS5zZWxlY3QoYS5xdWVyeSksdHlwZW9mIGEud2l0aERhdGE9PSJib29sZWFuIiYmdC5wdXNoKGEud2l0aERhdGE/IiBXSVRIIERBVEEiOiIgV0lUSCBOTyBEQVRBIil9LHJlZnJlc2hNYXRlcmlhbGl6ZWRWaWV3OmE9Pnt0LnB1c2goIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgIiksYS5jb25jdXJyZW50bHkmJnQucHVzaCgiQ09OQ1VSUkVOVExZICIpLHUudGFibGVSZWYoYS5uYW1lKSx0eXBlb2YgYS53aXRoRGF0YT09ImJvb2xlYW4iJiZ0LnB1c2goYS53aXRoRGF0YT8iIFdJVEggREFUQSI6IiBXSVRIIE5PIERBVEEiKX0sc2VsZWN0OmE9PnUuc3VwZXIoKS5zZWxlY3QoYSksc2VsZWN0aW9uOmE9PntpZih0LnB1c2goIlNFTEVDVCAiKSxhLmRpc3RpbmN0JiYodHlwZW9mIGEuZGlzdGluY3Q9PSJzdHJpbmciP3QucHVzaChhLmRpc3RpbmN0LnRvVXBwZXJDYXNlKCkpOih0LnB1c2goIiBESVNUSU5DVCBPTiAiKSxsKGEuZGlzdGluY3QsZj0+dS5leHByKGYpLCEwKSksdC5wdXNoKCIgIikpLGEuY29sdW1ucyYmbChhLmNvbHVtbnMsZj0+dS5zZWxlY3Rpb25Db2x1bW4oZiksITEpLHQucHVzaCgiICIpLGEuZnJvbSl7dC5wdXNoKCJGUk9NICIpO2
14NvbnN0IGY9YS5mcm9tLmxlbmd0aDtmb3IobGV0IGc9MDtnPGY7ZysrKXtjb25zdCBPPWEuZnJvbVtnXTtnPjAmJiFPLmpvaW4mJnQucHVzaCgiLCIpLHUuZnJvbShPKX10LnB1c2goIiAiKX1hLndoZXJlJiYodC5wdXNoKCJXSEVSRSAiKSx1LmV4cHIoYS53aGVyZSksdC5wdXNoKCIgIikpLGEuZ3JvdXBCeSYmKHQucHVzaCgiR1JPVVAgQlkgIiksbChhLmdyb3VwQnksZj0+dS5leHByKGYpLCExKSx0LnB1c2goIiAiKSxhLmhhdmluZyYmKHQucHVzaCgiIEhBVklORyAiKSx1LmV4cHIoYS5oYXZpbmcpLHQucHVzaCgiICIpKSksYS5vcmRlckJ5JiYoeCh1LGEub3JkZXJCeSksdC5wdXNoKCIgIikpLGEubGltaXQmJihhLmxpbWl0Lm9mZnNldCYmKHQucHVzaCgiT0ZGU0VUICIpLHUuZXhwcihhLmxpbWl0Lm9mZnNldCkpLGEubGltaXQubGltaXQmJih0LnB1c2goIkxJTUlUICIpLHUuZXhwcihhLmxpbWl0LmxpbWl0KSkpLGEuZm9yJiYodC5wdXNoKCJGT1IgIixhLmZvci50eXBlLnRvVXBwZXJDYXNlKCkpLGEuc2tpcCYmdC5wdXNoKCIgIixhLnNraXAudHlwZS50b1VwcGVyQ2FzZSgpKSl9LHNob3c6YT0+e3QucHVzaCgiU0hPVyAiLCQoYS52YXJpYWJsZSkpfSxwcmVwYXJlOmE9Pnt2YXIgZjt0LnB1c2goIlBSRVBBUkUgIiwkKGEubmFtZSkpLCEoKGY9YS5hcmdzKT09PW51bGx8fGY9PT12b2lkIDApJiZmLmxlbmd0aCYmbChhLmFyZ3MsZz0+dS5kYXRhVHlwZShnKSwhMCksdC5wdXNoKCIgQVMgIiksdS5zdGF0ZW1lbnQoYS5zdGF0ZW1lbnQpfSxkZWFsbG9jYXRlOmE9PntpZih0LnB1c2goIkRFQUxMT0NBVEUgIiksIm5hbWUiaW4gYS50YXJnZXQpe3QucHVzaChhLnRhcmdldC5uYW1lKTtyZXR1cm59dC5wdXNoKCJBTEwiKX0sYXJyYXlTZWxlY3Q6YT0+e3QucHVzaCgiYXJyYXkoIiksdS5zZWxlY3QoYS5zZWxlY3QpLHQucHVzaCgiKSIpfSx1bmlvbjphPT57dC5wdXNoKCIoIiksdS5zdGF0ZW1lbnQoYS5sZWZ0KSx0LnB1c2goIikgIixhLnR5cGUudG9VcHBlckNhc2UoKSwiICIpLGEucmlnaHQudHlwZT09PSJ1bmlvbiJ8fGEucmlnaHQudHlwZT09PSJ1bmlvbiBhbGwiP3UudW5pb24oYS5yaWdodCk6KHQucHVzaCgiKCIpLHUuc3RhdGVtZW50KGEucmlnaHQpLHQucHVzaCgiKSIpKX0sc2VsZWN0aW9uQ29sdW1uOmE9Pnt1LmV4cHIoYS5leHByKSxhLmFsaWFzJiZ0LnB1c2goIiBBUyAiLCQoYS5hbGlhcykpLHQucHVzaCgiICIpfSxzZXQ6YT0+e3QucHVzaCgkKGEuY29sdW1uKSwiID0gIiksdS5leHByKGEudmFsdWUpLHQucHVzaCgiICIpfSxzdGF0ZW1lbnQ6YT0+dS5zdXBlcigpLnN0YXRlbWVudChhKSx0YWJsZVJlZjphPT57dyhhKSxhLmFsaWFzJiZ0LnB1c2goIiBBUyAiLF8oYS5hbGlhcykpLHQucHVzaCgiICIpfSx0ZXJuYXJ5OmE9Pnt1LmV4cHIoYS52YWx1ZSksdC5wdXNoKCIgIixhLm9wLCIgIiksdS5leHByKGEubG8pLHQucHVzaCgiIEFORCAiKSx1LmV4cHIoYS5oaSksdC5wdXNoKCIgIil9LHRyYW5zYWN0aW9uOmE9Pnt0LnB1c2goYS50eXBlKX0sdW5hcnk6YT0+e3N3aXRjaChhLm9wKXtjYXNlIisiOmNhc2UiLSI6QyhhKSx1LmV4cHIoYS5vcGVyYW5kKTticmVhaztjYXNlIk5PVCI6dC5wdXNoKGEub3ApLHQucHVzaCgiICIpLHUuZXhwcihhLm9wZXJhbmQpO2JyZWFrO2RlZmF1bHQ6dS5leHByKGEub3BlcmFuZCksdC5wdXNoKCIgIiksdC5wdXNoKGEub3ApfX0sdXBkYXRlOmE9Pnt0LnB1c2goIlVQREFURSAiKSx1LnRhYmxlUmVmKGEudGFibGUpLHQucHVzaCgiIFNFVCAiKSxsKGEuc2V0cyxmPT51LnNldChmKSwhMSksdC5wdXNoKCIgIiksYS5mcm9tJiYodC5wdXNoKCJGUk9NICIpLHUuZnJvbShhLmZyb20pLHQucHVzaCgiICIpKSxhLndoZXJlJiYodC5wdXNoKCJXSEVSRSAiKSx1LmV4cHIoYS53aGVyZSksdC5wdXNoKCIgIikpLGEucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwoYS5yZXR1cm5pbmcsZj0+dS5zZWxlY3Rpb25Db2x1bW4oZiksITEpLHQucHVzaCgiICIpKX19KSk7by50b1NxbD17fTtjb25zdCBlPW4uQXN0RGVmYXVsdE1hcHBlci5wcm90b3R5cGU7Zm9yKGNvbnN0IHUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpe2NvbnN0IGE9ZVt1XTt1PT09ImNvbnN0cnVjdG9yInx8dT09PSJzdXBlciJ8fHR5cGVvZiBhIT0iZnVuY3Rpb24ifHwoby50b1NxbFt1XT1mdW5jdGlvbiguLi5mKXt0cnl7cmV0dXJuIHFbdV0uYXBwbHkocSxmKSx0LmpvaW4oIiIpLnRyaW0oKX1maW5hbGx5e3Q9W119fSl9fSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGl0ZXJhbD12b2lkIDA7ZnVuY3Rpb24gbihzKXtpZihzPT1udWxsKXJldHVybiJOVUxMIjtpZihBcnJheS5pc0FycmF5KHMpKXt2YXIgcj1zLm1hcChuKTtyZXR1cm4iKCIrci5qb2luKCIsICIpKyIpIn12YXIgbT1+cy5pbmRleE9mKCJcXCIpLGg9bT8iRSI6IiI7cmV0dXJuIHM9cy5yZXBsYWNlKC8nL2csIicnIikscz1zLnJlcGxhY2UoL1xcL2csIlxcXFwiKSxoKyInIitzKyInIn1vLmxpdGVyYWw9bn0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmxvY2F0aW9uT2Y9dm9pZCAwO2Z1bmN0aW9uIG4ocyl7Y29uc3Qgcj1zLl9sb2NhdGlvbjtpZighcil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc3RhdGVtZW50IGhhcyBub3QgYmVlbiBwYXJzZWQgdXNpbmcgbG9jYXRpb24gdHJhY2tpbmcgKHdoaWNoIGhhcyBhIHNtYWxsIHBlcmZvcm1hbmNlIGhpdCkuICIpO3JldHVybiByfW8ubG9jYXRpb25PZj1ufV0pKX0pKGZlKTtmdW5jdGlvbiBRKHApeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFE9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9LFEocCl9ZnVuY3Rpb24gWihwLGMpe2lmKCEocCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFRzKHAsYyl7aWYoUShwKSE9Im9iamVjdCJ8fCFwKXJldHVybi
14BwO3ZhciBvPXBbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihvIT09dm9pZCAwKXt2YXIgaT1vLmNhbGwocCxjKTtpZihRKGkpIT0ib2JqZWN0IilyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybihjPT09InN0cmluZyI/U3RyaW5nOk51bWJlcikocCl9ZnVuY3Rpb24gSGUocCl7dmFyIGM9VHMocCwic3RyaW5nIik7cmV0dXJuIFEoYyk9PSJzeW1ib2wiP2M6YysiIn1mdW5jdGlvbiBZZShwLGMpe2Zvcih2YXIgbz0wO288Yy5sZW5ndGg7bysrKXt2YXIgaT1jW29dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHAsSGUoaS5rZXkpLGkpfX1mdW5jdGlvbiBlZShwLGMsbyl7cmV0dXJuIGMmJlllKHAucHJvdG90eXBlLGMpLG8mJlllKHAsbyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHAsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSkscH1mdW5jdGlvbiBjZShwKXtpZihwPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHB9ZnVuY3Rpb24gUmUocCxjKXtyZXR1cm4gUmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obyxpKXtyZXR1cm4gby5fX3Byb3RvX189aSxvfSxSZShwLGMpfWZ1bmN0aW9uIGdlKHAsYyl7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiImJmMhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7cC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJlJlKHAsYyl9ZnVuY3Rpb24gd2UocCxjKXtpZihjJiYoUShjKT09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKSlyZXR1cm4gYztpZihjIT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGNlKHApfWZ1bmN0aW9uIHNlKHApe3JldHVybiBzZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihjKXtyZXR1cm4gYy5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihjKX0sc2UocCl9ZnVuY3Rpb24gcGUocCxjLG8pe3JldHVybihjPUhlKGMpKWluIHA/T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsYyx7dmFsdWU6byxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnBbY109byxwfWZ1bmN0aW9uIE5zKHApe2lmKEFycmF5LmlzQXJyYXkocCkpcmV0dXJuIHB9ZnVuY3Rpb24gQ3MocCl7aWYodHlwZW9mIFN5bWJvbDwidSImJnBbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8cFsiQEBpdGVyYXRvciJdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKHApfWZ1bmN0aW9uIFdlKHAsYyl7KGM9PW51bGx8fGM+cC5sZW5ndGgpJiYoYz1wLmxlbmd0aCk7Zm9yKHZhciBvPTAsaT1BcnJheShjKTtvPGM7bysrKWlbb109cFtvXTtyZXR1cm4gaX1mdW5jdGlvbiBScyhwLGMpe2lmKHApe2lmKHR5cGVvZiBwPT0ic3RyaW5nIilyZXR1cm4gV2UocCxjKTt2YXIgbz17fS50b1N0cmluZy5jYWxsKHApLnNsaWNlKDgsLTEpO3JldHVybiBvPT09Ik9iamVjdCImJnAuY29uc3RydWN0b3ImJihvPXAuY29uc3RydWN0b3IubmFtZSksbz09PSJNYXAifHxvPT09IlNldCI/QXJyYXkuZnJvbShwKTpvPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG8pP1dlKHAsYyk6dm9pZCAwfX1mdW5jdGlvbiBMcygpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiBJcyhwKXtyZXR1cm4gTnMocCl8fENzKHApfHxScyhwKXx8THMoKX1mdW5jdGlvbiBHZShwLGMpe3ZhciBvPU9iamVjdC5rZXlzKHApO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocCk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCxuKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIEtlKHApe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP0dlKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtwZShwLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTpHZShPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIHB9dmFyIFBzPXt0eXBlOiJsb2dnZXIiLGxvZzpmdW5jdGlvbihjKXt0aGlzLm91dHB1dCgibG9nIixjKX0sd2FybjpmdW5jdGlvbihjKXt0aGlzLm91dHB1dCgid2FybiIsYyl9LGVycm9yOmZ1bmN0aW9uKGMpe3RoaXMub3V0cHV0KCJlcnJvciIsYyl9LG91dHB1dDpmdW5jdGlvbihjLG8pe2NvbnNvbGUmJmNvbnNvbGVbY10mJmNvbnNvbGVbY10uYXBwbHkoY29uc29sZSxvKX19LGpzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChjKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307Wih0aGlzLHApLHRoaXMuaW5pdChjLG8pfXJldHVybi
14BlZShwLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307dGhpcy5wcmVmaXg9aS5wcmVmaXh8fCJpMThuZXh0OiIsdGhpcy5sb2dnZXI9b3x8UHMsdGhpcy5vcHRpb25zPWksdGhpcy5kZWJ1Zz1pLmRlYnVnfX0se2tleToic2V0RGVidWciLHZhbHVlOmZ1bmN0aW9uKG8pe3RoaXMuZGVidWc9b319LHtrZXk6ImxvZyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxuPTA7bjxvO24rKylpW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksImxvZyIsIiIsITApfX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxuPTA7bjxvO24rKylpW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksIndhcm4iLCIiLCEwKX19LHtrZXk6ImVycm9yIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG8pLG49MDtuPG87bisrKWlbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLmZvcndhcmQoaSwiZXJyb3IiLCIiKX19LHtrZXk6ImRlcHJlY2F0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxuPTA7bjxvO24rKylpW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksIndhcm4iLCJXQVJOSU5HIERFUFJFQ0FURUQ6ICIsITApfX0se2tleToiZm9yd2FyZCIsdmFsdWU6ZnVuY3Rpb24obyxpLG4scyl7cmV0dXJuIHMmJiF0aGlzLmRlYnVnP251bGw6KHR5cGVvZiBvWzBdPT0ic3RyaW5nIiYmKG9bMF09IiIuY29uY2F0KG4pLmNvbmNhdCh0aGlzLnByZWZpeCwiICIpLmNvbmNhdChvWzBdKSksdGhpcy5sb2dnZXJbaV0obykpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbihvKXtyZXR1cm4gbmV3IHAodGhpcy5sb2dnZXIsS2UoS2Uoe30se3ByZWZpeDoiIi5jb25jYXQodGhpcy5wcmVmaXgsIjoiKS5jb25jYXQobywiOiIpfSksdGhpcy5vcHRpb25zKSl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24obyl7cmV0dXJuIG89b3x8dGhpcy5vcHRpb25zLG8ucHJlZml4PW8ucHJlZml4fHx0aGlzLnByZWZpeCxuZXcgcCh0aGlzLmxvZ2dlcixvKX19XSkscH0oKSx0ZT1uZXcganMsbWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKCl7Wih0aGlzLHApLHRoaXMub2JzZXJ2ZXJzPXt9fXJldHVybiBlZShwLFt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24obyxpKXt2YXIgbj10aGlzO3JldHVybiBvLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihzKXtuLm9ic2VydmVyc1tzXT1uLm9ic2VydmVyc1tzXXx8W10sbi5vYnNlcnZlcnNbc10ucHVzaChpKX0pLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKG8saSl7aWYodGhpcy5vYnNlcnZlcnNbb10pe2lmKCFpKXtkZWxldGUgdGhpcy5vYnNlcnZlcnNbb107cmV0dXJufXRoaXMub2JzZXJ2ZXJzW29dPXRoaXMub2JzZXJ2ZXJzW29dLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbiE9PWl9KX19fSx7a2V5OiJlbWl0Iix2YWx1ZTpmdW5jdGlvbihvKXtmb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShpPjE/aS0xOjApLHM9MTtzPGk7cysrKW5bcy0xXT1hcmd1bWVudHNbc107aWYodGhpcy5vYnNlcnZlcnNbb10pe3ZhciByPVtdLmNvbmNhdCh0aGlzLm9ic2VydmVyc1tvXSk7ci5mb3JFYWNoKGZ1bmN0aW9uKGgpe2guYXBwbHkodm9pZCAwLG4pfSl9aWYodGhpcy5vYnNlcnZlcnNbIioiXSl7dmFyIG09W10uY29uY2F0KHRoaXMub2JzZXJ2ZXJzWyIqIl0pO20uZm9yRWFjaChmdW5jdGlvbihoKXtoLmFwcGx5KGgsW29dLmNvbmNhdChuKSl9KX19fV0pLHB9KCk7ZnVuY3Rpb24geGUoKXt2YXIgcCxjLG89bmV3IFByb21pc2UoZnVuY3Rpb24oaSxuKXtwPWksYz1ufSk7cmV0dXJuIG8ucmVzb2x2ZT1wLG8ucmVqZWN0PWMsb31mdW5jdGlvbiBKZShwKXtyZXR1cm4gcD09bnVsbD8iIjoiIitwfWZ1bmN0aW9uIHFzKHAsYyxvKXtwLmZvckVhY2goZnVuY3Rpb24oaSl7Y1tpXSYmKG9baV09Y1tpXSl9KX1mdW5jdGlvbiBMZShwLGMsbyl7ZnVuY3Rpb24gaShtKXtyZXR1cm4gbSYmbS5pbmRleE9mKCIjIyMiKT4tMT9tLnJlcGxhY2UoLyMjIy9nLCIuIik6bX1mdW5jdGlvbiBuKCl7cmV0dXJuIXB8fHR5cGVvZiBwPT0ic3RyaW5nIn1mb3IodmFyIHM9dHlwZW9mIGMhPSJzdHJpbmciP1tdLmNvbmNhdChjKTpjLnNwbGl0KCIuIik7cy5sZW5ndGg+MTspe2lmKG4oKSlyZXR1cm57fTt2YXIgcj1pKHMuc2hpZnQoKSk7IXBbcl0mJm8mJihwW3JdPW5ldyBvKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCxyKT9wPXBbcl06cD17fX1yZXR1cm4gbigpP3t9OntvYmo6cCxrOmkocy5zaGlmdCgpKX19ZnVuY3Rpb24gUWUocCxjLG8pe3ZhciBpPUxlKHAsYyxPYmplY3QpLG49aS5vYmoscz1pLms7bltzXT1vfWZ1bmN0aW9uIERzKHAsYyxvLGkpe3ZhciBuPUxlKHAsYyxPYmplY3QpLHM9bi5vYmoscj1uLms7c1tyXT1zW3JdfHxbXSxzW3JdLnB1c2gobyl9ZnVuY3Rpb24gdmUocCxjKXt2YXIgbz1MZShwLGMpLGk9by5vYmosbj1vLms7aWYoaSlyZXR1cm4gaVtuXX1mdW5jdGlvbiBYZShwLGMsbyl7dmFyIGk9dmUocCxvKTtyZXR1cm4gaSE9PXZvaWQgMD9pOnZlKGMsbyl9ZnVuY3Rpb24gWmUocCxjLG8pe2Zvcih2YXIgaSBpbiBjKWkhPT0iX19wcm90b19fIiYmaSE9PSJjb25zdHJ1Y3RvciImJihpIGluIHA/dHlwZW9mIHBbaV09PSJzdHJpbmcifHxwW2ldaW5zdGFuY2VvZiBTdHJpbmd8fHR5cGVvZiBjW2ldPT0ic3RyaW5nInx8Y1tpXWluc3RhbmNlb2YgU3RyaW5nP28mJihwW2ldPWNbaV0pOlplKHBbaV0sY1tpXSxvKTpwW2ldPWNbaV0pO3JldHVybiBwfWZ1bmN0aW9uIGRlKHApe3JldHVybiBwLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywiXFwkJiIpfXZhciBNcz17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7IiwiLyI6IiYjeDJGOyJ9O2Z1bmN0aW9uIFVzKHApe3JldHVybiB0eXBlb2YgcD09InN0cmluZyI/cC5yZXBsYWNlKC9bJjw+IidcL10vZyxmdW5jdGlvbihjKXtyZXR1cm4gTXNbY119KTpwfXZhciBBZT10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lm5hdmlnYXRvciYmdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50RGF0YT4idSImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIik+LTEsRnM9WyIgIiwiLCIsIj8iLCIhIiwiOyJdO2Z1bmN0aW9uIHpzKHAsYyxvKXtjPWN8fCIiLG89b3x8IiI7dmFyIGk9RnMuZmlsdGVyKGZ1bmN0aW9uKG0pe3JldHVybiBjLmluZGV4T2YobSk8MCYmby5pbmRleE9mKG0pPDB9KTtpZihpLmxlbmd0aD09PTApcmV0dXJuITA7dmFyIG49bmV3IFJlZ0V4cCgiKCIuY29uY2F0KGkubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBtPT09Ij8iPyJcXD8iOm19KS5qb2luKCJ8IiksIikiKSkscz0hbi50ZXN0KHApO2lmKCFzKXt2YXIgcj1wLmluZGV4T2Yobyk7cj4wJiYhbi50ZXN0KHAuc3Vic3RyaW5nKDAscikpJiYocz0hMCl9cmV0dXJuIHN9ZnVuY3Rpb24gZXMocCxjKXt2YXIgbz1PYmplY3Qua2V5cyhwKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHApO2MmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHAsbikuZW51bWVyYWJsZX0pKSxvLnB1c2guYXBwbHkobyxpKX1yZXR1cm4gb31mdW5jdGlvbiBPZShwKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgbz1hcmd1bWVudHNbY10hPW51bGw/YXJndW1lbnRzW2NdOnt9O2MlMj9lcyhPYmplY3QobyksITApLmZvckVhY2goZnVuY3Rpb24oaSl7cGUocCxpLG9baV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6ZXMoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShwLGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGkpKX0pfXJldHVybi
14BwfWZ1bmN0aW9uIEJzKHApe3ZhciBjPVZzKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9c2UocCksbjtpZihjKXt2YXIgcz1zZSh0aGlzKS5jb25zdHJ1Y3RvcjtuPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLHMpfWVsc2Ugbj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gd2UodGhpcyxuKX19ZnVuY3Rpb24gVnMoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PSJmdW5jdGlvbiIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gc3MocCxjKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06Ii4iO2lmKHApe2lmKHBbY10pcmV0dXJuIHBbY107Zm9yKHZhciBpPWMuc3BsaXQobyksbj1wLHM9MDtzPGkubGVuZ3RoOysrcyl7aWYoIW58fHR5cGVvZiBuW2lbc11dPT0ic3RyaW5nIiYmcysxPGkubGVuZ3RoKXJldHVybjtpZihuW2lbc11dPT09dm9pZCAwKXtmb3IodmFyIHI9MixtPWkuc2xpY2UocyxzK3IpLmpvaW4obyksaD1uW21dO2g9PT12b2lkIDAmJmkubGVuZ3RoPnMrcjspcisrLG09aS5zbGljZShzLHMrcikuam9pbihvKSxoPW5bbV07aWYoaD09PXZvaWQgMClyZXR1cm47aWYoaD09PW51bGwpcmV0dXJuIG51bGw7aWYoYy5lbmRzV2l0aChtKSl7aWYodHlwZW9mIGg9PSJzdHJpbmciKXJldHVybiBoO2lmKG0mJnR5cGVvZiBoW21dPT0ic3RyaW5nIilyZXR1cm4gaFttXX12YXIgeT1pLnNsaWNlKHMrcikuam9pbihvKTtyZXR1cm4geT9zcyhoLHksbyk6dm9pZCAwfW49bltpW3NdXX1yZXR1cm4gbn19dmFyIEhzPWZ1bmN0aW9uKHApe2dlKG8scCk7dmFyIGM9QnMobyk7ZnVuY3Rpb24gbyhpKXt2YXIgbixzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7bnM6WyJ0cmFuc2xhdGlvbiJdLGRlZmF1bHROUzoidHJhbnNsYXRpb24ifTtyZXR1cm4gWih0aGlzLG8pLG49Yy5jYWxsKHRoaXMpLEFlJiZtZS5jYWxsKGNlKG4pKSxuLmRhdGE9aXx8e30sbi5vcHRpb25zPXMsbi5vcHRpb25zLmtleVNlcGFyYXRvcj09PXZvaWQgMCYmKG4ub3B0aW9ucy5rZXlTZXBhcmF0b3I9Ii4iKSxuLm9wdGlvbnMuaWdub3JlSlNPTlN0cnVjdHVyZT09PXZvaWQgMCYmKG4ub3B0aW9ucy5pZ25vcmVKU09OU3RydWN0dXJlPSEwKSxufXJldHVybiBlZShvLFt7a2V5OiJhZGROYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihuKXt0aGlzLm9wdGlvbnMubnMuaW5kZXhPZihuKTwwJiZ0aGlzLm9wdGlvbnMubnMucHVzaChuKX19LHtrZXk6InJlbW92ZU5hbWVzcGFjZXMiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciBzPXRoaXMub3B0aW9ucy5ucy5pbmRleE9mKG4pO3M+LTEmJnRoaXMub3B0aW9ucy5ucy5zcGxpY2UocywxKX19LHtrZXk6ImdldFJlc291cmNlIix2YWx1ZTpmdW5jdGlvbihuLHMscil7dmFyIG09YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9LGg9bS5rZXlTZXBhcmF0b3IhPT12b2lkIDA/bS5rZXlTZXBhcmF0b3I6dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcix5PW0uaWdub3JlSlNPTlN0cnVjdHVyZSE9PXZvaWQgMD9tLmlnbm9yZUpTT05TdHJ1Y3R1cmU6dGhpcy5vcHRpb25zLmlnbm9yZUpTT05TdHJ1Y3R1cmUsdD1bbixzXTtyJiZ0eXBlb2YgciE9InN0cmluZyImJih0PXQuY29uY2F0KHIpKSxyJiZ0eXBlb2Ygcj09InN0cmluZyImJih0PXQuY29uY2F0KGg/ci5zcGxpdChoKTpyKSksbi5pbmRleE9mKCIuIik+LTEmJih0PW4uc3BsaXQoIi4iKSk7dmFyICQ9dmUodGhpcy5kYXRhLHQpO3JldHVybiAkfHwheXx8dHlwZW9mIHIhPSJzdHJpbmciPyQ6c3ModGhpcy5kYXRhJiZ0aGlzLmRhdGFbbl0mJnRoaXMuZGF0YVtuXVtzXSxyLGgpfX0se2tleToiYWRkUmVzb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKG4scyxyLG0pe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+NCYmYXJndW1lbnRzWzRdIT09dm9pZCAwP2FyZ3VtZW50c1s0XTp7c2lsZW50OiExfSx5PXRoaXMub3B0aW9ucy5rZXlTZXBhcmF0b3I7eT09PXZvaWQgMCYmKHk9Ii4iKTt2YXIgdD1bbixzXTtyJiYodD10LmNvbmNhdCh5P3Iuc3BsaXQoeSk6cikpLG4uaW5kZXhPZigiLiIpPi0xJiYodD1uLnNwbGl0KCIuIiksbT1zLHM9dFsxXSksdGhpcy5hZGROYW1lc3BhY2VzKHMpLFFlKHRoaXMuZGF0YSx0LG0pLGguc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixuLHMscixtKX19LHtrZXk6ImFkZFJlc291cmNlcyIsdmFsdWU6ZnVuY3Rpb24obixzLHIpe3ZhciBtPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTp7c2lsZW50OiExfTtmb3IodmFyIGggaW4gcikodHlwZW9mIHJbaF09PSJzdHJpbmcifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHJbaF0pPT09IltvYmplY3QgQXJyYXldIikmJnRoaXMuYWRkUmVzb3VyY2UobixzLGgscltoXSx7c2lsZW50OiEwfSk7bS5zaWxlbnR8fHRoaXMuZW1pdCgiYWRkZWQiLG4scyxyKX19LHtrZXk6ImFkZFJlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihuLHMscixtLGgpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+NSYmYXJndW1lbnRzWzVdIT09dm9pZCAwP2FyZ3VtZW50c1s1XTp7c2lsZW50OiExfSx0PVtuLHNdO24uaW5kZXhPZigiLiIpPi0xJiYodD1uLnNwbGl0KCIuIiksbT1yLHI9cyxzPXRbMV0pLHRoaXMuYWRkTmFtZXNwYWNlcyhzKTt2YXIgJD12ZSh0aGlzLmRhdGEsdCl8fHt9O20/WmUoJCxyLGgpOiQ9T2UoT2Uoe30sJCksciksUWUodGhpcy5kYXRhLHQsJCkseS5zaWxlbnR8fHRoaXMuZW1pdCgiYWRkZWQiLG4scyxyKX19LHtrZXk6InJlbW92ZVJlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihuLHMpe3RoaXMuaGFzUmVzb3VyY2VCdW5kbGUobixzKSYmZGVsZXRlIHRoaXMuZGF0YVtuXVtzXSx0aGlzLnJlbW92ZU5hbWVzcGFjZXMocyksdGhpcy5lbWl0KCJyZW1vdmVkIixuLHMpfX0se2tleToiaGFzUmVzb3VyY2VCdW5kbGUiLHZhbHVlOmZ1bmN0aW9uKG4scyl7cmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2UobixzKSE9PXZvaWQgMH19LHtrZXk6ImdldFJlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihuLHMpe3JldHVybiBzfHwocz10aGlzLm9wdGlvbnMuZGVmYXVsdE5TKSx0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUFQST09PSJ2MSI/T2UoT2Uoe30se30pLHRoaXMuZ2V0UmVzb3VyY2UobixzKSk6dGhpcy5nZXRSZXNvdXJjZShuLHMpfX0se2tleToiZ2V0RGF0YUJ5TGFuZ3VhZ2UiLHZhbHVlOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmRhdGFbbl19fSx7a2V5OiJoYXNMYW5ndWFnZVNvbWVUcmFuc2xhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciBzPXRoaXMuZ2V0RGF0YUJ5TGFuZ3VhZ2Uobikscj1zJiZPYmplY3Qua2V5cyhzKXx8W107cmV0dXJuISFyLmZpbmQoZnVuY3Rpb24obSl7cmV0dXJuIHNbbV0mJk9iamVjdC5rZXlzKHNbbV0pLmxlbmd0aD4wfSl9f
14Sx7a2V5OiJ0b0pTT04iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX19XSksb30obWUpLHRzPXtwcm9jZXNzb3JzOnt9LGFkZFBvc3RQcm9jZXNzb3I6ZnVuY3Rpb24oYyl7dGhpcy5wcm9jZXNzb3JzW2MubmFtZV09Y30saGFuZGxlOmZ1bmN0aW9uKGMsbyxpLG4scyl7dmFyIHI9dGhpcztyZXR1cm4gYy5mb3JFYWNoKGZ1bmN0aW9uKG0pe3IucHJvY2Vzc29yc1ttXSYmKG89ci5wcm9jZXNzb3JzW21dLnByb2Nlc3MobyxpLG4scykpfSksb319O2Z1bmN0aW9uIHJzKHAsYyl7dmFyIG89T2JqZWN0LmtleXMocCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhwKTtjJiYoaT1pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLG4pLmVudW1lcmFibGV9KSksby5wdXNoLmFwcGx5KG8saSl9cmV0dXJuIG99ZnVuY3Rpb24gVihwKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgbz1hcmd1bWVudHNbY10hPW51bGw/YXJndW1lbnRzW2NdOnt9O2MlMj9ycyhPYmplY3QobyksITApLmZvckVhY2goZnVuY3Rpb24oaSl7cGUocCxpLG9baV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6cnMoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShwLGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGkpKX0pfXJldHVybiBwfWZ1bmN0aW9uIFlzKHApe3ZhciBjPVdzKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9c2UocCksbjtpZihjKXt2YXIgcz1zZSh0aGlzKS5jb25zdHJ1Y3RvcjtuPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLHMpfWVsc2Ugbj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gd2UodGhpcyxuKX19ZnVuY3Rpb24gV3MoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PSJmdW5jdGlvbiIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19dmFyIG5zPXt9LGFzPWZ1bmN0aW9uKHApe2dlKG8scCk7dmFyIGM9WXMobyk7ZnVuY3Rpb24gbyhpKXt2YXIgbixzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gWih0aGlzLG8pLG49Yy5jYWxsKHRoaXMpLEFlJiZtZS5jYWxsKGNlKG4pKSxxcyhbInJlc291cmNlU3RvcmUiLCJsYW5ndWFnZVV0aWxzIiwicGx1cmFsUmVzb2x2ZXIiLCJpbnRlcnBvbGF0b3IiLCJiYWNrZW5kQ29ubmVjdG9yIiwiaTE4bkZvcm1hdCIsInV0aWxzIl0saSxjZShuKSksbi5vcHRpb25zPXMsbi5vcHRpb25zLmtleVNlcGFyYXRvcj09PXZvaWQgMCYmKG4ub3B0aW9ucy5rZXlTZXBhcmF0b3I9Ii4iKSxuLmxvZ2dlcj10ZS5jcmVhdGUoInRyYW5zbGF0b3IiKSxufXJldHVybiBlZShvLFt7a2V5OiJjaGFuZ2VMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24obil7biYmKHRoaXMubGFuZ3VhZ2U9bil9fSx7a2V5OiJleGlzdHMiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7aW50ZXJwb2xhdGlvbjp7fX07aWYobj09bnVsbClyZXR1cm4hMTt2YXIgcj10aGlzLnJlc29sdmUobixzKTtyZXR1cm4gciYmci5yZXMhPT12b2lkIDB9fSx7a2V5OiJleHRyYWN0RnJvbUtleSIsdmFsdWU6ZnVuY3Rpb24obixzKXt2YXIgcj1zLm5zU2VwYXJhdG9yIT09dm9pZCAwP3MubnNTZXBhcmF0b3I6dGhpcy5vcHRpb25zLm5zU2VwYXJhdG9yO3I9PT12b2lkIDAmJihyPSI6Iik7dmFyIG09cy5rZXlTZXBhcmF0b3IhPT12b2lkIDA/cy5rZXlTZXBhcmF0b3I6dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcixoPXMubnN8fHRoaXMub3B0aW9ucy5kZWZhdWx0TlN8fFtdLHk9ciYmbi5pbmRleE9mKHIpPi0xLHQ9IXRoaXMub3B0aW9ucy51c2VyRGVmaW5lZEtleVNlcGFyYXRvciYmIXMua2V5U2VwYXJhdG9yJiYhdGhpcy5vcHRpb25zLnVzZXJEZWZpbmVkTnNTZXBhcmF0b3ImJiFzLm5zU2VwYXJhdG9yJiYhenMobixyLG0pO2lmKHkmJiF0KXt2YXIgJD1uLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApO2lmKCQmJiQubGVuZ3RoPjApcmV0dXJue2tleTpuLG5hbWVzcGFjZXM6aH07dmFyIF89bi5zcGxpdChyKTsociE9PW18fHI9PT1tJiZ0aGlzLm9wdGlvbnMubnMuaW5kZXhPZihfWzBdKT4tMSkmJihoPV8uc2hpZnQoKSksbj1fLmpvaW4obSl9cmV0dXJuIHR5cGVvZiBoPT0ic3RyaW5nIiYmKGg9W2hdKSx7a2V5Om4sbmFtZXNwYWNlczpofX19LHtrZXk6InRyYW5zbGF0ZSIsdmFsdWU6ZnVuY3Rpb24obixzLHIpe3ZhciBtPXRoaXM7aWYoUShzKSE9PSJvYmplY3QiJiZ0aGlzLm9wdGlvbnMub3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXImJihzPXRoaXMub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihhcmd1bWVudHMpKSxzfHwocz17fSksbj09bnVsbClyZXR1cm4iIjtBcnJheS5pc0FycmF5KG4pfHwobj1bU3RyaW5nKG4pXSk7dmFyIGg9cy5yZXR1cm5EZXRhaWxzIT09dm9pZCAwP3MucmV0dXJuRGV0YWlsczp0aGlzLm9wdGlvbnMucmV0dXJuRGV0YWlscyx5PXMua2V5U2VwYXJhdG9yIT09dm9pZCAwP3Mua2V5U2VwYXJhdG9yOnRoaXMub3B0aW9ucy5rZXlTZXBhcmF0b3IsdD10aGlzLmV4dHJhY3RGcm9tS2V5KG5bbi5sZW5ndGgtMV0scyksJD10LmtleSxfPXQubmFtZXNwYWNlcyxsPV9bXy5sZW5ndGgtMV0sYj1zLmxuZ3x8dGhpcy5sYW5ndWFnZSx3PXMuYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGV8fHRoaXMub3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb0NJTW9kZTtpZihiJiZiLnRvTG93ZXJDYXNlKCk9PT0iY2ltb2RlIil7aWYodyl7dmFyIGQ9cy5uc1NlcGFyYXRvcnx8dGhpcy5vcHRpb25zLm5zU2VwYXJhdG9yO3JldHVybiBoPyh4LnJlcz0iIi5jb25jYXQobCkuY29uY2F0KGQpLmNvbmNhdCg
14kKSx4KToiIi5jb25jYXQobCkuY29uY2F0KGQpLmNvbmNhdCgkKX1yZXR1cm4gaD8oeC5yZXM9JCx4KTokfXZhciB4PXRoaXMucmVzb2x2ZShuLHMpLEE9eCYmeC5yZXMsTj14JiZ4LnVzZWRLZXl8fCQsaz14JiZ4LmV4YWN0VXNlZEtleXx8JCx2PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoQSksRT1bIltvYmplY3QgTnVtYmVyXSIsIltvYmplY3QgRnVuY3Rpb25dIiwiW29iamVjdCBSZWdFeHBdIl0sQz1zLmpvaW5BcnJheXMhPT12b2lkIDA/cy5qb2luQXJyYXlzOnRoaXMub3B0aW9ucy5qb2luQXJyYXlzLHE9IXRoaXMuaTE4bkZvcm1hdHx8dGhpcy5pMThuRm9ybWF0LmhhbmRsZUFzT2JqZWN0LGU9dHlwZW9mIEEhPSJzdHJpbmciJiZ0eXBlb2YgQSE9ImJvb2xlYW4iJiZ0eXBlb2YgQSE9Im51bWJlciI7aWYocSYmQSYmZSYmRS5pbmRleE9mKHYpPDAmJiEodHlwZW9mIEM9PSJzdHJpbmciJiZ2PT09IltvYmplY3QgQXJyYXldIikpe2lmKCFzLnJldHVybk9iamVjdHMmJiF0aGlzLm9wdGlvbnMucmV0dXJuT2JqZWN0cyl7dGhpcy5vcHRpb25zLnJldHVybmVkT2JqZWN0SGFuZGxlcnx8dGhpcy5sb2dnZXIud2FybigiYWNjZXNzaW5nIGFuIG9iamVjdCAtIGJ1dCByZXR1cm5PYmplY3RzIG9wdGlvbnMgaXMgbm90IGVuYWJsZWQhIik7dmFyIHU9dGhpcy5vcHRpb25zLnJldHVybmVkT2JqZWN0SGFuZGxlcj90aGlzLm9wdGlvbnMucmV0dXJuZWRPYmplY3RIYW5kbGVyKE4sQSxWKFYoe30scykse30se25zOl99KSk6ImtleSAnIi5jb25jYXQoJCwiICgiKS5jb25jYXQodGhpcy5sYW5ndWFnZSwiKScgcmV0dXJuZWQgYW4gb2JqZWN0IGluc3RlYWQgb2Ygc3RyaW5nLiIpO3JldHVybiBoPyh4LnJlcz11LHgpOnV9aWYoeSl7dmFyIGE9dj09PSJbb2JqZWN0IEFycmF5XSIsZj1hP1tdOnt9LGc9YT9rOk47Zm9yKHZhciBPIGluIEEpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsTykpe3ZhciBSPSIiLmNvbmNhdChnKS5jb25jYXQoeSkuY29uY2F0KE8pO2ZbT109dGhpcy50cmFuc2xhdGUoUixWKFYoe30scykse2pvaW5BcnJheXM6ITEsbnM6X30pKSxmW09dPT09UiYmKGZbT109QVtPXSl9QT1mfX1lbHNlIGlmKHEmJnR5cGVvZiBDPT0ic3RyaW5nIiYmdj09PSJbb2JqZWN0IEFycmF5XSIpQT1BLmpvaW4oQyksQSYmKEE9dGhpcy5leHRlbmRUcmFuc2xhdGlvbihBLG4scyxyKSk7ZWxzZXt2YXIgTD0hMSxJPSExLEY9cy5jb3VudCE9PXZvaWQgMCYmdHlwZW9mIHMuY291bnQhPSJzdHJpbmciLFU9by5oYXNEZWZhdWx0VmFsdWUocyksaj1GP3RoaXMucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4KGIscy5jb3VudCxzKToiIix6PXNbImRlZmF1bHRWYWx1ZSIuY29uY2F0KGopXXx8cy5kZWZhdWx0VmFsdWU7IXRoaXMuaXNWYWxpZExvb2t1cChBKSYmVSYmKEw9ITAsQT16KSx0aGlzLmlzVmFsaWRMb29rdXAoQSl8fChJPSEwLEE9JCk7dmFyIG9lPXMubWlzc2luZ0tleU5vVmFsdWVGYWxsYmFja1RvS2V5fHx0aGlzLm9wdGlvbnMubWlzc2luZ0tleU5vVmFsdWVGYWxsYmFja1RvS2V5LGxlPW9lJiZJP3ZvaWQgMDpBLEs9VSYmeiE9PUEmJnRoaXMub3B0aW9ucy51cGRhdGVNaXNzaW5nO2lmKEl8fEx8fEspe2lmKHRoaXMubG9nZ2VyLmxvZyhLPyJ1cGRhdGVLZXkiOiJtaXNzaW5nS2V5IixiLGwsJCxLP3o6QSkseSl7dmFyIGllPXRoaXMucmVzb2x2ZSgkLFYoVih7fSxzKSx7fSx7a2V5U2VwYXJhdG9yOiExfSkpO2llJiZpZS5yZXMmJnRoaXMubG9nZ2VyLndhcm4oIlNlZW1zIHRoZSBsb2FkZWQgdHJhbnNsYXRpb25zIHdlcmUgaW4gZmxhdCBKU09OIGZvcm1hdCBpbnN0ZWFkIG9mIG5lc3RlZC4gRWl0aGVyIHNldCBrZXlTZXBhcmF0b3I6IGZhbHNlIG9uIGluaXQgb3IgbWFrZSBzdXJlIHlvdXIgdHJhbnNsYXRpb25zIGFyZSBwdWJsaXNoZWQgaW4gbmVzdGVkIGZvcm1hdC4iKX12YXIgQj1bXSxuZT10aGlzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcscy5sbmd8fHRoaXMubGFuZ3VhZ2UpO2lmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImZhbGxiYWNrIiYmbmUmJm5lWzBdKWZvcih2YXIgYWU9MDthZTxuZS5sZW5ndGg7YWUrKylCLnB1c2gobmVbYWVdKTtlbHNlIHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImFsbCI/Qj10aGlzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KHMubG5nfHx0aGlzLmxhbmd1YWdlKTpCLnB1c2gocy5sbmd8fHRoaXMubGFuZ3VhZ2UpO3ZhciAkZT1mdW5jdGlvbihiZSxVZSx5cyl7dmFyIGZzPVUmJnlzIT09QT95czpsZTttLm9wdGlvbnMubWlzc2luZ0tleUhhbmRsZXI/bS5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyKGJlLGwsVWUsZnMsSyxzKTptLmJhY2tlbmRDb25uZWN0b3ImJm0uYmFja2VuZENvbm5lY3Rvci5zYXZlTWlzc2luZyYmbS5iYWNrZW5kQ29ubmVjdG9yLnNhdmVNaXNzaW5nKGJlLGwsVWUsZnMsSyxzKSxtLmVtaXQoIm1pc3NpbmdLZXkiLGJlLGwsVWUsQSl9O3RoaXMub3B0aW9ucy5zYXZlTWlzc2luZyYmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1BsdXJhbHMmJkY/Qi5mb3JFYWNoKGZ1bmN0aW9uKF9lKXttLnBsdXJhbFJlc29sdmVyLmdldFN1ZmZpeGVzKF9lLHMpLmZvckVhY2goZnVuY3Rpb24oYmUpeyRlKFtfZV0sJCtiZSxzWyJkZWZhdWx0VmFsdWUiLmNvbmNhdChiZSldfHx6KX0pfSk6JGUoQiwkLHopKX1BPXRoaXMuZXh0ZW5kVHJhbnNsYXRpb24oQSxuLHMseCxyKSxJJiZBPT09JCYmdGhpcy5vcHRpb25zLmFwcGVuZE5hbWVzcGFjZVRvTWlzc2luZ0tleSYmKEE9IiIuY29uY2F0KGwsIjoiKS5jb25jYXQoJCkpLChJfHxMKSYmdGhpcy5vcHRpb25zLnBhcnNlTWlzc2luZ0tleUhhbmRsZXImJih0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUFQSSE9PSJ2MSI/QT10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcih0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5PyIiLmNvbmNhdChsLCI6IikuY29uY2F0KCQpOiQsTD9BOnZvaWQgMCk6QT10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcihBKSl9cmV0dXJuIGg/KHgucmVzPUEseCk6QX19LHtrZXk6ImV4dGVuZFRyYW5zbGF0aW9uIix2YWx1ZTpmdW5jdGlvbihuLHMscixtLGgpe3ZhciB5PXRoaXM7aWYodGhpcy5pMThuRm9ybWF0JiZ0aGlzLmkxOG5Gb3JtYXQucGFyc2Upbj10aGlzLmkxOG5Gb3JtYXQucGFyc2UobixWKFYoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyksciksbS51c2VkTG5nLG0udXNlZE5TLG0udXNlZEtleSx7cmVzb2x2ZWQ6bX0
14pO2Vsc2UgaWYoIXIuc2tpcEludGVycG9sYXRpb24pe3IuaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IuaW5pdChWKFYoe30scikse2ludGVycG9sYXRpb246VihWKHt9LHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uKSxyLmludGVycG9sYXRpb24pfSkpO3ZhciB0PXR5cGVvZiBuPT0ic3RyaW5nIiYmKHImJnIuaW50ZXJwb2xhdGlvbiYmci5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyE9PXZvaWQgMD9yLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzOnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyksJDtpZih0KXt2YXIgXz1uLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApOyQ9XyYmXy5sZW5ndGh9dmFyIGw9ci5yZXBsYWNlJiZ0eXBlb2Ygci5yZXBsYWNlIT0ic3RyaW5nIj9yLnJlcGxhY2U6cjtpZih0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5kZWZhdWx0VmFyaWFibGVzJiYobD1WKFYoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyksbCkpLG49dGhpcy5pbnRlcnBvbGF0b3IuaW50ZXJwb2xhdGUobixsLHIubG5nfHx0aGlzLmxhbmd1YWdlLHIpLHQpe3ZhciBiPW4ubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCksdz1iJiZiLmxlbmd0aDskPHcmJihyLm5lc3Q9ITEpfXIubmVzdCE9PSExJiYobj10aGlzLmludGVycG9sYXRvci5uZXN0KG4sZnVuY3Rpb24oKXtmb3IodmFyIEE9YXJndW1lbnRzLmxlbmd0aCxOPW5ldyBBcnJheShBKSxrPTA7azxBO2srKylOW2tdPWFyZ3VtZW50c1trXTtyZXR1cm4gaCYmaFswXT09PU5bMF0mJiFyLmNvbnRleHQ/KHkubG9nZ2VyLndhcm4oIkl0IHNlZW1zIHlvdSBhcmUgbmVzdGluZyByZWN1cnNpdmVseSBrZXk6ICIuY29uY2F0KE5bMF0sIiBpbiBrZXk6ICIpLmNvbmNhdChzWzBdKSksbnVsbCk6eS50cmFuc2xhdGUuYXBwbHkoeSxOLmNvbmNhdChbc10pKX0scikpLHIuaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IucmVzZXQoKX12YXIgZD1yLnBvc3RQcm9jZXNzfHx0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3MseD10eXBlb2YgZD09InN0cmluZyI/W2RdOmQ7cmV0dXJuIG4hPW51bGwmJngmJngubGVuZ3RoJiZyLmFwcGx5UG9zdFByb2Nlc3NvciE9PSExJiYobj10cy5oYW5kbGUoeCxuLHMsdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3NQYXNzUmVzb2x2ZWQ/Vih7aTE4blJlc29sdmVkOm19LHIpOnIsdGhpcykpLG59fSx7a2V5OiJyZXNvbHZlIix2YWx1ZTpmdW5jdGlvbihuKXt2YXIgcz10aGlzLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LG0saCx5LHQsJDtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciJiYobj1bbl0pLG4uZm9yRWFjaChmdW5jdGlvbihfKXtpZighcy5pc1ZhbGlkTG9va3VwKG0pKXt2YXIgbD1zLmV4dHJhY3RGcm9tS2V5KF8sciksYj1sLmtleTtoPWI7dmFyIHc9bC5uYW1lc3BhY2VzO3Mub3B0aW9ucy5mYWxsYmFja05TJiYodz13LmNvbmNhdChzLm9wdGlvbnMuZmFsbGJhY2tOUykpO3ZhciBkPXIuY291bnQhPT12b2lkIDAmJnR5cGVvZiByLmNvdW50IT0ic3RyaW5nIix4PWQmJiFyLm9yZGluYWwmJnIuY291bnQ9PT0wJiZzLnBsdXJhbFJlc29sdmVyLnNob3VsZFVzZUludGxBcGkoKSxBPXIuY29udGV4dCE9PXZvaWQgMCYmKHR5cGVvZiByLmNvbnRleHQ9PSJzdHJpbmcifHx0eXBlb2Ygci5jb250ZXh0PT0ibnVtYmVyIikmJnIuY29udGV4dCE9PSIiLE49ci5sbmdzP3IubG5nczpzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KHIubG5nfHxzLmxhbmd1YWdlLHIuZmFsbGJhY2tMbmcpO3cuZm9yRWFjaChmdW5jdGlvbihrKXtzLmlzVmFsaWRMb29rdXAobSl8fCgkPWssIW5zWyIiLmNvbmNhdChOWzBdLCItIikuY29uY2F0KGspXSYmcy51dGlscyYmcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UmJiFzLnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZSgkKSYmKG5zWyIiLmNvbmNhdChOWzBdLCItIikuY29uY2F0KGspXT0hMCxzLmxvZ2dlci53YXJuKCdrZXkgIicuY29uY2F0KGgsJyIgZm9yIGxhbmd1YWdlcyAiJykuY29uY2F0KE4uam9pbigiLCAiKSxgIiB3b24ndCBnZXQgcmVzb2x2ZWQgYXMgbmFtZXNwYWNlICJgKS5jb25jYXQoJCwnIiB3YXMgbm90IHlldCBsb2FkZWQnKSwiVGhpcyBtZWFucyBzb21ldGhpbmcgSVMgV1JPTkcgaW4geW91ciBzZXR1cC4gWW91IGFjY2VzcyB0aGUgdCBmdW5jdGlvbiBiZWZvcmUgaTE4bmV4dC5pbml0IC8gaTE4bmV4dC5sb2FkTmFtZXNwYWNlIC8gaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSB3YXMgZG9uZS4gV2FpdCBmb3IgdGhlIGNhbGxiYWNrIG9yIFByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgYWNjZXNzaW5nIGl0ISEhIikpLE4uZm9yRWFjaChmdW5jdGlvbih2KXtpZighcy5pc1ZhbGlkTG9va3VwKG0pKXt0PXY7dmFyIEU9W2JdO2lmKHMuaTE4bkZvcm1hdCYmcy5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMpcy5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMoRSxiLHYsayxyKTtlbHNle3ZhciBDO2QmJihDPXMucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4KHYsci5jb3VudCxyKSk7dmFyIHE9IiIuY29uY2F0KHMub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsInplcm8iKTtpZihkJiYoRS5wdXNoKGIrQykseCYmRS5wdXNoKGIrcSkpLEEpe3ZhciBlPSIiLmNvbmNhdChiKS5jb25jYXQocy5vcHRpb25zLmNvbnRleHRTZXBhcmF0b3IpLmNvbmNhdChyLmNvbnRleHQpO0UucHVzaChlKSxkJiYoRS5wdXNoKGUrQykseCYmRS5wdXNoKGUrcSkpfX1mb3IodmFyIHU7dT1FLnBvcCgpOylzLmlzVmFsaWRMb29rdXAobSl8fCh5PXUsbT1zLmdldFJlc291cmNlKHYsayx1LHIpKX19KSl9KX19KSx7cmVzOm0sdXNlZEtleTpoLGV4YWN0VXNlZEtleTp5LHVzZWRMbmc6dCx1c2VkTlM6JH19fSx7a2V5OiJpc1ZhbGlkTG9va3VwIix2YWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gbiE9PXZvaWQgMCYmISghdGhpcy5vcHRpb25zLnJldHVybk51bGwmJm49PT1udWxsKSYmISghdGhpcy5vcHRpb25zLnJldHVybkVtcHR5U3RyaW5nJiZuPT09IiIpfX0se2tleToiZ2V0UmVzb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKG4scyxyKXt2YXIgbT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e307cmV0dXJuIHRoaXMuaTE4bkZvcm1hdCYmdGhpcy5pMThuRm9ybWF0LmdldFJlc291cmNlP3RoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZShuLHMscixtKTp0aGlzLnJlc291cmNlU3RvcmUuZ2V0UmVzb3VyY2UobixzLHIsbSl9fV0sW3trZXk6Imhhc0RlZmF1bHRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHM9ImRlZmF1bHRWYWx1ZSI7Zm9yKHZhciByIGluIG4paWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJnM9PT1yLnN1YnN0cmluZygwLHMubGVuZ3RoKSYmbltyXSE9PXZvaWQgMClyZXR1cm4hMDtyZXR1cm4hMX19XSksb30obWUpO2Z1bmN0aW9uIEllKHApe3JldHVybiBwLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Auc2xpY2UoMSl9dmFyIEdzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChjKXtaKH
14RoaXMscCksdGhpcy5vcHRpb25zPWMsdGhpcy5zdXBwb3J0ZWRMbmdzPXRoaXMub3B0aW9ucy5zdXBwb3J0ZWRMbmdzfHwhMSx0aGlzLmxvZ2dlcj10ZS5jcmVhdGUoImxhbmd1YWdlVXRpbHMiKX1yZXR1cm4gZWUocCxbe2tleToiZ2V0U2NyaXB0UGFydEZyb21Db2RlIix2YWx1ZTpmdW5jdGlvbihvKXtpZighb3x8by5pbmRleE9mKCItIik8MClyZXR1cm4gbnVsbDt2YXIgaT1vLnNwbGl0KCItIik7cmV0dXJuIGkubGVuZ3RoPT09Mnx8KGkucG9wKCksaVtpLmxlbmd0aC0xXS50b0xvd2VyQ2FzZSgpPT09IngiKT9udWxsOnRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKGkuam9pbigiLSIpKX19LHtrZXk6ImdldExhbmd1YWdlUGFydEZyb21Db2RlIix2YWx1ZTpmdW5jdGlvbihvKXtpZighb3x8by5pbmRleE9mKCItIik8MClyZXR1cm4gbzt2YXIgaT1vLnNwbGl0KCItIik7cmV0dXJuIHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKGlbMF0pfX0se2tleToiZm9ybWF0TGFuZ3VhZ2VDb2RlIix2YWx1ZTpmdW5jdGlvbihvKXtpZih0eXBlb2Ygbz09InN0cmluZyImJm8uaW5kZXhPZigiLSIpPi0xKXt2YXIgaT1bImhhbnMiLCJoYW50IiwibGF0biIsImN5cmwiLCJjYW5zIiwibW9uZyIsImFyYWIiXSxuPW8uc3BsaXQoIi0iKTtyZXR1cm4gdGhpcy5vcHRpb25zLmxvd2VyQ2FzZUxuZz9uPW4ubWFwKGZ1bmN0aW9uKHMpe3JldHVybiBzLnRvTG93ZXJDYXNlKCl9KTpuLmxlbmd0aD09PTI/KG5bMF09blswXS50b0xvd2VyQ2FzZSgpLG5bMV09blsxXS50b1VwcGVyQ2FzZSgpLGkuaW5kZXhPZihuWzFdLnRvTG93ZXJDYXNlKCkpPi0xJiYoblsxXT1JZShuWzFdLnRvTG93ZXJDYXNlKCkpKSk6bi5sZW5ndGg9PT0zJiYoblswXT1uWzBdLnRvTG93ZXJDYXNlKCksblsxXS5sZW5ndGg9PT0yJiYoblsxXT1uWzFdLnRvVXBwZXJDYXNlKCkpLG5bMF0hPT0ic2duIiYmblsyXS5sZW5ndGg9PT0yJiYoblsyXT1uWzJdLnRvVXBwZXJDYXNlKCkpLGkuaW5kZXhPZihuWzFdLnRvTG93ZXJDYXNlKCkpPi0xJiYoblsxXT1JZShuWzFdLnRvTG93ZXJDYXNlKCkpKSxpLmluZGV4T2YoblsyXS50b0xvd2VyQ2FzZSgpKT4tMSYmKG5bMl09SWUoblsyXS50b0xvd2VyQ2FzZSgpKSkpLG4uam9pbigiLSIpfXJldHVybiB0aGlzLm9wdGlvbnMuY2xlYW5Db2RlfHx0aGlzLm9wdGlvbnMubG93ZXJDYXNlTG5nP28udG9Mb3dlckNhc2UoKTpvfX0se2tleToiaXNTdXBwb3J0ZWRDb2RlIix2YWx1ZTpmdW5jdGlvbihvKXtyZXR1cm4odGhpcy5vcHRpb25zLmxvYWQ9PT0ibGFuZ3VhZ2VPbmx5Inx8dGhpcy5vcHRpb25zLm5vbkV4cGxpY2l0U3VwcG9ydGVkTG5ncykmJihvPXRoaXMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUobykpLCF0aGlzLnN1cHBvcnRlZExuZ3N8fCF0aGlzLnN1cHBvcnRlZExuZ3MubGVuZ3RofHx0aGlzLnN1cHBvcnRlZExuZ3MuaW5kZXhPZihvKT4tMX19LHtrZXk6ImdldEJlc3RNYXRjaEZyb21Db2RlcyIsdmFsdWU6ZnVuY3Rpb24obyl7dmFyIGk9dGhpcztpZighbylyZXR1cm4gbnVsbDt2YXIgbjtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKHMpe2lmKCFuKXt2YXIgcj1pLmZvcm1hdExhbmd1YWdlQ29kZShzKTsoIWkub3B0aW9ucy5zdXBwb3J0ZWRMbmdzfHxpLmlzU3VwcG9ydGVkQ29kZShyKSkmJihuPXIpfX0pLCFuJiZ0aGlzLm9wdGlvbnMuc3VwcG9ydGVkTG5ncyYmby5mb3JFYWNoKGZ1bmN0aW9uKHMpe2lmKCFuKXt2YXIgcj1pLmdldExhbmd1YWdlUGFydEZyb21Db2RlKHMpO2lmKGkuaXNTdXBwb3J0ZWRDb2RlKHIpKXJldHVybiBuPXI7bj1pLm9wdGlvbnMuc3VwcG9ydGVkTG5ncy5maW5kKGZ1bmN0aW9uKG0pe2lmKG0uaW5kZXhPZihyKT09PTApcmV0dXJuIG19KX19KSxufHwobj10aGlzLmdldEZhbGxiYWNrQ29kZXModGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nKVswXSksbn19LHtrZXk6ImdldEZhbGxiYWNrQ29kZXMiLHZhbHVlOmZ1bmN0aW9uKG8saSl7aWYoIW8pcmV0dXJuW107aWYodHlwZW9mIG89PSJmdW5jdGlvbiImJihvPW8oaSkpLHR5cGVvZiBvPT0ic3RyaW5nIiYmKG89W29dKSxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG8pPT09IltvYmplY3QgQXJyYXldIilyZXR1cm4gbztpZighaSlyZXR1cm4gby5kZWZhdWx0fHxbXTt2YXIgbj1vW2ldO3JldHVybiBufHwobj1vW3RoaXMuZ2V0U2NyaXB0UGFydEZyb21Db2RlKGkpXSksbnx8KG49b1t0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShpKV0pLG58fChuPW9bdGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShpKV0pLG58fChuPW8uZGVmYXVsdCksbnx8W119fSx7a2V5OiJ0b1Jlc29sdmVIaWVyYXJjaHkiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dmFyIG49dGhpcyxzPXRoaXMuZ2V0RmFsbGJhY2tDb2RlcyhpfHx0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmd8fFtdLG8pLHI9W10sbT1mdW5jdGlvbih5KXt5JiYobi5pc1N1cHBvcnRlZENvZGUoeSk/ci5wdXNoKHkpOm4ubG9nZ2VyLndhcm4oInJlamVjdGluZyBsYW5ndWFnZSBjb2RlIG5vdCBmb3VuZCBpbiBzdXBwb3J0ZWRMbmdzOiAiLmNvbmNhdCh5KSkpfTtyZXR1cm4gdHlwZW9mIG89PSJzdHJpbmciJiZvLmluZGV4T2YoIi0iKT4tMT8odGhpcy5vcHRpb25zLmxvYWQhPT0ibGFuZ3VhZ2VPbmx5IiYmbSh0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShvKSksdGhpcy5vcHRpb25zLmxvYWQhPT0ibGFuZ3VhZ2VPbmx5IiYmdGhpcy5vcHRpb25zLmxvYWQhPT0iY3VycmVudE9ubHkiJiZtKHRoaXMuZ2V0U2NyaXB0UGFydEZyb21Db2RlKG8pKSx0aGlzLm9wdGlvbnMubG9hZCE9PSJjdXJyZW50T25seSImJm0odGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShvKSkpOnR5cGVvZiBvPT0ic3RyaW5nIiYmbSh0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShvKSkscy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3IuaW5kZXhPZihoKTwwJiZtKG4uZm9ybWF0TGFuZ3VhZ2VDb2RlKGgpKX0pLHJ9fV0pLHB9KCksS3M9W3tsbmdzOlsiYWNoIiwiYWsiLCJhbSIsImFybiIsImJyIiwiZmlsIiwiZ3VuIiwibG4iLCJtZmUiLCJtZyIsIm1pIiwib2MiLCJwdCIsInB0LUJSIiwidGciLCJ0bCIsInRpIiwidHIiLCJ1eiIsIndhIl0sbnI6WzEsMl0sZmM6MX0se2xuZ3M6WyJhZiIsImFuIiwiYXN0IiwiYXoiLCJiZyIsImJuIiwiY2EiLCJkYSIsImRlIiwiZGV2IiwiZWwiLCJlbiIsImVvIiwiZXMiLCJldCIsImV1IiwiZmkiLCJmbyIsImZ1ciIsImZ5IiwiZ2wiLCJndSIsImhhIiwiaGkiLCJodSIsImh5IiwiaWEiLCJpdCIsImtrIiwia24iLCJrdSIsImxiIiwibWFpIiwibWwiLCJtbiIsIm1yIiwibmFoIiwibmFwIiwibmIiLCJuZSIsIm5sIiwibm4iLCJubyIsIm5zbyIsInBhIiwicGFwIiwicG1zIiwicHMiLCJwdC1QVCIsInJtIiwic2NvIiwic2UiLCJzaSIsInNvIiwic29uIiwic3EiLCJzdiIsInN3IiwidGEiLCJ0ZSIsInRrIiwidXIiLCJ5byJdLG5yOlsxLDJdLGZjOjJ9LHtsbmdzOlsiYXkiLCJibyIsImNnZyIsImZhIiwiaHQiLCJpZCIsImphIiwiamJvIiwia2EiLCJrbSIsImtvIiwia3kiLCJsbyIsIm1zIiwic2FoIiwic3UiLCJ0aCIsInR0IiwidWciLCJ2aSIsIndvIiwiemgiXSxucjpbMV0sZmM6M30se2xuZ3M6WyJiZSIsImJzIiwiY25yIiwiZHoiLCJociIsInJ1Iiwic3IiLCJ1ayJdLG5yOlsxLDIsNV0sZmM6NH0se2xuZ3M6WyJhciJdLG5yOlswLDEsMiwzLDExLDEwMF0sZmM6NX0se2xuZ3M6WyJjcyIsInNrIl0sbnI6WzEsMiw1XSxmYzo2fSx7bG5nczpbImNzYiIsInBsIl0sbnI6WzEsMiw1XSxmYzo3fSx7bG5nczpbImN5Il0sbnI6WzEsMiwzLDhdLGZjOjh9LHtsbmdzOlsiZnIiXSxucjpbMSwyXSxmYzo5fSx7bG5nczpbImdhIl0sbnI6WzEsMiwzLDcsMTFdLGZjOjEwfSx7bG5nczpbImdkIl0sbnI6WzEsMiwzLDIwXSxmYzoxMX0se2xuZ3M6WyJpcyJdLG5yOlsxLDJdLGZjOjEyfSx7bG5nczpbImp2Il0sbnI6WzAsMV0sZmM6MTN9LHtsbmdzOlsia3ciXSxucjpbMSwyLDMsNF0sZmM6MTR9LHtsbmdzOlsibHQiXSxucjpbMSwyLDEwXSxmYzoxNX0se2xuZ3M6WyJsdiJdLG5yOlsxLDIsMF0sZmM6MTZ9LHtsbmdzOlsibWsiXSxucjpbMSwyXSxmYzoxN30se2xuZ3M6WyJtbmsiXSxucjpbMCwxLDJdLGZjOjE4fSx7bG5nczpbIm10Il0sbnI6WzEsMiwxMSwyMF0sZmM6MTl9LHtsbmdzOlsib3IiXSxucjpbMiwxXSxmYzoyfSx7bG5nczpbInJvIl0sbnI6WzEsMiwyMF0sZmM6MjB9LHtsbmdzOlsic2wiXSxucjpbNSwxLDIsM10sZmM6MjF9LHtsbmdzOlsiaGUiLCJpdyJdLG5yOlsxLDIsMjAsMjFdLGZjOjIyfV0sSnM9ezE6ZnVuY3Rpb24oYyl7cmV0dXJuKyhjPjEpfSwyOmZ1bmN0aW9uKGMpe3JldHVybisoYyE9MSl9LDM6ZnVuY3Rpb24oYyl7cmV0dXJuIDB9LDQ6ZnVuY3Rpb24oYyl7cmV0dXJuIGMlMTA9PTEmJmMlMTAwIT0xMT8wOmMlMTA+PTImJmMlMTA8PTQmJihjJTEwMDwxMHx8YyUxMDA+PTIwKT8xOjJ9LDU6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTA/MDpjPT0xPzE6Yz09Mj8yOmMlMTAwPj0zJiZjJTEwMDw9MTA/MzpjJTEwMD49MTE/NDo1fSw2OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xPzA6Yz49MiYmYzw9ND8xOjJ9LDc6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTE/MDpjJTEwPj0yJiZjJTEwPD00JiYoYyUxMDA8MTB8fGMlMTAwPj0yMCk/MToyfSw4OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xPzA6Yz09Mj8xOmMhPTgmJmMhPTExPzI6M30sOTpmdW5jdGlvbihjKXtyZXR1cm4rKGM+PTIpfSwxMDpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmM9PTI/MTpjPDc/MjpjPDExPzM6NH0sMTE6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTF8fGM9PTExPzA6Yz09Mnx8Yz09MTI/MTpjPjImJmM8MjA/MjozfSwxMjpmdW5jdGlvbihjKXtyZXR1cm4rKGMlMTAhPTF8fGMlMTAwPT0xMSl9LDEzOmZ1bmN0aW9uKGMpe3JldHVybisoYyE9PTApfSwxNDpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmM9PTI/MTpjPT0zPzI6M30sMTU6ZnVuY3Rpb24oYyl7cmV0dXJuIGMlMTA9PTEmJmMlMTAwIT0xMT8wOmMlMTA+PTImJihjJTEwMDwxMHx8YyUxMDA+PTIwKT8xOjJ9LDE2OmZ1bmN0aW9uKGMpe3JldHVybiBjJTEwPT0xJiZjJTEwMCE9MT
14E/MDpjIT09MD8xOjJ9LDE3OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xfHxjJTEwPT0xJiZjJTEwMCE9MTE/MDoxfSwxODpmdW5jdGlvbihjKXtyZXR1cm4gYz09MD8wOmM9PTE/MToyfSwxOTpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmM9PTB8fGMlMTAwPjEmJmMlMTAwPDExPzE6YyUxMDA+MTAmJmMlMTAwPDIwPzI6M30sMjA6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTE/MDpjPT0wfHxjJTEwMD4wJiZjJTEwMDwyMD8xOjJ9LDIxOmZ1bmN0aW9uKGMpe3JldHVybiBjJTEwMD09MT8xOmMlMTAwPT0yPzI6YyUxMDA9PTN8fGMlMTAwPT00PzM6MH0sMjI6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTE/MDpjPT0yPzE6KGM8MHx8Yz4xMCkmJmMlMTA9PTA/MjozfX0sUXM9WyJ2MSIsInYyIiwidjMiXSxvcz17emVybzowLG9uZToxLHR3bzoyLGZldzozLG1hbnk6NCxvdGhlcjo1fTtmdW5jdGlvbiBYcygpe3ZhciBwPXt9O3JldHVybiBLcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2MubG5ncy5mb3JFYWNoKGZ1bmN0aW9uKG8pe3Bbb109e251bWJlcnM6Yy5ucixwbHVyYWxzOkpzW2MuZmNdfX0pfSkscH12YXIgWnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGMpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtaKHRoaXMscCksdGhpcy5sYW5ndWFnZVV0aWxzPWMsdGhpcy5vcHRpb25zPW8sdGhpcy5sb2dnZXI9dGUuY3JlYXRlKCJwbHVyYWxSZXNvbHZlciIpLCghdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OfHx0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049PT0idjQiKSYmKHR5cGVvZiBJbnRsPiJ1Inx8IUludGwuUGx1cmFsUnVsZXMpJiYodGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OPSJ2MyIsdGhpcy5sb2dnZXIuZXJyb3IoIllvdXIgZW52aXJvbm1lbnQgc2VlbXMgbm90IHRvIGJlIEludGwgQVBJIGNvbXBhdGlibGUsIHVzZSBhbiBJbnRsLlBsdXJhbFJ1bGVzIHBvbHlmaWxsLiBXaWxsIGZhbGxiYWNrIHRvIHRoZSBjb21wYXRpYmlsaXR5SlNPTiB2MyBmb3JtYXQgaGFuZGxpbmcuIikpLHRoaXMucnVsZXM9WHMoKX1yZXR1cm4gZWUocCxbe2tleToiYWRkUnVsZSIsdmFsdWU6ZnVuY3Rpb24obyxpKXt0aGlzLnJ1bGVzW29dPWl9fSx7a2V5OiJnZXRSdWxlIix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307aWYodGhpcy5zaG91bGRVc2VJbnRsQXBpKCkpdHJ5e3JldHVybiBuZXcgSW50bC5QbHVyYWxSdWxlcyhvLHt0eXBlOmkub3JkaW5hbD8ib3JkaW5hbCI6ImNhcmRpbmFsIn0pfWNhdGNoe3JldHVybn1yZXR1cm4gdGhpcy5ydWxlc1tvXXx8dGhpcy5ydWxlc1t0aGlzLmxhbmd1YWdlVXRpbHMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUobyldfX0se2tleToibmVlZHNQbHVyYWwiLHZhbHVlOmZ1bmN0aW9uKG8pe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXRoaXMuZ2V0UnVsZShvLGkpO3JldHVybiB0aGlzLnNob3VsZFVzZUludGxBcGkoKT9uJiZuLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMubGVuZ3RoPjE6biYmbi5udW1iZXJzLmxlbmd0aD4xfX0se2tleToiZ2V0UGx1cmFsRm9ybXNPZktleSIsdmFsdWU6ZnVuY3Rpb24obyxpKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e307cmV0dXJuIHRoaXMuZ2V0U3VmZml4ZXMobyxuKS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIiIuY29uY2F0KGkpLmNvbmNhdChzKX0pfX0se2tleToiZ2V0U3VmZml4ZXMiLHZhbHVlOmZ1bmN0aW9uKG8pe3ZhciBpPXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30scz10aGlzLmdldFJ1bGUobyxuKTtyZXR1cm4gcz90aGlzLnNob3VsZFVzZUludGxBcGkoKT9zLnJlc29sdmVkT3B0aW9ucygpLnBsdXJhbENhdGVnb3JpZXMuc29ydChmdW5jdGlvbihyLG0pe3JldHVybiBvc1tyXS1vc1ttXX0pLm1hcChmdW5jdGlvbihyKXtyZXR1cm4iIi5jb25jYXQoaS5vcHRpb25zLnByZXBlbmQpLmNvbmNhdChyKX0pOnMubnVtYmVycy5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIGkuZ2V0U3VmZml4KG8scixuKX0pOltdfX0se2tleToiZ2V0U3VmZml4Iix2YWx1ZTpmdW5jdGlvbihvLGkpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxzPXRoaXMuZ2V0UnVsZShvLG4pO3JldHVybiBzP3RoaXMuc2hvdWxkVXNlSW50bEFwaSgpPyIiLmNvbmNhdCh0aGlzLm9wdGlvbnMucHJlcGVuZCkuY29uY2F0KHMuc2VsZWN0KGkpKTp0aGlzLmdldFN1ZmZpeFJldHJvQ29tcGF0aWJsZShzLGkpOih0aGlzLmxvZ2dlci53YXJuKCJubyBwbHVyYWwgcnVsZSBmb3VuZCBmb3I6ICIuY29uY2F0KG8pKSwiIil9fSx7a2V5OiJnZXRTdWZmaXhSZXRyb0NvbXBhdGlibGUiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dmFyIG49dGhpcyxzPW8ubm9BYnM/by5wbHVyYWxzKGkpOm8ucGx1cmFscyhNYXRoLmFicyhpKSkscj1vLm51bWJlcnNbc107dGhpcy5vcHRpb25zLnNpbXBsaWZ5UGx1cmFsU3VmZml4JiZvLm51bWJlcnMubGVuZ3RoPT09MiYmby5udW1iZXJzWzBdPT09MSYmKHI9PT0yP3I9InBsdXJhbCI6cj09PTEmJihyPSIiKSk7dmFyIG09ZnVuY3Rpb24oKXtyZXR1cm4gbi5vcHRpb25zLnByZXBlbmQmJnIudG9TdHJpbmcoKT9uLm9wdGlvbnMucHJlcGVuZCtyLnRvU3RyaW5nKCk6ci50b1N0cmluZygpfTtyZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OPT09InYxIj9yPT09MT8iIjp0eXBlb2Ygcj09Im51bWJlciI/Il9wbHVyYWxfIi5jb25jYXQoci50b1N0cmluZygpKTptKCk6dGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OPT09InYyInx8dGhpcy5vcHRpb25zLnNpbXBsaWZ5UGx1cmFsU3VmZml4JiZvLm51bWJlcnMubGVuZ3RoPT09MiYmby5udW1iZXJzWzBdPT09MT9tKCk6dGhpcy5vcHRpb25zLnByZXBlbmQmJnMudG9TdHJpbmc
14oKT90aGlzLm9wdGlvbnMucHJlcGVuZCtzLnRvU3RyaW5nKCk6cy50b1N0cmluZygpfX0se2tleToic2hvdWxkVXNlSW50bEFwaSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hUXMuaW5jbHVkZXModGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OKX19XSkscH0oKTtmdW5jdGlvbiBscyhwLGMpe3ZhciBvPU9iamVjdC5rZXlzKHApO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocCk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCxuKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIFgocCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIG89YXJndW1lbnRzW2NdIT1udWxsP2FyZ3VtZW50c1tjXTp7fTtjJTI/bHMoT2JqZWN0KG8pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3BlKHAsaSxvW2ldKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOmxzKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocCxpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxpKSl9KX1yZXR1cm4gcH12YXIgZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O1oodGhpcyxwKSx0aGlzLmxvZ2dlcj10ZS5jcmVhdGUoImludGVycG9sYXRvciIpLHRoaXMub3B0aW9ucz1jLHRoaXMuZm9ybWF0PWMuaW50ZXJwb2xhdGlvbiYmYy5pbnRlcnBvbGF0aW9uLmZvcm1hdHx8ZnVuY3Rpb24obyl7cmV0dXJuIG99LHRoaXMuaW5pdChjKX1yZXR1cm4gZWUocCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307by5pbnRlcnBvbGF0aW9ufHwoby5pbnRlcnBvbGF0aW9uPXtlc2NhcGVWYWx1ZTohMH0pO3ZhciBpPW8uaW50ZXJwb2xhdGlvbjt0aGlzLmVzY2FwZT1pLmVzY2FwZSE9PXZvaWQgMD9pLmVzY2FwZTpVcyx0aGlzLmVzY2FwZVZhbHVlPWkuZXNjYXBlVmFsdWUhPT12b2lkIDA/aS5lc2NhcGVWYWx1ZTohMCx0aGlzLnVzZVJhd1ZhbHVlVG9Fc2NhcGU9aS51c2VSYXdWYWx1ZVRvRXNjYXBlIT09dm9pZCAwP2kudXNlUmF3VmFsdWVUb0VzY2FwZTohMSx0aGlzLnByZWZpeD1pLnByZWZpeD9kZShpLnByZWZpeCk6aS5wcmVmaXhFc2NhcGVkfHwie3siLHRoaXMuc3VmZml4PWkuc3VmZml4P2RlKGkuc3VmZml4KTppLnN1ZmZpeEVzY2FwZWR8fCJ9fSIsdGhpcy5mb3JtYXRTZXBhcmF0b3I9aS5mb3JtYXRTZXBhcmF0b3I/aS5mb3JtYXRTZXBhcmF0b3I6aS5mb3JtYXRTZXBhcmF0b3J8fCIsIix0aGlzLnVuZXNjYXBlUHJlZml4PWkudW5lc2NhcGVTdWZmaXg/IiI6aS51bmVzY2FwZVByZWZpeHx8Ii0iLHRoaXMudW5lc2NhcGVTdWZmaXg9dGhpcy51bmVzY2FwZVByZWZpeD8iIjppLnVuZXNjYXBlU3VmZml4fHwiIix0aGlzLm5lc3RpbmdQcmVmaXg9aS5uZXN0aW5nUHJlZml4P2RlKGkubmVzdGluZ1ByZWZpeCk6aS5uZXN0aW5nUHJlZml4RXNjYXBlZHx8ZGUoIiR0KCIpLHRoaXMubmVzdGluZ1N1ZmZpeD1pLm5lc3RpbmdTdWZmaXg/ZGUoaS5uZXN0aW5nU3VmZml4KTppLm5lc3RpbmdTdWZmaXhFc2NhcGVkfHxkZSgiKSIpLHRoaXMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I9aS5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcj9pLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yOmkubmVzdGluZ09wdGlvbnNTZXBhcmF0b3J8fCIsIix0aGlzLm1heFJlcGxhY2VzPWkubWF4UmVwbGFjZXM/aS5tYXhSZXBsYWNlczoxZTMsdGhpcy5hbHdheXNGb3JtYXQ9aS5hbHdheXNGb3JtYXQhPT12b2lkIDA/aS5hbHdheXNGb3JtYXQ6ITEsdGhpcy5yZXNldFJlZ0V4cCgpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zJiZ0aGlzLmluaXQodGhpcy5vcHRpb25zKX19LHtrZXk6InJlc2V0UmVnRXhwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBvPSIiLmNvbmNhdCh0aGlzLnByZWZpeCwiKC4rPykiKS5jb25jYXQodGhpcy5zdWZmaXgpO3RoaXMucmVnZXhwPW5ldyBSZWdFeHAobywiZyIpO3ZhciBpPSIiLmNvbmNhdCh0aGlzLnByZWZpeCkuY29uY2F0KHRoaXMudW5lc2NhcGVQcmVmaXgsIiguKz8pIikuY29uY2F0KHRoaXMudW5lc2NhcGVTdWZmaXgpLmNvbmNhdCh0aGlzLnN1ZmZpeCk7dGhpcy5yZWdleHBVbmVzY2FwZT1uZXcgUmVnRXhwKGksImciKTt2YXIgbj0iIi5jb25jYXQodGhpcy5uZXN0aW5nUHJlZml4LCIoLis/KSIpLmNvbmNhdCh0aGlzLm5lc3RpbmdTdWZmaXgpO3RoaXMubmVzdGluZ1JlZ2V4cD1uZXcgUmVnRXhwKG4sImciKX19LHtrZXk6ImludGVycG9sYXRlIix2YWx1ZTpmdW5jdGlvbihvLGksbixzKXt2YXIgcj10aGlzLG0saCx5LHQ9dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbiYmdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlc3x8e307ZnVuY3Rpb24gJChkKXtyZXR1cm4gZC5yZXBsYWNlKC9cJC9nLCIkJCQkIil9dmFyIF89ZnVuY3Rpb24oeCl7aWYoeC5pbmRleE9mKHIuZm9ybWF0U2VwYXJhdG9yKTwwKXt2YXIgQT1YZShpLHQseCk7cmV0dXJuIHIuYWx3YXlzRm9ybWF0P3IuZm9ybWF0KEEsdm9pZCAwLG4sWChYKFgoe30scyksaSkse30se2ludGVycG9sYXRpb25rZXk6eH0pKTpBfXZhciBOPXguc3BsaXQoci5mb3JtYXRTZXBhcmF0b3IpLGs9Ti5zaGlmdCgpLnRyaW0oKSx2PU4uam9pbihyLmZvcm1hdFNlcGFyYXRvcikudHJpbSgpO3JldHVybiByLmZvcm1hdChYZShpLHQsayksdixuLFgoWChYKHt9LHMpLGkpLHt9LHtpbnRlcnBvbGF0aW9ua2V5Omt9KSl9O3RoaXMucmVzZXRSZWdFeHAoKTt2YXIgbD1zJiZzLm1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcnx8dGhpcy5vcHRpb25zLm1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcixiPXMmJnMuaW50ZXJwb2xhdGlvbiYmcy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyE9PXZvaWQgMD9zLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzOnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyx3PVt7cmVnZXg6dGhpcy5yZWdleHBVbmVzY2FwZSxzYWZlVmFsdWU6ZnVuY3Rpb24oeCl7cmV0dXJuICQoeCl9fSx7cmVnZXg6dGhpcy5yZWdleHAsc2FmZVZhbHVlOmZ1bmN0aW9uKHgpe3JldHVybiByLmVzY2FwZVZhbHVlPyQoci5lc2NhcGUoeCkpOiQoeCl9fV07cmV0dXJuIHcuZm9yRWFjaChmdW5jdGlvbihkKXtmb3IoeT0wO209ZC5yZWdleC5leGVjKG8pOyl7dmFyIHg9bVsxXS50cmltKCk7
14aWYoaD1fKHgpLGg9PT12b2lkIDApaWYodHlwZW9mIGw9PSJmdW5jdGlvbiIpe3ZhciBBPWwobyxtLHMpO2g9dHlwZW9mIEE9PSJzdHJpbmciP0E6IiJ9ZWxzZSBpZihzJiZzLmhhc093blByb3BlcnR5KHgpKWg9IiI7ZWxzZSBpZihiKXtoPW1bMF07Y29udGludWV9ZWxzZSByLmxvZ2dlci53YXJuKCJtaXNzZWQgdG8gcGFzcyBpbiB2YXJpYWJsZSAiLmNvbmNhdCh4LCIgZm9yIGludGVycG9sYXRpbmcgIikuY29uY2F0KG8pKSxoPSIiO2Vsc2UgdHlwZW9mIGghPSJzdHJpbmciJiYhci51c2VSYXdWYWx1ZVRvRXNjYXBlJiYoaD1KZShoKSk7dmFyIE49ZC5zYWZlVmFsdWUoaCk7aWYobz1vLnJlcGxhY2UobVswXSxOKSxiPyhkLnJlZ2V4Lmxhc3RJbmRleCs9aC5sZW5ndGgsZC5yZWdleC5sYXN0SW5kZXgtPW1bMF0ubGVuZ3RoKTpkLnJlZ2V4Lmxhc3RJbmRleD0wLHkrKyx5Pj1yLm1heFJlcGxhY2VzKWJyZWFrfX0pLG99fSx7a2V5OiJuZXN0Iix2YWx1ZTpmdW5jdGlvbihvLGkpe3ZhciBuPXRoaXMscz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30scixtLGg9WCh7fSxzKTtoLmFwcGx5UG9zdFByb2Nlc3Nvcj0hMSxkZWxldGUgaC5kZWZhdWx0VmFsdWU7ZnVuY3Rpb24geShsLGIpe3ZhciB3PXRoaXMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I7aWYobC5pbmRleE9mKHcpPDApcmV0dXJuIGw7dmFyIGQ9bC5zcGxpdChuZXcgUmVnRXhwKCIiLmNvbmNhdCh3LCJbIF0qeyIpKSkseD0ieyIuY29uY2F0KGRbMV0pO2w9ZFswXSx4PXRoaXMuaW50ZXJwb2xhdGUoeCxoKTt2YXIgQT14Lm1hdGNoKC8nL2cpLE49eC5tYXRjaCgvIi9nKTsoQSYmQS5sZW5ndGglMj09PTAmJiFOfHxOLmxlbmd0aCUyIT09MCkmJih4PXgucmVwbGFjZSgvJy9nLCciJykpO3RyeXtoPUpTT04ucGFyc2UoeCksYiYmKGg9WChYKHt9LGIpLGgpKX1jYXRjaChrKXtyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiZmFpbGVkIHBhcnNpbmcgb3B0aW9ucyBzdHJpbmcgaW4gbmVzdGluZyBmb3Iga2V5ICIuY29uY2F0KGwpLGspLCIiLmNvbmNhdChsKS5jb25jYXQodykuY29uY2F0KHgpfXJldHVybiBkZWxldGUgaC5kZWZhdWx0VmFsdWUsbH1mb3IoO3I9dGhpcy5uZXN0aW5nUmVnZXhwLmV4ZWMobyk7KXt2YXIgdD1bXSwkPSExO2lmKHJbMF0uaW5kZXhPZih0aGlzLmZvcm1hdFNlcGFyYXRvcikhPT0tMSYmIS97Lip9Ly50ZXN0KHJbMV0pKXt2YXIgXz1yWzFdLnNwbGl0KHRoaXMuZm9ybWF0U2VwYXJhdG9yKS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGwudHJpbSgpfSk7clsxXT1fLnNoaWZ0KCksdD1fLCQ9ITB9aWYobT1pKHkuY2FsbCh0aGlzLHJbMV0udHJpbSgpLGgpLGgpLG0mJnJbMF09PT1vJiZ0eXBlb2YgbSE9InN0cmluZyIpcmV0dXJuIG07dHlwZW9mIG0hPSJzdHJpbmciJiYobT1KZShtKSksbXx8KHRoaXMubG9nZ2VyLndhcm4oIm1pc3NlZCB0byByZXNvbHZlICIuY29uY2F0KHJbMV0sIiBmb3IgbmVzdGluZyAiKS5jb25jYXQobykpLG09IiIpLCQmJihtPXQucmVkdWNlKGZ1bmN0aW9uKGwsYil7cmV0dXJuIG4uZm9ybWF0KGwsYixzLmxuZyxYKFgoe30scykse30se2ludGVycG9sYXRpb25rZXk6clsxXS50cmltKCl9KSl9LG0udHJpbSgpKSksbz1vLnJlcGxhY2UoclswXSxtKSx0aGlzLnJlZ2V4cC5sYXN0SW5kZXg9MH1yZXR1cm4gb319XSkscH0oKTtmdW5jdGlvbiBpcyhwLGMpe3ZhciBvPU9iamVjdC5rZXlzKHApO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocCk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCxuKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIHVlKHApe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP2lzKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtwZShwLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTppcyhPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIHB9ZnVuY3Rpb24gc3QocCl7dmFyIGM9cC50b0xvd2VyQ2FzZSgpLnRyaW0oKSxvPXt9O2lmKHAuaW5kZXhPZigiKCIpPi0xKXt2YXIgaT1wLnNwbGl0KCIoIik7Yz1pWzBdLnRvTG93ZXJDYXNlKCkudHJpbSgpO3ZhciBuPWlbMV0uc3Vic3RyaW5nKDAsaVsxXS5sZW5ndGgtMSk7aWYoYz09PSJjdXJyZW5jeSImJm4uaW5kZXhPZigiOiIpPDApby5jdXJyZW5jeXx8KG8uY3VycmVuY3k9bi50cmltKCkpO2Vsc2UgaWYoYz09PSJyZWxhdGl2ZXRpbWUiJiZuLmluZGV4T2YoIjoiKTwwKW8ucmFuZ2V8fChvLnJhbmdlPW4udHJpbSgpKTtlbHNle3ZhciBzPW4uc3BsaXQoIjsiKTtzLmZvckVhY2goZnVuY3Rpb24ocil7aWYocil7dmFyIG09ci5zcGxpdCgiOiIpLGg9SXMobSkseT1oWzBdLHQ9aC5zbGljZSgxKSwkPXQuam9pbigiOiIpLnRyaW0oKS5yZXBsYWNlKC9eJyt8JyskL2csIiIpO29beS50cmltKCldfHwob1t5LnRyaW0oKV09JCksJD09PSJmYWxzZSImJihvW3kudHJpbSgpXT0hMSksJD09PSJ0cnVlIiYmKG9beS50cmltKCldPSEwKSxpc05hTigkKXx8KG9beS50cmltKCldPXBhcnNlSW50KCQsMTApKX19KX19cmV0dXJue2Zvcm1hdE5hbWU6Yyxmb3JtYXRPcHRpb25zOm99fWZ1bmN0aW9uIGhlKHApe3ZhciBjPXt9O3JldHVybiBmdW5jdGlvbihpLG4scyl7dmFyIHI9bitKU09OLnN0cmluZ2lmeShzKSxtPWNbcl07cmV0dXJuIG18fChtPXAobixzKSxjW3JdPW0pLG0oaSl9fXZhciB0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307Wih0aGlzLHApLHRoaXMubG9nZ2VyPXRlLmNyZWF0ZSgiZm9ybWF0dGVyIiksdGhpcy5vcHRpb25zPWMsdGhpcy5mb3JtYXRzPXtudW1iZXI6aGUoZnVuY3Rpb24obyxpKXt2YXIgbj1uZXcgSW50bC5OdW1iZXJGb3JtYXQobyxpKTtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIG4uZm9ybWF0KHMpfX0pLGN1cnJlbmN5OmhlKGZ1bmN0aW9uKG8saSl7dmFyIG49bmV3IEludGwuTnVtYmVyRm9ybWF0KG8sdWUodWUoe30saSkse30se3N0eWxlOiJjdXJyZW5jeSJ9KSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuLmZvcm1hdChzKX19KSxkYXRldGltZTpoZShmdW5jdGlvbihvLGkpe3ZhciBuPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KG8sdWUoe30saSkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gbi5mb3JtYXQocyl9fSkscmVsYXRpdmV0aW1lOmhlKGZ1bmN0aW9uKG8saSl7dmFyIG49bmV3IEludGwuUmVsYXRpdmVUaW
141lRm9ybWF0KG8sdWUoe30saSkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gbi5mb3JtYXQocyxpLnJhbmdlfHwiZGF5Iil9fSksbGlzdDpoZShmdW5jdGlvbihvLGkpe3ZhciBuPW5ldyBJbnRsLkxpc3RGb3JtYXQobyx1ZSh7fSxpKSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuLmZvcm1hdChzKX19KX0sdGhpcy5pbml0KGMpfXJldHVybiBlZShwLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e2ludGVycG9sYXRpb246e319LG49aS5pbnRlcnBvbGF0aW9uO3RoaXMuZm9ybWF0U2VwYXJhdG9yPW4uZm9ybWF0U2VwYXJhdG9yP24uZm9ybWF0U2VwYXJhdG9yOm4uZm9ybWF0U2VwYXJhdG9yfHwiLCJ9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dGhpcy5mb3JtYXRzW28udG9Mb3dlckNhc2UoKS50cmltKCldPWl9fSx7a2V5OiJhZGRDYWNoZWQiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dGhpcy5mb3JtYXRzW28udG9Mb3dlckNhc2UoKS50cmltKCldPWhlKGkpfX0se2tleToiZm9ybWF0Iix2YWx1ZTpmdW5jdGlvbihvLGksbixzKXt2YXIgcj10aGlzLG09aS5zcGxpdCh0aGlzLmZvcm1hdFNlcGFyYXRvciksaD1tLnJlZHVjZShmdW5jdGlvbih5LHQpe3ZhciAkPXN0KHQpLF89JC5mb3JtYXROYW1lLGw9JC5mb3JtYXRPcHRpb25zO2lmKHIuZm9ybWF0c1tfXSl7dmFyIGI9eTt0cnl7dmFyIHc9cyYmcy5mb3JtYXRQYXJhbXMmJnMuZm9ybWF0UGFyYW1zW3MuaW50ZXJwb2xhdGlvbmtleV18fHt9LGQ9dy5sb2NhbGV8fHcubG5nfHxzLmxvY2FsZXx8cy5sbmd8fG47Yj1yLmZvcm1hdHNbX10oeSxkLHVlKHVlKHVlKHt9LGwpLHMpLHcpKX1jYXRjaCh4KXtyLmxvZ2dlci53YXJuKHgpfXJldHVybiBifWVsc2Ugci5sb2dnZXIud2FybigidGhlcmUgd2FzIG5vIGZvcm1hdCBmdW5jdGlvbiBmb3IgIi5jb25jYXQoXykpO3JldHVybiB5fSxvKTtyZXR1cm4gaH19XSkscH0oKTtmdW5jdGlvbiBjcyhwLGMpe3ZhciBvPU9iamVjdC5rZXlzKHApO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocCk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCxuKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIHBzKHApe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP2NzKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtwZShwLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTpjcyhPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIHB9ZnVuY3Rpb24gcnQocCl7dmFyIGM9bnQoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1zZShwKSxuO2lmKGMpe3ZhciBzPXNlKHRoaXMpLmNvbnN0cnVjdG9yO249UmVmbGVjdC5jb25zdHJ1Y3QoaSxhcmd1bWVudHMscyl9ZWxzZSBuPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB3ZSh0aGlzLG4pfX1mdW5jdGlvbiBudCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBhdChwLGMpe3AucGVuZGluZ1tjXSE9PXZvaWQgMCYmKGRlbGV0ZSBwLnBlbmRpbmdbY10scC5wZW5kaW5nQ291bnQtLSl9dmFyIG90PWZ1bmN0aW9uKHApe2dlKG8scCk7dmFyIGM9cnQobyk7ZnVuY3Rpb24gbyhpLG4scyl7dmFyIHIsbT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e307cmV0dXJuIFoodGhpcyxvKSxyPWMuY2FsbCh0aGlzKSxBZSYmbWUuY2FsbChjZShyKSksci5iYWNrZW5kPWksci5zdG9yZT1uLHIuc2VydmljZXM9cyxyLmxhbmd1YWdlVXRpbHM9cy5sYW5ndWFnZVV0aWxzLHIub3B0aW9ucz1tLHIubG9nZ2VyPXRlLmNyZWF0ZSgiYmFja2VuZENvbm5lY3RvciIpLHIud2FpdGluZ1JlYWRzPVtdLHIubWF4UGFyYWxsZWxSZWFkcz1tLm1heFBhcmFsbGVsUmVhZHN8fDEwLHIucmVhZGluZ0NhbGxzPTAsci5tYXhSZXRyaWVzPW0ubWF4UmV0cmllcz49MD9tLm1heFJldHJpZXM6NSxyLnJldHJ5VGltZW91dD1tLnJldHJ5VGltZW91dD49MT9tLnJldHJ5VGltZW91dDozNTAsci5zdGF0ZT17fSxyLnF1ZXVlPVtdLHIuYmFja2VuZCYmci5iYWNrZW5kLmluaXQmJnIuYmFja2VuZC5pbml0KHMsbS5iYWNrZW5kLG0pLHJ9cmV0dXJuIGVlKG8sW3trZXk6InF1ZXVlTG9hZCIsdmFsdWU6ZnVuY3Rpb24obixzLHIsbSl7dmFyIGg9dGhpcyx5PXt9LHQ9e30sJD17fSxfPXt9O3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGI9ITA7cy5mb3JFYWNoKGZ1bmN0aW9uKHcpe3ZhciBkPSIiLmNvbmNhdChsLCJ8IikuY29uY2F0KHcpOyFyLnJlbG9hZCYmaC5zdG9yZS5oYXNSZXNvdXJjZUJ1bmRsZShsLHcpP2guc3RhdGVbZF09MjpoLnN0YXRlW2RdPDB8fChoLnN0YXRlW2RdPT09MT90W2RdPT09dm9pZCAwJiYodFtkXT0hMCk6KGguc3RhdGVbZF09MSxiPSExLHRbZF09PT12b2lkIDAmJih0W2RdPSEwKSx5W2RdPT09dm9pZCAwJiYoeVtkXT0hMCksX1t3XT09PXZvaWQgMCYmKF9bd109ITApKSl9KSxifHwoJFtsXT0hMCl9KSwoT2JqZWN0LmtleXMoeSkubGVuZ3RofHxPYmplY3Qua2V5cyh0KS5sZW5ndGgpJiZ0aGlzLnF1ZXVlLnB1c2goe3BlbmRpbmc6dCxwZW5kaW5nQ291bnQ6T2JqZWN0LmtleXModCkubGVuZ3RoLGxvYWRlZDp7fSxlcnJvcnM6W10sY2FsbGJhY2s6bX0pLHt0b0xvYWQ6T2JqZWN0LmtleXMoeSkscGVuZGluZzpPYmplY3Qua2V5cyh0KSx0b0xvYWRMYW5ndWFnZXM6T2JqZWN0LmtleXMoJCksdG9Mb2FkTmFtZXNwYWNlczpPYmplY3Qua2V5cyhfKX19fSx7a2V5OiJsb2FkZWQiLHZhbHVlOmZ1bmN0aW9uKG4scyxyKXt2YXIgbT1uLnNwbGl0KCJ8IiksaD1tWzBdLHk9bVsxXTtzJiZ0aGlzLmVtaXQoImZhaWxlZExvYWRpbmciLGgseSxzKSxyJiZ0aGlzLnN0b3JlLmFkZFJlc291cmNlQnVuZGxlKGgseSxyKSx0aGlzLnN0YXRlW25dPXM/LTE6Mjt2YXIgdD17fTt0aGlzLnF1ZXVlLmZvckVhY2goZnVuY3Rpb24oJCl7RHMoJC5sb2FkZWQsW2hdLHkpLGF0KCQsbikscyYmJC5lcnJvcnMucHVzaChzKSwkLnBlbmRpbmdDb3VudD09PTAmJiEkLmRvbmUmJihPYmplY3Qua2V5cygkLmxvYWRlZCkuZm9yRWFjaChmdW5jdGlvbihfKXt0W19dfHwodFtfXT17fSk7dmFyIGw9JC5sb2FkZWRbX107bC5sZW5ndGgmJmwuZm9yRWFjaChmdW5jdGlvbihiKXt0W19dW2JdPT09dm9pZCAwJiYodFtfXVtiXT0hMCl9KX0pLCQuZG9uZT0hMCwkLmVycm9ycy5sZW5ndGg/JC5jYWxsYmFjaygkLmVycm9ycyk6JC5jYWxsYmFjaygpKX0pLHRoaXMuZW1pdCgibG9hZGVkIix0KSx0aGlzLnF1ZXVlPXRoaXMucXVldWUuZmlsdGVyKGZ1bmN0aW9uKCQpe3JldHVybiEkLmRvbmV9KX19LHtrZXk6InJlYWQiLHZhbHVlOmZ1bmN0aW9uKG4scyxyKXt2YXIgbT10aGlzLGg9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOjAseT1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06dGhpcy5yZXRyeVRpbWVvdXQsdD1hcmd1bWVudHMubGVuZ3RoPjU/YXJndW1lbnRzWzVdOnZvaWQgMDtpZighbi5sZW5ndGgpcmV0dXJuIHQobnVsbCx7fSk7aWYodGhpcy5yZWFkaW5nQ2FsbHM+PXRoaXMubWF4UGFyYWxsZWxSZWFkcyl7dGhpcy53YWl0aW5nUmVhZHMucHVzaCh7bG5nOm4sbnM6cyxmY05hbWU6cix0cmllZDpoLHdhaXQ6eSxjYWxsYmFjazp0fSk7cmV0dXJufXJldHVybi
14B0aGlzLnJlYWRpbmdDYWxscysrLHRoaXMuYmFja2VuZFtyXShuLHMsZnVuY3Rpb24oJCxfKXtpZihtLnJlYWRpbmdDYWxscy0tLG0ud2FpdGluZ1JlYWRzLmxlbmd0aD4wKXt2YXIgbD1tLndhaXRpbmdSZWFkcy5zaGlmdCgpO20ucmVhZChsLmxuZyxsLm5zLGwuZmNOYW1lLGwudHJpZWQsbC53YWl0LGwuY2FsbGJhY2spfWlmKCQmJl8mJmg8bS5tYXhSZXRyaWVzKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bS5yZWFkLmNhbGwobSxuLHMscixoKzEseSoyLHQpfSx5KTtyZXR1cm59dCgkLF8pfSl9fSx7a2V5OiJwcmVwYXJlTG9hZGluZyIsdmFsdWU6ZnVuY3Rpb24obixzKXt2YXIgcj10aGlzLG09YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9LGg9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDA7aWYoIXRoaXMuYmFja2VuZClyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiTm8gYmFja2VuZCB3YXMgYWRkZWQgdmlhIGkxOG5leHQudXNlLiBXaWxsIG5vdCBsb2FkIHJlc291cmNlcy4iKSxoJiZoKCk7dHlwZW9mIG49PSJzdHJpbmciJiYobj10aGlzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KG4pKSx0eXBlb2Ygcz09InN0cmluZyImJihzPVtzXSk7dmFyIHk9dGhpcy5xdWV1ZUxvYWQobixzLG0saCk7aWYoIXkudG9Mb2FkLmxlbmd0aClyZXR1cm4geS5wZW5kaW5nLmxlbmd0aHx8aCgpLG51bGw7eS50b0xvYWQuZm9yRWFjaChmdW5jdGlvbih0KXtyLmxvYWRPbmUodCl9KX19LHtrZXk6ImxvYWQiLHZhbHVlOmZ1bmN0aW9uKG4scyxyKXt0aGlzLnByZXBhcmVMb2FkaW5nKG4scyx7fSxyKX19LHtrZXk6InJlbG9hZCIsdmFsdWU6ZnVuY3Rpb24obixzLHIpe3RoaXMucHJlcGFyZUxvYWRpbmcobixzLHtyZWxvYWQ6ITB9LHIpfX0se2tleToibG9hZE9uZSIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHM9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXToiIixtPW4uc3BsaXQoInwiKSxoPW1bMF0seT1tWzFdO3RoaXMucmVhZChoLHksInJlYWQiLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24odCwkKXt0JiZzLmxvZ2dlci53YXJuKCIiLmNvbmNhdChyLCJsb2FkaW5nIG5hbWVzcGFjZSAiKS5jb25jYXQoeSwiIGZvciBsYW5ndWFnZSAiKS5jb25jYXQoaCwiIGZhaWxlZCIpLHQpLCF0JiYkJiZzLmxvZ2dlci5sb2coIiIuY29uY2F0KHIsImxvYWRlZCBuYW1lc3BhY2UgIikuY29uY2F0KHksIiBmb3IgbGFuZ3VhZ2UgIikuY29uY2F0KGgpLCQpLHMubG9hZGVkKG4sdCwkKX0pfX0se2tleToic2F2ZU1pc3NpbmciLHZhbHVlOmZ1bmN0aW9uKG4scyxyLG0saCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOnt9O2lmKHRoaXMuc2VydmljZXMudXRpbHMmJnRoaXMuc2VydmljZXMudXRpbHMuaGFzTG9hZGVkTmFtZXNwYWNlJiYhdGhpcy5zZXJ2aWNlcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2Uocykpe3RoaXMubG9nZ2VyLndhcm4oJ2RpZCBub3Qgc2F2ZSBrZXkgIicuY29uY2F0KHIsJyIgYXMgdGhlIG5hbWVzcGFjZSAiJykuY29uY2F0KHMsJyIgd2FzIG5vdCB5ZXQgbG9hZGVkJyksIlRoaXMgbWVhbnMgc29tZXRoaW5nIElTIFdST05HIGluIHlvdXIgc2V0dXAuIFlvdSBhY2Nlc3MgdGhlIHQgZnVuY3Rpb24gYmVmb3JlIGkxOG5leHQuaW5pdCAvIGkxOG5leHQubG9hZE5hbWVzcGFjZSAvIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2Ugd2FzIGRvbmUuIFdhaXQgZm9yIHRoZSBjYWxsYmFjayBvciBQcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGFjY2Vzc2luZyBpdCEhISIpO3JldHVybn1yPT1udWxsfHxyPT09IiJ8fCh0aGlzLmJhY2tlbmQmJnRoaXMuYmFja2VuZC5jcmVhdGUmJnRoaXMuYmFja2VuZC5jcmVhdGUobixzLHIsbSxudWxsLHBzKHBzKHt9LHkpLHt9LHtpc1VwZGF0ZTpofSkpLCEoIW58fCFuWzBdKSYmdGhpcy5zdG9yZS5hZGRSZXNvdXJjZShuWzBdLHMscixtKSl9fV0pLG99KG1lKTtmdW5jdGlvbiBsdCgpe3JldHVybntkZWJ1ZzohMSxpbml0SW1tZWRpYXRlOiEwLG5zOlsidHJhbnNsYXRpb24iXSxkZWZhdWx0TlM6WyJ0cmFuc2xhdGlvbiJdLGZhbGxiYWNrTG5nOlsiZGV2Il0sZmFsbGJhY2tOUzohMSxzdXBwb3J0ZWRMbmdzOiExLG5vbkV4cGxpY2l0U3VwcG9ydGVkTG5nczohMSxsb2FkOiJhbGwiLHByZWxvYWQ6ITEsc2ltcGxpZnlQbHVyYWxTdWZmaXg6ITAsa2V5U2VwYXJhdG9yOiIuIixuc1NlcGFyYXRvcjoiOiIscGx1cmFsU2VwYXJhdG9yOiJfIixjb250ZXh0U2VwYXJhdG9yOiJfIixwYXJ0aWFsQnVuZGxlZExhbmd1YWdlczohMSxzYXZlTWlzc2luZzohMSx1cGRhdGVNaXNzaW5nOiExLHNhdmVNaXNzaW5nVG86ImZhbGxiYWNrIixzYXZlTWlzc2luZ1BsdXJhbHM6ITAsbWlzc2luZ0tleUhhbmRsZXI6ITEsbWlzc2luZ0ludGVycG9sYXRpb25IYW5kbGVyOiExLHBvc3RQcm9jZXNzOiExLHBvc3RQcm9jZXNzUGFzc1Jlc29sdmVkOiExLHJldHVybk51bGw6ITAscmV0dXJuRW1wdHlTdHJpbmc6ITAscmV0dXJuT2JqZWN0czohMSxqb2luQXJyYXlzOiExLHJldHVybmVkT2JqZWN0SGFuZGxlcjohMSxwYXJzZU1pc3NpbmdLZXlIYW5kbGVyOiExLGFwcGVuZE5hbWVzcGFjZVRvTWlzc2luZ0tleTohMSxhcHBlbmROYW1lc3BhY2VUb0NJTW9kZTohMSxvdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcjpmdW5jdGlvbihjKXt2YXIgbz17fTtpZihRKGNbMV0pPT09Im9iamVjdCImJihvPWNbMV0pLHR5cGVvZiBjWzFdPT0ic3RyaW5nIiYmKG8uZGVmYXVsdFZhbHVlPWNbMV0pLHR5cGVvZiBjWzJdPT0ic3RyaW5nIiYmKG8udERlc2NyaXB0aW9uPWNbMl0pLFEoY1syXSk9PT0ib2JqZWN0Inx8UShjWzNdKT09PSJvYmplY3QiKXt2YXIgaT1jWzNdfHxjWzJdO09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24obil7b1tuXT1pW25dfSl9cmV0dXJuIG99LGludGVycG9sYXRpb246e2VzY2FwZVZhbHVlOiEwLGZvcm1hdDpmdW5jdGlvbihjLG8saSxuKXtyZXR1cm4gY30scHJlZml4OiJ7eyIsc3VmZml4OiJ9fSIsZm9ybWF0U2VwYXJhdG9yOiIsIix1bmVzY2FwZVByZWZpeDoiLSIsbmVzdGluZ1ByZWZpeDoiJHQoIixuZXN0aW5nU3VmZml4OiIpIixuZXN0aW5nT3B0aW9uc1NlcGFyYXRvcjoiLCIsbWF4UmVwbGFjZXM6MWUzLHNraXBPblZhcmlhYmxlczohMH19fWZ1bmN0aW9uIG1zKHApe3JldHVybiB0eXBlb2YgcC5ucz09InN0cmluZyImJihwLm5zPVtwLm5zXSksdHlwZW9mIHAuZmFsbGJhY2tMbmc9PSJzdHJpbmciJiYocC5mYWxsYmFja0xuZz1bcC5mYWxsYmFja0xuZ10pLHR5cGVvZiBwLmZhbGxiYWNrTlM9PSJzdHJpbmciJiYocC5mYWxsYmFja05TPVtwLmZhbGxiYWNrTlNdKSxwLnN1cHBvcnRlZExuZ3MmJnAuc3VwcG9ydGVkTG5ncy5pbmRleE9mKCJjaW1vZGUiKTwwJiYocC5zdXBwb3J0ZWRMbmdzPXAuc3VwcG9ydGVkTG5ncy5jb25jYXQoWyJjaW1vZGUiXSkpLHB9ZnVuY3Rpb24gdXMocCxjKXt2YXIgbz1PYmplY3Qua2V5cyhwKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHApO2MmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHAsbikuZW51bWVyYWJsZX0pKSxvLnB1c2guYXBwbHkobyxpKX1yZXR1cm4gb31mdW5jdGlvbiByZShwKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgbz1hcmd1bWVudHNbY10hPW51bGw/YXJndW1lbnRzW2NdOnt9O2MlMj91cyhPYmplY3QobyksITApLmZvckVhY2goZnVuY3Rpb24oaSl7cGUocCxpLG9baV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6dXMoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShwLGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGkpKX0pfXJldHVybi
14BwfWZ1bmN0aW9uIGl0KHApe3ZhciBjPWN0KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9c2UocCksbjtpZihjKXt2YXIgcz1zZSh0aGlzKS5jb25zdHJ1Y3RvcjtuPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLHMpfWVsc2Ugbj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gd2UodGhpcyxuKX19ZnVuY3Rpb24gY3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PSJmdW5jdGlvbiIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gU2UoKXt9ZnVuY3Rpb24gcHQocCl7dmFyIGM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHApKTtjLmZvckVhY2goZnVuY3Rpb24obyl7dHlwZW9mIHBbb109PSJmdW5jdGlvbiImJihwW29dPXBbb10uYmluZChwKSl9KX12YXIgRWU9ZnVuY3Rpb24ocCl7Z2UobyxwKTt2YXIgYz1pdChvKTtmdW5jdGlvbiBvKCl7dmFyIGksbj1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30scz1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtpZihaKHRoaXMsbyksaT1jLmNhbGwodGhpcyksQWUmJm1lLmNhbGwoY2UoaSkpLGkub3B0aW9ucz1tcyhuKSxpLnNlcnZpY2VzPXt9LGkubG9nZ2VyPXRlLGkubW9kdWxlcz17ZXh0ZXJuYWw6W119LHB0KGNlKGkpKSxzJiYhaS5pc0luaXRpYWxpemVkJiYhbi5pc0Nsb25lKXtpZighaS5vcHRpb25zLmluaXRJbW1lZGlhdGUpcmV0dXJuIGkuaW5pdChuLHMpLHdlKGksY2UoaSkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmluaXQobixzKX0sMCl9cmV0dXJuIGl9cmV0dXJuIGVlKG8sW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIG49dGhpcyxzPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3R5cGVvZiBzPT0iZnVuY3Rpb24iJiYocj1zLHM9e30pLCFzLmRlZmF1bHROUyYmcy5kZWZhdWx0TlMhPT0hMSYmcy5ucyYmKHR5cGVvZiBzLm5zPT0ic3RyaW5nIj9zLmRlZmF1bHROUz1zLm5zOnMubnMuaW5kZXhPZigidHJhbnNsYXRpb24iKTwwJiYocy5kZWZhdWx0TlM9cy5uc1swXSkpO3ZhciBtPWx0KCk7dGhpcy5vcHRpb25zPXJlKHJlKHJlKHt9LG0pLHRoaXMub3B0aW9ucyksbXMocykpLHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5QVBJIT09InYxIiYmKHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uPXJlKHJlKHt9LG0uaW50ZXJwb2xhdGlvbiksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24pKSxzLmtleVNlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZEtleVNlcGFyYXRvcj1zLmtleVNlcGFyYXRvcikscy5uc1NlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZE5zU2VwYXJhdG9yPXMubnNTZXBhcmF0b3IpO2Z1bmN0aW9uIGgoeCl7cmV0dXJuIHg/dHlwZW9mIHg9PSJmdW5jdGlvbiI/bmV3IHg6eDpudWxsfWlmKCF0aGlzLm9wdGlvbnMuaXNDbG9uZSl7dGhpcy5tb2R1bGVzLmxvZ2dlcj90ZS5pbml0KGgodGhpcy5tb2R1bGVzLmxvZ2dlciksdGhpcy5vcHRpb25zKTp0ZS5pbml0KG51bGwsdGhpcy5vcHRpb25zKTt2YXIgeTt0aGlzLm1vZHVsZXMuZm9ybWF0dGVyP3k9dGhpcy5tb2R1bGVzLmZvcm1hdHRlcjp0eXBlb2YgSW50bDwidSImJih5PXR0KTt2YXIgdD1uZXcgR3ModGhpcy5vcHRpb25zKTt0aGlzLnN0b3JlPW5ldyBIcyh0aGlzLm9wdGlvbnMucmVzb3VyY2VzLHRoaXMub3B0aW9ucyk7dmFyICQ9dGhpcy5zZXJ2aWNlczskLmxvZ2dlcj10ZSwkLnJlc291cmNlU3RvcmU9dGhpcy5zdG9yZSwkLmxhbmd1YWdlVXRpbHM9dCwkLnBsdXJhbFJlc29sdmVyPW5ldyBacyh0LHtwcmVwZW5kOnRoaXMub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsY29tcGF0aWJpbGl0eUpTT046dGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OLHNpbXBsaWZ5UGx1cmFsU3VmZml4OnRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeH0pLHkmJighdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0fHx0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQ9PT1tLmludGVycG9sYXRpb24uZm9ybWF0KSYmKCQuZm9ybWF0dGVyPWgoeSksJC5mb3JtYXR0ZXIuaW5pdCgkLHRoaXMub3B0aW9ucyksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0PSQuZm9ybWF0dGVyLmZvcm1hdC5iaW5kKCQuZm9ybWF0dGVyKSksJC5pbnRlcnBvbGF0b3I9bmV3IGV0KHRoaXMub3B0aW9ucyksJC51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOnRoaXMuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQodGhpcyl9LCQuYmFja2VuZENvbm5lY3Rvcj1uZXcgb3QoaCh0aGlzLm1vZHVsZXMuYmFja2VuZCksJC5yZXNvdXJjZVN0b3JlLCQsdGhpcy5vcHRpb25zKSwkLmJhY2tlbmRDb25uZWN0b3Iub24oIioiLGZ1bmN0aW9uKHgpe2Zvcih2YXIgQT1hcmd1bWVudHMubGVuZ3RoLE49bmV3IEFycmF5KEE+MT9BLTE6MCksaz0xO2s8QTtrKyspTltrLTFdPWFyZ3VtZW50c1trXTtuLmVtaXQuYXBwbHkobixbeF0uY29uY2F0KE4pKX0pLHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yJiYoJC5sYW5ndWFnZURldGVjdG9yPWgodGhpcy5tb2R1bGVzLmxhbmd1YWdlRGV0ZWN0b3IpLCQubGFuZ3VhZ2VEZXRlY3Rvci5pbml0KCQsdGhpcy5vcHRpb25zLmRldGVjdGlvbix0aGlzLm9wdGlvbnMpKSx0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCYmKCQuaTE4bkZvcm1hdD1oKHRoaXMubW9kdWxlcy5pMThuRm9ybWF0KSwkLmkxOG5Gb3JtYXQuaW5pdCYmJC5pMThuRm9ybWF0LmluaXQodGhpcykpLHRoaXMudHJhbnNsYXRvcj1uZXcgYXModGhpcy5zZXJ2aWNlcyx0aGlzLm9wdGlvbnMpLHRoaXMudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24oeCl7Zm9yKHZhciBBPWFyZ3VtZW50cy5sZW5ndGgsTj1uZXcgQXJyYXkoQT4xP0EtMTowKSxrPTE7azxBO2srKylOW2stMV09YXJndW1lbnRzW2tdO24uZW1pdC5hcHBseShuLFt4XS5jb25jYXQoTikpfSksdGhpcy5tb2R1bGVzLmV4dGVybmFsLmZvckVhY2goZnVuY3Rpb24oeCl7eC5pbml0JiZ4LmluaXQobil9KX1pZih0aGlzLmZvcm1hdD10aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQscnx8KHI9U2UpLHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMub3B0aW9ucy5sbmcpe3ZhciBfPXRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRGYWxsYmFja0NvZGVzKHR
14oaXMub3B0aW9ucy5mYWxsYmFja0xuZyk7Xy5sZW5ndGg+MCYmX1swXSE9PSJkZXYiJiYodGhpcy5vcHRpb25zLmxuZz1fWzBdKX0hdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yJiYhdGhpcy5vcHRpb25zLmxuZyYmdGhpcy5sb2dnZXIud2FybigiaW5pdDogbm8gbGFuZ3VhZ2VEZXRlY3RvciBpcyB1c2VkIGFuZCBubyBsbmcgaXMgZGVmaW5lZCIpO3ZhciBsPVsiZ2V0UmVzb3VyY2UiLCJoYXNSZXNvdXJjZUJ1bmRsZSIsImdldFJlc291cmNlQnVuZGxlIiwiZ2V0RGF0YUJ5TGFuZ3VhZ2UiXTtsLmZvckVhY2goZnVuY3Rpb24oeCl7blt4XT1mdW5jdGlvbigpe3ZhciBBO3JldHVybihBPW4uc3RvcmUpW3hdLmFwcGx5KEEsYXJndW1lbnRzKX19KTt2YXIgYj1bImFkZFJlc291cmNlIiwiYWRkUmVzb3VyY2VzIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJyZW1vdmVSZXNvdXJjZUJ1bmRsZSJdO2IuZm9yRWFjaChmdW5jdGlvbih4KXtuW3hdPWZ1bmN0aW9uKCl7dmFyIEE7cmV0dXJuKEE9bi5zdG9yZSlbeF0uYXBwbHkoQSxhcmd1bWVudHMpLG59fSk7dmFyIHc9eGUoKSxkPWZ1bmN0aW9uKCl7dmFyIEE9ZnVuY3Rpb24oayx2KXtuLmlzSW5pdGlhbGl6ZWQmJiFuLmluaXRpYWxpemVkU3RvcmVPbmNlJiZuLmxvZ2dlci53YXJuKCJpbml0OiBpMThuZXh0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIFlvdSBzaG91bGQgY2FsbCBpbml0IGp1c3Qgb25jZSEiKSxuLmlzSW5pdGlhbGl6ZWQ9ITAsbi5vcHRpb25zLmlzQ2xvbmV8fG4ubG9nZ2VyLmxvZygiaW5pdGlhbGl6ZWQiLG4ub3B0aW9ucyksbi5lbWl0KCJpbml0aWFsaXplZCIsbi5vcHRpb25zKSx3LnJlc29sdmUodikscihrLHYpfTtpZihuLmxhbmd1YWdlcyYmbi5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkhPT0idjEiJiYhbi5pc0luaXRpYWxpemVkKXJldHVybiBBKG51bGwsbi50LmJpbmQobikpO24uY2hhbmdlTGFuZ3VhZ2Uobi5vcHRpb25zLmxuZyxBKX07cmV0dXJuIHRoaXMub3B0aW9ucy5yZXNvdXJjZXN8fCF0aGlzLm9wdGlvbnMuaW5pdEltbWVkaWF0ZT9kKCk6c2V0VGltZW91dChkLDApLHd9fSx7a2V5OiJsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihuKXt2YXIgcz10aGlzLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOlNlLG09cixoPXR5cGVvZiBuPT0ic3RyaW5nIj9uOnRoaXMubGFuZ3VhZ2U7aWYodHlwZW9mIG49PSJmdW5jdGlvbiImJihtPW4pLCF0aGlzLm9wdGlvbnMucmVzb3VyY2VzfHx0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXMpe2lmKGgmJmgudG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiBtKCk7dmFyIHk9W10sdD1mdW5jdGlvbihsKXtpZihsKXt2YXIgYj1zLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGwpO2IuZm9yRWFjaChmdW5jdGlvbih3KXt5LmluZGV4T2Yodyk8MCYmeS5wdXNoKHcpfSl9fTtpZihoKXQoaCk7ZWxzZXt2YXIgJD10aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpOyQuZm9yRWFjaChmdW5jdGlvbihfKXtyZXR1cm4gdChfKX0pfXRoaXMub3B0aW9ucy5wcmVsb2FkJiZ0aGlzLm9wdGlvbnMucHJlbG9hZC5mb3JFYWNoKGZ1bmN0aW9uKF8pe3JldHVybiB0KF8pfSksdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmxvYWQoeSx0aGlzLm9wdGlvbnMubnMsZnVuY3Rpb24oXyl7IV8mJiFzLnJlc29sdmVkTGFuZ3VhZ2UmJnMubGFuZ3VhZ2UmJnMuc2V0UmVzb2x2ZWRMYW5ndWFnZShzLmxhbmd1YWdlKSxtKF8pfSl9ZWxzZSBtKG51bGwpfX0se2tleToicmVsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihuLHMscil7dmFyIG09eGUoKTtyZXR1cm4gbnx8KG49dGhpcy5sYW5ndWFnZXMpLHN8fChzPXRoaXMub3B0aW9ucy5ucykscnx8KHI9U2UpLHRoaXMuc2VydmljZXMuYmFja2VuZENvbm5lY3Rvci5yZWxvYWQobixzLGZ1bmN0aW9uKGgpe20ucmVzb2x2ZSgpLHIoaCl9KSxtfX0se2tleToidXNlIix2YWx1ZTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIllvdSBhcmUgcGFzc2luZyBhbiB1bmRlZmluZWQgbW9kdWxlISBQbGVhc2UgY2hlY2sgdGhlIG9iamVjdCB5b3UgYXJlIHBhc3NpbmcgdG8gaTE4bmV4dC51c2UoKSIpO2lmKCFuLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJZb3UgYXJlIHBhc3NpbmcgYSB3cm9uZyBtb2R1bGUhIFBsZWFzZSBjaGVjayB0aGUgb2JqZWN0IHlvdSBhcmUgcGFzc2luZyB0byBpMThuZXh0LnVzZSgpIik7cmV0dXJuIG4udHlwZT09PSJiYWNrZW5kIiYmKHRoaXMubW9kdWxlcy5iYWNrZW5kPW4pLChuLnR5cGU9PT0ibG9nZ2VyInx8bi5sb2cmJm4ud2FybiYmbi5lcnJvcikmJih0aGlzLm1vZHVsZXMubG9nZ2VyPW4pLG4udHlwZT09PSJsYW5ndWFnZURldGVjdG9yIiYmKHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yPW4pLG4udHlwZT09PSJpMThuRm9ybWF0IiYmKHRoaXMubW9kdWxlcy5pMThuRm9ybWF0PW4pLG4udHlwZT09PSJwb3N0UHJvY2Vzc29yIiYmdHMuYWRkUG9zdFByb2Nlc3NvcihuKSxuLnR5cGU9PT0iZm9ybWF0dGVyIiYmKHRoaXMubW9kdWxlcy5mb3JtYXR0ZXI9biksbi50eXBlPT09IjNyZFBhcnR5IiYmdGhpcy5tb2R1bGVzLmV4dGVybmFsLnB1c2gobiksdGhpc319LHtrZXk6InNldFJlc29sdmVkTGFuZ3VhZ2UiLHZhbHVlOmZ1bmN0aW9uKG4pe2lmKCEoIW58fCF0aGlzLmxhbmd1YWdlcykmJiEoWyJjaW1vZGUiLCJkZXYiXS5pbmRleE9mKG4pPi0xKSlmb3IodmFyIHM9MDtzPHRoaXMubGFuZ3VhZ2VzLmxlbmd0aDtzKyspe3ZhciByPXRoaXMubGFuZ3VhZ2VzW3NdO2lmKCEoWyJjaW1vZGUiLCJkZXYiXS5pbmRleE9mKHIpPi0xKSYmdGhpcy5zdG9yZS5oYXNMYW5ndWFnZVNvbWVUcmFuc2xhdGlvbnMocikpe3RoaXMucmVzb2x2ZWRMYW5ndWFnZT1yO2JyZWFrfX19fSx7a2V5OiJjaGFuZ2VMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24obixzKXt2YXIgcj10aGlzO3RoaXMuaXNMYW5ndWFnZUNoYW5naW5nVG89bjt2YXIgbT14ZSgpO3RoaXMuZW1pdCgibGFuZ3VhZ2VDaGFuZ2luZyIsbik7dmFyIGg9ZnVuY3Rpb24oXyl7ci5sYW5ndWFnZT1fLHIubGFuZ3VhZ2VzPXIuc2VydmljZXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkoXyksci5yZXNvbHZlZExhbmd1YWdlPXZvaWQgMCxyLnNldFJlc29sdmVkTGFuZ3VhZ2UoXyl9LHk9ZnVuY3Rpb24oXyxsKXtsPyhoKGwpLHIudHJhbnNsYXRvci5jaGFuZ2VMYW5ndWFnZShsKSxyLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCxyLmVtaXQoImxhbmd1YWdlQ2hhbmdlZCIsbCksci5sb2dnZXIubG9nKCJsYW5ndWFnZUNoYW5nZWQiLGwpKTpyLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCxtLnJlc29sdmUoZnVuY3Rpb24oKXtyZXR1cm4gci50LmFwcGx5KHIsYXJndW1lbnRzKX0pLHMmJnMoXyxmdW5jdGlvbigpe3JldHVybiByLnQuYXBwbHkocixhcmd1bWVudHMpfSl9LHQ9ZnVuY3Rpb24oXyl7IW4mJiFfJiZyLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJihfPVtdKTt2YXIgbD10eXBlb2YgXz09InN0cmluZyI/XzpyLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0QmVzdE1hdGNoRnJvbUNvZGVzKF8pO2wmJihyLmxhbmd1YWdlfHxoKGwpLHIudHJhbnNsYXRvci5sYW5ndWFnZXx8ci50cmFuc2xhdG9yLmNoYW5nZUxhbmd1YWdlKGwpLHIuc2
14VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmci5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmNhY2hlVXNlckxhbmd1YWdlKGwpKSxyLmxvYWRSZXNvdXJjZXMobCxmdW5jdGlvbihiKXt5KGIsbCl9KX07cmV0dXJuIW4mJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5hc3luYz90KHRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QoKSk6IW4mJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmFzeW5jP3RoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QodCk6dChuKSxtfX0se2tleToiZ2V0Rml4ZWRUIix2YWx1ZTpmdW5jdGlvbihuLHMscil7dmFyIG09dGhpcyxoPWZ1bmN0aW9uIHkodCwkKXt2YXIgXztpZihRKCQpIT09Im9iamVjdCIpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGI9bmV3IEFycmF5KGw+Mj9sLTI6MCksdz0yO3c8bDt3KyspYlt3LTJdPWFyZ3VtZW50c1t3XTtfPW0ub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihbdCwkXS5jb25jYXQoYikpfWVsc2UgXz1yZSh7fSwkKTtfLmxuZz1fLmxuZ3x8eS5sbmcsXy5sbmdzPV8ubG5nc3x8eS5sbmdzLF8ubnM9Xy5uc3x8eS5ucyxfLmtleVByZWZpeD1fLmtleVByZWZpeHx8cnx8eS5rZXlQcmVmaXg7dmFyIGQ9bS5vcHRpb25zLmtleVNlcGFyYXRvcnx8Ii4iLHg9Xy5rZXlQcmVmaXg/IiIuY29uY2F0KF8ua2V5UHJlZml4KS5jb25jYXQoZCkuY29uY2F0KHQpOnQ7cmV0dXJuIG0udCh4LF8pfTtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP2gubG5nPW46aC5sbmdzPW4saC5ucz1zLGgua2V5UHJlZml4PXIsaH19LHtrZXk6InQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIHRoaXMudHJhbnNsYXRvciYmKG49dGhpcy50cmFuc2xhdG9yKS50cmFuc2xhdGUuYXBwbHkobixhcmd1bWVudHMpfX0se2tleToiZXhpc3RzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBuO3JldHVybiB0aGlzLnRyYW5zbGF0b3ImJihuPXRoaXMudHJhbnNsYXRvcikuZXhpc3RzLmFwcGx5KG4sYXJndW1lbnRzKX19LHtrZXk6InNldERlZmF1bHROYW1lc3BhY2UiLHZhbHVlOmZ1bmN0aW9uKG4pe3RoaXMub3B0aW9ucy5kZWZhdWx0TlM9bn19LHtrZXk6Imhhc0xvYWRlZE5hbWVzcGFjZSIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHM9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtpZighdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0aGlzLmxvZ2dlci53YXJuKCJoYXNMb2FkZWROYW1lc3BhY2U6IGkxOG5leHQgd2FzIG5vdCBpbml0aWFsaXplZCIsdGhpcy5sYW5ndWFnZXMpLCExO2lmKCF0aGlzLmxhbmd1YWdlc3x8IXRoaXMubGFuZ3VhZ2VzLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiaGFzTG9hZGVkTmFtZXNwYWNlOiBpMThuLmxhbmd1YWdlcyB3ZXJlIHVuZGVmaW5lZCBvciBlbXB0eSIsdGhpcy5sYW5ndWFnZXMpLCExO3ZhciBtPXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8dGhpcy5sYW5ndWFnZXNbMF0saD10aGlzLm9wdGlvbnM/dGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nOiExLHk9dGhpcy5sYW5ndWFnZXNbdGhpcy5sYW5ndWFnZXMubGVuZ3RoLTFdO2lmKG0udG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiEwO3ZhciB0PWZ1bmN0aW9uKGwsYil7dmFyIHc9cy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLnN0YXRlWyIiLmNvbmNhdChsLCJ8IikuY29uY2F0KGIpXTtyZXR1cm4gdz09PS0xfHx3PT09Mn07aWYoci5wcmVjaGVjayl7dmFyICQ9ci5wcmVjaGVjayh0aGlzLHQpO2lmKCQhPT12b2lkIDApcmV0dXJuICR9cmV0dXJuISEodGhpcy5oYXNSZXNvdXJjZUJ1bmRsZShtLG4pfHwhdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmJhY2tlbmR8fHRoaXMub3B0aW9ucy5yZXNvdXJjZXMmJiF0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXN8fHQobSxuKSYmKCFofHx0KHksbikpKX19LHtrZXk6ImxvYWROYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihuLHMpe3ZhciByPXRoaXMsbT14ZSgpO3JldHVybiB0aGlzLm9wdGlvbnMubnM/KHR5cGVvZiBuPT0ic3RyaW5nIiYmKG49W25dKSxuLmZvckVhY2goZnVuY3Rpb24oaCl7ci5vcHRpb25zLm5zLmluZGV4T2YoaCk8MCYmci5vcHRpb25zLm5zLnB1c2goaCl9KSx0aGlzLmxvYWRSZXNvdXJjZXMoZnVuY3Rpb24oaCl7bS5yZXNvbHZlKCkscyYmcyhoKX0pLG0pOihzJiZzKCksUHJvbWlzZS5yZXNvbHZlKCkpfX0se2tleToibG9hZExhbmd1YWdlcyIsdmFsdWU6ZnVuY3Rpb24obixzKXt2YXIgcj14ZSgpO3R5cGVvZiBuPT0ic3RyaW5nIiYmKG49W25dKTt2YXIgbT10aGlzLm9wdGlvbnMucHJlbG9hZHx8W10saD1uLmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gbS5pbmRleE9mKHkpPDB9KTtyZXR1cm4gaC5sZW5ndGg/KHRoaXMub3B0aW9ucy5wcmVsb2FkPW0uY29uY2F0KGgpLHRoaXMubG9hZFJlc291cmNlcyhmdW5jdGlvbih5KXtyLnJlc29sdmUoKSxzJiZzKHkpfSkscik6KHMmJnMoKSxQcm9taXNlLnJlc29sdmUoKSl9fSx7a2V5OiJkaXIiLHZhbHVlOmZ1bmN0aW9uKG4pe2lmKG58fChuPXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8KHRoaXMubGFuZ3VhZ2VzJiZ0aGlzLmxhbmd1YWdlcy5sZW5ndGg+MD90aGlzLmxhbmd1YWdlc1swXTp0aGlzLmxhbmd1YWdlKSksIW4pcmV0dXJuInJ0bCI7dmFyIHM9WyJhciIsInNodSIsInNxciIsInNzaCIsInhhYSIsInloZCIsInl1ZCIsImFhbyIsImFiaCIsImFidiIsImFjbSIsImFjcSIsImFjdyIsImFjeCIsImFjeSIsImFkZiIsImFkcyIsImFlYiIsImFlYyIsImFmYiIsImFqcCIsImFwYyIsImFwZCIsImFyYiIsImFycSIsImFycyIsImFyeSIsImFyeiIsImF1eiIsImF2bCIsImF5aCIsImF5bCIsImF5biIsImF5cCIsImJieiIsInBnYSIsImhlIiwiaXciLCJwcyIsInBidCIsInBidSIsInBzdCIsInBycCIsInByZCIsInVnIiwidXIiLCJ5ZGQiLCJ5ZHMiLCJ5aWgiLCJqaSIsInlpIiwiaGJvIiwibWVuIiwieG1uIiwiZmEiLCJqcHIiLCJwZW8iLCJwZXMiLCJwcnMiLCJkdiIsInNhbSIsImNrYiJdO3JldHVybiBzLmluZGV4T2YodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKG4pKT4tMXx8bi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIi1hcmFiIik+MT8icnRsIjoibHRyIn19LHtrZXk6ImNsb25lSW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIG49dGhpcyxzPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpTZSxtPXJlKHJlKHJlKHt9LHRoaXMub3B0aW9ucykscykse2lzQ2xvbmU6ITB9KSxoPW5ldyBvKG0pOyhzLmRlYnVnIT09dm9pZCAwfHxzLnByZWZpeCE9PXZvaWQgMCkmJihoLmxvZ2dlcj1oLmxvZ2dlci5jbG9uZShzKSk7dmFyIHk9WyJzdG9yZSIsInNlcnZpY2VzIiwibGFuZ3VhZ2UiXTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2hbdF09blt0XX0pLGguc2VydmljZXM9cmUoe30sdGhpcy5zZXJ2aWNlcyksaC5zZXJ2aWNlcy51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOmguaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQoaCl9LGgudHJhbnNsYXRvcj1uZXcgYXMoaC5zZXJ2aWNlcyxoLm9wdGlvbnMpLGgudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24odCl7Zm9yKHZhciAkPWFyZ3VtZW50cy5sZW5ndGgsXz1uZXcgQXJyYXkoJD4xPyQtMTowKSxsPTE7bDwkO2wrKylfW2wtMV09YXJndW1lbnRzW2xdO2guZW1pdC5hcHBseShoLFt0XS5jb25jYXQoXykpfSksaC5pbml0KG0sciksaC50cmFuc2xhdG9yLm9wdGlvbnM9aC5vcHRpb25zLGgudHJhbnNsYXRvci5iYWNrZW5kQ29ubmVjdG9yLnNlcnZpY2VzLnV0aWxzPXtoYXNMb2FkZWROYW1lc3BhY2U6aC5oYXNMb2FkZWROYW1lc3BhY2UuYmluZChoKX0saH19LHtrZXk6InRvSlNPTiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57b3B0aW9uczp0aGlzLm9wdGlvbnMsc3RvcmU6dGhpcy5zdG9yZSxsYW5ndWFnZTp0aGlzLmxhbmd1YWdlLGxhbmd1YWdlczp0aGlzLmxhbmd1YWdlcyxyZXNvbHZlZExhbmd1YWdlOnRoaXMucmVzb2x2ZWRMYW5ndWFnZX19fV0pLG99KG1lKTtwZShFZSwiY3JlYXRlSW5zdGFuY2UiLGZ1bmN0aW9uKCl7dmFyIHA9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIG5ldyBFZShwLGMpfSk
147dmFyIEc9RWUuY3JlYXRlSW5zdGFuY2UoKTtHLmNyZWF0ZUluc3RhbmNlPUVlLmNyZWF0ZUluc3RhbmNlLEcuY3JlYXRlSW5zdGFuY2UsRy5pbml0LEcubG9hZFJlc291cmNlcyxHLnJlbG9hZFJlc291cmNlcyxHLnVzZSxHLmNoYW5nZUxhbmd1YWdlLEcuZ2V0Rml4ZWRULEcudCxHLmV4aXN0cyxHLnNldERlZmF1bHROYW1lc3BhY2UsRy5oYXNMb2FkZWROYW1lc3BhY2UsRy5sb2FkTmFtZXNwYWNlcyxHLmxvYWRMYW5ndWFnZXM7Y29uc3QgbXQ9cD0+cCE9bnVsbDtmdW5jdGlvbiBQZShwKXtyZXR1cm4gcC5yZWR1Y2UoKGMsbyk9PmMrbywwKS9wLmxlbmd0aH1mdW5jdGlvbiB1dChwKXtyZXR1cm4gcC5yZWR1Y2UoKGMsbyk9PmMrbywwKX1mdW5jdGlvbiAkdChwKXtjb25zdCBjPXAuc29ydCgoaSxuKT0+aS1uKSxvPU1hdGguZmxvb3IoYy5sZW5ndGgvMik7cmV0dXJuIGMubGVuZ3RoJTI9PT0wPyhjW29dK2Nbby0xXSkvMjpjW29dfWZ1bmN0aW9uICRzKHApe2NvbnN0IGM9UGUocCk7cmV0dXJuIFBlKHAubWFwKG89PihvLWMpKioyKSl9ZnVuY3Rpb24gX3QocCl7cmV0dXJuIE1hdGguc3FydCgkcyhwKSl9ZnVuY3Rpb24gYnQocCl7bGV0IGM9LTEvMDtmb3IobGV0IG8gb2YgcClvPmMmJihjPW8pO3JldHVybiBjfWZ1bmN0aW9uIHl0KHApe2xldCBjPTEvMDtmb3IobGV0IG8gb2YgcClvPGMmJihjPW8pO3JldHVybiBjfWZ1bmN0aW9uIGZ0KHApe3JldHVybiBwLmZpbHRlcihtdCkubGVuZ3RofWZ1bmN0aW9uIGR0KHApe3JldHVybiBuZXcgU2V0KHApLnNpemV9Y29uc3QgX3M9e3N1bTp1dCxtZWFuOlBlLG1lZGlhbjokdCxzdGRldjpfdCx2YXJpYW5jZTokcyxtYXg6YnQsbWluOnl0LGNvdW50OmZ0LGRpc3RpbmN0Q291bnQ6ZHR9O2Z1bmN0aW9uIGh0KHApe3JldHVybiBmZS5wYXJzZShwLCJleHByIil9ZnVuY3Rpb24gamUocCxjKXtyZXR1cm4gcCBpbnN0YW5jZW9mIEFycmF5P3AubWFwKGMpOmMocCl9ZnVuY3Rpb24gd3QocCxjLG8pe3JldHVybiBjIGluc3RhbmNlb2YgQXJyYXk/byBpbnN0YW5jZW9mIEFycmF5P2MubWFwKChpLG4pPT5wKGksb1tuXSkpOmMubWFwKGk9PnAoaSxvKSk6byBpbnN0YW5jZW9mIEFycmF5P28ubWFwKGk9PnAoYyxpKSk6cChjLG8pfWNvbnN0IHh0PXA9PnAgaW5zdGFuY2VvZiBBcnJheT8hIXBbMF06ISFwO2Z1bmN0aW9uIHFlKHAsYyl7Y29uc3Qgbz1pPT57c3dpdGNoKGkudHlwZSl7Y2FzZSJyZWYiOmlmKGMgaW5zdGFuY2VvZiBBcnJheSl7aWYoY1swXVtpLm5hbWVdPT09dm9pZCAwJiZpLm5hbWUhPT0iKiIpdGhyb3cgbmV3IEVycm9yKGB0aGVyZSBpcyBubyBmaWVsZCBuYW1lZCAke2kubmFtZX1gKTtyZXR1cm4gaS5uYW1lPT09IioiP2MubWFwKG49Pm5bT2JqZWN0LmtleXMobilbMF1dKTpjLm1hcChuPT5uW2kubmFtZV0pfWVsc2V7aWYoIWNbaS5uYW1lXSYmaS5uYW1lIT09IioiKXRocm93IG5ldyBFcnJvcihgdGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJHtpLm5hbWV9YCk7cmV0dXJuIGkubmFtZT09PSIqIj9jW09iamVjdC5rZXlzKGMpWzBdXTpjW2kubmFtZV19Y2FzZSJpbnRlZ2VyIjpjYXNlIm51bWVyaWMiOmNhc2Uic3RyaW5nIjpjYXNlImJvb2xlYW4iOnJldHVybiBpLnZhbHVlO2Nhc2UiYmluYXJ5Ijp7bGV0IG47c3dpdGNoKGkub3Ape2Nhc2UiIT0iOm49KHMscik9PnMhPXI7YnJlYWs7Y2FzZSIlIjpuPShzLHIpPT5zJXI7YnJlYWs7Y2FzZSIqIjpuPShzLHIpPT5zKnI7YnJlYWs7Y2FzZSIvIjpuPShzLHIpPT5zL3I7YnJlYWs7Y2FzZSIrIjpuPShzLHIpPT5zK3I7YnJlYWs7Y2FzZSItIjpuPShzLHIpPT5zLXI7YnJlYWs7Y2FzZSI9IjpuPShzLHIpPT5zPT1yO2JyZWFrO2Nhc2UiPiI6bj0ocyxyKT0+cz5yO2JyZWFrO2Nhc2UiPCI6bj0ocyxyKT0+czxyO2JyZWFrO2Nhc2UiPj0iOm49KHMscik9PnM+PXI7YnJlYWs7Y2FzZSI8PSI6bj0ocyxyKT0+czw9cjticmVhaztjYXNlIk9SIjpuPShzLHIpPT5zfHxyO2JyZWFrO2Nhc2UiQU5EIjpuPShzLHIpPT5zJiZyO2JyZWFrO2Nhc2UifiI6bj0ocyxyKT0+bmV3IFJlZ0V4cChyKS50ZXN0KHMpO2JyZWFrO2Nhc2UifioiOm49KHMscik9Pm5ldyBSZWdFeHAociwiaSIpLnRlc3Qocyk7YnJlYWs7Y2FzZSIhfiI6bj0ocyxyKT0+IW5ldyBSZWdFeHAocikudGVzdChzKTticmVhaztjYXNlIiF+KiI6bj0ocyxyKT0+IW5ldyBSZWdFeHAociwiaSIpLnRlc3Qocyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydCBvcCAke2kub3B9LCBjYWxjdWxhdGluZyAke2ZlLnRvU3FsLmV4cHIoaSl9YCl9cmV0dXJuIHd0KG4sbyhpLmxlZnQpLG8oaS5yaWdodCkpfWNhc2UidW5hcnkiOnN3aXRjaChpLm9wKXtjYXNlIisiOnJldHVybiBqZShuPT4rbixvKGkub3BlcmFuZCkpO2Nhc2UiLSI6cmV0dXJuIGplKG49Pi1uLG8oaS5vcGVyYW5kKSk7Y2FzZSJOT1QiOnJldHVybiBqZShuPT4hbixvKGkub3BlcmFuZCkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnQgdW5hcnkgJHtpLm9wfSwgY2FsY3VsYXRpbmcgJHtmZS50b1NxbC5leHByKGkpfWApfWNhc2UiY2FsbCI6e2lmKGkuZnVuY3Rpb24ubmFtZSBpbiBfcylyZXR1cm4gX3NbaS5mdW5jdGlvbi5uYW1lXShvKGkuYXJnc1swXSkpO3Rocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0IGZ1bmN0aW9uICR7aS5mdW5jdGlvbi5uYW1lfSwgY2FsY3VsYXRpbmcgJHtmZS50b1NxbC5leHByKGkpfWApfWNhc2UiY2FzZSI6aWYoYyBpbnN0YW5jZW9mIEFycmF5KWlmKGMubGVuZ3RoPT09MSl7Y29uc3Qgbj1pLndoZW5zLmZpbmQocz0+eHQobyhzLndoZW4pKSk7cmV0dXJuIG4/byhuLnZhbHVlKTppLmVsc2U/byhpLmVsc2UpOm51bGx9ZWxzZSByZXR1cm4gYy5mbGF0TWFwKG49PnFlKGksW25dKSk7ZWxzZSByZXR1cm4gcWUoaSxNZShjKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydCB0eXBlICR7aS50eXBlfSwgY2FsY3VsYXRpbmcgJHtmZS50b1NxbC5leHByKGkpfWApfX07cmV0dXJuIG8ocCl9ZnVuY3Rpb24ga3QocCxjKXtyZXR1cm4gcWUoaHQocCksYyl9YXN5bmMgZnVuY3Rpb24gYnMocCxjKXtjb25zdHtvcDpvLHBhcmFtczppLG51bTpufT
141wLHM9ey4uLmN9LHI9Y1tPYmplY3Qua2V5cyhjKVswXV0ubGVuZ3RoO2ZvcihsZXQgbSBvZiBpKXN3aXRjaChtLnR5cGUpe2Nhc2UiZmllbGQiOnNbbS52YWx1ZV09Y1ttLnZhbHVlXTticmVhaztjYXNlImNvbnN0YW50IjpzW20udmFsdWVdPW5ldyBBcnJheShyKS5maWxsKG0udmFsdWUpO2JyZWFrO2Nhc2UiZXhwcmVzc2lvbiI6bGV0IGg9YXdhaXQgYnMobS52YWx1ZSxjKTtPYmplY3Qua2V5cyhoKS5mb3JFYWNoKHk9PntzW3ldPWhbeV19KTticmVha31zd2l0Y2gobyl7Y2FzZSJvbmUiOnJldHVybiBBdChwLmFzLGkscyk7Y2FzZSJsb2ciOnJldHVybiBEZShwLmFzLGkscyxuKTtjYXNlImxvZzIiOnJldHVybiBEZShwLmFzLGkscywyKTtjYXNlImxvZzEwIjpyZXR1cm4gRGUocC5hcyxpLHMsMTApO2Nhc2UiYmluQ291bnQiOnJldHVybiB2dChwLmFzLGkscyxuKTtjYXNlImJpbiI6cmV0dXJuIGd0KHAuYXMsaSxzLG4pO2Nhc2UiZGF0ZVRpbWVEcmlsbCI6cmV0dXJuIGhzKHAuYXMsaSxzKTtjYXNlImRhdGVUaW1lRmVhdHVyZSI6cmV0dXJuIHdzKHAuYXMsaSxzKTtjYXNlInBhaW50IjpyZXR1cm4gYXdhaXQgT3QocC5hcyxpLHMpO2Nhc2UiZXhwciI6cmV0dXJuIFN0KHAuYXMsaSxzKTtkZWZhdWx0OnJldHVybiBzfX1mdW5jdGlvbiBndChwLGMsbyxpPTEwKXtjb25zdHt2YWx1ZTpufT1jWzBdLHM9b1tuXTtsZXQgcj0xLzAsbT0tMS8wO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtsZXQgJD1zW3RdOyQ+bSYmKG09JCksJDxyJiYocj0kKX1jb25zdCBoPShtLXIpL2kseT1zLm1hcCh0PT57bGV0ICQ9TWF0aC5mbG9vcigodC1yKS9oKTtyZXR1cm4gJD09PWkmJigkPWktMSksTnVtYmVyLmlzTmFOKCQpJiYoJD0wKSxbTnVtYmVyKCQqaCtyKSxOdW1iZXIoKCQrMSkqaCtyKV19KTtyZXR1cm57Li4ubyxbcF06eX19ZnVuY3Rpb24gdnQocCxjLG8saT0xMCl7Y29uc3R7dmFsdWU6bn09Y1swXSxyPW9bbl0ubWFwKCh5LHQpPT4oe3ZhbDp5LGluZGV4OnR9KSkuc29ydCgoeSx0KT0+eS52YWwtdC52YWwpLm1hcCgoeSx0KT0+KHt2YWw6eS52YWwsaW5kZXg6eS5pbmRleCxvcmRlckluZGV4OnR9KSksbT1yLmxlbmd0aC9pLGg9ci5zb3J0KCh5LHQpPT55LmluZGV4LXQuaW5kZXgpLm1hcCh5PT57bGV0IHQ9TWF0aC5mbG9vcih5Lm9yZGVySW5kZXgvbSk7cmV0dXJuIHQ9PT1pJiYodD1pLTEpLHQrMX0pO3JldHVybnsuLi5vLFtwXTpofX1mdW5jdGlvbiBEZShwLGMsbyxpPTEwKXtjb25zdHt2YWx1ZTpufT1jWzBdLHI9b1tuXS5tYXAobT0+TWF0aC5sb2cobSkvTWF0aC5sb2coaSkpO3JldHVybnsuLi5vLFtwXTpyfX1mdW5jdGlvbiBBdChwLGMsbyl7aWYoT2JqZWN0LmtleXMobykubGVuZ3RoPT09MClyZXR1cm4gbztjb25zdCBpPW9bT2JqZWN0LmtleXMobylbMF1dLmxlbmd0aCxuPW5ldyBBcnJheShpKS5maWxsKDEpO3JldHVybnsuLi5vLFtwXTpufX1hc3luYyBmdW5jdGlvbiBPdChwLGMsbyl7Y29uc3QgaT1jLmZpbmQocz0+cy50eXBlPT09Im5ld21hcCIpO2lmKCFpKXtjb25zdCBzPWMuZmluZChtPT5tLnR5cGU9PT0ibWFwIik7aWYoIXMpcmV0dXJuIG87Y29uc3Qgcj1zLnZhbHVlO3JldHVybnsuLi5vLFtwXTphd2FpdCBncyhvW3IueF0sb1tyLnldLHIpfX1jb25zdCBuPWkudmFsdWU7cmV0dXJuey4uLm8sW3BdOmF3YWl0IE9zKE1lKG8pLG4pfX1mdW5jdGlvbiBTdChwLGMsbyl7Y29uc3QgaT1jLmZpbmQocz0+cy50eXBlPT09InNxbCIpO2lmKCFpKXJldHVybiBvO2NvbnN0IG49a3QoaS52YWx1ZSxvKTtpZihuIGluc3RhbmNlb2YgQXJyYXkpcmV0dXJuey4uLm8sW3BdOm59O3tjb25zdCBzPU9iamVjdC5rZXlzKG8pWzBdO3JldHVybiBzP3suLi5vLFtwXTpuZXcgQXJyYXkob1tzXS5sZW5ndGgpLmZpbGwobil9Om99fWZ1bmN0aW9uIEV0KHApe2NvbnN0IGM9e307cmV0dXJuIHAubGVuZ3RoPT09MHx8T2JqZWN0LmtleXMocFswXSkuZm9yRWFjaChvPT57Y1tvXT1wLm1hcChpPT5pW29dKX0pLGN9ZnVuY3Rpb24gTWUocCl7Y29uc3QgYz1PYmplY3Qua2V5cyhwKTtpZihjLmxlbmd0aD09PTApcmV0dXJuW107Y29uc3Qgbz1bXSxpPXBbT2JqZWN0LmtleXMocClbMF1dLmxlbmd0aDtmb3IobGV0IG49MDtuPGk7bisrKXtjb25zdCBzPXt9O2MuZm9yRWFjaChyPT57c1tyXT1wW3JdW25dfSksby5wdXNoKHMpfXJldHVybiBvfWFzeW5jIGZ1bmN0aW9uIFR0KHAsYyl7bGV0IG89RXQocCk7Zm9yKGxldCBpPTA7aTxjLmxlbmd0aDtpKyspe2NvbnN0IG49Y1tpXTtvPWF3YWl0IGJzKG4uZXhwcmVzc2lvbixvKX1yZXR1cm4gTWUobyl9Y29uc3QgTnQ9cD0+e2NvbnN0e2RhdGFTb3VyY2U6Yyx0cmFuczpvfT1wLmRhdGE7VHQoYyxvKS50aGVuKGk9PntzZWxmLnBvc3RNZXNzYWdlKGkpfSkuY2F0Y2goaT0+e2NvbnNvbGUuZXJyb3IoaS5zdGFjayksc2VsZi5wb3N0TWVzc2FnZShpLnN0YWNrKX0pfTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLE50LCExKX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zZm9ybS53b3JrZXItQmlUV3RtSy0uanMubWFwCg==",Gae=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),vR=typeof self<"u"&&self.Blob&&new Blob([Gae(LB)],{type:"text/javascript;charset=utf-8"});function Vae(e){let t;try{if(t=vR&&(self.URL||self.webkitURL).createObjectURL(vR),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+LB,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const CB="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEoobSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gSj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30sSihtKX1mdW5jdGlvbiBYKG0sYyl7aWYoIShtIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZnMobSxjKXtpZihKKG0pIT0ib2JqZWN0Inx8IW0pcmV0dXJuIG07dmFyIG89bVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG8hPT12b2lkIDApe3ZhciBpPW8uY2FsbChtLGMpO2lmKEooaSkhPSJvYmplY3QiKXJldHVybi
14BpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKGM9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShtKX1mdW5jdGlvbiBVZShtKXt2YXIgYz1mcyhtLCJzdHJpbmciKTtyZXR1cm4gSihjKT09InN5bWJvbCI/YzpjKyIifWZ1bmN0aW9uIERlKG0sYyl7Zm9yKHZhciBvPTA7bzxjLmxlbmd0aDtvKyspe3ZhciBpPWNbb107aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobSxVZShpLmtleSksaSl9fWZ1bmN0aW9uIFoobSxjLG8pe3JldHVybiBjJiZEZShtLnByb3RvdHlwZSxjKSxvJiZEZShtLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG19ZnVuY3Rpb24gaWUobSl7aWYobT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBtfWZ1bmN0aW9uIEVlKG0sYyl7cmV0dXJuIEVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKG8saSl7cmV0dXJuIG8uX19wcm90b19fPWksb30sRWUobSxjKX1mdW5jdGlvbiB4ZShtLGMpe2lmKHR5cGVvZiBjIT0iZnVuY3Rpb24iJiZjIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO20ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTptLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZFZShtLGMpfWZ1bmN0aW9uIGhlKG0sYyl7aWYoYyYmKEooYyk9PSJvYmplY3QifHx0eXBlb2YgYz09ImZ1bmN0aW9uIikpcmV0dXJuIGM7aWYoYyE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBpZShtKX1mdW5jdGlvbiBlZShtKXtyZXR1cm4gZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYyl7cmV0dXJuIGMuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYyl9LGVlKG0pfWZ1bmN0aW9uIGNlKG0sYyxvKXtyZXR1cm4oYz1VZShjKSlpbiBtP09iamVjdC5kZWZpbmVQcm9wZXJ0eShtLGMse3ZhbHVlOm8sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTptW2NdPW8sbX1mdW5jdGlvbiBkcyhtKXtpZihBcnJheS5pc0FycmF5KG0pKXJldHVybiBtfWZ1bmN0aW9uIGhzKG0pe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZtW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fG1bIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShtKX1mdW5jdGlvbiBNZShtLGMpeyhjPT1udWxsfHxjPm0ubGVuZ3RoKSYmKGM9bS5sZW5ndGgpO2Zvcih2YXIgbz0wLGk9QXJyYXkoYyk7bzxjO28rKylpW29dPW1bb107cmV0dXJuIGl9ZnVuY3Rpb24gd3MobSxjKXtpZihtKXtpZih0eXBlb2YgbT09InN0cmluZyIpcmV0dXJuIE1lKG0sYyk7dmFyIG89e30udG9TdHJpbmcuY2FsbChtKS5zbGljZSg4LC0xKTtyZXR1cm4gbz09PSJPYmplY3QiJiZtLmNvbnN0cnVjdG9yJiYobz1tLmNvbnN0cnVjdG9yLm5hbWUpLG89PT0iTWFwInx8bz09PSJTZXQiP0FycmF5LmZyb20obSk6bz09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChvKT9NZShtLGMpOnZvaWQgMH19ZnVuY3Rpb24geHMoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24ga3MobSl7cmV0dXJuIGRzKG0pfHxocyhtKXx8d3MobSl8fHhzKCl9ZnVuY3Rpb24gRmUobSxjKXt2YXIgbz1PYmplY3Qua2V5cyhtKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG0pO2MmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sYSkuZW51bWVyYWJsZX0pKSxvLnB1c2guYXBwbHkobyxpKX1yZXR1cm4gb31mdW5jdGlvbiB6ZShtKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgbz1hcmd1bWVudHNbY10hPW51bGw/YXJndW1lbnRzW2NdOnt9O2MlMj9GZShPYmplY3QobyksITApLmZvckVhY2goZnVuY3Rpb24oaSl7Y2UobSxpLG9baV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6RmUoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShtLGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGkpKX0pfXJldHVybiBtfXZhciBncz17dHlwZToibG9nZ2VyIixsb2c6ZnVuY3Rpb24oYyl7dGhpcy5vdXRwdXQoImxvZyIsYyl9LHdhcm46ZnVuY3Rpb24oYyl7dGhpcy5vdXRwdXQoIndhcm4iLGMpfSxlcnJvcjpmdW5jdGlvbihjKXt0aGlzLm91dHB1dCgiZXJyb3IiLGMpfSxvdXRwdXQ6ZnVuY3Rpb24oYyxvKXtjb25zb2xlJiZjb25zb2xlW2NdJiZjb25zb2xlW2NdLmFwcGx5KGNvbnNvbGUsbyl9fSx2cz1mdW5jdGlvbigpe2Z1bmN0aW9uIG0oYyl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O1godGhpcyxtKSx0aGlzLmluaXQoYyxvKX1yZXR1cm4gWihtLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307dGhpcy5wcmVmaXg9aS5wcmVmaXh8fCJpMThuZXh0OiIsdGhpcy5sb2dnZXI9b3x8Z3MsdGhpcy5vcHRpb25zPWksdGhpcy5kZWJ1Zz1pLmRlYnVnfX0se2tleToic2V0RGVidWciLHZhbHVlOmZ1bmN0aW9uKG8pe3RoaXMuZGVidWc9b319LHtrZXk6ImxvZyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksImxvZyIsIiIsITApfX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksIndhcm4iLCIiLCEwKX19LHtrZXk6ImVycm9yIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG8pLGE9MDthPG87YSsrKWlbYV09YXJndW1lbnRzW2FdO3JldHVybiB0aGlzLmZvcndhcmQoaSwiZXJyb3IiLCIiKX19LHtrZXk6ImRlcHJlY2F0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gdGhpcy5mb3J3YXJkKGksIndhcm4iLCJXQVJOSU5HIERFUFJFQ0FURUQ6ICIsITApfX0se2tleToiZm9yd2FyZCIsdmFsdWU6ZnVuY3Rpb24obyxpLGEscyl7cmV0dXJuIHMmJiF0aGlzLmRlYnVnP251bGw6KHR5cGVvZiBvWzBdPT0ic3RyaW5nIiYmKG9bMF09IiIuY29uY2F0KGEpLmNvbmNhdCh0aGlzLnByZWZpeCwiICIpLmNvbmNhdChvWzBdKSksdGhpcy5sb2dnZXJbaV0obykpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbihvKXtyZXR1cm4gbmV3IG0odGhpcy5sb2dnZXIsemUoemUoe30se3ByZWZpeDoiIi5jb25jYXQodGhpcy5wcmVmaXgsIjoiKS5jb25jYXQobywiOiIpfSksdGhpcy5vcHRpb25zKSl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24obyl7cmV0dXJuIG89b3x8dGhpcy5vcHRpb25zLG8ucHJlZml4PW8ucHJlZml4fHx0aGlzLnByZWZpeCxuZXcgbSh0aGlzLmxvZ2dlcixvKX19XSksbX0oKSxzZT1uZXcgdnMscGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKCl7WCh0aGlzLG0pLHRoaXMub2JzZXJ2ZXJzPXt9fXJldHVybi
14BaKG0sW3trZXk6Im9uIix2YWx1ZTpmdW5jdGlvbihvLGkpe3ZhciBhPXRoaXM7cmV0dXJuIG8uc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe2Eub2JzZXJ2ZXJzW3NdPWEub2JzZXJ2ZXJzW3NdfHxbXSxhLm9ic2VydmVyc1tzXS5wdXNoKGkpfSksdGhpc319LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24obyxpKXtpZih0aGlzLm9ic2VydmVyc1tvXSl7aWYoIWkpe2RlbGV0ZSB0aGlzLm9ic2VydmVyc1tvXTtyZXR1cm59dGhpcy5vYnNlcnZlcnNbb109dGhpcy5vYnNlcnZlcnNbb10uZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhIT09aX0pfX19LHtrZXk6ImVtaXQiLHZhbHVlOmZ1bmN0aW9uKG8pe2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGk+MT9pLTE6MCkscz0xO3M8aTtzKyspYVtzLTFdPWFyZ3VtZW50c1tzXTtpZih0aGlzLm9ic2VydmVyc1tvXSl7dmFyIHI9W10uY29uY2F0KHRoaXMub2JzZXJ2ZXJzW29dKTtyLmZvckVhY2goZnVuY3Rpb24oZil7Zi5hcHBseSh2b2lkIDAsYSl9KX1pZih0aGlzLm9ic2VydmVyc1siKiJdKXt2YXIgdT1bXS5jb25jYXQodGhpcy5vYnNlcnZlcnNbIioiXSk7dS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuYXBwbHkoZixbb10uY29uY2F0KGEpKX0pfX19XSksbX0oKTtmdW5jdGlvbiB3ZSgpe3ZhciBtLGMsbz1uZXcgUHJvbWlzZShmdW5jdGlvbihpLGEpe209aSxjPWF9KTtyZXR1cm4gby5yZXNvbHZlPW0sby5yZWplY3Q9YyxvfWZ1bmN0aW9uIEJlKG0pe3JldHVybiBtPT1udWxsPyIiOiIiK219ZnVuY3Rpb24gQXMobSxjLG8pe20uZm9yRWFjaChmdW5jdGlvbihpKXtjW2ldJiYob1tpXT1jW2ldKX0pfWZ1bmN0aW9uIE5lKG0sYyxvKXtmdW5jdGlvbiBpKHUpe3JldHVybiB1JiZ1LmluZGV4T2YoIiMjIyIpPi0xP3UucmVwbGFjZSgvIyMjL2csIi4iKTp1fWZ1bmN0aW9uIGEoKXtyZXR1cm4hbXx8dHlwZW9mIG09PSJzdHJpbmcifWZvcih2YXIgcz10eXBlb2YgYyE9InN0cmluZyI/W10uY29uY2F0KGMpOmMuc3BsaXQoIi4iKTtzLmxlbmd0aD4xOyl7aWYoYSgpKXJldHVybnt9O3ZhciByPWkocy5zaGlmdCgpKTshbVtyXSYmbyYmKG1bcl09bmV3IG8pLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtLHIpP209bVtyXTptPXt9fXJldHVybiBhKCk/e306e29iajptLGs6aShzLnNoaWZ0KCkpfX1mdW5jdGlvbiBWZShtLGMsbyl7dmFyIGk9TmUobSxjLE9iamVjdCksYT1pLm9iaixzPWkuazthW3NdPW99ZnVuY3Rpb24gU3MobSxjLG8saSl7dmFyIGE9TmUobSxjLE9iamVjdCkscz1hLm9iaixyPWEuaztzW3JdPXNbcl18fFtdLHNbcl0ucHVzaChvKX1mdW5jdGlvbiBrZShtLGMpe3ZhciBvPU5lKG0sYyksaT1vLm9iaixhPW8uaztpZihpKXJldHVybiBpW2FdfWZ1bmN0aW9uIEhlKG0sYyxvKXt2YXIgaT1rZShtLG8pO3JldHVybiBpIT09dm9pZCAwP2k6a2UoYyxvKX1mdW5jdGlvbiBHZShtLGMsbyl7Zm9yKHZhciBpIGluIGMpaSE9PSJfX3Byb3RvX18iJiZpIT09ImNvbnN0cnVjdG9yIiYmKGkgaW4gbT90eXBlb2YgbVtpXT09InN0cmluZyJ8fG1baV1pbnN0YW5jZW9mIFN0cmluZ3x8dHlwZW9mIGNbaV09PSJzdHJpbmcifHxjW2ldaW5zdGFuY2VvZiBTdHJpbmc/byYmKG1baV09Y1tpXSk6R2UobVtpXSxjW2ldLG8pOm1baV09Y1tpXSk7cmV0dXJuIG19ZnVuY3Rpb24geWUobSl7cmV0dXJuIG0ucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCJcXCQmIil9dmFyIE9zPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsiLCIvIjoiJiN4MkY7In07ZnVuY3Rpb24gRXMobSl7cmV0dXJuIHR5cGVvZiBtPT0ic3RyaW5nIj9tLnJlcGxhY2UoL1smPD4iJ1wvXS9nLGZ1bmN0aW9uKGMpe3JldHVybiBPc1tjXX0pOm19dmFyIGdlPXR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubmF2aWdhdG9yJiZ0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnREYXRhPiJ1IiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQmJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKT4tMSxOcz1bIiAiLCIsIiwiPyIsIiEiLCI7Il07ZnVuY3Rpb24gVHMobSxjLG8pe2M9Y3x8IiIsbz1vfHwiIjt2YXIgaT1Ocy5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIGMuaW5kZXhPZih1KTwwJiZvLmluZGV4T2YodSk8MH0pO2lmKGkubGVuZ3RoPT09MClyZXR1cm4hMDt2YXIgYT1uZXcgUmVnRXhwKCIoIi5jb25jYXQoaS5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHU9PT0iPyI/IlxcPyI6dX0pLmpvaW4oInwiKSwiKSIpKSxzPSFhLnRlc3QobSk7aWYoIXMpe3ZhciByPW0uaW5kZXhPZihvKTtyPjAmJiFhLnRlc3QobS5zdWJzdHJpbmcoMCxyKSkmJihzPSEwKX1yZXR1cm4gc31mdW5jdGlvbiBLZShtLGMpe3ZhciBvPU9iamVjdC5rZXlzKG0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobSk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSxhKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIHZlKG0pe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP0tlKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtjZShtLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhtLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTpLZShPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG0saSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIG19ZnVuY3Rpb24gQ3MobSl7dmFyIGM9UnMoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lZShtKSxhO2lmKGMpe3ZhciBzPWVlKHRoaXMpLmNvbnN0cnVjdG9yO2E9UmVmbGVjdC5jb25zdHJ1Y3QoaSxhcmd1bWVudHMscyl9ZWxzZSBhPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBoZSh0aGlzLGEpfX1mdW5jdGlvbiBScygpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBXZShtLGMpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXToiLiI7aWYobSl7aWYobVtjXSlyZXR1cm4gbVtjXTtmb3IodmFyIGk9Yy5zcGxpdChvKSxhPW0scz0wO3M8aS5sZW5ndGg7KytzKXtpZighYXx8dHlwZW9mIGFbaVtzXV09PSJzdHJpbmciJiZzKzE8aS5sZW5ndGgpcmV0dXJuO2lmKGFbaVtzXV09PT12b2lkIDApe2Zvcih2YXIgcj0yLHU9aS5zbGljZShzLHMrcikuam9pbihvKSxmPWFbdV07Zj09PXZvaWQgMCYmaS5sZW5ndGg+cytyOylyKyssdT1pLnNsaWNlKHMscytyKS5qb2luKG8pLGY9YVt1XTtpZihmPT09dm9pZCAwKXJldHVybjtpZihmPT09bnVsbClyZXR1cm4gbnVsbDtpZihjLmVuZHNXaXRoKHUpKXtpZih0eXBlb2YgZj09InN0cmluZyIpcmV0dXJuIGY7aWYodSYmdHlwZW9mIGZbdV09PSJzdHJpbmciKXJldHVybi
14BmW3VdfXZhciBkPWkuc2xpY2UocytyKS5qb2luKG8pO3JldHVybiBkP1dlKGYsZCxvKTp2b2lkIDB9YT1hW2lbc11dfXJldHVybiBhfX12YXIgTHM9ZnVuY3Rpb24obSl7eGUobyxtKTt2YXIgYz1DcyhvKTtmdW5jdGlvbiBvKGkpe3ZhciBhLHM9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntuczpbInRyYW5zbGF0aW9uIl0sZGVmYXVsdE5TOiJ0cmFuc2xhdGlvbiJ9O3JldHVybiBYKHRoaXMsbyksYT1jLmNhbGwodGhpcyksZ2UmJnBlLmNhbGwoaWUoYSkpLGEuZGF0YT1pfHx7fSxhLm9wdGlvbnM9cyxhLm9wdGlvbnMua2V5U2VwYXJhdG9yPT09dm9pZCAwJiYoYS5vcHRpb25zLmtleVNlcGFyYXRvcj0iLiIpLGEub3B0aW9ucy5pZ25vcmVKU09OU3RydWN0dXJlPT09dm9pZCAwJiYoYS5vcHRpb25zLmlnbm9yZUpTT05TdHJ1Y3R1cmU9ITApLGF9cmV0dXJuIFoobyxbe2tleToiYWRkTmFtZXNwYWNlcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zLm5zLmluZGV4T2YoYSk8MCYmdGhpcy5vcHRpb25zLm5zLnB1c2goYSl9fSx7a2V5OiJyZW1vdmVOYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgcz10aGlzLm9wdGlvbnMubnMuaW5kZXhPZihhKTtzPi0xJiZ0aGlzLm9wdGlvbnMubnMuc3BsaWNlKHMsMSl9fSx7a2V5OiJnZXRSZXNvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oYSxzLHIpe3ZhciB1PWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTp7fSxmPXUua2V5U2VwYXJhdG9yIT09dm9pZCAwP3Uua2V5U2VwYXJhdG9yOnRoaXMub3B0aW9ucy5rZXlTZXBhcmF0b3IsZD11Lmlnbm9yZUpTT05TdHJ1Y3R1cmUhPT12b2lkIDA/dS5pZ25vcmVKU09OU3RydWN0dXJlOnRoaXMub3B0aW9ucy5pZ25vcmVKU09OU3RydWN0dXJlLHQ9W2Esc107ciYmdHlwZW9mIHIhPSJzdHJpbmciJiYodD10LmNvbmNhdChyKSksciYmdHlwZW9mIHI9PSJzdHJpbmciJiYodD10LmNvbmNhdChmP3Iuc3BsaXQoZik6cikpLGEuaW5kZXhPZigiLiIpPi0xJiYodD1hLnNwbGl0KCIuIikpO3ZhciAkPWtlKHRoaXMuZGF0YSx0KTtyZXR1cm4gJHx8IWR8fHR5cGVvZiByIT0ic3RyaW5nIj8kOldlKHRoaXMuZGF0YSYmdGhpcy5kYXRhW2FdJiZ0aGlzLmRhdGFbYV1bc10scixmKX19LHtrZXk6ImFkZFJlc291cmNlIix2YWx1ZTpmdW5jdGlvbihhLHMscix1KXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06e3NpbGVudDohMX0sZD10aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yO2Q9PT12b2lkIDAmJihkPSIuIik7dmFyIHQ9W2Esc107ciYmKHQ9dC5jb25jYXQoZD9yLnNwbGl0KGQpOnIpKSxhLmluZGV4T2YoIi4iKT4tMSYmKHQ9YS5zcGxpdCgiLiIpLHU9cyxzPXRbMV0pLHRoaXMuYWRkTmFtZXNwYWNlcyhzKSxWZSh0aGlzLmRhdGEsdCx1KSxmLnNpbGVudHx8dGhpcy5lbWl0KCJhZGRlZCIsYSxzLHIsdSl9fSx7a2V5OiJhZGRSZXNvdXJjZXMiLHZhbHVlOmZ1bmN0aW9uKGEscyxyKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e3NpbGVudDohMX07Zm9yKHZhciBmIGluIHIpKHR5cGVvZiByW2ZdPT0ic3RyaW5nInx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyW2ZdKT09PSJbb2JqZWN0IEFycmF5XSIpJiZ0aGlzLmFkZFJlc291cmNlKGEscyxmLHJbZl0se3NpbGVudDohMH0pO3Uuc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixhLHMscil9fSx7a2V5OiJhZGRSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oYSxzLHIsdSxmKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06e3NpbGVudDohMX0sdD1bYSxzXTthLmluZGV4T2YoIi4iKT4tMSYmKHQ9YS5zcGxpdCgiLiIpLHU9cixyPXMscz10WzFdKSx0aGlzLmFkZE5hbWVzcGFjZXMocyk7dmFyICQ9a2UodGhpcy5kYXRhLHQpfHx7fTt1P0dlKCQscixmKTokPXZlKHZlKHt9LCQpLHIpLFZlKHRoaXMuZGF0YSx0LCQpLGQuc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixhLHMscil9fSx7a2V5OiJyZW1vdmVSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oYSxzKXt0aGlzLmhhc1Jlc291cmNlQnVuZGxlKGEscykmJmRlbGV0ZSB0aGlzLmRhdGFbYV1bc10sdGhpcy5yZW1vdmVOYW1lc3BhY2VzKHMpLHRoaXMuZW1pdCgicmVtb3ZlZCIsYSxzKX19LHtrZXk6Imhhc1Jlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihhLHMpe3JldHVybiB0aGlzLmdldFJlc291cmNlKGEscykhPT12b2lkIDB9fSx7a2V5OiJnZXRSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oYSxzKXtyZXR1cm4gc3x8KHM9dGhpcy5vcHRpb25zLmRlZmF1bHROUyksdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEk9PT0idjEiP3ZlKHZlKHt9LHt9KSx0aGlzLmdldFJlc291cmNlKGEscykpOnRoaXMuZ2V0UmVzb3VyY2UoYSxzKX19LHtrZXk6ImdldERhdGFCeUxhbmd1YWdlIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhW2FdfX0se2tleToiaGFzTGFuZ3VhZ2VTb21lVHJhbnNsYXRpb25zIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgcz10aGlzLmdldERhdGFCeUxhbmd1YWdlKGEpLHI9cyYmT2JqZWN0LmtleXMocyl8fFtdO3JldHVybiEhci5maW5kKGZ1bmN0aW9uKHUpe3JldHVybiBzW3VdJiZPYmplY3Qua2V5cyhzW3VdKS5sZW5ndGg+MH0pfX0se2tleToidG9KU09OIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fV0pLG99KHBlKSxZZT17cHJvY2Vzc29yczp7fSxhZGRQb3N0UHJvY2Vzc29yOmZ1bmN0aW9uKGMpe3RoaXMucHJvY2Vzc29yc1tjLm5hbWVdPWN9LGhhbmRsZTpmdW5jdGlvbihjLG8saSxhLHMpe3ZhciByPXRoaXM7cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih1KXtyLnByb2Nlc3NvcnNbdV0mJihvPXIucHJvY2Vzc29yc1t1XS5wcm9jZXNzKG8saSxhLHMpKX0pLG99fTtmdW5jdGlvbiBKZShtLGMpe3ZhciBvPU9iamVjdC5rZXlzKG0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobSk
147YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSxhKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIFYobSl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIG89YXJndW1lbnRzW2NdIT1udWxsP2FyZ3VtZW50c1tjXTp7fTtjJTI/SmUoT2JqZWN0KG8pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2NlKG0saSxvW2ldKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOkplKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobSxpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxpKSl9KX1yZXR1cm4gbX1mdW5jdGlvbiBQcyhtKXt2YXIgYz1JcygpO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWVlKG0pLGE7aWYoYyl7dmFyIHM9ZWUodGhpcykuY29uc3RydWN0b3I7YT1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxzKX1lbHNlIGE9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGhlKHRoaXMsYSl9fWZ1bmN0aW9uIElzKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fXZhciBRZT17fSxYZT1mdW5jdGlvbihtKXt4ZShvLG0pO3ZhciBjPVBzKG8pO2Z1bmN0aW9uIG8oaSl7dmFyIGEscz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307cmV0dXJuIFgodGhpcyxvKSxhPWMuY2FsbCh0aGlzKSxnZSYmcGUuY2FsbChpZShhKSksQXMoWyJyZXNvdXJjZVN0b3JlIiwibGFuZ3VhZ2VVdGlscyIsInBsdXJhbFJlc29sdmVyIiwiaW50ZXJwb2xhdG9yIiwiYmFja2VuZENvbm5lY3RvciIsImkxOG5Gb3JtYXQiLCJ1dGlscyJdLGksaWUoYSkpLGEub3B0aW9ucz1zLGEub3B0aW9ucy5rZXlTZXBhcmF0b3I9PT12b2lkIDAmJihhLm9wdGlvbnMua2V5U2VwYXJhdG9yPSIuIiksYS5sb2dnZXI9c2UuY3JlYXRlKCJ0cmFuc2xhdG9yIiksYX1yZXR1cm4gWihvLFt7a2V5OiJjaGFuZ2VMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24oYSl7YSYmKHRoaXMubGFuZ3VhZ2U9YSl9fSx7a2V5OiJleGlzdHMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7aW50ZXJwb2xhdGlvbjp7fX07aWYoYT09bnVsbClyZXR1cm4hMTt2YXIgcj10aGlzLnJlc29sdmUoYSxzKTtyZXR1cm4gciYmci5yZXMhPT12b2lkIDB9fSx7a2V5OiJleHRyYWN0RnJvbUtleSIsdmFsdWU6ZnVuY3Rpb24oYSxzKXt2YXIgcj1zLm5zU2VwYXJhdG9yIT09dm9pZCAwP3MubnNTZXBhcmF0b3I6dGhpcy5vcHRpb25zLm5zU2VwYXJhdG9yO3I9PT12b2lkIDAmJihyPSI6Iik7dmFyIHU9cy5rZXlTZXBhcmF0b3IhPT12b2lkIDA/cy5rZXlTZXBhcmF0b3I6dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcixmPXMubnN8fHRoaXMub3B0aW9ucy5kZWZhdWx0TlN8fFtdLGQ9ciYmYS5pbmRleE9mKHIpPi0xLHQ9IXRoaXMub3B0aW9ucy51c2VyRGVmaW5lZEtleVNlcGFyYXRvciYmIXMua2V5U2VwYXJhdG9yJiYhdGhpcy5vcHRpb25zLnVzZXJEZWZpbmVkTnNTZXBhcmF0b3ImJiFzLm5zU2VwYXJhdG9yJiYhVHMoYSxyLHUpO2lmKGQmJiF0KXt2YXIgJD1hLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApO2lmKCQmJiQubGVuZ3RoPjApcmV0dXJue2tleTphLG5hbWVzcGFjZXM6Zn07dmFyIF89YS5zcGxpdChyKTsociE9PXV8fHI9PT11JiZ0aGlzLm9wdGlvbnMubnMuaW5kZXhPZihfWzBdKT4tMSkmJihmPV8uc2hpZnQoKSksYT1fLmpvaW4odSl9cmV0dXJuIHR5cGVvZiBmPT0ic3RyaW5nIiYmKGY9W2ZdKSx7a2V5OmEsbmFtZXNwYWNlczpmfX19LHtrZXk6InRyYW5zbGF0ZSIsdmFsdWU6ZnVuY3Rpb24oYSxzLHIpe3ZhciB1PXRoaXM7aWYoSihzKSE9PSJvYmplY3QiJiZ0aGlzLm9wdGlvbnMub3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXImJihzPXRoaXMub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihhcmd1bWVudHMpKSxzfHwocz17fSksYT09bnVsbClyZXR1cm4iIjtBcnJheS5pc0FycmF5KGEpfHwoYT1bU3RyaW5nKGEpXSk7dmFyIGY9cy5yZXR1cm5EZXRhaWxzIT09dm9pZCAwP3MucmV0dXJuRGV0YWlsczp0aGlzLm9wdGlvbnMucmV0dXJuRGV0YWlscyxkPXMua2V5U2VwYXJhdG9yIT09dm9pZCAwP3Mua2V5U2VwYXJhdG9yOnRoaXMub3B0aW9ucy5rZXlTZXBhcmF0b3IsdD10aGlzLmV4dHJhY3RGcm9tS2V5KGFbYS5sZW5ndGgtMV0scyksJD10LmtleSxfPXQubmFtZXNwYWNlcyxsPV9bXy5sZW5ndGgtMV0sYj1zLmxuZ3x8dGhpcy5sYW5ndWFnZSxoPXMuYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGV8fHRoaXMub3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb0NJTW9kZTtpZihiJiZiLnRvTG93ZXJDYXNlKCk9PT0iY2ltb2RlIil7aWYoaCl7dmFyIHc9cy5uc1NlcGFyYXRvcnx8dGhpcy5vcHRpb25zLm5zU2VwYXJhdG9yO3JldHVybiBmPyh2LnJlcz0iIi5jb25jYXQobCkuY29uY2F0KHcpLmNvbmNhdCgkKSx2KToiIi5jb25jYXQobCkuY29uY2F0KHcpLmNvbmNhdCgkKX1yZXR1cm4gZj8odi5yZXM9JCx2KTokfXZhciB2PXRoaXMucmVzb2x2ZShhLHMpLEE9diYmdi5yZXMsTj12JiZ2LnVzZWRLZXl8fCQseD12JiZ2LmV4YWN0VXNlZEtleXx8JCxnPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoQSksRT1bIltvYmplY3QgTnVtYmVyXSIsIltvYmplY3QgRnVuY3Rpb25dIiwiW29iamVjdCBSZWdFeHBdIl0sQz1zLmpvaW5BcnJheXMhPT12b2lkIDA/cy5qb2luQXJyYXlzOnRoaXMub3B0aW9ucy5qb2luQXJyYXlzLHE9IXRoaXMuaTE4bkZvcm1hdHx8dGhpcy5pMThuRm9ybWF0LmhhbmRsZUFzT2JqZWN0LGU9dHlwZW9mIEEhPSJzdHJpbmciJiZ0eXBlb2YgQSE9ImJvb2xlYW4iJiZ0eXBlb2YgQSE9Im51bWJlciI7aWYocSYmQSYmZSYmRS5pbmRleE9mKGcpPDAmJiEodHlwZW9mIEM9PSJzdHJpbmciJiZnPT09IltvYmplY3QgQXJyYXldIikpe2lmKCFzLnJldHVybk9iamVjdHMmJiF0aGlzLm9wdGlvbnMucmV0dXJuT2JqZWN0cyl7dGhpcy5vcHRpb25zLnJldHVybmVkT2JqZWN0SGFuZGxlcnx8dGhpcy5sb2dnZXIud2FybigiYWNjZXNzaW5nIGFuIG9iamVjdCAtIGJ1dCByZXR1cm5PYmplY3RzIG9wdGlvbnMgaXMgbm90IGVuYWJsZWQhIik7dmFyIHA9dGhpcy5vcHRpb25zLnJldHVybmVkT2JqZWN0SGFuZGxlcj90aGlzLm9wdGlvbnMucmV0dXJuZWRPYmplY3RIYW5kbGVyKE4sQSxWKFYoe30scykse30se25zOl99KSk6ImtleSAnIi5jb25jYXQoJCwiICgiKS5jb25jYXQodGhpcy5sYW5ndWFnZSwiKScgcmV0dXJuZWQgYW4gb2JqZWN0IGluc3RlYWQgb2Ygc3RyaW5nLiIpO3JldHVybiBmPyh2LnJlcz1wLHYpOnB9aWYoZCl7dmFyIG49Zz09PSJbb2JqZWN0IEFycmF
145XSIseT1uP1tdOnt9LGs9bj94Ok47Zm9yKHZhciBPIGluIEEpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsTykpe3ZhciBSPSIiLmNvbmNhdChrKS5jb25jYXQoZCkuY29uY2F0KE8pO3lbT109dGhpcy50cmFuc2xhdGUoUixWKFYoe30scykse2pvaW5BcnJheXM6ITEsbnM6X30pKSx5W09dPT09UiYmKHlbT109QVtPXSl9QT15fX1lbHNlIGlmKHEmJnR5cGVvZiBDPT0ic3RyaW5nIiYmZz09PSJbb2JqZWN0IEFycmF5XSIpQT1BLmpvaW4oQyksQSYmKEE9dGhpcy5leHRlbmRUcmFuc2xhdGlvbihBLGEscyxyKSk7ZWxzZXt2YXIgTD0hMSxJPSExLEY9cy5jb3VudCE9PXZvaWQgMCYmdHlwZW9mIHMuY291bnQhPSJzdHJpbmciLFU9by5oYXNEZWZhdWx0VmFsdWUocyksaj1GP3RoaXMucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4KGIscy5jb3VudCxzKToiIix6PXNbImRlZmF1bHRWYWx1ZSIuY29uY2F0KGopXXx8cy5kZWZhdWx0VmFsdWU7IXRoaXMuaXNWYWxpZExvb2t1cChBKSYmVSYmKEw9ITAsQT16KSx0aGlzLmlzVmFsaWRMb29rdXAoQSl8fChJPSEwLEE9JCk7dmFyIGFlPXMubWlzc2luZ0tleU5vVmFsdWVGYWxsYmFja1RvS2V5fHx0aGlzLm9wdGlvbnMubWlzc2luZ0tleU5vVmFsdWVGYWxsYmFja1RvS2V5LG9lPWFlJiZJP3ZvaWQgMDpBLEs9VSYmeiE9PUEmJnRoaXMub3B0aW9ucy51cGRhdGVNaXNzaW5nO2lmKEl8fEx8fEspe2lmKHRoaXMubG9nZ2VyLmxvZyhLPyJ1cGRhdGVLZXkiOiJtaXNzaW5nS2V5IixiLGwsJCxLP3o6QSksZCl7dmFyIGxlPXRoaXMucmVzb2x2ZSgkLFYoVih7fSxzKSx7fSx7a2V5U2VwYXJhdG9yOiExfSkpO2xlJiZsZS5yZXMmJnRoaXMubG9nZ2VyLndhcm4oIlNlZW1zIHRoZSBsb2FkZWQgdHJhbnNsYXRpb25zIHdlcmUgaW4gZmxhdCBKU09OIGZvcm1hdCBpbnN0ZWFkIG9mIG5lc3RlZC4gRWl0aGVyIHNldCBrZXlTZXBhcmF0b3I6IGZhbHNlIG9uIGluaXQgb3IgbWFrZSBzdXJlIHlvdXIgdHJhbnNsYXRpb25zIGFyZSBwdWJsaXNoZWQgaW4gbmVzdGVkIGZvcm1hdC4iKX12YXIgQj1bXSxyZT10aGlzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcscy5sbmd8fHRoaXMubGFuZ3VhZ2UpO2lmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImZhbGxiYWNrIiYmcmUmJnJlWzBdKWZvcih2YXIgbmU9MDtuZTxyZS5sZW5ndGg7bmUrKylCLnB1c2gocmVbbmVdKTtlbHNlIHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvPT09ImFsbCI/Qj10aGlzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KHMubG5nfHx0aGlzLmxhbmd1YWdlKTpCLnB1c2gocy5sbmd8fHRoaXMubGFuZ3VhZ2UpO3ZhciB1ZT1mdW5jdGlvbihfZSxxZSxicyl7dmFyIHlzPVUmJmJzIT09QT9iczpvZTt1Lm9wdGlvbnMubWlzc2luZ0tleUhhbmRsZXI/dS5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyKF9lLGwscWUseXMsSyxzKTp1LmJhY2tlbmRDb25uZWN0b3ImJnUuYmFja2VuZENvbm5lY3Rvci5zYXZlTWlzc2luZyYmdS5iYWNrZW5kQ29ubmVjdG9yLnNhdmVNaXNzaW5nKF9lLGwscWUseXMsSyxzKSx1LmVtaXQoIm1pc3NpbmdLZXkiLF9lLGwscWUsQSl9O3RoaXMub3B0aW9ucy5zYXZlTWlzc2luZyYmKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1BsdXJhbHMmJkY/Qi5mb3JFYWNoKGZ1bmN0aW9uKCRlKXt1LnBsdXJhbFJlc29sdmVyLmdldFN1ZmZpeGVzKCRlLHMpLmZvckVhY2goZnVuY3Rpb24oX2Upe3VlKFskZV0sJCtfZSxzWyJkZWZhdWx0VmFsdWUiLmNvbmNhdChfZSldfHx6KX0pfSk6dWUoQiwkLHopKX1BPXRoaXMuZXh0ZW5kVHJhbnNsYXRpb24oQSxhLHMsdixyKSxJJiZBPT09JCYmdGhpcy5vcHRpb25zLmFwcGVuZE5hbWVzcGFjZVRvTWlzc2luZ0tleSYmKEE9IiIuY29uY2F0KGwsIjoiKS5jb25jYXQoJCkpLChJfHxMKSYmdGhpcy5vcHRpb25zLnBhcnNlTWlzc2luZ0tleUhhbmRsZXImJih0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUFQSSE9PSJ2MSI/QT10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcih0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5PyIiLmNvbmNhdChsLCI6IikuY29uY2F0KCQpOiQsTD9BOnZvaWQgMCk6QT10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcihBKSl9cmV0dXJuIGY/KHYucmVzPUEsdik6QX19LHtrZXk6ImV4dGVuZFRyYW5zbGF0aW9uIix2YWx1ZTpmdW5jdGlvbihhLHMscix1LGYpe3ZhciBkPXRoaXM7aWYodGhpcy5pMThuRm9ybWF0JiZ0aGlzLmkxOG5Gb3JtYXQucGFyc2UpYT10aGlzLmkxOG5Gb3JtYXQucGFyc2UoYSxWKFYoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyksciksdS51c2VkTG5nLHUudXNlZE5TLHUudXNlZEtleSx7cmVzb2x2ZWQ6dX0pO2Vsc2UgaWYoIXIuc2tpcEludGVycG9sYXRpb24pe3IuaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IuaW5pdChWKFYoe30scikse2ludGVycG9sYXRpb246VihWKHt9LHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uKSxyLmludGVycG9sYXRpb24pfSkpO3ZhciB0PXR5cGVvZiBhPT0ic3RyaW5nIiYmKHImJnIuaW50ZXJwb2xhdGlvbiYmci5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyE9PXZvaWQgMD9yLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzOnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyksJDtpZih0KXt2YXIgXz1hLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApOyQ9XyYmXy5sZW5ndGh9dmFyIGw9ci5yZXBsYWNlJiZ0eXBlb2Ygci5yZXBsYWNlIT0ic3RyaW5nIj9yLnJlcGxhY2U6cjtpZih0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5kZWZhdWx0VmFyaWFibGVzJiYobD1WKFYoe30sdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyksbCkpLGE9dGhpcy5pbnRlcnBvbGF0b3IuaW50ZXJwb2xhdGUoYSxsLHIubG5nfHx0aGlzLmxhbmd1YWdlLHIpLHQpe3ZhciBiPWEubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCksaD1iJiZiLmxlbmd0aDskPGgmJihyLm5lc3Q9ITEpfXIubmVzdCE9PSExJiYoYT10aGlzLmludGVycG9sYXRvci5uZXN0KGEsZnVuY3Rpb24oKXtmb3IodmFyIEE9YXJndW1lbnRzLmxlbmd0aCxOPW5ldyBBcnJheShBKSx4PTA7eDxBO3grKylOW3hdPWFyZ3VtZW50c1t4XTtyZXR1cm4gZiYmZlswXT09PU5bMF0mJiFyLmNvbnRleHQ/KGQubG9nZ2VyLndhcm4oIkl0IHNlZW1zIHlvdSBhcmUgbmVzdGluZyByZWN1cnNpdmVseSBrZXk6ICIuY29uY2F0KE5bMF0sIiBpbiBrZXk6ICIpLmNvbmNhdChzWzBdKSksbnVsbCk6ZC50cmFuc2xhdGUuYXBwbHkoZCxOLmNvbmNhdChbc10pKX0scikpLHIuaW50ZXJwb2xhdGlvbiYmdGhpcy5pbnRlcnBvbGF0b3IucmVzZXQoKX12YXIgdz1yLnBvc3RQcm9jZXNzfHx0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3Msdj10eXBlb2Ygdz09InN0cmluZyI/W3ddOnc7cmV0dXJuIGEhPW51bGwmJnYmJnYubGVuZ3RoJiZyLmFwcGx5UG9zdFByb2Nlc3NvciE9PSExJiYoYT1ZZS5oYW5kbGUo
14dixhLHMsdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMucG9zdFByb2Nlc3NQYXNzUmVzb2x2ZWQ/Vih7aTE4blJlc29sdmVkOnV9LHIpOnIsdGhpcykpLGF9fSx7a2V5OiJyZXNvbHZlIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgcz10aGlzLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHUsZixkLHQsJDtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciJiYoYT1bYV0pLGEuZm9yRWFjaChmdW5jdGlvbihfKXtpZighcy5pc1ZhbGlkTG9va3VwKHUpKXt2YXIgbD1zLmV4dHJhY3RGcm9tS2V5KF8sciksYj1sLmtleTtmPWI7dmFyIGg9bC5uYW1lc3BhY2VzO3Mub3B0aW9ucy5mYWxsYmFja05TJiYoaD1oLmNvbmNhdChzLm9wdGlvbnMuZmFsbGJhY2tOUykpO3ZhciB3PXIuY291bnQhPT12b2lkIDAmJnR5cGVvZiByLmNvdW50IT0ic3RyaW5nIix2PXcmJiFyLm9yZGluYWwmJnIuY291bnQ9PT0wJiZzLnBsdXJhbFJlc29sdmVyLnNob3VsZFVzZUludGxBcGkoKSxBPXIuY29udGV4dCE9PXZvaWQgMCYmKHR5cGVvZiByLmNvbnRleHQ9PSJzdHJpbmcifHx0eXBlb2Ygci5jb250ZXh0PT0ibnVtYmVyIikmJnIuY29udGV4dCE9PSIiLE49ci5sbmdzP3IubG5nczpzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KHIubG5nfHxzLmxhbmd1YWdlLHIuZmFsbGJhY2tMbmcpO2guZm9yRWFjaChmdW5jdGlvbih4KXtzLmlzVmFsaWRMb29rdXAodSl8fCgkPXgsIVFlWyIiLmNvbmNhdChOWzBdLCItIikuY29uY2F0KHgpXSYmcy51dGlscyYmcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UmJiFzLnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZSgkKSYmKFFlWyIiLmNvbmNhdChOWzBdLCItIikuY29uY2F0KHgpXT0hMCxzLmxvZ2dlci53YXJuKCdrZXkgIicuY29uY2F0KGYsJyIgZm9yIGxhbmd1YWdlcyAiJykuY29uY2F0KE4uam9pbigiLCAiKSxgIiB3b24ndCBnZXQgcmVzb2x2ZWQgYXMgbmFtZXNwYWNlICJgKS5jb25jYXQoJCwnIiB3YXMgbm90IHlldCBsb2FkZWQnKSwiVGhpcyBtZWFucyBzb21ldGhpbmcgSVMgV1JPTkcgaW4geW91ciBzZXR1cC4gWW91IGFjY2VzcyB0aGUgdCBmdW5jdGlvbiBiZWZvcmUgaTE4bmV4dC5pbml0IC8gaTE4bmV4dC5sb2FkTmFtZXNwYWNlIC8gaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSB3YXMgZG9uZS4gV2FpdCBmb3IgdGhlIGNhbGxiYWNrIG9yIFByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgYWNjZXNzaW5nIGl0ISEhIikpLE4uZm9yRWFjaChmdW5jdGlvbihnKXtpZighcy5pc1ZhbGlkTG9va3VwKHUpKXt0PWc7dmFyIEU9W2JdO2lmKHMuaTE4bkZvcm1hdCYmcy5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMpcy5pMThuRm9ybWF0LmFkZExvb2t1cEtleXMoRSxiLGcseCxyKTtlbHNle3ZhciBDO3cmJihDPXMucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4KGcsci5jb3VudCxyKSk7dmFyIHE9IiIuY29uY2F0KHMub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsInplcm8iKTtpZih3JiYoRS5wdXNoKGIrQyksdiYmRS5wdXNoKGIrcSkpLEEpe3ZhciBlPSIiLmNvbmNhdChiKS5jb25jYXQocy5vcHRpb25zLmNvbnRleHRTZXBhcmF0b3IpLmNvbmNhdChyLmNvbnRleHQpO0UucHVzaChlKSx3JiYoRS5wdXNoKGUrQyksdiYmRS5wdXNoKGUrcSkpfX1mb3IodmFyIHA7cD1FLnBvcCgpOylzLmlzVmFsaWRMb29rdXAodSl8fChkPXAsdT1zLmdldFJlc291cmNlKGcseCxwLHIpKX19KSl9KX19KSx7cmVzOnUsdXNlZEtleTpmLGV4YWN0VXNlZEtleTpkLHVzZWRMbmc6dCx1c2VkTlM6JH19fSx7a2V5OiJpc1ZhbGlkTG9va3VwIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gYSE9PXZvaWQgMCYmISghdGhpcy5vcHRpb25zLnJldHVybk51bGwmJmE9PT1udWxsKSYmISghdGhpcy5vcHRpb25zLnJldHVybkVtcHR5U3RyaW5nJiZhPT09IiIpfX0se2tleToiZ2V0UmVzb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGEscyxyKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e307cmV0dXJuIHRoaXMuaTE4bkZvcm1hdCYmdGhpcy5pMThuRm9ybWF0LmdldFJlc291cmNlP3RoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZShhLHMscix1KTp0aGlzLnJlc291cmNlU3RvcmUuZ2V0UmVzb3VyY2UoYSxzLHIsdSl9fV0sW3trZXk6Imhhc0RlZmF1bHRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIHM9ImRlZmF1bHRWYWx1ZSI7Zm9yKHZhciByIGluIGEpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEscikmJnM9PT1yLnN1YnN0cmluZygwLHMubGVuZ3RoKSYmYVtyXSE9PXZvaWQgMClyZXR1cm4hMDtyZXR1cm4hMX19XSksb30ocGUpO2Z1bmN0aW9uIFRlKG0pe3JldHVybiBtLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK20uc2xpY2UoMSl9dmFyIGpzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShjKXtYKHRoaXMsbSksdGhpcy5vcHRpb25zPWMsdGhpcy5zdXBwb3J0ZWRMbmdzPXRoaXMub3B0aW9ucy5zdXBwb3J0ZWRMbmdzfHwhMSx0aGlzLmxvZ2dlcj1zZS5jcmVhdGUoImxhbmd1YWdlVXRpbHMiKX1yZXR1cm4gWihtLFt7a2V5OiJnZXRTY3JpcHRQYXJ0RnJvbUNvZGUiLHZhbHVlOmZ1bmN0aW9uKG8pe2lmKCFvfHxvLmluZGV4T2YoIi0iKTwwKXJldHVybiBudWxsO3ZhciBpPW8uc3BsaXQoIi0iKTtyZXR1cm4gaS5sZW5ndGg9PT0yfHwoaS5wb3AoKSxpW2kubGVuZ3RoLTFdLnRvTG93ZXJDYXNlKCk9PT0ieCIpP251bGw6dGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUoaS5qb2luKCItIikpfX0se2tleToiZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUiLHZhbHVlOmZ1bmN0aW9uKG8pe2lmKCFvfHxvLmluZGV4T2YoIi0iKTwwKXJldHVybiBvO3ZhciBpPW8uc3BsaXQoIi0iKTtyZXR1cm4gdGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUoaVswXSl9fSx7a2V5OiJmb3JtYXRMYW5ndWFnZUNvZGUiLHZhbHVlOmZ1bmN0aW9uKG8pe2lmKHR5cGVvZiBvPT0ic3RyaW5nIiYmby5pbmRleE9mKCItIik+LTEpe3ZhciBpPVsiaGFucyIsImhhbnQiLCJsYXRuIiwiY3lybCIsImNhbnMiLCJtb25nIiwiYXJhYiJdLGE9by5zcGxpdCgiLSIpO3JldHVybiB0aGlzLm9wdGlvbnMubG93ZXJDYXNlTG5nP2E9YS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHMudG9Mb3dlckNhc2UoKX0pOmEubGVuZ3RoPT09Mj8oYVswXT1hWzBdLnRvTG93ZXJDYXNlKCksYVsxXT1hWzFdLnRvVXBwZXJDYXNlKCksaS5pbmRleE9mKGFbMV0udG9Mb3dlckNhc2UoKSk+LTEmJihhWzFdPVRlKGFbMV0udG9Mb3dlckNhc2UoKSkpKTphLmxlbmd0aD09PTMmJihhWzBdPWFbMF0udG9Mb3dlckNhc2UoKSxhWzFdLmxlbmd0aD09PTImJihhWzFdPWFbMV0udG9VcHBlckNhc2UoKSksYVswXSE9PSJzZ24iJiZhWzJdLmxlbmd0aD09PTImJihhWzJdPWFbMl0udG9VcHBlckNhc2UoKSksaS5pbmRleE9mKGFbMV0udG9Mb3dlckNhc2UoKSk+LTEmJihhWzFdPVRlKGFbMV0udG9Mb3dlckNhc2UoKSkpLGkuaW5kZXhPZihhWzJdLnRvTG93ZXJDYXNlKCkpPi0xJiYoYVsyXT1UZShhWzJdLnRvTG93ZXJDYXNlKCkpKSksYS5qb2luKCItIil9cmV0dXJuIHRoaXMub3B0aW9ucy5jbGVhbkNvZGV8fHRoaXMub3B0aW9ucy5sb3dlckNhc2VMbmc/by50b0xvd2VyQ2FzZSgpOm99fSx7a2V5OiJpc1N1cHBvcnRlZENvZGUiLHZhbHVlOmZ1bmN0aW9uKG8pe3JldHVybih0aGlzLm9wdGlvbnMubG9hZD09PSJsYW5ndWFnZU9ubHkifHx0aGlzLm9wdGlvbnMubm9uRXhwbGljaXRTdXBwb3J0ZWRMbmdzKSYmKG89dGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShvKSksIXRoaXMuc3VwcG9ydGVkTG5nc3x8IXRoaXMuc3VwcG9ydGVkTG5ncy5sZW5ndGh8fHRoaXMuc3VwcG9ydGVkTG5ncy5pbmRleE9mKG8pPi0xfX0se2tleToiZ2V0QmVzdE1hdGNoRnJvbUNvZGVzIix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT10aGlzO2lmKCFvKXJldHVybi
14BudWxsO3ZhciBhO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24ocyl7aWYoIWEpe3ZhciByPWkuZm9ybWF0TGFuZ3VhZ2VDb2RlKHMpOyghaS5vcHRpb25zLnN1cHBvcnRlZExuZ3N8fGkuaXNTdXBwb3J0ZWRDb2RlKHIpKSYmKGE9cil9fSksIWEmJnRoaXMub3B0aW9ucy5zdXBwb3J0ZWRMbmdzJiZvLmZvckVhY2goZnVuY3Rpb24ocyl7aWYoIWEpe3ZhciByPWkuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUocyk7aWYoaS5pc1N1cHBvcnRlZENvZGUocikpcmV0dXJuIGE9cjthPWkub3B0aW9ucy5zdXBwb3J0ZWRMbmdzLmZpbmQoZnVuY3Rpb24odSl7aWYodS5pbmRleE9mKHIpPT09MClyZXR1cm4gdX0pfX0pLGF8fChhPXRoaXMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpWzBdKSxhfX0se2tleToiZ2V0RmFsbGJhY2tDb2RlcyIsdmFsdWU6ZnVuY3Rpb24obyxpKXtpZighbylyZXR1cm5bXTtpZih0eXBlb2Ygbz09ImZ1bmN0aW9uIiYmKG89byhpKSksdHlwZW9mIG89PSJzdHJpbmciJiYobz1bb10pLE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkobyk9PT0iW29iamVjdCBBcnJheV0iKXJldHVybiBvO2lmKCFpKXJldHVybiBvLmRlZmF1bHR8fFtdO3ZhciBhPW9baV07cmV0dXJuIGF8fChhPW9bdGhpcy5nZXRTY3JpcHRQYXJ0RnJvbUNvZGUoaSldKSxhfHwoYT1vW3RoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKGkpXSksYXx8KGE9b1t0aGlzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKGkpXSksYXx8KGE9by5kZWZhdWx0KSxhfHxbXX19LHtrZXk6InRvUmVzb2x2ZUhpZXJhcmNoeSIsdmFsdWU6ZnVuY3Rpb24obyxpKXt2YXIgYT10aGlzLHM9dGhpcy5nZXRGYWxsYmFja0NvZGVzKGl8fHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZ3x8W10sbykscj1bXSx1PWZ1bmN0aW9uKGQpe2QmJihhLmlzU3VwcG9ydGVkQ29kZShkKT9yLnB1c2goZCk6YS5sb2dnZXIud2FybigicmVqZWN0aW5nIGxhbmd1YWdlIGNvZGUgbm90IGZvdW5kIGluIHN1cHBvcnRlZExuZ3M6ICIuY29uY2F0KGQpKSl9O3JldHVybiB0eXBlb2Ygbz09InN0cmluZyImJm8uaW5kZXhPZigiLSIpPi0xPyh0aGlzLm9wdGlvbnMubG9hZCE9PSJsYW5ndWFnZU9ubHkiJiZ1KHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKG8pKSx0aGlzLm9wdGlvbnMubG9hZCE9PSJsYW5ndWFnZU9ubHkiJiZ0aGlzLm9wdGlvbnMubG9hZCE9PSJjdXJyZW50T25seSImJnUodGhpcy5nZXRTY3JpcHRQYXJ0RnJvbUNvZGUobykpLHRoaXMub3B0aW9ucy5sb2FkIT09ImN1cnJlbnRPbmx5IiYmdSh0aGlzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKG8pKSk6dHlwZW9mIG89PSJzdHJpbmciJiZ1KHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKG8pKSxzLmZvckVhY2goZnVuY3Rpb24oZil7ci5pbmRleE9mKGYpPDAmJnUoYS5mb3JtYXRMYW5ndWFnZUNvZGUoZikpfSkscn19XSksbX0oKSxxcz1be2xuZ3M6WyJhY2giLCJhayIsImFtIiwiYXJuIiwiYnIiLCJmaWwiLCJndW4iLCJsbiIsIm1mZSIsIm1nIiwibWkiLCJvYyIsInB0IiwicHQtQlIiLCJ0ZyIsInRsIiwidGkiLCJ0ciIsInV6Iiwid2EiXSxucjpbMSwyXSxmYzoxfSx7bG5nczpbImFmIiwiYW4iLCJhc3QiLCJheiIsImJnIiwiYm4iLCJjYSIsImRhIiwiZGUiLCJkZXYiLCJlbCIsImVuIiwiZW8iLCJlcyIsImV0IiwiZXUiLCJmaSIsImZvIiwiZnVyIiwiZnkiLCJnbCIsImd1IiwiaGEiLCJoaSIsImh1IiwiaHkiLCJpYSIsIml0Iiwia2siLCJrbiIsImt1IiwibGIiLCJtYWkiLCJtbCIsIm1uIiwibXIiLCJuYWgiLCJuYXAiLCJuYiIsIm5lIiwibmwiLCJubiIsIm5vIiwibnNvIiwicGEiLCJwYXAiLCJwbXMiLCJwcyIsInB0LVBUIiwicm0iLCJzY28iLCJzZSIsInNpIiwic28iLCJzb24iLCJzcSIsInN2Iiwic3ciLCJ0YSIsInRlIiwidGsiLCJ1ciIsInlvIl0sbnI6WzEsMl0sZmM6Mn0se2xuZ3M6WyJheSIsImJvIiwiY2dnIiwiZmEiLCJodCIsImlkIiwiamEiLCJqYm8iLCJrYSIsImttIiwia28iLCJreSIsImxvIiwibXMiLCJzYWgiLCJzdSIsInRoIiwidHQiLCJ1ZyIsInZpIiwid28iLCJ6aCJdLG5yOlsxXSxmYzozfSx7bG5nczpbImJlIiwiYnMiLCJjbnIiLCJkeiIsImhyIiwicnUiLCJzciIsInVrIl0sbnI6WzEsMiw1XSxmYzo0fSx7bG5nczpbImFyIl0sbnI6WzAsMSwyLDMsMTEsMTAwXSxmYzo1fSx7bG5nczpbImNzIiwic2siXSxucjpbMSwyLDVdLGZjOjZ9LHtsbmdzOlsiY3NiIiwicGwiXSxucjpbMSwyLDVdLGZjOjd9LHtsbmdzOlsiY3kiXSxucjpbMSwyLDMsOF0sZmM6OH0se2xuZ3M6WyJmciJdLG5yOlsxLDJdLGZjOjl9LHtsbmdzOlsiZ2EiXSxucjpbMSwyLDMsNywxMV0sZmM6MTB9LHtsbmdzOlsiZ2QiXSxucjpbMSwyLDMsMjBdLGZjOjExfSx7bG5nczpbImlzIl0sbnI6WzEsMl0sZmM6MTJ9LHtsbmdzOlsianYiXSxucjpbMCwxXSxmYzoxM30se2xuZ3M6WyJrdyJdLG5yOlsxLDIsMyw0XSxmYzoxNH0se2xuZ3M6WyJsdCJdLG5yOlsxLDIsMTBdLGZjOjE1fSx7bG5nczpbImx2Il0sbnI6WzEsMiwwXSxmYzoxNn0se2xuZ3M6WyJtayJdLG5yOlsxLDJdLGZjOjE3fSx7bG5nczpbIm1uayJdLG5yOlswLDEsMl0sZmM6MTh9LHtsbmdzOlsibXQiXSxucjpbMSwyLDExLDIwXSxmYzoxOX0se2xuZ3M6WyJvciJdLG5yOlsyLDFdLGZjOjJ9LHtsbmdzOlsicm8iXSxucjpbMSwyLDIwXSxmYzoyMH0se2xuZ3M6WyJzbCJdLG5yOls1LDEsMiwzXSxmYzoyMX0se2xuZ3M6WyJoZSIsIml3Il0sbnI6WzEsMiwyMCwyMV0sZmM6MjJ9XSxVcz17MTpmdW5jdGlvbihjKXtyZXR1cm4rKGM+MSl9LDI6ZnVuY3Rpb24oYyl7cmV0dXJuKyhjIT0xKX0sMzpmdW5jdGlvbihjKXtyZXR1cm4gMH0sNDpmdW5jdGlvbihjKXtyZXR1cm4gYyUxMD09MSYmYyUxMDAhPTExPzA6YyUxMD49MiYmYyUxMDw9NCYmKGMlMTAwPDEwfHxjJTEwMD49MjApPzE6Mn0sNTpmdW5jdGlvbihjKXtyZXR1cm4gYz09MD8wOmM9PTE/MTpjPT0yPzI6YyUxMDA+PTMmJmMlMTAwPD0xMD8zOmMlMTAwPj0xMT80OjV9LDY6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTE/MDpjPj0yJiZjPD00PzE6Mn0sNzpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmMlMTA+PTImJmMlMTA8PTQmJihjJTEwMDwxMHx8YyUxMDA+PTIwKT8xOjJ9LDg6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTE/MDpjPT0yPzE6YyE9OCYmYyE9MTE/MjozfSw5OmZ1bmN0aW9uKGMpe3JldHVybisoYz49Mil9LDEwOmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xPzA6Yz09Mj8xOmM8Nz8yOmM8MTE/Mzo0fSwxMTpmdW5jdGlvbihjKXtyZXR1cm4gYz09MXx8Yz09MTE/MDpjPT0yfHxjPT0xMj8xOmM+MiYmYzwyMD8yOjN9LDEyOmZ1bmN0aW9uKGMpe3JldHVybisoYyUxMCE9MXx8YyUxMDA9PTExKX0sMTM6ZnVuY3Rpb24oYyl7cmV0dXJuKyhjIT09MCl9LDE0OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xPzA6Yz09Mj8xOmM9PTM/MjozfSwxNTpmdW5jdGlvbihjKXtyZXR1cm4gYyUxMD09MSYmYyUxMDAhPTExPzA
146YyUxMD49MiYmKGMlMTAwPDEwfHxjJTEwMD49MjApPzE6Mn0sMTY6ZnVuY3Rpb24oYyl7cmV0dXJuIGMlMTA9PTEmJmMlMTAwIT0xMT8wOmMhPT0wPzE6Mn0sMTc6ZnVuY3Rpb24oYyl7cmV0dXJuIGM9PTF8fGMlMTA9PTEmJmMlMTAwIT0xMT8wOjF9LDE4OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0wPzA6Yz09MT8xOjJ9LDE5OmZ1bmN0aW9uKGMpe3JldHVybiBjPT0xPzA6Yz09MHx8YyUxMDA+MSYmYyUxMDA8MTE/MTpjJTEwMD4xMCYmYyUxMDA8MjA/MjozfSwyMDpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmM9PTB8fGMlMTAwPjAmJmMlMTAwPDIwPzE6Mn0sMjE6ZnVuY3Rpb24oYyl7cmV0dXJuIGMlMTAwPT0xPzE6YyUxMDA9PTI/MjpjJTEwMD09M3x8YyUxMDA9PTQ/MzowfSwyMjpmdW5jdGlvbihjKXtyZXR1cm4gYz09MT8wOmM9PTI/MTooYzwwfHxjPjEwKSYmYyUxMD09MD8yOjN9fSxEcz1bInYxIiwidjIiLCJ2MyJdLFplPXt6ZXJvOjAsb25lOjEsdHdvOjIsZmV3OjMsbWFueTo0LG90aGVyOjV9O2Z1bmN0aW9uIE1zKCl7dmFyIG09e307cmV0dXJuIHFzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5sbmdzLmZvckVhY2goZnVuY3Rpb24obyl7bVtvXT17bnVtYmVyczpjLm5yLHBsdXJhbHM6VXNbYy5mY119fSl9KSxtfXZhciBGcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG0oYyl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O1godGhpcyxtKSx0aGlzLmxhbmd1YWdlVXRpbHM9Yyx0aGlzLm9wdGlvbnM9byx0aGlzLmxvZ2dlcj1zZS5jcmVhdGUoInBsdXJhbFJlc29sdmVyIiksKCF0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT058fHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2NCIpJiYodHlwZW9mIEludGw+InUifHwhSW50bC5QbHVyYWxSdWxlcykmJih0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049InYzIix0aGlzLmxvZ2dlci5lcnJvcigiWW91ciBlbnZpcm9ubWVudCBzZWVtcyBub3QgdG8gYmUgSW50bCBBUEkgY29tcGF0aWJsZSwgdXNlIGFuIEludGwuUGx1cmFsUnVsZXMgcG9seWZpbGwuIFdpbGwgZmFsbGJhY2sgdG8gdGhlIGNvbXBhdGliaWxpdHlKU09OIHYzIGZvcm1hdCBoYW5kbGluZy4iKSksdGhpcy5ydWxlcz1NcygpfXJldHVybiBaKG0sW3trZXk6ImFkZFJ1bGUiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dGhpcy5ydWxlc1tvXT1pfX0se2tleToiZ2V0UnVsZSIsdmFsdWU6ZnVuY3Rpb24obyl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O2lmKHRoaXMuc2hvdWxkVXNlSW50bEFwaSgpKXRyeXtyZXR1cm4gbmV3IEludGwuUGx1cmFsUnVsZXMobyx7dHlwZTppLm9yZGluYWw/Im9yZGluYWwiOiJjYXJkaW5hbCJ9KX1jYXRjaHtyZXR1cm59cmV0dXJuIHRoaXMucnVsZXNbb118fHRoaXMucnVsZXNbdGhpcy5sYW5ndWFnZVV0aWxzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKG8pXX19LHtrZXk6Im5lZWRzUGx1cmFsIix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sYT10aGlzLmdldFJ1bGUobyxpKTtyZXR1cm4gdGhpcy5zaG91bGRVc2VJbnRsQXBpKCk/YSYmYS5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLmxlbmd0aD4xOmEmJmEubnVtYmVycy5sZW5ndGg+MX19LHtrZXk6ImdldFBsdXJhbEZvcm1zT2ZLZXkiLHZhbHVlOmZ1bmN0aW9uKG8saSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9O3JldHVybiB0aGlzLmdldFN1ZmZpeGVzKG8sYSkubWFwKGZ1bmN0aW9uKHMpe3JldHVybiIiLmNvbmNhdChpKS5jb25jYXQocyl9KX19LHtrZXk6ImdldFN1ZmZpeGVzIix2YWx1ZTpmdW5jdGlvbihvKXt2YXIgaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHM9dGhpcy5nZXRSdWxlKG8sYSk7cmV0dXJuIHM/dGhpcy5zaG91bGRVc2VJbnRsQXBpKCk/cy5yZXNvbHZlZE9wdGlvbnMoKS5wbHVyYWxDYXRlZ29yaWVzLnNvcnQoZnVuY3Rpb24ocix1KXtyZXR1cm4gWmVbcl0tWmVbdV19KS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIiIuY29uY2F0KGkub3B0aW9ucy5wcmVwZW5kKS5jb25jYXQocil9KTpzLm51bWJlcnMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBpLmdldFN1ZmZpeChvLHIsYSl9KTpbXX19LHtrZXk6ImdldFN1ZmZpeCIsdmFsdWU6ZnVuY3Rpb24obyxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30scz10aGlzLmdldFJ1bGUobyxhKTtyZXR1cm4gcz90aGlzLnNob3VsZFVzZUludGxBcGkoKT8iIi5jb25jYXQodGhpcy5vcHRpb25zLnByZXBlbmQpLmNvbmNhdChzLnNlbGVjdChpKSk6dGhpcy5nZXRTdWZmaXhSZXRyb0NvbXBhdGlibGUocyxpKToodGhpcy5sb2dnZXIud2Fybigibm8gcGx1cmFsIHJ1bGUgZm91bmQgZm9yOiAiLmNvbmNhdChvKSksIiIpfX0se2tleToiZ2V0U3VmZml4UmV0cm9Db21wYXRpYmxlIix2YWx1ZTpmdW5jdGlvbihvLGkpe3ZhciBhPXRoaXMscz1vLm5vQWJzP28ucGx1cmFscyhpKTpvLnBsdXJhbHMoTWF0aC5hYnMoaSkpLHI9by5udW1iZXJzW3NdO3RoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCYmby5udW1iZXJzLmxlbmd0aD09PTImJm8ubnVtYmVyc1swXT09PTEmJihyPT09Mj9yPSJwbHVyYWwiOnI9PT0xJiYocj0iIikpO3ZhciB1PWZ1bmN0aW9uKCl7cmV0dXJuIGEub3B0aW9ucy5wcmVwZW5kJiZyLnRvU3RyaW5nKCk/YS5vcHRpb25zLnByZXBlbmQrci50b1N0cmluZygpOnIudG9TdHJpbmcoKX07cmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2MSI/cj09PTE/IiI6dHlwZW9mIHI9PSJudW1iZXIiPyJfcGx1cmFsXyIuY29uY2F0KHIudG9TdHJpbmcoKSk6dSgpOnRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTj09PSJ2MiJ8fHRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCYmby5udW1iZXJzLmxlbmd0aD09PTImJm8ubnVtYmVyc1swXT09PTE/dSgpOnRoaXMub3B0aW9ucy5wcmVwZW5kJiZzLnRvU3RyaW5nKCk/dGhpcy5vcHRpb25zLnByZXBlbmQrcy50b1N0cmluZygpOnMudG9TdHJpbmc
14oKX19LHtrZXk6InNob3VsZFVzZUludGxBcGkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIURzLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTil9fV0pLG19KCk7ZnVuY3Rpb24gZXMobSxjKXt2YXIgbz1PYmplY3Qua2V5cyhtKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG0pO2MmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sYSkuZW51bWVyYWJsZX0pKSxvLnB1c2guYXBwbHkobyxpKX1yZXR1cm4gb31mdW5jdGlvbiBRKG0pe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP2VzKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtjZShtLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhtLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTplcyhPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG0saSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIG19dmFyIHpzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbSgpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fTtYKHRoaXMsbSksdGhpcy5sb2dnZXI9c2UuY3JlYXRlKCJpbnRlcnBvbGF0b3IiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLmZvcm1hdD1jLmludGVycG9sYXRpb24mJmMuaW50ZXJwb2xhdGlvbi5mb3JtYXR8fGZ1bmN0aW9uKG8pe3JldHVybiBvfSx0aGlzLmluaXQoYyl9cmV0dXJuIFoobSxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307by5pbnRlcnBvbGF0aW9ufHwoby5pbnRlcnBvbGF0aW9uPXtlc2NhcGVWYWx1ZTohMH0pO3ZhciBpPW8uaW50ZXJwb2xhdGlvbjt0aGlzLmVzY2FwZT1pLmVzY2FwZSE9PXZvaWQgMD9pLmVzY2FwZTpFcyx0aGlzLmVzY2FwZVZhbHVlPWkuZXNjYXBlVmFsdWUhPT12b2lkIDA/aS5lc2NhcGVWYWx1ZTohMCx0aGlzLnVzZVJhd1ZhbHVlVG9Fc2NhcGU9aS51c2VSYXdWYWx1ZVRvRXNjYXBlIT09dm9pZCAwP2kudXNlUmF3VmFsdWVUb0VzY2FwZTohMSx0aGlzLnByZWZpeD1pLnByZWZpeD95ZShpLnByZWZpeCk6aS5wcmVmaXhFc2NhcGVkfHwie3siLHRoaXMuc3VmZml4PWkuc3VmZml4P3llKGkuc3VmZml4KTppLnN1ZmZpeEVzY2FwZWR8fCJ9fSIsdGhpcy5mb3JtYXRTZXBhcmF0b3I9aS5mb3JtYXRTZXBhcmF0b3I/aS5mb3JtYXRTZXBhcmF0b3I6aS5mb3JtYXRTZXBhcmF0b3J8fCIsIix0aGlzLnVuZXNjYXBlUHJlZml4PWkudW5lc2NhcGVTdWZmaXg/IiI6aS51bmVzY2FwZVByZWZpeHx8Ii0iLHRoaXMudW5lc2NhcGVTdWZmaXg9dGhpcy51bmVzY2FwZVByZWZpeD8iIjppLnVuZXNjYXBlU3VmZml4fHwiIix0aGlzLm5lc3RpbmdQcmVmaXg9aS5uZXN0aW5nUHJlZml4P3llKGkubmVzdGluZ1ByZWZpeCk6aS5uZXN0aW5nUHJlZml4RXNjYXBlZHx8eWUoIiR0KCIpLHRoaXMubmVzdGluZ1N1ZmZpeD1pLm5lc3RpbmdTdWZmaXg/eWUoaS5uZXN0aW5nU3VmZml4KTppLm5lc3RpbmdTdWZmaXhFc2NhcGVkfHx5ZSgiKSIpLHRoaXMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I9aS5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcj9pLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yOmkubmVzdGluZ09wdGlvbnNTZXBhcmF0b3J8fCIsIix0aGlzLm1heFJlcGxhY2VzPWkubWF4UmVwbGFjZXM/aS5tYXhSZXBsYWNlczoxZTMsdGhpcy5hbHdheXNGb3JtYXQ9aS5hbHdheXNGb3JtYXQhPT12b2lkIDA/aS5hbHdheXNGb3JtYXQ6ITEsdGhpcy5yZXNldFJlZ0V4cCgpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zJiZ0aGlzLmluaXQodGhpcy5vcHRpb25zKX19LHtrZXk6InJlc2V0UmVnRXhwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBvPSIiLmNvbmNhdCh0aGlzLnByZWZpeCwiKC4rPykiKS5jb25jYXQodGhpcy5zdWZmaXgpO3RoaXMucmVnZXhwPW5ldyBSZWdFeHAobywiZyIpO3ZhciBpPSIiLmNvbmNhdCh0aGlzLnByZWZpeCkuY29uY2F0KHRoaXMudW5lc2NhcGVQcmVmaXgsIiguKz8pIikuY29uY2F0KHRoaXMudW5lc2NhcGVTdWZmaXgpLmNvbmNhdCh0aGlzLnN1ZmZpeCk7dGhpcy5yZWdleHBVbmVzY2FwZT1uZXcgUmVnRXhwKGksImciKTt2YXIgYT0iIi5jb25jYXQodGhpcy5uZXN0aW5nUHJlZml4LCIoLis/KSIpLmNvbmNhdCh0aGlzLm5lc3RpbmdTdWZmaXgpO3RoaXMubmVzdGluZ1JlZ2V4cD1uZXcgUmVnRXhwKGEsImciKX19LHtrZXk6ImludGVycG9sYXRlIix2YWx1ZTpmdW5jdGlvbihvLGksYSxzKXt2YXIgcj10aGlzLHUsZixkLHQ9dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbiYmdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlc3x8e307ZnVuY3Rpb24gJCh3KXtyZXR1cm4gdy5yZXBsYWNlKC9cJC9nLCIkJCQkIil9dmFyIF89ZnVuY3Rpb24odil7aWYodi5pbmRleE9mKHIuZm9ybWF0U2VwYXJhdG9yKTwwKXt2YXIgQT1IZShpLHQsdik7cmV0dXJuIHIuYWx3YXlzRm9ybWF0P3IuZm9ybWF0KEEsdm9pZCAwLGEsUShRKFEoe30scyksaSkse30se2ludGVycG9sYXRpb25rZXk6dn0pKTpBfXZhciBOPXYuc3BsaXQoci5mb3JtYXRTZXBhcmF0b3IpLHg9Ti5zaGlmdCgpLnRyaW0oKSxnPU4uam9pbihyLmZvcm1hdFNlcGFyYXRvcikudHJpbSgpO3JldHVybiByLmZvcm1hdChIZShpLHQseCksZyxhLFEoUShRKHt9LHMpLGkpLHt9LHtpbnRlcnBvbGF0aW9ua2V5Onh9KSl9O3RoaXMucmVzZXRSZWdFeHAoKTt2YXIgbD1zJiZzLm1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcnx8dGhpcy5vcHRpb25zLm1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcixiPXMmJnMuaW50ZXJwb2xhdGlvbiYmcy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyE9PXZvaWQgMD9zLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzOnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyxoPVt7cmVnZXg6dGhpcy5yZWdleHBVbmVzY2FwZSxzYWZlVmFsdWU6ZnVuY3Rpb24odil7cmV0dXJuICQodil9fSx7cmVnZXg6dGhpcy5yZWdleHAsc2FmZVZhbHVlOmZ1bmN0aW9uKHYpe3JldHVybiByLmVzY2FwZVZhbHVlPyQoci5lc2NhcGUodikpOiQodil9fV07cmV0dXJuIGguZm9yRWFjaChmdW5jdGlvbih3KXtmb3IoZD0wO3U9dy5yZWdleC5leGVjKG8pOyl7dmFyIHY9dVsxXS50cmltKCk7
14aWYoZj1fKHYpLGY9PT12b2lkIDApaWYodHlwZW9mIGw9PSJmdW5jdGlvbiIpe3ZhciBBPWwobyx1LHMpO2Y9dHlwZW9mIEE9PSJzdHJpbmciP0E6IiJ9ZWxzZSBpZihzJiZzLmhhc093blByb3BlcnR5KHYpKWY9IiI7ZWxzZSBpZihiKXtmPXVbMF07Y29udGludWV9ZWxzZSByLmxvZ2dlci53YXJuKCJtaXNzZWQgdG8gcGFzcyBpbiB2YXJpYWJsZSAiLmNvbmNhdCh2LCIgZm9yIGludGVycG9sYXRpbmcgIikuY29uY2F0KG8pKSxmPSIiO2Vsc2UgdHlwZW9mIGYhPSJzdHJpbmciJiYhci51c2VSYXdWYWx1ZVRvRXNjYXBlJiYoZj1CZShmKSk7dmFyIE49dy5zYWZlVmFsdWUoZik7aWYobz1vLnJlcGxhY2UodVswXSxOKSxiPyh3LnJlZ2V4Lmxhc3RJbmRleCs9Zi5sZW5ndGgsdy5yZWdleC5sYXN0SW5kZXgtPXVbMF0ubGVuZ3RoKTp3LnJlZ2V4Lmxhc3RJbmRleD0wLGQrKyxkPj1yLm1heFJlcGxhY2VzKWJyZWFrfX0pLG99fSx7a2V5OiJuZXN0Iix2YWx1ZTpmdW5jdGlvbihvLGkpe3ZhciBhPXRoaXMscz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30scix1LGY9USh7fSxzKTtmLmFwcGx5UG9zdFByb2Nlc3Nvcj0hMSxkZWxldGUgZi5kZWZhdWx0VmFsdWU7ZnVuY3Rpb24gZChsLGIpe3ZhciBoPXRoaXMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I7aWYobC5pbmRleE9mKGgpPDApcmV0dXJuIGw7dmFyIHc9bC5zcGxpdChuZXcgUmVnRXhwKCIiLmNvbmNhdChoLCJbIF0qeyIpKSksdj0ieyIuY29uY2F0KHdbMV0pO2w9d1swXSx2PXRoaXMuaW50ZXJwb2xhdGUodixmKTt2YXIgQT12Lm1hdGNoKC8nL2cpLE49di5tYXRjaCgvIi9nKTsoQSYmQS5sZW5ndGglMj09PTAmJiFOfHxOLmxlbmd0aCUyIT09MCkmJih2PXYucmVwbGFjZSgvJy9nLCciJykpO3RyeXtmPUpTT04ucGFyc2UodiksYiYmKGY9UShRKHt9LGIpLGYpKX1jYXRjaCh4KXtyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiZmFpbGVkIHBhcnNpbmcgb3B0aW9ucyBzdHJpbmcgaW4gbmVzdGluZyBmb3Iga2V5ICIuY29uY2F0KGwpLHgpLCIiLmNvbmNhdChsKS5jb25jYXQoaCkuY29uY2F0KHYpfXJldHVybiBkZWxldGUgZi5kZWZhdWx0VmFsdWUsbH1mb3IoO3I9dGhpcy5uZXN0aW5nUmVnZXhwLmV4ZWMobyk7KXt2YXIgdD1bXSwkPSExO2lmKHJbMF0uaW5kZXhPZih0aGlzLmZvcm1hdFNlcGFyYXRvcikhPT0tMSYmIS97Lip9Ly50ZXN0KHJbMV0pKXt2YXIgXz1yWzFdLnNwbGl0KHRoaXMuZm9ybWF0U2VwYXJhdG9yKS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGwudHJpbSgpfSk7clsxXT1fLnNoaWZ0KCksdD1fLCQ9ITB9aWYodT1pKGQuY2FsbCh0aGlzLHJbMV0udHJpbSgpLGYpLGYpLHUmJnJbMF09PT1vJiZ0eXBlb2YgdSE9InN0cmluZyIpcmV0dXJuIHU7dHlwZW9mIHUhPSJzdHJpbmciJiYodT1CZSh1KSksdXx8KHRoaXMubG9nZ2VyLndhcm4oIm1pc3NlZCB0byByZXNvbHZlICIuY29uY2F0KHJbMV0sIiBmb3IgbmVzdGluZyAiKS5jb25jYXQobykpLHU9IiIpLCQmJih1PXQucmVkdWNlKGZ1bmN0aW9uKGwsYil7cmV0dXJuIGEuZm9ybWF0KGwsYixzLmxuZyxRKFEoe30scykse30se2ludGVycG9sYXRpb25rZXk6clsxXS50cmltKCl9KSl9LHUudHJpbSgpKSksbz1vLnJlcGxhY2UoclswXSx1KSx0aGlzLnJlZ2V4cC5sYXN0SW5kZXg9MH1yZXR1cm4gb319XSksbX0oKTtmdW5jdGlvbiBzcyhtLGMpe3ZhciBvPU9iamVjdC5rZXlzKG0pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobSk7YyYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSxhKS5lbnVtZXJhYmxlfSkpLG8ucHVzaC5hcHBseShvLGkpfXJldHVybiBvfWZ1bmN0aW9uIG1lKG0pe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBvPWFyZ3VtZW50c1tjXSE9bnVsbD9hcmd1bWVudHNbY106e307YyUyP3NzKE9iamVjdChvKSwhMCkuZm9yRWFjaChmdW5jdGlvbihpKXtjZShtLGksb1tpXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhtLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTpzcyhPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG0saSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8saSkpfSl9cmV0dXJuIG19ZnVuY3Rpb24gQnMobSl7dmFyIGM9bS50b0xvd2VyQ2FzZSgpLnRyaW0oKSxvPXt9O2lmKG0uaW5kZXhPZigiKCIpPi0xKXt2YXIgaT1tLnNwbGl0KCIoIik7Yz1pWzBdLnRvTG93ZXJDYXNlKCkudHJpbSgpO3ZhciBhPWlbMV0uc3Vic3RyaW5nKDAsaVsxXS5sZW5ndGgtMSk7aWYoYz09PSJjdXJyZW5jeSImJmEuaW5kZXhPZigiOiIpPDApby5jdXJyZW5jeXx8KG8uY3VycmVuY3k9YS50cmltKCkpO2Vsc2UgaWYoYz09PSJyZWxhdGl2ZXRpbWUiJiZhLmluZGV4T2YoIjoiKTwwKW8ucmFuZ2V8fChvLnJhbmdlPWEudHJpbSgpKTtlbHNle3ZhciBzPWEuc3BsaXQoIjsiKTtzLmZvckVhY2goZnVuY3Rpb24ocil7aWYocil7dmFyIHU9ci5zcGxpdCgiOiIpLGY9a3ModSksZD1mWzBdLHQ9Zi5zbGljZSgxKSwkPXQuam9pbigiOiIpLnRyaW0oKS5yZXBsYWNlKC9eJyt8JyskL2csIiIpO29bZC50cmltKCldfHwob1tkLnRyaW0oKV09JCksJD09PSJmYWxzZSImJihvW2QudHJpbSgpXT0hMSksJD09PSJ0cnVlIiYmKG9bZC50cmltKCldPSEwKSxpc05hTigkKXx8KG9bZC50cmltKCldPXBhcnNlSW50KCQsMTApKX19KX19cmV0dXJue2Zvcm1hdE5hbWU6Yyxmb3JtYXRPcHRpb25zOm99fWZ1bmN0aW9uIGZlKG0pe3ZhciBjPXt9O3JldHVybiBmdW5jdGlvbihpLGEscyl7dmFyIHI9YStKU09OLnN0cmluZ2lmeShzKSx1PWNbcl07cmV0dXJuIHV8fCh1PW0oYSxzKSxjW3JdPXUpLHUoaSl9fXZhciBWcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG0oKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307WCh0aGlzLG0pLHRoaXMubG9nZ2VyPXNlLmNyZWF0ZSgiZm9ybWF0dGVyIiksdGhpcy5vcHRpb25zPWMsdGhpcy5mb3JtYXRzPXtudW1iZXI6ZmUoZnVuY3Rpb24obyxpKXt2YXIgYT1uZXcgSW50bC5OdW1iZXJGb3JtYXQobyxpKTtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGEuZm9ybWF0KHMpfX0pLGN1cnJlbmN5OmZlKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IEludGwuTnVtYmVyRm9ybWF0KG8sbWUobWUoe30saSkse30se3N0eWxlOiJjdXJyZW5jeSJ9KSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBhLmZvcm1hdChzKX19KSxkYXRldGltZTpmZShmdW5jdGlvbihvLGkpe3ZhciBhPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KG8sbWUoe30saSkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gYS5mb3JtYXQocyl9fSkscmVsYXRpdmV0aW1lOmZlKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IEludGwuUmVsYXRpdmVUaW
141lRm9ybWF0KG8sbWUoe30saSkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gYS5mb3JtYXQocyxpLnJhbmdlfHwiZGF5Iil9fSksbGlzdDpmZShmdW5jdGlvbihvLGkpe3ZhciBhPW5ldyBJbnRsLkxpc3RGb3JtYXQobyxtZSh7fSxpKSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBhLmZvcm1hdChzKX19KX0sdGhpcy5pbml0KGMpfXJldHVybiBaKG0sW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKG8pe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7aW50ZXJwb2xhdGlvbjp7fX0sYT1pLmludGVycG9sYXRpb247dGhpcy5mb3JtYXRTZXBhcmF0b3I9YS5mb3JtYXRTZXBhcmF0b3I/YS5mb3JtYXRTZXBhcmF0b3I6YS5mb3JtYXRTZXBhcmF0b3J8fCIsIn19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24obyxpKXt0aGlzLmZvcm1hdHNbby50b0xvd2VyQ2FzZSgpLnRyaW0oKV09aX19LHtrZXk6ImFkZENhY2hlZCIsdmFsdWU6ZnVuY3Rpb24obyxpKXt0aGlzLmZvcm1hdHNbby50b0xvd2VyQ2FzZSgpLnRyaW0oKV09ZmUoaSl9fSx7a2V5OiJmb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKG8saSxhLHMpe3ZhciByPXRoaXMsdT1pLnNwbGl0KHRoaXMuZm9ybWF0U2VwYXJhdG9yKSxmPXUucmVkdWNlKGZ1bmN0aW9uKGQsdCl7dmFyICQ9QnModCksXz0kLmZvcm1hdE5hbWUsbD0kLmZvcm1hdE9wdGlvbnM7aWYoci5mb3JtYXRzW19dKXt2YXIgYj1kO3RyeXt2YXIgaD1zJiZzLmZvcm1hdFBhcmFtcyYmcy5mb3JtYXRQYXJhbXNbcy5pbnRlcnBvbGF0aW9ua2V5XXx8e30sdz1oLmxvY2FsZXx8aC5sbmd8fHMubG9jYWxlfHxzLmxuZ3x8YTtiPXIuZm9ybWF0c1tfXShkLHcsbWUobWUobWUoe30sbCkscyksaCkpfWNhdGNoKHYpe3IubG9nZ2VyLndhcm4odil9cmV0dXJuIGJ9ZWxzZSByLmxvZ2dlci53YXJuKCJ0aGVyZSB3YXMgbm8gZm9ybWF0IGZ1bmN0aW9uIGZvciAiLmNvbmNhdChfKSk7cmV0dXJuIGR9LG8pO3JldHVybiBmfX1dKSxtfSgpO2Z1bmN0aW9uIHRzKG0sYyl7dmFyIG89T2JqZWN0LmtleXMobSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhtKTtjJiYoaT1pLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLGEpLmVudW1lcmFibGV9KSksby5wdXNoLmFwcGx5KG8saSl9cmV0dXJuIG99ZnVuY3Rpb24gcnMobSl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIG89YXJndW1lbnRzW2NdIT1udWxsP2FyZ3VtZW50c1tjXTp7fTtjJTI/dHMoT2JqZWN0KG8pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2NlKG0saSxvW2ldKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnRzKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobSxpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxpKSl9KX1yZXR1cm4gbX1mdW5jdGlvbiBIcyhtKXt2YXIgYz1HcygpO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWVlKG0pLGE7aWYoYyl7dmFyIHM9ZWUodGhpcykuY29uc3RydWN0b3I7YT1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxzKX1lbHNlIGE9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGhlKHRoaXMsYSl9fWZ1bmN0aW9uIEdzKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEtzKG0sYyl7bS5wZW5kaW5nW2NdIT09dm9pZCAwJiYoZGVsZXRlIG0ucGVuZGluZ1tjXSxtLnBlbmRpbmdDb3VudC0tKX12YXIgV3M9ZnVuY3Rpb24obSl7eGUobyxtKTt2YXIgYz1IcyhvKTtmdW5jdGlvbiBvKGksYSxzKXt2YXIgcix1PWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTp7fTtyZXR1cm4gWCh0aGlzLG8pLHI9Yy5jYWxsKHRoaXMpLGdlJiZwZS5jYWxsKGllKHIpKSxyLmJhY2tlbmQ9aSxyLnN0b3JlPWEsci5zZXJ2aWNlcz1zLHIubGFuZ3VhZ2VVdGlscz1zLmxhbmd1YWdlVXRpbHMsci5vcHRpb25zPXUsci5sb2dnZXI9c2UuY3JlYXRlKCJiYWNrZW5kQ29ubmVjdG9yIiksci53YWl0aW5nUmVhZHM9W10sci5tYXhQYXJhbGxlbFJlYWRzPXUubWF4UGFyYWxsZWxSZWFkc3x8MTAsci5yZWFkaW5nQ2FsbHM9MCxyLm1heFJldHJpZXM9dS5tYXhSZXRyaWVzPj0wP3UubWF4UmV0cmllczo1LHIucmV0cnlUaW1lb3V0PXUucmV0cnlUaW1lb3V0Pj0xP3UucmV0cnlUaW1lb3V0OjM1MCxyLnN0YXRlPXt9LHIucXVldWU9W10sci5iYWNrZW5kJiZyLmJhY2tlbmQuaW5pdCYmci5iYWNrZW5kLmluaXQocyx1LmJhY2tlbmQsdSkscn1yZXR1cm4gWihvLFt7a2V5OiJxdWV1ZUxvYWQiLHZhbHVlOmZ1bmN0aW9uKGEscyxyLHUpe3ZhciBmPXRoaXMsZD17fSx0PXt9LCQ9e30sXz17fTtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBiPSEwO3MuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgdz0iIi5jb25jYXQobCwifCIpLmNvbmNhdChoKTshci5yZWxvYWQmJmYuc3RvcmUuaGFzUmVzb3VyY2VCdW5kbGUobCxoKT9mLnN0YXRlW3ddPTI6Zi5zdGF0ZVt3XTwwfHwoZi5zdGF0ZVt3XT09PTE/dFt3XT09PXZvaWQgMCYmKHRbd109ITApOihmLnN0YXRlW3ddPTEsYj0hMSx0W3ddPT09dm9pZCAwJiYodFt3XT0hMCksZFt3XT09PXZvaWQgMCYmKGRbd109ITApLF9baF09PT12b2lkIDAmJihfW2hdPSEwKSkpfSksYnx8KCRbbF09ITApfSksKE9iamVjdC5rZXlzKGQpLmxlbmd0aHx8T2JqZWN0LmtleXModCkubGVuZ3RoKSYmdGhpcy5xdWV1ZS5wdXNoKHtwZW5kaW5nOnQscGVuZGluZ0NvdW50Ok9iamVjdC5rZXlzKHQpLmxlbmd0aCxsb2FkZWQ6e30sZXJyb3JzOltdLGNhbGxiYWNrOnV9KSx7dG9Mb2FkOk9iamVjdC5rZXlzKGQpLHBlbmRpbmc6T2JqZWN0LmtleXModCksdG9Mb2FkTGFuZ3VhZ2VzOk9iamVjdC5rZXlzKCQpLHRvTG9hZE5hbWVzcGFjZXM6T2JqZWN0LmtleXMoXyl9fX0se2tleToibG9h
14ZGVkIix2YWx1ZTpmdW5jdGlvbihhLHMscil7dmFyIHU9YS5zcGxpdCgifCIpLGY9dVswXSxkPXVbMV07cyYmdGhpcy5lbWl0KCJmYWlsZWRMb2FkaW5nIixmLGQscyksciYmdGhpcy5zdG9yZS5hZGRSZXNvdXJjZUJ1bmRsZShmLGQsciksdGhpcy5zdGF0ZVthXT1zPy0xOjI7dmFyIHQ9e307dGhpcy5xdWV1ZS5mb3JFYWNoKGZ1bmN0aW9uKCQpe1NzKCQubG9hZGVkLFtmXSxkKSxLcygkLGEpLHMmJiQuZXJyb3JzLnB1c2gocyksJC5wZW5kaW5nQ291bnQ9PT0wJiYhJC5kb25lJiYoT2JqZWN0LmtleXMoJC5sb2FkZWQpLmZvckVhY2goZnVuY3Rpb24oXyl7dFtfXXx8KHRbX109e30pO3ZhciBsPSQubG9hZGVkW19dO2wubGVuZ3RoJiZsLmZvckVhY2goZnVuY3Rpb24oYil7dFtfXVtiXT09PXZvaWQgMCYmKHRbX11bYl09ITApfSl9KSwkLmRvbmU9ITAsJC5lcnJvcnMubGVuZ3RoPyQuY2FsbGJhY2soJC5lcnJvcnMpOiQuY2FsbGJhY2soKSl9KSx0aGlzLmVtaXQoImxvYWRlZCIsdCksdGhpcy5xdWV1ZT10aGlzLnF1ZXVlLmZpbHRlcihmdW5jdGlvbigkKXtyZXR1cm4hJC5kb25lfSl9fSx7a2V5OiJyZWFkIix2YWx1ZTpmdW5jdGlvbihhLHMscil7dmFyIHU9dGhpcyxmPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTowLGQ9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOnRoaXMucmV0cnlUaW1lb3V0LHQ9YXJndW1lbnRzLmxlbmd0aD41P2FyZ3VtZW50c1s1XTp2b2lkIDA7aWYoIWEubGVuZ3RoKXJldHVybiB0KG51bGwse30pO2lmKHRoaXMucmVhZGluZ0NhbGxzPj10aGlzLm1heFBhcmFsbGVsUmVhZHMpe3RoaXMud2FpdGluZ1JlYWRzLnB1c2goe2xuZzphLG5zOnMsZmNOYW1lOnIsdHJpZWQ6Zix3YWl0OmQsY2FsbGJhY2s6dH0pO3JldHVybn1yZXR1cm4gdGhpcy5yZWFkaW5nQ2FsbHMrKyx0aGlzLmJhY2tlbmRbcl0oYSxzLGZ1bmN0aW9uKCQsXyl7aWYodS5yZWFkaW5nQ2FsbHMtLSx1LndhaXRpbmdSZWFkcy5sZW5ndGg+MCl7dmFyIGw9dS53YWl0aW5nUmVhZHMuc2hpZnQoKTt1LnJlYWQobC5sbmcsbC5ucyxsLmZjTmFtZSxsLnRyaWVkLGwud2FpdCxsLmNhbGxiYWNrKX1pZigkJiZfJiZmPHUubWF4UmV0cmllcyl7c2V0VGltZW91dChmdW5jdGlvbigpe3UucmVhZC5jYWxsKHUsYSxzLHIsZisxLGQqMix0KX0sZCk7cmV0dXJufXQoJCxfKX0pfX0se2tleToicHJlcGFyZUxvYWRpbmciLHZhbHVlOmZ1bmN0aW9uKGEscyl7dmFyIHI9dGhpcyx1PWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxmPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO2lmKCF0aGlzLmJhY2tlbmQpcmV0dXJuIHRoaXMubG9nZ2VyLndhcm4oIk5vIGJhY2tlbmQgd2FzIGFkZGVkIHZpYSBpMThuZXh0LnVzZS4gV2lsbCBub3QgbG9hZCByZXNvdXJjZXMuIiksZiYmZigpO3R5cGVvZiBhPT0ic3RyaW5nIiYmKGE9dGhpcy5sYW5ndWFnZVV0aWxzLnRvUmVzb2x2ZUhpZXJhcmNoeShhKSksdHlwZW9mIHM9PSJzdHJpbmciJiYocz1bc10pO3ZhciBkPXRoaXMucXVldWVMb2FkKGEscyx1LGYpO2lmKCFkLnRvTG9hZC5sZW5ndGgpcmV0dXJuIGQucGVuZGluZy5sZW5ndGh8fGYoKSxudWxsO2QudG9Mb2FkLmZvckVhY2goZnVuY3Rpb24odCl7ci5sb2FkT25lKHQpfSl9fSx7a2V5OiJsb2FkIix2YWx1ZTpmdW5jdGlvbihhLHMscil7dGhpcy5wcmVwYXJlTG9hZGluZyhhLHMse30scil9fSx7a2V5OiJyZWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGEscyxyKXt0aGlzLnByZXBhcmVMb2FkaW5nKGEscyx7cmVsb2FkOiEwfSxyKX19LHtrZXk6ImxvYWRPbmUiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBzPXRoaXMscj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06IiIsdT1hLnNwbGl0KCJ8IiksZj11WzBdLGQ9dVsxXTt0aGlzLnJlYWQoZixkLCJyZWFkIix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKHQsJCl7dCYmcy5sb2dnZXIud2FybigiIi5jb25jYXQociwibG9hZGluZyBuYW1lc3BhY2UgIikuY29uY2F0KGQsIiBmb3IgbGFuZ3VhZ2UgIikuY29uY2F0KGYsIiBmYWlsZWQiKSx0KSwhdCYmJCYmcy5sb2dnZXIubG9nKCIiLmNvbmNhdChyLCJsb2FkZWQgbmFtZXNwYWNlICIpLmNvbmNhdChkLCIgZm9yIGxhbmd1YWdlICIpLmNvbmNhdChmKSwkKSxzLmxvYWRlZChhLHQsJCl9KX19LHtrZXk6InNhdmVNaXNzaW5nIix2YWx1ZTpmdW5jdGlvbihhLHMscix1LGYpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+NSYmYXJndW1lbnRzWzVdIT09dm9pZCAwP2FyZ3VtZW50c1s1XTp7fTtpZih0aGlzLnNlcnZpY2VzLnV0aWxzJiZ0aGlzLnNlcnZpY2VzLnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZSYmIXRoaXMuc2VydmljZXMudXRpbHMuaGFzTG9hZGVkTmFtZXNwYWNlKHMpKXt0aGlzLmxvZ2dlci53YXJuKCdkaWQgbm90IHNhdmUga2V5ICInLmNvbmNhdChyLCciIGFzIHRoZSBuYW1lc3BhY2UgIicpLmNvbmNhdChzLCciIHdhcyBub3QgeWV0IGxvYWRlZCcpLCJUaGlzIG1lYW5zIHNvbWV0aGluZyBJUyBXUk9ORyBpbiB5b3VyIHNldHVwLiBZb3UgYWNjZXNzIHRoZSB0IGZ1bmN0aW9uIGJlZm9yZSBpMThuZXh0LmluaXQgLyBpMThuZXh0LmxvYWROYW1lc3BhY2UgLyBpMThuZXh0LmNoYW5nZUxhbmd1YWdlIHdhcyBkb25lLiBXYWl0IGZvciB0aGUgY2FsbGJhY2sgb3IgUHJvbWlzZSB0byByZXNvbHZlIGJlZm9yZSBhY2Nlc3NpbmcgaXQhISEiKTtyZXR1cm59cj09bnVsbHx8cj09PSIifHwodGhpcy5iYWNrZW5kJiZ0aGlzLmJhY2tlbmQuY3JlYXRlJiZ0aGlzLmJhY2tlbmQuY3JlYXRlKGEscyxyLHUsbnVsbCxycyhycyh7fSxkKSx7fSx7aXNVcGRhdGU6Zn0pKSwhKCFhfHwhYVswXSkmJnRoaXMuc3RvcmUuYWRkUmVzb3VyY2UoYVswXSxzLHIsdSkpfX1dKSxvfShwZSk7ZnVuY3Rpb24gWXMoKXtyZXR1cm57ZGVidWc6ITEsaW5pdEltbWVkaWF0ZTohMCxuczpbInRyYW5zbGF0aW9uIl0sZGVmYXVsdE5TOlsidHJhbnNsYXRpb24iXSxmYWxsYmFja0xuZzpbImRldiJdLGZhbGxiYWNrTlM6ITEsc3VwcG9ydGVkTG5nczohMSxub25FeHBsaWNpdFN1cHBvcnRlZExuZ3M6ITEsbG9hZDoiYWxsIixwcmVsb2FkOiExLHNpbXBsaWZ5UGx1cmFsU3VmZml4OiEwLGtleVNlcGFyYXRvcjoiLiIsbnNTZXBhcmF0b3I6IjoiLHBsdXJhbFNlcGFyYXRvcjoiXyIsY29udGV4dFNlcGFyYXRvcjoiXyIscGFydGlhbEJ1bmRsZWRMYW5ndWFnZXM6ITEsc2F2ZU1pc3Npbmc6ITEsdXBkYXRlTWlzc2luZzohMSxzYXZlTWlzc2luZ1RvOiJmYWxsYmFjayIsc2F2ZU1pc3NpbmdQbHVyYWxzOiEwLG1pc3NpbmdLZXlIYW5kbGVyOiExLG1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcjohMSxwb3N0UHJvY2VzczohMSxwb3N0UHJvY2Vzc1Bhc3NSZXNvbHZlZDohMSxyZXR1cm5OdWxsOiEwLHJldHVybkVtcHR5U3RyaW5nOiEwLHJldHVybk9iamVjdHM6ITEsam9pbkFycmF5czohMSxyZXR1cm5lZE9iamVjdEhhbmRsZXI6ITEscGFyc2VNaXNzaW5nS2V5SGFuZGxlcjohMSxhcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXk6ITEsYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGU6ITEsb3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXI6ZnVuY3Rpb24oYyl7dmFyIG89e307aWYoSihjWzFdKT09PSJvYmplY3QiJiYobz1jWzFdKSx0eXBlb2YgY1sxXT09InN0cmluZyImJihvLmRlZmF1bHRWYWx1ZT1jWzFdKSx0eXBlb2YgY1syXT09InN0cmluZyImJihvLnREZXNjcmlwdGlvbj1jWzJdKSxKKGNbMl0pPT09Im9iamVjdCJ8fEooY1szXSk9PT0ib2JqZWN0Iil7dmFyIGk9Y1szXXx8Y1syXTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe29bYV09aVthXX0pfXJldHVybi
14BvfSxpbnRlcnBvbGF0aW9uOntlc2NhcGVWYWx1ZTohMCxmb3JtYXQ6ZnVuY3Rpb24oYyxvLGksYSl7cmV0dXJuIGN9LHByZWZpeDoie3siLHN1ZmZpeDoifX0iLGZvcm1hdFNlcGFyYXRvcjoiLCIsdW5lc2NhcGVQcmVmaXg6Ii0iLG5lc3RpbmdQcmVmaXg6IiR0KCIsbmVzdGluZ1N1ZmZpeDoiKSIsbmVzdGluZ09wdGlvbnNTZXBhcmF0b3I6IiwiLG1heFJlcGxhY2VzOjFlMyxza2lwT25WYXJpYWJsZXM6ITB9fX1mdW5jdGlvbiBucyhtKXtyZXR1cm4gdHlwZW9mIG0ubnM9PSJzdHJpbmciJiYobS5ucz1bbS5uc10pLHR5cGVvZiBtLmZhbGxiYWNrTG5nPT0ic3RyaW5nIiYmKG0uZmFsbGJhY2tMbmc9W20uZmFsbGJhY2tMbmddKSx0eXBlb2YgbS5mYWxsYmFja05TPT0ic3RyaW5nIiYmKG0uZmFsbGJhY2tOUz1bbS5mYWxsYmFja05TXSksbS5zdXBwb3J0ZWRMbmdzJiZtLnN1cHBvcnRlZExuZ3MuaW5kZXhPZigiY2ltb2RlIik8MCYmKG0uc3VwcG9ydGVkTG5ncz1tLnN1cHBvcnRlZExuZ3MuY29uY2F0KFsiY2ltb2RlIl0pKSxtfWZ1bmN0aW9uIGFzKG0sYyl7dmFyIG89T2JqZWN0LmtleXMobSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhtKTtjJiYoaT1pLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLGEpLmVudW1lcmFibGV9KSksby5wdXNoLmFwcGx5KG8saSl9cmV0dXJuIG99ZnVuY3Rpb24gdGUobSl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIG89YXJndW1lbnRzW2NdIT1udWxsP2FyZ3VtZW50c1tjXTp7fTtjJTI/YXMoT2JqZWN0KG8pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2NlKG0saSxvW2ldKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOmFzKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobSxpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxpKSl9KX1yZXR1cm4gbX1mdW5jdGlvbiBKcyhtKXt2YXIgYz1RcygpO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWVlKG0pLGE7aWYoYyl7dmFyIHM9ZWUodGhpcykuY29uc3RydWN0b3I7YT1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxzKX1lbHNlIGE9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGhlKHRoaXMsYSl9fWZ1bmN0aW9uIFFzKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEFlKCl7fWZ1bmN0aW9uIFhzKG0pe3ZhciBjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihtKSk7Yy5mb3JFYWNoKGZ1bmN0aW9uKG8pe3R5cGVvZiBtW29dPT0iZnVuY3Rpb24iJiYobVtvXT1tW29dLmJpbmQobSkpfSl9dmFyIFNlPWZ1bmN0aW9uKG0pe3hlKG8sbSk7dmFyIGM9SnMobyk7ZnVuY3Rpb24gbygpe3ZhciBpLGE9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LHM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7aWYoWCh0aGlzLG8pLGk9Yy5jYWxsKHRoaXMpLGdlJiZwZS5jYWxsKGllKGkpKSxpLm9wdGlvbnM9bnMoYSksaS5zZXJ2aWNlcz17fSxpLmxvZ2dlcj1zZSxpLm1vZHVsZXM9e2V4dGVybmFsOltdfSxYcyhpZShpKSkscyYmIWkuaXNJbml0aWFsaXplZCYmIWEuaXNDbG9uZSl7aWYoIWkub3B0aW9ucy5pbml0SW1tZWRpYXRlKXJldHVybi
14BpLmluaXQoYSxzKSxoZShpLGllKGkpKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5pbml0KGEscyl9LDApfXJldHVybiBpfXJldHVybiBaKG8sW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxzPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3R5cGVvZiBzPT0iZnVuY3Rpb24iJiYocj1zLHM9e30pLCFzLmRlZmF1bHROUyYmcy5kZWZhdWx0TlMhPT0hMSYmcy5ucyYmKHR5cGVvZiBzLm5zPT0ic3RyaW5nIj9zLmRlZmF1bHROUz1zLm5zOnMubnMuaW5kZXhPZigidHJhbnNsYXRpb24iKTwwJiYocy5kZWZhdWx0TlM9cy5uc1swXSkpO3ZhciB1PVlzKCk7dGhpcy5vcHRpb25zPXRlKHRlKHRlKHt9LHUpLHRoaXMub3B0aW9ucyksbnMocykpLHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5QVBJIT09InYxIiYmKHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uPXRlKHRlKHt9LHUuaW50ZXJwb2xhdGlvbiksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24pKSxzLmtleVNlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZEtleVNlcGFyYXRvcj1zLmtleVNlcGFyYXRvcikscy5uc1NlcGFyYXRvciE9PXZvaWQgMCYmKHRoaXMub3B0aW9ucy51c2VyRGVmaW5lZE5zU2VwYXJhdG9yPXMubnNTZXBhcmF0b3IpO2Z1bmN0aW9uIGYodil7cmV0dXJuIHY/dHlwZW9mIHY9PSJmdW5jdGlvbiI/bmV3IHY6djpudWxsfWlmKCF0aGlzLm9wdGlvbnMuaXNDbG9uZSl7dGhpcy5tb2R1bGVzLmxvZ2dlcj9zZS5pbml0KGYodGhpcy5tb2R1bGVzLmxvZ2dlciksdGhpcy5vcHRpb25zKTpzZS5pbml0KG51bGwsdGhpcy5vcHRpb25zKTt2YXIgZDt0aGlzLm1vZHVsZXMuZm9ybWF0dGVyP2Q9dGhpcy5tb2R1bGVzLmZvcm1hdHRlcjp0eXBlb2YgSW50bDwidSImJihkPVZzKTt2YXIgdD1uZXcganModGhpcy5vcHRpb25zKTt0aGlzLnN0b3JlPW5ldyBMcyh0aGlzLm9wdGlvbnMucmVzb3VyY2VzLHRoaXMub3B0aW9ucyk7dmFyICQ9dGhpcy5zZXJ2aWNlczskLmxvZ2dlcj1zZSwkLnJlc291cmNlU3RvcmU9dGhpcy5zdG9yZSwkLmxhbmd1YWdlVXRpbHM9dCwkLnBsdXJhbFJlc29sdmVyPW5ldyBGcyh0LHtwcmVwZW5kOnRoaXMub3B0aW9ucy5wbHVyYWxTZXBhcmF0b3IsY29tcGF0aWJpbGl0eUpTT046dGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OLHNpbXBsaWZ5UGx1cmFsU3VmZml4OnRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeH0pLGQmJighdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0fHx0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQ9PT11LmludGVycG9sYXRpb24uZm9ybWF0KSYmKCQuZm9ybWF0dGVyPWYoZCksJC5mb3JtYXR0ZXIuaW5pdCgkLHRoaXMub3B0aW9ucyksdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0PSQuZm9ybWF0dGVyLmZvcm1hdC5iaW5kKCQuZm9ybWF0dGVyKSksJC5pbnRlcnBvbGF0b3I9bmV3IHpzKHRoaXMub3B0aW9ucyksJC51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOnRoaXMuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQodGhpcyl9LCQuYmFja2VuZENvbm5lY3Rvcj1uZXcgV3MoZih0aGlzLm1vZHVsZXMuYmFja2VuZCksJC5yZXNvdXJjZVN0b3JlLCQsdGhpcy5vcHRpb25zKSwkLmJhY2tlbmRDb25uZWN0b3Iub24oIioiLGZ1bmN0aW9uKHYpe2Zvcih2YXIgQT1hcmd1bWVudHMubGVuZ3RoLE49bmV3IEFycmF5KEE+MT9BLTE6MCkseD0xO3g8QTt4KyspTlt4LTFdPWFyZ3VtZW50c1t4XTthLmVtaXQuYXBwbHkoYSxbdl0uY29uY2F0KE4pKX0pLHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yJiYoJC5sYW5ndWFnZURldGVjdG9yPWYodGhpcy5tb2R1bGVzLmxhbmd1YWdlRGV0ZWN0b3IpLCQubGFuZ3VhZ2VEZXRlY3Rvci5pbml0KCQsdGhpcy5vcHRpb25zLmRldGVjdGlvbix0aGlzLm9wdGlvbnMpKSx0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCYmKCQuaTE4bkZvcm1hdD1mKHRoaXMubW9kdWxlcy5pMThuRm9ybWF0KSwkLmkxOG5Gb3JtYXQuaW5pdCYmJC5pMThuRm9ybWF0LmluaXQodGhpcykpLHRoaXMudHJhbnNsYXRvcj1uZXcgWGUodGhpcy5zZXJ2aWNlcyx0aGlzLm9wdGlvbnMpLHRoaXMudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24odil7Zm9yKHZhciBBPWFyZ3VtZW50cy5sZW5ndGgsTj1uZXcgQXJyYXkoQT4xP0EtMTowKSx4PTE7eDxBO3grKylOW3gtMV09YXJndW1lbnRzW3hdO2EuZW1pdC5hcHBseShhLFt2XS5jb25jYXQoTikpfSksdGhpcy5tb2R1bGVzLmV4dGVybmFsLmZvckVhY2goZnVuY3Rpb24odil7di5pbml0JiZ2LmluaXQoYSl9KX1pZih0aGlzLmZvcm1hdD10aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQscnx8KHI9QWUpLHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMub3B0aW9ucy5sbmcpe3ZhciBfPXRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRGYWxsYmFja0NvZGVzKHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyk7Xy5sZW5ndGg+MCYmX1swXSE9PSJkZXYiJiYodGhpcy5vcHRpb25zLmxuZz1fWzBdKX0hdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yJiYhdGhpcy5vcHRpb25zLmxuZyYmdGhpcy5sb2dnZXIud2FybigiaW5pdDogbm8gbGFuZ3VhZ2VEZXRlY3RvciBpcyB1c2VkIGFuZCBubyBsbmcgaXMgZGVmaW5lZCIpO3ZhciBsPVsiZ2V0UmVzb3VyY2UiLCJoYXNSZXNvdXJjZUJ1bmRsZSIsImdldFJlc291cmNlQnVuZGxlIiwiZ2V0RGF0YUJ5TGFuZ3VhZ2UiXTtsLmZvckVhY2goZnVuY3Rpb24odil7YVt2XT1mdW5jdGlvbigpe3ZhciBBO3JldHVybihBPWEuc3RvcmUpW3ZdLmFwcGx5KEEsYXJndW1lbnRzKX19KTt2YXIgYj1bImFkZFJlc291cmNlIiwiYWRkUmVzb3VyY2VzIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJyZW1vdmVSZXNvdXJjZUJ1bmRsZSJdO2IuZm9yRWFjaChmdW5jdGlvbih2KXthW3ZdPWZ1bmN0aW9uKCl7dmFyIEE7cmV0dXJuKEE9YS5zdG9yZSlbdl0uYXBwbHkoQSxhcmd1bWVudHMpLGF9fSk7dmFyIGg9d2UoKSx3PWZ1bmN0aW9uKCl7dmFyIEE9ZnVuY3Rpb24oeCxnKXthLmlzSW5pdGlhbGl6ZWQmJiFhLmluaXRpYWxpemVkU3RvcmVPbmNlJiZhLmxvZ2dlci53YXJuKCJpbml0OiBpMThuZXh0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIFlvdSBzaG91bGQgY2FsbCBpbml0IGp1c3Qgb25jZSEiKSxhLmlzSW5pdGlhbGl6ZWQ9ITAsYS5vcHRpb25zLmlzQ2xvbmV8fGEubG9nZ2VyLmxvZygiaW5pdGlhbGl6ZWQiLGEub3B0aW9ucyksYS5lbWl0KCJpbml0
14aWFsaXplZCIsYS5vcHRpb25zKSxoLnJlc29sdmUoZykscih4LGcpfTtpZihhLmxhbmd1YWdlcyYmYS5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkhPT0idjEiJiYhYS5pc0luaXRpYWxpemVkKXJldHVybiBBKG51bGwsYS50LmJpbmQoYSkpO2EuY2hhbmdlTGFuZ3VhZ2UoYS5vcHRpb25zLmxuZyxBKX07cmV0dXJuIHRoaXMub3B0aW9ucy5yZXNvdXJjZXN8fCF0aGlzLm9wdGlvbnMuaW5pdEltbWVkaWF0ZT93KCk6c2V0VGltZW91dCh3LDApLGh9fSx7a2V5OiJsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgcz10aGlzLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOkFlLHU9cixmPXR5cGVvZiBhPT0ic3RyaW5nIj9hOnRoaXMubGFuZ3VhZ2U7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiImJih1PWEpLCF0aGlzLm9wdGlvbnMucmVzb3VyY2VzfHx0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXMpe2lmKGYmJmYudG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiB1KCk7dmFyIGQ9W10sdD1mdW5jdGlvbihsKXtpZihsKXt2YXIgYj1zLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGwpO2IuZm9yRWFjaChmdW5jdGlvbihoKXtkLmluZGV4T2YoaCk8MCYmZC5wdXNoKGgpfSl9fTtpZihmKXQoZik7ZWxzZXt2YXIgJD10aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpOyQuZm9yRWFjaChmdW5jdGlvbihfKXtyZXR1cm4gdChfKX0pfXRoaXMub3B0aW9ucy5wcmVsb2FkJiZ0aGlzLm9wdGlvbnMucHJlbG9hZC5mb3JFYWNoKGZ1bmN0aW9uKF8pe3JldHVybiB0KF8pfSksdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmxvYWQoZCx0aGlzLm9wdGlvbnMubnMsZnVuY3Rpb24oXyl7IV8mJiFzLnJlc29sdmVkTGFuZ3VhZ2UmJnMubGFuZ3VhZ2UmJnMuc2V0UmVzb2x2ZWRMYW5ndWFnZShzLmxhbmd1YWdlKSx1KF8pfSl9ZWxzZSB1KG51bGwpfX0se2tleToicmVsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihhLHMscil7dmFyIHU9d2UoKTtyZXR1cm4gYXx8KGE9dGhpcy5sYW5ndWFnZXMpLHN8fChzPXRoaXMub3B0aW9ucy5ucykscnx8KHI9QWUpLHRoaXMuc2VydmljZXMuYmFja2VuZENvbm5lY3Rvci5yZWxvYWQoYSxzLGZ1bmN0aW9uKGYpe3UucmVzb2x2ZSgpLHIoZil9KSx1fX0se2tleToidXNlIix2YWx1ZTpmdW5jdGlvbihhKXtpZighYSl0aHJvdyBuZXcgRXJyb3IoIllvdSBhcmUgcGFzc2luZyBhbiB1bmRlZmluZWQgbW9kdWxlISBQbGVhc2UgY2hlY2sgdGhlIG9iamVjdCB5b3UgYXJlIHBhc3NpbmcgdG8gaTE4bmV4dC51c2UoKSIpO2lmKCFhLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJZb3UgYXJlIHBhc3NpbmcgYSB3cm9uZyBtb2R1bGUhIFBsZWFzZSBjaGVjayB0aGUgb2JqZWN0IHlvdSBhcmUgcGFzc2luZyB0byBpMThuZXh0LnVzZSgpIik7cmV0dXJuIGEudHlwZT09PSJiYWNrZW5kIiYmKHRoaXMubW9kdWxlcy5iYWNrZW5kPWEpLChhLnR5cGU9PT0ibG9nZ2VyInx8YS5sb2cmJmEud2FybiYmYS5lcnJvcikmJih0aGlzLm1vZHVsZXMubG9nZ2VyPWEpLGEudHlwZT09PSJsYW5ndWFnZURldGVjdG9yIiYmKHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yPWEpLGEudHlwZT09PSJpMThuRm9ybWF0IiYmKHRoaXMubW9kdWxlcy5pMThuRm9ybWF0PWEpLGEudHlwZT09PSJwb3N0UHJvY2Vzc29yIiYmWWUuYWRkUG9zdFByb2Nlc3NvcihhKSxhLnR5cGU9PT0iZm9ybWF0dGVyIiYmKHRoaXMubW9kdWxlcy5mb3JtYXR0ZXI9YSksYS50eXBlPT09IjNyZFBhcnR5IiYmdGhpcy5tb2R1bGVzLmV4dGVybmFsLnB1c2goYSksdGhpc319LHtrZXk6InNldFJlc29sdmVkTGFuZ3VhZ2UiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCEoIWF8fCF0aGlzLmxhbmd1YWdlcykmJiEoWyJjaW1vZGUiLCJkZXYiXS5pbmRleE9mKGEpPi0xKSlmb3IodmFyIHM9MDtzPHRoaXMubGFuZ3VhZ2VzLmxlbmd0aDtzKyspe3ZhciByPXRoaXMubGFuZ3VhZ2VzW3NdO2lmKCEoWyJjaW1vZGUiLCJkZXYiXS5pbmRleE9mKHIpPi0xKSYmdGhpcy5zdG9yZS5oYXNMYW5ndWFnZVNvbWVUcmFuc2xhdGlvbnMocikpe3RoaXMucmVzb2x2ZWRMYW5ndWFnZT1yO2JyZWFrfX19fSx7a2V5OiJjaGFuZ2VMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24oYSxzKXt2YXIgcj10aGlzO3RoaXMuaXNMYW5ndWFnZUNoYW5naW5nVG89YTt2YXIgdT13ZSgpO3RoaXMuZW1pdCgibGFuZ3VhZ2VDaGFuZ2luZyIsYSk7dmFyIGY9ZnVuY3Rpb24oXyl7ci5sYW5ndWFnZT1fLHIubGFuZ3VhZ2VzPXIuc2VydmljZXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkoXyksci5yZXNvbHZlZExhbmd1YWdlPXZvaWQgMCxyLnNldFJlc29sdmVkTGFuZ3VhZ2UoXyl9LGQ9ZnVuY3Rpb24oXyxsKXtsPyhmKGwpLHIudHJhbnNsYXRvci5jaGFuZ2VMYW5ndWFnZShsKSxyLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCxyLmVtaXQoImxhbmd1YWdlQ2hhbmdlZCIsbCksci5sb2dnZXIubG9nKCJsYW5ndWFnZUNoYW5nZWQiLGwpKTpyLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvPXZvaWQgMCx1LnJlc29sdmUoZnVuY3Rpb24oKXtyZXR1cm4gci50LmFwcGx5KHIsYXJndW1lbnRzKX0pLHMmJnMoXyxmdW5jdGlvbigpe3JldHVybiByLnQuYXBwbHkocixhcmd1bWVudHMpfSl9LHQ9ZnVuY3Rpb24oXyl7IWEmJiFfJiZyLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJihfPVtdKTt2YXIgbD10eXBlb2YgXz09InN0cmluZyI/XzpyLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0QmVzdE1hdGNoRnJvbUNvZGVzKF8pO2wmJihyLmxhbmd1YWdlfHxmKGwpLHIudHJhbnNsYXRvci5sYW5ndWFnZXx8ci50cmFuc2xhdG9yLmNoYW5nZUxhbmd1YWdlKGwpLHIuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmci5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmNhY2hlVXNlckxhbmd1YWdlKGwpKSxyLmxvYWRSZXNvdXJjZXMobCxmdW5jdGlvbihiKXtkKGIsbCl9KX07cmV0dXJuIWEmJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5hc3luYz90KHRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QoKSk6IWEmJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmFzeW5jP3RoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3QodCk6dChhKSx1fX0se2tleToiZ2V0Rml4ZWRUIix2YWx1ZTpmdW5jdGlvbihhLHMscil7dmFyIHU9dGhpcyxmPWZ1bmN0aW9uIGQodCwkKXt2YXIgXztpZihKKCQpIT09Im9iamVjdCIpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGI9bmV3IEFycmF5KGw+Mj9sLTI6MCksaD0yO2g8bDtoKyspYltoLTJdPWFyZ3VtZW50c1toXTtfPXUub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihbdCwkXS5jb25jYXQoYikpfWVsc2UgXz10ZSh7fSwkKTtfLmxuZz1fLmxuZ3x8ZC
145sbmcsXy5sbmdzPV8ubG5nc3x8ZC5sbmdzLF8ubnM9Xy5uc3x8ZC5ucyxfLmtleVByZWZpeD1fLmtleVByZWZpeHx8cnx8ZC5rZXlQcmVmaXg7dmFyIHc9dS5vcHRpb25zLmtleVNlcGFyYXRvcnx8Ii4iLHY9Xy5rZXlQcmVmaXg/IiIuY29uY2F0KF8ua2V5UHJlZml4KS5jb25jYXQodykuY29uY2F0KHQpOnQ7cmV0dXJuIHUudCh2LF8pfTtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciP2YubG5nPWE6Zi5sbmdzPWEsZi5ucz1zLGYua2V5UHJlZml4PXIsZn19LHtrZXk6InQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIHRoaXMudHJhbnNsYXRvciYmKGE9dGhpcy50cmFuc2xhdG9yKS50cmFuc2xhdGUuYXBwbHkoYSxhcmd1bWVudHMpfX0se2tleToiZXhpc3RzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhO3JldHVybiB0aGlzLnRyYW5zbGF0b3ImJihhPXRoaXMudHJhbnNsYXRvcikuZXhpc3RzLmFwcGx5KGEsYXJndW1lbnRzKX19LHtrZXk6InNldERlZmF1bHROYW1lc3BhY2UiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucy5kZWZhdWx0TlM9YX19LHtrZXk6Imhhc0xvYWRlZE5hbWVzcGFjZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIHM9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtpZighdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0aGlzLmxvZ2dlci53YXJuKCJoYXNMb2FkZWROYW1lc3BhY2U6IGkxOG5leHQgd2FzIG5vdCBpbml0aWFsaXplZCIsdGhpcy5sYW5ndWFnZXMpLCExO2lmKCF0aGlzLmxhbmd1YWdlc3x8IXRoaXMubGFuZ3VhZ2VzLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiaGFzTG9hZGVkTmFtZXNwYWNlOiBpMThuLmxhbmd1YWdlcyB3ZXJlIHVuZGVmaW5lZCBvciBlbXB0eSIsdGhpcy5sYW5ndWFnZXMpLCExO3ZhciB1PXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8dGhpcy5sYW5ndWFnZXNbMF0sZj10aGlzLm9wdGlvbnM/dGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nOiExLGQ9dGhpcy5sYW5ndWFnZXNbdGhpcy5sYW5ndWFnZXMubGVuZ3RoLTFdO2lmKHUudG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiEwO3ZhciB0PWZ1bmN0aW9uKGwsYil7dmFyIGg9cy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLnN0YXRlWyIiLmNvbmNhdChsLCJ8IikuY29uY2F0KGIpXTtyZXR1cm4gaD09PS0xfHxoPT09Mn07aWYoci5wcmVjaGVjayl7dmFyICQ9ci5wcmVjaGVjayh0aGlzLHQpO2lmKCQhPT12b2lkIDApcmV0dXJuICR9cmV0dXJuISEodGhpcy5oYXNSZXNvdXJjZUJ1bmRsZSh1LGEpfHwhdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmJhY2tlbmR8fHRoaXMub3B0aW9ucy5yZXNvdXJjZXMmJiF0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXN8fHQodSxhKSYmKCFmfHx0KGQsYSkpKX19LHtrZXk6ImxvYWROYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihhLHMpe3ZhciByPXRoaXMsdT13ZSgpO3JldHVybiB0aGlzLm9wdGlvbnMubnM/KHR5cGVvZiBhPT0ic3RyaW5nIiYmKGE9W2FdKSxhLmZvckVhY2goZnVuY3Rpb24oZil7ci5vcHRpb25zLm5zLmluZGV4T2YoZik8MCYmci5vcHRpb25zLm5zLnB1c2goZil9KSx0aGlzLmxvYWRSZXNvdXJjZXMoZnVuY3Rpb24oZil7dS5yZXNvbHZlKCkscyYmcyhmKX0pLHUpOihzJiZzKCksUHJvbWlzZS5yZXNvbHZlKCkpfX0se2tleToibG9hZExhbmd1YWdlcyIsdmFsdWU6ZnVuY3Rpb24oYSxzKXt2YXIgcj13ZSgpO3R5cGVvZiBhPT0ic3RyaW5nIiYmKGE9W2FdKTt2YXIgdT10aGlzLm9wdGlvbnMucHJlbG9hZHx8W10sZj1hLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gdS5pbmRleE9mKGQpPDB9KTtyZXR1cm4gZi5sZW5ndGg/KHRoaXMub3B0aW9ucy5wcmVsb2FkPXUuY29uY2F0KGYpLHRoaXMubG9hZFJlc291cmNlcyhmdW5jdGlvbihkKXtyLnJlc29sdmUoKSxzJiZzKGQpfSkscik6KHMmJnMoKSxQcm9taXNlLnJlc29sdmUoKSl9fSx7a2V5OiJkaXIiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKGF8fChhPXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8KHRoaXMubGFuZ3VhZ2VzJiZ0aGlzLmxhbmd1YWdlcy5sZW5ndGg+MD90aGlzLmxhbmd1YWdlc1swXTp0aGlzLmxhbmd1YWdlKSksIWEpcmV0dXJuInJ0bCI7dmFyIHM9WyJhciIsInNodSIsInNxciIsInNzaCIsInhhYSIsInloZCIsInl1ZCIsImFhbyIsImFiaCIsImFidiIsImFjbSIsImFjcSIsImFjdyIsImFjeCIsImFjeSIsImFkZiIsImFkcyIsImFlYiIsImFlYyIsImFmYiIsImFqcCIsImFwYyIsImFwZCIsImFyYiIsImFycSIsImFycyIsImFyeSIsImFyeiIsImF1eiIsImF2bCIsImF5aCIsImF5bCIsImF5biIsImF5cCIsImJieiIsInBnYSIsImhlIiwiaXciLCJwcyIsInBidCIsInBidSIsInBzdCIsInBycCIsInByZCIsInVnIiwidXIiLCJ5ZGQiLCJ5ZHMiLCJ5aWgiLCJqaSIsInlpIiwiaGJvIiwibWVuIiwieG1uIiwiZmEiLCJqcHIiLCJwZW8iLCJwZXMiLCJwcnMiLCJkdiIsInNhbSIsImNrYiJdO3JldHVybiBzLmluZGV4T2YodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKGEpKT4tMXx8YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIi1hcmFiIik+MT8icnRsIjoibHRyIn19LHtrZXk6ImNsb25lSW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxzPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpBZSx1PXRlKHRlKHRlKHt9LHRoaXMub3B0aW9ucykscykse2lzQ2xvbmU6ITB9KSxmPW5ldyBvKHUpOyhzLmRlYnVnIT09dm9pZCAwfHxzLnByZWZpeCE9PXZvaWQgMCkmJihmLmxvZ2dlcj1mLmxvZ2dlci5jbG9uZShzKSk7dmFyIGQ9WyJzdG9yZSIsInNlcnZpY2VzIiwibGFuZ3VhZ2UiXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ZbdF09YVt0XX0pLGYuc2VydmljZXM9dGUoe30sdGhpcy5zZXJ2aWNlcyksZi5zZXJ2aWNlcy51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOmYuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQoZil9LGYudHJhbnNsYXRvcj1uZXcgWGUoZi5zZXJ2aWNlcyxmLm9wdGlvbnMpLGYudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24odCl7Zm9yKHZhciAkPWFyZ3VtZW50cy5sZW5ndGgsXz1uZXcgQXJyYXkoJD4xPyQtMTowKSxsPTE7bDwkO2wrKylfW2wtMV09YXJndW1lbnRzW2xdO2YuZW1pdC5hcHBseShmLFt0XS5jb25jYXQoXykpfSksZi5pbml0KHUsciksZi50cmFuc2xhdG9yLm9wdGlvbnM9Zi5vcHRpb25zLGYudHJhbnNsYXRvci5iYWNrZW5kQ29ubmVjdG9yLnNlcnZpY2VzLnV0aWxzPXtoYXNMb2FkZWROYW1lc3BhY2U6Zi5oYXNMb2FkZWROYW1lc3BhY2UuYmluZChmKX0sZn19LHtrZXk6InRvSlNPTiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57b3B0aW9uczp0aGlzLm9wdGlvbnMsc3RvcmU6dGhpcy5zdG9yZSxsYW5ndWFnZTp0aGlzLmxhbmd1YWdlLGxhbmd1YWdlczp0aGlzLmxhbmd1YWdlcyxyZXNvbHZlZExhbmd1YWdlOnRoaXMucmVzb2x2ZWRMYW5ndWFnZX19fV0pLG99KHBlKTt
14jZShTZSwiY3JlYXRlSW5zdGFuY2UiLGZ1bmN0aW9uKCl7dmFyIG09YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIG5ldyBTZShtLGMpfSk7dmFyIEc9U2UuY3JlYXRlSW5zdGFuY2UoKTtHLmNyZWF0ZUluc3RhbmNlPVNlLmNyZWF0ZUluc3RhbmNlLEcuY3JlYXRlSW5zdGFuY2UsRy5pbml0LEcubG9hZFJlc291cmNlcyxHLnJlbG9hZFJlc291cmNlcyxHLnVzZSxHLmNoYW5nZUxhbmd1YWdlLEcuZ2V0Rml4ZWRULEcudCxHLmV4aXN0cyxHLnNldERlZmF1bHROYW1lc3BhY2UsRy5oYXNMb2FkZWROYW1lc3BhY2UsRy5sb2FkTmFtZXNwYWNlcyxHLmxvYWRMYW5ndWFnZXM7ZnVuY3Rpb24gWnMobSxjKXtyZXR1cm4hY3x8Yz09PSJleHByIj9tOmAke219XyR7Y31gfWNvbnN0IGV0PW09Pm0hPW51bGw7ZnVuY3Rpb24gT2UobSl7cmV0dXJuIG0ucmVkdWNlKChjLG8pPT5jK28sMCkvbS5sZW5ndGh9ZnVuY3Rpb24gQ2UobSl7cmV0dXJuIG0ucmVkdWNlKChjLG8pPT5jK28sMCl9ZnVuY3Rpb24gb3MobSl7Y29uc3QgYz1tLnNvcnQoKGksYSk9PmktYSksbz1NYXRoLmZsb29yKGMubGVuZ3RoLzIpO3JldHVybiBjLmxlbmd0aCUyPT09MD8oY1tvXStjW28tMV0pLzI6Y1tvXX1mdW5jdGlvbiBSZShtKXtjb25zdCBjPU9lKG0pO3JldHVybiBPZShtLm1hcChvPT4oby1jKSoqMikpfWZ1bmN0aW9uIGxzKG0pe3JldHVybiBNYXRoLnNxcnQoUmUobSkpfWZ1bmN0aW9uIGlzKG0pe2xldCBjPS0xLzA7Zm9yKGxldCBvIG9mIG0pbz5jJiYoYz1vKTtyZXR1cm4gY31mdW5jdGlvbiBjcyhtKXtsZXQgYz0xLzA7Zm9yKGxldCBvIG9mIG0pbzxjJiYoYz1vKTtyZXR1cm4gY31mdW5jdGlvbiBzdChtKXtyZXR1cm4gbS5sZW5ndGh9ZnVuY3Rpb24gdHQobSl7cmV0dXJuIG0uZmlsdGVyKGV0KS5sZW5ndGh9ZnVuY3Rpb24gcHMobSl7cmV0dXJuIG5ldyBTZXQobSkuc2l6ZX12YXIgbXM9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSxkZT17fSxMZT17ZXhwb3J0czp7fX0sdXM7ZnVuY3Rpb24gcnQoKXtyZXR1cm4gdXN8fCh1cz0xLGZ1bmN0aW9uKG0peyhmdW5jdGlvbihjLG8pe20uZXhwb3J0cz9tLmV4cG9ydHM9bygpOmMubW9vPW8oKX0pKG1zLGZ1bmN0aW9uKCl7dmFyIGM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT10eXBlb2YgbmV3IFJlZ0V4cCgpLnN0aWNreT09ImJvb2xlYW4iO2Z1bmN0aW9uIGEobil7cmV0dXJuIG4mJm8uY2FsbChuKT09PSJbb2JqZWN0IFJlZ0V4cF0ifWZ1bmN0aW9uIHMobil7cmV0dXJuIG4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmIWEobikmJiFBcnJheS5pc0FycmF5KG4pfWZ1bmN0aW9uIHIobil7cmV0dXJuIG4ucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csZnVuY3Rpb24oeSl7cmV0dXJuIHk9PT0iLSI/IlxceDJkIjoiXFwiK3l9KX1mdW5jdGlvbiB1KG4pe3ZhciB5PW5ldyBSZWdFeHAoInwiK24pO3JldHVybiB5LmV4ZWMoIiIpLmxlbmd0aC0xfWZ1bmN0aW9uIGYobil7cmV0dXJuIigiK24rIikifWZ1bmN0aW9uIGQobil7aWYoIW4ubGVuZ3RoKXJldHVybiIoPyEpIjt2YXIgeT1uLm1hcChmdW5jdGlvbihrKXtyZXR1cm4iKD86IitrKyIpIn0pLmpvaW4oInwiKTtyZXR1cm4iKD86Iit5KyIpIn1mdW5jdGlvbiB0KG4pe2lmKHR5cGVvZiBuPT0ic3RyaW5nIilyZXR1cm4iKD86IityKG4pKyIpIjtpZihhKG4pKXtpZihuLmlnbm9yZUNhc2UpdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgL2kgZmxhZyBub3QgYWxsb3dlZCIpO2lmKG4uZ2xvYmFsKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC9nIGZsYWcgaXMgaW1wbGllZCIpO2lmKG4uc3RpY2t5KXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC95IGZsYWcgaXMgaW1wbGllZCIpO2lmKG4ubXVsdGlsaW5lKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIC9tIGZsYWcgaXMgaW1wbGllZCIpO3JldHVybiBuLnNvdXJjZX1lbHNlIHRocm93IG5ldyBFcnJvcigiTm90IGEgcGF0dGVybjogIituKX1mdW5jdGlvbiAkKG4seSl7cmV0dXJuIG4ubGVuZ3RoPnk/bjpBcnJheSh5LW4ubGVuZ3RoKzEpLmpvaW4oIiAiKStufWZ1bmN0aW9uIF8obix5KXtmb3IodmFyIGs9bi5sZW5ndGgsTz0wOzspe3ZhciBSPW4ubGFzdEluZGV4T2YoYApgLGstMSk7aWYoUj09PS0xfHwoTysrLGs9UixPPT09eSl8fGs9PT0wKWJyZWFrfXZhciBMPU88eT8wOmsrMTtyZXR1cm4gbi5zdWJzdHJpbmcoTCkuc3BsaXQoYApgKX1mdW5jdGlvbiBsKG4pe2Zvcih2YXIgeT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSxrPVtdLE89MDtPPHkubGVuZ3RoO08rKyl7dmFyIFI9eVtPXSxMPW5bUl0sST1bXS5jb25jYXQoTCk7aWYoUj09PSJpbmNsdWRlIil7Zm9yKHZhciBGPTA7RjxJLmxlbmd0aDtGKyspay5wdXNoKHtpbmNsdWRlOklbRl19KTtjb250aW51ZX12YXIgVT1bXTtJLmZvckVhY2goZnVuY3Rpb24oail7cyhqKT8oVS5sZW5ndGgmJmsucHVzaChoKFIsVSkpLGsucHVzaChoKFIsaikpLFU9W10pOlUucHVzaChqKX0pLFUubGVuZ3RoJiZrLnB1c2goaChSLFUpKX1yZXR1cm4ga31mdW5jdGlvbiBiKG4pe2Zvcih2YXIgeT1bXSxrPTA7azxuLmxlbmd0aDtrKyspe3ZhciBPPW5ba107aWYoTy5pbmNsdWRlKXtmb3IodmFyIFI9W10uY29uY2F0KE8uaW5jbHVkZSksTD0wO0w8Ui5sZW5ndGg7TCsrKXkucHVzaCh7aW5jbHVkZTpSW0xdfSk7Y29udGludWV9aWYoIU8udHlwZSl0aHJvdyBuZXcgRXJyb3IoIlJ1bGUgaGFzIG5vIHR5cGU6ICIrSlNPTi5zdHJpbmdpZnkoTykpO3kucHVzaChoKE8udHlwZSxPKSl9cmV0dXJuIHl9ZnVuY3Rpb24gaChuLHkpe2lmKHMoeSl8fCh5PXttYXRjaDp5fSkseS5pbmNsdWRlKXRocm93IG5ldyBFcnJvcigiTWF0Y2hpbmcgcnVsZXMgY2Fubm90IGFsc28gaW5jbHVkZSBzdGF0ZXMiKTt2YXIgaz17ZGVmYXVsdFR5cGU6bixsaW5lQnJlYWtzOiEheS5lcnJvcnx8ISF5LmZhbGxiYWNrLHBvcDohMSxuZXh0Om51bGwscHVzaDpudWxsLGVycm9yOiExLGZhbGxiYWNrOiExLHZhbHVlOm51bGwsdHlwZTpudWxsLHNob3VsZFRocm93OiExfTtmb3IodmFyIE8gaW4geSljLmNhbGwoeSxPKSYmKGtbT109eVtPXSk7aWYodHlwZW9mIGsudHlwZT09InN0cmluZyImJm4hPT1rLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJUeXBlIHRyYW5zZm9ybSBjYW5ub3QgYmUgYSBzdHJpbmcgKHR5cGUgJyIray50eXBlKyInIGZvciB0b2tlbiAnIituKyInKSIpO3ZhciBSPWsubWF0Y2g7cmV0dXJuIGsubWF0Y2g9QXJyYXkuaXNBcnJheShSKT9SOlI/W1JdOltdLGsubWF0Y2guc29ydChmdW5jdGlvbihMLEkpe3JldHVybiBhKEwpJiZhKEkpPzA6YShJKT8tMTphKEwpPzE6SS5sZW5ndGgtTC5sZW5ndGh9KSxrfWZ1bmN0aW9uIHcobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/YihuKTpsKG4pfXZhciB2PWgoImVycm9yIix7bGluZUJyZWFrczohMCxzaG91bGRUaHJvdzohMH0pO2Z1bmN0aW9uIEEobix5KXtmb3IodmFyIGs9bnVsbCxPPU9iamVjdC5jcmVhdGUobnVsbCksUj0hMCxMPW51bGwsST1b
14XSxGPVtdLFU9MDtVPG4ubGVuZ3RoO1UrKyluW1VdLmZhbGxiYWNrJiYoUj0hMSk7Zm9yKHZhciBVPTA7VTxuLmxlbmd0aDtVKyspe3ZhciBqPW5bVV07aWYoai5pbmNsdWRlKXRocm93IG5ldyBFcnJvcigiSW5oZXJpdGFuY2UgaXMgbm90IGFsbG93ZWQgaW4gc3RhdGVsZXNzIGxleGVycyIpO2lmKGouZXJyb3J8fGouZmFsbGJhY2spe2lmKGspdGhyb3chai5mYWxsYmFjaz09IWsuZmFsbGJhY2s/bmV3IEVycm9yKCJNdWx0aXBsZSAiKyhqLmZhbGxiYWNrPyJmYWxsYmFjayI6ImVycm9yIikrIiBydWxlcyBub3QgYWxsb3dlZCAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIik6bmV3IEVycm9yKCJmYWxsYmFjayBhbmQgZXJyb3IgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIik7az1qfXZhciB6PWoubWF0Y2guc2xpY2UoKTtpZihSKWZvcig7ei5sZW5ndGgmJnR5cGVvZiB6WzBdPT0ic3RyaW5nIiYmelswXS5sZW5ndGg9PT0xOyl7dmFyIGFlPXouc2hpZnQoKTtPW2FlLmNoYXJDb2RlQXQoMCldPWp9aWYoai5wb3B8fGoucHVzaHx8ai5uZXh0KXtpZigheSl0aHJvdyBuZXcgRXJyb3IoIlN0YXRlLXN3aXRjaGluZyBvcHRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBzdGF0ZWxlc3MgbGV4ZXJzIChmb3IgdG9rZW4gJyIrai5kZWZhdWx0VHlwZSsiJykiKTtpZihqLmZhbGxiYWNrKXRocm93IG5ldyBFcnJvcigiU3RhdGUtc3dpdGNoaW5nIG9wdGlvbnMgYXJlIG5vdCBhbGxvd2VkIG9uIGZhbGxiYWNrIHRva2VucyAoZm9yIHRva2VuICciK2ouZGVmYXVsdFR5cGUrIicpIil9aWYoei5sZW5ndGghPT0wKXtSPSExLEkucHVzaChqKTtmb3IodmFyIG9lPTA7b2U8ei5sZW5ndGg7b2UrKyl7dmFyIEs9eltvZV07aWYoYShLKSl7aWYoTD09PW51bGwpTD1LLnVuaWNvZGU7ZWxzZSBpZihMIT09Sy51bmljb2RlJiZqLmZhbGxiYWNrPT09ITEpdGhyb3cgbmV3IEVycm9yKCJJZiBvbmUgcnVsZSBpcyAvdSB0aGVuIGFsbCBtdXN0IGJlIil9fXZhciBsZT1kKHoubWFwKHQpKSxCPW5ldyBSZWdFeHAobGUpO2lmKEIudGVzdCgiIikpdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgbWF0Y2hlcyBlbXB0eSBzdHJpbmc6ICIrQik7dmFyIHJlPXUobGUpO2lmKHJlPjApdGhyb3cgbmV3IEVycm9yKCJSZWdFeHAgaGFzIGNhcHR1cmUgZ3JvdXBzOiAiK0IrYApVc2UgKD86IOKApiApIGluc3RlYWRgKTtpZighai5saW5lQnJlYWtzJiZCLnRlc3QoYApgKSl0aHJvdyBuZXcgRXJyb3IoIlJ1bGUgc2hvdWxkIGRlY2xhcmUgbGluZUJyZWFrczogIitCKTtGLnB1c2goZihsZSkpfX12YXIgbmU9ayYmay5mYWxsYmFjayx1ZT1pJiYhbmU/InltIjoiZ20iLCRlPWl8fG5lPyIiOiJ8IjtMPT09ITAmJih1ZSs9InUiKTt2YXIgX2U9bmV3IFJlZ0V4cChkKEYpKyRlLHVlKTtyZXR1cm57cmVnZXhwOl9lLGdyb3VwczpJLGZhc3Q6TyxlcnJvcjprfHx2fX1mdW5jdGlvbiBOKG4pe3ZhciB5PUEodyhuKSk7cmV0dXJuIG5ldyBDKHtzdGFydDp5fSwic3RhcnQiKX1mdW5jdGlvbiB4KG4seSxrKXt2YXIgTz1uJiYobi5wdXNofHxuLm5leHQpO2lmKE8mJiFrW09dKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBzdGF0ZSAnIitPKyInIChpbiB0b2tlbiAnIituLmRlZmF1bHRUeXBlKyInIG9mIHN0YXRlICciK3krIicpIik7aWYobiYmbi5wb3AmJituLnBvcCE9MSl0aHJvdyBuZXcgRXJyb3IoInBvcCBtdXN0IGJlIDEgKGluIHRva2VuICciK24uZGVmYXVsdFR5cGUrIicgb2Ygc3RhdGUgJyIreSsiJykiKX1mdW5jdGlvbiBnKG4seSl7dmFyIGs9bi4
14kYWxsP3cobi4kYWxsKTpbXTtkZWxldGUgbi4kYWxsO3ZhciBPPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG4pO3l8fCh5PU9bMF0pO2Zvcih2YXIgUj1PYmplY3QuY3JlYXRlKG51bGwpLEw9MDtMPE8ubGVuZ3RoO0wrKyl7dmFyIEk9T1tMXTtSW0ldPXcobltJXSkuY29uY2F0KGspfWZvcih2YXIgTD0wO0w8Ty5sZW5ndGg7TCsrKWZvcih2YXIgST1PW0xdLEY9UltJXSxVPU9iamVjdC5jcmVhdGUobnVsbCksaj0wO2o8Ri5sZW5ndGg7aisrKXt2YXIgej1GW2pdO2lmKHouaW5jbHVkZSl7dmFyIGFlPVtqLDFdO2lmKHouaW5jbHVkZSE9PUkmJiFVW3ouaW5jbHVkZV0pe1Vbei5pbmNsdWRlXT0hMDt2YXIgb2U9Ult6LmluY2x1ZGVdO2lmKCFvZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbmNsdWRlIG5vbmV4aXN0ZW50IHN0YXRlICciK3ouaW5jbHVkZSsiJyAoaW4gc3RhdGUgJyIrSSsiJykiKTtmb3IodmFyIEs9MDtLPG9lLmxlbmd0aDtLKyspe3ZhciBsZT1vZVtLXTtGLmluZGV4T2YobGUpPT09LTEmJmFlLnB1c2gobGUpfX1GLnNwbGljZS5hcHBseShGLGFlKSxqLS19fWZvcih2YXIgQj1PYmplY3QuY3JlYXRlKG51bGwpLEw9MDtMPE8ubGVuZ3RoO0wrKyl7dmFyIEk9T1tMXTtCW0ldPUEoUltJXSwhMCl9Zm9yKHZhciBMPTA7TDxPLmxlbmd0aDtMKyspe2Zvcih2YXIgcmU9T1tMXSxuZT1CW3JlXSx1ZT1uZS5ncm91cHMsaj0wO2o8dWUubGVuZ3RoO2orKyl4KHVlW2pdLHJlLEIpO2Zvcih2YXIgJGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobmUuZmFzdCksaj0wO2o8JGUubGVuZ3RoO2orKyl4KG5lLmZhc3RbJGVbal1dLHJlLEIpfXJldHVybiBuZXcgQyhCLHkpfWZ1bmN0aW9uIEUobil7Zm9yKHZhciB5PXR5cGVvZiBNYXA8InUiLGs9eT9uZXcgTWFwOk9iamVjdC5jcmVhdGUobnVsbCksTz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSxSPTA7UjxPLmxlbmd0aDtSKyspe3ZhciBMPU9bUl0sST1uW0xdLEY9QXJyYXkuaXNBcnJheShJKT9JOltJXTtGLmZvckVhY2goZnVuY3Rpb24oVSl7aWYodHlwZW9mIFUhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigia2V5d29yZCBtdXN0IGJlIHN0cmluZyAoaW4ga2V5d29yZCAnIitMKyInKSIpO3k/ay5zZXQoVSxMKTprW1VdPUx9KX1yZXR1cm4gZnVuY3Rpb24oVSl7cmV0dXJuIHk/ay5nZXQoVSk6a1tVXX19dmFyIEM9ZnVuY3Rpb24obix5KXt0aGlzLnN0YXJ0U3RhdGU9eSx0aGlzLnN0YXRlcz1uLHRoaXMuYnVmZmVyPSIiLHRoaXMuc3RhY2s9W10sdGhpcy5yZXNldCgpfTtDLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihuLHkpe3JldHVybiB0aGlzLmJ1ZmZlcj1ufHwiIix0aGlzLmluZGV4PTAsdGhpcy5saW5lPXk/eS5saW5lOjEsdGhpcy5jb2w9eT95LmNvbDoxLHRoaXMucXVldWVkVG9rZW49eT95LnF1ZXVlZFRva2VuOm51bGwsdGhpcy5xdWV1ZWRUZXh0PXk/eS5xdWV1ZWRUZXh0OiIiLHRoaXMucXVldWVkVGhyb3c9eT95LnF1ZXVlZFRocm93Om51bGwsdGhpcy5zZXRTdGF0ZSh5P3kuc3RhdGU6dGhpcy5zdGFydFN0YXRlKSx0aGlzLnN0YWNrPXkmJnkuc3RhY2s/eS5zdGFjay5zbGljZSgpOltdLHRoaXN9LEMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57bGluZTp0aGlzLmxpbmUsY29sOnRoaXMuY29sLHN0YXRlOnRoaXMuc3RhdGUsc3RhY2s6dGhpcy5zdGFjay5zbGljZSgpLHF1ZXVlZFRva2VuOnRoaXMucXVldWVkVG9rZW4scXVldWVkVGV4dDp0aGlzLnF1ZXVlZFRleHQscXVldWVkVGhyb3c6dGhpcy5xdWV1ZWRUaHJvd319LEMucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKG4pe2lmKCEoIW58fHRoaXMuc3RhdGU9PT1uKSl7dGhpcy5zdGF0ZT1uO3ZhciB5PXRoaXMuc3RhdGVzW25dO3RoaXMuZ3JvdXBzPXkuZ3JvdXBzLHRoaXMuZXJyb3I9eS5lcnJvcix0aGlzLnJlPXkucmVnZXhwLHRoaXMuZmFzdD15LmZhc3R9fSxDLnByb3RvdHlwZS5wb3BTdGF0ZT1mdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUodGhpcy5zdGFjay5wb3AoKSl9LEMucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbihuKXt0aGlzLnN0YWNrLnB1c2godGhpcy5zdGF0ZSksdGhpcy5zZXRTdGF0ZShuKX07dmFyIHE9aT9mdW5jdGlvbihuLHkpe3JldHVybiBuLmV4ZWMoeSl9OmZ1bmN0aW9uKG4seSl7dmFyIGs9bi5leGVjKHkpO3JldHVybiBrWzBdLmxlbmd0aD09PTA/bnVsbDprfTtDLnByb3RvdHlwZS5fZ2V0R3JvdXA9ZnVuY3Rpb24obil7Zm9yKHZhciB5PXRoaXMuZ3JvdXBzLmxlbmd0aCxrPTA7azx5O2srKylpZihuW2srMV0hPT12b2lkIDApcmV0dXJuIHRoaXMuZ3JvdXBzW2tdO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgdG9rZW4gdHlwZSBmb3IgbWF0Y2hlZCB0ZXh0Iil9O2Z1bmN0aW9uIGUoKXtyZXR1cm4gdGhpcy52YWx1ZX1pZihDLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5pbmRleDtpZih0aGlzLnF1ZXVlZEdyb3VwKXt2YXIgeT10aGlzLl90b2tlbih0aGlzLnF1ZXVlZEdyb3VwLHRoaXMucXVldWVkVGV4dCxuKTtyZXR1cm4gdGhpcy5xdWV1ZWRHcm91cD1udWxsLHRoaXMucXVldWVkVGV4dD0iIix5fXZhciBrPXRoaXMuYnVmZmVyO2lmKG4hPT1rLmxlbmd0aCl7dmFyIEk9dGhpcy5mYXN0W2suY2hhckNvZGVBdChuKV07aWYoSSlyZXR1cm4gdGhpcy5fdG9rZW4oSSxrLmNoYXJBdChuKSxuKTt2YXIgTz10aGlzLnJlO08ubGFzdEluZGV4PW47dmFyIFI9cShPLGspLEw9dGhpcy5lcnJvcjtpZihSPT1udWxsKXJldHVybiB0aGlzLl90b2tlbihMLGsuc2xpY2UobixrLmxlbmd0aCksbik7dmFyIEk9dGhpcy5fZ2V0R3JvdXAoUiksRj1SWzBdO3JldHVybiBMLmZhbGxiYWNrJiZSLmluZGV4IT09bj8odGhpcy5xdWV1ZWRHcm91cD1JLHRoaXMucXVldWVkVGV4dD1GLHRoaXMuX3Rva2VuKEwsay5zbGljZShuLFIuaW5kZXgpLG4pKTp0aGlzLl90b2tlbihJLEYsbil9fSxDLnByb3RvdHlwZS5fdG9rZW49ZnVuY3Rpb24obix5LGspe3ZhciBPPTA7aWYobi5saW5lQnJlYWtzKXt2YXIgUj0vXG4vZyxMPTE7aWYoeT09PWAKYClPPTE7ZWxzZSBmb3IoO1IuZXhlYyh5KTspTysrLEw9Ui5sYXN0SW5kZXh9dmFyIEk9e3R5cGU6dHlwZW9mIG4udHlwZT09ImZ1bmN0aW9uIiYmbi50eXBlKHkpfHxuLmRlZmF1bHRUeXBlLHZhbHVlOnR5cGVvZiBuLnZhbHVlPT0iZnVuY3Rpb24iP24udmFsdWUoeSk6eSx0ZXh0OnksdG9TdHJpbmc6ZSxvZmZzZXQ6ayxsaW5lQnJlYWtzOk8sbGluZTp0aGlzLmxpbmUsY29sOnRoaXMuY29sfSxGPXkubGVuZ3RoO2lmKHRoaXMuaW5kZXgrPUYsdGhpcy5saW5lKz1PLE8hPT0wP3RoaXMuY29sPUYtTCsxOnRoaXMuY29sKz1GLG4uc2hvdWxkVGhyb3cpe3ZhciBVPW5ldyBFcnJvcih0aGlzLmZvcm1hdEVycm9yKEksImludmFsaWQgc3ludGF4IikpO3Rocm93IFV9cmV0dXJuIG4ucG9wP3RoaXMucG9wU3RhdGUoKTpuLnB1c2g/dGhpcy5wdXNoU3RhdGUobi5wdXNoKTpuLm5leHQmJnRoaXMuc2V0U3RhdGUobi5uZXh0KSxJfSx0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yKXt2YXIgcD1mdW5jdGlvbihuKXt0aGlzLmxleGVyPW59O3AucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmxleGVyLm5leHQoKTtyZXR1cm57dmFsdWU6bixkb25lOiFufX0scC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxDLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwKHRoaXMpfX1yZXR1cm4gQy5wcm90b3R5cGUuZm9ybWF0RXJyb3I9ZnVuY3Rpb24obix5KXtpZihuPT1udWxsKXZhciBrPXRoaXMuYnVmZmVyLnNsaWNlKHRoaXMuaW5kZXgpLG49e3RleHQ6ayxvZmZzZXQ6dGhpcy5pbmRleCxsaW5lQnJlYWtzOmsuaW5kZXhPZihgCmApPT09LTE/MDoxLGxpbmU6dGhpcy5saW5lLGNvbDp0aGlzLmNvbH07dmFyIE89MixSPU1hdGgubWF4KG4ubGluZS1PLDEpLEw9bi5saW5lK08sST1Td
14HJpbmcoTCkubGVuZ3RoLEY9Xyh0aGlzLmJ1ZmZlcix0aGlzLmxpbmUtbi5saW5lK08rMSkuc2xpY2UoMCw1KSxVPVtdO1UucHVzaCh5KyIgYXQgbGluZSAiK24ubGluZSsiIGNvbCAiK24uY29sKyI6IiksVS5wdXNoKCIiKTtmb3IodmFyIGo9MDtqPEYubGVuZ3RoO2orKyl7dmFyIHo9RltqXSxhZT1SK2o7VS5wdXNoKCQoU3RyaW5nKGFlKSxJKSsiICAiK3opLGFlPT09bi5saW5lJiZVLnB1c2goJCgiIixJK24uY29sKzEpKyJeIil9cmV0dXJuIFUuam9pbihgCmApfSxDLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgQyh0aGlzLnN0YXRlcyx0aGlzLnN0YXRlKX0sQy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKG4pe3JldHVybiEwfSx7Y29tcGlsZTpOLHN0YXRlczpnLGVycm9yOk9iamVjdC5mcmVlemUoe2Vycm9yOiEwfSksZmFsbGJhY2s6T2JqZWN0LmZyZWV6ZSh7ZmFsbGJhY2s6ITB9KSxrZXl3b3JkczpFfX0pfShMZSkpLExlLmV4cG9ydHN9dmFyIFBlPXtleHBvcnRzOnt9fSwkcztmdW5jdGlvbiBudCgpe3JldHVybiAkc3x8KCRzPTEsZnVuY3Rpb24obSl7KGZ1bmN0aW9uKGMsbyl7bS5leHBvcnRzP20uZXhwb3J0cz1vKCk6Yy5uZWFybGV5PW8oKX0pKG1zLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhkLHQsJCl7cmV0dXJuIHRoaXMuaWQ9KytjLmhpZ2hlc3RJZCx0aGlzLm5hbWU9ZCx0aGlzLnN5bWJvbHM9dCx0aGlzLnBvc3Rwcm9jZXNzPSQsdGhpc31jLmhpZ2hlc3RJZD0wLGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGQpe3ZhciB0PXR5cGVvZiBkPiJ1Ij90aGlzLnN5bWJvbHMubWFwKGYpLmpvaW4oIiAiKTp0aGlzLnN5bWJvbHMuc2xpY2UoMCxkKS5tYXAoZikuam9pbigiICIpKyIg4pePICIrdGhpcy5zeW1ib2xzLnNsaWNlKGQpLm1hcChmKS5qb2luKCIgIik7cmV0dXJuIHRoaXMubmFtZSsiIOKGkiAiK3R9O2Z1bmN0aW9uIG8oZCx0LCQsXyl7dGhpcy5ydWxlPWQsdGhpcy5kb3Q9dCx0aGlzLnJlZmVyZW5jZT0kLHRoaXMuZGF0YT1bXSx0aGlzLndhbnRlZEJ5PV8sdGhpcy5pc0NvbXBsZXRlPXRoaXMuZG90PT09ZC5zeW1ib2xzLmxlbmd0aH1vLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJ7Iit0aGlzLnJ1bGUudG9TdHJpbmcodGhpcy5kb3QpKyJ9LCBmcm9tOiAiKyh0aGlzLnJlZmVyZW5jZXx8MCl9LG8ucHJvdG90eXBlLm5leHRTdGF0ZT1mdW5jdGlvbihkKXt2YXIgdD1uZXcgbyh0aGlzLnJ1bGUsdGhpcy5kb3QrMSx0aGlzLnJlZmVyZW5jZSx0aGlzLndhbnRlZEJ5KTtyZXR1cm4gdC5sZWZ0PXRoaXMsdC5yaWdodD1kLHQuaXNDb21wbGV0ZSYmKHQuZGF0YT10LmJ1aWxkKCksdC5yaWdodD12b2lkIDApLHR9LG8ucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKCl7dmFyIGQ9W10sdD10aGlzO2RvIGQucHVzaCh0LnJpZ2h0LmRhdGEpLHQ9dC5sZWZ0O3doaWxlKHQubGVmdCk7cmV0dXJuIGQucmV2ZXJzZSgpLGR9LG8ucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3RoaXMucnVsZS5wb3N0cHJvY2VzcyYmKHRoaXMuZGF0YT10aGlzLnJ1bGUucG9zdHByb2Nlc3ModGhpcy5kYXRhLHRoaXMucmVmZXJlbmNlLHIuZmFpbCkpfTtmdW5jdGlvbiBpKGQsdCl7dGhpcy5ncmFtbWFyPWQsdGhpcy5pbmRleD10LHRoaXMuc3RhdGVzPVtdLHRoaXMud2FudHM9e30sdGhpcy5zY2FubmFibGU9W10sdGhpcy5jb21wbGV0ZWQ9e319aS5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbihkKXtmb3IodmFyIHQ9dGhpcy5zdGF0ZXMsJD10aGlzLndhbnRzLF89dGhpcy5jb21wbGV0ZWQsbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgYj10W2xdO2lmKGIuaXNDb21wbGV0ZSl7aWYoYi5maW5pc2goKSxiLmRhdGEhPT1yLmZhaWwpe2Zvcih2YXIgaD1iLndhbnRlZEJ5LHc9aC5sZW5ndGg7dy0tOyl7dmFyIHY9aFt3XTt0aGlzLmNvbXBsZXRlKHYsYil9aWYoYi5yZWZlcmVuY2U9PT10aGlzLmluZGV4KXt2YXIgQT1iLnJ1bGUubmFtZTsodGhpcy5jb21wbGV0ZWRbQV09dGhpcy5jb21wbGV0ZWRbQV18fFtdKS5wdXNoKGIpfX19ZWxzZXt2YXIgQT1iLnJ1bGUuc3ltYm9sc1tiLmRvdF07aWYodHlwZW9mIEEhPSJzdHJpbmciKXt0aGlzLnNjYW5uYWJsZS5wdXNoKGIpO2NvbnRpbnVlfWlmKCRbQV0pe2lmKCRbQV0ucHVzaChiKSxfLmhhc093blByb3BlcnR5KEEpKWZvcih2YXIgTj1fW0FdLHc9MDt3PE4ubGVuZ3RoO3crKyl7dmFyIHg9Tlt3XTt0aGlzLmNvbXBsZXRlKGIseCl9fWVsc2UgJFtBXT1bYl0sdGhpcy5wcmVkaWN0KEEpfX19LGkucHJvdG90eXBlLnByZWRpY3Q9ZnVuY3Rpb24oZCl7Zm9yKHZhciB0PXRoaXMuZ3JhbW1hci5ieU5hbWVbZF18fFtdLCQ9MDskPHQubGVuZ3RoOyQrKyl7dmFyIF89dFskXSxsPXRoaXMud2FudHNbZF0sYj1uZXcgbyhfLDAsdGhpcy5pbmRleCxsKTt0aGlzLnN0YXRlcy5wdXNoKGIpfX0saS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oZCx0KXt2YXIgJD1kLm5leHRTdGF0ZSh0KTt0aGlzLnN0YXRlcy5wdXNoKCQpfTtmdW5jdGlvbiBhKGQsdCl7dGhpcy5ydWxlcz1kLHRoaXMuc3RhcnQ9dHx8dGhpcy5ydWxlc1swXS5uYW1lO3ZhciAkPXRoaXMuYnlOYW1lPXt9O3RoaXMucnVsZXMuZm9yRWFjaChmdW5jdGlvbihfKXskLmhhc093blByb3BlcnR5KF8ubmFtZSl8fCgkW18ubmFtZV09W10pLCRbXy5uYW1lXS5wdXNoKF8pfSl9YS5mcm9tQ29tcGlsZWQ9ZnVuY3Rpb24oXyx0KXt2YXIgJD1fLkxleGVyO18uUGFyc2VyU3RhcnQmJih0PV8uUGFyc2VyU3RhcnQsXz1fLlBhcnNlclJ1bGVzKTt2YXIgXz1fLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gbmV3IGMoYi5uYW1lLGIuc3ltYm9scyxiLnBvc3Rwcm9jZXNzKX0pLGw9bmV3IGEoXyx0KTtyZXR1cm4gbC5sZXhlcj0kLGx9O2Z1bmN0aW9uIHMoKXt0aGlzLnJlc2V0KCIiKX1zLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihkLHQpe3RoaXMuYnVmZmVyPWQsdGhpcy5pbmRleD0wLHRoaXMubGluZT10P3QubGluZToxLHRoaXMubGFzdExpbmVCcmVhaz10Py10LmNvbDowfSxzLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5pbmRleDx0aGlzLmJ1ZmZlci5sZW5ndGgpe3ZhciBkPXRoaXMuYnVmZmVyW3RoaXMuaW5kZXgrK107cmV0dXJuIGQ9PT1gCmAmJih0aGlzLmxpbmUrPTEsdGhpcy5sYXN0TGluZUJyZWFrPXRoaXMuaW5kZXgpLHt2YWx1ZTpkfX19LHMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57bGluZTp0aGlzLmxpbmUsY29sOnRoaXMuaW5kZXgtdGhpcy5sYXN0TGluZUJyZWFrfX0scy5wcm90b3R5cGUuZm9ybWF0RXJyb3I9ZnVuY3Rpb24oZCx0KXt2YXIgJD10aGlzLmJ1ZmZlcjtpZih0eXBlb2YgJD09InN0cmluZyIpe3ZhciBfPSQuc3BsaXQoYApgKS5zbGljZShNYXRoLm1heCgwLHRoaXMubGluZS01KSx0aGlzLmxpbmUpLGw9JC5pbmRleE9mKGAKYCx0aGlzLmluZGV4KTtsPT09LTEmJihsPSQubGVuZ3RoKTt2YXIgYj10aGlzLmluZGV4LXRoaXMubGFzdExpbmVCcmVhayxoPVN0cmluZyh0aGlzLmxpbmUpLmxlbmd0aDtyZXR1cm4gdCs9IiBhdCBsaW5lICIrdGhpcy5saW5lKyIgY29sICIrYitgOgoKYCx0Kz1fLm1hcChmdW5jdGlvbih2LEEpe3JldHVybiB3KHRoaXMubGluZS1fLmxlbmd0aCtBKzEsaCkrIiAiK3Z9LHRoaXMpLmpvaW4oYApgKSx0Kz1gCmArdygiIixoK2IpK2BeCmAsdH1lbHNlI
14HJldHVybiB0KyIgYXQgaW5kZXggIisodGhpcy5pbmRleC0xKTtmdW5jdGlvbiB3KHYsQSl7dmFyIE49U3RyaW5nKHYpO3JldHVybiBBcnJheShBLU4ubGVuZ3RoKzEpLmpvaW4oIiAiKStOfX07ZnVuY3Rpb24gcihkLHQsJCl7aWYoZCBpbnN0YW5jZW9mIGEpdmFyIF89ZCwkPXQ7ZWxzZSB2YXIgXz1hLmZyb21Db21waWxlZChkLHQpO3RoaXMuZ3JhbW1hcj1fLHRoaXMub3B0aW9ucz17a2VlcEhpc3Rvcnk6ITEsbGV4ZXI6Xy5sZXhlcnx8bmV3IHN9O2Zvcih2YXIgbCBpbiAkfHx7fSl0aGlzLm9wdGlvbnNbbF09JFtsXTt0aGlzLmxleGVyPXRoaXMub3B0aW9ucy5sZXhlcix0aGlzLmxleGVyU3RhdGU9dm9pZCAwO3ZhciBiPW5ldyBpKF8sMCk7dGhpcy50YWJsZT1bYl0sYi53YW50c1tfLnN0YXJ0XT1bXSxiLnByZWRpY3QoXy5zdGFydCksYi5wcm9jZXNzKCksdGhpcy5jdXJyZW50PTB9ci5mYWlsPXt9LHIucHJvdG90eXBlLmZlZWQ9ZnVuY3Rpb24oZCl7dmFyIHQ9dGhpcy5sZXhlcjt0LnJlc2V0KGQsdGhpcy5sZXhlclN0YXRlKTtmb3IodmFyICQ7Oyl7dHJ5e2lmKCQ9dC5uZXh0KCksISQpYnJlYWt9Y2F0Y2goQyl7dmFyIGg9bmV3IGkodGhpcy5ncmFtbWFyLHRoaXMuY3VycmVudCsxKTt0aGlzLnRhYmxlLnB1c2goaCk7dmFyIF89bmV3IEVycm9yKHRoaXMucmVwb3J0TGV4ZXJFcnJvcihDKSk7dGhyb3cgXy5vZmZzZXQ9dGhpcy5jdXJyZW50LF8udG9rZW49Qy50b2tlbixffXZhciBsPXRoaXMudGFibGVbdGhpcy5jdXJyZW50XTt0aGlzLm9wdGlvbnMua2VlcEhpc3Rvcnl8fGRlbGV0ZSB0aGlzLnRhYmxlW3RoaXMuY3VycmVudC0xXTt2YXIgYj10aGlzLmN1cnJlbnQrMSxoPW5ldyBpKHRoaXMuZ3JhbW1hcixiKTt0aGlzLnRhYmxlLnB1c2goaCk7Zm9yKHZhciB3PSQudGV4dCE9PXZvaWQgMD8kLnRleHQ6JC52YWx1ZSx2PXQuY29uc3RydWN0b3I9PT1zPyQudmFsdWU6JCxBPWwuc2Nhbm5hYmxlLE49QS5sZW5ndGg7Ti0tOyl7dmFyIHg9QVtOXSxnPXgucnVsZS5zeW1ib2xzW3guZG90XTtpZihnLnRlc3Q/Zy50ZXN0KHYpOmcudHlwZT9nLnR5cGU9PT0kLnR5cGU6Zy5saXRlcmFsPT09dyl7dmFyIEU9eC5uZXh0U3RhdGUoe2RhdGE6dix0b2tlbjokLGlzVG9rZW46ITAscmVmZXJlbmNlOmItMX0pO2guc3RhdGVzLnB1c2goRSl9fWlmKGgucHJvY2VzcygpLGguc3RhdGVzLmxlbmd0aD09PTApe3ZhciBfPW5ldyBFcnJvcih0aGlzLnJlcG9ydEVycm9yKCQpKTt0aHJvdyBfLm9mZnNldD10aGlzLmN1cnJlbnQsXy50b2tlbj0kLF99dGhpcy5vcHRpb25zLmtlZXBIaXN0b3J5JiYobC5sZXhlclN0YXRlPXQuc2F2ZSgpKSx0aGlzLmN1cnJlbnQrK31yZXR1cm4gbCYmKHRoaXMubGV4ZXJTdGF0ZT10LnNhdmUoKSksdGhpcy5yZXN1bHRzPXRoaXMuZmluaXNoKCksdGhpc30sci5wcm90b3R5cGUucmVwb3J0TGV4ZXJFcnJvcj1mdW5jdGlvbihkKXt2YXIgdCwkLF89ZC50b2tlbjtyZXR1cm4gXz8odD0iaW5wdXQgIitKU09OLnN0cmluZ2lmeShfLnRleHRbMF0pKyIgKGxleGVyIGVycm9yKSIsJD10aGlzLmxleGVyLmZvcm1hdEVycm9yKF8sIlN5bnRheCBlcnJvciIpKToodD0iaW5wdXQgKGxleGVyIGVycm9yKSIsJD1kLm1lc3NhZ2UpLHRoaXMucmVwb3J0RXJyb3JDb21tb24oJCx0KX0sci5wcm90b3R5cGUucmVwb3J0RXJyb3I9ZnVuY3Rpb24oZCl7dmFyIHQ9KGQudHlwZT9kLnR5cGUrIiB0b2tlbjogIjoiIikrSlNPTi5zdHJpbmdpZnkoZC52YWx1ZSE9PXZvaWQgMD9kLnZhbHVlOmQpLCQ9dGhpcy5sZXhlci5mb3JtYXRFcnJvcihkLCJTeW50YXggZXJyb3IiKTtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvckNvbW1vbigkLHQpfSxyLnByb3RvdHlwZS5yZXBvcnRFcnJvckNvbW1vbj1mdW5jdGlvbihkLHQpe3ZhciAkPVtdOyQucHVzaChkKTt2YXIgXz10aGlzLnRhYmxlLmxlbmd0aC0yLGw9dGhpcy50YWJsZVtfXSxiPWwuc3RhdGVzLmZpbHRlcihmdW5jdGlvbih3KXt2YXIgdj13LnJ1bGUuc3ltYm9sc1t3LmRvdF07cmV0dXJuIHYmJnR5cGVvZiB2IT0ic3RyaW5nIn0pO2lmKGIubGVuZ3RoPT09MCkkLnB1c2goIlVuZXhwZWN0ZWQgIit0K2AuIEkgZGlkIG5vdCBleHBlY3QgYW55IG1vcmUgaW5wdXQuIEhlcmUgaXMgdGhlIHN0YXRlIG9mIG15IHBhcnNlIHRhYmxlOgpgKSx0aGlzLmRpc3BsYXlTdGF0ZVN0YWNrKGwuc3RhdGVzLCQpO2Vsc2V7JC5wdXNoKCJVbmV4cGVjdGVkICIrdCtgLiBJbnN0ZWFkLCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgpgKTt2YXIgaD1iLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gdGhpcy5idWlsZEZpcnN0U3RhdGVTdGFjayh3LFtdKXx8W3ddfSx0aGlzKTtoLmZvckVhY2goZnVuY3Rpb24odyl7dmFyIHY9d1swXSxBPXYucnVsZS5zeW1ib2xzW3YuZG90XSxOPXRoaXMuZ2V0U3ltYm9sRGlzcGxheShBKTskLnB1c2goIkEgIitOKyIgYmFzZWQgb246IiksdGhpcy5kaXNwbGF5U3RhdGVTdGFjayh3LCQpfSx0aGlzKX1yZXR1cm4gJC5wdXNoKCIiKSwkLmpvaW4oYApgKX0sci5wcm90b3R5cGUuZGlzcGxheVN0YXRlU3RhY2s9ZnVuY3Rpb24oZCx0KXtmb3IodmFyICQsXz0wLGw9MDtsPGQubGVuZ3RoO2wrKyl7dmFyIGI9ZFtsXSxoPWIucnVsZS50b1N0cmluZyhiLmRvdCk7aD09PSQ/XysrOihfPjAmJnQucHVzaCgiICAgIF4gIitfKyIgbW9yZSBsaW5lcyBpZGVudGljYWwgdG8gdGhpcyIpLF89MCx0LnB1c2goIiAgICAiK2gpKSwkPWh9fSxyLnByb3RvdHlwZS5nZXRTeW1ib2xEaXNwbGF5PWZ1bmN0aW9uKGQpe3JldHVybiB1KGQpfSxyLnByb3RvdHlwZS5idWlsZEZpcnN0U3RhdGVTdGFjaz1mdW5jdGlvbihkLHQpe2lmKHQuaW5kZXhPZihkKSE9PS0xKXJldHVybiBudWxsO2lmKGQud2FudGVkQnkubGVuZ3RoPT09MClyZXR1cm5bZF07dmFyICQ9ZC53YW50ZWRCeVswXSxfPVtkXS5jb25jYXQodCksbD10aGlzLmJ1aWxkRmlyc3RTdGF0ZVN0YWNrKCQsXyk7cmV0dXJuIGw9PT1udWxsP251bGw6W2RdLmNvbmNhdChsKX0sci5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3ZhciBkPXRoaXMudGFibGVbdGhpcy5jdXJyZW50XTtyZXR1cm4gZC5sZXhlclN0YXRlPXRoaXMubGV4ZXJTdGF0ZSxkfSxyLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKGQpe3ZhciB0PWQuaW5kZXg7dGhpcy5jdXJyZW50PXQsdGhpcy50YWJsZVt0XT1kLHRoaXMudGFibGUuc3BsaWNlKHQrMSksdGhpcy5sZXhlclN0YXRlPWQubGV4ZXJTdGF0ZSx0aGlzLnJlc3VsdHM9dGhpcy5maW5pc2goKX0sci5wcm90b3R5cGUucmV3aW5kPWZ1bmN0aW9uKGQpe2lmKCF0aGlzLm9wdGlvbnMua2VlcEhpc3RvcnkpdGhyb3cgbmV3IEVycm9yKCJzZXQgb3B0aW9uIGBrZWVwSGlzdG9yeWAgdG8gZW5hYmxlIHJld2luZGluZyIpO3RoaXMucmVzdG9yZSh0aGlzLnRhYmxlW2RdKX0sci5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7dmFyIGQ9W10sdD10aGlzLmdyYW1tYXIuc3RhcnQsJD10aGlzLnRhYmxlW3RoaXMudGFibGUubGVuZ3RoLTFdO3JldHVybiAkLnN0YXRlcy5mb3JFYWNoKGZ1bmN0aW9uKF8pe18ucnVsZS5uYW1lPT09dCYmXy5kb3Q9PT1fLnJ1bGUuc3ltYm9scy5sZW5ndGgmJl8ucmVmZXJlbmNlPT09MCYmXy5kYXRhIT09ci5mYWlsJiZkLnB1c2goXyl9KSxkLm1hcChmdW5jdGlvbihfKXtyZXR1cm4gXy5kYXRhfSl9O2Z1bmN0aW9uIHUoZCl7dmFyIHQ9dHlwZW9mIGQ7aWYodD09PSJzdHJpbmciKXJldHVybi
14BkO2lmKHQ9PT0ib2JqZWN0Iil7aWYoZC5saXRlcmFsKXJldHVybiBKU09OLnN0cmluZ2lmeShkLmxpdGVyYWwpO2lmKGQgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuImNoYXJhY3RlciBtYXRjaGluZyAiK2Q7aWYoZC50eXBlKXJldHVybiBkLnR5cGUrIiB0b2tlbiI7aWYoZC50ZXN0KXJldHVybiJ0b2tlbiBtYXRjaGluZyAiK1N0cmluZyhkLnRlc3QpO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBzeW1ib2wgdHlwZTogIitkKX19ZnVuY3Rpb24gZihkKXt2YXIgdD10eXBlb2YgZDtpZih0PT09InN0cmluZyIpcmV0dXJuIGQ7aWYodD09PSJvYmplY3QiKXtpZihkLmxpdGVyYWwpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGQubGl0ZXJhbCk7aWYoZCBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gZC50b1N0cmluZygpO2lmKGQudHlwZSlyZXR1cm4iJSIrZC50eXBlO2lmKGQudGVzdClyZXR1cm4iPCIrU3RyaW5nKGQudGVzdCkrIj4iO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBzeW1ib2wgdHlwZTogIitkKX19cmV0dXJue1BhcnNlcjpyLEdyYW1tYXI6YSxSdWxlOmN9fSl9KFBlKSksUGUuZXhwb3J0c30oZnVuY3Rpb24obSl7KGZ1bmN0aW9uKGMsbyl7Zm9yKHZhciBpIGluIG8pY1tpXT1vW2ldfSkobSxmdW5jdGlvbihjKXt2YXIgbz17fTtmdW5jdGlvbiBpKGEpe2lmKG9bYV0pcmV0dXJuIG9bYV0uZXhwb3J0czt2YXIgcz1vW2FdPXtpOmEsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gY1thXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyxpKSxzLmw9ITAscy5leHBvcnRzfXJldHVybiBpLm09YyxpLmM9byxpLmQ9ZnVuY3Rpb24oYSxzLHIpe2kubyhhLHMpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxzLHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LGkucj1mdW5jdGlvbihhKXt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxpLnQ9ZnVuY3Rpb24oYSxzKXtpZihzJjEmJihhPWkoYSkpLHMmOHx8cyY0JiZ0eXBlb2YgYT09Im9iamVjdCImJmEmJmEuX19lc01vZHVsZSlyZXR1cm4gYTt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGkucihyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6YX0pLHMmMiYmdHlwZW9mIGEhPSJzdHJpbmciKWZvcih2YXIgdSBpbiBhKWkuZChyLHUsKGZ1bmN0aW9uKGYpe3JldHVybiBhW2ZdfSkuYmluZChudWxsLHUpKTtyZXR1cm4gcn0saS5uPWZ1bmN0aW9uKGEpe3ZhciBzPWEmJmEuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGF9O3JldHVybiBpLmQocywiYSIscyksc30saS5vPWZ1bmN0aW9uKGEscyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHMpfSxpLnA9IiIsaShpLnM9Nyl9KFtmdW5jdGlvbihjLG8pe2MuZXhwb3J0cz1ydCgpfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8udW5ib3g9by5kb3VibGVRdW90ZWQ9by5ib3g9by50cmFjaz1vLnRyYWNraW5nPW8udHJhY2tpbmdDb21tZW50cz1vLmxleGVyQW55PW8ubGV4ZXI9dm9pZCAwO2NvbnN0IGE9aSgwKSxzPWkoMykscj17fTtmb3IoY29uc3QgZyBvZiBzLnNxbEtleXdvcmRzKXJbImt3XyIrZy50b0xvd2VyQ2FzZSgpXT1nO2NvbnN0IHU9Zz0+e2NvbnN0IEU9KDAsYS5rZXl3b3JkcykoZyk7cmV0dXJuIEM9PkUoQy50b1VwcGVyQ2FzZSgpKX07by5sZXhlcj0oMCxhLmNvbXBpbGUpKHt3b3JkOnttYXRjaDovW2VFXSg/IScpW0EtWmEtejAtOV9dKnxbYS1kZi16QS1ERi1aX11bQS1aYS16MC05X10qLyx0eXBlOnUociksdmFsdWU6Zz0+Zy50b0xvd2VyQ2FzZSgpfSx3b3JkUXVvdGVkOnttYXRjaDovIig/OlteIlwqXXwiIikrIi8sdHlwZTooKT0+InF1b3RlZF93b3JkIix2YWx1ZTpnPT5nLnN1YnN0cmluZygxLGcubGVuZ3RoLTEpfSxzdHJpbmc6e21hdGNoOi8nKD86W14nXXxcJ1wnKSonLyx2YWx1ZTpnPT5nLnN1YnN0cmluZygxLGcubGVuZ3RoLTEpLnJlcGxhY2UoLycnL2csIiciKX0sZVN0cmluZzp7bWF0Y2g6L1xiKD86ZXxFKScoPzpbXidcXF18W1xyXG5cc118KD86XFxccyl8KD86XFxcbil8KD86XFwuKXwoPzpcJ1wnKSkrJy8sdmFsdWU6Zz0+Zy5zdWJzdHJpbmcoMixnLmxlbmd0aC0xKS5yZXBsYWNlKC8nJy9nLCInIikucmVwbGFjZSgvXFwoW1xzXG5dKS9nLChFLEMpPT5DKS5yZXBsYWNlKC9cXC4vZyxFPT5KU09OLnBhcnNlKCciJytFKyciJykpfSxxcGFyYW06e21hdGNoOi9cJFxkKy99LGNvbW1lbnRMaW5lOi9cLVwtLio/JFtcc1xyXG5dKi8sY29tbWVudEZ1bGxPcGVuOi9cL1wqLyxjb21tZW50RnVsbENsb3NlOi9cKlwvW1xzXHJcbl0qLyxzdGFyOiIqIixjb21tYToiLCIsc3BhY2U6e21hdGNoOi9bXHNcdFxuXHZcZlxyXSsvLGxpbmVCcmVha3M6ITB9LGludDovXC0/XGQrKD8hW1wuXGRdKS8sZmxvYXQ6L1wtPyg/Oig/OlxkKlwuXGQrKXwoPzpcZCtcLlxkKikpLyxscGFyZW46IigiLHJwYXJlbjoiKSIsbGJyYWNrZXQ6IlsiLHJicmFja2V0OiJdIixzZW1pY29sb246IjsiLGRvdDovXC4oPyFcZCkvLG9wX2Nhc3Q6Ijo6IixvcF9jb2xvbjoiOiIsb3BfcGx1czoiKyIsb3BfZXE6Ij0iLG9wX25lcTp7bWF0Y2g6Lyg/OiE9KXwoPzpcPFw+KS8sdmFsdWU6KCk9PiIhPSJ9LG9wX21lbWJlcnRleHQ6Ii0+PiIsb3BfbWVtYmVyOiItPiIsb3BfbWludXM6Ii0iLG9wX2RpdjovXC8vLG9wX25vdF9pbGlrZTovXCF+flwqLyxvcF9ub3RfbGlrZTovXCF+fi8sb3BfaWxpa2U6L35+XCovLG9wX2xpa2U6L35+LyxvcF9tb2Q6IiUiLG9wX2V4cDoiXiIsb3BfYWRkaXRpdmU6e21hdGNoOlsifHwiLCItIiwiIy0iLCImJiJdfSxvcF9jb21wYXJlOnttYXRjaDpbIj4iLCI+PSIsIjwiLCI8PSIsIkA+IiwiPEAiLCI/IiwiP3wiLCI/JiIsIiM+PiIsIj4+IiwiPDwiLCJ+IiwifioiLCIhfiIsIiF+KiIsIkBAIl19LG9wc19vdGhlcnM6e21hdGNoOlsifCIsIiYiLCJeIiwiIyJdfSxjb2RlYmxvY2s6e21hdGNoOi9cJFwkKD86LnxbXHNcdFxuXHZcZlxyXSkqP1wkXCQvcyxsaW5lQnJlYWtzOiEwLHZhbHVlOmc9Pmcuc3Vic3RyaW5nKDIsZy5sZW5ndGgtMil9fSksby5sZXhlci5uZXh0PShnPT4oKT0+e2xldCBFLEM9bnVsbDtmb3IoO0U9Zy5jYWxsKG8ubGV4ZXIpOyl7aWYoRS50eXBlPT09ImNvbW1lbnRGdWxsT3BlbiIpe2lmKEM9PT1udWxsKXtDPXtuZXN0ZWQ6MCxvZmZzZXQ6RS5vZmZzZXQsdGV4dDpFLnRleHR9O2NvbnRpbnVlfUMubmVzdGVkKyt9aWYoQyE9bnVsbCl7aWYoQy50ZXh0Kz1FLnRleHQsRS50eXBlPT09ImNvbW1lbnRGdWxsQ2xvc2UiKXtpZihDLm5lc3RlZD09PTApe2Y9PW51bGx8fGYucHVzaChkKEMpKSxDPW51bGw7Y29udGludWV9Qy5uZXN0ZWQtLX1jb250aW51ZX1pZihFLnR5cGUhPT0ic3BhY2UiKXtpZihFLnR5cGU9PT0iY29tbWVudExpbmUiKXtmPT1udWxsfHxmLnB1c2goZChFKSk7Y29udGludWV9YnJlYWt9fWlmKCQmJkUpe2NvbnN0IHE9RS5vZmZzZXQsZT17c3RhcnQ6cSxlbmQ6cStFLnRleHQubGVuZ3RofTtFLl9sb2NhdGlvbj1lfXJldHVybi
14BFfSkoby5sZXhlci5uZXh0KSxvLmxleGVyQW55PW8ubGV4ZXI7bGV0IGY9bnVsbDtjb25zdCBkPSh7b2Zmc2V0OmcsdGV4dDpFfSk9Pih7X2xvY2F0aW9uOntzdGFydDpnLGVuZDpnK0UubGVuZ3RofSxjb21tZW50OkV9KTtmdW5jdGlvbiB0KGcpe2lmKGYpdGhyb3cgbmV3IEVycm9yKCJXQVQgPyBSZWN1cnNpdmUgY29tbWVudHMgdHJhY2tpbmcg8J+klPCfpKggPyIpO3RyeXtmPVtdO2NvbnN0IEU9ZygpO3JldHVybntjb21tZW50czpmLGFzdDpFfX1maW5hbGx5e2Y9bnVsbH19by50cmFja2luZ0NvbW1lbnRzPXQ7bGV0ICQ9ITE7ZnVuY3Rpb24gXyhnKXtpZigkKXJldHVybiBnKCk7dHJ5e3JldHVybiAkPSEwLGcoKX1maW5hbGx5eyQ9ITF9fW8udHJhY2tpbmc9XztmdW5jdGlvbiBsKGcsRSl7aWYoISR8fCFFfHx0eXBlb2YgRSE9Im9iamVjdCIpcmV0dXJuIEU7Y29uc3QgQz14KGcsITApLHE9eChnLCExKTtpZighQ3x8IXEpcmV0dXJuIEU7aWYoQz09PXEpRS5fbG9jYXRpb249QztlbHNle2NvbnN0IGU9e3N0YXJ0OkMuc3RhcnQsZW5kOnEuZW5kfTtFLl9sb2NhdGlvbj1lfXJldHVybiBFfW8udHJhY2s9bDtjb25zdCBiPVN5bWJvbCgiX2xpdGVyYWwiKSxoPVN5bWJvbCgiX2RvdWJsZXF1b3RlZCIpO2Z1bmN0aW9uIHcoZyxFLEMpe3JldHVybiEkJiYhQz9FOmwoZyx7W2JdOkUsW2hdOkN9KX1vLmJveD13O2Z1bmN0aW9uIHYoZyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZykmJmcubGVuZ3RoPT09MSYmKGc9dihnWzBdKSksQXJyYXkuaXNBcnJheShnKSYmIWcubGVuZ3RoP251bGw6Z31mdW5jdGlvbiBBKGcpe2NvbnN0IEU9dihnKTtpZih0eXBlb2YgZz09Im9iamVjdCImJihFIT1udWxsJiZFW2hdKSlyZXR1cm57ZG91YmxlUXVvdGVkOiEwfX1vLmRvdWJsZVF1b3RlZD1BO2Z1bmN0aW9uIE4oZyl7dmFyIEU7cmV0dXJuIHR5cGVvZiBnPT0ib2JqZWN0IiYmKEU9Zz09bnVsbD92b2lkIDA6Z1tiXSkhPT1udWxsJiZFIT09dm9pZCAwP0U6Z31vLnVuYm94PU47ZnVuY3Rpb24geChnLEUpe2lmKCFnKXJldHVybiBudWxsO2lmKEFycmF
145LmlzQXJyYXkoZykpe2NvbnN0IEM9RT8xOi0xO2ZvcihsZXQgcT1FPzA6Zy5sZW5ndGgtMTtxPj0wJiZxPGcubGVuZ3RoO3ErPUMpe2NvbnN0IGU9eChnW3FdLEUpO2lmKGUpcmV0dXJuIGV9cmV0dXJuIG51bGx9cmV0dXJuIHR5cGVvZiBnIT0ib2JqZWN0Ij9udWxsOmcuX2xvY2F0aW9ufX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLkFzdERlZmF1bHRNYXBwZXI9by5hcnJheU5pbE1hcD1vLmFzc2lnbkNoYW5nZWQ9by5hc3RNYXBwZXI9dm9pZCAwO2NvbnN0IGE9aSg2KTtmdW5jdGlvbiBzKF8pe2NvbnN0IGw9bmV3IGQ7cmV0dXJuIGwud3JhcHBlZD1fKGwpLGx9by5hc3RNYXBwZXI9cztmdW5jdGlvbiByKF8sbCl7aWYoIV8pcmV0dXJuIF87bGV0IGI9ITE7Zm9yKGNvbnN0IGggb2YgT2JqZWN0LmtleXMobCkpaWYoX1toXSE9PWxbaF0pe2I9ITA7YnJlYWt9cmV0dXJuIGI/KDAsYS50cmltTnVsbGlzaCkoey4uLl8sLi4ubH0sMCk6X31vLmFzc2lnbkNoYW5nZWQ9cjtmdW5jdGlvbiB1KF8sbCl7aWYoIShfIT1udWxsJiZfLmxlbmd0aCkpcmV0dXJuIF87bGV0IGI9ITEsaD1fO2ZvcihsZXQgdz0wO3c8Xy5sZW5ndGg7dysrKXtjb25zdCB2PV9bd10sQT1sKHYpOyFiJiYoIUF8fEEhPT12KSYmKGI9ITAsaD1fLnNsaWNlKDAsdykpLEEmJmImJmgucHVzaChBKX1yZXR1cm4gaH1vLmFycmF5TmlsTWFwPXU7ZnVuY3Rpb24gZihfKXtzd2l0Y2goXz09bnVsbD92b2lkIDA6Xy50eXBlKXtjYXNlInNlbGVjdCI6Y2FzZSJkZWxldGUiOmNhc2UiaW5zZXJ0IjpjYXNlInVwZGF0ZSI6Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOmNhc2Uid2l0aCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19Y2xhc3MgZHtzdXBlcigpe3JldHVybiBuZXcgJCh0aGlzKX1zdGF0ZW1lbnQobCl7c3dpdGNoKGwudHlwZSl7Y2FzZSJhbHRlciB0YWJsZSI6cmV0dXJuIHRoaXMuYWx0ZXJUYWJsZShsKTtjYXNlImFsdGVyIGluZGV4IjpyZXR1cm4gdGhpcy5hbHRlckluZGV4KGwpO2Nhc2UiY29tbWl0IjpjYXNlInN0YXJ0IHRyYW5zYWN0aW9uIjpjYXNlInJvbGxiYWNrIjpyZXR1cm4gdGhpcy50cmFuc2FjdGlvbihsKTtjYXNlImNyZWF0ZSBpbmRleCI6cmV0dXJuIHRoaXMuY3JlYXRlSW5kZXgobCk7Y2FzZSJjcmVhdGUgdGFibGUiOnJldHVybiB0aGlzLmNyZWF0ZVRhYmxlKGwpO2Nhc2UidHJ1bmNhdGUgdGFibGUiOnJldHVybiB0aGlzLnRydW5jYXRlVGFibGUobCk7Y2FzZSJkZWxldGUiOnJldHVybiB0aGlzLmRlbGV0ZShsKTtjYXNlImluc2VydCI6cmV0dXJuIHRoaXMuaW5zZXJ0KGwpO2Nhc2Uid2l0aCI6cmV0dXJuIHRoaXMud2l0aChsKTtjYXNlIndpdGggcmVjdXJzaXZlIjpyZXR1cm4gdGhpcy53aXRoUmVjdXJzaXZlKGwpO2Nhc2Uic2VsZWN0IjpyZXR1cm4gdGhpcy5zZWxlY3Rpb24obCk7Y2FzZSJ1cGRhdGUiOnJldHVybiB0aGlzLnVwZGF0ZShsKTtjYXNlImNyZWF0ZSBleHRlbnNpb24iOnJldHVybiB0aGlzLmNyZWF0ZUV4dGVuc2lvbihsKTtjYXNlInRhYmxlc3BhY2UiOnJldHVybiB0aGlzLnRhYmxlc3BhY2UobCk7Y2FzZSJzZXQiOnJldHVybiB0aGlzLnNldEdsb2JhbChsKTtjYXNlInNldCB0aW1lem9uZSI6cmV0dXJuIHRoaXMuc2V0VGltZXpvbmUobCk7Y2FzZSJzZXQgbmFtZXMiOnJldHVybiB0aGlzLnNldE5hbWVzKGwpO2Nhc2UiY3JlYXRlIHNlcXVlbmNlIjpyZXR1cm4gdGhpcy5jcmVhdGVTZXF1ZW5jZShsKTtjYXNlImFsdGVyIHNlcXVlbmNlIjpyZXR1cm4gdGhpcy5hbHRlclNlcXVlbmNlKGwpO2Nhc2UiYmVnaW4iOnJldHVybiB0aGlzLmJlZ2luKGwpO2Nhc2UiZHJvcCB0YWJsZSI6Y2FzZSJkcm9wIGluZGV4IjpjYXNlImRyb3Agc2VxdWVuY2UiOmNhc2UiZHJvcCB0eXBlIjpjYXNlImRyb3AgdHJpZ2dlciI6cmV0dXJuIHRoaXMuZHJvcChsKTtjYXNlImNyZWF0ZSBlbnVtIjpyZXR1cm4gdGhpcy5jcmVhdGVFbnVtKGwpO2Nhc2UiY3JlYXRlIGNvbXBvc2l0ZSB0eXBlIjpyZXR1cm4gdGhpcy5jcmVhdGVDb21wb3NpdGVUeXBlKGwpO2Nhc2UidW5pb24iOmNhc2UidW5pb24gYWxsIjpyZXR1cm4gdGhpcy51bmlvbihsKTtjYXNlInNob3ciOnJldHVybiB0aGlzLnNob3cobCk7Y2FzZSJwcmVwYXJlIjpyZXR1cm4gdGhpcy5wcmVwYXJlKGwpO2Nhc2UiZGVhbGxvY2F0ZSI6cmV0dXJuIHRoaXMuZGVhbGxvY2F0ZShsKTtjYXNlImNyZWF0ZSB2aWV3IjpyZXR1cm4gdGhpcy5jcmVhdGVWaWV3KGwpO2Nhc2UiY3JlYXRlIG1hdGVyaWFsaXplZCB2aWV3IjpyZXR1cm4gdGhpcy5jcmVhdGVNYXRlcmlhbGl6ZWRWaWV3KGwpO2Nhc2UicmVmcmVzaCBtYXRlcmlhbGl6ZWQgdmlldyI6cmV0dXJuIHRoaXMucmVmcmVzaE1hdGVyaWFsaXplZFZpZXcobCk7Y2FzZSJjcmVhdGUgc2NoZW1hIjpyZXR1cm4gdGhpcy5jcmVhdGVTY2hlbWEobCk7Y2FzZSJyYWlzZSI6cmV0dXJuIHRoaXMucmFpc2UobCk7Y2FzZSJjb21tZW50IjpyZXR1cm4gdGhpcy5jb21tZW50KGwpO2Nhc2UiZG8iOnJldHVybiB0aGlzLmRvKGwpO2Nhc2UiY3JlYXRlIGZ1bmN0aW9uIjpyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvbihsKTtjYXNlImRyb3AgZnVuY3Rpb24iOnJldHVybiB0aGlzLmRyb3BGdW5jdGlvbihsKTtjYXNlInZhbHVlcyI6cmV0dXJuIHRoaXMudmFsdWVzKGwpO2RlZmF1bHQ6dGhyb3cgYS5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fWNvbW1lbnQobCl7cmV0dXJuIGx9Y3JlYXRlVmlldyhsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwucXVlcnkpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IGg9dGhpcy50YWJsZVJlZihsLm5hbWUpO3JldHVybiBoP3IobCx7cXVlcnk6YixuYW1lOmh9KTpudWxsfWNyZWF0ZU1hdGVyaWFsaXplZFZpZXcobCl7Y29uc3QgYj10aGlzLnNlbGVjdChsLnF1ZXJ5KTtpZighYilyZXR1cm4gbnVsbDtjb25zdCBoPXRoaXMudGFibGVSZWYobC5uYW1lKTtyZXR1cm4gaD9yKGwse3F1ZXJ5OmIsbmFtZTpofSk6bnVsbH1yZWZyZXNoTWF0ZXJpYWxpemVkVmlldyhsKXtyZXR1cm4gbH1kbyhsKXtyZXR1cm4gbH1jcmVhdGVGdW5jdGlvbihsKXtjb25zdCBiPXUobC5hcmd1bWVudHMsdz0+e2NvbnN0IHY9dGhpcy5kYXRhV
14HlwZSh3LnR5cGUpO3JldHVybiByKHcse3R5cGU6dn0pfSk7bGV0IGg7aWYobC5yZXR1cm5zKXN3aXRjaChsLnJldHVybnMua2luZCl7Y2FzZSJ0YWJsZSI6aD1yKGwucmV0dXJucyx7Y29sdW1uczp1KGwucmV0dXJucy5jb2x1bW5zLHc9Pntjb25zdCB2PXRoaXMuZGF0YVR5cGUody50eXBlKTtyZXR1cm4gdiYmcih3LHt0eXBlOnZ9KX0pfSk7YnJlYWs7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOmNhc2UiYXJyYXkiOmg9dGhpcy5kYXRhVHlwZShsLnJldHVybnMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgYS5Ob3RTdXBwb3J0ZWQubmV2ZXIobC5yZXR1cm5zKX1yZXR1cm4gcihsLHtyZXR1cm5zOmgsYXJndW1lbnRzOmJ9KX1kcm9wRnVuY3Rpb24obCl7Y29uc3QgYj11KGwuYXJndW1lbnRzLGg9Pntjb25zdCB3PXRoaXMuZGF0YVR5cGUoaC50eXBlKTtyZXR1cm4gcihoLHt0eXBlOnd9KX0pO3JldHVybiByKGwse2FyZ3VtZW50czpifSl9c2hvdyhsKXtyZXR1cm4gbH1jcmVhdGVFbnVtKGwpe3JldHVybiBsfWNyZWF0ZUNvbXBvc2l0ZVR5cGUobCl7Y29uc3QgYj11KGwuYXR0cmlidXRlcyxoPT5yKGgse2RhdGFUeXBlOnRoaXMuZGF0YVR5cGUoaC5kYXRhVHlwZSl9KSk7cmV0dXJuIHIobCx7YXR0cmlidXRlczpifSl9ZHJvcChsKXtyZXR1cm4gbH1hbHRlclNlcXVlbmNlKGwpe3JldHVybiBsLmNoYW5nZS50eXBlPT09InNldCBvcHRpb25zIiYmbC5jaGFuZ2UuYXMmJnRoaXMuZGF0YVR5cGUobC5jaGFuZ2UuYXMpLGx9YmVnaW4obCl7cmV0dXJuIGx9Y3JlYXRlU2VxdWVuY2UobCl7cmV0dXJuIGwub3B0aW9ucy5hcyYmdGhpcy5kYXRhVHlwZShsLm9wdGlvbnMuYXMpLGx9dGFibGVzcGFjZShsKXtyZXR1cm4gbH1zZXRHbG9iYWwobCl7cmV0dXJuIGx9c2V0VGltZXpvbmUobCl7cmV0dXJuIGx9c2V0TmFtZXMobCl7cmV0dXJuIGx9dXBkYXRlKGwpe2lmKCFsKXJldHVybiBsO2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLnRhYmxlKTtpZighYilyZXR1cm4gbnVsbDtjb25zdCBoPWwuZnJvbSYmdGhpcy5mcm9tKGwuZnJvbSksdz1sLndoZXJlJiZ0aGlzLmV4cHIobC53aGVyZSksdj11KGwuc2V0cyxOPT50aGlzLnNldChOKSk7aWYoISh2IT1udWxsJiZ2Lmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgQT11KGwucmV0dXJuaW5nLE49PnRoaXMuc2VsZWN0aW9uQ29sdW1uKE4pKTtyZXR1cm4gcihsLHt0YWJsZTpiLHdoZXJlOncsc2V0czp2LGZyb206aCxyZXR1cm5pbmc6QX0pfWluc2VydChsKXt2YXIgYixoO2NvbnN0IHc9dGhpcy50YWJsZVJlZihsLmludG8pO2lmKCF3KXJldHVybi
14BudWxsO2NvbnN0IHY9bC5pbnNlcnQmJnRoaXMuc2VsZWN0KGwuaW5zZXJ0KTtpZighdilyZXR1cm4gbnVsbDtjb25zdCBBPXUobC5yZXR1cm5pbmcsZz0+dGhpcy5zZWxlY3Rpb25Db2x1bW4oZykpO2xldCBOPShiPWwub25Db25mbGljdCk9PT1udWxsfHxiPT09dm9pZCAwP3ZvaWQgMDpiLm9uO3N3aXRjaChOPT1udWxsP3ZvaWQgMDpOLnR5cGUpe2Nhc2Uib24gY29uc3RyYWludCI6YnJlYWs7Y2FzZSJvbiBleHByIjpOPXIoTix7ZXhwcnM6dShOLmV4cHJzLGc9PnRoaXMuZXhwcihnKSl9KTticmVhaztjYXNlIG51bGw6Y2FzZSB2b2lkIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyBhLk5vdFN1cHBvcnRlZC5uZXZlcihOKX1sZXQgeD0oaD1sLm9uQ29uZmxpY3QpPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aC5kbztpZih4JiZ4IT09ImRvIG5vdGhpbmciKXtjb25zdCBnPXUoeC5zZXRzLEU9PnRoaXMuc2V0KEUpKTtnIT1udWxsJiZnLmxlbmd0aD94LnNldHMhPT1nJiYoeD17c2V0czpnfSk6eD0iZG8gbm90aGluZyJ9cmV0dXJuIHIobCx7aW50bzp3LGluc2VydDp2LHJldHVybmluZzpBLG9uQ29uZmxpY3Q6eD9yKGwub25Db25mbGljdCx7ZG86eCxvbjpOfSk6bC5vbkNvbmZsaWN0fSl9cmFpc2UobCl7cmV0dXJuIHIobCx7Zm9ybWF0RXhwcnM6bC5mb3JtYXRFeHBycyYmdShsLmZvcm1hdEV4cHJzLGI9PnRoaXMuZXhwcihiKSksdXNpbmc6bC51c2luZyYmdShsLnVzaW5nLGI9PnIoYix7dmFsdWU6dGhpcy5leHByKGIudmFsdWUpfSkpfSl9ZGVsZXRlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLmZyb20pO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IGg9bC53aGVyZSYmdGhpcy5leHByKGwud2hlcmUpLHc9dShsLnJldHVybmluZyx2PT50aGlzLnNlbGVjdGlvbkNvbHVtbih2KSk7cmV0dXJuIHIobCx7d2hlcmU6aCxyZXR1cm5pbmc6dyxmcm9tOmJ9KX1jcmVhdGVTY2hlbWEobCl7cmV0dXJuIGx9Y3JlYXRlVGFibGUobCl7Y29uc3QgYj11KGwuY29sdW1ucyxoPT57c3dpdGNoKGgua2luZCl7Y2FzZSJjb2x1bW4iOnJldHVybiB0aGlzLmNyZWF0ZUNvbHVtbihoKTtjYXNlImxpa2UgdGFibGUiOnJldHVybiB0aGlzLmxpa2VUYWJsZShoKTtkZWZhdWx0OnRocm93IGEuTm90U3VwcG9ydGVkLm5ldmVyKGgpfX0pO3JldHVybiBiIT1udWxsJiZiLmxlbmd0aD9yKGwse2NvbHVtbnM6Yn0pOm51bGx9bGlrZVRhYmxlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLmxpa2UpO3JldHVybiBiP3IobCx7bGlrZTpifSk6bnVsbH10cnVuY2F0ZVRhYmxlKGwpe3JldHVybiBsfWNvbnN0cmFpbnQobCl7c3dpdGNoKGwudHlwZSl7Y2FzZSJub3QgbnVsbCI6Y2FzZSJudWxsIjpjYXNlInByaW1hcnkga2V5IjpjYXNlInVuaXF1ZSI6Y2FzZSJhZGQgZ2VuZXJhdGVkIjpyZXR1cm4gbDtjYXNlImRlZmF1bHQiOntjb25zdCBiPXRoaXMuZXhwcihsLmRlZmF1bHQpO3JldHVybiBiP3IobCx7ZGVmYXVsdDpifSk6bnVsbH1jYXNlImNoZWNrIjp7Y29uc3QgYj10aGlzLmV4cHIobC5leHByKTtyZXR1cm4gYj9yKGwse2V4cHI6Yn0pOm51bGx9Y2FzZSJyZWZlcmVuY2UiOntjb25zdCBiPXRoaXMudGFibGVSZWYobC5mb3JlaWduVGFibGUpO3JldHVybiBiP3IobCx7Zm9yZWlnblRhYmxlOmJ9KTpudWxsfWRlZmF1bHQ6dGhyb3cgYS5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fXNldChsKXtjb25zdCBiPXRoaXMuZXhwcihsLnZhbHVlKTtyZXR1cm4gYj9yKGwse3ZhbHVlOmJ9KTpudWxsfWRhdGFUeXBlKGwpe3JldHVybiBsfXRhYmxlUmVmKGwpe3JldHVybiBsfXRyYW5zYWN0aW9uKGwpe3JldHVybiBsfWNyZWF0ZUV4dGVuc2lvbihsKXtyZXR1cm4gbH1jcmVhdGVJbmRleChsKXtjb25zdCBiPXUobC5leHByZXNzaW9ucyxoPT57Y29uc3Qgdz10aGlzLmV4cHIoaC5leHByZXNzaW9uKTtyZXR1cm4gdz09PWguZXhwcmVzc2lvbj9oOnc/ey4uLmgsZXhwcmVzc2lvbjp3fTpudWxsfSk7cmV0dXJuIGIhPW51bGwmJmIubGVuZ3RoP3IobCx7ZXhwcmVzc2lvbnM6Yn0pOm51bGx9cHJlcGFyZShsKXtjb25zdCBiPXRoaXMuc3RhdGVtZW50KGwuc3RhdGVtZW50KTtyZXR1cm4gYj9yKGwse2FyZ3M6dShsLmFyZ3MsaD0+dGhpcy5kYXRhVHlwZShoKSksc3RhdGVtZW50OmJ9KTpudWxsfWRlYWxsb2
14NhdGUobCl7cmV0dXJuIGx9YWx0ZXJJbmRleChsKXtyZXR1cm4gbH1hbHRlclRhYmxlKGwpe3ZhciBiO2NvbnN0IGg9dGhpcy50YWJsZVJlZihsLnRhYmxlKTtpZighaClyZXR1cm4gbnVsbDtsZXQgdz1bXSx2PSExO2ZvcihsZXQgQT0wO0E8KCgoYj1sLmNoYW5nZXMpPT09bnVsbHx8Yj09PXZvaWQgMD92b2lkIDA6Yi5sZW5ndGgpfHwwKTtBKyspe2NvbnN0IE49bC5jaGFuZ2VzW0FdLHg9dGhpcy50YWJsZUFsdGVyYXRpb24oTixsLnRhYmxlKTt2PXZ8fHghPU4seCYmdy5wdXNoKHgpfXJldHVybiB3Lmxlbmd0aD92P3IobCx7dGFibGU6aCxjaGFuZ2VzOnd9KTpsOm51bGx9dGFibGVBbHRlcmF0aW9uKGwsYil7c3dpdGNoKGwudHlwZSl7Y2FzZSJhZGQgY29sdW1uIjpyZXR1cm4gdGhpcy5hZGRDb2x1bW4obCxiKTtjYXNlImFkZCBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5hZGRDb25zdHJhaW50KGwsYik7Y2FzZSJhbHRlciBjb2x1bW4iOnJldHVybiB0aGlzLmFsdGVyQ29sdW1uKGwsYik7Y2FzZSJyZW5hbWUiOnJldHVybiB0aGlzLnJlbmFtZVRhYmxlKGwsYik7Y2FzZSJyZW5hbWUgY29sdW1uIjpyZXR1cm4gdGhpcy5yZW5hbWVDb2x1bW4obCxiKTtjYXNlInJlbmFtZSBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5yZW5hbWVDb25zdHJhaW50KGwsYik7Y2FzZSJkcm9wIGNvbHVtbiI6cmV0dXJuIHRoaXMuZHJvcENvbHVtbihsLGIpO2Nhc2UiZHJvcCBjb25zdHJhaW50IjpyZXR1cm4gdGhpcy5kcm9wQ29uc3RyYWludChsLGIpO2Nhc2Uib3duZXIiOnJldHVybiB0aGlzLnNldFRhYmxlT3duZXIobCxiKTtkZWZhdWx0OnRocm93IGEuTm90U3VwcG9ydGVkLm5ldmVyKGwpfX1kcm9wQ29sdW1uKGwsYil7cmV0dXJuIGx9ZHJvcENvbnN0cmFpbnQobCxiKXtyZXR1cm4gbH1zZXRUYWJsZU93bmVyKGwsYil7cmV0dXJuIGx9cmVuYW1lQ29uc3RyYWludChsLGIpe3JldHVybiBsfXJlbmFtZUNvbHVtbihsLGIpe3JldHVybiBsfXJlbmFtZVRhYmxlKGwsYil7cmV0dXJuIGx9YWx0ZXJDb2x1bW4obCxiKXtsZXQgaDtzd2l0Y2gobC5hbHRlci50eXBlKXtjYXNlInNldCBkZWZhdWx0IjpoPXRoaXMuc2V0Q29sdW1uRGVmYXVsdChsLmFsdGVyLGIsbC5jb2x1bW4pO2JyZWFrO2Nhc2Uic2V0IHR5cGUiOmg9dGh
14pcy5zZXRDb2x1bW5UeXBlKGwuYWx0ZXIsYixsLmNvbHVtbik7YnJlYWs7Y2FzZSJkcm9wIGRlZmF1bHQiOmNhc2Uic2V0IG5vdCBudWxsIjpjYXNlImRyb3Agbm90IG51bGwiOmg9dGhpcy5hbHRlckNvbHVtblNpbXBsZShsLmFsdGVyLGIsbC5jb2x1bW4pO2JyZWFrO2Nhc2UiYWRkIGdlbmVyYXRlZCI6aD10aGlzLmFsdGVyQ29sdW1uQWRkR2VuZXJhdGVkKGwuYWx0ZXIsYixsLmNvbHVtbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBhLk5vdFN1cHBvcnRlZC5uZXZlcihsLmFsdGVyKX1yZXR1cm4gaD9yKGwse2FsdGVyOmh9KTpudWxsfXNldENvbHVtblR5cGUobCxiLGgpe2NvbnN0IHc9dGhpcy5kYXRhVHlwZShsLmRhdGFUeXBlKTtyZXR1cm4gcihsLHtkYXRhVHlwZTp3fSl9YWx0ZXJDb2x1bW5BZGRHZW5lcmF0ZWQobCxiLGgpe3JldHVybiBsfWFsdGVyQ29sdW1uU2ltcGxlKGwsYixoKXtyZXR1cm4gbH1zZXRDb2x1bW5EZWZhdWx0KGwsYixoKXtjb25zdCB3PXRoaXMuZXhwcihsLmRlZmF1bHQpO3JldHVybiB3P3IobCx7ZGVmYXVsdDp3fSk6bnVsbH1hZGRDb25zdHJhaW50KGwsYil7cmV0dXJuIGx9YWRkQ29sdW1uKGwsYil7Y29uc3QgaD10aGlzLmNyZWF0ZUNvbHVtbihsLmNvbHVtbik7cmV0dXJuIGg/cihsLHtjb2x1bW46aH0pOm51bGx9Y3JlYXRlQ29sdW1uKGwpe3ZhciBiO2NvbnN0IGg9dGhpcy5kYXRhVHlwZShsLmRhdGFUeXBlKTtpZighaClyZXR1cm4gbnVsbDtjb25zdCB3PShiPXUobC5jb25zdHJhaW50cyx2PT50aGlzLmNvbnN0cmFpbnQodikpKSE9PW51bGwmJmIhPT12b2lkIDA/Yjp2b2lkIDA7cmV0dXJuIHIobCx7ZGF0YVR5cGU6aCxjb25zdHJhaW50czp3fSl9c2VsZWN0KGwpe3N3aXRjaChsLnR5cGUpe2Nhc2Uic2VsZWN0IjpyZXR1cm4gdGhpcy5zZWxlY3Rpb24obCk7Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOnJldHVybiB0aGlzLnVuaW9uKGwpO2Nhc2Uid2l0aCI6cmV0dXJuIHRoaXMud2l0aChsKTtjYXNlInZhbHVlcyI6cmV0dXJuIHRoaXMudmFsdWVzKGwpO2Nhc2Uid2l0aCByZWN1cnNpdmUiOnJldHVybiB0aGlzLndpdGhSZWN1cnNpdmUobCk7ZGVmYXVsdDp0aHJvdyBhLk5vdFN1cHBvcnRlZC5uZXZlcihsKX19c2VsZWN0aW9uKGwpe3ZhciBiLGg7Y29uc3Qgdz11KGwuZnJvbSxDPT50aGlzLmZyb20oQykpLHY9dShsLmNvbHVtbnMsQz0+dGhpcy5zZWxlY3Rpb25Db2x1bW4oQykpLEE9bC53aGVyZSYmdGhpcy5leHByKGwud2hlcmUpLE49dShsLmdyb3VwQnksQz0+dGhpcy5leHByKEMpKSx4PWwuaGF2aW5nJiZ0aGlzLmV4cHIobC5oYXZpbmcpLGc9dGhpcy5vcmRlckJ5KGwub3JkZXJCeSksRT1yKGwubGltaXQse2xpbWl0OnRoaXMuZXhwcigoYj1sLmxpbWl0KT09PW51bGx8fGI9PT12b2lkIDA/dm9pZCAwOmIubGltaXQpLG9mZnNldDp0aGlzLmV4cHIoKGg9bC5saW1pdCk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLm9mZnNldCl9KTtyZXR1cm4gcihsLHtmcm9tOncsY29sdW1uczp2LHdoZXJlOkEsZ3JvdXBCeTpOLGhhdmluZzp4LG9yZGVyQnk6ZyxsaW1pdDpFfSl9b3JkZXJCeShsKXtyZXR1cm4gdShsLGI9Pntjb25zdCBoPXRoaXMuZXhwcihiLmJ5KTtyZXR1cm4gaD9oPT09Yi5ieT9iOnsuLi5iLGJ5Omh9Om51bGx9KX11bmlvbihsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwubGVmdCksaD10aGlzLnNlbGVjdChsLnJpZ2h0KTtyZXR1cm4hYnx8IWg/Yj8/aDpyKGwse2xlZnQ6YixyaWdodDpofSl9d2l0aChsKXtjb25zdCBiPXUobC5iaW5kLHc9Pntjb25zdCB2PXRoaXMuc3RhdGVtZW50KHcuc3RhdGVtZW50KTtyZXR1cm4gZih2KT9yKHcse3N0YXRlbWVudDp2fSk6bnVsbH0pO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IGg9dGhpcy5zdGF0ZW1lbnQobC5pbik7cmV0dXJuIGYoaCk/cihsLHtiaW5kOmIsaW46aH0pOm51bGx9d2l0aFJlY3Vyc2l2ZShsKXtjb25zdCBiPXRoaXMudW5pb24obC5iaW5kKTtpZighYnx8Yi50eXBlIT09InVuaW9uIiYmYi50eXBlIT09InVuaW9uIGFsbCIpcmV0dXJuIG51bGw7Y29uc3QgaD10aGlzLnN0YXRlbWVudChsLmluKTtyZXR1cm4gZihoKT9yKGwse2JpbmQ6YixpbjpofSk6bnVsbH1mcm9tKGwpe3N3aXRjaChsLnR5cGUpe2Nhc2UidGFibGUiOnJldHVybiB0aGlzLmZyb21UYWJsZShsKTtjYXNlInN0YXRlbWVudCI6cmV0dXJuIHRoaXMuZnJvbVN0YXRlbWVudChsKTtjYXNlImNhbGwiOnJldHVybiB0aGlzLmZyb21DYWxsKGwpO2RlZmF1bHQ6dGhyb3cgYS5Ob3RTdXBwb3J0ZWQubmV2ZXIobCl9fWZyb21DYWxsKGwpe2NvbnN0IGI9dGhpcy5jYWxsKGwpO3JldHVybiFifHxiLnR5cGUhPT0iY2FsbCI/bnVsbDpyKGwsYil9ZnJvbVN0YXRlbWVudChsKXtjb25zdCBiPXRoaXMuc2VsZWN0KGwuc3RhdGVtZW50KTtpZighYilyZXR1cm4gbnVsbDtjb25zdCBoPWwuam9pbiYmdGhpcy5qb2luKGwuam9pbik7cmV0dXJuIHIobCx7c3RhdGVtZW50OmIsam9pbjpofSl9dmFsdWVzKGwpe2NvbnN0IGI9dShsLnZhbHVlcyxoPT51KGgsdz0+dGhpcy5leHByKHcpKSk7cmV0dXJuIGIhPW51bGwmJmIubGVuZ3RoP3IobCx7dmFsdWVzOmJ9KTpudWxsfWpvaW4obCl7Y29uc3QgYj1sLm9uJiZ0aGlzLmV4cHIobC5vbik7cmV0dXJuIWImJiFsLnVzaW5nP2w6cihsLHtvbjpifSl9ZnJvbVRhYmxlKGwpe2NvbnN0IGI9dGhpcy50YWJsZVJlZihsLm5hbWUpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IGg9bC5qb2luJiZ0aGlzLmpvaW4obC5qb2luKTtyZXR1cm4gcihsLHtuYW1lOmIsam9pbjpofSl9c2VsZWN0aW9uQ29sdW1uKGwpe2NvbnN0IGI9dGhpcy5leHByKGwuZXhwcik7cmV0dXJuIGI/cihsLHtleHByOmJ9KTpudWxsfWV4cHIobCl7aWYoIWwpcmV0dXJuIGw7c3dpdGNoKGwudHlwZSl7Y2FzZSJiaW5hcnkiOnJldHVybiB0aGlzLmJpbmFyeShsKTtjYXNlInVuYXJ5IjpyZXR1cm4gdGhpcy51bmFyeShsKTtjYXNlInJlZiI6cmV0dXJuIHRoaXMucmVmKGwpO2Nhc2Uic3RyaW5nIjpjYXNlIm51bWVyaWMiOmNhc2UiaW50ZWdlciI6Y2FzZSJib29sZWFuIjpjYXNlImNvbnN0YW50IjpjYXNlIm51bGwiOnJldHVybiB0aGlzLmNvbnN0YW50KGwpO2Nhc2UibGlzdCI6Y2FzZSJhcnJheSI6cmV0dXJuIHRoaXMuYXJyYXkobCk7Y2FzZSJhcnJheSBzZWxlY3QiOnJldHVybi
14B0aGlzLmFycmF5U2VsZWN0KGwpO2Nhc2UiY2FsbCI6cmV0dXJuIHRoaXMuY2FsbChsKTtjYXNlImNhc3QiOnJldHVybiB0aGlzLmNhc3QobCk7Y2FzZSJjYXNlIjpyZXR1cm4gdGhpcy5jYXNlKGwpO2Nhc2UibWVtYmVyIjpyZXR1cm4gdGhpcy5tZW1iZXIobCk7Y2FzZSJhcnJheUluZGV4IjpyZXR1cm4gdGhpcy5hcnJheUluZGV4KGwpO2Nhc2UidGVybmFyeSI6cmV0dXJuIHRoaXMudGVybmFyeShsKTtjYXNlInNlbGVjdCI6Y2FzZSJ1bmlvbiI6Y2FzZSJ1bmlvbiBhbGwiOmNhc2Uid2l0aCI6Y2FzZSJ3aXRoIHJlY3Vyc2l2ZSI6cmV0dXJuIHRoaXMuc2VsZWN0KGwpO2Nhc2Uia2V5d29yZCI6cmV0dXJuIHRoaXMudmFsdWVLZXl3b3JkKGwpO2Nhc2UicGFyYW1ldGVyIjpyZXR1cm4gdGhpcy5wYXJhbWV0ZXIobCk7Y2FzZSJleHRyYWN0IjpyZXR1cm4gdGhpcy5leHRyYWN0KGwpO2Nhc2Uib3ZlcmxheSI6cmV0dXJuIHRoaXMuY2FsbE92ZXJsYXkobCk7Y2FzZSJzdWJzdHJpbmciOnJldHVybiB0aGlzLmNhbGxTdWJzdHJpbmcobCk7Y2FzZSJ2YWx1ZXMiOnJldHVybiB0aGlzLnZhbHVlcyhsKTtjYXNlImRlZmF1bHQiOnJldHVybiB0aGlzLmRlZmF1bHQobCk7ZGVmYXVsdDp0aHJvdyBhLk5vdFN1cHBvcnRlZC5uZXZlcihsKX19YXJyYXlTZWxlY3QobCl7Y29uc3QgYj10aGlzLnNlbGVjdChsLnNlbGVjdCk7cmV0dXJuIGI/cihsLHtzZWxlY3Q6Yn0pOm51bGx9ZXh0cmFjdChsKXtjb25zdCBiPXRoaXMuZXhwcihsLmZyb20pO3JldHVybiBiP3IobCx7ZnJvbTpifSk6bnVsbH12YWx1ZUtleXdvcmQobCl7cmV0dXJuIGx9dGVybmFyeShsKXtjb25zdCBiPXRoaXMuZXhwcihsLnZhbHVlKSxoPXRoaXMuZXhwcihsLmxvKSx3PXRoaXMuZXhwcihsLmhpKTtyZXR1cm4hYnx8IWh8fCF3P251bGw6cihsLHt2YWx1ZTpiLGxvOmgsaGk6d30pfXBhcmFtZXRlcihsKXtyZXR1cm4gbH1hcnJheUluZGV4KGwpe2NvbnN0IGI9dGhpcy5leHByKGwuYXJyYXkpLGg9dGh
14pcy5leHByKGwuaW5kZXgpO3JldHVybiFifHwhaD9udWxsOnIobCx7YXJyYXk6YixpbmRleDpofSl9bWVtYmVyKGwpe2NvbnN0IGI9dGhpcy5leHByKGwub3BlcmFuZCk7cmV0dXJuIGI/cihsLHtvcGVyYW5kOmJ9KTpudWxsfWNhc2UobCl7Y29uc3QgYj1sLnZhbHVlJiZ0aGlzLmV4cHIobC52YWx1ZSksaD11KGwud2hlbnMsdj0+e2NvbnN0IEE9dGhpcy5leHByKHYud2hlbiksTj10aGlzLmV4cHIodi52YWx1ZSk7cmV0dXJuIUF8fCFOP251bGw6cih2LHt2YWx1ZTpOLHdoZW46QX0pfSk7aWYoIShoIT1udWxsJiZoLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3Qgdz1sLmVsc2UmJnRoaXMuZXhwcihsLmVsc2UpO3JldHVybiByKGwse3ZhbHVlOmIsd2hlbnM6aCxlbHNlOnd9KX1jYXN0KGwpe2NvbnN0IGI9dGhpcy5leHByKGwub3BlcmFuZCk7cmV0dXJuIGI/cihsLHtvcGVyYW5kOmJ9KTpudWxsfWNhbGwobCl7Y29uc3QgYj11KGwuYXJncyx2PT50aGlzLmV4cHIodikpO2lmKCFiKXJldHVybiBudWxsO2NvbnN0IGg9dGhpcy5vcmRlckJ5KGwub3JkZXJCeSksdz10aGlzLmV4cHIobC5maWx0ZXIpO3JldHVybiByKGwse2FyZ3M6YixvcmRlckJ5OmgsZmlsdGVyOnd9KX1jYWxsU3Vic3RyaW5nKGwpe3JldHVybiByKGwse3ZhbHVlOnRoaXMuZXhwcihsLnZhbHVlKSxmcm9tOnRoaXMuZXhwcihsLmZyb20pLGZvcjp0aGlzLmV4cHIobC5mb3IpfSl9Y2FsbE92ZXJsYXkobCl7cmV0dXJuIHIobCx7dmFsdWU6dGhpcy5leHByKGwudmFsdWUpLHBsYWNpbmc6dGhpcy5leHByKGwucGxhY2luZyksZnJvbTp0aGlzLmV4cHIobC5mcm9tKSxmb3I6dGhpcy5leHByKGwuZm9yKX0pfWFycmF5KGwpe2NvbnN0IGI9dShsLmV4cHJlc3Npb25zLGg9PnRoaXMuZXhwcihoKSk7cmV0dXJuIGI/cihsLHtleHByZXNzaW9uczpifSk6bnVsbH1jb25zdGFudChsKXtyZXR1cm4gbH1kZWZhdWx0KGwpe3JldHVybiBsfXJlZihsKXtyZXR1cm4gbH11bmFyeShsKXtjb25zdCBiPXRoaXMuZXhwcihsLm9wZXJhbmQpO3JldHVybiBiP3IobCx7b3BlcmFuZDpifSk6bnVsbH1iaW5hcnkobCl7Y29uc3QgYj10aGlzLmV4cHIobC5sZWZ0KSxoPXRoaXMuZXhwcihsLnJpZ2h0KTtyZXR1cm4hYnx8IWg/bnVsbDpyKGwse2xlZnQ6YixyaWdodDpofSl9fW8uQXN0RGVmYXVsdE1hcHBlcj1kO2NvbnN0IHQ9ZC5wcm90b3R5cGU7Zm9yKGNvbnN0IF8gb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkpe2NvbnN0IGw9dFtfXTtfPT09ImNvbnN0cnVjdG9yInx8Xz09PSJzdXBlciJ8fHR5cGVvZiBsIT0iZnVuY3Rpb24ifHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxfLHtjb25maWd1cmFibGU6ITEsZ2V0KCl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3ZhciBoO2lmKHRoaXMuc2tpcE5leHQpcmV0dXJuIHRoaXMuc2tpcE5leHQ9ITEsbC5hcHBseSh0aGlzLGIpO2NvbnN0IHc9KGg9dGhpcy53cmFwcGVkKT09PW51bGx8fGg9PT12b2lkIDA/dm9pZCAwOmhbX107cmV0dXJuIHc/dy5hcHBseSh0aGlzLndyYXBwZWQsYik6bC5hcHBseSh0aGlzLGIpfX19KX1jbGFzcyAkIGV4dGVuZHMgZHtjb25zdHJ1Y3RvcihsKXtzdXBlcigpLHRoaXMucGFyZW50PWx9fWZvcihjb25zdCBfIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpKXtjb25zdCBsPXRbX107Xz09PSJjb25zdHJ1Y3RvciJ8fF89PT0ic3VwZXIifHx0eXBlb2YgbCE9ImZ1bmN0aW9uInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KCQucHJvdG90eXBlLF8se2NvbmZpZ3VyYWJsZTohMSxnZXQoKXtyZXR1cm4gZnVuY3Rpb24oLi4uYil7cmV0dXJuIHRoaXMucGFyZW50LnNraXBOZXh0PSEwLGwuYXBwbHkodGhpcy5wYXJlbnQsYil9fX0pfX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLnNxbEtleXdvcmRzPXZvaWQgMCxvLnNxbEtleXdvcmRzPVsiQUxMIiwiQU5BTFlTRSIsIkFOQUxZWkUiLCJBTkQiLCJBTlkiLCJBUlJBWSIsIkFTIiwiQVNDIiwiQVNZTU1FVFJJQyIsIkFVVEhPUklaQVRJT04iLCJCSU5BUlkiLCJCT1RIIiwiQ0FTRSIsIkNBU1QiLCJDSEVDSyIsIkNPTExBVEUiLCJDT0xMQVRJT04iLCJDT05DVVJSRU5UTFkiLCJDT05TVFJBSU5UIiwiQ1JFQVRFIiwiQ1JPU1MiLCJDVVJSRU5UX0NBVEFMT0ciLCJDVVJSRU5UX0RBVEUiLCJDVVJSRU5UX1JPTEUiLCJDVVJSRU5UX1NDSEVNQSIsIkNVUlJFTlRfVElNRSIsIkNVUlJFTlRfVElNRVNUQU1QIiwiQ1VSUkVOVF9VU0VSIiwiREVGQVVMVCIsIkRFRkVSUkFCTEUiLCJERVNDIiwiRElTVElOQ1QiLCJETyIsIkVMU0UiLCJFTkQiLCJFWENFUFQiLCJGQUxTRSIsIkZFVENIIiwiRk9SIiwiRk9SRUlHTiIsIkZSRUVaRSIsIkZST00iLCJGVUxMIiwiR1JBTlQiLCJHUk9VUCIsIkhBVklORyIsIklMSUtFIiwiSU4iLCJJTklUSUFMTFkiLCJJTk5FUiIsIklOVEVSU0VDVCIsIklOVE8iLCJJUyIsIklTTlVMTCIsIkpPSU4iLCJMQVRFUkFMIiwiTEVBRElORyIsIkxFRlQiLCJMSUtFIiwiTElNSVQiLCJMT0NBTFRJTUUiLCJMT0NBTFRJTUVTVEFNUCIsIk5BVFVSQUwiLCJOT1QiLCJOT1ROVUxMIiwiTlVMTCIsIk9GRlNFVCIsIk9OIiwiT05MWSIsIk9SIiwiT1JERVIiLCJPVVRFUiIsIk9WRVJMQVBTIiwiUExBQ0lORyIsIlBSSU1BUlkiLCJSRUZFUkVOQ0VTIiwiUkVUVVJOSU5HIiwiUklHSFQiLCJTRUxFQ1QiLCJTRVNTSU9OX1VTRVIiLCJTSU1JTEFSIiwiU09NRSIsIlNZTU1FVFJJQyIsIlRBQkxFIiwiVEFCTEVTQU1QTEUiLCJUSEVOIiwiVE8iLCJUUkFJTElORyIsIlRSVUUiLCJVTklPTiIsIlVOSVFVRSIsIlVTRVIiLCJVU0lORyIsIlZBUklBRElDIiwiVkVSQk9TRSIsIldIRU4iLCJXSEVSRSIsIldJTkRPVyIsIldJVEgiLCJQUkVDSVNJT04iXX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmludGVydmFsVG9TdHJpbmc9by5ub3JtYWxpemVJbnRlcnZhbD1vLmJ1aWxkSW50ZXJ2YWw9dm9pZCAwO2NvbnN0IGE9W1sieWVhcnMiLDEyXSxbIm1vbnRocyIsMzBdLFsiZGF5cyIsMjRdLFsiaG91cnMiLDYwXSxbIm1pbnV0ZXMiLDYwXSxbInNlY29uZHMiLDFlM10sWyJtaWxsaXNlY29uZHMiLDBdXTtmdW5jdGlvbipzKCQpe2lmKHR5cGVvZiAkWzFdPT0ibnVtYmVyIil5aWVsZCAkO2Vsc2UgZm9yKGNvbnN0IF8gb2YgJCl5aWVsZCpzKF8pfWZ1bmN0aW9uIHIoJCxfKXt2YXIgbDtjb25zdCBiPXt9O2lmKF89PT0iaW52YWxpZCIpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlcnZhbDogIiR7JH0iYCk7Zm9yKGNvbnN0W2gsd11vZiBzKF8pKWJbaF09KChsPWJbaF0pIT09bnVsbCYmbCE9PXZvaWQgMD9sOjApK3c7cmV0dXJuIGJ9by5idWlsZEludGVydmFsPXI7ZnVuY3Rpb24gdSgkKXt2YXIgXyxsLGIsaCx3LHYsQSxOLHg7Y29uc3QgZz17Li4uJH07Zm9yKGxldCBxPTA7cTxhLmxlbmd0aDtxKyspe2NvbnN0W2UscF09YVtxXSxuPShfPWdbZV0pIT09bnVsbCYmXyE9PXZvaWQgMD9fOjAseT1uPj0wP01hdGguZmxvb3Iobik6TWF0aC5jZWlsKG4pO2lmKCFufHx5PT09biljb250aW51ZTtjb25zdCBrPShsPWFbcSsxXSk9PT
141udWxsfHxsPT09dm9pZCAwP3ZvaWQgMDpsWzBdO2smJihnW2tdPSgoYj1nW2tdKSE9PW51bGwmJmIhPT12b2lkIDA/YjowKStwKihuLXkpKSxnW2VdPXl9aWYoZy5tb250aHN8fGcueWVhcnMpe2NvbnN0IHE9KChoPWcubW9udGhzKSE9PW51bGwmJmghPT12b2lkIDA/aDowKSsoKHc9Zy55ZWFycykhPT1udWxsJiZ3IT09dm9pZCAwP3c6MCkqMTI7Zy5tb250aHM9cSUxMixnLnllYXJzPShxLWcubW9udGhzKS8xMn1sZXQgRT0oKHY9Zy5ob3VycykhPT1udWxsJiZ2IT09dm9pZCAwP3Y6MCkqMzYwMCsoKEE9Zy5taW51dGVzKSE9PW51bGwmJkEhPT12b2lkIDA/QTowKSo2MCsoKE49Zy5zZWNvbmRzKSE9PW51bGwmJk4hPT12b2lkIDA/TjowKSsoKHg9Zy5taWxsaXNlY29uZHMpIT09bnVsbCYmeCE9PXZvaWQgMD94OjApLzFlMyxDPTE7RTwwJiYoQz0tMSxFPS1FKSxFPj0zNjAwPyhnLmhvdXJzPUMqTWF0aC5mbG9vcihFLzM2MDApLEUtPUMqZy5ob3VycyozNjAwKTpkZWxldGUgZy5ob3VycyxFPj02MD8oZy5taW51dGVzPUMqTWF0aC5mbG9vcihFLzYwKSxFLT1DKmcubWludXRlcyo2MCk6ZGVsZXRlIGcubWludXRlcyxFPjA/KGcuc2Vjb25kcz1DKk1hdGguZmxvb3IoRSksRS09QypnLnNlY29uZHMpOmRlbGV0ZSBnLnNlY29uZHMsRT4wP2cubWlsbGlzZWNvbmRzPUMqTWF0aC5yb3VuZChFKjFlMyk6ZGVsZXRlIGcubWlsbGlzZWNvbmRzO2Zvcihjb25zdFtxXW9mIGEpZ1txXXx8ZGVsZXRlIGdbcV07cmV0dXJuIGd9by5ub3JtYWxpemVJbnRlcnZhbD11O2Z1bmN0aW9uIGYoJCl7dmFyIF8sbCxiOyQ9dSgkKTtjb25zdCBoPVtdO2lmKCQueWVhcnMmJmgucHVzaCgkLnllYXJzPT09MT8iMSB5ZWFyIjokLnllYXJzKyIgeWVhcnMiKSwkLm1vbnRocyYmaC5wdXNoKCQubW9udGhzPT09MT8iMSBtb250aCI6JC5tb250aHMrIiBtb250aHMiKSwkLmRheXMmJmgucHVzaCgkLmRheXM9PT0xPyIxIGRheSI6JC5kYXlzKyIgZGF5cyIpLCQuaG91cnN8fCQubWludXRlc3x8JC5zZWNvbmRzfHwkLm1pbGxpc2Vjb25kcyl7bGV0IHc9YCR7ZCgoXz0kLmhvdXJzKSE9PW51bGwmJl8hPT12b2lkIDA/XzowKX06JHtkKChsPSQubWludXRlcykhPT1udWxsJiZsIT09dm9pZCAwP2w6MCl9OiR7ZCgoYj0kLnNlY29uZHMpIT09bnVsbCYmYiE9PXZvaWQgMD9iOjApfWA7JC5taWxsaXNlY29uZHMmJih3PXcrKCQubWlsbGlzZWNvbmRzLzFlMykudG9TdHJpbmcoKS5zdWJzdHIoMSkpLCh0KCQuaG91cnMpfHx0KCQubWludXRlcyl8fHQoJC5zZWNvbmRzKXx8dCgkLm1pbGxpc2Vjb25kcykpJiYodz0iLSIrdyksaC5wdXNoKHcpfXJldHVybiBoLmpvaW4oIiAiKX1vLmludGVydmFsVG9TdHJpbmc9ZjtmdW5jdGlvbiBkKCQpe3JldHVybiAkPU1hdGguYWJzKCQpLCQ8MTA/IjAiKyQ6JC50b1N0cmluZygpfWZ1bmN0aW9uIHQoJCl7cmV0dXJuICQmJiQ8MH19LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby5hc3RWaXNpdG9yPXZvaWQgMDtjb25zdCBhPWkoMik7Y2xhc3Mgc3tzdXBlcigpe3JldHVybiBuZXcgdSh0aGlzKX19Y29uc3Qgcj1hLkFzdERlZmF1bHRNYXBwZXIucHJvdG90eXBlO2Zvcihjb25zdCBkIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpKXtjb25zdCB0PXJbZF07ZD09PSJjb25zdHJ1Y3RvciJ8fGQ9PT0ic3VwZXIifHx0eXBlb2YgdCE9ImZ1bmN0aW9uInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLGQse2NvbmZpZ3VyYWJsZTohMSxnZXQoKXtyZXR1cm4gZnVuY3Rpb24oLi4uJCl7Y29uc3QgXz10aGlzLnZpc2l0b3JbZF07cmV0dXJuIF8/KF8uYXBwbHkodGhpcy52aXNpdG9yLCQpLCRbMF0pOnQuYXBwbHkodGhpcywkKX19fSl9Y2xhc3MgdXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnBhcmVudD10fX1mb3IoY29uc3QgZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKSl7Y29uc3QgdD1yW2RdO2Q9PT0iY29uc3RydWN0b3IifHxkPT09InN1cGVyInx8dHlwZW9mIHQhPSJmdW5jdGlvbiJ8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSxkLHtjb25maWd1cmFibGU6ITEsZ2V0KCl7cmV0dXJuIGZ1bmN0aW9uKC4uLiQpe3JldHVybiB0LmFwcGx5KHRoaXMucGFyZW50LCQpfX19KX1mdW5jdGlvbiBmKGQpe3JldHVybigwLGEuYXN0TWFwcGVyKSh0PT57Y29uc3QgJD1uZXcgcztyZXR1cm4gJC5tYXBwZXI9dCwkLnZpc2l0b3I9ZCgkKSwkfSl9by5hc3RWaXNpdG9yPWZ9LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby50cmltTnVsbGlzaD1vLk5vdFN1cHBvcnRlZD12b2lkIDA7Y2xhc3MgYSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHUpe3N1cGVyKCJOb3Qgc3VwcG9ydGVkIisodT8iOiAiK3U6IiIpKX1zdGF0aWMgbmV2ZXIodSxmKXtyZXR1cm4gbmV3IGEoYCR7Zj8/IiJ9ICR7SlNPTi5zdHJpbmdpZnkodSl9YCl9fW8uTm90U3VwcG9ydGVkPWE7ZnVuY3Rpb24gcyhyLHU9NSl7aWYodTwwfHwociBpbnN0YW5jZW9mIEFycmF5JiZyLmZvckVhY2goZj0+cyhmLHUtMSkpLHR5cGVvZiByIT0ib2JqZWN0Inx8ciBpbnN0YW5jZW9mIERhdGUpfHwhcilyZXR1cm4gcjtmb3IoY29uc3QgZiBvZiBPYmplY3Qua2V5cyhyKSl7Y29uc3QgZD1yW2ZdO2Q9PW51bGw/ZGVsZXRlIHJbZl06cyhkLHUtMSl9cmV0dXJuIHJ9by50cmltTnVsbGlzaD1zfSxmdW5jdGlvbihjLG8saSl7dmFyIGE9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKCQsXyxsLGIpe2I9PT12b2lkIDAmJihiPWwpO3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXyxsKTsoIWh8fCgiZ2V0ImluIGg/IV8uX19lc01vZHVsZTpoLndyaXRhYmxlfHxoLmNvbmZpZ3VyYWJsZSkpJiYoaD17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX1tsXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxiLGgpfTpmdW5jdGlvbigkLF8sbCxiKXtiPT09dm9pZCAwJiYoYj1sKSwkW2JdPV9bbF19KSxzPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbigkLF8pe2Zvcih2YXIgbCBpbiAkKWwhPT0iZGVmYXVsdCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXyxsKSYmYShfLCQsbCl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLm5vcm1hbGl6ZUludGVydmFsPW8uaW50ZXJ2YWxUb1N0cmluZz1vLnRvU3FsPW8uYXN0TWFwcGVyPW8uYXNzaWduQ2hhbmdlZD1vLmFycmF5TmlsTWFwPW8uYXN0VmlzaXRvcj1vLnBhcnNlV2l0aENvbW1lbnRzPW8ucGFyc2VJbnRlcnZhbExpdGVyYWw9by5wYXJzZUdlb21ldHJpY0xpdGVyYWw9by5wYXJzZUFycmF5TGl0ZXJhbD1vLnBhcnNlRmlyc3Q9by5wYXJzZT12b2lkIDA7dmFyIHI9aSg4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobywicGFyc2UiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnBhcnNlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUZpcnN0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZU
14ZpcnN0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUFycmF5TGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VBcnJheUxpdGVyYWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInBhcnNlR2VvbWV0cmljTGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VHZW9tZXRyaWNMaXRlcmFsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJwYXJzZUludGVydmFsTGl0ZXJhbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VJbnRlcnZhbExpdGVyYWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInBhcnNlV2l0aENvbW1lbnRzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZVdpdGhDb21tZW50c319KTt2YXIgdT1pKDUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJhc3RWaXNpdG9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5hc3RWaXNpdG9yfX0pO3ZhciBmPWkoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImFycmF5TmlsTWFwIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZi5hcnJheU5pbE1hcH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobywiYXNzaWduQ2hhbmdlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuYXNzaWduQ2hhbmdlZH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobywiYXN0TWFwcGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZi5hc3RNYXBwZXJ9fSk7dmFyIGQ9aSgxOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sInRvU3FsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC50b1NxbH19KSxzKGkoMjEpLG8pO3ZhciB0PWkoNCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImludGVydmFsVG9TdHJpbmciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LmludGVydmFsVG9TdHJpbmd9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIm5vcm1hbGl6ZUludGVydmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5ub3JtYWxpemVJbnRlcnZhbH19KX0sZnVuY3Rpb24oYyxvLGkpe3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLnBhcnNlR2VvbWV0cmljTGl0ZXJhbD1vLnBhcnNlSW50ZXJ2YWxMaXRlcmFsPW8ucGFyc2VBcnJheUxpdGVyYWw9by5wYXJzZT1vLnBhcnNlV2l0aENvbW1lbnRzPW8ucGFyc2VGaXJzdD12b2lkIDA7Y29uc3Qgcz1pKDkpLHI9YShpKDEwKSksdT1hKGkoMTEpKSxmPWEoaSgxMykpLGQ9YShpKDE1KSksdD1hKGkoMTcpKSwkPWkoNCksXz1pKDEpO2xldCBsLGIsaCx3LHY7ZnVuY3Rpb24gQShlKXtyZXR1cm4geChlKVswXX1vLnBhcnNlRmlyc3Q9QTtmdW5jdGlvbiBOKGUscCl7cmV0dXJuKDAsXy50cmFja2luZ0NvbW1lbnRzKSgoKT0+eChlLHApKX1vLnBhcnNlV2l0aENvbW1lbnRzPU47ZnVuY3Rpb24geChlLHApe2x8fChsPXMuR3JhbW1hci5mcm9tQ29tcGlsZWQoci5kZWZhdWx0KSk7Y29uc3Qgbj10eXBlb2YgcD09InN0cmluZyI/cDpwPT1udWxsP3ZvaWQgMDpwLmVudHJ5LHk9dHlwZW9mIHA9PSJzdHJpbmciP251bGw6cCxrPSgpPT5xKGUsbCxuKTtsZXQgTz15IT1udWxsJiZ5LmxvY2F0aW9uVHJhY2tpbmc/KDAsXy50cmFja2luZykoayk6aygpO3JldHVybiB0eXBlb2YgcCE9InN0cmluZyImJiFBcnJheS5pc0FycmF5KE8pJiYoTz1bT10pLE99by5wYXJzZT14O2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGJ8fChiPXMuR3JhbW1hci5mcm9tQ29tcGlsZWQodS5kZWZhdWx0KSkscShlLGIpfW8ucGFyc2VBcnJheUxpdGVyYWw9ZztmdW5jdGlvbiBFKGUpe2lmKGUuc3RhcnRzV2l0aCgiUCIpKXJldHVybiB2fHwodj1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKHQuZGVmYXVsdCkpLCgwLCQuYnVpbGRJbnRlcnZhbCkoZSxxKGUsdikpO3t3fHwodz1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKGQuZGVmYXVsdCkpO2NvbnN0IHA9ZS50b0xvd2VyQ2FzZSgpO3JldHVybigwLCQuYnVpbGRJbnRlcnZhbCkoZSxxKHAsdykpfX1vLnBhcnNlSW50ZXJ2YWxMaXRlcmFsPUU7ZnVuY3Rpb24gQyhlLHApe3JldHVybiBofHwoaD1zLkdyYW1tYXIuZnJvbUNvbXBpbGVkKGYuZGVmYXVsdCkpLHEoZSxoLHApfW8ucGFyc2VHZW9tZXRyaWNMaXRlcmFsPUM7ZnVuY3Rpb24gcShlLHAsbil7dHJ5e3Auc3RhcnQ9bj8/Im1haW4iO2NvbnN0IHk9bmV3IHMuUGFyc2VyKHApO3kuZmVlZChlKTtjb25zdCBrPXkuZmluaXNoKCk7aWYoay5sZW5ndGgpe2lmKGsubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoYPCfkoAgQW1iaWd1b3VzIFNRTCBzeW50YXg6IFBsZWFzZSBmaWxlIGFuIGlzc3VlIHN0YXRpbmcgdGhlIHJlcXVlc3QgdGhhdCBoYXMgZmFpbGVkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vZ3VpbWJhbC9wZ3NxbC1hc3QtcGFyc2VyOgoKICAgICAgICAke2V9CgogICAgICAgIGApfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpO3JldHVybiBrWzBdfWNhdGNoKHkpe2lmKHR5cGVvZih5PT1udWxsP3ZvaWQgMDp5Lm1lc3NhZ2UpIT0ic3RyaW5nIil0aHJvdyB5O2xldCBrPXkubWVzc2FnZSxPPW51bGw7Y29uc3QgUj1bXSxMPS9BICguKykgdG9rZW4gYmFzZWQgb246L2c7bGV0IEk7Zm9yKDtJPUwuZXhlYyhrKTspTz1PPz9rLnN1YnN0cigwLEkuaW5kZXgpLFIucHVzaChgICAgIC0gQSAiJHtJWzFdfSIgdG9rZW5gKTt0aHJvdyBPJiYoaz1PK1Iuam9pbihgCmApK2AKCmApLHkubWVzc2FnZT1rLHl9fX0sZnVuY3Rpb24oYyxvKXtjLmV4cG9ydHM9bnQoKX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBhKGUpe3JldHVybiBlWzBdfW
14NvbnN0IHM9aSgxKSxyPWkoMSk7ZnVuY3Rpb24gdShlKXtyZXR1cm4gZihlLHZvaWQgMCl9ZnVuY3Rpb24gZihlLHApe2NvbnN0IG49dyhlKTtyZXR1cm4hcHx8cC5sZW5ndGg9PT0wPygwLHIudHJhY2spKGUse25hbWU6bn0pOigwLHIudHJhY2spKGUse25hbWU6bixjb2x1bW5zOnAubWFwKHk9Pih7bmFtZTp3KHkpfSkpfSl9ZnVuY3Rpb24gZChlKXtjb25zdCBwPXcoZSk7cmV0dXJuKDAsci50cmFjaykoZSx7dmFsdWU6cH0pfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPT09MSYmKGU9dChlWzBdKSksQXJyYXkuaXNBcnJheShlKSYmIWUubGVuZ3RoP251bGw6KDAsci51bmJveCkoZSl9Y29uc3QgJD1lPT5wPT4oMCxyLnRyYWNrKShwLHBbZV0pLF89ZT0+QXJyYXkuaXNBcnJheShlKT8oMCxyLnRyYWNrKShlW2UubGVuZ3RoLTFdLGVbZS5sZW5ndGgtMV0pOmU7ZnVuY3Rpb24gbChlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBwPVtdO2Zvcihjb25zdCBuIG9mIGUpcC5wdXNoKC4uLmwobikpO3JldHVybiBwfXJldHVybiBlP1tlXTpbXX1mdW5jdGlvbiBiKGUpe3ZhciBwO3JldHVybiBlPSgwLHIudW5ib3gpKGUpLChwPWU9PW51bGw/dm9pZCAwOmUudmFsdWUpIT09bnVsbCYmcCE9PXZvaWQgMD9wOmV9ZnVuY3Rpb24gaChlKXtyZXR1cm4gbCgoMCxyLnVuYm94KShlKSkuZmlsdGVyKG49PiEhbikubWFwKG49PmIobikpLmZpbHRlcihuPT50eXBlb2Ygbj09InN0cmluZyIpLm1hcChuPT5uLnRyaW0oKSkuZmlsdGVyKG49PiEhbil9ZnVuY3Rpb24gdyhlLHApe3JldHVybiBoKGUpLmpvaW4ocHx8IiIpfWZ1bmN0aW9uIHYoZSl7Y29uc3QgcD17fTtmb3IoY29uc3Rbbix5XW9mIGUpcFtuXT15O3JldHVybiBwfWNvbnN0IEE9e3NlbnNpdGl2aXR5OiJhY2NlbnQifSxOPShlLHApPT5lLmxvY2FsZUNvbXBhcmUocCx2b2lkIDAsQSk9PT0wLHg9ZT0+KHAsbix5KT0+e2NvbnN0IGs9YihwWzBdKTtyZXR1cm4gTihrLGUpPygwLHIuYm94KShwLGUpOnl9LGc9eCxFPSguLi5lKT0+e2NvbnN0IHA9bmV3IFNldChlKTtyZXR1cm4obix5LGspPT57Y29uc3QgTz10eXBlb2YgblswXT09InN0cmluZyI/blswXTpuWzBdLnZhbHVlO3JldHVybiBwLmhhcyhPKT9POmt9fTtmdW5jdGlvbiBDKGUscCl7Y29uc3Qgbj1uZXcgU2V0LHk9cC5tYXAoci51bmJveCk7Zm9yKGNvbnN0W2ssT11vZiB5KXtpZihuLmhhcyhrKSl0aHJvdyBuZXcgRXJyb3IoImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIik7bi5hZGQoayksZVtrXT0oMCxyLnVuYm94KShPKX19Y29uc3QgcT17TGV4ZXI6cy5sZXhlckFueSxQYXJzZXJSdWxlczpbe25hbWU6ImxwYXJlbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW5dfSx7bmFtZToicnBhcmVuIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl19LHtuYW1lOiJudW1iZXIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZmxvYXQiXX0se25hbWU6Im51bWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6Im51bWJlciIsc3ltYm9sczpbIm51bWJlciRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZG90IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZG90Iik/e3R5cGU6ImRvdCJ9OmRvdF0scG9zdHByb2Nlc3M6YX0se25hbWU6ImZsb2F0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZmxvYXQiKT97dHlwZToiZmxvYXQifTpmbG9hdF0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUscGFyc2VGbG9hdCh0KGUpKSl9LHtuYW1lOiJpbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxwYXJzZUludCh0KGUpLDEwKSl9LHtuYW1lOiJjb21tYSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWFdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzdGFyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic3RhciIpP3t0eXBlOiJzdGFyIn06c3Rhcl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsZVswXS52YWx1ZSl9LHtuYW1lOiJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic3RyaW5nIik/e3R5cGU6InN0cmluZyJ9OnN0cmluZ119LHtuYW1lOiJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZVN0cmluZyIpP3t0eXBlOiJlU3RyaW5nIn06ZVN0cmluZ119LHtuYW1lOiJzdHJpbmciLHN5bWJvbHM6WyJzdHJpbmckc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsdChlWzBdKS52YWx1ZSl9LHtuYW1lOiJpZGVudCIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczokKDApfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ByaW1hcnkiKT97dHlwZToia3dfcHJpbWFyeSJ9Omt3X3ByaW1hcnldLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJwcmltYXJ5Iil9LHtuYW1lOiJ3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdW5pcXVlIik/e3R5cGU6Imt3X3VuaXF1ZSJ9Omt3X3VuaXF1ZV0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsInVuaXF1ZSIpfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInF1b3RlZF93b3JkIik/e3R5cGU6InF1b3RlZF93b3JkIn06cXVvdGVkX3dvcmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLGVbMF0udmFsdWUsITApfSx7bmFtZToid29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLGVbMF0udmFsdWUpfSx7bmFtZToiY29sbGlzdF9wYXJlbiIsc3ltYm9sczpbImxwYXJlbiIsImNvbGxpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiY29sbGlzdCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjb2xsaXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNvbGxpc3QkZWJuZiQxIixzeW1ib2xzOlsiY29sbGlzdCRlYm5mJDEiLCJjb2xsaXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY29sbGlzdCIsc3ltYm9sczpbImlkZW50IiwiY29sbGlzdCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bZSwuLi5wfHxbXV19LHtuYW1lOiJrd19iZXR3ZWVuIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiYmV0d2VlbiIpfSx7bmFtZToia3dfY29uZmxpY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJjb25mbGljdCIpfSx7bmFtZToia3dfbm90aGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm5vdGhpbmciKX0se25hbWU6Imt3X2JlZ2luIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiYmVnaW4iKX0se25hbWU6Imt3X2lmIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiaWYiKX0se25hbWU6Imt3X2V4aXN0cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImV4aXN0cyIpfSx7bmFtZToia3dfa2V5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgia2V5Iil9LHtuYW1lOiJrd19pbmRleCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImluZGV4Iil9LHtuYW1lOiJrd19leHRlbnNpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJleHRlbnNpb24iKX0se25hbWU6Imt3X3NjaGVtYSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInNjaGVtYSIpfSx7bmFtZToia3dfbnVsbHMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJudWxscyIpfSx7bmFtZToia3dfZmlyc3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJmaXJzdCIpfS
14x7bmFtZToia3dfbGFzdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImxhc3QiKX0se25hbWU6Imt3X3N0YXJ0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic3RhcnQiKX0se25hbWU6Imt3X3Jlc3RhcnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJyZXN0YXJ0Iil9LHtuYW1lOiJrd19maWx0ZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJmaWx0ZXIiKX0se25hbWU6Imt3X2NvbW1pdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImNvbW1pdCIpfSx7bmFtZToia3dfdGFibGVzcGFjZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInRhYmxlc3BhY2UiKX0se25hbWU6Imt3X3RyYW5zYWN0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidHJhbnNhY3Rpb24iKX0se25hbWU6Imt3X3dvcmsiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ3b3JrIil9LHtuYW1lOiJrd19yZWFkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicmVhZCIpfSx7bmFtZToia3dfd3JpdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ3cml0ZSIpfSx7bmFtZToia3dfaXNvbGF0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiaXNvbGF0aW9uIil9LHtuYW1lOiJrd19sZXZlbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImxldmVsIil9LHtuYW1lOiJrd19zZXJpYWxpemFibGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJzZXJpYWxpemFibGUiKX0se25hbWU6Imt3X3JvbGxiYWNrIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicm9sbGJhY2siKX0se25hbWU6Imt3X2luc2VydCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImluc2VydCIpfSx7bmFtZToia3dfdmFsdWUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ2YWx1ZSIpfSx7bmFtZToia3dfdmFsdWVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidmFsdWVzIil9LHtuYW1lOiJrd191cGRhdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ1cGRhdGUiKX0se25hbWU6Imt3X2NvbHVtbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImNvbHVtbiIpfSx7bmFtZToia3dfc2V0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic2V0Iil9LHtuYW1lOiJrd192ZXJzaW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidmVyc2lvbiIpfSx7bmFtZToia3dfYWx0ZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJhbHRlciIpfSx7bmFtZToia3dfcmVuYW1lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicmVuYW1lIil9LHtuYW1lOiJrd19zZXF1ZW5jZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInNlcXVlbmNlIil9LHtuYW1lOiJrd190ZW1wIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidGVtcCIpfSx7bmFtZToia3dfdGVtcG9yYXJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidGVtcG9yYXJ5Iil9LHtuYW1lOiJrd19hZGQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJhZGQiKX0se25hbWU6Imt3X293bmVyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgib3duZXIiKX0se25hbWU6Imt3X293bmVkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgib3duZWQiKX0se25hbWU6Imt3X2luY2x1ZGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImluY2x1ZGluZyIpfSx7bmFtZToia3dfZXhjbHVkaW5nIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiZXhjbHVkaW5nIil9LHtuYW1lOiJrd19ub25lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibm9uZSIpfSx7bmFtZToia3dfZHJvcCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImRyb3AiKX0se25hbWU6Imt3X29wZXJhdG9yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgib3BlcmF0b3IiKX0se25hbWU6Imt3X21pbnZhbHVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibWludmFsdWUiKX0se25hbWU6Imt3X21heHZhbHVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibWF4dmFsdWUiKX0se25hbWU6Imt3X2RhdGEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJkYXRhIil9LHtuYW1lOiJrd190eXBlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidHlwZSIpfS
14x7bmFtZToia3dfdHJpZ2dlciIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInRyaWdnZXIiKX0se25hbWU6Imt3X2RlbGV0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImRlbGV0ZSIpfSx7bmFtZToia3dfY2FjaGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJjYWNoZSIpfSx7bmFtZToia3dfY2FzY2FkZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImNhc2NhZGUiKX0se25hbWU6Imt3X25vIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibm8iKX0se25hbWU6Imt3X3RpbWVzdGFtcCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInRpbWVzdGFtcCIpfSx7bmFtZToia3dfY3ljbGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJjeWNsZSIpfSx7bmFtZToia3dfZnVuY3Rpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJmdW5jdGlvbiIpfSx7bmFtZToia3dfcmV0dXJucyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInJldHVybnMiKX0se25hbWU6Imt3X2xhbmd1YWdlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibGFuZ3VhZ2UiKX0se25hbWU6Imt3X291dCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm91dCIpfSx7bmFtZToia3dfaW5vdXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJpbm91dCIpfSx7bmFtZToia3dfdmFyaWFkaWMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ2YXJpYWRpYyIpfSx7bmFtZToia3dfYWN0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiYWN0aW9uIil9LHtuYW1lOiJrd19yZXN0cmljdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInJlc3RyaWN0Iil9LHtuYW1lOiJrd190cnVuY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInRydW5jYXRlIil9LHtuYW1lOiJrd19pbmNyZW1lbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJpbmNyZW1lbnQiKX0se25hbWU6Imt3X2J5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiYnkiKX0se25hbWU6Imt3X3JvdyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInJvdyIpfSx7bmFtZToia3dfcm93cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInJvd3MiKX0se25hbWU6Imt3X25leHQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJuZXh0Iil9LHtuYW1lOiJrd19tYXRjaCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm1hdGNoIil9LHtuYW1lOiJrd19yZXBsYWNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicmVwbGFjZSIpfSx7bmFtZToia3dfcmVjdXJzaXZlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicmVjdXJzaXZlIil9LHtuYW1lOiJrd192aWV3IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgidmlldyIpfSx7bmFtZToia3dfY2FzY2FkZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJjYXNjYWRlZCIpfSx7bmFtZToia3dfdW5sb2dnZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ1bmxvZ2dlZCIpfSx7bmFtZToia3dfZ2xvYmFsIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiZ2xvYmFsIil9LHtuYW1lOiJrd19vcHRpb24iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJvcHRpb24iKX0se25hbWU6Imt3X21hdGVyaWFsaXplZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm1hdGVyaWFsaXplZCIpfSx7bmFtZToia3dfcGFydGlhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInBhcnRpYWwiKX0se25hbWU6Imt3X3BhcnRpdGlvbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInBhcnRpdGlvbiIpfSx7bmFtZToia3dfc2ltcGxlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic2ltcGxlIil9LHtuYW1lOiJrd19nZW5lcmF0ZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJnZW5lcmF0ZWQiKX0se25hbWU6Imt3X2Fsd2F5cyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImFsd2F5cyIpfSx7bmFtZToia3dfaWRlbnRpdHkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJpZGVudGl0eSIpfSx7bmFtZToia3dfbmFtZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm5hbWUiKX0se25hbWU6Imt3X2VudW0iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJlbnVtIil9LHtuYW1lOiJrd19zaG93IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic2hvdyIpfSx7bmFtZToia3dfb3JkaW5hbGl0eSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoIm9yZGluYWxpdHkiKX0se25hbWU6Imt3X292ZXJyaWRpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJvdmVycmlkaW5nIil9LHtuYW1lOiJrd19vdmVyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgib3ZlciIpfSx7bmFtZToia3dfc3lzdGVtIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic3lzdGVtIil9LHtuYW1lOiJrd19jb21tZW50IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiY29tbWVudCIpfSx7bmFtZToia3dfdGltZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoInRpbWUiKX0se25hbWU6Imt3X25hbWVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibmFtZXMiKX0se25hbWU6Imt3X2F0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiYXQiKX0se25hbWU6Imt3X3pvbmUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJ6b25lIil9LHtuYW1lOiJrd19pbnRlcnZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImludGVydmFsIil9LHtuYW1lOiJrd19ob3VyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiaG91ciIpfSx7bmFtZToia3dfbWludXRlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgibWludXRlIil9LHtuYW1lOiJrd19sb2NhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImxvY2FsIil9LHtuYW1lOiJrd19wcmVwYXJlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicHJlcGFyZSIpfSx7bmFtZToia3dfZGVhbGxvY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOngoImRlYWxsb2
14NhdGUiKX0se25hbWU6Imt3X3JhaXNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgicmFpc2UiKX0se25hbWU6Imt3X2NvbnRpbnVlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgiY29udGludWUiKX0se25hbWU6Imt3X3NoYXJlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6eCgic2hhcmUiKX0se25hbWU6Imt3X3JlZnJlc2giLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJyZWZyZXNoIil9LHtuYW1lOiJrd19ub3dhaXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJub3dhaXQiKX0se25hbWU6Imt3X3NraXAiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJza2lwIil9LHtuYW1lOiJrd19sb2NrZWQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2Vzczp4KCJsb2NrZWQiKX0se25hbWU6Imt3X2lmbm90ZXhpc3RzIixzeW1ib2xzOlsia3dfaWYiLHMubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90LCJrd19leGlzdHMiXX0se25hbWU6Imt3X2lmZXhpc3RzIixzeW1ib2xzOlsia3dfaWYiLCJrd19leGlzdHMiXX0se25hbWU6Imt3X3dpdGhvcmRpbmFsaXR5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwia3dfb3JkaW5hbGl0eSJdfSx7bmFtZToia3dfbm90X251bGwiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90LHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsXX0se25hbWU6Imt3X3ByaW1hcnlfa2V5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcHJpbWFyeSIpP3t0eXBlOiJrd19wcmltYXJ5In06a3dfcHJpbWFyeSwia3dfa2V5Il19LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImludCJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJkYXRhX3R5cGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9PltlLC4uLnB8fFtdXX0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiZGF0YV90eXBlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FycmF5Iik/e3R5cGU6Imt3X2FycmF5In06a3dfYXJyYXldfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQscy5sZXhlckFueS5oYXMoInJicmFja2V0Iik/e3R5cGU6InJicmFja2V0In06cmJyYWNrZXRdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQscy5sZXhlckFueS5oYXMoInJicmFja2V0Iik/e3R5cGU6InJicmFja2V0In06cmJyYWNrZXRdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIiwiZGF0YV90eXBlJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkYXRhX3R5cGUkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSJdfSx7bmFtZToiZGF0YV90eXBlJGVibmYkMiIsc3ltYm9sczpbImRhdGFfdHlwZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImRhdGFfdHlwZSRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkYXRhX3R5cGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfc2ltcGxlIiwiZGF0YV90eXBlJGVibmYkMSIsImRhdGFfdHlwZSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57bGV0IHA9ZVsyXTtjb25zdCBuPXQoZVswXSk7bGV0IHk7aWYoeT17Li4ubiwuLi5BcnJheS5pc0FycmF
145KGVbMV0pJiZlWzFdLmxlbmd0aD97Y29uZmlnOmVbMV0ubWFwKHQpfTp7fX0scCl7cFswXS50eXBlPT09Imt3X2FycmF5IiYmKHA9W1siYXJyYXkiXV0pO2Zvcihjb25zdCBrIG9mIHBbMF0peT17a2luZDoiYXJyYXkiLGFycmF5T2Y6eX19cmV0dXJuKDAsci50cmFjaykoZSx5KX19LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJkYXRhX3R5cGUiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZGF0YV90eXBlX2xpc3QkZWJuZiQxIixzeW1ib2xzOlsiZGF0YV90eXBlX2xpc3QkZWJuZiQxIiwiZGF0YV90eXBlX2xpc3QkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkYXRhX3R5cGVfbGlzdCIsc3ltYm9sczpbImRhdGFfdHlwZSIsImRhdGFfdHlwZV9saXN0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9PltlLC4uLnB8fFtdXX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfdGV4dCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6dyhlLCIgIil9KX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfbnVtZXJpYyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6dyhlLCIgIil9KX0se25hbWU6ImRhdGFfdHlwZV9zaW1wbGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfZGF0ZSJdfSx7bmFtZToiZGF0YV90eXBlX3NpbXBsZSIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lX21hcmtfcXVvdGVzIl19LHtuYW1lOiJkYXRhX3R5cGVfbnVtZXJpYyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpnKCJkb3VibGUiKX0se25hbWU6ImRhdGFfdHlwZV9udW1lcmljIixzeW1ib2xzOlsiZGF0YV90eXBlX251bWVyaWMkc3ViZXhwcmVzc2lvbiQxIixzLmxleGVyQW55Lmhhcygia3dfcHJlY2lzaW9uIik/e3R5cGU6Imt3X3ByZWNpc2lvbiJ9Omt3X3ByZWNpc2lvbl19LHtuYW1lOiJkYXRhX3R5cGVfdGV4dCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJjaGFyYWN0ZXIiLCJiaXQiKX0se25hbWU6ImRhdGFfdHlwZV90ZXh0JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmcoInZhcnlpbmciKX0se25hbWU6ImRhdGFfdHlwZV90ZXh0IixzeW1ib2xzOlsiZGF0YV90eXBlX3RleHQkc3ViZXhwcmVzc2lvbiQxIiwiZGF0YV90eXBlX3RleHQkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJ0aW1lc3RhbXAiLCJ0aW1lIil9LHtuYW1lOiJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmcoIndpdGhvdXQiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmcoInRpbWUiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kNCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOmcoInpvbmUiKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlIixzeW1ib2xzOlsiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQxIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQyIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQzIiwiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTp3KGUsIiAiKX0pfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ1IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6RSgidGltZXN0YW1wIiwidGltZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ2IixzeW1ib2xzOlsibHBhcmVuIiwiaW50IiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImRhdGFfdHlwZV9kYXRlJHN1YmV4cHJlc3Npb24kNyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGhdfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ3IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6Zygid2l0aG91dCIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ4IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6ZygidGltZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUkc3ViZXhwcmVzc2lvbiQ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygid29yZCIpP3t0eXBlOiJ3b3JkIn06d29yZF0scG9zdHByb2Nlc3M6Zygiem9uZSIpfSx7bmFtZToiZGF0YV90eXBlX2RhdGUiLHN5bWJvbHM6WyJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDUiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDYiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDciLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDgiLCJkYXRhX3R5cGVfZGF0ZSRzdWJleHByZXNzaW9uJDkiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtuYW1lOmB0aW
141lc3RhbXAgJHt3KGVbMl0pfSB0aW1lIHpvbmVgLGNvbmZpZzpbKDAsci51bmJveCkoZVsxXSldfSl9LHtuYW1lOiJpZGVudF9hbGlhc2VkJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImlkZW50X2FsaWFzZWQiLHN5bWJvbHM6WyJpZGVudF9hbGlhc2VkJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiaWRlbnRfYWxpYXNlZCIsc3ltYm9sczpbImlkZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InRhYmxlX3JlZiIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lIl0scG9zdHByb2Nlc3M6dH0se25hbWU6InFjb2x1bW4kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImRvdCIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6InFjb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsicWNvbHVtbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InFjb2x1bW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicWNvbHVtbiIsc3ltYm9sczpbImlkZW50IiwiZG90IiwiaWRlbnQiLCJxY29sdW1uJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PmVbM10/KDAsci50cmFjaykoZSx7c2NoZW1hOigwLHIudW5ib3gpKGVbMF0pLHRhYmxlOigwLHIudW5ib3gpKGVbMl0pLGNvbHVtbjooMCxyLnVuYm94KShlWzNdKX0pOigwLHIudHJhY2spKGUse3RhYmxlOigwLHIudW5ib3gpKGVbMF0pLGNvbHVtbjooMCxyLnVuYm94KShlWzJdKX0pfSx7bmFtZToidGFibGVfcmVmX2FsaWFzZWQkZWJuZiQxIixzeW1ib2xzOlsiaWRlbnRfYWxpYXNlZCJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJ0YWJsZV9yZWZfYWxpYXNlZCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ0YWJsZV9yZWZfYWxpYXNlZCIsc3ltYm9sczpbInRhYmxlX3JlZiIsInRhYmxlX3JlZl9hbGlhc2VkJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPXQoZVsxXSk7cmV0dXJuKDAsci50cmFjaykoZSx7Li4udChlWzBdKSwuLi5wP3thbGlhczpwfTp7fX0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOlsicW5hbWVfaWRlbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtuYW1lOncoZSl9KX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOlsiaWRlbnQiLCJkb3QiLCJpZGVudF9leHRlbmRlZCJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPXcoZVswXSksbj13KGVbMl0pO3JldHVybigwLHIudHJhY2spKGUse3NjaGVtYTpwLG5hbWU6bn0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZToiY3VycmVudF9zY2hlbWEifSl9LHtuYW1lOiJxdWFsaWZpZWRfbmFtZV9tYXJrX3F1b3RlcyIsc3ltYm9sczpbInFuYW1lX2lkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTp3KGUpLC4uLigwLHIuZG91YmxlUXVvdGVkKShlKX0pfSx7bmFtZToicXVhbGlmaWVkX25hbWVfbWFya19xdW90ZXMiLHN5bWJvbHM6WyJpZGVudCIsImRvdCIsImlkZW50X2V4dGVuZGVkIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHA9dyhlWzBdKSxuPXcoZVsyXSk7cmV0dXJuKDAsci50cmFjaykoZSx7c2NoZW1hOnAsbmFtZTpuLC4uLigwLHIuZG91YmxlUXVvdGVkKShlWzJdKX0pfX0se25hbWU6InF1YWxpZmllZF9uYW1lX21hcmtfcXVvdGVzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZToiY3VycmVudF9zY2hlbWEifSl9LHtuYW1lOiJxbmFtZV9pZGVudCIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJxbmFtZV9pZGVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ByZWNpc2lvbiIpP3t0eXBlOiJrd19wcmVjaXNpb24ifTprd19wcmVjaXNpb25dfSx7bmFtZToicW5hbWUiLHN5bWJvbHM6WyJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbmFseXNlIik/e3R5cGU6Imt3X2FuYWx5c2UifTprd19hbmFseXNlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYW5hbHl6ZSIpP3t0eXBlOiJrd19hbmFseXplIn06a3dfYW5hbHl6ZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FuZCIpP3t0eXBlOiJrd19hbmQifTprd19hbmRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbnkiKT97dHlwZToia3dfYW55In06a3dfYW55XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXJyYXkiKT97dHlwZToia3dfYXJyYXkifTprd19hcnJheV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hc2MiKT97dHlwZToia3dfYXNjIn06a3dfYXNjXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXN5bW1ldHJpYyIpP3t0eXBlOiJrd19hc3ltbWV0cmljIn06a3dfYXN5bW1ldHJpY119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2F1dGhvcml6YXRpb24iKT97dHlwZToia3dfYXV0aG9yaXphdGlvbiJ9Omt3X2F1dGhvcml6YXRpb25dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19iaW5hcnkiKT97dHlwZToia3dfYmluYXJ5In06a3dfYmluYXJ5XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYm90aCIpP3t0eXBlOiJrd19ib3RoIn06a3dfYm90aF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nhc2UiKT97dHlwZToia3dfY2FzZSJ9Omt3X2Nhc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jYXN0Iik/e3R5cGU6Imt3X2Nhc3QifTprd19jYXN0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY2hlY2siKT97dHlwZToia3dfY2hlY2sifTprd19jaGVja119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbGxhdGUiKT97dHlwZToia3dfY29sbGF0ZSJ9Omt3X2NvbGxhdGV
14dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb2xsYXRpb24iKT97dHlwZToia3dfY29sbGF0aW9uIn06a3dfY29sbGF0aW9uXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY29uY3VycmVudGx5Iik/e3R5cGU6Imt3X2NvbmN1cnJlbnRseSJ9Omt3X2NvbmN1cnJlbnRseV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3Jvc3MiKT97dHlwZToia3dfY3Jvc3MifTprd19jcm9zc119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfY2F0YWxvZyIpP3t0eXBlOiJrd19jdXJyZW50X2NhdGFsb2cifTprd19jdXJyZW50X2NhdGFsb2ddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jdXJyZW50X2RhdGUiKT97dHlwZToia3dfY3VycmVudF9kYXRlIn06a3dfY3VycmVudF9kYXRlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9yb2xlIik/e3R5cGU6Imt3X2N1cnJlbnRfcm9sZSJ9Omt3X2N1cnJlbnRfcm9sZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfc2NoZW1hIik/e3R5cGU6Imt3X2N1cnJlbnRfc2NoZW1hIn06a3dfY3VycmVudF9zY2hlbWFdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jdXJyZW50X3RpbWUiKT97dHlwZToia3dfY3VycmVudF90aW1lIn06a3dfY3VycmVudF90aW1lXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lc3RhbXAiKT97dHlwZToia3dfY3VycmVudF90aW1lc3RhbXAifTprd19jdXJyZW50X3RpbWVzdGFtcF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfdXNlciIpP3t0eXBlOiJrd19jdXJyZW50X3VzZXIifTprd19jdXJyZW50X3VzZXJdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVmZXJyYWJsZSIpP3t0eXBlOiJrd19kZWZlcnJhYmxlIn06a3dfZGVmZXJyYWJsZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Rlc2MiKT97dHlwZToia3dfZGVzYyJ9Omt3X2Rlc2NdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kaXN0aW5jdCIpP3t0eXBlOiJrd19kaXN0aW5jdCJ9Omt3X2Rpc3RpbmN0XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZG8iKT97dHlwZToia3dfZG8ifTprd19kb119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Vsc2UiKT97dHlwZToia3dfZWxzZSJ9Omt3X2Vsc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19lbmQiKT97dHlwZToia3dfZW5kIn06a3dfZW5kXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZXhjZXB0Iik/e3R5cGU6Imt3X2V4Y2VwdCJ9Omt3X2V4Y2VwdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mZXRjaCIpP3t0eXBlOiJrd19mZXRjaCJ9Omt3X2ZldGNoXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZm9yIik/e3R5cGU6Imt3X2ZvciJ9Omt3X2Zvcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvcmVpZ24iKT97dHlwZToia3dfZm9yZWlnbiJ9Omt3X2ZvcmVpZ25dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mcmVlemUiKT97dHlwZToia3dfZnJlZXplIn06a3dfZnJlZXplXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Z1bGwiKT97dHlwZToia3dfZnVsbCJ9Omt3X2Z1bGxdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ncmFudCIpP3t0eXBlOiJrd19ncmFudCJ9Omt3X2dyYW50XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZ3JvdXAiKT97dHlwZToia3dfZ3JvdXAifTprd19ncm91cF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2hhdmluZyIpP3t0eXBlOiJrd19oYXZpbmcifTprd19oYXZpbmddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbGlrZSIpP3t0eXBlOiJrd19pbGlrZSJ9Omt3X2lsaWtlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaW4iKT97dHlwZToia3dfaW4ifTprd19pbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2luaXRpYWxseSIpP3t0eXBlOiJrd19pbml0aWFsbHkifTprd19pbml0aWFsbHldfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbm5lciIpP3t0eXBlOiJrd19pbm5lciJ9Omt3X2lubmVyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaW50ZXJzZWN0Iik/e3R5cGU6Imt3X2ludGVyc2VjdCJ9Omt3X2ludGVyc2VjdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ludG8iKT97dHlwZToia3dfaW50byJ9Omt3X2ludG9dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfaXNudWxsIik/e3R5cGU6Imt3X2lzbnVsbCJ9Omt3X2lzbnVsbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2pvaW4iKT97dHlwZToia3dfam9pbiJ9Omt3X2pvaW5dfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19sYXRlcmFsIik/e3R5cGU6Imt3X2xhdGVyYWwifTprd19sYXRlcmFsXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGVhZGluZyIpP3t0eXBlOiJrd19sZWFkaW5nIn06a3dfbGVhZGluZ119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xlZnQiKT97dHlwZToia3dfbGVmdCJ9Omt3X2xlZnRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19saWtlIik/e3R5cGU6Imt3X2xpa2UifTprd19saWtlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGltaXQiKT97dHlwZToia3dfbGltaXQifTprd19saW1pdF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xvY2FsdGltZSIpP3t0eXBlOiJrd19sb2NhbHRpbWUifTprd19sb2NhbHRpbWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19sb2NhbHRpbWVzdGFtcCIpP3t0eXBlOiJrd19sb2NhbHRpbWVzdGFtcCJ9Omt3X2xvY2FsdGltZXN0YW1wXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbmF0dXJhbCIpP3t0eXBlOiJrd19uYXR1cmFsIn06a3dfbmF0dXJhbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3RudWxsIik/e3R5cGU6Imt3X25vdG51bGwifTprd19ub3RudWxsXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29mZnNldCIpP3t0eXBlOiJrd19vZmZzZXQifTprd19vZmZzZXRdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb25seSIpP3t0eXBlOiJrd19vbmx5In06a3dfb25seV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29yIik/e3R5cGU6Imt3X29yIn06a3dfb3JdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vcmRlciIpP3t0eXBlOiJrd19vcmRlciJ9Omt3X29yZGVyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X292ZXJsYXBzIik/e3R5cGU6Imt3X292ZXJsYXBzIn06a3dfb3ZlcmxhcHNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19wbGFjaW5nIik/e3R5cGU6Imt3X3BsYWNpbmcifTprd19wbGFjaW5nXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcHJpbWFyeSIpP3t0eXBlOiJrd19wcmltYXJ5In06a3dfcHJpbWFyeV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3JlZmVyZW5jZXMiKT97dHlwZToia3dfcmVmZXJlbmNlcyJ9Omt3X3JlZmVyZW5jZXNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcmlnaHQiKT97dHlwZToia3dfcmlnaHQifTprd19yaWdodF19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3NlbGVjdCIpP3t0eXBlOiJrd19zZWxlY3QifTprd19zZWxlY3RdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZXNzaW9uX3VzZXIiKT97dHlwZToia3dfc2Vzc2lvbl91c2VyIn06a3dfc2Vzc2lvbl91c2VyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc2ltaWxhciIpP3t0eXBlOiJrd19zaW1pbGFyIn06a3dfc2ltaWxhcl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3NvbWUiKT97dHlwZToia3dfc29tZSJ9Omt3X3NvbWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zeW1tZXRyaWMiKT97dHlwZToia3dfc3ltbWV0cmljIn06a3dfc3ltbWV0cmljXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZV19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlc2FtcGxlIik/e3R5cGU6Imt3X3RhYmxlc2FtcGxlIn06a3dfdGFibGVzYW1wbGVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190aGVuIik/e3R5cGU6Imt3X3RoZW4ifTprd190aGVuXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdG8iKT97dHlwZToia3dfdG8ifTprd190b119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RyYWlsaW5nIik/e3R5cGU6Imt3X3RyYWlsaW5nIn06a3dfdHJhaWxpbmddfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190cnVlIik/e3R5cGU6Imt3X3RydWUifTprd190cnVlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdW5pb24iKT97dHlwZToia3dfdW5pb24ifTprd191bmlvbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VuaXF1ZSIpP3t0eXBlOiJrd191bmlxdWUifTprd191bmlxdWVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191c2VyIik/e3R5cGU6Imt3X3VzZXIifTprd191c2VyXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZ119LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3ZhcmlhZGljIik/e3R5cGU6Imt3X3ZhcmlhZGljIn06a3dfdmFyaWFkaWNdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd192ZXJib3NlIik/e3R5cGU6Imt3X3ZlcmJvc2UifTprd192ZXJib3NlXX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2hlbiIpP3t0eXBlOiJrd193aGVuIn06a3dfd2hlbl19LHtuYW1lOiJhbnlfa2V5d29yZCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmVdfSx7bmFtZToiYW55X2tleXdvcmQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aW5kb3ciKT97dHlwZToia3dfd2luZG93In06a3dfd2luZG93XX0se25hbWU6ImFueV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aF19LHtuYW1lOiJpZGVudF9leHRlbmRlZCIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJpZGVudF9leHRlbmRlZCIsc3ltYm9sczpbImFueV9rZXl3b3JkIl19LHtuYW1lOiJzZWxlY3Rfc3Rh
14dGVtZW50JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9mcm9tIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJzZWxlY3Rfd2hlcmUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X2hhdmluZyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0X2dyb3VwYnkiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0Il0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9za2lw
14Il0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3RfZm9yIiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSJdfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6WyJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfc3RhdGVtZW50IixzeW1ib2xzOlsic2VsZWN0X3doYXQiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkMSIsInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQyIiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDMiLCJzZWxlY3Rfc3RhdGVtZW50JGVibmYkNCIsInNlbGVjdF9zdGF0ZW1lbnQkZWJuZiQ1Iiwic2VsZWN0X3N0YXRlbWVudCRlYm5mJDYiXSxwb3N0cHJvY2VzczplPT57bGV0W3Asbix5LGssTyxSLExdPWU7bj10KG4pO2xldCBJPWsmJmtbMF0sRj1rJiZrWzFdO0k9SSYmKEkubGVuZ3RoPT09MSYmSVswXS50eXBlPT09Imxpc3QiP0lbMF0uZXhwcmVzc2lvbnM6SSksRj1GJiZ0KEYpO2xldCBVPUwmJkxbMF0saj1MJiZMWzFdO3JldHVybiBqPXQoaiksKDAsci50cmFjaykoZSx7Li4ucCwuLi5uP3tmcm9tOkFycmF5LmlzQXJyYXkobik/bjpbbl19Ont9LC4uLkk/e2dyb3VwQnk6SX06e30sLi4uRj97aGF2aW5nOkZ9Ont9LC4uLlI/e2xpbWl0OnQoUil9Ont9LC4uLk8/e29yZGVyQnk6T306e30sLi4ueT97d2hlcmU6eX06e30sLi4uVT97Zm9yOlVbMV19Ont9LC4uLmo/e3NraXA6an06e30sdHlwZToic2VsZWN0In0pfX0se25hbWU6InNlbGVjdF9mcm9tIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwic2VsZWN0X2Zyb21faXRlbXMiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2Zyb21faXRlbXMkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbXMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwic2VsZWN0X2Zyb21faXRlbSJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEiLCJzZWxlY3RfZnJvbV9pdGVtcyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6InNlbGVjdF9mcm9tX2l0ZW1zIixzeW1ib2xzOlsic2VsZWN0X2Zyb21faXRlbSIsInNlbGVjdF9mcm9tX2l0ZW1zJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9PlsuLi5lLC4uLmwocCl8fFtdXX0se25hbWU6InNlbGVjdF9mcm9tX2l0ZW0iLHN5bWJvbHM6WyJzZWxlY3RfZnJvbV9zdWJqZWN0Il19LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtIixzeW1ib2xzOlsic2VsZWN0X2Zyb21faXRlbV9qb2lucyJdLHBvc3Rwcm9jZXNzOiQoMCl9LHtuYW1lOiJzZWxlY3RfZnJvbV9pdGVtX2pvaW5zJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9mcm9tX2l0ZW0iXSxwb3N0cHJvY2VzczokKDApfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbV9qb2lucyIsc3ltYm9sczpbInNlbGVjdF9mcm9tX2l0ZW1fam9pbnMkc3ViZXhwcmVzc2lvbiQxIiwic2VsZWN0X3RhYmxlX2pvaW4iXSxwb3N0cHJvY2VzczpsfSx7bmFtZToic2VsZWN0X2Zyb21faXRlbV9qb2lucyIsc3ltYm9sczpbImxwYXJlbiIsInNlbGVjdF9mcm9tX2l0ZW1fam9pbnMiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToic2VsZWN0X2Zyb21fc3ViamVjdCIsc3ltYm9sczpbInN0Yl90YWJsZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3RfZnJvbV9zdWJqZWN0IixzeW1ib2xzOlsic3RiX3N0YXRlbWVudCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3RfZnJvbV9zdWJqZWN0IixzeW1ib2xzOlsic3RiX2NhbGwiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic3RiX29wdHMkZWJuZiQxIixzeW1ib2xzOlsiY29sbGlzdF9wYXJlbiJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzdGJfb3B0cyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzdGJfb3B0cyIsc3ltYm9sczpbImlkZW50X2FsaWFzZWQiLCJzdGJfb3B0cyRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHthbGlhczp3KGVbMF0pLC4uLmVbMV0mJntjb2x1bW5OYW1lczooMCxyLnVuYm94KShlWzFdKS5tYXAodSl9fSl9LHtuYW1lOiJzdGJfdGFibGUkZWJuZiQxIixzeW1ib2xzOlsic3RiX29wdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic3RiX3RhYmxlJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl90YWJsZSIsc3ltYm9sczpbInRhYmxlX3JlZiIsInN0Yl90YWJsZSRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ0YWJsZSIsbmFtZTooMCxyLnRyYWNrKShlLHsuLi5lWzBdLC4uLmVbMV19KX0pfSx7bmFtZToic3RiX3N0YXRlbWVudCIsc3ltYm9sczpbInNlbGVjdGlvbl9wYXJlbiIsInN0Yl9vcHRzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic3RhdGVtZW50IixzdGF0ZW1lbnQ6dChlWzBdKSwuLi5lWzFdfSl9LHtuYW1lOiJzZWxlY3RfdmFsdWVzIixzeW1ib2xzOlsia3dfdmFsdWVzIiwiaW5zZXJ0X3ZhbHVlcyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InZhbHVlcyIsdmFsdWVzOmVbMV19KX0se25hbWU6InN0Yl9jYWxsJGVibmYkMSIsc3ltYm9sczpbImt3X3dpdGhvcmRpbmFsaXR5Il0scG9zdHByb2Nlc3M6YX0se25hbWU6InN0Yl9jYWxsJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsJGVibmYkMiIsc3ltYm9sczpbInN0Yl9jYWxsX2FsaWFzIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InN0Yl9jYWxsJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsIixzeW1ib2xzOlsiZXhwcl9mdW5jdGlvbl9jYWxsIiwic3RiX2NhbGwkZWJuZiQxIiwic3RiX2NhbGwkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHA9ZVsxXSxuPWVbMl07cmV0dXJuIXAmJiFuP2VbMF06KDAsci50cmFjaykoZSx7Li4uZVswXSwuLi5wJiZ7d2l0aE9yZGluYWxpdHk6ITB9LGFsaWFzOm4/ZihuWzBdLG5bMV0pOnZvaWQgMH0pfX0se25hbWU6InN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzXSxwb3N0cHJvY2VzczphfSx7bmFtZToic3RiX2NhbGxfYWxpYXMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0Yl9jYWxsX2FsaWFzJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJpZGVudCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzdGJfY2FsbF9hbGlhcyRlYm5mJDEiLHN5bWJvbHM6WyJzdGJfY2FsbF9hbGlhc19saXN0Il0scG9zdHByb2Nlc3M6YX0se25hbWU6InN0Yl9jYWxsX2FsaWFzJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InN0Yl9jYWxsX2FsaWFzIixzeW1ib2xzOlsic3RiX2NhbGxfYWxpYXMkc3ViZXhwcmVzc2lvbiQxIiwic3RiX2NhbGxfYWxpYXMkZWJuZiQxIl19LHtuYW1lOiJzdGJfY2FsbF9hbGlhc19saXN0IixzeW1ib2xzOlsibHBhcmVuIiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwiaWRlbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIixzeW1ib2xzOlsic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzdGJfY2FsbF9hbGlhc19saXN0X3JhdyIsc3ltYm9sczpbImlkZW50Iiwic3RiX2NhbGxfYWxpYXNfbGlzdF9yYXckZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW4kZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF90YWJsZV9qb2luJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF90YWJsZV9qb2luIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3AiLHMubGV4ZXJBbnkuaGFzKCJrd19qb2luIik/e3R5cGU6Imt3X2pvaW4ifTprd19qb2luLCJzZWxlY3RfZnJvbV9zdWJqZWN0Iiwic2VsZWN0X3RhYmxlX2pvaW4kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7Li4udChlWzJdKSxqb2luOnt0eXBlOncoZVswXSwiICIpLC4uLmVbM10mJnQoZVszXSl9fSl9LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uLCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b246XyhlKX0pfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiaWRlbnQiXX0se25hbWU6InNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJzZWxlY3RfdGFibGVfam9pbl9jbGF1c2UkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQxJGVibmYkMSIsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6InNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMiIsInNlbGVjdF90YWJsZV9qb2luX2NsYXVzZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bdChlKSwuLi5wLm1hcCh0KXx8W11dfSx7bmFtZToic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZywibHBhcmVuIiwic2VsZWN0X3RhYmxlX2pvaW5fY2xhdXNlJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dXNpbmc6ZVsyXS5tYXAodSl9KX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbm5lciIpP3t0eXBlOiJrd19pbm5lciJ9Omt3X2lubmVyXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSwiSU5ORVIgSk9JTiIpfSx7bmFtZToic2VsZWN0X2pvaW5fb3AiLHN5bWJvbHM6WyJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nyb3NzIik/e3R5cGU6Imt3X2Nyb3NzIn06a3dfY3Jvc3NdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJDUk9TUyBKT0lOIil9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCIsc3ltYm9sczpbInNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kMiJdfSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X291dGVyIik/e3R5cGU6Imt3X291dGVyIn06a3dfb3V0ZXJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGVmdCIpP3t0eXBlOiJrd19sZWZ0In06a3dfbGVmdCwic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJMRUZUIEpPSU4iKX0se25hbWU6InNlbGVjdF9qb2luX29wIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQzIl19
14LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kNCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yaWdodCIpP3t0eXBlOiJrd19yaWdodCJ9Omt3X3JpZ2h0LCJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDQkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsIlJJR0hUIEpPSU4iKX0se25hbWU6InNlbGVjdF9qb2luX29wIixzeW1ib2xzOlsic2VsZWN0X2pvaW5fb3Akc3ViZXhwcmVzc2lvbiQ0Il19LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3V0ZXIiKT97dHlwZToia3dfb3V0ZXIifTprd19vdXRlcl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9qb2luX29wJHN1YmV4cHJlc3Npb24kNSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mdWxsIik/e3R5cGU6Imt3X2Z1bGwifTprd19mdWxsLCJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsIkZVTEwgSk9JTiIpfSx7bmFtZToic2VsZWN0X2pvaW5fb3AiLHN5bWJvbHM6WyJzZWxlY3Rfam9pbl9vcCRzdWJleHByZXNzaW9uJDUiXX0se25hbWU6InNlbGVjdF93aGF0JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9kaXN0aW5jdCJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3Rfd2hhdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfd2hhdCRlYm5mJDIiLHN5bWJvbHM6WyJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X3doYXQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2VsZWN0X3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZWxlY3QiKT97dHlwZToia3dfc2VsZWN0In06a3dfc2VsZWN0LCJzZWxlY3Rfd2hhdCRlYm5mJDEiLCJzZWxlY3Rfd2hhdCRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtjb2x1bW5zOmVbMl0sLi4uZVsxXSYme2Rpc3RpbmN0OigwLHIudW5ib3gpKGVbMV0pfX0pfSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9hbGlhc2VkJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6InNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJzZWxlY3RfZXhwcl9saXN0X2l0ZW0iXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9hbGlhc2VkJGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCRlYm5mJDEiLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiLHN5bWJvbHM6WyJzZWxlY3RfZXhwcl9saXN0X2l0ZW0iLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9pdGVtJGVibmYkMSIsc3ltYm9sczpbImlkZW50X2FsaWFzZWQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X2V4cHJfbGlzdF9pdGVtJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9leHByX2xpc3RfaXRlbSIsc3ltYm9sczpbImV4cHIiLCJzZWxlY3RfZXhwcl9saXN0X2l0ZW0kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7ZXhwcjplWzBdLC4uLmVbMV0/e2FsaWFzOnUoZVsxXSl9Ont9fSl9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbGwiKT97dHlwZToia3dfYWxsIn06a3dfYWxsXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSwiYWxsIil9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDIpfSx7bmFtZToic2VsZWN0X2Rpc3RpbmN0JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9kaXN0aW5jdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9kaXN0aW5jdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3RfZGlzdGluY3QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kaXN0aW5jdCIpP3t0eXBlOiJrd19kaXN0aW5jdCJ9Omt3X2Rpc3RpbmN0LCJzZWxlY3RfZGlzdGluY3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsZVsxXXx8ImRpc3RpbmN0Iil9LHtuYW1lOiJzZWxlY3Rfd2hlcmUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aGVyZSIpP3t0eXBlOiJrd193aGVyZSJ9Omt3X3doZXJlLCJleHByIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9ncm91cGJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZ3JvdXAiKT97dHlwZToia3dfZ3JvdXAifTprd19ncm91cCwia3dfYnkiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9oYXZpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19oYXZpbmciKT97dHlwZToia3dfaGF2aW5nIn06a3dfaGF2aW5nLCJleHByIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9vZmZzZXQiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNlbGVjdF9saW1pdCJdfSx7bmFtZToic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNlbGVjdF9vZmZzZXQiXX0se25hbWU6InNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNlbGVjdF9saW1pdCJdfSx7bmFtZToic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfb2Zmc2V0JGVibmYkMSIsInNlbGVjdF9saW1pdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3RfbGltaXRfb2Zmc2V0IixzeW1ib2xzOlsic2VsZWN0X2xpbWl0X29mZnNldCRlYm5mJDEiXSxwb3N0cHJvY2VzczooZSxwKT0+e2NvbnN0IG49dChlKTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4oMCxyLnRyYWNrKShlLG4pO2lmKG4ubGVuZ3RoIT0yKXJldHVybi
14BwO2NvbnN0IHk9dChuWzBdKSxrPXQoblsxXSk7cmV0dXJuIHkub2Zmc2V0JiZrLm9mZnNldHx8eS5saW1pdCYmay5saW1pdD9wOigwLHIudHJhY2spKGUsey4uLnksLi4ua30pfX0se25hbWU6InNlbGVjdF9vZmZzZXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JvdyJdfSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcm93cyJdfSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfb2Zmc2V0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToic2VsZWN0X29mZnNldCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfb2Zmc2V0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb2Zmc2V0Iik/e3R5cGU6Imt3X29mZnNldCJ9Omt3X29mZnNldCwiZXhwcl9ub3N0YXIiLCJzZWxlY3Rfb2Zmc2V0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29mZnNldDp0KGVbMV0pfSl9LHtuYW1lOiJzZWxlY3RfbGltaXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0X2xpbWl0XzEiXX0se25hbWU6InNlbGVjdF9saW1pdCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3RfbGltaXRfMiJdfSx7bmFtZToic2VsZWN0X2xpbWl0IixzeW1ib2xzOlsic2VsZWN0X2xpbWl0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2xpbWl0OnQoZSl9KX0se25hbWU6InNlbGVjdF9saW1pdF8xIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbGltaXQiKT97dHlwZToia3dfbGltaXQifTprd19saW1pdCwiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X2xpbWl0XzIkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2ZpcnN0Il19LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbmV4dCJdfSx7bmFtZToic2VsZWN0X2xpbWl0XzIkZWJuZiQxIixzeW1ib2xzOlsic2VsZWN0X2xpbWl0XzIkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3RfbGltaXRfMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yb3ciXX0se25hbWU6InNlbGVjdF9saW1pdF8yJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3Jvd3MiXX0se25hbWU6InNlbGVjdF9saW1pdF8yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZmV0Y2giKT97dHlwZToia3dfZmV0Y2gifTprd19mZXRjaCwic2VsZWN0X2xpbWl0XzIkZWJuZiQxIiwiZXhwcl9ub3N0YXIiLCJzZWxlY3RfbGltaXRfMiRzdWJleHByZXNzaW9uJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19vbmx5Iik/e3R5cGU6Imt3X29ubHkifTprd19vbmx5XSxwb3N0cHJvY2VzczokKDIpfSx7bmFtZToic2VsZWN0X2ZvciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd191cGRhdGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1cGRhdGUifSl9LHtuYW1lOiJzZWxlY3RfZm9yJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vIiwia3dfa2V5Iiwia3dfdXBkYXRlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToibm8ga2V5IHVwZGF0ZSJ9KX0se25hbWU6InNlbGVjdF9mb3Ikc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2hhcmUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzaGFyZSJ9KX0se25hbWU6InNlbGVjdF9mb3Ikc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfa2V5Iiwia3dfc2hhcmUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJrZXkgc2hhcmUifSl9LHtuYW1lOiJzZWxlY3RfZm9yIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZm9yIik/e3R5cGU6Imt3X2ZvciJ9Omt3X2Zvciwic2VsZWN0X2ZvciRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6InNlbGVjdF9za2lwJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vd2FpdCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im5vd2FpdCJ9KX0se25hbWU6InNlbGVjdF9za2lwJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NraXAiLCJrd19sb2NrZWQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJza2lwIGxvY2tlZCJ9KX0se25hbWU6InNlbGVjdF9za2lw
14IixzeW1ib2xzOlsic2VsZWN0X3NraXAkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3JkZXIiKT97dHlwZToia3dfb3JkZXIifTprd19vcmRlciwia3dfYnkiXX0se25hbWU6InNlbGVjdF9vcmRlcl9ieSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwic2VsZWN0X29yZGVyX2J5X2V4cHIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X29yZGVyX2J5JGVibmYkMSIsc3ltYm9sczpbInNlbGVjdF9vcmRlcl9ieSRlYm5mJDEiLCJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnkiLHN5bWJvbHM6WyJzZWxlY3Rfb3JkZXJfYnkkc3ViZXhwcmVzc2lvbiQxIiwic2VsZWN0X29yZGVyX2J5X2V4cHIiLCJzZWxlY3Rfb3JkZXJfYnkkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHAsbl0pPT5bcCwuLi5ufHxbXV19LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXNjIik/e3R5cGU6Imt3X2FzYyJ9Omt3X2FzY119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVzYyIpP3t0eXBlOiJrd19kZXNjIn06a3dfZGVzY119LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfZmlyc3QiXX0se25hbWU6InNlbGVjdF9vcmRlcl9ieV9leHByJGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbGFzdCJdfSx7bmFtZToic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X251bGxzIiwic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpffSx7bmFtZToic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5X2V4cHIkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzZWxlY3Rfb3JkZXJfYnlfZXhwciIsc3ltYm9sczpbImV4cHIiLCJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDEiLCJzZWxlY3Rfb3JkZXJfYnlfZXhwciRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtieTplWzBdLC4uLmVbMV0mJntvcmRlcjp3KGVbMV0pLnRvVXBwZXJDYXNlKCl9LC4uLmVbMl0mJntudWxsczp3KGVbMl0pLnRvVXBwZXJDYXNlKCl9fSl9LHtuYW1lOiJleHByIixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwciIsc3ltYm9sczpbImV4cHJfc3RhciJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX25vc3RhciIsc3ltYm9sczpbImV4cHJfcGFyZW4iXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9ub3N0YXIiLHN5bWJvbHM6WyJleHByX29yIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfcGFyZW4kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9vcl9zZWxlY3QiXX0se25hbWU6ImV4cHJfcGFyZW4kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X21hbnkiXX0se25hbWU6ImV4cHJfcGFyZW4iLHN5bWJvbHM6WyJscGFyZW4iLCJleHByX3BhcmVuJHN1YmV4cHJlc3Npb24kMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3IiKT97dHlwZToia3dfb3IifTprd19vcl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfb3IiXX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2FuZCJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQzIl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX29yJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLCJleHByX29yJG1hY3JvY2FsbCQyIiwiZXhwcl9vciRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfb3IkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfb3IiLHN5bWJvbHM6WyJleHByX29yJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FuZCIpP3t0eXBlOiJrd19hbmQifTprd19hbmRdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfYW5kJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfYW5kIl19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfbm90Il19LHtuYW1lOiJleHByX2FuZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9hbmQkbWFjcm9jYWxsJDIiLCJleHByX2FuZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfYW5kJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hbmQkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9hbmQiLHN5bWJvbHM6WyJleHByX2FuZCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XX0se25hbWU6ImV4cHJfbm90JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9ub3QkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX25vdCJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2VxIl19LHtuYW1lOiJleHByX25vdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkMiIsImV4cHJfbm90JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IiwuLi50KGVbMF0pLG9wZXJhbmQ6dChlWzFdKX0pfSx7bmFtZToiZXhwcl9ub3QkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX25vdCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX25vdCIsc3ltYm9sczpbImV4cHJfbm90JG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXFdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9uZXEiKT97dHlwZToib3BfbmVxIn06b3BfbmVxXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KHcoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl9lcSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOncoZVsyXSl9KX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2VxJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9lcSJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfaXMiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9lcSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9lcSRtYWNyb2NhbGwkMiIsImV4cHJfZXEkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2VxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2VxIixzeW1ib2xzOlsiZXhwcl9lcSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9zdGFyIixzeW1ib2xzOlsic3RhciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZiIsbmFtZToiKiJ9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2lzbnVsbCIpP3t0eXBlOiJrd19pc251bGwifTprd19pc251bGxdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzLHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsXX0se25hbWU6ImV4cHJfaXMiLHN5bWJvbHM6WyJleHByX2lzJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToidW5hcnkiLG9wOiJJUyBOVUxMIixvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kNCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdG51bGwiKT97dHlwZToia3dfbm90bnVsbCJ9Omt3X25vdG51bGxdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pcyIpP3t0eXBlOiJrd19pcyJ9Omt3X2lzLCJrd19ub3RfbnVsbCJdfSx7bmFtZToiZXhwcl9pcyIsc3ltYm9sczpbImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQzIiwiZXhwcl9pcyRzdWJleHByZXNzaW9uJDQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1bmFyeSIsb3A6IklTIE5PVCBOVUxMIixvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ1IixzeW1ib2xzOlsiZXhwcl9pcyJdfSx7bmFtZToiZXhwcl9pcyRzdWJleHByZXNzaW9uJDUiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2lzJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJleHByX2lzJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ2IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdHJ1ZSIpP3t0eXBlOiJrd190cnVlIn06a3dfdHJ1ZV19LHtuYW1lOiJleHByX2lzJHN1YmV4cHJlc3Npb24kNiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToiZXhwcl9pcyIsc3ltYm9sczpbImV4cHJfaXMkc3ViZXhwcmVzc2lvbiQ1IixzLmxleGVyQW55Lmhhcygia3dfaXMiKT97dHlwZToia3dfaXMifTprd19pcywiZXhwcl9pcyRlYm5mJDEiLCJleHByX2lzJHN1YmV4cHJlc3Npb24kNiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IixvcDoiSVMgIitoKFtlWzJdLGVbM11dKS5qb2luKCIgIikudG9VcHBlckNhc2UoKSxvcGVyYW5kOnQoZVswXSl9KX0se25hbWU6ImV4cHJfaXMiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfY29tcGFyZSIpP3t0eXBlOiJvcF9jb21wYXJlIn06b3BfY29tcGFyZV19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsia3dfb3BlcmF0b3IiLCJscGFyZW4iLCJpZGVudCIsImRvdCIsImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOncoZVsyXSl9KX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlIl19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3JhbmdlIl19LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQzIl19
14LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfY29tcGFyZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLCJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDIiLCJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2NvbXBhcmUkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9jb21wYXJlIixzeW1ib2xzOlsiZXhwcl9jb21wYXJlJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsib3BzX2JldHdlZW4iXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbmQiKT97dHlwZToia3dfYW5kIn06a3dfYW5kXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3JhbmdlIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQ1IixzeW1ib2xzOlsiZXhwcl9vdGhlcnMiXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX3JhbmdlJG1hY3JvY2FsbCQ1Il19LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDIiLCJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsImV4cHJfcmFuZ2UkbWFjcm9jYWxsJDMiLCJleHByX3JhbmdlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRlcm5hcnkiLHZhbHVlOnQoZVswXSksbG86dChlWzJdKSxoaTp0KGVbNF0pLG9wOihoKGVbMV0pLmpvaW4oIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX3JhbmdlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkNSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX3JhbmdlIixzeW1ib2xzOlsiZXhwcl9yYW5nZSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcHNfb3RoZXJzIik/e3R5cGU6Im9wc19vdGhlcnMifTpvcHNfb3RoZXJzXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX290aGVycyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOncoZVsyXSl9KX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9saWtlIl19LHtuYW1lOiJleHByX290aGVycyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDIiLCJleHByX290aGVycyRtYW
14Nyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfb3RoZXJzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9vdGhlcnMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9vdGhlcnMiLHN5bWJvbHM6WyJleHByX290aGVycyRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsib3BzX2xpa2UiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGUsIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpfSl9LHtuYW1lOiJleHByX2xpa2UkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfbGlrZSJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9pbiJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfbGlrZSRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2xpa2UkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2xpa2UkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9saWtlJG1hY3JvY2FsbCQyIiwiZXhwcl9saWtlJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJpbmFyeSIsbGVmdDp0KGVbMF0pLHJpZ2h0OnQoZVsyXSksLi4udChlWzFdKX0pfSx7bmFtZToiZXhwcl9saWtlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9saWtlJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfbGlrZSIsc3ltYm9sczpbImV4cHJfbGlrZSRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbIm9wc19pbiJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX2luIl19LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9hZGQiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9pbiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9pbiRtYWNyb2NhbGwkMiIsImV4cHJfaW4kbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYmluYXJ5IixsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKSwuLi50KGVbMV0pfSl9LHtuYW1lOiJleHByX2luJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2luIixzeW1ib2xzOlsiZXhwcl9pbiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfcGx1cyIpP3t0eXBlOiJvcF9wbHVzIn06b3BfcGx1c119LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9taW51cyIpP3t0eXBlOiJvcF9taW51cyJ9Om9wX21pbnVzXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2FkZGl0aXZlIik/e3R5cGU6Im9wX2FkZGl0aXZlIn06b3BfYWRkaXRpdmVdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wOih3KGVbNF0sIiAiKXx8IjxlcnJvcj4iKS50b1VwcGVyQ2FzZSgpLG9wU2NoZW1hOncoZVsyXSl9KX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9hZGQiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9tdWx0Il19LHtuYW1lOiJleHByX2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9hZGQkbWFjcm9jYWxsJDIiLCJleHByX2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfYWRkJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9hZGQkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9hZGQiLHN5bWJvbHM6WyJleHByX2FkZCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInN0YXIiKT97dHlwZToic3RhciJ9OnN0YXJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2RpdiIpP3t0eXBlOiJvcF9kaXYifTpvcF9kaXZdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX21vZCIpP3t0eXBlOiJvcF9tb2QifTpvcF9tb2RdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfbXVsdCRtYW
14Nyb2NhbGwkMiRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImt3X29wZXJhdG9yIiwibHBhcmVuIiwiaWRlbnQiLCJkb3QiLCJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTp3KGVbMl0pfSl9LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfbXVsdCJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiZXhwcl9leHAiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDMiXX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3BhcmVuIl19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQ0Il19LHtuYW1lOiJleHByX211bHQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9tdWx0JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9tdWx0JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsImV4cHJfbXVsdCRtYWNyb2NhbGwkMiIsImV4cHJfbXVsdCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfbXVsdCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfbXVsdCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX211bHQiLHN5bWJvbHM6WyJleHByX211bHQkbWFjcm9jYWxsJDEiXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfZXhwIik/e3R5cGU6Im9wX2V4cCJ9Om9wX2V4cF19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KHcoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl9leHAkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTp3KGVbMl0pfSl9LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfZXhwJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfZXhwIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkIl19LHtuYW1lOiJleHByX2V4cCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2V4cCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl9leHAkbWFjcm9jYWxsJDIiLCJleHByX2V4cCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfZXhwJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9leHAkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9leHAiLHN5bWJvbHM6WyJleHByX2V4cCRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfcGx1cyIpP3t0eXBlOiJvcF9wbHVzIn06b3BfcGx1c119LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9taW51cyIpP3t0eXBlOiJvcF9taW51cyJ9Om9wX21pbnVzXX0se25hbWU6ImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQyIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b3A6KHcoZSwiICIpfHwiPGVycm9yPiIpLnRvVXBwZXJDYXNlKCl9KX0se25hbWU6ImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJrd19vcGVyYXRvciIsImxwYXJlbiIsImlkZW50Iiwi
14ZG90IiwiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlWzRdLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKSxvcFNjaGVtYTp3KGVbMl0pfSl9LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMyIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzIl19LHtuYW1lOiJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkMiIsImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InVuYXJ5IiwuLi50KGVbMF0pLG9wZXJhbmQ6dChlWzFdKX0pfSx7bmFtZToiZXhwcl91bmFyeV9hZGQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX3VuYXJ5X2FkZCRtYWNyb2NhbGwkNCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX3VuYXJ5X2FkZCIsc3ltYm9sczpbImV4cHJfdW5hcnlfYWRkJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInZhcmlvdXNfYmluYXJpZXMiXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQyJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtvcDoodyhlLCIgIil8fCI8ZXJyb3I+IikudG9VcHBlckNhc2UoKX0pfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMiRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDMiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4Il19LHtuYW1lOiJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMyJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIiwiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDIiLCJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJiaW5hcnkiLGxlZnQ6dChlWzBdKSxyaWdodDp0KGVbMl0pLC4uLnQoZVsxXSl9KX0se25hbWU6ImV4cHJfdmFyaW91c19jb25zdHJ1Y3RzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl92YXJpb3VzX2NvbnN0cnVjdHMiLHN5bWJvbHM6WyJleHByX3ZhcmlvdXNfY29uc3RydWN0cyRtYWNyb2NhbGwkMSJdfSx7bmFtZToiZXhwcl9hcnJheV9pbmRleCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4Il19LHtuYW1lOiJleHByX2FycmF5X2luZGV4JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfYXJyYXlfaW5kZXgiLHN5bWJvbHM6WyJleHByX2FycmF5X2luZGV4JHN1YmV4cHJlc3Npb24kMSIscy5sZXhlckFueS5oYXMoImxicmFja2V0Iik/e3R5cGU6ImxicmFja2V0In06bGJyYWNrZXQsImV4cHJfbm9zdGFyIixzLmxleGVyQW55LmhhcygicmJyYWNrZXQiKT97dHlwZToicmJyYWNrZXQifTpyYnJhY2tldF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYXJyYXlJbmRleCIsYXJyYXk6dChlWzBdKSxpbmRleDp0KGVbMl0pfSl9LHtuYW1lOiJleHByX2FycmF5X2luZGV4IixzeW1ib2xzOlsiZXhwcl9tZW1iZXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZXhwcl9tZW1iZXIiXX0se25hbWU6ImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInN0cmluZyJdfSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsiaW50Il19LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImV4cHJfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsIm9wc19tZW1iZXIiLCJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJtZW1iZXIiLG9wZXJhbmQ6dChlWzBdKSxvcDplWzFdLG1lbWJlcjp0KGVbMl0pfSl9LHtuYW1lOiJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6WyJleHByX21lbWJlciJdfSx7bmFtZToiZXhwcl9tZW1iZXIkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsiZXhwcl9wYXJlbiJdfSx7bmFtZToiZXhwcl9tZW1iZXIiLHN5bWJvbHM6WyJleHByX21lbWJlciRzdWJleHByZXNzaW9uJDMiLHMubGV4ZXJBbnkuaGFzKCJvcF9jYXN0Iik/e3R5cGU6Im9wX2Nhc3QifTpvcF9jYXN0LCJkYXRhX3R5cGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJjYXN0IixvcGVyYW5kOnQoZVswXSksdG86ZVsyXX0pfSx7bmFtZToiZXhwcl9tZW1iZXIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jYXN0Iik/e3R5cGU6Imt3X2Nhc3QifTprd19jYXN0LCJscGFyZW4iLCJleHByX25vc3RhciIscy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImRh
14dGFfdHlwZSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc3QiLG9wZXJhbmQ6dChlWzJdKSx0bzplWzRdfSl9LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImRhdGFfdHlwZSIsInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc3QiLG9wZXJhbmQ6KDAsci50cmFjaykoZVsxXSx7dHlwZToic3RyaW5nIix2YWx1ZTooMCxyLnVuYm94KShlWzFdKX0pLHRvOigwLHIudW5ib3gpKGVbMF0pfSl9LHtuYW1lOiJleHByX21lbWJlciIsc3ltYm9sczpbImV4cHJfZG90Il0scG9zdHByb2Nlc3M6dH0se25hbWU6ImV4cHJfZG90JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXX0se25hbWU6ImV4cHJfZG90JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0YXIiXX0se25hbWU6ImV4cHJfZG90IixzeW1ib2xzOlsicW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LCJleHByX2RvdCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJyZWYiLHRhYmxlOnQoZVswXSksbmFtZTp3KGVbMl0pfSl9LHtuYW1lOiJleHByX2RvdCIsc3ltYm9sczpbImV4cHJfZmluYWwiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9maW5hbCIsc3ltYm9sczpbImV4cHJfYmFzaWMiXX0se25hbWU6ImV4cHJfZmluYWwiLHN5bWJvbHM6WyJleHByX3ByaW1hcnkiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX3NwZWNpYWxfY2FsbHMiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX2NhbGwiXX0se25hbWU6ImV4cHJfYmFzaWMiLHN5bWJvbHM6WyJleHByX2FycmF5Il19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsiZXhwcl9jYXNlIl19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsiZXhwcl9leHRyYWN0Il19LHtuYW1lOiJleHByX2Jhc2ljIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZiIsbmFtZTp0KGVbMF0pfSl9LHtuYW1lOiJleHByX2FycmF5JGVibmYkMSIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9hcnJheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2FycmF5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXJyYXkiKT97dHlwZToia3dfYXJyYXkifTprd19hcnJheSxzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldCwiZXhwcl9hcnJheSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhcnJheSIsZXhwcmVzc2lvbnM6ZVsyXXx8W119KX0se25hbWU6ImV4cHJfYXJyYXkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcnJheSIpP3t0eXBlOiJrd19hcnJheSJ9Omt3X2FycmF5LCJscGFyZW4iLCJzZWxlY3Rpb24iLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhcnJheSBzZWxlY3QiLHNlbGVjdDp0KGVbMl0pfSl9LHtuYW1lOiJleHByX3N1YmFycmF5JGVibmYkMSIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9zdWJhcnJheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX3N1YmFycmF5IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldCwiZXhwcl9zdWJhcnJheSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfbGlzdF9pdGVtIl19LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxJGVibmYkMSIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMiIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLm1hcCh0KX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDQiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5Il19LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkMyRlYm5mJDEiLHN5bWJvbHM6WyJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzJGVibmYkMSIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX3N1YmFycmF5X2l0ZW1zJG1hY3JvY2FsbCQzIixzeW1ib2xzOlsiZXhwcl9zdWJhcnJheV9pdGVtcyRtYWNyb2NhbGwkNCIsImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToiZXhwcl9zdWJhcnJheV9pdGVtcyIsc3ltYm9sczpbImV4cHJfc3ViYXJyYXlfaXRlbXMkbWFjcm9jYWxsJDMiXSxwb3N0cHJvY2VzczplPT5lWzBdLm1hcChwPT4oMCxyLnRyYWNrKShwLHt0eXBlOiJhcnJheSIsZXhwcmVzc2lvbnM6cFswXS5tYXAodCl9KSl9LHtuYW1lOiJleHByX2Z1bmN0aW9uX2NhbGwkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3JhdyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJleHByX2Z1bmN0aW9uX2NhbGwkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZXhwcl9mdW5jdGlvbl9jYWxsIixzeW1ib2xzOlsiZXhwcl9mbl9uYW1lIiwibHBhcmVuIiwiZXhwcl9mdW5jdGlvbl9jYWxsJGVibmYkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhbGwiLGZ1bmN0aW9uOnQoZVswXSksYXJnczplWzJdfHxbXX0pfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbGwiKT97dHlwZToia3dfYWxsIn06a3dfYWxsXX0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGlzdGluY3QiKT97dHlwZToia3dfZGlzdGluY3QifTprd19kaXN0aW5jdF19LHtuYW1lOiJleHByX2NhbGwkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9jYWxsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDIiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6YX0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQzIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6YX0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2ZpbHRlciIsImxwYXJlbiIscy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmUsImV4cHIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDMpfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkNCIsc3ltYm9sczpbImV4cHJfY2FsbCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImV4cHJfY2FsbCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJleHByX2NhbGwkZWJuZiQ1IixzeW1ib2xzOlsiZXhwcl9jYWxsX292ZXIiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9jYWxsJGVibmYkNSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbCIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSIsImxwYXJlbiIsImV4cHJfY2FsbCRlYm5mJDEiLCJleHByX2NhbGwkZWJuZiQyIiwiZXhwcl9jYWxsJGVibmYkMyIsInJwYXJlbiIsImV4cHJfY2FsbCRlYm5mJDQiLCJleHByX2NhbGwkZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY2FsbCIsZnVuY3Rpb246dChlWzBdKSwuLi5lWzJdJiZ7ZGlzdGluY3Q6dyhlWzJdKX0sYXJnczplWzNdfHxbXSwuLi5lWzRdJiZ7b3JkZXJCeTplWzRdfSwuLi5lWzZdJiZ7ZmlsdGVyOnQoZVs2XSl9LC4uLmVbN10mJntvdmVyOnQoZVs3XSl9fSl9LHtuYW1lOiJleHByX2NhbGxfb3ZlciRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcGFydGl0aW9uIiwia3dfYnkiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImV4cHJfY2FsbF9vdmVyJGVibmYkMSIsc3ltYm9sczpbImV4cHJfY2FsbF9vdmVyJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9jYWxsX292ZXIkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZXhwcl9jYWxsX292ZXIkZWJuZiQyIixzeW1ib2xzOlsic2VsZWN0X29yZGVyX2J5Il0scG9zdHByb2Nlc3M6YX0se25hbWU6ImV4cHJfY2FsbF9vdmVyJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FsbF9vdmVyIixzeW1ib2xzOlsia3dfb3ZlciIsImxwYXJlbiIsImV4cHJfY2FsbF9vdmVyJGVibmYkMSIsImV4cHJfY2FsbF9vdmVyJGVibmYkMiIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUsey4uLmVbMl0mJntwYXJ0aXRpb25CeTplWzJdfSwuLi5lWzNdJiZ7b3JkZXJCeTplWzNdfX0pfSx7bmFtZToiZXhwcl9leHRyYWN0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpnKCJleHRyYWN0Iil9LHtuYW1lOiJleHByX2V4dHJhY3QiLHN5bWJvbHM6WyJleHByX2V4dHJhY3Qkc3ViZXhwcmVzc2lvbiQxIiwibHBhcmVuIiwid29yZCIscy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sImV4cHIiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJleHRyYWN0IixmaWVsZDp1KGVbMl0pLGZyb206ZVs0XX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOlsiZmxvYXQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJudW1lcmljIix2YWx1ZTooMCxyLnVuYm94KShlWzBdKX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOlsiaW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaW50ZWdlciIsdmFsdWU6KDAsci51bmJveCkoZVswXSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InN0cmluZyIsdmFsdWU6KDAsci51bmJveCkoZVswXSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RydWUiKT97dHlwZToia3dfdHJ1ZSJ9Omt3X3RydWVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJvb2xlYW4iLHZhbHVlOiEwfSl9LHtuYW1lOiJleHByX3ByaW1hcnkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mYWxzZSIpP3t0eXBlOiJrd19mYWxzZSJ9Omt3X2ZhbHNlXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJib29sZWFuIix2YWx1ZTohMX0pfSx7bmFtZToiZXhwcl9wcmltYXJ5IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToibnVsbCJ9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbInZhbHVlX2tleXdvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJrZXl3b3JkIixrZXl3b3JkOncoZSl9KX0se25hbWU6ImV4cHJfcHJpbWFyeSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInFwYXJhbSIpP3t0eXBlOiJxcGFyYW0ifTpxcGFyYW1dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InBhcmFtZXRlciIsbmFtZTp3KGVbMF0pfSl9LHtuYW1lOiJleHByX3ByaW1hcnkiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWZhdWx0In0pfSx7bmFtZToib3BzX2xpa2UiLHN5bWJvbHM6WyJvcHNfbGlrZV9rZXl3b3JzIl19LHtuYW1lOiJvcHNfbGlrZSIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyJdfSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczphfSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJvcHNfbGlrZV9rZXl3b3JzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2xpa2UiKT97dHlwZToia3dfbGlrZSJ9Omt3X2xpa2VdfSx7bmFtZToib3BzX2xpa2Vfa2V5d29ycyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbGlrZSIpP3t0eXBlOiJrd19pbGlrZSJ9Omt3X2lsaWtlXX0se25hbWU6Im9wc19saWtlX2tleXdvcnMiLHN5bWJvbHM6WyJvcHNfbGlrZV9rZXl3b3JzJGVibmYkMSIsIm9wc19saWtlX2tleXdvcnMkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJvcHNfbGlrZV9vcGVyYXRvcnMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfbGlrZSIpP3t0eXBlOiJvcF9saWtlIn06b3BfbGlrZV0scG9zdHByb2Nlc3M6KCk9PiJMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9pbGlrZSIpP3t0eXBlOiJvcF9pbGlrZSJ9Om9wX2lsaWtlXSxwb3N0cHJvY2VzczooKT0+IklMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDIiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9ub3RfbGlrZSIpP3t0eXBlOiJvcF9ub3RfbGlrZSJ9Om9wX25vdF9saWtlXSxwb3N0cHJvY2VzczooKT0+Ik5PVCBMSUtFIn0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyIsc3ltYm9sczpbIm9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDMiXX0se25hbWU6Im9wc19saWtlX29wZXJhdG9ycyRzdWJleHByZXNzaW9uJDQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9ub3RfaWxpa2UiKT97dHlwZToib3Bfbm90X2lsaWtlIn06b3Bfbm90X2lsaWtlXSxwb3N0cHJvY2VzczooKT0+Ik5PVCBJTElLRSJ9LHtuYW1lOiJvcHNfbGlrZV9vcGVyYXRvcnMiLHN5bWJvbHM6WyJvcHNfbGlrZV9vcGVyYXRvcnMkc3ViZXhwcmVzc2lvbiQ0Il19LHtuYW1lOiJvcHNfaW4kZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbm90Iik/e3R5cGU6Imt3X25vdCJ9Omt3X25vdF0scG9zdHByb2Nlc3M6YX0se25hbWU6Im9wc19pbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJvcHNfaW4iLHN5bWJvbHM6WyJvcHNfaW4kZWJuZiQxIixzLmxleGVyQW55Lmhhcygia3dfaW4iKT97dHlwZToia3dfaW4ifTprd19pbl19LHtuYW1lOiJvcHNfYmV0d2VlbiRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczphfSx7bmFtZToib3BzX2JldHdlZW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToib3BzX2JldHdlZW4iLHN5bWJvbHM6WyJvcHNfYmV0d2VlbiRlYm5mJDEiLCJrd19iZXR3ZWVuIl19LHtuYW1lOiJvcHNfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX21lbWJlciIpP3t0eXBlOiJvcF9tZW1iZXIifTpvcF9tZW1iZXJdfSx7bmFtZToib3BzX21lbWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJvcF9tZW1iZXJ0ZXh0Iik/e3R5cGU6Im9wX21lbWJlcnRleHQifTpvcF9tZW1iZXJ0ZXh0XX0se25hbWU6Im9wc19tZW1iZXIiLHN5bWJvbHM6WyJvcHNfbWVtYmVyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pnt2YXIgcDtyZXR1cm4ocD10KGUpKT09PW51bGx8fHA9PT12b2lkIDA/dm9pZCAwOnAudmFsdWV9fSx7bmFtZToiZXhwcl9saXN0X2l0ZW0iLHN5bWJvbHM6WyJleHByX29yX3NlbGVjdCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2xpc3RfaXRlbSIsc3ltYm9sczpbImV4cHJfc3RhciJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiZXhwcl9saXN0X2l0ZW0iXX0se25hbWU6ImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEkZWJuZiQxIiwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImV4cHJfbGlzdF9yYXckbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3JG1hY3JvY2FsbCQyIiwiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bZSwuLi5wfHxbXV19LHtuYW1lOiJleHByX2xpc3RfcmF3IixzeW1ib2xzOlsiZXhwcl9saXN0X3JhdyRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOihbZV0pPT5lLm1hcCh0KX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImV4cHJfbGlzdF9pdGVtIl19LHtuYW1lOiJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3X21hbnkkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQyIiwiZXhwcl9saXN0X3Jhd19tYW55JG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9PltlLC4uLnB8fFtdXX0se25hbWU6ImV4cHJfbGlzdF9yYXdfbWFueSIsc3ltYm9sczpbImV4cHJfbGlzdF9yYXdfbWFueSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOihbZV0pPT5lLm1hcCh0KX0se25hbWU6ImV4cHJfb3Jfc2
14VsZWN0IixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9vcl9zZWxlY3QiLHN5bWJvbHM6WyJzZWxlY3Rpb24iXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiZXhwcl9saXN0X21hbnkiLHN5bWJvbHM6WyJleHByX2xpc3RfcmF3X21hbnkiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsaXN0IixleHByZXNzaW9uczplWzBdfSl9LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQxIixzeW1ib2xzOlsiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9jYXNlJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FzZSRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQyIixzeW1ib2xzOlsiZXhwcl9jYXNlJGVibmYkMiIsImV4cHJfY2FzZV93aGVucyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJleHByX2Nhc2UkZWJuZiQzIixzeW1ib2xzOlsiZXhwcl9jYXNlX2Vsc2UiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZXhwcl9jYXNlJGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfY2FzZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Nhc2UiKT97dHlwZToia3dfY2FzZSJ9Omt3X2Nhc2UsImV4cHJfY2FzZSRlYm5mJDEiLCJleHByX2Nhc2UkZWJuZiQyIiwiZXhwcl9jYXNlJGVibmYkMyIscy5sZXhlckFueS5oYXMoImt3X2VuZCIpP3t0eXBlOiJrd19lbmQifTprd19lbmRdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNhc2UiLHZhbHVlOmVbMV0sd2hlbnM6ZVsyXSxlbHNlOmVbM119KX0se25hbWU6ImV4cHJfY2FzZV93aGVucyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZW4iKT97dHlwZToia3dfd2hlbiJ9Omt3X3doZW4sImV4cHJfbm9zdGFyIixzLmxleGVyQW55Lmhhcygia3dfdGhlbiIpP3t0eXBlOiJrd190aGVuIn06a3dfdGhlbiwiZXhwcl9ub3N0YXIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt3aGVuOmVbMV0sdmFsdWU6ZVszXX0pfSx7bmFtZToiZXhwcl9jYXNlX2Vsc2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19lbHNlIik/e3R5cGU6Imt3X2Vsc2UifTprd19lbHNlLCJleHByX25vc3RhciJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIixzLmxleGVyQW55LmhhcygiZG90Iik/e3R5cGU6ImRvdCJ9OmRvdF19LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsIndvcmRfb3Jfa2V5d29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6KDAsci51bmJveCkodChlWzFdKSksLi4uZVswXSYme3NjaGVtYTp3KGVbMF1bMF0pfX0pfSx7bmFtZToiZXhwcl9mbl9uYW1lIixzeW1ib2xzOlsiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hbnkiKT97dHlwZToia3dfYW55In06a3dfYW55XX0se25hbWU6ImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc29tZSIpP3t0eXBlOiJrd19zb21lIn06a3dfc29tZV19LHtuYW1lOiJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiZXhwcl9mbl9uYW1lJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImV4cHJfZm5fbmFtZSRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTp3KHQoZSkpfSl9LHtuYW1lOiJleHByX2ZuX25hbWUiLHN5bWJvbHM6WyJleHByX2ZuX25hbWUkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJ3b3JkX29yX2tleXdvcmQiLHN5bWJvbHM6WyJ3b3JkIl19LHtuYW1lOiJ3b3JkX29yX2tleXdvcmQiLHN5bWJvbHM6WyJ2YWx1ZV9rZXl3b3JkIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsdyhlKSl9LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9jYXRhbG9nIik/e3R5cGU6Imt3X2N1cnJlbnRfY2F0YWxvZyJ9Omt3X2N1cnJlbnRfY2F0YWxvZ119LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9kYXRlIik/e3R5cGU6Imt3X2N1cnJlbnRfZGF0ZSJ9Omt3X2N1cnJlbnRfZGF0ZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9yb2xlIik/e3R5cGU6Imt3X2N1cnJlbnRfcm9sZSJ9Omt3X2N1cnJlbnRfcm9sZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF9zY2hlbWEiKT97dHlwZToia3dfY3VycmVudF9zY2hlbWEifTprd19jdXJyZW50X3NjaGVtYV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lc3RhbXAiKT97dHlwZToia3dfY3VycmVudF90aW1lc3RhbXAifTprd19jdXJyZW50X3RpbWVzdGFtcF19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF90aW1lIik/e3R5cGU6Imt3X2N1cnJlbnRfdGltZSJ9Omt3X2N1cnJlbnRfdGltZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbG9jYWx0aW1lc3RhbXAiKT97dHlwZToia3dfbG9jYWx0aW1lc3RhbXAifTprd19sb2NhbHRpbWVzdGFtcF19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfbG9jYWx0aW1lIik/e3R5cGU6Imt3X2xvY2FsdGltZSJ9Omt3X2xvY2FsdGltZV19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfc2Vzc2lvbl91c2VyIik/e3R5cGU6Imt3X3Nlc3Npb25fdXNlciJ9Omt3X3Nlc3Npb25fdXNlcl19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNlciIpP3t0eXBlOiJrd191c2VyIn06a3dfdXNlcl19LHtuYW1lOiJ2YWx1ZV9rZXl3b3JkIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3VycmVudF91c2VyIik/e3R5cGU6Imt3X2N1cnJlbnRfdXNlciJ9Omt3X2N1cnJlbnRfdXNlcl19LHtuYW1lOiJleHByX3NwZWNpYWxfY2FsbHMiLHN5bWJvbHM6WyJzcGVfb3ZlcmxheSJdfSx7bmFtZToiZXhwcl9zcGVjaWFsX2NhbGxzIixzeW1ib2xzOlsic3BlX3N1YnN0cmluZyJdfSx7bmFtZToic3BlX292ZXJsYXkkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmcoIm92ZXJsYXkiKX0se25hbWU6InNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW4sImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfb3ZlcmxheSRzdWJleHByZXNzaW9uJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19wbGFjaW5nIik/e3R5cGU6Imt3X3BsYWNpbmcifTprd19wbGFjaW5nLCJleHByX25vc3RhciJdfSx7bmFtZToic3BlX292ZXJsYXkkc3ViZXhwcmVzc2lvbiQ0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwiZXhwcl9ub3N0YXIiXX0se25hbWU6InNwZV9vdmVybGF5JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19mb3IiKT97dHlwZToia3dfZm9yIn06a3dfZm9yLCJleHByX25vc3RhciJdfSx7bmFtZToic3BlX292ZXJsYXkkZWJuZiQxIixzeW1ib2xzOlsic3BlX292ZXJsYXkkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzcGVfb3ZlcmxheSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzcGVfb3ZlcmxheSIsc3ltYm9sczpbInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMSIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMiIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kMyIsInNwZV9vdmVybGF5JHN1YmV4cHJlc3Npb24kNCIsInNwZV9vdmVybGF5JGVibmYkMSIscy5sZXhlckFueS5oYXMoInJwYXJlbiIpP3t0eXBlOiJycGFyZW4ifTpycGFyZW5dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im92ZXJsYXkiLHZhbHVlOmVbMV1bMV0scGxhY2luZzplWzJdWzFdLGZyb206ZVszXVsxXSwuLi5lWzRdJiZ7Zm9yOmVbNF1bMV19fSl9LHtuYW1lOiJzcGVfc3Vic3RyaW5nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpnKCJzdWJzdHJpbmciKX0se25hbWU6InNwZV9zdWJzdHJpbmckc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbiwiZXhwcl9ub3N0YXIiXX0se25hbWU6InNwZV9zdWJzdHJpbmckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMSIsc3ltYm9sczpbInNwZV9zdWJzdHJpbmckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNwZV9zdWJzdHJpbmckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvciIpP3t0eXBlOiJrd19mb3IifTprd19mb3IsImV4cHJfbm9zdGFyIl19LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMiIsc3ltYm9sczpbInNwZV9zdWJzdHJpbmckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzcGVfc3Vic3RyaW5nJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InNwZV9zdWJzdHJpbmciLHN5bWJvbHM6WyJzcGVfc3Vic3RyaW5nJHN1YmV4cHJlc3Npb24kMSIsInNwZV9zdWJzdHJpbmckc3ViZXhwcmVzc2lvbiQyIiwic3BlX3N1YnN0cmluZyRlYm5mJDEiLCJzcGVfc3Vic3RyaW5nJGVibmYkMiIscy5sZXhlckFueS5oYXMoInJwYXJlbiIpP3t0eXBlOiJycGFyZW4ifTpycGFyZW5dLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InN1YnN0cmluZyIsdmFsdWU6ZVsxXVsxXSwuLi5lWzJdJiZ7ZnJvbTplWzJdWzFdfSwuLi5lWzNdJiZ7Zm9yOmVbM11bMV19fSl9LHtuYW1lOiJ2YXJpb3VzX2JpbmFyaWVzIixzeW1ib2xzOlsia3dfYXQiLCJrd190aW1lIiwia3dfem9uZSJdLHBvc3Rwcm9jZXNzOigpPT4iQVQgVElNRSBaT05FIn0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9tb2RpZmllcnMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRldGFibGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZXRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlLCJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIiwicW5hbWUiLCJscGFyZW4iLCJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QiLCJycGFyZW4iLCJjcmVhdGV0YWJsZV9zdGF0ZW1lbnQkZWJuZiQzIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHA9ZVs2XS5maWx0ZXIoeT0+ImtpbmQiaW4geSksbj1lWzZdLmZpbHRlcih5PT4hKCJraW5kImluIHkpKTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgdGFibGUiLC4uLmVbM10/e2lmTm90RXhpc3RzOiEwfTp7fSxuYW1lOmVbNF0sY29sdW1uczpwLC4uLnQoZVsxXSksLi4ubi5sZW5ndGg/e2NvbnN0cmFpbnRzOm59Ont9LC4uLl8oZSl9KX19LHtuYW1lOiJjcmVhdGV0YWJsZV9tb2RpZmllcnMiLHN5bWJvbHM6WyJrd191bmxvZ2dlZCJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0/e3VubG9nZ2VkOiEwfTp7fX0se25hbWU6ImNyZWF0ZXRhYmxlX21vZGlmaWVycyIsc3ltYm9sczpbIm1fbG9jZ2xvYiJdfSx7bmFtZToiY3JlYXRldGFibGVfbW9kaWZpZXJzIixzeW1ib2xzOlsibV90bXAiXX0se25hbWU6ImNyZWF0ZXRhYmxlX21vZGlmaWVycyIsc3ltYm9sczpbIm1fbG9jZ2xvYiIsIm1fdG1wIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+KHsuLi5lLC4uLnB9KX0se25hbWU6Im1fbG9jZ2xvYiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19sb2NhbCJdfSx7bmFtZToibV9sb2NnbG9iJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2dsb2JhbCJdfSx7bmFtZToibV9sb2NnbG9iIixzeW1ib2xzOlsibV9sb2NnbG9iJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pih7bG9jYWxpdHk6dyhlKX0pfSx7bmFtZToibV90bXAkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcCJdfSx7bmFtZToibV90bXAkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcG9yYXJ5Il19LHtuYW1lOiJtX3RtcCIsc3ltYm9sczpbIm1fdG1wJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pih7dGVtcG9yYXJ5OiEwfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9uIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9ubGlzdCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIiwiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb25saXN0IixzeW1ib2xzOlsiY3JlYXRldGFibGVfZGVjbGFyYXRpb24iLCJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbmxpc3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCJdfSx7bmFtZToiY3JlYXRldGFibGVfZGVjbGFyYXRpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9saWtlIl19
14LHtuYW1lOiJjcmVhdGV0YWJsZV9kZWNsYXJhdGlvbiIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2RlY2xhcmF0aW9uJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsIndvcmQiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPWVbMF0mJnUoZVswXVsxXSk7cmV0dXJuIHA/KDAsci50cmFjaykoZSx7Y29uc3RyYWludE5hbWU6cCwuLi50KGVbMV0pfSk6KDAsci50cmFjaykoZSx0KGVbMV0pKX19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50IixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludCRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2RlZiIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2RlZl9jaGVjayJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXkiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX3VuaXF1ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19wcmltYXJ5X2tleSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWZfdW5pcXVlIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29uc3RyYWludF9kZWZfdW5pcXVlJHN1YmV4cHJlc3Npb24kMSIsImxwYXJlbiIsImNyZWF0ZXRhYmxlX2NvbGxpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOncoZVswXSwiICIpLGNvbHVtbnM6ZVsyXS5tYXAodSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZGVmX2NoZWNrIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY2hlY2siKT97dHlwZToia3dfY2hlY2sifTprd19jaGVjaywiZXhwcl9wYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNoZWNrIixleHByOnQoZVsxXSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZm9yZWlnbmtleSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZvcmVpZ24iKT97dHlwZToia3dfZm9yZWlnbiJ9Omt3X2ZvcmVpZ24sImt3X2tleSIsImNvbGxpc3RfcGFyZW4iLCJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZm9yZWlnbiBrZXkiLGxvY2FsQ29sdW1uczplWzJdLm1hcCh1KSwuLi5lWzNdfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZXRhYmxlX3JlZmVyZW5jZXMkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfcmVmZXJlbmNlcyRlYm5mJDEiLCJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9yZWZlcmVuY2VzIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfcmVmZXJlbmNlcyIpP3t0eXBlOiJrd19yZWZlcmVuY2VzIn06a3dfcmVmZXJlbmNlcywidGFibGVfcmVmIiwiY29sbGlzdF9wYXJlbiIsImNyZWF0ZXRhYmxlX3JlZmVyZW5jZXMkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7Zm9yZWlnblRhYmxlOnQoZVsxXSksZm9yZWlnbkNvbHVtbnM6ZVsyXS5tYXAodSksLi4uZVszXS5yZWR1Y2UoKHAsbik9Pih7Li4ucCwuLi5ufSkse30pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImt3X2RlbGV0ZSIsImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfb25fYWN0aW9uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7b25EZWxldGU6XyhlKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmciLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uLCJrd191cGRhdGUiLCJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29uVXBkYXRlOl8oZSl9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnRfZm9yZWlnbmtleV9vbnNvbWV0aW5nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Z1bGwiKT97dHlwZToia3dfZnVsbCJ9Omt3X2Z1bGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcGFydGlhbCJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2ltcGxlIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X2ZvcmVpZ25rZXlfb25zb21ldGluZyIsc3ltYm9sczpbImt3X21hdGNoIiwiY3JlYXRldGFibGVfY29uc3RyYWludF9mb3JlaWdua2V5X29uc29tZXRpbmckc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bWF0Y2g6dyhfKGUpKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY2FzY2FkZSJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vIiwia3dfYWN0aW9uIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X251bGwiKT97dHlwZToia3dfbnVsbCJ9Omt3X251bGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHRdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc2V0IiwiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24kc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMiJdfSx7bmFtZToiY3JlYXRldGFibGVfY29uc3RyYWludF9vbl9hY3Rpb24iLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb25zdHJhaW50X29uX2FjdGlvbiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT53KGUsIiAiKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfY29sbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJpZGVudCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2xsaXN0JGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIiwiY3JlYXRldGFibGVfY29sbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbGxpc3QiLHN5bWJvbHM6WyJpZGVudCIsImNyZWF0ZXRhYmxlX2NvbGxpc3QkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxhdGUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbiRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMiIsImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50Il0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbiIsc3ltYm9sczpbIndvcmQiLCJkYXRhX3R5cGUiLCJjcmVhdGV0YWJsZV9jb2x1bW4kZWJuZiQxIiwiY3JlYXRldGFibGVfY29sdW1uJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2tpbmQ6ImNvbHVtbiIsbmFtZTp1KGVbMF0pLGRhdGFUeXBlOmVbMV0sLi4uZVsyXT97Y29sbGF0ZTplWzJdWzFdfTp7fSwuLi5lWzNdJiZlWzNdLmxlbmd0aD97Y29uc3RyYWludHM6ZVszXX06e319KX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2UkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfbGlrZSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9saWtlJGVibmYkMSIsImNyZWF0ZXRhYmxlX2xpa2Vfb3B0Il0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2UiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19saWtlIik/e3R5cGU6Imt3X2xpa2UifTprd19saWtlLCJxbmFtZSIsImNyZWF0ZXRhYmxlX2xpa2UkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7a2luZDoibGlrZSB0YWJsZSIsbGlrZTplWzFdLG9wdGlvbnM6ZVsyXX0pfSx7bmFtZToiY3JlYXRldGFibGVfbGlrZV9vcHQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfaW5jbHVkaW5nIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9saWtlX29wdCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19leGNsdWRpbmciXX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2Vfb3B0IixzeW1ib2xzOlsiY3JlYXRldGFibGVfbGlrZV9vcHQkc3ViZXhwcmVzc2lvbiQxIiwiY3JlYXRldGFibGVfbGlrZV9vcHRfdmFsIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dmVyYjp3KGVbMF0pLG9wdGlvbjp3KGVbMV0pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9saWtlX29wdF92YWwiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6RSgiZGVmYXVsdHMiLCJjb25zdHJhaW50cyIsImluZGV4ZXMiLCJzdG9yYWdlIiwiY29tbWVudHMiKX0se25hbWU6ImNyZWF0ZXRhYmxlX2xpa2Vfb3B0X3ZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiXX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25zdHJhaW50Iik/e3R5cGU6Imt3X2NvbnN0cmFpbnQifTprd19jb25zdHJhaW50LCJ3b3JkIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgcD1lWzBdJiZ1KGVbMF1bMV0pO3JldHVybiBwPygwLHIudHJhY2spKGUse2NvbnN0cmFpbnROYW1lOnAsLi4udChlWzFdKX0pOigwLHIudHJhY2spKGUsdChlWzFdKSl9fSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnQiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludCRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1bmlxdWUifSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6WyJrd19wcmltYXJ5X2tleSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InByaW1hcnkga2V5In0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsia3dfbm90X251bGwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJub3QgbnVsbCJ9KX0se25hbWU6ImNyZWF0ZXRhYmxlX2NvbHVtbl9jb25zdHJhaW50X2RlZiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X251bGwiKT97dHlwZToia3dfbnVsbCJ9Omt3X251bGxdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im51bGwifSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0LCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZGVmYXVsdCIsZGVmYXVsdDp0KGVbMV0pfSl9LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2x1bW5fY29uc3RyYWludF9kZWYiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jaGVjayIpP3t0eXBlOiJrd19jaGVjayJ9Omt3X2NoZWNrLCJleHByX3BhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY2hlY2siLGV4cHI6dChlWzFdKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsiY3JlYXRldGFibGVfcmVmZXJlbmNlcyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlZmVyZW5jZSIsLi4udChlKX0pfSx7bmFtZToiY3JlYXRldGFibGVfY29sdW1uX2NvbnN0cmFpbnRfZGVmIixzeW1ib2xzOlsiYWx0ZXJjb2xfZ2VuZXJhdGVkIl19LHtuYW1lOiJjcmVhdGV0YWJsZV9jb2xsYXRlIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY29sbGF0ZSIpP3t0eXBlOiJrd19jb2xsYXRlIn06a3dfY29sbGF0ZSwicXVhbGlmaWVkX25hbWUiXX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmcoImluaGVyaXRzIil9LHtuYW1lOiJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsicW5hbWUiXX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldGFibGVfb3B0cyRtYW
14Nyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXRhYmxlX29wdHMkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGV0YWJsZV9vcHRzJG1hY3JvY2FsbCQyIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bdChlKSwuLi5wLm1hcCh0KXx8W11dfSx7bmFtZToiY3JlYXRldGFibGVfb3B0cyIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX29wdHMkc3ViZXhwcmVzc2lvbiQxIiwibHBhcmVuIiwiY3JlYXRldGFibGVfb3B0cyRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2luaGVyaXRzOmVbMl19KX0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd191bmlxdWUiKT97dHlwZToia3dfdW5pcXVlIn06a3dfdW5pcXVlXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNpbmciKT97dHlwZToia3dfdXNpbmcifTprd191c2luZywiaWRlbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfd2l0aCJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNiIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3RibHNwYWNlIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ3IixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfcHJlZGljYXRlIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDciLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVpbmRleF9zdGF0ZW1lbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQxIiwia3dfaW5kZXgiLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQyIiwiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkMyIscy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sInRhYmxlX3JlZiIsImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDQiLCJscGFyZW4iLCJjcmVhdGVpbmRleF9leHByZXNzaW9ucyIsInJwYXJlbiIsImNyZWF0ZWluZGV4X3N0YXRlbWVudCRlYm5mJDUiLCJjcmVhdGVpbmRleF9zdGF0ZW1lbnQkZWJuZiQ2IiwiY3JlYXRlaW5kZXhfc3RhdGVtZW50JGVibmYkNyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSBpbmRleCIsLi4uZVsxXSYme3VuaXF1ZTohMH0sLi4uZVszXSYme2lmTm90RXhpc3RzOiEwfSwuLi5lWzRdJiZ7aW5kZXhOYW1lOnUoZVs0XSl9LHRhYmxlOmVbNl0sLi4uZVs3XSYme3VzaW5nOnUoZVs3XSl9LGV4cHJlc3Npb25zOmVbOV0sLi4uZVsxMV0mJnt3aXRoOmVbMTFdfSwuLi5lWzEyXSYme3RhYmxlc3BhY2U6dChlWzEyXSl9LC4uLmVbMTNdJiZ7d2hlcmU6dChlWzEzXSl9fSl9LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9ucyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9ucyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJjcmVhdGVpbmRleF9leHByZXNzaW9uIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb25zJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbnMiLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9leHByZXNzaW9uIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbnMkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W2UsLi4ucHx8W11dfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJleHByX2Jhc2ljIl19LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImV4cHJfcGFyZW4iXX0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NvbGxhdGUiKT97dHlwZToia3dfY29sbGF0ZSJ9Omt3X2NvbGxhdGUsInF1YWxpZmllZF9uYW1lIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDIiLHN5bWJvbHM6WyJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzYyIpP3t0eXBlOiJrd19hc2MifTprd19hc2NdfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZGVzYyIpP3t0eXBlOiJrd19kZXNjIn06a3dfZGVzY119LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19maXJzdCJdfSx7bmFtZToiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2xhc3QiXX0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X251bGxzIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkNCIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWluZGV4X2V4cHJlc3Npb24iLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9leHByZXNzaW9uJHN1YmV4cHJlc3Npb24kMSIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQxIiwiY3JlYXRlaW5kZXhfZXhwcmVzc2lvbiRlYm5mJDIiLCJjcmVhdGVpbmRleF9leHByZXNzaW9uJGVibmYkMyIsImNyZWF0ZWluZGV4X2V4cHJlc3Npb24kZWJuZiQ0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7ZXhwcmVzc2lvbjp0KGVbMF0pLC4uLmVbMV0mJntjb2xsYXRlOnQoZVsxXSl9LC4uLmVbMl0mJntvcGNsYXNzOnQoZVsyXSl9LC4uLmVbM10mJntvcmRlcjp0KGVbM10pLnZhbHVlfSwuLi5lWzRdJiZ7bnVsbHM6dChlWzRdKX19KX0se25hbWU6ImNyZWF0ZWluZGV4X3ByZWRpY2F0ZSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3doZXJlIik/e3R5cGU6Imt3X3doZXJlIn06a3dfd2hlcmUsImV4cHIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3dpdGhfaXRlbSJdfSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWluZGV4X3dpdGgkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZWluZGV4X3dpdGgkbWFjcm9jYWxsJDIiLCJjcmVhdGVpbmRleF93aXRoJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9Plt0KGUpLC4uLnAubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwibHBhcmVuIiwiY3JlYXRlaW5kZXhfd2l0aCRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMil9LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic3RyaW5nIl19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiaW50Il19LHtuYW1lOiJjcmVhdGVpbmRleF93aXRoX2l0ZW0iLHN5bWJvbHM6WyJpZGVudCIscy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXEsImNyZWF0ZWluZGV4X3dpdGhfaXRlbSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtwYXJhbWV0ZXI6dyhlWzBdKSx2YWx1ZTp0KGVbMl0pLnRvU3RyaW5nKCl9KX0se25hbWU6ImNyZWF0ZWluZGV4X3RibHNwYWNlIixzeW1ib2xzOlsia3dfdGFibGVzcGFjZSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlZXh0
14ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGhdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NjaGVtYSIsIndvcmQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6WyJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkNCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd192ZXJzaW9uIiwic3RyaW5nIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOlsiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDUkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZnJvbSIpP3t0eXBlOiJrd19mcm9tIn06a3dfZnJvbSwic3RyaW5nIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDUkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X2V4dGVuc2lvbiIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQxIiwid29yZCIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQyIiwiY3JlYXRlZXh0ZW5zaW9uX3N0YXRlbWVudCRlYm5mJDMiLCJjcmVhdGVleHRlbnNpb25fc3RhdGVtZW50JGVibmYkNCIsImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQkZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIGV4dGVuc2lvbiIsLi4uZVsyXT97aWZOb3RFeGlzdHM6ITB9Ont9LGV4dGVuc2lvbjp1KGVbM10pLC4uLmVbNV0/e3NjaGVtYTp1KGVbNV0pfTp7fSwuLi5lWzZdP3t2ZXJzaW9uOmQoZVs2XSl9Ont9LC4uLmVbN10/e2Zyb206ZChlWzddKX06e319KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYWxsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2NvbW1pdCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3JvbGxiYWNrIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2FsbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfdGFibGVzcGFjZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19hbGwiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3Nob3ciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYWxsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zdGFydCIsImt3X3RyYW5zYWN0aW9uIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3N0YXJ0X3RyYW5zYWN0aW9uIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zdGFydF90cmFuc2FjdGlvbiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzdGFydCB0cmFuc2FjdGlvbiJ9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfY29tbWl0IixzeW1ib2xzOlsia3dfY29tbWl0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY29tbWl0In0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19yb2xsYmFjayIsc3ltYm9sczpbImt3X3JvbGxiYWNrIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicm9sbGJhY2sifSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3RhYmxlc3BhY2UiLHN5bWJvbHM6WyJrd190YWJsZXNwYWNlIiwid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRhYmxlc3BhY2UiLHRhYmxlc3BhY2U6dShlWzFdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfbmFtZXMiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0IixzeW1ib2xzOlsia3dfc2V0Iiwic2ltcGxlc3RhdGVtZW50c19zZXQkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lIixzeW1ib2xzOlsia3dfdGltZSIsImt3X3pvbmUiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZV92YWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgdGltZXpvbmUiLHRvOmVbMl19KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzdHJpbmciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ2YWx1ZSIsdmFsdWU6dChlWzBdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdGltZXpvbmVfdmFsIixzeW1ib2xzOlsia3dfbG9jYWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsb2NhbCJ9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3RpbWV6b25lX3ZhbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHRdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRlZmF1bHQifSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF90aW1lem9uZV92YWwiLHN5bWJvbHM6WyJrd19pbnRlcnZhbCIsInN0cmluZyIsImt3X2hvdXIiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJrd19taW51dGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJpbnRlcnZhbCIsdmFsdWU6KDAsci51bmJveCkoZVsxXSl9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzIixzeW1ib2xzOlsia3dfbmFtZXMiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF9uYW1lc192YWwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgbmFtZXMiLHRvOmVbMV19KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzdHJpbmciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X25hbWVzX3ZhbCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ2YWx1ZSIsdmFsdWU6dChlWzBdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm9wX2VxIik/e3R5cGU6Im9wX2VxIn06b3BfZXFdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG9dfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfc2ltcGxlIixzeW1ib2xzOlsiaWRlbnQiLCJzaW1wbGVzdGF0ZW1lbnRzX3NldF9zaW1wbGUkc3ViZXhwcmVzc2lvbiQxIiwic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic2V0Iix2YXJpYWJsZTp1KGVbMF0pLHNldDooMCxyLnVuYm94KShlWzJdKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWZhdWx0In0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjb21tYSIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJjb21tYSIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWwkZWJuZiQxIiwic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsJGVibmYkMSRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyIsInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbCRlYm5mJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJsaXN0Iix2YWx1ZXM6W2VbMF0sLi4uZVsxXXx8W11dfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInN0cmluZyJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXciLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InZhbHVlIix2YWx1ZTp0KGUpfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vbiIpP3t0eXBlOiJrd19vbiJ9Omt3X29uXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXckc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdHJ1ZSIpP3t0eXBlOiJrd190cnVlIn06a3dfdHJ1ZV19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3JHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2ZhbHNlIik/e3R5cGU6Imt3X2ZhbHNlIn06a3dfZmFsc2VdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zZXRfdmFsX3JhdyIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfc2V0X3ZhbF9yYXckc3ViZXhwcmVzc2lvbiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaWRlbnRpZmllciIsbmFtZTp0KGUpLnZhbHVlfSl9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX3NldF92YWxfcmF3IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicXVvdGVkX3dvcmQiKT97dHlwZToicXVvdGVkX3dvcmQifTpxdW90ZWRfd29yZF0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiaWRlbnRpZmllciIsZG91YmxlUXVvdGVkOiEwLG5hbWU6dChlKS52YWx1ZX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19zaG93IixzeW1ib2xzOlsia3dfc2hvdyIsImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToic2hvdyIsdmFyaWFibGU6dShlWzFdKX0pfSx7bmFtZToiY3JlYXRlX3NjaGVtYSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jcmVhdGUiKT97dHlwZToia3dfY3JlYXRlIn06a3dfY3JlYXRlLCJrd19zY2hlbWEiXX0se25hbWU6ImNyZWF0ZV9zY2hlbWEkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX3NjaGVtYSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2NoZW1hIixzeW1ib2xzOlsiY3JlYXRlX3NjaGVtYSRzdWJleHByZXNzaW9uJDEiLCJjcmVhdGVfc2NoZW1hJGVibmYkMSIsImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIHNjaGVtYSIsbmFtZTp1KGVbMl0pLC4uLmVbMV0/e2lmTm90RXhpc3RzOiEwfTp7fX0pfSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJkZWJ1ZyIsImxvZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXhjZXB0aW9uIil9LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsicmFpc2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJleHByX2xpc3RfcmF3Il0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDIiLHN5bWJvbHM6WyJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmFpc2Vfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInJhaXNlX3VzaW5nIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InJhaXNlX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJyYWlzZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19yYWlzZSIsInJhaXNlX3N0YXRlbWVudCRlYm5mJDEiLCJzdHJpbmciLCJyYWlzZV9zdGF0ZW1lbnQkZWJuZiQyIiwicmFpc2Vfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJhaXNlIixmb3JtYXQ6dyhlWzJdKSwuLi5lWzFdJiZ7bGV2ZWw6dyhlWzFdKX0sLi4uZVszXSYmZVszXS5sZW5ndGgmJntmb3JtYXRFeHByczplWzNdfSwuLi5lWzRdJiZlWzRdLmxlbmd0aCYme3VzaW5nOmVbNF19fSl9LHtuYW1lOiJyYWlzZV91c2luZyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInJhaXNlX3VzaW5nX29uZSJdfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSIsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToicmFpc2VfdXNpbmckbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJyYWlzZV91c2luZyRtYWNyb2NhbGwkMiIsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9Plt0KGUpLC4uLnAubWFwKHQpfHxbXV19LHtuYW1lOiJyYWlzZV91c2luZyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VzaW5nIik/e3R5cGU6Imt3X3VzaW5nIn06a3dfdXNpbmcsInJhaXNlX3VzaW5nJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6InJhaXNlX3VzaW5nX29uZSIsc3ltYm9sczpbInJhaXNlX3VzaW5nX3doYXQiLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJleHByIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZTp3KGVbMF0pLHZhbHVlOmVbMl19KX0se25hbWU6InJhaXNlX3VzaW5nX3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlXX0se25hbWU6InJhaXNlX3VzaW5nX3doYXQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ3b3JkIik/e3R5cGU6IndvcmQifTp3b3JkXSxwb3N0cHJvY2VzczpFKCJtZXNzYWdlIiwiZGV0YWlsIiwiaGludCIsImVycmNvZGUiLCJjb2x1bW4iLCJjb25zdHJhaW50Iiwi
14ZGF0YXR5cGUiLCJzY2hlbWEiKX0se25hbWU6ImNvbW1lbnRfc3RhdGVtZW50IixzeW1ib2xzOlsia3dfY29tbWVudCIscy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24sImNvbW1lbnRfd2hhdCIscy5sZXhlckFueS5oYXMoImt3X2lzIik/e3R5cGU6Imt3X2lzIn06a3dfaXMsInN0cmluZyJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNvbW1lbnQiLGNvbW1lbnQ6KDAsci51bmJveCkoXyhlKSksb246dChlWzJdKX0pfSx7bmFtZToiY29tbWVudF93aGF0IixzeW1ib2xzOlsiY29tbWVudF93aGF0X2NvbCJdfSx7bmFtZToiY29tbWVudF93aGF0IixzeW1ib2xzOlsiY29tbWVudF93aGF0X25tIl19LHtuYW1lOiJjb21tZW50X3doYXRfbm0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZV19LHtuYW1lOiJjb21tZW50X3doYXRfbm0kc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbWF0ZXJpYWxpemVkIiwia3dfdmlldyJdfSx7bmFtZToiY29tbWVudF93aGF0X25tJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIndvcmQiKT97dHlwZToid29yZCJ9OndvcmRdLHBvc3Rwcm9jZXNzOkUoImRhdGFiYXNlIiwiaW5kZXgiLCJ0cmlnZ2VyIiwidHlwZSIsInZpZXciKX0se25hbWU6ImNvbW1lbnRfd2hhdF9ubSIsc3ltYm9sczpbImNvbW1lbnRfd2hhdF9ubSRzdWJleHByZXNzaW9uJDEiLCJxdWFsaWZpZWRfbmFtZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6dyhlWzBdKSxuYW1lOmVbMV19KX0se25hbWU6ImNvbW1lbnRfd2hhdF9jb2wiLHN5bWJvbHM6WyJrd19jb2x1bW4iLCJxY29sdW1uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY29sdW1uIixjb2x1bW46XyhlKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdHJhbnNhY3Rpb24iXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3dvcmsiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIiLHN5bWJvbHM6W119LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbl9kZWYiXX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW4kZWJuZiQyIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDIiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbiIsc3ltYm9sczpbImt3X2JlZ2luIiwic2ltcGxlc3RhdGVtZW50c19iZWdpbiRlYm5mJDEiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImJlZ2luIiwuLi5lWzJdLnJlZHVjZSgocCxuKT0+KHsuLi50KHApLC4uLnQobil9KSx7fSl9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19pc29sYXRpb24iLCJrd19sZXZlbCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImt3X3NlcmlhbGl6YWJsZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6ZygicmVwZWF0YWJsZSIpfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQxIiwia3dfcmVhZCJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6ZygiY29tbWl0dGVkIil9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyIixzeW1ib2xzOlsia3dfcmVhZCIsInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIkc3ViZXhwcmVzc2lvbiQyIl19LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMyIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpnKCJ1bmNvbW1pdHRlZCIpfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMiIsc3ltYm9sczpbImt3X3JlYWQiLCJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2lzb2wkc3ViZXhwcmVzc2lvbiQyJHN1YmV4cHJlc3Npb24kMyJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sIixzeW1ib2xzOlsic2ltcGxlc3RhdGVtZW50c19iZWdpbl9pc29sJHN1YmV4cHJlc3Npb24kMSIsInNpbXBsZXN0YXRlbWVudHNfYmVnaW5faXNvbCRzdWJleHByZXNzaW9uJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtpc29sYXRpb25MZXZlbDp3KGVbMV0sIiAiKX0pfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl93cml0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JlYWQiLCJrd193cml0ZSJdfSx7bmFtZToic2ltcGxlc3RhdGVtZW50c19iZWdpbl93cml0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3JlYWQiLHMubGV4ZXJBbnkuaGFzKCJrd19vbmx5Iik/e3R5cGU6Imt3X29ubHkifTprd19vbmx5XX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fd3JpdCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt3cml0ZWFibGU6dyhlLCIgIil9KX0se25hbWU6InNpbXBsZXN0YXRlbWVudHNfYmVnaW5fZGVmJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X25vdCIpP3t0eXBlOiJrd19ub3QifTprd19ub3RdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2RlZiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzaW1wbGVzdGF0ZW1lbnRzX2JlZ2luX2RlZiIsc3ltYm9sczpbInNpbXBsZXN0YXRlbWVudHNfYmVnaW5fZGVmJGVibmYkMSIscy5sZXhlckFueS5oYXMoImt3X2RlZmVycmFibGUiKT97dHlwZToia3dfZGVmZXJyYWJsZSJ9Omt3X2RlZmVycmFibGVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2RlZmVycmFibGU6IWVbMF19KX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfaW5zZXJ0IixzLmxleGVyQW55Lmhhcygia3dfaW50byIpP3t0eXBlOiJrd19pbnRvIn06a3dfaW50b119LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbImNvbGxpc3RfcGFyZW4iXSxwb3N0cHJvY2VzczphfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfc3lzdGVtIl19
14LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfdXNlciIpP3t0eXBlOiJrd191c2VyIn06a3dfdXNlcl19LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19vdmVycmlkaW5nIiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsImt3X3ZhbHVlIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic2VsZWN0aW9uIl19LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkMyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJzZWxlY3Rpb25fcGFyZW4iXX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQzIixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6Imluc2VydF9zdGF0ZW1lbnQkZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb24iKT97dHlwZToia3dfb24ifTprd19vbiwia3dfY29uZmxpY3QiLCJpbnNlcnRfb25fY29uZmxpY3QiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50JGVibmYkNCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDQiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50JGVibmYkNSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50JGVibmYkNSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJpbnNlcnRfc3RhdGVtZW50IixzeW1ib2xzOlsiaW5zZXJ0X3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImluc2VydF9zdGF0ZW1lbnQkZWJuZiQxIiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDIiLCJpbnNlcnRfc3RhdGVtZW50JGVibmYkMyIsImluc2VydF9zdGF0ZW1lbnQkZWJuZiQ0IiwiaW5zZXJ0X3N0YXRlbWVudCRlYm5mJDUiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgcD1lWzJdJiZlWzJdLm1hcCh1KSxuPXcoZVszXSkseT10KGVbNF0pLGs9ZVs1XSxPPWVbNl07cmV0dXJuKDAsci50cmFjaykoZSx7dHlwZToiaW5zZXJ0IixpbnRvOnQoZVsxXSksaW5zZXJ0OnksLi4ubiYme292ZXJyaWRpbmc6bn0sLi4ucCYme2NvbHVtbnM6cH0sLi4uTyYme3JldHVybmluZzpPfSwuLi5rJiZ7b25Db25mbGljdDprfX0pfX0se25hbWU6Imluc2VydF92YWx1ZXMkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJpbnNlcnRfdmFsdWUiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEiLHN5bWJvbHM6WyJpbnNlcnRfdmFsdWVzJGVibmYkMSIsImluc2VydF92YWx1ZXMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJpbnNlcnRfdmFsdWVzIixzeW1ib2xzOlsiaW5zZXJ0X3ZhbHVlIiwiaW5zZXJ0X3ZhbHVlcyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bZSwuLi5wfHxbXV19LHtuYW1lOiJpbnNlcnRfdmFsdWUiLHN5bWJvbHM6WyJscGFyZW4iLCJpbnNlcnRfZXhwcl9saXN0X3JhdyIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJleHByX29yX3NlbGVjdCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLHN5bWJvbHM6WyJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiLCJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6Imluc2VydF9leHByX2xpc3RfcmF3IixzeW1ib2xzOlsiZXhwcl9vcl9zZWxlY3QiLCJpbnNlcnRfZXhwcl9saXN0X3JhdyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bZSwuLi5wfHxbXV19LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3QkZWJuZiQxIixzeW1ib2xzOlsiaW5zZXJ0X29uX2NvbmZsaWN0X3doYXQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiaW5zZXJ0X29uX2NvbmZsaWN0JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6Imluc2VydF9vbl9jb25mbGljdCIsc3ltYm9sczpbImluc2VydF9vbl9jb25mbGljdCRlYm5mJDEiLCJpbnNlcnRfb25fY29uZmxpY3RfZG8iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHsuLi5lWzBdP3tvbjp0KGVbMF0pfTp7fSwuLi5lWzFdfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3Rfd2hhdCIsc3ltYm9sczpbImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJvbiBleHByIixleHByczplWzFdfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3Rfd2hhdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X29uIik/e3R5cGU6Imt3X29uIn06a3dfb24scy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsInFuYW1lIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToib24gY29uc3RyYWludCIsY29uc3RyYWludDpfKGUpfSl9LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3RfZG8iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kbyIpP3t0eXBlOiJrd19kbyJ9Omt3X2RvLCJrd19ub3RoaW5nIl0scG9zdHByb2Nlc3M6ZT0+KHtkbzoiZG8gbm90aGluZyJ9KX0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19kbyIpP3t0eXBlOiJrd19kbyJ9Omt3X2RvLCJrd191cGRhdGUiLCJrd19zZXQiXX0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2hlcmUiKT97dHlwZToia3dfd2hlcmUifTprd193aGVyZSwiZXhwciJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJpbnNlcnRfb25fY29uZmxpY3RfZG8kZWJuZiQxIixzeW1ib2xzOlsiaW5zZXJ0X29uX2NvbmZsaWN0X2RvJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiaW5zZXJ0X29uX2NvbmZsaWN0X2RvJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6Imluc2VydF9vbl9jb25mbGljdF9kbyIsc3ltYm9sczpbImluc2VydF9vbl9jb25mbGljdF9kbyRzdWJleHByZXNzaW9uJDEiLCJ1cGRhdGVfc2V0X2xpc3QiLCJpbnNlcnRfb25fY29uZmxpY3RfZG8kZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KHtkbzp7c2V0czplWzFdfSwuLi5lWzJdJiZ7d2hlcmU6ZVsyXX19KX0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb20sInNlbGVjdF9mcm9tX3N1YmplY3QiXSxwb3N0cHJvY2VzczpffSx7bmFtZToidXBkYXRlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToidXBkYXRlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbInNlbGVjdF93aGVyZSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3JldHVybmluZyIpP3t0eXBlOiJrd19yZXR1cm5pbmcifTprd19yZXR1cm5pbmcsInNlbGVjdF9leHByX2xpc3RfYWxpYXNlZCJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbInVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQzJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InVwZGF0ZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd191cGRhdGUiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImt3X3NldCIsInVwZGF0ZV9zZXRfbGlzdCIsInVwZGF0ZV9zdGF0ZW1lbnQkZWJuZiQxIiwidXBkYXRlX3N0YXRlbWVudCRlYm5mJDIiLCJ1cGRhdGVfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPXQoZVs0XSksbj10KGVbNV0pLHk9ZVs2XTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJ1cGRhdGUiLHRhYmxlOnQoZVsxXSksc2V0czplWzNdLC4uLm4/e3doZXJlOm59Ont9LC4uLnA/e2Zyb206cH06e30sLi4ueT97cmV0dXJuaW5nOnl9Ont9fSl9fSx7bmFtZToidXBkYXRlX3NldF9saXN0JGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6InVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY29tbWEiLCJ1cGRhdGVfc2V0Il0scG9zdHByb2Nlc3M6X30se25hbWU6InVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEiLHN5bWJvbHM6WyJ1cGRhdGVfc2V0X2xpc3QkZWJuZiQxIiwidXBkYXRlX3NldF9saXN0JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToidXBkYXRlX3NldF9saXN0IixzeW1ib2xzOlsidXBkYXRlX3NldCIsInVwZGF0ZV9zZXRfbGlzdCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgeSBvZltlLC4uLnB8fFtdXSl7Y29uc3Qgaz10KHkpO0FycmF5LmlzQXJyYXkoayk/bi5wdXNoKC4uLmspOm4ucHVzaChrKX1yZXR1cm4gbn19LHtuYW1lOiJ1cGRhdGVfc2V0IixzeW1ib2xzOlsidXBkYXRlX3NldF9vbmUiXX0se25hbWU6InVwZGF0ZV9zZXQiLHN5bWJvbHM6WyJ1cGRhdGVfc2V0X211bHRpcGxlIl19LHtuYW1lOiJ1cGRhdGVfc2V0X29uZSIsc3ltYm9sczpbImlkZW50IixzLmxleGVyQW55Lmhhcygib3BfZXEiKT97dHlwZToib3BfZXEifTpvcF9lcSwiZXhwciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLHtjb2x1bW46dShlWzBdKSx2YWx1ZTp0KGVbMl0pfSl9LHtuYW1lOiJ1cGRhdGVfc2V0X211bHRpcGxlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImV4cHJfbGlzdF9yYXciLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToidXBkYXRlX3NldF9tdWx0aXBsZSIsc3ltYm9sczpbImNvbGxpc3RfcGFyZW4iLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJ1cGRhdGVfc2V0X211bHRpcGxlJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPWVbMF0sbj1lWzJdO2lmKHAubGVuZ3RoIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgdmFsdWVzIik7cmV0dXJuKDAsci5ib3gpKGUscC5tYXAoKHksayk9Pih7Y29sdW1uOnUoeSksdmFsdWU6dChuW2tdKX0pKSl9fSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOlsia3dfaWZleGlzdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb25seSIpP3t0eXBlOiJrd19vbmx5In06a3dfb25seV0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVydGFibGVfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfc3RhdGVtZW50IixzeW1ib2xzOlsia3dfYWx0ZXIiLHMubGV4ZXJBbnkuaGFzKCJrd190YWJsZSIpP3t0eXBlOiJrd190YWJsZSJ9Omt3X3RhYmxlLCJhbHRlcnRhYmxlX3N0YXRlbWVudCRlYm5mJDEiLCJhbHRlcnRhYmxlX3N0YXRlbWVudCRlYm5mJDIiLCJ0YWJsZV9yZWYiLCJhbHRlcnRhYmxlX2FjdGlvbnMiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhbHRlciB0YWJsZSIsLi4uZVsyXT97aWZFeGlzdHM6ITB9Ont9LC4uLmVbM10/e29ubHk6ITB9Ont9LHRhYmxlOnQoZVs0XSksY2hhbmdlczooMCxyLnVuYm94KShlWzVdKS5tYXAodCl9KX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbnMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwiYWx0ZXJ0YWJsZV9hY3Rpb24iXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb25zJGVibmYkMSIsc3ltYm9sczpbImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiLCJhbHRlcnRhYmxlX2FjdGlvbnMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbnMiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2FjdGlvbiIsImFsdGVydGFibGVfYWN0aW9ucyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bZSwuLi5wfHxbXV19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfcmVuYW1lX3RhYmxlIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfcmVuYW1lX2NvbHVtbiJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcnRhYmxlX3JlbmFtZV9jb25zdHJhaW50Il19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWRkX2NvbHVtbiJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWx0ZXJfY29sdW1uIl19LHtuYW1lOiJhbHRlcnRhYmxlX2FjdGlvbiIsc3ltYm9sczpbImFsdGVydGFibGVfYWRkX2NvbnN0cmFpbnQiXX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9uIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9kcm9wX2NvbnN0cmFpbnQiXX0se25hbWU6ImFsdGVydGFibGVfYWN0aW9uIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9vd25lciJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9yZW5
14hbWVfdGFibGUiLHN5bWJvbHM6WyJrd19yZW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJ3b3JkIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIix0bzp1KF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsia3dfY29sdW1uIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVydGFibGVfcmVuYW1lX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4iLHN5bWJvbHM6WyJrd19yZW5hbWUiLCJhbHRlcnRhYmxlX3JlbmFtZV9jb2x1bW4kZWJuZiQxIiwiaWRlbnQiLHMubGV4ZXJBbnkuaGFzKCJrd190byIpP3t0eXBlOiJrd190byJ9Omt3X3RvLCJpZGVudCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InJlbmFtZSBjb2x1bW4iLGNvbHVtbjp1KGVbMl0pLHRvOnUoXyhlKSl9KX0se25hbWU6ImFsdGVydGFibGVfcmVuYW1lX2NvbnN0cmFpbnQiLHN5bWJvbHM6WyJrd19yZW5hbWUiLHMubGV4ZXJBbnkuaGFzKCJrd19jb25zdHJhaW50Iik/e3R5cGU6Imt3X2NvbnN0cmFpbnQifTprd19jb25zdHJhaW50LCJpZGVudCIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIGNvbnN0cmFpbnQiLGNvbnN0cmFpbnQ6dShlWzJdKSx0bzp1KF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOlsia3dfY29sdW1uIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVydGFibGVfYWRkX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsia3dfaWZub3RleGlzdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJ0YWJsZV9hZGRfY29sdW1uJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfYWRkX2NvbHVtbiIsc3ltYm9sczpbImt3X2FkZCIsImFsdGVydGFibGVfYWRkX2NvbHVtbiRlYm5mJDEiLCJhbHRlcnRhYmxlX2FkZF9jb2x1bW4kZWJuZiQyIiwiY3JlYXRldGFibGVfY29sdW1uIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiYWRkIGNvbHVtbiIsLi4uZVsyXT97aWZOb3RFeGlzdHM6ITB9Ont9LGNvbHVtbjp0KGVbM10pfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbImt3X2NvbHVtbiJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQyIixzeW1ib2xzOlsia3dfaWZleGlzdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY2FzY2FkZSJdfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uJGVibmYkMyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDMiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29sdW1uIixzeW1ib2xzOlsia3dfZHJvcCIsImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQxIiwiYWx0ZXJ0YWJsZV9kcm9wX2NvbHVtbiRlYm5mJDIiLCJpZGVudCIsImFsdGVydGFibGVfZHJvcF9jb2x1bW4kZWJuZiQzIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCBjb2x1bW4iLC4uLmVbMl0/e2lmRXhpc3RzOiEwfTp7fSxjb2x1bW46dShlWzNdKSwuLi5lWzRdP3tiZWhhdmlvdXI6dyhlWzRdLCIgIil9Ont9fSl9LHtuYW1lOiJhbHRlcnRhYmxlX2FsdGVyX2NvbHVtbiRlYm5mJDEiLHN5bWJvbHM6WyJrd19jb2x1bW4iXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJ0YWJsZV9hbHRlcl9jb2x1bW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJ0YWJsZV9hbHRlcl9jb2x1bW4iLHN5bWJvbHM6WyJrd19hbHRlciIsImFsdGVydGFibGVfYWx0ZXJfY29sdW1uJGVibmYkMSIsImlkZW50IiwiYWx0ZXJjb2wiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhbHRlciBjb2x1bW4iLGNvbHVtbjp1KGVbMl0pLGFsdGVyOnQoZVszXSl9KX0se25hbWU6ImFsdGVyY29sJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zZXQiLCJrd19kYXRhIl19LHtuYW1lOiJhbHRlcmNvbCRlYm5mJDEiLHN5bWJvbHM6WyJhbHRlcmNvbCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVyY29sJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVyY29sIixzeW1ib2xzOlsiYWx0ZXJjb2wkZWJuZiQxIiwia3dfdHlwZSIsImRhdGFfdHlwZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InNldCB0eXBlIixkYXRhVHlwZTp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImt3X3NldCIscy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHQsImV4cHIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgZGVmYXVsdCIsZGVmYXVsdDp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImt3X2Ryb3AiLHMubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkcm9wIGRlZmF1bHQifSl9LHtuYW1lOiJhbHRlcmNvbCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19zZXQiXX0se25hbWU6ImFsdGVyY29sJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2Ryb3AiXX0se25hbWU6ImFsdGVyY29sIixzeW1ib2xzOlsiYWx0ZXJjb2wkc3ViZXhwcmVzc2lvbiQxIiwia3dfbm90X251bGwiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOncoZSwiICIpfSl9LHtuYW1lOiJhbHRlcmNvbCIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9hZGQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToiYWx0ZXJ0YWJsZV9hZGRfY29uc3RyYWludCIsc3ltYm9sczpbImt3X2FkZCIsImNyZWF0ZXRhYmxlX2NvbnN0cmFpbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhZGQgY29uc3RyYWludCIsY29uc3RyYWludDp0KF8oZSkpfSl9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdHJpY3QiXX0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIiLHN5bWJvbHM6WyJhbHRlcnRhYmxlX2Ryb3BfY29uc3RyYWludCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50IixzeW1ib2xzOlsia3dfZHJvcCIscy5sZXhlckFueS5oYXMoImt3X2NvbnN0cmFpbnQiKT97dHlwZToia3dfY29uc3RyYWludCJ9Omt3X2NvbnN0cmFpbnQsImFsdGVydGFibGVfZHJvcF9jb25zdHJhaW50JGVibmYkMSIsImlkZW50IiwiYWx0ZXJ0YWJsZV9kcm9wX2NvbnN0cmFpbnQkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCBjb25zdHJhaW50IiwuLi5lWzJdP3tpZkV4aXN0czohMH06e30sY29uc3RyYWludDp1KGVbM10pLC4uLmVbNF0/e2JlaGF2aW91cjp3KGVbNF0sIiAiKX06e319KX0se25hbWU6ImFsdGVydGFibGVfb3duZXIiLHN5bWJvbHM6WyJrd19vd25lciIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToib3duZXIiLHRvOnUoXyhlKSl9KX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9hZGQiLHN5bWJvbHM6WyJrd19hZGQiLCJhbHRlcmNvbF9nZW5lcmF0ZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19hbHdheXMiXX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfYnkiLHMubGV4ZXJBbnkuaGFzKCJrd19kZWZhdWx0Iik/e3R5cGU6Imt3X2RlZmF1bHQifTprd19kZWZhdWx0XX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDEiLHN5bWJvbHM6WyJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImt3X2lkZW50aXR5Il19LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImFsdGVyY29sX2dlbmVyYXRlZF9zZXEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkJGVibmYkMiIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWQiLHN5bWJvbHM6WyJrd19nZW5lcmF0ZWQiLCJhbHRlcmNvbF9nZW5lcmF0ZWQkZWJuZiQxIiwiYWx0ZXJjb2xfZ2VuZXJhdGVkJHN1YmV4cHJlc3Npb24kMSIsImFsdGVyY29sX2dlbmVyYXRlZCRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJhZGQgZ2VuZXJhdGVkIiwuLi5lWzFdJiZ7YWx3YXlzOncoZVsxXSwiICIpfSwuLi5lWzNdJiZ7c2VxdWVuY2U6dChlWzNdKX19KX0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3NlcXVlbmNlIiwia3dfbmFtZSIsInF1YWxpZmllZF9uYW1lIl19LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMSIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQyIixzeW1ib2xzOltdfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSRlYm5mJDIiLHN5bWJvbHM6WyJhbHRlcmNvbF9nZW5lcmF0ZWRfc2VxJGVibmYkMiIsImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSIsc3ltYm9sczpbImFsdGVyY29sX2dlbmVyYXRlZF9zZXEkZWJuZiQxIiwiYWx0ZXJjb2xfZ2VuZXJhdGVkX3NlcSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgcD17Li4uZVswXSYme25hbWU6dChfKGVbMF0pKX19O3JldHVybiBDKHAsZVsxXSksKDAsci50cmFjaykoZSxwKX19LHtuYW1lOiJhbHRlcmluZGV4X3
14N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJhbHRlcmluZGV4X3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcmluZGV4X3N0YXRlbWVudCIsc3ltYm9sczpbImt3X2FsdGVyIiwia3dfaW5kZXgiLCJhbHRlcmluZGV4X3N0YXRlbWVudCRlYm5mJDEiLCJ0YWJsZV9yZWYiLCJhbHRlcmluZGV4X2FjdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImFsdGVyIGluZGV4IiwuLi5lWzJdP3tpZkV4aXN0czohMH06e30saW5kZXg6dChlWzNdKSxjaGFuZ2U6dChlWzRdKX0pfSx7bmFtZToiYWx0ZXJpbmRleF9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcmluZGV4X3JlbmFtZSJdfSx7bmFtZToiYWx0ZXJpbmRleF9hY3Rpb24iLHN5bWJvbHM6WyJhbHRlcmluZGV4X3NldF90YWJsZXNwYWNlIl19LHtuYW1lOiJhbHRlcmluZGV4X3JlbmFtZSIsc3ltYm9sczpbImt3X3JlbmFtZSIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sIndvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJyZW5hbWUiLHRvOnUoXyhlKSl9KX0se25hbWU6ImFsdGVyaW5kZXhfc2V0X3RhYmxlc3BhY2UiLHN5bWJvbHM6WyJrd19zZXQiLCJrd190YWJsZXNwYWNlIiwid29yZCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InNldCB0YWJsZXNwYWNlIix0YWJsZXNwYWNlOnUoXyhlKSl9KX0se25hbWU6ImRlbGV0ZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJkZWxldGVfZGVsZXRlIl19LHtuYW1lOiJkZWxldGVfc3RhdGVtZW50IixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlIl19LHtuYW1lOiJkZWxldGVfZGVsZXRlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2RlbGV0ZSIscy5sZXhlckFueS5oYXMoImt3X2Zyb20iKT97dHlwZToia3dfZnJvbSJ9Omt3X2Zyb21dfSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDEiLHN5bWJvbHM6WyJzZWxlY3Rfd2hlcmUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWxldGVfZGVsZXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19yZXR1cm5pbmciKT97dHlwZToia3dfcmV0dXJuaW5nIn06a3dfcmV0dXJuaW5nLCJzZWxlY3RfZXhwcl9saXN0X2FsaWFzZWQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiLHN5bWJvbHM6WyJkZWxldGVfZGVsZXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWxldGVfZGVsZXRlIixzeW1ib2xzOlsiZGVsZXRlX2RlbGV0ZSRzdWJleHByZXNzaW9uJDEiLCJ0YWJsZV9yZWZfYWxpYXNlZCIsImRlbGV0ZV9kZWxldGUkZWJuZiQxIiwiZGVsZXRlX2RlbGV0ZSRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgcD1lWzJdLG49ZVszXTtyZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWxldGUiLGZyb206dChlWzFdKSwuLi5wP3t3aGVyZTpwfTp7fSwuLi5uP3tyZXR1cm5pbmc6bn06e319KX19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlIik/e3R5cGU6Imt3X3RhYmxlIn06a3dfdGFibGVdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd190cnVuY2F0ZSIsImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJ0YWJsZV9yZWYiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJG1hY3JvY2FsbCQxJGVibmYkMSIsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMiIsImRlbGV0ZV90cnVuY2F0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bdChlKSwuLi5wLm1hcCh0KXx8W11dfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdGFydCJdfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfY29udGludWUiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJGVibmYkMSRzdWJleHByZXNzaW9uJDEkc3ViZXhwcmVzc2lvbiQxIiwia3dfaWRlbnRpdHkiXX0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSRlYm5mJDEiLHN5bWJvbHM6WyJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19yZXN0cmljdCJdfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJkZWxldGVfdHJ1bmNhdGUkZWJuZiQyIixzeW1ib2xzOlsiZGVsZXRlX3RydW5jYXRlJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZGVsZXRlX3RydW5jYXRlJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRlbGV0ZV90cnVuY2F0ZSIsc3ltYm9sczpbImRlbGV0ZV90cnVuY2F0ZSRzdWJleHByZXNzaW9uJDEiLCJkZWxldGVfdHJ1bmNhdGUkbWFjcm9jYWxsJDEiLCJkZWxldGVfdHJ1bmNhdGUkZWJuZiQxIiwiZGVsZXRlX3RydW5jYXRlJGVibmYkMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6InRydW5jYXRlIHRhYmxlIix0YWJsZXM6ZVsxXSwuLi5lWzJdJiZ7aWRlbnRpdHk6dyhlWzJdWzBdKX0sLi4uZVszXSYme2Nhc2NhZGU6dyhlWzNdKX19KX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXAiXX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXBvcmFyeSJdfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbImt3X2lmbm90ZXhpc3RzIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDMiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQzIiwiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfY3JlYXRlIik/e3R5cGU6Imt3X2NyZWF0ZSJ9Omt3X2NyZWF0ZSwiY3JlYXRlX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLCJrd19zZXF1ZW5jZSIsImNyZWF0ZV9zZXF1ZW5jZV9zdGF0ZW1lbnQkZWJuZiQyIiwicXVhbGlmaWVkX25hbWUiLCJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMyJdLHBvc3Rwcm9jZXNzOmU9Pntjb25zdCBwPXt0eXBlOiJjcmVhdGUgc2VxdWVuY2UiLC4uLmVbMV0mJnt0ZW1wOiEwfSwuLi5lWzNdJiZ7aWZOb3RFeGlzdHM6ITB9LG5hbWU6dChlWzRdKSxvcHRpb25zOnt9fTtyZXR1cm4gQyhwLm9wdGlvbnMsZVs1XSksKDAsci50cmFjaykoZSxwKX19LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYXMiKT97dHlwZToia3dfYXMifTprd19hcywiZGF0YV90eXBlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsWyJhcyIsZVsxXV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEiLHN5bWJvbHM6WyJrd19ieSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJrd19pbmNyZW1lbnQiLCJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsImludCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsiaW5jcmVtZW50QnkiLGVbMl1dKX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2VfbWludmFsdWUiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbIm1pblZhbHVlIixlWzBdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci5ib3gpKGUsWyJtYXhWYWx1ZSIsZVswXV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsia3dfc3RhcnQiLCJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMiIsImludCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsic3RhcnRXaXRoIixlWzJdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsia3dfY2FjaGUiLCJpbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbImNhY2hlIixlWzFdXSl9LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMyIsc3ltYm9sczpbImt3X25vIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24kZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9vcHRpb24kZWJuZiQzIiwia3dfY3ljbGUiXSxwb3N0cHJvY2VzczplPT4oMCxyLmJveCkoZSxbImN5Y2xlIix3KGUsIiAiKV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiIsc3ltYm9sczpbImNyZWF0ZV9zZXF1ZW5jZV9vd25lZ
14F9ieSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsib3duZWRCeSIsdChlKV0pfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21pbnZhbHVlIixzeW1ib2xzOlsia3dfbWludmFsdWUiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21pbnZhbHVlIixzeW1ib2xzOlsia3dfbm8iLCJrd19taW52YWx1ZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJubyBtaW52YWx1ZSIpfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIixzeW1ib2xzOlsia3dfbWF4dmFsdWUiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX21heHZhbHVlIixzeW1ib2xzOlsia3dfbm8iLCJrd19tYXh2YWx1ZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLCJubyBtYXh2YWx1ZSIpfSx7bmFtZToiY3JlYXRlX3NlcXVlbmNlX293bmVkX2J5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X25vbmUiXX0se25hbWU6ImNyZWF0ZV9zZXF1ZW5jZV9vd25lZF9ieSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJxY29sdW1uIl19LHtuYW1lOiJjcmVhdGVfc2VxdWVuY2Vfb3duZWRfYnkiLHN5bWJvbHM6WyJrd19vd25lZCIsImt3X2J5IiwiY3JlYXRlX3NlcXVlbmNlX293bmVkX2J5JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLHQoXyhlKSkpfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSIsc3ltYm9sczpbImt3X2lmZXhpc3RzIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19hbHRlciIsImt3X3NlcXVlbmNlIiwiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50JGVibmYkMSIsInF1YWxpZmllZF9uYW1lIiwiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkiXSxwb3N0cHJvY2VzczplPT57Y29uc3QgcD17dHlwZToiYWx0ZXIgc2VxdWVuY2UiLC4uLmVbMl0mJntpZkV4aXN0czohMH0sbmFtZTp0KGVbM10pLGNoYW5nZTplWzRdfTtyZXR1cm4oMCxyLnRyYWNrKShlLHApfX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JGVibmYkMSIsc3ltYm9sczpbImFsdGVyX3NlcXVlbmNlX29wdGlvbiJdfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIiwiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5IixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+e2NvbnN0IHA9e3R5cGU6InNldCBvcHRpb25zIn07cmV0dXJuIEMocCxlWzBdKSwoMCxyLnRyYWNrKShlLHApfX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnRfYm9keSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19zZXNzaW9uX3VzZXIiKT97dHlwZToia3dfc2Vzc2lvbl91c2VyIn06a3dfc2Vzc2lvbl91c2VyXX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2N1cnJlbnRfdXNlciIpP3t0eXBlOiJrd19jdXJyZW50X3VzZXIifTprd19jdXJyZW50X3VzZXJdfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50X2JvZHkiLHN5bWJvbHM6WyJrd19vd25lciIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6Im93bmVyIHRvIixvd25lcjp1KF8oZSkpfSl9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9zdGF0ZW1lbnRfYm9keSIsc3ltYm9sczpbImt3X3JlbmFtZSIscy5sZXhlckFueS5oYXMoImt3X3RvIik/e3R5cGU6Imt3X3RvIn06a3dfdG8sImlkZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVuYW1lIixuZXdOYW1lOnUoXyhlKSl9KX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX3N0YXRlbWVudF9ib2R5IixzeW1ib2xzOlsia3dfc2V0Iiwia3dfc2NoZW1hIiwiaWRlbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJzZXQgc2NoZW1hIixuZXdTY2hlbWE6dShfKGUpKX0pfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uIixzeW1ib2xzOlsiY3JlYXRlX3NlcXVlbmNlX29wdGlvbiJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9vcHRpb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoXSxwb3N0cHJvY2VzczphfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJhbHRlcl9zZXF1ZW5jZV9vcHRpb24kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJpbnQiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSIsc3ltYm9sczpbImFsdGVyX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImFsdGVyX3NlcXVlbmNlX29wdGlvbiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJhbHRlcl9zZXF1ZW5jZV9vcHRpb24iLHN5bWJvbHM6WyJrd19yZXN0YXJ0IiwiYWx0ZXJfc2VxdWVuY2Vfb3B0aW9uJGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIuYm94KShlLFsicmVzdGFydCIsdHlwZW9mKDAsci51bmJveCkoZVsxXSk9PSJudW1iZXIiPygwLHIudW5ib3gpKGVbMV0pOiEwXSl9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZmV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInF1YWxpZmllZF9uYW1lIl19LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZHJv
14cF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImRyb3Bfc3RhdGVtZW50JG1hY3JvY2FsbCQyIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W3QoZSksLi4ucC5tYXAodCl8fFtdXX0se25hbWU6ImRyb3Bfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJrd19jYXNjYWRlIl19LHtuYW1lOiJkcm9wX3N0YXRlbWVudCRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfcmVzdHJpY3QiXX0se25hbWU6ImRyb3Bfc3RhdGVtZW50JGVibmYkMiIsc3ltYm9sczpbImRyb3Bfc3RhdGVtZW50JGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZHJvcF9zdGF0ZW1lbnQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZHJvcF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJrd19kcm9wIiwiZHJvcF93aGF0IiwiZHJvcF9zdGF0ZW1lbnQkZWJuZiQxIiwiZHJvcF9zdGF0ZW1lbnQkbWFjcm9jYWxsJDEiLCJkcm9wX3N0YXRlbWVudCRlYm5mJDIiXSxwb3N0cHJvY2VzczooZSxwKT0+e2NvbnN0IG49dChlWzFdKTtyZXR1cm4oMCxyLnRyYWNrKShlLHsuLi5uLC4uLmVbMl0mJntpZkV4aXN0czohMH0sbmFtZXM6ZVszXSwuLi5lWzRdJiZ7Y2FzY2FkZTp3KGVbNF0pfX0pfX0se25hbWU6ImRyb3Bfd2hhdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3RhYmxlIik/e3R5cGU6Imt3X3RhYmxlIn06a3dfdGFibGVdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgdGFibGUifSl9LHtuYW1lOiJkcm9wX3doYXQiLHN5bWJvbHM6WyJrd19zZXF1ZW5jZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3Agc2VxdWVuY2UifSl9LHtuYW1lOiJkcm9wX3doYXQiLHN5bWJvbHM6WyJrd190eXBlIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiZHJvcCB0eXBlIn0pfSx7bmFtZToiZHJv
14cF93aGF0IixzeW1ib2xzOlsia3dfdHJpZ2dlciJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgdHJpZ2dlciJ9KX0se25hbWU6ImRyb3Bfd2hhdCRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25jdXJyZW50bHkiKT97dHlwZToia3dfY29uY3VycmVudGx5In06a3dfY29uY3VycmVudGx5XSxwb3N0cHJvY2VzczphfSx7bmFtZToiZHJvcF93aGF0JGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3Bfd2hhdCIsc3ltYm9sczpbImt3X2luZGV4IiwiZHJvcF93aGF0JGVibmYkMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRyb3AgaW5kZXgiLC4uLmVbMV0mJntjb25jdXJyZW50bHk6ITB9fSl9LHtuYW1lOiJ3aXRoX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3dpdGgiKT97dHlwZToia3dfd2l0aCJ9Omt3X3dpdGgsIndpdGhfc3RhdGVtZW50X2JpbmRpbmdzIiwid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToid2l0aCIsYmluZDplWzFdLGluOnQoZVsyXSl9KX0se25hbWU6IndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJrd19yZWN1cnNpdmUiXX0se25hbWU6IndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCIsc3ltYm9sczpbIndpdGhfcmVjdXJzaXZlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLCJpZGVudCIsImNvbGxpc3RfcGFyZW4iLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJscGFyZW4iLCJ1bmlvbl9zdGF0ZW1lbnQiLCJycGFyZW4iLCJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJ3aXRoIHJlY3Vyc2l2ZSIsYWxpYXM6dShlWzFdKSxjb2x1bW5OYW1lczplWzJdLm1hcCh1KSxiaW5kOmVbNV0saW46dChlWzddKX0pfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfYmluZGluZ3MkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfYmluZGluZ3MkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNvbW1hIiwid2l0aF9zdGF0ZW1lbnRfYmluZGluZyJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEiLHN5bWJvbHM6WyJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEiLCJ3aXRoX3N0YXRlbWVudF9iaW5kaW5ncyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6IndpdGhfc3RhdGVtZW50X2JpbmRpbmdzIixzeW1ib2xzOlsid2l0aF9zdGF0ZW1lbnRfYmluZGluZyIsIndpdGhfc3RhdGVtZW50X2JpbmRpbmdzJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9PltlLC4uLnB8fFtdXX0se25hbWU6IndpdGhfc3RhdGVtZW50X2JpbmRpbmciLHN5bWJvbHM6WyJ3b3JkIixzLmxleGVyQW55Lmhhcygia3dfYXMiKT97dHlwZToia3dfYXMifTprd19hcywibHBhcmVuIiwid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50IiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7YWxpYXM6dShlWzBdKSxzdGF0ZW1lbnQ6dChlWzNdKX0pfSx7bmFtZToid2l0aF9zdGF0ZW1lbnRfc3RhdGVtZW50IixzeW1ib2xzOlsic2VsZWN0aW9uIl19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJpbnNlcnRfc3RhdGVtZW50Il19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50Il19LHtuYW1lOiJ3aXRoX3N0YXRlbWVudF9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJkZWxldGVfc3RhdGVtZW50Il19LHtuYW1lOiJjcmVhdGV0eXBlX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2VudW0iXX0se25hbWU6ImNyZWF0ZXR5cGVfc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNyZWF0ZXR5cGVfY29tcG9zaXRlIl19LHtuYW1lOiJjcmVhdGV0eXBlX3N0YXRlbWVudCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X3R5cGUiLCJxdWFsaWZpZWRfbmFtZSIsImNyZWF0ZXR5cGVfc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6ZVsyXSwuLi50KGVbM10pfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJlbnVtX3ZhbHVlIl19LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRldHlwZV9lbnVtJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRldHlwZV9lbnVtJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXR5cGVfZW51bSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDIiLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W3QoZSksLi4ucC5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZXR5cGVfZW51bSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsImt3X2VudW0iLCJscGFyZW4iLCJjcmVhdGV0eXBlX2VudW0kbWFjcm9jYWxsJDEiLCJycGFyZW4iXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgZW51bSIsdmFsdWVzOmVbM119KX0se25hbWU6ImVudW1fdmFsdWUiLHN5bWJvbHM6WyJzdHJpbmciXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt2YWx1ZTp3KGUpfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImNyZWF0ZXR5cGVfY29tcG9zaXRlX2F0dHIiXX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMiJdLHBvc3Rwcm9jZXNzOl99LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6ImNyZWF0ZXR5cGVfY29tcG9zaXRlJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRldHlwZV9jb21wb3NpdGUkbWFjcm9jYWxsJDIiLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2UscF0pPT5bdChlKSwuLi5wLm1hcCh0KXx8W11dfSx7bmFtZToiY3JlYXRldHlwZV9jb21wb3NpdGUiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJscGFyZW4iLCJjcmVhdGV0eXBlX2NvbXBvc2l0ZSRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSBjb21wb3NpdGUgdHlwZSIsYXR0cmlidXRlczplWzJdfSl9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZV9hdHRyJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX2NvbGxhdGUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRldHlwZV9jb21wb3NpdGVfYXR0ciRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGV0eXBlX2NvbXBvc2l0ZV9hdHRyIixzeW1ib2xzOlsid29yZCIsImRhdGFfdHlwZSIsImNyZWF0ZXR5cGVfY29tcG9zaXRlX2F0dHIkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bmFtZTp1KGVbMF0pLGRhdGFUeXBlOmVbMV0sLi4uZVsyXT97Y29sbGF0ZTplWzJdWzFdfTp7fX0pfSx7bmFtZToidW5pb25fbGVmdCIsc3ltYm9sczpbInNlbGVjdF9zdGF0ZW1lbnQiXX0se25hbWU6InVuaW9uX2xlZnQiLHN5bWJvbHM6WyJzZWxlY3RfdmFsdWVzIl19LHtuYW1lOiJ1bmlvbl9sZWZ0IixzeW1ib2xzOlsic2VsZWN0aW9uX3BhcmVuIl19LHtuYW1lOiJ1bmlvbl9yaWdodCIsc3ltYm9sczpbInNlbGVjdGlvbiJdfSx7bmFtZToidW5pb25fcmlnaHQiLHN5bWJvbHM6WyJzZWxlY3Rpb25fcGFyZW4iXX0se25hbWU6InVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfYWxsIik/e3R5cGU6Imt3X2FsbCJ9Omt3X2FsbF0scG9zdHByb2Nlc3M6YX0se25hbWU6InVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToidW5pb25fc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X3VuaW9uIik/e3R5cGU6Imt3X3VuaW9uIn06a3dfdW5pb24sInVuaW9uX3N0YXRlbWVudCRzdWJleHByZXNzaW9uJDEkZWJuZiQxIl19LHtuYW1lOiJ1bmlvbl9zdGF0ZW1lbnQiLHN5bWJvbHM6WyJ1bmlvbl9sZWZ0IiwidW5pb25fc3RhdGVtZW50JHN1YmV4cHJlc3Npb24kMSIsInVuaW9uX3JpZ2h0Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZTp3KGVbMV0sIiAiKSxsZWZ0OnQoZVswXSkscmlnaHQ6dChlWzJdKX0pfSx7bmFtZToicHJlcGFyZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiZGF0YV90eXBlX2xpc3QiLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToicHJlcGFyZSRlYm5mJDEiLHN5bWJvbHM6WyJwcmVwYXJlJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToicHJlcGFyZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJwcmVwYXJlIixzeW1ib2xzOlsia3dfcHJlcGFyZSIsImlkZW50IiwicHJlcGFyZSRlYm5mJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJzdGF0ZW1lbnRfbm9wcmVwIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicHJlcGFyZSIsbmFtZTp1KGVbMV0pLC4uLmVbMl0mJnthcmdzOmVbMl19LHN0YXRlbWVudDp0KF8oZSkpfSl9LHtuYW1lOiJkZWFsbG9jYXRlJGVibmYkMSIsc3ltYm9sczpbImt3X3ByZXBhcmUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZGVhbGxvY2F0ZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkZWFsbG9jYXRlIixzeW1ib2xzOlsia3dfZGVhbGxvY2F0ZSIsImRlYWxsb2
14NhdGUkZWJuZiQxIiwiZGVhbGxvY2F0ZV90YXJnZXQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkZWFsbG9jYXRlIix0YXJnZXQ6ZVsyXX0pfSx7bmFtZToiZGVhbGxvY2F0ZV90YXJnZXQiLHN5bWJvbHM6WyJkZWFsbG9jYXRlX2FsbCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJkZWFsbG9jYXRlX3RhcmdldCIsc3ltYm9sczpbImRlYWxsb2NhdGVfbmFtZSJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJkZWFsbG9jYXRlX25hbWUiLHN5bWJvbHM6WyJpZGVudCJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUsdShlWzBdKSl9LHtuYW1lOiJkZWFsbG9jYXRlX2FsbCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2FsbCIpP3t0eXBlOiJrd19hbGwifTprd19hbGxdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse29wdGlvbjoiYWxsIn0pfSx7bmFtZToiY3JlYXRlX3ZpZXdfc3RhdGVtZW50cyIsc3ltYm9sczpbImNyZWF0ZV92aWV3Il19LHtuYW1lOiJjcmVhdGVfdmlld19zdGF0ZW1lbnRzIixzeW1ib2xzOlsiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3Il19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb3IiKT97dHlwZToia3dfb3IifTprd19vciwia3dfcmVwbGFjZSJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGVtcCJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X3RlbXBvcmFyeSJdfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQyIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDIiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDMiLHN5bWJvbHM6WyJrd19yZWN1cnNpdmUiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQzIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImlkZW50Il19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W3QoZSksLi4ucC5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJscGFyZW4iLCJjcmVhdGVfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImNyZWF0ZV92aWV3JGVibmYkNCIsc3ltYm9sczpbImNyZWF0ZV92aWV3JGVibmYkNCRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDUiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2xvY2FsIl19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2Nhc2NhZGVkIl19LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfd2l0aCIpP3t0eXBlOiJrd193aXRoIn06a3dfd2l0aCwiY3JlYXRlX3ZpZXckZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSRzdWJleHByZXNzaW9uJDEiLHMubGV4ZXJBbnkuaGFzKCJrd19jaGVjayIpP3t0eXBlOiJrd19jaGVjayJ9Omt3X2NoZWNrLCJrd19vcHRpb24iXSxwb3N0cHJvY2VzczokKDEpfSx7bmFtZToiY3JlYXRlX3ZpZXckZWJuZiQ2IixzeW1ib2xzOlsiY3JlYXRlX3ZpZXckZWJuZiQ2JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfdmlldyRlYm5mJDYiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJjcmVhdGVfdmlldyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZV92aWV3JGVibmYkMSIsImNyZWF0ZV92aWV3JGVibmYkMiIsImNyZWF0ZV92aWV3JGVibmYkMyIsImt3X3ZpZXciLCJxdWFsaWZpZWRfbmFtZSIsImNyZWF0ZV92aWV3JGVibmYkNCIsImNyZWF0ZV92aWV3JGVibmYkNSIscy5sZXhlckFueS5oYXMoImt3X2FzIik/e3R5cGU6Imt3X2FzIn06a3dfYXMsInNlbGVjdGlvbiIsImNyZWF0ZV92aWV3JGVibmYkNiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImNyZWF0ZSB2aWV3IiwuLi5lWzFdJiZ7b3JSZXBsYWNlOiEwfSwuLi5lWzJdJiZ7dGVtcDohMH0sLi4uZVszXSYme3JlY3Vyc2l2ZTohMH0sbmFtZTplWzVdLC4uLmVbNl0mJntjb2x1bW5OYW1lczplWzZdLm1hcCh1KX0sLi4uZVs3XSYme3BhcmFtZXRlcnM6dihlWzddKX0scXVlcnk6ZVs5XSwuLi5lWzEwXSYme2NoZWNrT3B0aW9uOncoZVsxMF0pfX0pfSx7bmFtZToiY3JlYXRlX3ZpZXdfb3B0IixzeW1ib2xzOlsiaWRlbnQiLHMubGV4ZXJBbnkuaGFzKCJvcF9lcSIpP3t0eXBlOiJvcF9lcSJ9Om9wX2VxLCJpZGVudCJdLHBvc3Rwcm9jZXNzOihbZSxwLG5dKT0+W3coZSksdyhuKV19LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQyIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0Il19LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiY3JlYXRlX3ZpZXdfb3B0cyRtYW
14Nyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiY3JlYXRlX3ZpZXdfb3B0cyRtYWNyb2NhbGwkMiIsImNyZWF0ZV92aWV3X29wdHMkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W3QoZSksLi4ucC5tYXAodCl8fFtdXX0se25hbWU6ImNyZWF0ZV92aWV3X29wdHMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJjcmVhdGVfdmlld19vcHRzJG1hY3JvY2FsbCQxIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDEiLHN5bWJvbHM6WyJrd19pZm5vdGV4aXN0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJpZGVudCJdfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMiRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9Plt0KGUpLC4uLnAubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImxwYXJlbiIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6JCgxKX0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDIiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsc3ltYm9sczpbImNyZWF0ZV92aWV3X29wdHMiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfdGFibGVzcGFjZSIsImlkZW50Il0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQiLHN5bWJvbHM6WyJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ0IixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsia3dfbm8iXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1JHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLCJrd19kYXRhIl19LHtuYW1lOiJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1IixzeW1ib2xzOlsiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkNSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImt3X21hdGVyaWFsaXplZCIsImt3X3ZpZXciLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQxIiwicXVhbGlmaWVkX25hbWUiLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQyIiwiY3JlYXRlX21hdGVyaWFsaXplZF92aWV3JGVibmYkMyIsImNyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldyRlYm5mJDQiLHMubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJzZWxlY3Rpb24iLCJjcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXckZWJuZiQ1Il0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToiY3JlYXRlIG1hdGVyaWFsaXplZCB2aWV3IiwuLi5lWzNdJiZ7aWZOb3RFeGlzdHM6ITB9LG5hbWU6
14ZVs0XSwuLi5lWzVdJiZ7Y29sdW1uTmFtZXM6ZVs2XS5tYXAodSl9LC4uLmVbNl0mJntwYXJhbWV0ZXJzOnYoZVs2XSl9LC4uLmVbN10mJnt0YWJsZXNwYWNlOnUoZVs3XSl9LHF1ZXJ5OmVbOV0sLi4uZVsxMF0mJnt3aXRoRGF0YTp3KGVbMTBdWzFdKSE9PSJubyJ9fSl9LHtuYW1lOiJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19jb25jdXJyZW50bHkiKT97dHlwZToia3dfY29uY3VycmVudGx5In06a3dfY29uY3VycmVudGx5XSxwb3N0cHJvY2VzczphfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6WyJrd19ubyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6InJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd193aXRoIik/e3R5cGU6Imt3X3dpdGgifTprd193aXRoLCJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsImt3X2RhdGEiXX0se25hbWU6InJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiIsc3ltYm9sczpbInJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMiRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToicmVmcmVzaF92aWV3X3N0YXRlbWVudHMiLHN5bWJvbHM6WyJrd19yZWZyZXNoIiwia3dfbWF0ZXJpYWxpemVkIiwia3dfdmlldyIsInJlZnJlc2hfdmlld19zdGF0ZW1lbnRzJGVibmYkMSIsInFuYW1lIiwicmVmcmVzaF92aWV3X3N0YXRlbWVudHMkZWJuZiQyIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7dHlwZToicmVmcmVzaCBtYXRlcmlhbGl6ZWQgdmlldyIsLi4uZVszXT97Y29uY3VycmVudGx5OiEwfTp7fSxuYW1lOmVbNF0sLi4uZVs1XT97d2l0aERhdGE6dyhlWzVdWzFdKSE9PSJubyJ9Ont9fSl9LHtuYW1lOiJmdW5jdGlvbnNfc3RhdGVtZW50cyIsc3ltYm9sczpbImNyZWF0ZV9mdW5jIl19LHtuYW1lOiJmdW5jdGlvbnNfc3RhdGVtZW50cyIsc3ltYm9sczpbImRvX3N0bSJdfSx7bmFtZToiZnVuY3Rpb25zX3N0YXRlbWVudHMiLHN5bWJvbHM6WyJkcm9wX2Z1bmMiXX0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19vciIpP3t0eXBlOiJrd19vciJ9Omt3X29yLCJrd19yZXBsYWNlIl19LHtuYW1lOiJjcmVhdGVfZnVuYyRlYm5mJDEiLHN5bWJvbHM6WyJjcmVhdGVfZnVuYyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZiJdfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNyZWF0ZV9mdW5jJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEkbWFjcm9jYWxsJDIiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9Plt0KGUpLC4uLnAubWFwKHQpfHxbXV19LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSRtYWNyb2NhbGwkMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibHBhcmVuIiwiY3JlYXRlX2Z1bmMkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJjcmVhdGVfZnVuYyRlYm5mJDIiLHN5bWJvbHM6WyJmdW5jX3NwZWMiXX0se25hbWU6ImNyZWF0ZV9mdW5jJGVibmYkMiIsc3ltYm9sczpbImNyZWF0ZV9mdW5jJGVibmYkMiIsImZ1bmNfc3BlYyJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJjcmVhdGVfZnVuYyIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2NyZWF0ZSIpP3t0eXBlOiJrd19jcmVhdGUifTprd19jcmVhdGUsImNyZWF0ZV9mdW5jJGVibmYkMSIsImt3X2Z1bmN0aW9uIiwicW5hbWUiLCJjcmVhdGVfZnVuYyRzdWJleHByZXNzaW9uJDEiLCJjcmVhdGVfZnVuYyRlYm5mJDIiXSxwb3N0cHJvY2VzczooZSxwKT0+e3ZhciBuO2NvbnN0IHk9e307Zm9yKGNvbnN0IGsgb2YgZVs1XSl7Zm9yKGNvbnN0IE8gaW4gaylpZihPWzBdIT09Il8iJiZPIGluIHkpdGhyb3cgbmV3IEVycm9yKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyAiK08pO09iamVjdC5hc3NpZ24oeSxrKX1yZXR1cm4oMCxyLnRyYWNrKShlLHt0eXBlOiJjcmVhdGUgZnVuY3Rpb24iLC4uLmVbMV0mJntvclJlcGxhY2U6ITB9LG5hbWU6
14ZVszXSxhcmd1bWVudHM6KG49ZVs0XSkhPT1udWxsJiZuIT09dm9pZCAwP246W10sLi4ueX0pfX0se25hbWU6ImZ1bmNfYXJnZGVmJGVibmYkMSIsc3ltYm9sczpbImZ1bmNfYXJnb3B0cyJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJmdW5jX2FyZ2RlZiRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJmdW5jX2FyZ2RlZiRlYm5mJDIiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZmF1bHQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZnVuY19hcmdkZWYkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZnVuY19hcmdkZWYiLHN5bWJvbHM6WyJmdW5jX2FyZ2RlZiRlYm5mJDEiLCJkYXRhX3R5cGUiLCJmdW5jX2FyZ2RlZiRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtkZWZhdWx0OmVbMl0sdHlwZTplWzFdLC4uLmVbMF19KX0se25hbWU6ImZ1bmNfYXJnZGVmYXVsdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImt3X2RlZmF1bHQiKT97dHlwZToia3dfZGVmYXVsdCJ9Omt3X2RlZmF1bHQsImV4cHIiXSxwb3N0cHJvY2VzczplPT5lWzFdfSx7bmFtZToiZnVuY19hcmdkZWZhdWx0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygib3BfZXEiKT97dHlwZToib3BfZXEifTpvcF9lcSwiZXhwciJdLHBvc3Rwcm9jZXNzOmU9PmVbMV19LHtuYW1lOiJmdW5jX2FyZ29wdHMkZWJuZiQxIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJmdW5jX2FyZ29wdHMkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZnVuY19hcmdvcHRzIixzeW1ib2xzOlsiZnVuY19hcmdtb2QiLCJmdW5jX2FyZ29wdHMkZWJuZiQxIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7bW9kZTp3KGVbMF0pLC4uLmVbMV0mJntuYW1lOnUoZVsxXSl9fSl9LHtuYW1lOiJmdW5jX2FyZ29wdHMiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6KGUscCk9Pntjb25zdCBuPXUoZSk7cmV0dXJuIG49PT0ib3V0Inx8bj09PSJpbm91dCJ8fG49PT0idmFyaWFkaWMiP3A6KDAsci50cmFjaykoZSx7bmFtZTpufSl9fSx7bmFtZToiZnVuY19hcmdtb2QiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19pbiIpP3t0eXBlOiJrd19pbiJ9Omt3X2luXX0se25hbWU6ImZ1bmNfYXJnbW9kIixzeW1ib2xzOlsia3dfb3V0Il19LHtuYW1lOiJmdW5jX2FyZ21vZCIsc3ltYm9sczpbImt3X2lub3V0Il19LHtuYW1lOiJmdW5jX2FyZ21vZCIsc3ltYm9sczpbImt3X3ZhcmlhZGljIl19LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJrd19sYW5ndWFnZSIsIndvcmQiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHtsYW5ndWFnZTp1KF8oZSkpfSl9LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJmdW5jX3B1cml0eSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3B1cml0eTp3KGUpfSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29kZWJsb2NrIik/e3R5cGU6ImNvZGVibG9jayJ9OmNvZGVibG9ja119LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsic3RyaW5nIl19LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19hcyIpP3t0eXBlOiJrd19hcyJ9Omt3X2FzLCJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6ZT0+KHtjb2RlOncoXyhlKSl9KX0se25hbWU6ImZ1bmNfc3BlYyRlYm5mJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJrd19ub3QiKT97dHlwZToia3dfbm90In06a3dfbm90XSxwb3N0cHJvY2VzczphfSx7bmFtZToiZnVuY19zcGVjJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDIiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6ZygibGVha3Byb29mIil9LHtuYW1lOiJmdW5jX3NwZWMiLHN5bWJvbHM6WyJmdW5jX3NwZWMkZWJuZiQxIiwiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kMiJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse2xlYWtwcm9vZjohZVswXX0pfSx7bmFtZToiZnVuY19zcGVjIixzeW1ib2xzOlsiZnVuY19yZXR1cm5zIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7cmV0dXJuczp0KGUpfSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQzIixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmcoImNhbGxlZCIpfSx7bmFtZToiZnVuY19zcGVjIixzeW1ib2xzOlsiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kMyIsIm9uaW5wIl0scG9zdHByb2Nlc3M6KCk9Pih7b25OdWxsSW5wdXQ6ImNhbGwifSl9LHtuYW1lOiJmdW5jX3NwZWMkc3ViZXhwcmVzc2lvbiQ0IixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmcoInJldHVybnMiKX0se25hbWU6ImZ1bmNfc3BlYyIsc3ltYm9sczpbImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDQiLHMubGV4ZXJBbnkuaGFzKCJrd19udWxsIik/e3R5cGU6Imt3X251bGwifTprd19udWxsLCJvbmlucCJdLHBvc3Rwcm9jZXNzOigpPT4oe29uTnVsbElucHV0OiJudWxsIn0pfSx7bmFtZToiZnVuY19zcGVjJHN1YmV4cHJlc3Npb24kNSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpnKCJzdHJpY3QiKX0se25hbWU6ImZ1bmNfc3BlYyIsc3ltYm9sczpbImZ1bmNfc3BlYyRzdWJleHByZXNzaW9uJDUiXSxwb3N0cHJvY2VzczooKT0+KHtvbk51bGxJbnB1dDoic3RyaWN0In0pfSx7bmFtZToiZnVuY19wdXJpdHkiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6ZygiaW1tdXRhYmxlIil9LHtuYW1lOiJmdW5jX3B1cml0eSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczpnKCJzdGFibGUiKX0se25hbWU6ImZ1bmNfcHVyaXR5IixzeW1ib2xzOlsid29yZCJdLHBvc3Rwcm9jZXNzOmcoInZvbGF0aWxlIil9LHtuYW1lOiJvbmlucCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJ3b3JkIl0scG9zdHByb2Nlc3M6ZygiaW5wdXQiKX0se25hbWU6Im9uaW5wIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfb24iKT97dHlwZToia3dfb24ifTprd19vbixzLmxleGVyQW55Lmhhcygia3dfbnVsbCIpP3t0eXBlOiJrd19udWxsIn06a3dfbnVsbCwib25pbnAkc3ViZXhwcmVzc2lvbiQxIl19LHtuYW1lOiJmdW5jX3JldHVybnMiLHN5bWJvbHM6WyJrd19yZXR1cm5zIiwiZGF0YV90eXBlIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMiIsc3ltYm9sczpbImZ1bmNfcmV0X3RhYmxlX2NvbCJdfSx7bmFtZToiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbXX0se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQyIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImZ1bmNfcmV0dXJucyRtYWNyb2NhbGwkMSRlYm5mJDEiLHN5bWJvbHM6WyJmdW5jX3JldHVybnMkbWFjcm9jYWxsJDEkZWJuZiQxIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxIixzeW1ib2xzOlsiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQyIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxJGVibmYkMSJdLHBvc3Rwcm9jZXNzOihbZSxwXSk9Plt0KGUpLC4uLnAubWFwKHQpfHxbXV19LHtuYW1lOiJmdW5jX3JldHVybnMiLHN5bWJvbHM6WyJrd19yZXR1cm5zIixzLmxleGVyQW55Lmhhcygia3dfdGFibGUiKT97dHlwZToia3dfdGFibGUifTprd190YWJsZSwibHBhcmVuIiwiZnVuY19yZXR1cm5zJG1hY3JvY2FsbCQxIiwicnBhcmVuIl0scG9zdHByb2Nlc3M6ZT0+KDAsci50cmFjaykoZSx7a2luZDoidGFibGUiLGNvbHVtbnM6ZVszXX0pfSx7bmFtZToiZnVuY19yZXRfdGFibGVfY29sIixzeW1ib2xzOlsid29yZCIsImRhdGFfdHlwZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse25hbWU6dShlWzBdKSx0eXBlOmVbMV19KX0se25hbWU6ImRvX3N0bSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsia3dfbGFuZ3VhZ2UiLCJ3b3JkIl0scG9zdHByb2Nlc3M6X30se25hbWU6ImRvX3N0bSRlYm5mJDEiLHN5bWJvbHM6WyJkb19zdG0kZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJkb19zdG0kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZG9fc3RtIixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygia3dfZG8iKT97dHlwZToia3dfZG8ifTprd19kbywiZG9fc3RtJGVibmYkMSIscy5sZXhlckFueS5oYXMoImNvZGVibG9jayIpP3t0eXBlOiJjb2RlYmxvY2sifTpjb2RlYmxvY2tdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ImRvIiwuLi5lWzFdJiZ7bGFuZ3VhZ2U6dShlWzFdKX0sY29kZTplWzJdLnZhbHVlfSl9LHtuYW1lOiJkcm9wX2Z1bmMkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImt3X2lmIiwia3dfZXhpc3RzIl19LHtuYW1lOiJkcm9wX2Z1bmMkZWJuZiQxIixzeW1ib2xzOlsiZHJvcF9mdW5jJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZHJv
14cF9mdW5jJGVibmYkMSIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3BfZnVuYyRlYm5mJDIiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZHJvcF9mdW5jJGVibmYkMiIsc3ltYm9sczpbXSxwb3N0cHJvY2VzczooKT0+bnVsbH0se25hbWU6ImRyb3BfZnVuYyIsc3ltYm9sczpbImt3X2Ryb3AiLCJrd19mdW5jdGlvbiIsImRyb3BfZnVuYyRlYm5mJDEiLCJxbmFtZSIsImRyb3BfZnVuYyRlYm5mJDIiXSxwb3N0cHJvY2VzczplPT4oMCxyLnRyYWNrKShlLHt0eXBlOiJkcm9wIGZ1bmN0aW9uIiwuLi5lWzJdJiZ7aWZFeGlzdHM6ITB9LG5hbWU6ZVszXSwuLi5lWzRdJiZ7YXJndW1lbnRzOmVbNF19fSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sIl19LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiZHJvcF9mdW5jX292ZXJsb2FkJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2VzczpffSx7bmFtZToiZHJvcF9mdW5jX292ZXJsb2FkJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImRyb3BfZnVuY19vdmVybG9hZCRtYWNyb2NhbGwkMSRlYm5mJDEiLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDIiLCJkcm9wX2Z1bmNfb3ZlcmxvYWQkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFtlLHBdKT0+W3QoZSksLi4ucC5tYXAodCl8fFtdXX0se25hbWU6ImRyb3BfZnVuY19vdmVybG9hZCIsc3ltYm9sczpbImxwYXJlbiIsImRyb3BfZnVuY19vdmVybG9hZCRtYWNyb2NhbGwkMSIsInJwYXJlbiJdLHBvc3Rwcm9jZXNzOiQoMSl9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sJGVibmYkMSIsc3ltYm9sczpbIndvcmQiXSxwb3N0cHJvY2VzczphfSx7bmFtZToiZHJv
14cF9mdW5jX292ZXJsb2FkX2NvbCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJkcm9wX2Z1bmNfb3ZlcmxvYWRfY29sIixzeW1ib2xzOlsiZHJvcF9mdW5jX292ZXJsb2FkX2NvbCRlYm5mJDEiLCJxbmFtZSJdLHBvc3Rwcm9jZXNzOmU9PigwLHIudHJhY2spKGUse3R5cGU6ZVsxXSwuLi5lWzBdJiZ7bmFtZTp1KGVbMF0pfX0pfSx7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJtYWluJGVibmYkMSIsc3ltYm9sczpbIm1haW4kZWJuZiQxIiwic3RhdGVtZW50X3NlcGFyYXRvciJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJtYWluJGVibmYkMiIsc3ltYm9sczpbXX0se25hbWU6Im1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiLHN5bWJvbHM6WyJzdGF0ZW1lbnRfc2VwYXJhdG9yIl19LHtuYW1lOiJtYWluJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInN0YXRlbWVudF9zZXBhcmF0b3IiXSxwb3N0cHJvY2VzczplPT5lWzBdLmNvbmNhdChbZVsxXV0pfSx7bmFtZToibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInN0YXRlbWVudCJdfSx7bmFtZToibWFpbiRlYm5mJDIiLHN5bWJvbHM6WyJtYWluJGVibmYkMiIsIm1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmU9PmVbMF0uY29uY2F0KFtlWzFdXSl9LHtuYW1lOiJtYWluJGVibmYkMyIsc3ltYm9sczpbXX0se25hbWU6Im1haW4kZWJuZiQzIixzeW1ib2xzOlsibWFpbiRlYm5mJDMiLCJzdGF0ZW1lbnRfc2VwYXJhdG9yIl0scG9zdHByb2Nlc3M6ZT0+ZVswXS5jb25jYXQoW2VbMV1dKX0se25hbWU6Im1haW4iLHN5bWJvbHM6WyJtYWluJGVibmYkMSIsInN0YXRlbWVudCIsIm1haW4kZWJuZiQyIiwibWFpbiRlYm5mJDMiXSxwb3N0cHJvY2VzczooW2UscCxuXSk9Pntjb25zdCB5PW4saz1bdChwKSwuLi55Lm1hcChPPT50KE9bMV0pKV07cmV0dXJuIGsubGVuZ3RoPT09MT9rWzBdOmt9fSx7bmFtZToic3RhdGVtZW50X3NlcGFyYXRvciIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInNlbWljb2xvbiIpP3t0eXBlOiJzZW1pY29sb24ifTpzZW1pY29sb25dfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsic3RhdGVtZW50X25vcHJlcCJdfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsicHJlcGFyZSJdfSx7bmFtZToic3RhdGVtZW50IixzeW1ib2xzOlsiZGVhbGxvY2F0ZSJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbInNlbGVjdGlvbiJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZXRhYmxlX3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZWV4dGVuc2lvbl9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGVpbmRleF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJzaW1wbGVzdGF0ZW1lbnRzX2FsbCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImluc2VydF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJ1cGRhdGVfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiYWx0ZXJ0YWJsZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJhbHRlcmluZGV4X3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImRlbGV0ZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGVfc2VxdWVuY2Vfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiYWx0ZXJfc2VxdWVuY2Vfc3RhdGVtZW50Il19LHtuYW1lOiJzdGF0ZW1lbnRfbm9wcmVwIixzeW1ib2xzOlsiZHJvcF9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjcmVhdGV0eXBlX3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZV92aWV3X3N0YXRlbWVudHMiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJyZWZyZXNoX3ZpZXdfc3RhdGVtZW50cyJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImNyZWF0ZV9zY2hlbWEiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJyYWlzZV9zdGF0ZW1lbnQiXX0se25hbWU6InN0YXRlbWVudF9ub3ByZXAiLHN5bWJvbHM6WyJjb21tZW50X3N0YXRlbWVudCJdfSx7bmFtZToic3RhdGVtZW50X25vcHJlcCIsc3ltYm9sczpbImZ1bmN0aW9uc19zdGF0ZW1lbnRzIl19LHtuYW1lOiJzZWxlY3Rpb24iLHN5bWJvbHM6WyJzZWxlY3Rfc3Rh
14dGVtZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InNlbGVjdGlvbiIsc3ltYm9sczpbInNlbGVjdF92YWx1ZXMiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic2VsZWN0aW9uIixzeW1ib2xzOlsid2l0aF9zdGF0ZW1lbnQiXSxwb3N0cHJvY2Vzczp0fSx7bmFtZToic2VsZWN0aW9uIixzeW1ib2xzOlsid2l0aF9yZWN1cnNpdmVfc3RhdGVtZW50Il0scG9zdHByb2Nlc3M6dH0se25hbWU6InNlbGVjdGlvbiIsc3ltYm9sczpbInVuaW9uX3N0YXRlbWVudCJdLHBvc3Rwcm9jZXNzOnR9LHtuYW1lOiJzZWxlY3Rpb25fcGFyZW4iLHN5bWJvbHM6WyJscGFyZW4iLCJzZWxlY3Rpb24iLCJycGFyZW4iXSxwb3N0cHJvY2VzczokKDEpfV0sUGFyc2VyU3RhcnQ6Im1haW4ifTtvLmRlZmF1bHQ9cX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBhKGYpe3JldHVybiBmWzBdfWNvbnN0IHM9aSgxMikscj1mPT5mJiZmW2YubGVuZ3RoLTFdLHU9e0xleGVyOnMubGV4ZXJBbnksUGFyc2VyUnVsZXM6W3tuYW1lOiJtYWluJGVibmYkMSIsc3ltYm9sczpbImVsZW1lbnRzIl0scG9zdHByb2Nlc3M6YX0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToibWFpbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoInN0YXJ0X2xpc3QiKT97dHlwZToic3RhcnRfbGlzdCJ9OnN0YXJ0X2xpc3QsIm1haW4kZWJuZiQxIixzLmxleGVyQW55LmhhcygiZW5kX2xpc3QiKT97dHlwZToiZW5kX2xpc3QifTplbmRfbGlzdF0scG9zdHByb2Nlc3M6Zj0+ZlsxXXx8W119LHtuYW1lOiJlbGVtZW50cyRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJlbGVtZW50cyRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYSwiZWx0Il0scG9zdHByb2Nlc3M6cn0se25hbWU6ImVsZW1lbnRzJGVibmYkMSIsc3ltYm9sczpbImVsZW1lbnRzJGVibmYkMSIsImVsZW1lbnRzJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczpmPT5mWzBdLmNvbmNhdChbZlsxXV0pfSx7bmFtZToiZWxlbWVudHMiLHN5bWJvbHM6WyJlbHQiLCJlbGVtZW50cyRlYm5mJDEiXSxwb3N0cHJvY2VzczooW2YsZF0pPT5bZiwuLi5kfHxbXV19LHtuYW1lOiJlbHQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJ2YWx1ZSIpP3t0eXBlOiJ2YWx1ZSJ9OnZhbHVlXSxwb3N0cHJvY2VzczpmPT5mWzBdLnZhbHVlfSx7bmFtZToiZWx0IixzeW1ib2xzOlsibWFpbiJdLHBvc3Rwcm9jZXNzOmY9PmZbMF19XSxQYXJzZXJTdGFydDoibWFpbiJ9O28uZGVmYXVsdD11fSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGV4ZXJBbnk9by5sZXhlcj12b2lkIDA7Y29uc3QgYT1pKDApO28ubGV4ZXI9KDAsYS5jb21waWxlKSh7dmFsdWVTdHJpbmc6e21hdGNoOi8iKD86XFxbIlxcXXxbXlxuIlxcXSkqIi8sdmFsdWU6cz0+SlNPTi5wYXJzZShzKSx0eXBlOnM9PiJ2YWx1ZSJ9LHZhbHVlUmF3OnttYXRjaDovW15ccyxce1x9Il0oPzpbXixce1x9Il0qW15ccyxce1x9Il0pPy8sdHlwZTooKT0+InZhbHVlIn0sY29tbWE6IiwiLHNwYWNlOnttYXRjaDovW1xzXHRcblx2XGZccl0rLyxsaW5lQnJlYWtzOiEwfSxzdGFydF9saXN0OiJ7IixlbmRfbGlzdDoifSJ9KSxvLmxleGVyLm5leHQ9KHM9PigpPT57bGV0IHI7Zm9yKDsocj1zLmNhbGwoby5sZXhlcikpJiZyLnR5cGU9PT0ic3BhY2UiOyk7cmV0dXJuIHJ9KShvLmxleGVyLm5leHQpLG8ubGV4ZXJBbnk9by5sZXhlcn0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBhKHQpe3JldHVybiB0WzBdfWNvbnN0IHM9aSgxNCkscj10PT4kPT4kW3RdLHU9dD0+dCYmdFt0Lmxlbmd0aC0xXTtmdW5jdGlvbiBmKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD09PTEmJih0PWYodFswXSkpLEFycmF5LmlzQXJyYXkodCkmJiF0Lmxlbmd0aD9udWxsOnR9Y29uc3QgZD17TGV4ZXI6cy5sZXhlckFueSxQYXJzZXJSdWxlczpbe25hbWU6Im51bWJlciRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJmbG9hdCJdfSx7bmFtZToibnVtYmVyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImludCJdfSx7bmFtZToibnVtYmVyIixzeW1ib2xzOlsibnVtYmVyJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmZ9LHtuYW1lOiJmbG9hdCIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImZsb2F0Iik/e3R5cGU6ImZsb2F0In06ZmxvYXRdLHBvc3Rwcm9jZXNzOnQ9PnBhcnNlRmxvYXQoZih0KSl9LHtuYW1lOiJpbnQiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2Vzczp0PT5wYXJzZUludChmKHQpLDEwKX0se25hbWU6ImNvbW1hIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29tbWEiKT97dHlwZToiY29tbWEifTpjb21tYV0scG9zdHByb2Nlc3M6YX0se25hbWU6InBvaW50JG1hY3JvY2FsbCQyIixzeW1ib2xzOlsicG9pbnRfY29udGVudCJdfSx7bmFtZToicG9pbnQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDIiXX0se25hbWU6InBvaW50JG1hY3JvY2FsbCQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImxwYXJlbiIpP3t0eXBlOiJscGFyZW4ifTpscGFyZW4sInBvaW50JG1hY3JvY2FsbCQyIixzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl0scG9zdHByb2Nlc3M6cigxKX0se25hbWU6InBvaW50JG1hY3JvY2FsbCQxIixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6Zn0se25hbWU6InBvaW50IixzeW1ib2xzOlsicG9pbnQkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2VzczpmfSx7bmFtZToicG9pbnRfY29udGVudCIsc3ltYm9sczpbIm51bWJlciIsImNvbW1hIiwibnVtYmVyIl0scG9zdHByb2Nlc3M6dD0+KHt4OnRbMF0seTp0WzJdfSl9LHtuYW1lOiJsaW5lIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGN1cmwiKT97dHlwZToibGN1cmwifTpsY3VybCwibnVtYmVyIiwiY29tbWEiLCJudW1iZXIiLCJjb21tYSIsIm51bWJlciIscy5sZXhlckFueS5oYXMoInJjdXJsIik/e3R5cGU6InJjdXJsIn06cmN1cmxdLHBvc3Rwcm9jZXNzOnQ9Pih7YTp0WzFdLGI6dFszXSxjOnRbNV19KX0se25hbWU6ImJveCIsc3ltYm9sczpbImNsb3NlZF9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSwkKT0+dC5sZW5ndGghPT0yPyQ6dH0se25hbWU6ImxzZWciLHN5bWJvbHM6WyJwYXRoIl0scG9zdHByb2Nlc3M6KFt0XSwkKT0+dC5wYXRoLmxlbmd0aCE9PTI/JDp0LnBhdGh9LHtuYW1lOiJwYXRoIixzeW1ib2xzOlsib3Blbl9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSk9Pih7Y2xvc2VkOiExLHBhdGg6dH0pfSx7bmFtZToicGF0aCIsc3ltYm9sczpbImNsb3NlZF9wYXRoIl0scG9zdHByb2Nlc3M6KFt0XSk9Pih7Y2xvc2VkOiEwLHBhdGg6dH0pfSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibGJyYWNrZXQiKT97dHlwZToibGJyYWNrZXQifTpsYnJhY2tldF19LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJyYnJhY2tldCIpP3t0eXBlOiJyYnJhY2tldCJ9OnJicmFja2V0XX0se25hbWU6Im9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInBvaW50Il19LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2Vzczp1fSx7bmFtZToib3Blbl9wYXRoJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbIm9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnQ9PnRbMF0uY29uY2F0KFt0WzFdXSl9LHtuYW1lOiJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLCJvcGVuX3BhdGgkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFt0LCRdKT0+W2YodCksLi4uJC5tYXAoZil8fFtdXX0se25hbWU6Im9wZW5fcGF0aCRtYWNyb2NhbGwkMSIsc3ltYm9sczpbIm9wZW5fcGF0aCRtYWNyb2NhbGwkMiIsIm9wZW5fcGF0aCRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsIm9wZW5fcGF0aCRtYWNyb2NhbGwkMyJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJvcGVuX3BhdGgiLHN5bWJvbHM6WyJvcGVuX3BhdGgkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp1fSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbl19LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJycGFyZW4iKT97dHlwZToicnBhcmVuIn06cnBhcmVuXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMiIsc3ltYm9sczpbInBvaW50Il19LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJjb21tYSIpP3t0eXBlOiJjb21tYSJ9OmNvbW1hLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiXSxwb3N0cHJvY2Vzczp1fSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxJG1hY3JvY2FsbCQxJGVibmYkMSIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSRlYm5mJDEiLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOnQ9PnRbMF0uY29uY2F0KFt0WzFdXSl9LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDIiLCJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEkbWFjcm9jYWxsJDEkZWJuZiQxIl0scG9zdHByb2Nlc3M6KFt0LCRdKT0+W2YodCksLi4uJC5tYXAoZil8fFtdXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMiIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMSRtYWNyb2NhbGwkMSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkMyJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiXSxwb3N0cHJvY2Vzczp1fSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ1IixzeW1ib2xzOlsicG9pbnQiXX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEiLHN5bWJvbHM6W119LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoImNvbW1hIik/e3R5cGU6ImNvbW1hIn06Y29tbWEsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSJdLHBvc3Rwcm9jZXNzOnV9LHtuYW1lOiJjbG9zZWRfcGF0aCRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDQkZWJuZiQxIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0JGVibmYkMSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6dD0+dFswXS5jb25jYXQoW3RbMV1dKX0se25hbWU6ImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCIsc3ltYm9sczpbImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSIsImNsb3NlZF9wYXRoJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCRlYm5mJDEiXSxwb3N0cHJvY2VzczooW3QsJF0pPT5bZih0KSwuLi4kLm1hcChmKXx8W11dfSx7bmFtZToiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0Il0scG9zdHByb2Nlc3M6dX0se25hbWU6ImNsb3NlZF9wYXRoIixzeW1ib2xzOlsiY2xvc2VkX3BhdGgkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6cigwKX0se25hbWU6InBvbHlnb24iLHN5bWJvbHM6WyJjbG9zZWRfcGF0aCJdLHBvc3Rwcm9jZXNzOnIoMCl9LHtuYW1lOiJjaXJjbGVfYm9keSIsc3ltYm9sczpbInBvaW50IiwiY29tbWEiLCJudW1iZXIiXSxwb3N0cHJvY2Vzczp0PT4oe2M6dFswXSxyOnRbMl19KX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJsY29tcCIpP3t0eXBlOiJsY29tcCJ9Omxjb21wXX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDMiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJyY29tcCIpP3t0eXBlOiJyY29tcCJ9OnJjb21wXX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEkbWFjcm9jYWxsJDEiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQyIiwiY2lyY2xlX2JvZHkiLCJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQzIl0scG9zdHByb2Nlc3M6cigxKX0se25hbWU6ImNpcmNsZSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQxIl19LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ1IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibHBhcmVuIik/e3R5cGU6ImxwYXJlbiJ9OmxwYXJlbl19LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ2IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygicnBhcmVuIik/e3R5cGU6InJwYXJlbiJ9OnJwYXJlbl
1419LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxJG1hY3JvY2FsbCQ0IixzeW1ib2xzOlsiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNSIsImNpcmNsZV9ib2R5IiwiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNiJdLHBvc3Rwcm9jZXNzOnIoMSl9LHtuYW1lOiJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOlsiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSRtYWNyb2NhbGwkNCJdfSx7bmFtZToiY2lyY2xlJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbImNpcmNsZV9ib2R5Il19LHtuYW1lOiJjaXJjbGUiLHN5bWJvbHM6WyJjaXJjbGUkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6Zn1dLFBhcnNlclN0YXJ0OiJudW1iZXIifTtvLmRlZmF1bHQ9ZH0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmxleGVyQW55PW8ubGV4ZXI9dm9pZCAwO2NvbnN0IGE9aSgwKTtvLmxleGVyPSgwLGEuY29tcGlsZSkoe2NvbW1hOiIsIixzcGFjZTp7bWF0Y2g6L1tcc1x0XG5cdlxmXHJdKy8sbGluZUJyZWFrczohMH0saW50Oi9cLT9cZCsoPyFbXC5cZF0pLyxmbG9hdDovXC0/KD86KD86XGQqXC5cZCspfCg/OlxkK1wuXGQqKSkvLGxjdXJsOiJ7IixyY3VybDoifSIsbHBhcmVuOiIoIixycGFyZW46IikiLGxicmFja2V0OiJbIixyYnJhY2tldDoiXSIsbGNvbXA6IjwiLHJjb21wOiI+In0pLG8ubGV4ZXIubmV4dD0ocz0+KCk9PntsZXQgcjtmb3IoOyhyPXMuY2FsbChvLmxleGVyKSkmJnIudHlwZT09PSJzcGFjZSI7KTtyZXR1cm4gcn0pKG8ubGV4ZXIubmV4dCksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIGEodSl7cmV0dXJuIHVbMF19Y29uc3Qgcz1pKDE2KSxyPXtMZXhlcjpzLmxleGVyQW55LFBhcnNlclJ1bGVzOlt7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6WyJlbHQiXX0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDEiLCJlbHQiXSxwb3N0cHJvY2Vzczp1PT51WzBdLmNvbmNhdChbdVsxXV0pfSx7bmFtZToibWFpbiIsc3ltYm9sczpbIm1haW4kZWJuZiQxIl0scG9zdHByb2Nlc3M6KFt1XSk9Pntjb25zdCBmPW5ldyBTZXQ7Zm9yKGNvbnN0IGQgb2YgdSl7Y29uc3QgdD10eXBlb2YgZFsxXT09Im51bWJlciI/ZFswXToidGltZSI7aWYoZi5oYXModCkpcmV0dXJuImludmFsaWQiO2YuYWRkKHQpfXJldHVybiB1fX0se25hbWU6ImVsdCIsc3ltYm9sczpbInRpbWUiXX0se25hbWU6ImVsdCIsc3ltYm9sczpbIm51bSIsInVuaXQiXSxwb3N0cHJvY2VzczooW1t1XSxmXSk9PihmPWZbMF0udHlwZSxbZix1XSl9LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygieWVhcnMiKT97dHlwZToieWVhcnMifTp5ZWFyc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibW9udGhzIik/e3R5cGU6Im1vbnRocyJ9Om1vbnRoc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiZGF5cyIpP3t0eXBlOiJkYXlzIn06ZGF5c119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaG91cnMiKT97dHlwZToiaG91cnMifTpob3Vyc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibWludXRlcyIpP3t0eXBlOiJtaW51dGVzIn06bWludXRlc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55Lmhhcygic2Vjb25kcyIpP3t0eXBlOiJzZWNvbmRzIn06c2Vjb25kc119LHtuYW1lOiJ1bml0IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygibWlsbGlzZWNvbmRzIik/e3R5cGU6Im1pbGxpc2Vjb25kcyJ9Om1pbGxpc2Vjb25kc119LHtuYW1lOiJudW0iLHN5bWJvbHM6WyJpbnQiXX0se25hbWU6Im51bSIsc3ltYm9sczpbImZsb2F0Il19LHtuYW1lOiJ1aW50IixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaW50Iik/e3R5cGU6ImludCJ9OmludF0scG9zdHByb2Nlc3M6KFt1XSk9PnBhcnNlSW50KHUsMTApfSx7bmFtZToiaW50JGVibmYkMSRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJuZWciKT97dHlwZToibmVnIn06bmVnXX0se25hbWU6ImludCRlYm5mJDEiLHN5bWJvbHM6WyJpbnQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJpbnQkZWJuZiQxIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiaW50IixzeW1ib2xzOlsiaW50JGVibmYkMSIscy5sZXhlckFueS5oYXMoImludCIpP3t0eXBlOiJpbnQifTppbnRdLHBvc3Rwcm9jZXNzOihbdSxmXSk9PnBhcnNlSW50KGYsMTApKih1Py0xOjEpfSx7bmFtZToiZmxvYXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIm5lZyIpP3t0eXBlOiJuZWcifTpuZWddfSx7bmFtZToiZmxvYXQkZWJuZiQxIixzeW1ib2xzOlsiZmxvYXQkZWJuZiQxJHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJmbG9hdCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJmbG9hdCRlYm5mJDIiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczphfSx7bmFtZToiZmxvYXQkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToiZmxvYXQiLHN5bWJvbHM6WyJmbG9hdCRlYm5mJDEiLCJmbG9hdCRlYm5mJDIiLHMubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LHMubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XSxwb3N0cHJvY2VzczooW3UsLi4uZl0pPT5wYXJzZUZsb2F0KGYubWFwKGQ9PmQ/ZC50ZXh0OiIwIikuam9pbigiIikpKih1Py0xOjEpfSx7bmFtZToidGltZSRlYm5mJDEkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiY29sb24iKT97dHlwZToiY29sb24ifTpjb2xvbiwidWludCJdfSx7bmFtZToidGltZSRlYm5mJDEiLHN5bWJvbHM6WyJ0aW1lJGVibmYkMSRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczphfSx7bmFtZToidGltZSRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJ0aW1lJGVibmYkMiRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJkb3QiKT97dHlwZToiZG90In06ZG90LHMubGV4ZXJBbnkuaGFzKCJpbnQiKT97dHlwZToiaW50In06aW50XX0se25hbWU6InRpbWUkZWJuZiQyIixzeW1ib2xzOlsidGltZSRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6InRpbWUkZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToidGltZSIsc3ltYm9sczpbInVpbnQiLHMubGV4ZXJBbnkuaGFzKCJjb2xvbiIpP3t0eXBlOiJjb2xvbiJ9OmNvbG9uLCJ1aW50IiwidGltZSRlYm5mJDEiLCJ0aW1lJGVibmYkMiJdLHBvc3Rwcm9jZXNzOihbdSxmLGQsdCwkXSk9Pnt0PXQmJnRbMV0sJD0kJiYkWzFdO2NvbnN0IF89dHlwZW9mIHQ9PSJudW1iZXIiP1tbImhvdXJzIix1XSxbIm1pbnV0ZXMiLGRdLFsic2Vjb25kcyIsdF1dOltbIm1pbnV0ZXMiLHVdLFsic2Vjb25kcyIsZF1dO3JldHVybiAkJiZfLnB1c2goWyJtaWxsaXNlY29uZHMiLHBhcnNlRmxvYXQoIjAuIiskKSoxZTNdKSxffX1dLFBhcnNlclN0YXJ0OiJtYWluIn07by5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGMsbyxpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksby5sZXhlckFueT1vLmxleGVyPXZvaWQgMDtjb25zdCBhPWkoMCk7by5sZXhlcj0oMCxhLmNvbXBpbGUpKHtpbnQ6L1xkKy8sbmVnOiItIixkb3Q6Ii4iLHllYXJzOi8oPzp5fHlycz98eWVhcnM/KVxiLyxtb250aHM6Lyg/Om1vbig/OnRoKT9zPylcYi8sZGF5czovKD86ZHxkYXlzPylcYi8saG91cnM6Lyg/Omh8aHJzP3xob3Vycz8pXGIvLG1pbnV0ZXM6Lyg/Om18bWlucz98bWludXRlcz8pXGIvLHNlY29uZHM6Lyg/OnN8c2Vjcz98c2Vjb25kcz8pXGIvLG1pbGx
14pc2Vjb25kczovKD86bXN8bWlsbGlzZWNvbmRzPylcYi8sc3BhY2U6e21hdGNoOi9bXHNcdFxuXHZcZlxyXSsvLGxpbmVCcmVha3M6ITB9LGNvbG9uOiI6In0pLG8ubGV4ZXIubmV4dD0ocz0+KCk9PntsZXQgcjtmb3IoOyhyPXMuY2FsbChvLmxleGVyKSkmJnIudHlwZT09PSJzcGFjZSI7KTtyZXR1cm4gcn0pKG8ubGV4ZXIubmV4dCksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIGEodSl7cmV0dXJuIHVbMF19Y29uc3Qgcz1pKDE4KSxyPXtMZXhlcjpzLmxleGVyQW55LFBhcnNlclJ1bGVzOlt7bmFtZToibnVtIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiaW50Iik/e3R5cGU6ImludCJ9OmludF19LHtuYW1lOiJudW0iLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJmbG9hdCIpP3t0eXBlOiJmbG9hdCJ9OmZsb2F0XX0se25hbWU6Im1haW4kZWJuZiQxIixzeW1ib2xzOltdfSx7bmFtZToibWFpbiRlYm5mJDEiLHN5bWJvbHM6WyJtYWluJGVibmYkMSIsImxvbmciXSxwb3N0cHJvY2Vzczp1PT51WzBdLmNvbmNhdChbdVsxXV0pfSx7bmFtZToibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsc3ltYm9sczpbInNob3J0Il19LHtuYW1lOiJtYWluJGVibmYkMiRzdWJleHByZXNzaW9uJDEkZWJuZiQxIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxJGVibmYkMSIsInNob3J0Il0scG9zdHByb2Nlc3M6dT0+dVswXS5jb25jYXQoW3VbMV1dKX0se25hbWU6Im1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlQiKT97dHlwZToiVCJ9OlQsIm1haW4kZWJuZiQyJHN1YmV4cHJlc3Npb24kMSRlYm5mJDEiXX0se25hbWU6Im1haW4kZWJuZiQyIixzeW1ib2xzOlsibWFpbiRlYm5mJDIkc3ViZXhwcmVzc2lvbiQxIl0scG9zdHByb2Nlc3M6YX0se25hbWU6Im1haW4kZWJuZiQyIixzeW1ib2xzOltdLHBvc3Rwcm9jZXNzOigpPT5udWxsfSx7bmFtZToibWFpbiIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlAiKT97dHlwZToiUCJ9OlAsIm1haW4kZWJuZiQxIiwibWFpbiRlYm5mJDIiXSxwb3N0cHJvY2VzczooW3UsZixkXSx0KT0+KGQ9ZD9kWzFdOltdLCFmLmxlbmd0aCYmIWQubGVuZ3RoP3Q6Zi5sZW5ndGg/ZC5sZW5ndGg/Wy4uLmYsLi4uZF06ZjpkKX0se25hbWU6Imxvbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiWSIpP3t0eXBlOiJZIn06WV19LHtuYW1lOiJsb25nJHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIk0iKT97dHlwZToiTSJ9Ok1dfSx7bmFtZToibG9uZyRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJXIik/e3R5cGU6IlcifTpXXX0se25hbWU6Imxvbmckc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiRCIpP3t0eXBlOiJEIn06RF19LHtuYW1lOiJsb25nIixzeW1ib2xzOlsibnVtIiwibG9uZyRzdWJleHByZXNzaW9uJDEiXSxwb3N0cHJvY2VzczooW3UsZl0pPT57c3dpdGNoKHU9cGFyc2VGbG9hdCh1WzBdLnZhbHVlKSxmPWZbMF0udHlwZSxmKXtjYXNlIlkiOnJldHVyblsieWVhcnMiLHVdO2Nhc2UiTSI6cmV0dXJuWyJtb250aHMiLHVdO2Nhc2UiVyI6cmV0dXJuWyJkYXlzIix1KjddO2Nhc2UiRCI6cmV0dXJuWyJkYXlzIix1XTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB1bml0ICIrZil9fX0se25hbWU6InNob3J0JGVibmYkMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIlQiKT97dHlwZToiVCJ9OlRdLHBvc3Rwcm9jZXNzOmF9LHtuYW1lOiJzaG9ydCRlYm5mJDEiLHN5bWJvbHM6W10scG9zdHByb2Nlc3M6KCk9Pm51bGx9LHtuYW1lOiJzaG9ydCRzdWJleHByZXNzaW9uJDEiLHN5bWJvbHM6W3MubGV4ZXJBbnkuaGFzKCJIIik/e3R5cGU6IkgifTpIXX0se25hbWU6InNob3J0JHN1YmV4cHJlc3Npb24kMSIsc3ltYm9sczpbcy5sZXhlckFueS5oYXMoIk0iKT97dHlwZToiTSJ9Ok1dfSx7bmFtZToic2hvcnQkc3ViZXhwcmVzc2lvbiQxIixzeW1ib2xzOltzLmxleGVyQW55LmhhcygiUyIpP3t0eXBlOiJTIn06U119LHtuYW1lOiJzaG9ydCIsc3ltYm9sczpbInNob3J0JGVibmYkMSIsIm51bSIsInNob3J0JHN1YmV4cHJlc3Npb24kMSJdLHBvc3Rwcm9jZXNzOihbdSxmLGRdKT0+e3N3aXRjaChmPXBhcnNlRmxvYXQoZlswXS52YWx1ZSksZD1kWzBdLnR5cGUsZCl7Y2FzZSJIIjpyZXR1cm5bImhvdXJzIixmXTtjYXNlIk0iOnJldHVyblsibWludXRlcyIsZl07Y2FzZSJTIjpyZXR1cm5bInNlY29uZHMiLGZdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHVuaXQgIitkKX19fV0sUGFyc2VyU3RhcnQ6Im51bSJ9O28uZGVmYXVsdD1yfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGV4ZXJBbnk9by5sZXhlcj12b2lkIDA7Y29uc3QgYT1pKDApO28ubGV4ZXI9KDAsYS5jb21waWxlKSh7aW50Oi9cLT9cZCsoPyFbXC5cZF0pLyxmbG9hdDovXC0/KD86KD86XGQqXC5cZCspfCg/OlxkK1wuXGQqKSkvLFA6IlAiLFk6IlkiLE06Ik0iLFc6IlciLEQ6IkQiLEg6IkgiLFM6IlMiLFQ6IlQifSksby5sZXhlckFueT1vLmxleGVyfSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8udG9TcWw9dm9pZCAwO2NvbnN0IGE9aSgyKSxzPWkoNSkscj1pKDYpLHU9aSgyMCksZj1pKDMpLGQ9bmV3IFNldChmLnNxbEtleXdvcmRzLm1hcChwPT5wLnRvTG93ZXJDYXNlKCkpKTtsZXQgdD1bXTtmdW5jdGlvbiAkKHApe3JldHVybiBfKHAubmFtZSl9ZnVuY3Rpb24gXyhwLG4pe2lmKCFuKXtjb25zdCB5PXAudG9Mb3dlckNhc2UoKTtpZih5PT09cCYmIWQuaGFzKHkpJiYvXlthLXpdW2EtejAtOV9dKiQvLnRlc3QoeSkpcmV0dXJuIHB9cmV0dXJuJyInK3ArJyInfWZ1bmN0aW9uIGwocCxuLHkpe3kmJnQucHVzaCgiKCIpO2xldCBrPSEwO2Zvcihjb25zdCBPIG9mIHApa3x8dC5wdXNoKCIsICIpLGs9ITEsbihPKTt5JiZ0LnB1c2goIikiKX1mdW5jdGlvbiBiKHAsbil7c3dpdGNoKHAudHlwZSl7Y2FzZSJmb3JlaWduIGtleSI6dC5wdXNoKCIgZm9yZWlnbiBrZXkgKCIsLi4ucC5sb2NhbENvbHVtbnMubWFwKCQpLmpvaW4oIiwgIiksIikiKTtjYXNlInJlZmVyZW5jZSI6dC5wdXNoKCIgUkVGRVJFTkNFUyAiKSxuLnRhYmxlUmVmKHAuZm9yZWlnblRhYmxlKSx0LnB1c2goIigiLC4uLnAuZm9yZWlnbkNvbHVtbnMubWFwKCQpLmpvaW4oIiwgIiksIikgIikscC5tYXRjaCYmdC5wdXNoKCIgTUFUQ0ggIixwLm1hdGNoLnRvVXBwZXJDYXNlKCkpLHAub25EZWxldGUmJnQucHVzaCgiIE9OIERFTEVURSAiLHAub25EZWxldGUpLHAub25VcGRhdGUmJnQucHVzaCgiIE9OIFVQREFURSAiLHAub25VcGRhdGUpO2JyZWFrO2Nhc2UicHJpbWFyeSBrZXkiOmNhc2UidW5pcXVlIjp0LnB1c2goIiAiLHAudHlwZSwiICIpLCJjb2x1bW5zImluIHAmJnQucHVzaCgiKCIsLi4ucC5jb2x1bW5zLm1hcCgkKS5qb2luKCIsICIpLCIpICIpO2JyZWFrO2Nhc2UiY2hlY2siOnQucHVzaCgiIGNoZWNrICIpLG4uZXhwcihwLmV4cHIpO2JyZWFrO2Nhc2Uibm90IG51bGwiOmNhc2UibnVsbCI6dC5wdXNoKCIgIixwLnR5cGUsIiAiKTticmVhaztjYXNlImRlZmF1bHQiOnQucHVzaCgiIGRlZmF1bHQgIiksbi5leHByKHAuZGVmYXVsdCk7YnJlYWs7Y2FzZSJhZGQgZ2VuZXJhdGVkIjp0LnB1c2goIiBHRU5FUkFURUQgIiksTihuLHApO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIocCl9dC5wdXNoKCIgIil9ZnVuY3Rpb24gaChwLG4pe3Auc2NoZW1hJiZ0LnB1c2goXyhwLnNjaG
14VtYSksIi4iKSx0LnB1c2goXyhwLm5hbWUsbiksIiAiKX1mdW5jdGlvbiB3KHApe2gocCkscC5hbGlhcyYmdC5wdXNoKCIgQVMgIixfKHAuYWxpYXMpLCIgIil9ZnVuY3Rpb24gdihwLG4pe3QucHVzaCgiIE9SREVSIEJZICIpLGwobix5PT57cC5leHByKHkuYnkpLHkub3JkZXImJnQucHVzaCgiICIseS5vcmRlciwiICIpLHkubnVsbHMmJnQucHVzaCgiIE5VTExTICIseS5udWxscywiICIpfSwhMSl9ZnVuY3Rpb24gQShwKXtzd2l0Y2gocC50eXBlKXtjYXNlImRlZmF1bHQiOnQucHVzaCgiREVGQVVMVCAiKTticmVhaztjYXNlImlkZW50aWZpZXIiOnQucHVzaChwLm5hbWUpO2JyZWFrO2Nhc2UibGlzdCI6bGV0IG49ITA7Zm9yKGNvbnN0IHkgb2YgcC52YWx1ZXMpbnx8dC5wdXNoKCIsICIpLG49ITEsQSh5KTticmVhaztjYXNlInZhbHVlIjp0LnB1c2godHlwZW9mIHAudmFsdWU9PSJudW1iZXIiP3AudmFsdWUudG9TdHJpbmcoKTooMCx1LmxpdGVyYWwpKHAudmFsdWUpKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKHApfX1mdW5jdGlvbiBOKHAsbil7bi5hbHdheXMmJnQucHVzaChuLmFsd2F5cy50b1VwcGVyQ2FzZSgpLCIgIiksdC5wdXNoKCJBUyBJREVOVElUWSAiKSxuLnNlcXVlbmNlJiYodC5wdXNoKCIoIiksbi5zZXF1ZW5jZS5uYW1lJiYodC5wdXNoKCJTRVFVRU5DRSBOQU1FICIpLGgobi5zZXF1ZW5jZS5uYW1lKSx0LnB1c2goIiAiKSkseChwLG4uc2VxdWVuY2UpLHQucHVzaCgiKSAiKSl9ZnVuY3Rpb24geChwLG4pe24uYXMmJih0LnB1c2goIkFTICIpLHAuZGF0YVR5cGUobi5hcyksdC5wdXNoKCIgIikpLHR5cGVvZiBuLmluY3JlbWVudEJ5PT0ibnVtYmVyIiYmdC5wdXNoKCJJTkNSRU1FTlQgQlkgIixuLmluY3JlbWVudEJ5LnRvU3RyaW5nKCksIiAiKSxuLm1pblZhbHVlPT09Im5vIG1pbnZhbHVlIiYmdC5wdXNoKCJOTyBNSU5WQUxVRSAiKSx0eXBlb2Ygbi5taW5WYWx1ZT09Im51bWJlciImJnQucHVzaCgiTUlOVkFMVUUgIixuLm1pblZhbHVlLnRvU3RyaW5nKCksIiAiKSxuLm1heFZhbHVlPT09Im5vIG1heHZhbHVlIiYmdC5wdXNoKCJOTyBNQVhWQUxVRSAiKSx0eXBlb2Ygbi5tYXhWYWx1ZT09Im51bWJlciImJnQucHVzaCgiTUFYVkFMVUUgIixuLm1heFZhbHVlLnRvU3RyaW5nKCksIiAiKSx0eXBlb2Ygbi5zdGFydFdpdGg9PSJudW1iZXIiJiZ0LnB1c2goIlNUQVJUIFdJVEggIixuLnN0YXJ0V2l0aC50b1N0cmluZygpLCIgIiksdHlwZW9mIG4uY2FjaGU9PSJudW1iZXIiJiZ0LnB1c2goIkNBQ0hFICIsbi5jYWNoZS50b1N0cmluZygpLCIgIiksbi5jeWNsZSYmdC5wdXNoKG4uY3ljbGUsIiAiKSxuLm93bmVkQnk9PT0ibm9uZSI/dC5wdXNoKCJPV05FRCBCWSBOT05FICIpOm4ub3duZWRCeSYmKHQucHVzaCgiT1dORUQgQlkgIiksZyhuLm93bmVkQnkpKSwicmVzdGFydCJpbiBuJiYobi5yZXN0YXJ0PT09ITA/dC5wdXNoKCJSRVNUQVJUICIpOm4ucmVzdGFydCYmdC5wdXNoKCJSRVNUQVJUIFdJVEggIixuLnJlc3RhcnQudG9TdHJpbmcoKSwiICIpKX1mdW5jdGlvbiBnKHApe3Auc2NoZW1hJiZ0LnB1c2goXyhwLnNjaGVtYSksIi4iKSx0LnB1c2goXyhwLnRhYmxlKSwiLiIsXyhwLmNvbHVtbiksIiAiKX1mdW5jdGlvbiBFKHAsbix5KXtpZighbil7eSgpO3JldHVybn10LnB1c2gobi50eXBlLCIgIikseSgpLG4ub24mJih0LnB1c2goIk9OICIpLHAuZXhwcihuLm9uKSksbi51c2luZyYmKHQucHVzaCgiVVNJTkcgKCIpLGwobi51c2luZyxrPT50LnB1c2goJChrKSksITEpLHQucHVzaCgiKSAiKSksdC5wdXNoKCIgIil9ZnVuY3Rpb24gQyhwKXtwLm9wU2NoZW1hP3QucHVzaCgiIG9wZXJhdG9yKCIsXyhwLm9wU2NoZW1hKSwiLiIscC5vcCwiKSAiKTp0LnB1c2goIiAiLHAub3AsIiAiKX1jb25zdCBxPSgwLHMuYXN0VmlzaXRvcikocD0+KHthZGRDb2x1bW46KC4uLm4pPT57dC5wdXNoKCIgQUREIENPTFVNTiAiKSxuWzBdLmlmTm90RXhpc3RzJiZ0LnB1c2goIklGIE5PVCBFWElTVFMgIikscC5zdXBlcigpLmFkZENvbHVtbiguLi5uKX0sY3JlYXRlRXh0ZW5zaW9uOm49Pnt0LnB1c2goIkNSRUFURSBFWFRFTlNJT04gIiksbi5pZk5vdEV4aXN0cyYmdC5wdXNoKCIgSUYgTk9UIEVYSVNUUyAiKSx0LnB1c2goJChuLmV4dGVuc2lvbikpLCEoIW4uZnJvbSYmIW4udmVyc2lvbiYmIW4uc2NoZW1hKSYmKHQucHVzaCgiIFdJVEgiKSxuLnNjaGVtYSYmdC5wdXNoKCIgU0NIRU1BICIsJChuLnNjaGVtYSkpLG4udmVyc2lvbiYmdC5wdXNoKCIgVkVSU0lPTiAiLCgwLHUubGl0ZXJhbCkobi52ZXJzaW9uLnZhbHVlKSksbi5mcm9tJiZ0LnB1c2goIiBGUk9NICIsKDAsdS5saXRlcmFsKShuLmZyb20udmFsdWUpKSl9LHRhYmxlc3BhY2U6bj0+e3QucHVzaCgiVEFCTEVTUEFDRSAiLCQobi50YWJsZXNwYWNlKSl9LGFkZENvbnN0cmFpbnQ6bj0+e3QucHVzaCgiIEFERCAiKTtjb25zdCB5PW4uY29uc3RyYWludC5jb25zdHJhaW50TmFtZTt5JiZ0LnB1c2goIiBDT05TVFJBSU5UICIsJCh5KSwiICIpLGIobi5jb25zdHJhaW50LHApfSxhbHRlckNvbHVtbjoobix5KT0+e3QucHVzaCgiIEFMVEVSIENPTFVNTiAiLCQobi5jb2x1bW4pLCIgIikscC5zdXBlcigpLmFsdGVyQ29sdW1uKG4seSl9LHNldENvbHVtbkRlZmF1bHQ6KG4seSxrKT0+e2lmKHQucHVzaCgiIFNFVCBERUZBVUxUICIpLHAuZXhwcihuLmRlZmF1bHQpLG4udXBkYXRlRXhpc3RpbmcpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IHVwZGF0ZUV4aXN0aW5nIG9uIHNldCBjb2x1bW4gZGVmYXVsdCIpfSxjcmVhdGVFbnVtOm49Pnt0LnB1c2goIkNSRUFURSBUWVBFICIpLGgobi5uYW1lKSx0LnB1c2goIiBBUyBFTlVNICIpLGwobi52YWx1ZXMseT0+dC5wdXNoKCgwLHUubGl0ZXJhbCkoeS52YWx1ZSkpLCEwKSx0LnB1c2goIiAiKX0sY3JlYXRlQ29tcG9zaXRlVHlwZTpuPT57dC5wdXNoKCJDUkVBVEUgVFlQRSAiKSxoKG4ubmFtZSksdC5wdXNoKCIgQVMgIiksbChuLmF0dHJpYnV0ZXMseT0+e3QucHVzaCgkKHkubmFtZSksIiAiKSxwLmRhdGFUeXBlKHkuZGF0YVR5cGUpLHkuY29sbGF0ZSYmKHQucHVzaCgiQ09MTEFURSAiKSxoKHkuY29sbGF0ZSkpfSwhMCksdC5wdXNoKCIgIil9LHNldFRhYmxlT3duZXI6bj0+e3QucHVzaCgiIE9XTkVSIFRPICIsJChuLnRvKSl9LGFsdGVyQ29sdW1uU2ltcGxlOm49PnQucHVzaChuLnR5cGUpLGFsdGVyQ29sdW1uQWRkR2VuZXJhdGVkOm49Pnt0LnB1c2goIiBBREQgR0VORVJBVEVEICIpLE4ocCxuKX0sc2V0Q29sdW1uVHlwZTpuPT5
147dC5wdXNoKCIgU0VUIERBVEEgVFlQRSAiKSxwLmRhdGFUeXBlKG4uZGF0YVR5cGUpLHQucHVzaCgiICIpfSxhbHRlclRhYmxlOm49Pnt0LnB1c2goIkFMVEVSIFRBQkxFICIpLG4uaWZFeGlzdHMmJnQucHVzaCgiIElGIEVYSVNUUyAiKSxuLm9ubHkmJnQucHVzaCgiIE9OTFkgIiksdyhuLnRhYmxlKSxsKG4uY2hhbmdlcyx5PT5wLnRhYmxlQWx0ZXJhdGlvbih5LG4udGFibGUpLCExKX0sYWx0ZXJJbmRleDpuPT57c3dpdGNoKHQucHVzaCgiQUxURVIgSU5ERVggIiksbi5pZkV4aXN0cyYmdC5wdXNoKCIgSUYgRVhJU1RTICIpLHcobi5pbmRleCksbi5jaGFuZ2UudHlwZSl7Y2FzZSJyZW5hbWUiOnQucHVzaCgiIFJFTkFNRSBUTyAiKSxoKG4uY2hhbmdlLnRvKSx0LnB1c2goIiAiKTticmVhaztjYXNlInNldCB0YWJsZXNwYWNlIjp0LnB1c2goIiBTRVQgVEFCTEVTUEFDRSAiKSxoKG4uY2hhbmdlLnRhYmxlc3BhY2UpLHQucHVzaCgiICIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIobi5jaGFuZ2UsIkFsdGVyIGluZGV4IHR5cGUgbm90IHN1cHBvcnRlZDogIil9fSx0YWJsZUFsdGVyYXRpb246KG4seSk9Pntzd2l0Y2gobi50eXBlKXtjYXNlImFkZCBjb2x1bW4iOnJldHVybiBwLmFkZENvbHVtbihuLHkpO2Nhc2UiYWRkIGNvbnN0cmFpbnQiOnJldHVybiBwLmFkZENvbnN0cmFpbnQobix5KTtjYXNlImFsdGVyIGNvbHVtbiI6cmV0dXJuIHAuYWx0ZXJDb2x1bW4obix5KTtjYXNlInJlbmFtZSI6cmV0dXJuIHAucmVuYW1lVGFibGUobix5KTtjYXNlInJlbmFtZSBjb2x1bW4iOnJldHVybiBwLnJlbmFtZUNvbHVtbihuLHkpO2Nhc2UicmVuYW1lIGNvbnN0cmFpbnQiOnJldHVybiBwLnJlbmFtZUNvbnN0cmFpbnQobix5KTtjYXNlImRyb3AgY29sdW1uIjpyZXR1cm4gcC5kcm9wQ29sdW1uKG4seSk7Y2FzZSJkcm9wIGNvbnN0cmFpbnQiOnJldHVybiBwLmRyb3BDb25zdHJhaW50KG4seSk7Y2FzZSJvd25lciI6cmV0dXJuIHAuc2V0VGFibGVPd25lcihuLHkpO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIobil9fSxhcnJheTpuPT57dC5wdXNoKG4udHlwZT09PSJhcnJheSI/IkFSUkFZWyI6IigiKSxsKG4uZXhwcmVzc2lvbnMseT0+cC5leHByKHkpLCExKSx0LnB1c2gobi50eXBlPT09ImFycmF5Ij8iXSI6IikiKX0sYXJyYXlJbmRleDpuPT57cC5leHByKG4uYXJyYXkpLHQucHVzaCgiWyIpLHAuZXhwcihuLmluZGV4KSx0LnB1c2goIl0gIil9LGV4cHI6bj0+e2lmKG4udHlwZT09PSJyZWYiKXtwLnJlZihuKTtyZXR1cm59aWYobi50eXBlPT09Imxpc3QiKXtwLnN1cGVyKCkuZXhwcihuKTtyZXR1cm59dC5wdXNoKCIoIikscC5zdXBlcigpLmV4cHIobiksdC5wdXNoKCIpIil9LGNhbGxPdmVybGF5Om49Pnt0LnB1c2goIk9WRVJMQVkoIikscC5leHByKG4udmFsdWUpLHQucHVzaCgiIFBMQUNJTkcgIikscC5leHByKG4ucGxhY2luZyksdC5wdXNoKCIgRlJPTSAiKSxwLmV4cHIobi5mcm9tKSxuLmZvciYmKHQucHVzaCgiIEZPUiAiKSxwLmV4cHIobi5mb3IpKSx0LnB1c2goIikiKX0sY2FsbFN1YnN0cmluZzpuPT57dC5wdXNoKCJTVUJTVFJJTkcoIikscC5leHByKG4udmFsdWUpLG4uZnJvbSYmKHQucHVzaCgiIEZST00gIikscC5leHByKG4uZnJvbSkpLG4uZm9yJiYodC5wdXNoKCIgRk9SICIpLHAuZXhwcihuLmZvcikpLHQucHVzaCgiKSIpfSxiaW5hcnk6bj0+e3AuZXhwcihuLmxlZnQpLEMobikscC5leHByKG4ucmlnaHQpfSxjYWxsOm49PntoKG4uZnVuY3Rpb24pLHQucHVzaCgiKCIpLG4uZGlzdGluY3QmJnQucHVzaChuLmRpc3RpbmN0LCIgIiksbChuLmFyZ3MseT0+cC5leHByKHkpLCExKSxuLm9yZGVyQnkmJnYocCxuLm9yZGVyQnkpLHQucHVzaCgiKSAiKSxuLmZpbHRlciYmKHQucHVzaCgiZmlsdGVyICh3aGVyZSAiKSxwLmV4cHIobi5maWx0ZXIpLHQucHVzaCgiKSAiKSksbi5vdmVyJiYodC5wdXNoKCJvdmVyICgiKSxuLm92ZXIucGFydGl0aW9uQnkmJih0LnB1c2goIlBBUlRJVElPTiBCWSAiKSxsKG4ub3Zlci5wYXJ0aXRpb25CeSx5PT5wLmV4cHIoeSksITEpLHQucHVzaCgiICIpKSxuLm92ZXIub3JkZXJCeSYmKHYocCxuLm92ZXIub3JkZXJCeSksdC5wdXNoKCIgIikpLHQucHVzaCgiKSAiKSl9LGNhc2U6bj0+e3QucHVzaCgiQ0FTRSAiKSxuLnZhbHVlJiZwLmV4cHIobi52YWx1ZSk7Zm9yKGNvbnN0IHkgb2Ygbi53aGVucyl0LnB1c2goIiBXSEVOICIpLHAuZXhwcih5LndoZW4pLHQucHVzaCgiIFRIRU4gIikscC5leHByKHkudmFsdWUpO24uZWxzZSYmKHQucHVzaCgiIEVMU0UgIikscC5leHByKG4uZWxzZSkpLHQucHVzaCgiIEVORCAiKX0sY2FzdDpuPT57cC5leHByKG4ub3BlcmFuZCksdC5wdXNoKCI6OiIpLHAuZGF0YVR5cGUobi50byl9LGNvbnN0YW50Om49Pntzd2l0Y2gobi50eXBlKXtjYXNlImJvb2xlYW4iOnQucHVzaChuLnZhbHVlPyJ0cnVlIjoiZmFsc2UiKTticmVhaztjYXNlImludGVnZXIiOnQucHVzaChuLnZhbHVlLnRvU3RyaW5nKDEwKSk7YnJlYWs7Y2FzZSJudW1lcmljIjp0LnB1c2gobi52YWx1ZS50b1N0cmluZygpKSxOdW1iZXIuaXNJbnRlZ2VyKG4udmFsdWUpJiZ0LnB1c2goIi4iKTticmVhaztjYXNlIm51bGwiOnQucHVzaCgibnVsbCIpO2JyZWFrO2Nhc2UiY29uc3RhbnQiOmJyZWFrO2Nhc2Uic3RyaW5nIjp0LnB1c2goKDAsdS5saXRlcmFsKShuLnZhbHVlKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyByLk5vdFN1cHBvcnRlZC5uZXZlcihuKX19LHZhbHVlS2V5d29yZDpuPT57dC5wdXNoKG4ua2V5d29yZCwiICIpfSxjb21tZW50Om49Pntzd2l0Y2godC5wdXNoKCJDT01NRU5UIE9OICIsbi5vbi50eXBlLnRvVXBwZXJDYXNlKCksIiAiKSxuLm9uLnR5cGUpe2Nhc2UiY29sdW1uIjpnKG4ub24uY29sdW1uKTticmVhaztkZWZhdWx0Omgobi5vbi5uYW1lKTticmVha310LnB1c2goIiBJUyAiLCgwLHUubGl0ZXJhbCkobi5jb21tZW50KSwiICIpfSxleHRyYWN0Om49Pnt0LnB1c2goIkVYVFJBQ1QgKCIsbi5maWVsZC5uYW1lLnRvVXBwZXJDYXNlKCksIiBGUk9NICIpLHAuZXhwcihuLmZyb20pLHQucHVzaCgiKSAiKX0sY3JlYXRlQ29sdW1uOm49Pnt2YXIgeTt0LnB1c2goJChuLm5hbWUpLCIgIikscC5kYXRhV
14HlwZShuLmRhdGFUeXBlKSx0LnB1c2goIiAiKSxuLmNvbGxhdGUmJih0LnB1c2goIkNPTExBVEUgIiksaChuLmNvbGxhdGUpKTtmb3IoY29uc3QgayBvZih5PW4uY29uc3RyYWludHMpIT09bnVsbCYmeSE9PXZvaWQgMD95OltdKXAuY29uc3RyYWludChrKX0sYmVnaW46bj0+e3QucHVzaCgiQkVHSU4gIiksbi5pc29sYXRpb25MZXZlbCYmdC5wdXNoKCJJU09MQVRJT04gTEVWRUwgIixuLmlzb2xhdGlvbkxldmVsLnRvVXBwZXJDYXNlKCksIiAiKSxuLndyaXRlYWJsZSYmdC5wdXNoKG4ud3JpdGVhYmxlLnRvVXBwZXJDYXNlKCksIiAiKSx0eXBlb2Ygbi5kZWZlcnJhYmxlPT0iYm9vbGVhbiImJihuLmRlZmVycmFibGV8fHQucHVzaCgiTk9UICIpLHQucHVzaCgiREVGRVJSQUJMRSAiKSl9LGFsdGVyU2VxdWVuY2U6bj0+e3N3aXRjaCh0LnB1c2goIkFMVEVSIFNFUVVFTkNFICIpLG4uaWZFeGlzdHMmJnQucHVzaCgiSUYgRVhJU1RTICIpLGgobi5uYW1lKSxuLmNoYW5nZS50eXBlKXtjYXNlInNldCBvcHRpb25zIjp4KHAsbi5jaGFuZ2UpO2JyZWFrO2Nhc2UicmVuYW1lIjp0LnB1c2goIlJFTkFNRSBUTyAiLCQobi5jaGFuZ2UubmV3TmFtZSksIiAiKTticmVhaztjYXNlInNldCBzY2hlbWEiOnQucHVzaCgiU0VUIFNDSEVNQSAiLCQobi5jaGFuZ2UubmV3U2NoZW1hKSwiICIpO2JyZWFrO2Nhc2Uib3duZXIgdG8iOm4uY2hhbmdlLm93bmVyLHQucHVzaCgiT1dORVIgVE8gIiwkKG4uY2hhbmdlLm93bmVyKSwiICIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIobi5jaGFuZ2UpfX0sY3JlYXRlU2VxdWVuY2U6bj0+e3QucHVzaCgiQ1JFQVRFICIpLG4udGVtcCYmdC5wdXNoKCJURU1QT1JBUlkgIiksdC5wdXNoKCJTRVFVRU5DRSAiKSxuLmlmTm90RXhpc3RzJiZ0LnB1c2goIklGIE5PVCBFWElTVFMgIiksaChuLm5hbWUpLHgocCxuLm9wdGlvbnMpfSxkcm9wOm49Pnt0LnB1c2gobi50eXBlLnRvVXBwZXJDYXNlKCksIiAiKSxuLmNvbmN1cnJlbnRseSYmdC5wdXNoKCJDT05DVVJSRU5UTFkgIiksbi5pZkV4aXN0cyYmdC5wdXNoKCJJRiBFWElTVFMgIiksbChuLm5hbWVzLHk9PnAudGFibGVSZWYoeSksITEpLG4uY2FzY2FkZSYmdC5wdXNoKG4uY2FzY2FkZS50b1VwcGVyQ2FzZSgpLCIgIil9LGNvbnN0cmFpbnQ6bj0+e24uY29uc3RyYWludE5hbWUmJnQucHVzaCgiIENPTlNUUkFJTlQgIiwkKG4uY29uc3RyYWludE5hbWUpLCIgIiksYihuLHApfSxkbzpuPT57dC5wdXNoKCJETyIpLG4ubGFuZ3VhZ2UmJnQucHVzaCgiIExBTkdVQUdFICIsbi5sYW5ndWFnZS5uYW1lKSx0LnB1c2goIiAkJCIsbi5jb2RlLCIkJCIpfSxjcmVhdGVGdW5jdGlvbjpuPT57dmFyIHk7aWYodC5wdXNoKG4ub3JSZXBsYWNlPyJDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiOiJDUkVBVEUgRlVOQ1RJT04gIiksaChuLm5hbWUpLGwobi5hcmd1bWVudHMsaz0+e2subW9kZSYmdC5wdXNoKGsubW9kZSwiICIpLGsubmFtZSYmdC5wdXNoKCQoay5uYW1lKSwiICIpLHAuZGF0YVR5cGUoay50eXBlKSxrLmRlZmF1bHQmJih0LnB1c2goIiA9ICIpLHAuZXhwcihrLmRlZmF1bHQpKX0sITApLG4ucmV0dXJucylzd2l0Y2gobi5yZXR1cm5zLmtpbmQpe2Nhc2UidGFibGUiOnQucHVzaCgiIFJFVFVSTlMgVEFCTEUgIiksbChuLnJldHVybnMuY29sdW1ucyxrPT57dC5wdXNoKCQoay5uYW1lKSwiICIpLHAuZGF0YVR5cGUoay50eXBlKX0sITApO2JyZWFrO2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpjYXNlImFycmF5Ijp0LnB1c2goIiBSRVRVUk5TICIpLHAuZGF0YVR5cGUobi5yZXR1cm5zKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKG4ucmV0dXJucyl9c3dpdGNoKHQucHVzaCgiIEFTICQkIiwoeT1uLmNvZGUpIT09bnVsbCYmeSE9PXZvaWQgMD95OiIiLCIkJCIpLG4ubGFuZ3VhZ2UmJnQucHVzaCgiTEFOR1VBR0UgIixuLmxhbmd1YWdlLm5hbWUsIiAiKSxuLnB1cml0eSYmdC5wdXNoKG4ucHVyaXR5LnRvVXBwZXJDYXNlKCksIiAiKSx0eXBlb2Ygbi5sZWFrcHJvb2Y9PSJib29sZWFuIiYmdC5wdXNoKG4ubGVha3Byb29mPyJMRUFLUFJPT0YgIjoiTk9UIExFQUtQUk9PRiAiKSxuLm9uTnVsbElucHV0KXtjYXNlImNhbGwiOnQucHVzaCgiQ0FMTEVEIE9OIE5VTEwgSU5QVVQgIik7YnJlYWs7Y2FzZSJudWxsIjp0LnB1c2goIlJFVFVSTlMgTlVMTCBPTiBOVUxMIElOUFVUICIpO2JyZWFrO2Nhc2Uic3RyaWN0Ijp0LnB1c2goIlNUUklDVCAiKTticmVhaztjYXNlIG51bGw6Y2FzZSB2b2lkIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyByLk5vdFN1cHBvcnRlZC5uZXZlcihuLm9uTnVsbElucHV0KX19LGRyb3BGdW5jdGlvbjpuPT57dC5wdXNoKCJEUk9QIEZVTkNUSU9OICIpLG4uaWZFeGlzdHMmJnQucHVzaCgiSUYgRVhJU1RTICIpLGgobi5uYW1lKSxuLmFyZ3VtZW50cyYmbChuLmFyZ3VtZW50cyx5PT57eS5uYW1lJiYoaCh5Lm5hbWUpLHQucHVzaCgiICIpKSxwLmRhdGFUeXBlKHkudHlwZSl9LCEwKSx0LnB1c2goIiAiKX0sd2l0aDpuPT57dC5wdXNoKCJXSVRIICIpLGwobi5iaW5kLHk9Pnt0LnB1c2goJCh5LmFsaWFzKSwiIEFTICgiKSxwLnN0YXRlbWVudCh5LnN0YXRlbWVudCksdC5wdXNoKCIpICIpfSwhMSkscC5zdGF0ZW1lbnQobi5pbil9LHdpdGhSZWN1cnNpdmU6bj0+e3QucHVzaCgiV0lUSCBSRUNVUlNJVkUgIiwkKG4uYWxpYXMpLCIoIiwuLi5uLmNvbHVtbk5hbWVzLm1hcCgkKS5qb2luKCIsICIpLCIpIEFTICgiKSxwLnVuaW9uKG4uYmluZCksdC5wdXNoKCIpICIpLHAuc3RhdGVtZW50KG4uaW4pfSxzZXRHbG9iYWw6bj0+e3QucHVzaCgiU0VUICIsJChuLnZhcmlhYmxlKSwiID0gIiksQShuLnNldCl9LHNldFRpbWV6b25lOm49Pntzd2l0Y2godC5wdXNoKCJTRVQgVElNRSBaT05FICIpLG4udG8udHlwZSl7Y2FzZSJkZWZhdWx0IjpjYXNlImxvY2FsIjp0LnB1c2gobi50by50eXBlLnRvVXBwZXJDYXNlKCksIiAiKTticmVhaztjYXNlInZhbHVlIjp0LnB1c2godHlwZW9mIG4udG8udmFsdWU9PSJzdHJpbmciPygwLHUubGl0ZXJhbCkobi50by52YWx1ZSk6bi50by52YWx1ZS50b1N0cmluZygxMCkpO2JyZWFrO2Nhc2UiaW50ZXJ2YWwiOnQucHVzaCgiSU5URVJWQUwgIiwoMCx1LmxpdGVyYWwpKG4udG8udmFsdWUpLCIgSE9VUiBUTyBNSU5VVEUiKTticmVhaztkZWZhdWx0OnRocm93IHIuTm90U3VwcG9ydGVkLm5ldmVyKG4udG8pfX0sc2V0TmFtZXM6bj0+e3N3aXRjaC
14h0LnB1c2goIlNFVCBOQU1FUyAiKSxuLnRvLnR5cGUpe2Nhc2UidmFsdWUiOnQucHVzaCgoMCx1LmxpdGVyYWwpKG4udG8udmFsdWUpKTticmVha319LGRhdGFUeXBlOm49Pnt2YXIgeSxrO2lmKChuPT1udWxsP3ZvaWQgMDpuLmtpbmQpPT09ImFycmF5Iil7cC5kYXRhVHlwZShuLmFycmF5T2YpLHQucHVzaCgiW10iKTtyZXR1cm59aWYoIShuIT1udWxsJiZuLm5hbWUpKXt0LnB1c2goInVua293biIpO3JldHVybn1sZXQgTz0hMDtpZihuLnNjaGVtYSloKG4sbi5kb3VibGVRdW90ZWQpO2Vsc2UgaWYobi5kb3VibGVRdW90ZWQpaChuLCEwKTtlbHNlIHN3aXRjaChuLm5hbWUpe2Nhc2UiZG91YmxlIHByZWNpc2lvbiI6Y2FzZSJjaGFyYWN0ZXIgdmFyeWluZyI6Y2FzZSJiaXQgdmFyeWluZyI6dC5wdXNoKG4ubmFtZSwiICIpO2JyZWFrO2Nhc2UidGltZSB3aXRob3V0IHRpbWUgem9uZSI6Y2FzZSJ0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUiOmNhc2UidGltZSB3aXRoIHRpbWUgem9uZSI6Y2FzZSJ0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUiOmNvbnN0IFI9bi5uYW1lLnNwbGl0KCIgIik7dC5wdXNoKFIuc2hpZnQoKSksISgoeT1uLmNvbmZpZyk9PT1udWxsfHx5PT09dm9pZCAwKSYmeS5sZW5ndGgmJmwobi5jb25maWcsTD0+dC5wdXNoKEwudG9TdHJpbmcoMTApKSwhMCksdC5wdXNoKCIgIiksdC5wdXNoKFIuam9pbigiICIpLCIgIiksTz0hMTticmVhaztkZWZhdWx0Omgobik7YnJlYWt9TyYmKCEoKGs9bi5jb25maWcpPT09bnVsbHx8az09PXZvaWQgMCkmJmsubGVuZ3RoKSYmbChuLmNvbmZpZyxSPT50LnB1c2goUi50b1N0cmluZygxMCkpLCEwKX0sY3JlYXRlSW5kZXg6bj0+e3QucHVzaChuLnVuaXF1ZT8iQ1JFQVRFIFVOSVFVRSBJTkRFWCAiOiJDUkVBVEUgSU5ERVggIiksbi5pZk5vdEV4aXN0cyYmdC5wdXNoKCIgSUYgTk9UIEVYSVNUUyAiKSxuLmluZGV4TmFtZSYmdC5wdXNoKCQobi5pbmRleE5hbWUpLCIgIiksdC5wdXNoKCJPTiAiKSxwLnRhYmxlUmVmKG4udGFibGUpLG4udXNpbmcmJnQucHVzaCgiVVNJTkcgIiwkKG4udXNpbmcpLCIgIiksbChuLmV4cHJlc3Npb25zLHk9PntwLmV4cHIoeS5leHByZXNzaW9uKSx0LnB1c2goIiAiKSx5LmNvbGxhdGUmJih0LnB1c2goIkNPTExBVEUgIiksaCh5LmNvbGxhdGUpKSx5Lm9wY2xhc3MmJmgoeS5vcGNsYXNzKSx5Lm9yZGVyJiZ0LnB1c2goeS5vcmRlciwiICIpLHkubnVsbHMmJnQucHVzaCgibnVsbHMgIix5Lm51bGxzLCIgIil9LCEwKSxuLndpdGgmJih0LnB1c2goIldJVEggIiksbChuLndpdGgseT0+e3QucHVzaCh5LnBhcmFtZXRlciwiID0gIiwoMCx1LmxpdGVyYWwpKHkudmFsdWUpKX0sITApKSxuLnRhYmxlc3BhY2UmJnQucHVzaCgiVEFCTEVTUEFDRSAiLF8obi50YWJsZXNwYWNlKSksbi53aGVyZSYmKHQucHVzaCgiIFdIRVJFICIpLHAuZXhwcihuLndoZXJlKSksdC5wdXNoKCIgIil9LGNyZWF0ZVRhYmxlOm49Pnt2YXIgeTt0LnB1c2goIkNSRUFURSAiKSxuLmxvY2FsaXR5JiZ0LnB1c2gobi5sb2NhbGl0eS50b1VwcGVyQ2FzZSgpLCIgIiksbi50ZW1wb3JhcnkmJnQucHVzaCgiVEVNUE9SQVJZICIpLG4udW5sb2dnZWQmJnQucHVzaCgiVU5MT0dHRUQgIiksdC5wdXNoKG4uaWZOb3RFeGlzdHM/IlRBQkxFIElGIE5PVCBFWElTVFMgIjoiVEFCTEUgIikscC50YWJsZVJlZihuLm5hbWUpLHQucHVzaCgiKCIpLGwobi5jb2x1bW5zLGs9Pntzd2l0Y2goay5raW5kKXtjYXNlImNvbHVtbiI6cmV0dXJuIHAuY3JlYXRlQ29sdW1uKGspO2Nhc2UibGlrZSB0YWJsZSI6cmV0dXJuIHAubGlrZVRhYmxlKGspO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoayl9fSwhMSksbi5jb25zdHJhaW50cyYmKHQucHVzaCgiLCAiKSxsKG4uY29uc3RyYWludHMsaz0+e2NvbnN0IE89ay5jb25zdHJhaW50TmFtZTtPJiZ0LnB1c2goIkNPTlNUUkFJTlQgIiwkKE8pLCIgIiksYihrLHApfSwhMSkpLHQucHVzaCgiKSAiKSwhKCh5PW4uaW5oZXJpdHMpPT09bnVsbHx8eT09PXZvaWQgMCkmJnkubGVuZ3RoJiYodC5wdXNoKCIgSU5IRVJJVFMgIiksbChuLmluaGVyaXRzLGs9PmgoayksITApKX0sbGlrZVRhYmxlOm49Pnt0LnB1c2goIiBMSUtFICIpLHAudGFibGVSZWYobi5saWtlKSx0LnB1c2goIiAiKTtmb3IoY29uc3R7dmVyYjp5LG9wdGlvbjprfW9mIG4ub3B0aW9ucyl0LnB1c2goeS50b1VwcGVyQ2FzZSgpLCIgIixrLnRvVXBwZXJDYXNlKCksIiAiKX0sY3JlYXRlU2NoZW1hOm49Pnt0LnB1c2gobi5pZk5vdEV4aXN0cz8iQ1JFQVRFIFNDSEVNQSBJRiBOT1QgRVhJU1RTICI6IkNSRUFURSBTQ0hFTUEgIiksdC5wdXNoKCQobi5uYW1lKSl9LHRydW5jYXRlVGFibGU6bj0+e3QucHVzaCgiVFJVTkNBVEUgVEFCTEUgIik7bGV0IHk9ITA7Zm9yKGNvbnN0IGsgb2Ygbi50YWJsZXMpeXx8dC5wdXNoKCIsICIpLHk9ITEscC50YWJsZVJlZihrKTtpZihuLmlkZW50aXR5KXN3aXRjaChuLmlkZW50aXR5KXtjYXNlInJlc3RhcnQiOnQucHVzaCgiIFJFU1RBUlQgSURFTlRJVFkgIik7YnJlYWs7Y2FzZSJjb250aW51ZSI6dC5wdXNoKCIgQ09OVElOVUUgSURFTlRJVFkgIik7YnJlYWt9bi5jYXNjYWRlJiZ0LnB1c2goIiAiLG4uY2FzY2FkZSwiICIpfSxkZWxldGU6bj0+e3QucHVzaCgiREVMRVRFIEZST00gIikscC50YWJsZVJlZihuLmZyb20pLG4ud2hlcmUmJih0LnB1c2goIiBXSEVSRSAiKSxwLmV4cHIobi53aGVyZSkpLG4ucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwobi5yZXR1cm5pbmcseT0+cC5zZWxlY3Rpb25Db2x1bW4oeSksITEpKSx0LnB1c2goIiAiKX0sZHJvcENvbHVtbjpuPT57dC5wdXNoKCIgRFJPUCBDT0xVTU4gIiksbi5pZkV4aXN0cyYmdC5wdXNoKCIgSUYgRVhJU1RTICIpLHQucHVzaCgkKG4uY29sdW1uKSksbi5iZWhhdmlvdXImJnQucHVzaCgiICIsbi5iZWhhdmlvdXIpLHQucHVzaCgiICIpfSxkcm9wQ29uc3RyYWludDpuPT57dC5wdXNoKCIgRFJPUCBDT05TVFJBSU5UICIpLG4uaWZFeGlzdHMmJnQucHVzaCgiIElGIEVYSVNUUyAiKSx0LnB1c2goJChuLmNvbnN0cmFpbnQpKSxuLmJlaGF2aW91ciYmdC5wdXNoKCIgIixuLmJlaGF2aW91ci50b1VwcGVyQ2FzZSgpLCIgIil9LGZyb206bj0+cC5zdXBlcigpLmZyb20obiksZnJvbUNhbGw6bj0+e0UocCxuLmpvaW4sKCk9Pnt2YXIgeSxrO2lmKHAuY2FsbChuKSxuLndpdGhPcmRpbmFsaXR5JiZ0LnB1c2goIiBXSVRIIE9SRElOQUxJVFkiKSxuLmFsaWFzKXt0LnB1c2goIiBBUyAiLCQobi5hbGlhcyksIiAiKTtjb25zdCBPPShrPSh5PW4uYWxpYXMuY29sdW1ucyk9PT1udWxsfHx5PT09dm9pZCAwP3ZvaWQgMDp5Lmxlbmd0aCkhPT1udWxsJiZrIT09dm9pZCAwP2s6MDtpZihPPjApe3QucHVzaCgiKCIpO2ZvcihsZXQgUj0wO1I8TzsrK1IpUiE9PTAmJnQucHVzaCgiLCAiKSx0LnB1c2goJChuLmFsaWFzLmNvbHVtbnNbUl0pKTt0LnB1c2goIikiKX19fSksdC5wdXNoKCIgIil9LGZyb21TdGF0ZW1lbnQ6bj0+e0UocCxuLmpvaW4sKCk9Pnt0LnB1c2goIigiKSxwLnNlbGVjdChuLnN0YXRlbWVudCksdC5wdXNoKCIpICIpLG4uYWxpYXMmJih0LnB1c2goIiBBUyAiLF8obi5hbGlhcykpLG4uY29sdW1uTmFtZXMmJmwobi5jb2x1bW5OYW1lcyx5PT50LnB1c2goJCh5KSksITApLHQucHVzaCgiICIpKX0pLHQucHVzaCgiICIpfSx2YWx1ZXM6bj0+e3QucHVzaCgiVkFMVUVTICIpLGwobi52YWx1ZXMseT
140+e2woeSxrPT57cC5leHByKGspfSwhMCl9LCExKX0sZnJvbVRhYmxlOm49PntFKHAsbi5qb2luLCgpPT57aWYocC50YWJsZVJlZihuLm5hbWUpLG4ubmFtZS5jb2x1bW5OYW1lcyl7aWYoIW4ubmFtZS5hbGlhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGFsaWFzZWQgY29sdW1uIG5hbWVzIHdpdGhvdXQgYW4gYWxpYXMiKTtsKG4ubmFtZS5jb2x1bW5OYW1lcyx5PT50LnB1c2goJCh5KSksITApfX0pfSxqb2luOm49Pnt0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBub3QgaGFwcGVuIPCfkoAiKX0saW5zZXJ0Om49PntpZih0LnB1c2goIklOU0VSVCBJTlRPICIpLHAudGFibGVSZWYobi5pbnRvKSxuLmNvbHVtbnMmJnQucHVzaCgiKCIsbi5jb2x1bW5zLm1hcCgkKS5qb2luKCIsICIpLCIpIiksdC5wdXNoKCIgIiksbi5vdmVycmlkaW5nJiZ0LnB1c2goIk9WRVJSSURJTkcgIixuLm92ZXJyaWRpbmcudG9VcHBlckNhc2UoKSwiIFZBTFVFICIpLHAuc2VsZWN0KG4uaW5zZXJ0KSx0LnB1c2goIiAiKSxuLm9uQ29uZmxpY3Qpe3QucHVzaCgiT04gQ09ORkxJQ1QgIik7Y29uc3QgeT1uLm9uQ29uZmxpY3Qub247c3dpdGNoKHk9PW51bGw/dm9pZCAwOnkudHlwZSl7Y2FzZSJvbiBleHByIjpsKHkuZXhwcnMsaz0+cC5leHByKGspLCEwKTticmVhaztjYXNlIm9uIGNvbnN0cmFpbnQiOnQucHVzaCgiT04gQ09OU1RSQUlOVCAiKSxoKHkuY29uc3RyYWludCk7Y2FzZSBudWxsOmNhc2Ugdm9pZCAwOmJyZWFrO2RlZmF1bHQ6dGhyb3cgci5Ob3RTdXBwb3J0ZWQubmV2ZXIoeSl9bi5vbkNvbmZsaWN0LmRvPT09ImRvIG5vdGhpbmciP3QucHVzaCgiIERPIE5PVEhJTkciKToodC5wdXNoKCIgRE8gVVBEQVRFIFNFVCAiKSxsKG4ub25Db25mbGljdC5kby5zZXRzLGs9PnAuc2V0KGspLCExKSxuLm9uQ29uZmxpY3Qud2hlcmUmJih0LnB1c2goIiBXSEVSRSAiKSxwLmV4cHIobi5vbkNvbmZsaWN0LndoZXJlKSkpLHQucHVzaCgiICIpfW4ucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwobi5yZXR1cm5pbmcseT0+cC5zZWxlY3Rpb25Db2x1bW4oeSksITEpKX0scmFpc2U6bj0+e3ZhciB5LGs7dC5wdXNoKCJSQUlTRSAiKSxuLmxldmVsJiZ0LnB1c2gobi5sZXZlbC50b1VwcGVyQ2FzZSgpLCIgIiksdC5wdXNoKCgwLHUubGl0ZXJhbCkobi5mb3JtYXQpLCIgIiksISgoeT1uLmZvcm1hdEV4cHJzKT09PW51bGx8fHk9PT12b2lkIDApJiZ5Lmxlbmd0aCYmKHQucHVzaCgiLCAiKSxsKG4uZm9ybWF0RXhwcnMsTz0+cC5leHByKE8pLCExKSksISgoaz1uLnVzaW5nKT09PW51bGx8fGs9PT12b2lkIDApJiZrLmxlbmd0aCYmKHQucHVzaCgiIFVTSU5HICIpLGwobi51c2luZywoe3R5cGU6Tyx2YWx1ZTpSfSk9Pnt0LnB1c2goTy50b1VwcGVyQ2FzZSgpLCI9IikscC5leHByKFIpfSwhMSkpLHQucHVzaCgiICIpfSxkZWZhdWx0OigpPT57dC5wdXNoKCIgREVGQVVMVCAiKX0sbWVtYmVyOm49PntwLmV4cHIobi5vcGVyYW5kKSx0LnB1c2gobi5vcCksdC5wdXNoKHR5cGVvZiBuLm1lbWJlcj09Im51bWJlciI/bi5tZW1iZXIudG9TdHJpbmcoMTApOigwLHUubGl0ZXJhbCkobi5tZW1iZXIpKX0scmVmOm49PntuLnRhYmxlJiYoaChuLnRhYmxlKSx0LnB1c2goIi4iKSksdC5wdXNoKG4ubmFtZT09PSIqIj8iKiI6XyhuLm5hbWUpKX0scGFyYW1ldGVyOm49Pnt0LnB1c2gobi5uYW1lKX0scmVuYW1lQ29sdW1uOm49Pnt0LnB1c2goIiBSRU5BTUUgQ09MVU1OICIsJChuLmNvbHVtbiksIiBUTyAiLCQobi50bykpfSxyZW5hbWVDb25zdHJhaW50Om49Pnt0LnB1c2goIiBSRU5BTUUgQ09OU1RSQUlOVCAiLCQobi5jb25zdHJhaW50KSwiIFRPICIsJChuLnRvKSl9LHJlbmFtZVRhYmxlOm49Pnt0LnB1c2goIiBSRU5BTUUgVE8gIiwkKG4udG8pKX0sY3JlYXRlVmlldzpuPT57dC5wdXNoKCJDUkVBVEUgIiksbi5vclJlcGxhY2UmJnQucHVzaCgiT1IgUkVQTEFDRSAiKSxuLnRlbXAmJnQucHVzaCgiVEVNUCAiKSxuLnJlY3Vyc2l2ZSYmdC5wdXNoKCJSRUNVUlNJVkUgIiksdC5wdXNoKCJWSUVXICIpLHAudGFibGVSZWYobi5uYW1lKSxuLmNvbHVtbk5hbWVzJiZsKG4uY29sdW1uTmFtZXMsaz0+dC5wdXNoKCQoaykpLCEwKTtjb25zdCB5PW4ucGFyYW1ldGVycyYmT2JqZWN0LmVud
14HJpZXMobi5wYXJhbWV0ZXJzKTt5IT1udWxsJiZ5Lmxlbmd0aCYmKHQucHVzaCgiIFdJVEggIiksbCh5LChbayxPXSk9PnQucHVzaChrLCI9IixPKSwhMSkpLHQucHVzaCgiIEFTICIpLHAuc2VsZWN0KG4ucXVlcnkpLG4uY2hlY2tPcHRpb24mJnQucHVzaCgiIFdJVEggIixuLmNoZWNrT3B0aW9uLnRvVXBwZXJDYXNlKCksIiBDSEVDSyBPUFRJT04iKX0sY3JlYXRlTWF0ZXJpYWxpemVkVmlldzpuPT57dC5wdXNoKCJDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgIiksbi5pZk5vdEV4aXN0cyYmdC5wdXNoKCJJRiBOT1QgRVhJU1RTICIpLHAudGFibGVSZWYobi5uYW1lKSxuLmNvbHVtbk5hbWVzJiZsKG4uY29sdW1uTmFtZXMsaz0+dC5wdXNoKCQoaykpLCEwKTtjb25zdCB5PW4ucGFyYW1ldGVycyYmT2JqZWN0LmVudHJpZXMobi5wYXJhbWV0ZXJzKTt5IT1udWxsJiZ5Lmxlbmd0aCYmKHQucHVzaCgiIFdJVEggIiksbCh5LChbayxPXSk9PnQucHVzaChrLCI9IixPKSwhMSkpLG4udGFibGVzcGFjZSYmdC5wdXNoKCIgVEFCTEVTUEFDRSAiLCQobi50YWJsZXNwYWNlKSksdC5wdXNoKCIgQVMgIikscC5zZWxlY3Qobi5xdWVyeSksdHlwZW9mIG4ud2l0aERhdGE9PSJib29sZWFuIiYmdC5wdXNoKG4ud2l0aERhdGE/IiBXSVRIIERBVEEiOiIgV0lUSCBOTyBEQVRBIil9LHJlZnJlc2hNYXRlcmlhbGl6ZWRWaWV3Om49Pnt0LnB1c2goIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgIiksbi5jb25jdXJyZW50bHkmJnQucHVzaCgiQ09OQ1VSUkVOVExZICIpLHAudGFibGVSZWYobi5uYW1lKSx0eXBlb2Ygbi53aXRoRGF0YT09ImJvb2xlYW4iJiZ0LnB1c2gobi53aXRoRGF0YT8iIFdJVEggREFUQSI6IiBXSVRIIE5PIERBVEEiKX0sc2VsZWN0Om49PnAuc3VwZXIoKS5zZWxlY3Qobiksc2VsZWN0aW9uOm49PntpZih0LnB1c2goIlNFTEVDVCAiKSxuLmRpc3RpbmN0JiYodHlwZW9mIG4uZGlzdGluY3Q9PSJzdHJpbmciP3QucHVzaChuLmRpc3RpbmN0LnRvVXBwZXJDYXNlKCkpOih0LnB1c2goIiBESVNUSU5DVCBPTiAiKSxsKG4uZGlzdGluY3QseT0+cC5leHByKHkpLCEwKSksdC5wdXNoKCIgIikpLG4uY29sdW1ucyYmbChuLmNvbHVtbnMseT0+cC5zZWxlY3Rpb25Db2x1bW4oeSksITEpLHQucHVzaCgiICIpLG4uZnJvbSl7dC5wdXNoKCJGUk9NICIpO2
14NvbnN0IHk9bi5mcm9tLmxlbmd0aDtmb3IobGV0IGs9MDtrPHk7aysrKXtjb25zdCBPPW4uZnJvbVtrXTtrPjAmJiFPLmpvaW4mJnQucHVzaCgiLCIpLHAuZnJvbShPKX10LnB1c2goIiAiKX1uLndoZXJlJiYodC5wdXNoKCJXSEVSRSAiKSxwLmV4cHIobi53aGVyZSksdC5wdXNoKCIgIikpLG4uZ3JvdXBCeSYmKHQucHVzaCgiR1JPVVAgQlkgIiksbChuLmdyb3VwQnkseT0+cC5leHByKHkpLCExKSx0LnB1c2goIiAiKSxuLmhhdmluZyYmKHQucHVzaCgiIEhBVklORyAiKSxwLmV4cHIobi5oYXZpbmcpLHQucHVzaCgiICIpKSksbi5vcmRlckJ5JiYodihwLG4ub3JkZXJCeSksdC5wdXNoKCIgIikpLG4ubGltaXQmJihuLmxpbWl0Lm9mZnNldCYmKHQucHVzaCgiT0ZGU0VUICIpLHAuZXhwcihuLmxpbWl0Lm9mZnNldCkpLG4ubGltaXQubGltaXQmJih0LnB1c2goIkxJTUlUICIpLHAuZXhwcihuLmxpbWl0LmxpbWl0KSkpLG4uZm9yJiYodC5wdXNoKCJGT1IgIixuLmZvci50eXBlLnRvVXBwZXJDYXNlKCkpLG4uc2tpcCYmdC5wdXNoKCIgIixuLnNraXAudHlwZS50b1VwcGVyQ2FzZSgpKSl9LHNob3c6bj0+e3QucHVzaCgiU0hPVyAiLCQobi52YXJpYWJsZSkpfSxwcmVwYXJlOm49Pnt2YXIgeTt0LnB1c2goIlBSRVBBUkUgIiwkKG4ubmFtZSkpLCEoKHk9bi5hcmdzKT09PW51bGx8fHk9PT12b2lkIDApJiZ5Lmxlbmd0aCYmbChuLmFyZ3Msaz0+cC5kYXRhVHlwZShrKSwhMCksdC5wdXNoKCIgQVMgIikscC5zdGF0ZW1lbnQobi5zdGF0ZW1lbnQpfSxkZWFsbG9jYXRlOm49PntpZih0LnB1c2goIkRFQUxMT0NBVEUgIiksIm5hbWUiaW4gbi50YXJnZXQpe3QucHVzaChuLnRhcmdldC5uYW1lKTtyZXR1cm59dC5wdXNoKCJBTEwiKX0sYXJyYXlTZWxlY3Q6bj0+e3QucHVzaCgiYXJyYXkoIikscC5zZWxlY3Qobi5zZWxlY3QpLHQucHVzaCgiKSIpfSx1bmlvbjpuPT57dC5wdXNoKCIoIikscC5zdGF0ZW1lbnQobi5sZWZ0KSx0LnB1c2goIikgIixuLnR5cGUudG9VcHBlckNhc2UoKSwiICIpLG4ucmlnaHQudHlwZT09PSJ1bmlvbiJ8fG4ucmlnaHQudHlwZT09PSJ1bmlvbiBhbGwiP3AudW5pb24obi5yaWdodCk6KHQucHVzaCgiKCIpLHAuc3RhdGVtZW50KG4ucmlnaHQpLHQucHVzaCgiKSIpKX0sc2VsZWN0aW9uQ29sdW1uOm49PntwLmV4cHIobi5leHByKSxuLmFsaWFzJiZ0LnB1c2goIiBBUyAiLCQobi5hbGlhcykpLHQucHVzaCgiICIpfSxzZXQ6bj0+e3QucHVzaCgkKG4uY29sdW1uKSwiID0gIikscC5leHByKG4udmFsdWUpLHQucHVzaCgiICIpfSxzdGF0ZW1lbnQ6bj0+cC5zdXBlcigpLnN0YXRlbWVudChuKSx0YWJsZVJlZjpuPT57aChuKSxuLmFsaWFzJiZ0LnB1c2goIiBBUyAiLF8obi5hbGlhcykpLHQucHVzaCgiICIpfSx0ZXJuYXJ5Om49PntwLmV4cHIobi52YWx1ZSksdC5wdXNoKCIgIixuLm9wLCIgIikscC5leHByKG4ubG8pLHQucHVzaCgiIEFORCAiKSxwLmV4cHIobi5oaSksdC5wdXNoKCIgIil9LHRyYW5zYWN0aW9uOm49Pnt0LnB1c2gobi50eXBlKX0sdW5hcnk6bj0+e3N3aXRjaChuLm9wKXtjYXNlIisiOmNhc2UiLSI6QyhuKSxwLmV4cHIobi5vcGVyYW5kKTticmVhaztjYXNlIk5PVCI6dC5wdXNoKG4ub3ApLHQucHVzaCgiICIpLHAuZXhwcihuLm9wZXJhbmQpO2JyZWFrO2RlZmF1bHQ6cC5leHByKG4ub3BlcmFuZCksdC5wdXNoKCIgIiksdC5wdXNoKG4ub3ApfX0sdXBkYXRlOm49Pnt0LnB1c2goIlVQREFURSAiKSxwLnRhYmxlUmVmKG4udGFibGUpLHQucHVzaCgiIFNFVCAiKSxsKG4uc2V0cyx5PT5wLnNldCh5KSwhMSksdC5wdXNoKCIgIiksbi5mcm9tJiYodC5wdXNoKCJGUk9NICIpLHAuZnJvbShuLmZyb20pLHQucHVzaCgiICIpKSxuLndoZXJlJiYodC5wdXNoKCJXSEVSRSAiKSxwLmV4cHIobi53aGVyZSksdC5wdXNoKCIgIikpLG4ucmV0dXJuaW5nJiYodC5wdXNoKCIgUkVUVVJOSU5HICIpLGwobi5yZXR1cm5pbmcseT0+cC5zZWxlY3Rpb25Db2x1bW4oeSksITEpLHQucHVzaCgiICIpKX19KSk7by50b1NxbD17fTtjb25zdCBlPWEuQXN0RGVmYXVsdE1hcHBlci5wcm90b3R5cGU7Zm9yKGNvbnN0IHAgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpe2NvbnN0IG49ZVtwXTtwPT09ImNvbnN0cnVjdG9yInx8cD09PSJzdXBlciJ8fHR5cGVvZiBuIT0iZnVuY3Rpb24ifHwoby50b1NxbFtwXT1mdW5jdGlvbiguLi55KXt0cnl7cmV0dXJuIHFbcF0uYXBwbHkocSx5KSx0LmpvaW4oIiIpLnRyaW0oKX1maW5hbGx5e3Q9W119fSl9fSxmdW5jdGlvbihjLG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG8ubGl0ZXJhbD12b2lkIDA7ZnVuY3Rpb24gYShzKXtpZihzPT1udWxsKXJldHVybiJOVUxMIjtpZihBcnJheS5pc0FycmF5KHMpKXt2YXIgcj1zLm1hcChhKTtyZXR1cm4iKCIrci5qb2luKCIsICIpKyIpIn12YXIgdT1+cy5pbmRleE9mKCJcXCIpLGY9dT8iRSI6IiI7cmV0dXJuIHM9cy5yZXBsYWNlKC8nL2csIicnIikscz1zLnJlcGxhY2UoL1xcL2csIlxcXFwiKSxmKyInIitzKyInIn1vLmxpdGVyYWw9YX0sZnVuY3Rpb24oYyxvLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvLmxvY2F0aW9uT2Y9dm9pZCAwO2Z1bmN0aW9uIGEocyl7Y29uc3Qgcj1zLl9sb2NhdGlvbjtpZighcil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc3RhdGVtZW50IGhhcyBub3QgYmVlbiBwYXJzZWQgdXNpbmcgbG9jYXRpb24gdHJhY2tpbmcgKHdoaWNoIGhhcyBhIHNtYWxsIHBlcmZvcm1hbmNlIGhpdCkuICIpO3JldHVybiByfW8ubG9jYXRpb25PZj1hfV0pKX0pKGRlKTtmdW5jdGlvbiBiZShtLGMpe3JldHVybiBuZXcgUHJveHkobmV3IERhdGUobS5nZXRUaW1lKCktYyo2ZTQpLHtnZXQobyxpKXtpZih0eXBlb2YgaT09InN0cmluZyIpe2lmKGk9PT0iZ2V0VGltZSIpcmV0dXJuKCk9Pm8uZ2V0VGltZSgpK2MqNmU0O2lmKGkuc3RhcnRzV2l0aCgiZ2V0IikmJiFpLmluY2x1ZGVzKCJVVEMiKSlyZXR1cm4gb1tpLnJlcGxhY2UoImdldCIsImdldFVUQyIpXS5iaW5kKG8pO2lmKGkuc3RhcnRzV2l0aCgic2V0IikmJiFpLmluY2x1ZGVzKCJVVEMiKSlyZXR1cm4oLi4uYSk9Pm9baS5yZXBsYWNlKCJzZXQiLCJzZXRVVEMiKV0uY2FsbChvLC4uLmEpK2MqNmU0fXJldHVybi
14BvW2ldLmJpbmQobyl9fSl9Y29uc3QgYXQ9Wy9eXGR7NH0tKDBbMS05XXwxWzAtMl0pLSgwWzEtOV18WzEyXVswLTldfDNbMDFdKSQvLC9eXGR7NH0tKDBbMS05XXwxWzAtMl0pJC8sL15cZHs0fSQvXTtmdW5jdGlvbiBvdChtPW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSl7ZnVuY3Rpb24gYyguLi5vKXtpZihvLmxlbmd0aD4xKXtjb25zdCBpPW0qNmU0K0RhdGUuVVRDKC4uLm8pO3JldHVybiBiZShuZXcgRGF0ZShpKSxtKX1pZihvLmxlbmd0aD4wKXtjb25zdCBpPW9bMF07aWYoaSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGJlKGksbSk7aWYodHlwZW9mIGk9PSJzdHJpbmciKXtpZihhdC5maW5kKHI9PnIudGVzdChpKSkpe2NvbnN0IHI9bmV3IERhdGUoaSkuZ2V0VGltZSgpO3JldHVybiBiZShuZXcgRGF0ZShyK20qNmU0KSxtKX1pZigvKFp8W1wrXC1dWzAtMl1bMC05XSkkLy50ZXN0KGkpKXJldHVybiBiZShuZXcgRGF0ZShpKSxtKTtjb25zdCBhPW5ldyBEYXRlKGkpLHM9YS5nZXRUaW1lKCktYS5nZXRUaW1lem9uZU9mZnNldCgpKjZlNDtyZXR1cm4gYmUobmV3IERhdGUocyttKjZlNCksbSl9cmV0dXJuIGk9PW51bGw/bnVsbDpiZShuZXcgRGF0ZShpKSxtKX1yZXR1cm4gYmUobmV3IERhdGUsbSl9cmV0dXJuIGN9ZnVuY3Rpb24gbHQobSl7Y29uc3QgYz1PYmplY3Qua2V5cyhtKTtpZihjLmxlbmd0aD09PTApcmV0dXJuW107Y29uc3Qgbz1bXSxpPW1bT2JqZWN0LmtleXMobSlbMF1dLmxlbmd0aDtmb3IobGV0IGE9MDthPGk7YSsrKXtjb25zdCBzPXt9O2MuZm9yRWFjaChyPT57c1tyXT1tW3JdW2FdfSksby5wdXNoKHMpfXJldHVybiBvfWNvbnN0IF9zPXtzdW06Q2UsbWVhbjpPZSxtZWRpYW46b3Msc3RkZXY6bHMsdmFyaWFuY2U6UmUsbWF4OmlzLG1pbjpjcyxjb3VudDp0dCxkaXN0aW5jdENvdW50OnBzfTtmdW5jdGlvbiBpdChtKXtyZXR1cm4gZGUucGFyc2UobSwiZXhwciIpfWZ1bmN0aW9uIEllKG0sYyl7cmV0dXJuIG0gaW5zdGFuY2VvZiBBcnJheT9tLm1hcChjKTpjKG0pfWZ1bmN0aW9uIGN0KG0sYyxvKXtyZXR1cm4gYyBpbnN0YW5jZW9mIEFycmF5P28gaW5zdGFuY2VvZiBBcnJheT9jLm1hcCgoaSxhKT0+bShpLG9bYV0pKTpjLm1hcChpPT5tKGksbykpOm8gaW5zdGFuY2VvZiBBcnJheT9vLm1hcChpPT5tKGMsaSkpOm0oYyxvKX1jb25zdCBwdD1tPT5tIGluc3RhbmNlb2YgQXJyYXk/ISFtWzBdOiEhbTtmdW5jdGlvbiBqZShtLGMpe2NvbnN0IG89aT0+e3N3aXRjaChpLnR5cGUpe2Nhc2UicmVmIjppZihjIGluc3RhbmNlb2YgQXJyYXkpe2lmKGNbMF1baS5uYW1lXT09PXZvaWQgMCYmaS5uYW1lIT09IioiKXRocm93IG5ldyBFcnJvcihgdGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJHtpLm5hbWV9YCk7cmV0dXJuIGkubmFtZT09PSIqIj9jLm1hcChhPT5hW09iamVjdC5rZXlzKGEpWzBdXSk6Yy5tYXAoYT0+YVtpLm5hbWVdKX1lbHNle2lmKCFjW2kubmFtZV0mJmkubmFtZSE9PSIqIil0aHJvdyBuZXcgRXJyb3IoYHRoZXJlIGlzIG5vIGZpZWxkIG5hbWVkICR7aS5uYW1lfWApO3JldHVybiBpLm5hbWU9PT0iKiI/Y1tPYmplY3Qua2V5cyhjKVswXV06Y1tpLm5hbWVdfWNhc2UiaW50ZWdlciI6Y2FzZSJudW1lcmljIjpjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpyZXR1cm4gaS52YWx1ZTtjYXNlImJpbmFyeSI6e2xldCBhO3N3aXRjaC
14hpLm9wKXtjYXNlIiE9IjphPShzLHIpPT5zIT1yO2JyZWFrO2Nhc2UiJSI6YT0ocyxyKT0+cyVyO2JyZWFrO2Nhc2UiKiI6YT0ocyxyKT0+cypyO2JyZWFrO2Nhc2UiLyI6YT0ocyxyKT0+cy9yO2JyZWFrO2Nhc2UiKyI6YT0ocyxyKT0+cytyO2JyZWFrO2Nhc2UiLSI6YT0ocyxyKT0+cy1yO2JyZWFrO2Nhc2UiPSI6YT0ocyxyKT0+cz09cjticmVhaztjYXNlIj4iOmE9KHMscik9PnM+cjticmVhaztjYXNlIjwiOmE9KHMscik9PnM8cjticmVhaztjYXNlIj49IjphPShzLHIpPT5zPj1yO2JyZWFrO2Nhc2UiPD0iOmE9KHMscik9PnM8PXI7YnJlYWs7Y2FzZSJPUiI6YT0ocyxyKT0+c3x8cjticmVhaztjYXNlIkFORCI6YT0ocyxyKT0+cyYmcjticmVhaztjYXNlIn4iOmE9KHMscik9Pm5ldyBSZWdFeHAocikudGVzdChzKTticmVhaztjYXNlIn4qIjphPShzLHIpPT5uZXcgUmVnRXhwKHIsImkiKS50ZXN0KHMpO2JyZWFrO2Nhc2UiIX4iOmE9KHMscik9PiFuZXcgUmVnRXhwKHIpLnRlc3Qocyk7YnJlYWs7Y2FzZSIhfioiOmE9KHMscik9PiFuZXcgUmVnRXhwKHIsImkiKS50ZXN0KHMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnQgb3AgJHtpLm9wfSwgY2FsY3VsYXRpbmcgJHtkZS50b1NxbC5leHByKGkpfWApfXJldHVybiBjdChhLG8oaS5sZWZ0KSxvKGkucmlnaHQpKX1jYXNlInVuYXJ5Ijpzd2l0Y2goaS5vcCl7Y2FzZSIrIjpyZXR1cm4gSWUoYT0+K2EsbyhpLm9wZXJhbmQpKTtjYXNlIi0iOnJldHVybiBJZShhPT4tYSxvKGkub3BlcmFuZCkpO2Nhc2UiTk9UIjpyZXR1cm4gSWUoYT0+IWEsbyhpLm9wZXJhbmQpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0IHVuYXJ5ICR7aS5vcH0sIGNhbGN1bGF0aW5nICR7ZGUudG9TcWwuZXhwcihpKX1gKX1jYXNlImNhbGwiOntpZihpLmZ1bmN0aW9uLm5hbWUgaW4gX3MpcmV0dXJuIF9zW2kuZnVuY3Rpb24ubmFtZV0obyhpLmFyZ3NbMF0pKTt0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydCBmdW5jdGlvbiAke2kuZnVuY3Rpb24ubmFtZX0sIGNhbGN1bGF0aW5nICR7ZGUudG9TcWwuZXhwcihpKX1gKX1jYXNlImNhc2UiOmlmKGMgaW5zdGFuY2VvZiBBcnJheSlpZihjLmxlbmd0aD09PTEpe2NvbnN0IGE9aS53aGVucy5maW5kKHM9PnB0KG8ocy53aGVuKSkpO3JldHVybiBhP28oYS52YWx1ZSk6aS5lbHNlP28oaS5lbHNlKTpudWxsfWVsc2UgcmV0dXJuIGMuZmxhdE1hcChhPT5qZShpLFthXSkpO2Vsc2UgcmV0dXJuIGplKGksbHQoYykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnQgdHlwZSAke2kudHlwZX0sIGNhbGN1bGF0aW5nICR7ZGUudG9TcWwuZXhwcihpKX1gKX19O3JldHVybiBvKG0pfWZ1bmN0aW9uIG10KG0sYyl7cmV0dXJuIGplKGl0KG0pLGMpfWNvbnN0IHV0PXtzdW06Q2UsbWVhbjpPZSxtZWRpYW46b3Msc3RkZXY6bHMsdmFyaWFuY2U6UmUsbWF4OmlzLG1pbjpjcyxjb3VudDpzdCxkaXN0aW5jdENvdW50OnBzfSwkdD0iX19fIjtmdW5jdGlvbiBfdChtLGMpe3ZhciByO2NvbnN0e2dyb3VwQnk6byxtZWFzdXJlczppfT1jLGE9bmV3IE1hcCxzPW5ldyBNYXA7Zm9yKGxldCB1IG9mIG0pe2NvbnN0IGY9by5tYXAoZD0+dVtkXSkuam9pbigkdCk7cy5oYXMoZil8fHMuc2V0KGYsW10pLChyPXMuZ2V0KGYpKT09bnVsbHx8ci5wdXNoKHUpfWZvcihsZXRbdSxmXW9mIHMpe2lmKGYubGVuZ3RoPT09MCljb250aW51ZTtsZXQgZD17fTtmb3IobGV0IHQgb2YgbylkW3RdPWZbMF1bdF07Zm9yKGxldCB0IG9mIGkpe2NvbnN0ICQ9dC5hc0ZpZWxkS2V5fHxacyh0LmZpZWxkLHQuYWdnKTtpZihkWyRdPT09dm9pZCAwJiYoZFskXT0wKSx0LmFnZz09PSJleHByIil7Y29uc3QgXz1tdCh0LmZpZWxkLGYpO2lmKF8gaW5zdGFuY2VvZiBBcnJheSl0aHJvdyBuZXcgRXJyb3IoYGV4Y2VwdCBhZ2dlcmdhdGVkIHJlc3VsdCwgYnV0IGdvdCBhcnJheTsgY2FsYyAke3QuZmllbGR9YCk7ZFskXT1ffWVsc2V7Y29uc3QgXz1vdCh0Lm9mZnNldCksbD1mLm1hcChoPT5oW3QuZmllbGRdKS5tYXAoaD0+dC5mb3JtYXQhPT12b2lkIDA/XyhoKS5nZXRUaW1lKCk6aCksYj11dFt0LmFnZ10/P0NlO2RbJF09YihsKX19YS5zZXQodSxkKX1yZXR1cm4gQXJyYXkuZnJvbShhLnZhbHVlcygpKX1mdW5jdGlvbiBidChtLGMpe2NvbnN0e2ZvbGRCeTpvLG5ld0ZvbGRLZXlDb2w6aSxuZXdGb2xkVmFsdWVDb2w6YX09YyxzPVtdO2ZvcihsZXQgciBvZiBtKWZvcihsZXQgdSBvZiBvKXtjb25zdCBmPXsuLi5yfTtmW2ldPXUsZlthXT1yW3VdLGRlbGV0ZSBmW3VdLHMucHVzaChmKX1yZXR1cm4gc31mdW5jdGlvbiB5dChtLGMpe2NvbnN0e2JpbkJ5Om8sbmV3QmluQ29sOmksYmluU2l6ZTphfT1jO2xldCBzPTEvMCxyPS0xLzA7Zm9yKGxldCBmPTA7ZjxtLmxlbmd0aDtmKyspe2xldCBkPW1bZl1bb107ZD5yJiYocj1kKSxkPHMmJihzPWQpfWNvbnN0IHU9KHItcykvYTtyZXR1cm4gbS5tYXAoZj0+e2xldCBkPU1hdGguZmxvb3IoKGZbb10tcykvdSk7cmV0dXJuIGQ9PT1hJiYoZD1hLTEpLHsuLi5mLFtpXTpbZCp1K3MsKGQrMSkqdStzXX19KX1mdW5jdGlvbiBmdChtLGMpe3N3aXRjaChjLm9wKXtjYXNlImFnZ3JlZ2F0ZSI6cmV0dXJuIF90KG0sYyk7Y2FzZSJmb2xkIjpyZXR1cm4gYnQobSxjKTtjYXNlImJpbiI6cmV0dXJuIHl0KG0sYyk7Y2FzZSJyYXciOmRlZmF1bHQ6cmV0dXJuIG19fWNvbnN0IGR0PW09Pnt0cnl7Y29uc3R7ZGF0YVNvdXJjZTpjLHF1ZXJ5Om99PW0uZGF0YSxpPWZ0KGMsbyk7c2VsZi5wb3N0TWVzc2FnZShpKX1jYXRjaChjKXtjb25zb2xlLmVycm9yKGMuc3RhY2spLHNlbGYucG9zdE1lc3NhZ2UoYy5zdGFjayl9fTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGR0LCExKX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXZpZXdRdWVyeS53b3JrZXItRGtpY0t1MkguanMubWFwCg==",Iae=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),zR=typeof self<"u"&&self.Blob&&new Blob([Iae(CB)],{type:"text/javascript;charset=utf-8"});function gae(e){let t;try{if(t=zR&&(self.URL||self.webkitURL).createObjectURL(zR),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+CB,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const TB="dmFyIHc9T2JqZWN0LmRlZmluZVByb3BlcnR5O3ZhciBDPShvLGEsZyk9PmEgaW4gbz93KG8sYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pOm9bYV09Zzt2YXIgbT0obyxhLGcpPT5DKG8sdHlwZW9mIGEhPSJzeW1ib2wiP2ErIiI6YSxnKTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUscixsLGMsbil7aWYobD49ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGk9cltlW2xdXSx1PWAke3QudW5pcXVlS2V5fV9fJHtpfWA7bGV0IGg9dC5jaGlsZHJlbi5maW5kKGQ9PmQua2V5PT09aSk7aWYoIWgpe2g9e2tleTppLHZhbHVlOmksc29ydDpsPT09ZS5sZW5ndGgtMSYmbj9yW24uZmlkXT8/YF8ke2l9YDppLHVuaXF1ZUtleTp1LGZpZWxkS2V5OmVbbF0sY2hpbGRyZW46W10scGF0aDpbLi4udC5wYXRoLHtrZXk6ZVtsXSx2YWx1ZTppfV0saGVpZ2h0OmUubGVuZ3RoLWwtMSxpc0NvbGxhcHNlZDohMX0sYy5pbmNsdWRlcyh0LnVuaXF1ZUtleSkmJih0LmlzQ29sbGFwc2VkPSEwKTtjb25zdCBkPWw9PT1lLmxlbmd0aC0xJiYobj09bnVsbD92b2lkIDA6bi50eXBlKT09PSJkZXNjZW5kaW5nIjt0LmNoaWxkcmVuLnNwbGljZShhKHQuY2hpbGRyZW4saC5zb3J0LGQpLDAsaCl9byhoLGUscixsKzEsYyxuKX1mdW5jdGlvbiBhKHQsZSxyPSExKXtsZXQgbD0wLGM9dC5sZW5ndGgtMTtmb3IoO2w8PWM7KXtsZXQgbj1NYXRoLmZsb29yKChsK2MpLzIpLGk9dFtuXS5zb3J0O2lmKHR5cGVvZiBpPT0ibnVtYmVyIiYmdHlwZW9mIGU9PSJudW1iZXIiKXIhPT1pPGU/bD1uKzE6Yz1uLTE7ZWxzZXtsZXQgdT1TdHJpbmcoaSkubG9jYWxlQ29tcGFyZShTdHJpbmcoZSkpO3IhPT11PDA/bD1uKzE6Yz1uLTF9fXJldHVybi
14BsfWNvbnN0IGc9Il9fcm9vdCIsUz0iX190b3RhbCI7ZnVuY3Rpb24geSh0KXtpZih0LmNoaWxkcmVuLmxlbmd0aD4wKXt0LmNoaWxkcmVuLnVuc2hpZnQoe2tleTpTLHZhbHVlOmAke3QudmFsdWV9KHRvdGFsKWAsc29ydDoiIixmaWVsZEtleTpTLHVuaXF1ZUtleTpgJHt0LnVuaXF1ZUtleX0ke1N9YCxjaGlsZHJlbjpbXSxwYXRoOltdLGhlaWdodDp0LmNoaWxkcmVuWzBdLmhlaWdodCxpc0NvbGxhcHNlZDohMH0pO2ZvcihsZXQgZT0xO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKXkodC5jaGlsZHJlbltlXSl9fWZ1bmN0aW9uIHAodCxlLHIsbCxjLG4pe2NvbnN0IGk9e2tleTpnLHZhbHVlOiJyb290IixmaWVsZEtleToicm9vdCIsc29ydDoiIix1bmlxdWVLZXk6ZyxjaGlsZHJlbjpbXSxwYXRoOltdLGhlaWdodDp0Lmxlbmd0aCxpc0NvbGxhcHNlZDohMX07Zm9yKGxldCB1IG9mIGUpbyhpLHQsdSwwLHIsYyk7aWYobilmb3IobGV0IHUgb2YgbilvKGksdCx1LDAscix7ZmlkOiIiLHR5cGU6KGM9PW51bGw/dm9pZCAwOmMudHlwZSk/PyJhc2NlbmRpbmcifSk7cmV0dXJuIGwmJnkoaSksaX1jbGFzcyBFe2NvbnN0cnVjdG9yKGUpe20odGhpcywidHJlZSIpO20odGhpcywibm9kZVN0YWNrIixbXSk7bSh0aGlzLCJjdXJyZW50IixudWxsKTt0aGlzLnRyZWU9ZX1maXJzdCgpe2xldCBlPXRoaXMudHJlZTtmb3IodGhpcy5ub2RlU3RhY2s9W2VdO2UuY2hpbGRyZW4ubGVuZ3RoPjAmJiFlLmlzQ29sbGFwc2VkOyl0aGlzLm5vZGVTdGFjay5wdXNoKGUuY2hpbGRyZW5bMF0pLGU9ZS5jaGlsZHJlblswXTtyZXR1cm4gdGhpcy5jdXJyZW50PWUsdGhpcy5jdXJyZW50fW5leHQoKXtsZXQgZT0hMSxyPTA7Zm9yKDt0aGlzLm5vZGVTdGFjay5sZW5ndGg+MSYmKHIrKywhKHI+MTAwKSk7KXtsZXQgbD10aGlzLm5vZGVTdGFja1t0aGlzLm5vZGVTdGFjay5sZW5ndGgtMV0sYz10aGlzLm5vZGVTdGFja1t0aGlzLm5vZGVTdGFjay5sZW5ndGgtMl0sbj1jLmNoaWxkcmVuLmZpbmRJbmRleChpPT5pLmtleT09PWwua2V5KTtpZihuPT09LTEpYnJlYWs7aWYoZSlpZihsLmNoaWxkcmVuLmxlbmd0aD4wJiYhbC5pc0NvbGxhcHNlZCl7dGhpcy5ub2RlU3RhY2sucHVzaChsLmNoaWxkcmVuWzBdKTtjb250aW51ZX1lbHNlIGJyZWFrO2Vsc2V7aWYobjxjLmNoaWxkcmVuLmxlbmd0aC0xKXt0aGlzLm5vZGVTdGFjay5wb3AoKSx0aGlzLm5vZGVTdGFjay5wdXNoKGMuY2hpbGRyZW5bbisxXSksZT0hMDtjb250aW51ZX1pZihuPj1jLmNoaWxkcmVuLmxlbmd0aC0xKXt0aGlzLm5vZGVTdGFjay5wb3AoKTtjb250aW51ZX19fXJldHVybiBlP3RoaXMuY3VycmVudD10aGlzLm5vZGVTdGFja1t0aGlzLm5vZGVTdGFjay5sZW5ndGgtMV18fG51bGw6dGhpcy5jdXJyZW50PW51bGwsdGhpcy5jdXJyZW50fXByZWRpY2F0ZXMoKXtyZXR1cm4gdGhpcy5ub2RlU3RhY2suZmlsdGVyKGU9PmUua2V5IT09ZykubWFwKGU9Pih7a2V5OmUuZmllbGRLZXksdmFsdWU6ZS52YWx1ZX0pKX19ZnVuY3Rpb24gTSh0LGUscil7Y29uc3QgbD1bXSxjPW5ldyBFKHQpLG49bmV3IEUoZSk7Zm9yKGMuZmlyc3QoKTtjLmN1cnJlbnQhPT1udWxsOyl7Y29uc3QgaT1bXTtmb3Iobi5maXJzdCgpO24uY3VycmVudCE9PW51bGw7KXtjb25zdCB1PWMucHJlZGljYXRlcygpLmNvbmNhdChuLnByZWRpY2F0ZXMoKSkuZmlsdGVyKGQ9PmQua2V5IT09UyksaD1yLmZpbHRlcihkPT51LmV2ZXJ5KGY9PmRbZi5rZXldPT09Zi52YWx1ZSkpO2gubGVuZ3RoPjA/aS5wdXNoKGgucmVkdWNlKChkLGYpPT5PYmplY3Qua2V5cyhkKS5sZW5ndGg8T2JqZWN0LmtleXMoZikubGVuZ3RoP2Q6ZikpOmkucHVzaCh2b2lkIDApLG4ubmV4dCgpfWwucHVzaChpKSxjLm5leHQoKX1yZXR1cm4gbH1jb25zdCBfPXQ9PnQuY2hpbGRyZW4ubGVuZ3RoPjA/W3QsLi4uXyh0LmNoaWxkcmVuWzBdKV06W3RdO2Z1bmN0aW9uIE4odCxlLHIsbCxjLG4saSl7bGV0IHUsaDtpZigoaT09bnVsbD92b2lkIDA6aS5tb2RlKT09PSJyb3ciKWlmKGg9cChlLm1hcChmPT5mLmZpZCkscixjLG4pLGUubGVuZ3RoPjApe2NvbnN0IGY9ZS5tYXAocz0+cy5maWQpLGI9XyhoLmNoaWxkcmVuWzBdKS5tYXAocz0+cy52YWx1ZSksaz1bXSx2PVtdO3IuZm9yRWFjaChzPT5mLmV2ZXJ5KChxLCQpPT5zW3FdPT09YlskXSk/ay5wdXNoKHMpOnYucHVzaChzKSksdT1wKHQubWFwKHM9PnMuZmlkKSxrLGMsbixpLHYpfWVsc2UgdT1wKHQubWFwKGY9PmYuZmlkKSxyLGMsbixpKTtlbHNlIGlmKHU9cCh0Lm1hcChmPT5mLmZpZCkscixjLG4pLGkmJnQubGVuZ3RoPjApe2NvbnN0IGY9dC5tYXAocz0+cy5maWQpLGI9Xyh1LmNoaWxkcmVuWzBdKS5tYXAocz0+cy52YWx1ZSksaz1bXSx2PVtdO3IuZm9yRWFjaChzPT5mLmV2ZXJ5KChxLCQpPT5zW3FdPT09YlskXSk/ay5wdXNoKHMpOnYucHVzaChzKSksaD1wKGUubWFwKHM9PnMuZmlkKSxrLGMsbixpLHYpfWVsc2UgaD1wKGUubWFwKGY9PmYuZmlkKSxyLGMsbixpKTtjb25zdCBkPU0odSxoLFsuLi5yLC4uLmxdKTtyZXR1cm57bHQ6dSx0dDpoLG1ldHJpYzpkfX1jb25zdCBPPXQ9Pntjb25zdHtkaW1zSW5Sb3c6ZSxkaW1zSW5Db2x1bW46cixhbGxEYXRhOmwsYWdnRGF0YTpjLGNvbGxhcHNlZEtleUxpc3Q6bixzaG93VGFibGVTdW1tYXJ5Omksc29ydDp1fT10LmRhdGE7dHJ5e2NvbnN0IGg9TihlLHIsbCxjLG4saSx1KTtzZWxmLnBvc3RNZXNzYWdlKGgpfWNhdGNoKGgpe3NlbGYucG9zdE1lc3NhZ2Uoe2Vycm9yOmgubWVzc2FnZX0pfX07c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixPLCExKX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1aWxkTWV0cmljVGFibGUud29ya2VyLURNNk5TWXk5LmpzLm1hcAo=",vae=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),wR=typeof self<"u"&&self.Blob&&new Blob([vae(TB)],{type:"text/javascript;charset=utf-8"});function zae(e){let t;try{if(t=wR&&(self.URL||self.webkitURL).createObjectURL(wR),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+TB,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const MB="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFAoaSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gUD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sUChpKX1mdW5jdGlvbiBrKGksdCl7aWYoIShpIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gQmUoaSx0KXtpZihQKGkpIT0ib2JqZWN0Inx8IWkpcmV0dXJuIGk7dmFyIG49aVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChpLHQpO2lmKFAocikhPSJvYmplY3QiKXJldHVybi
14ByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShpKX1mdW5jdGlvbiBnZShpKXt2YXIgdD1CZShpLCJzdHJpbmciKTtyZXR1cm4gUCh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIHBlKGksdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxnZShyLmtleSkscil9fWZ1bmN0aW9uIFIoaSx0LG4pe3JldHVybiB0JiZwZShpLnByb3RvdHlwZSx0KSxuJiZwZShpLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGl9ZnVuY3Rpb24gRihpKXtpZihpPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGl9ZnVuY3Rpb24gaWUoaSx0KXtyZXR1cm4gaWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obixyKXtyZXR1cm4gbi5fX3Byb3RvX189cixufSxpZShpLHQpfWZ1bmN0aW9uIFEoaSx0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmdCE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6aSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaWUoaSx0KX1mdW5jdGlvbiBCKGksdCl7aWYodCYmKFAodCk9PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpcmV0dXJuIHQ7aWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBGKGkpfWZ1bmN0aW9uIGooaSl7cmV0dXJuIGo9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGooaSl9ZnVuY3Rpb24gXyhpLHQsbil7cmV0dXJuKHQ9Z2UodCkpaW4gaT9PYmplY3QuZGVmaW5lUHJvcGVydHkoaSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6aVt0XT1uLGl9ZnVuY3Rpb24gTWUoaSl7aWYoQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gaX1mdW5jdGlvbiBIZShpKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmaVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxpWyJAQGl0ZXJhdG9yIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oaSl9ZnVuY3Rpb24gZGUoaSx0KXsodD09bnVsbHx8dD5pLmxlbmd0aCkmJih0PWkubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1pW25dO3JldHVybiByfWZ1bmN0aW9uIEplKGksdCl7aWYoaSl7aWYodHlwZW9mIGk9PSJzdHJpbmciKXJldHVybiBkZShpLHQpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwoaSkuc2xpY2UoOCwtMSk7cmV0dXJuIG49PT0iT2JqZWN0IiYmaS5jb25zdHJ1Y3RvciYmKG49aS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0Ij9BcnJheS5mcm9tKGkpOm49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/ZGUoaSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFdlKGkpe3JldHVybiBNZShpKXx8SGUoaSl8fEplKGkpfHx6ZSgpfWZ1bmN0aW9uIGhlKGksdCl7dmFyIG49T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gdmUoaSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/aGUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe18oaSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6aGUoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBpfXZhciBZZT17dHlwZToibG9nZ2VyIixsb2c6ZnVuY3Rpb24odCl7dGhpcy5vdXRwdXQoImxvZyIsdCl9LHdhcm46ZnVuY3Rpb24odCl7dGhpcy5vdXRwdXQoIndhcm4iLHQpfSxlcnJvcjpmdW5jdGlvbih0KXt0aGlzLm91dHB1dCgiZXJyb3IiLHQpfSxvdXRwdXQ6ZnVuY3Rpb24odCxuKXtjb25zb2xlJiZjb25zb2xlW3RdJiZjb25zb2xlW3RdLmFwcGx5KGNvbnNvbGUsbil9fSxHZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGkodCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O2sodGhpcyxpKSx0aGlzLmluaXQodCxuKX1yZXR1cm4gUihpLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307dGhpcy5wcmVmaXg9ci5wcmVmaXh8fCJpMThuZXh0OiIsdGhpcy5sb2dnZXI9bnx8WWUsdGhpcy5vcHRpb25zPXIsdGhpcy5kZWJ1Zz1yLmRlYnVnfX0se2tleToic2V0RGVidWciLHZhbHVlOmZ1bmN0aW9uKG4pe3RoaXMuZGVidWc9bn19LHtrZXk6ImxvZyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxlPTA7ZTxuO2UrKylyW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHIsImxvZyIsIiIsITApfX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxlPTA7ZTxuO2UrKylyW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHIsIndhcm4iLCIiLCEwKX19LHtrZXk6ImVycm9yIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGU9MDtlPG47ZSsrKXJbZV09YXJndW1lbnRzW2VdO3JldHVybiB0aGlzLmZvcndhcmQociwiZXJyb3IiLCIiKX19LHtrZXk6ImRlcHJlY2F0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxlPTA7ZTxuO2UrKylyW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdGhpcy5mb3J3YXJkKHIsIndhcm4iLCJXQVJOSU5HIERFUFJFQ0FURUQ6ICIsITApfX0se2tleToiZm9yd2FyZCIsdmFsdWU6ZnVuY3Rpb24obixyLGUsYSl7cmV0dXJuIGEmJiF0aGlzLmRlYnVnP251bGw6KHR5cGVvZiBuWzBdPT0ic3RyaW5nIiYmKG5bMF09IiIuY29uY2F0KGUpLmNvbmNhdCh0aGlzLnByZWZpeCwiICIpLmNvbmNhdChuWzBdKSksdGhpcy5sb2dnZXJbcl0obikpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gbmV3IGkodGhpcy5sb2dnZXIsdmUodmUoe30se3ByZWZpeDoiIi5jb25jYXQodGhpcy5wcmVmaXgsIjoiKS5jb25jYXQobiwiOiIpfSksdGhpcy5vcHRpb25zKSl9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24obil7cmV0dXJuIG49bnx8dGhpcy5vcHRpb25zLG4ucHJlZml4PW4ucHJlZml4fHx0aGlzLnByZWZpeCxuZXcgaSh0aGlzLmxvZ2dlcixuKX19XSksaX0oKSxOPW5ldyBHZSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSgpe2sodGhpcyxpKSx0aGlzLm9ic2VydmVycz17fX1yZXR1cm4gUihpLFt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24obixyKXt2YXIgZT10aGlzO3JldHVybiBuLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXtlLm9ic2VydmVyc1thXT1lLm9ic2VydmVyc1thXXx8W10sZS5vYnNlcnZlcnNbYV0ucHVzaChyKX0pLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKG4scil7aWYodGhpcy5vYnNlcnZlcnNbbl0pe2lmKCFyKXtkZWxldGUgdGhpcy5vYnNlcnZlcnNbbl07cmV0dXJufXRoaXMub2JzZXJ2ZXJzW25dPXRoaXMub2JzZXJ2ZXJzW25dLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXJ9KX19fSx7a2V5OiJlbWl0Iix2YWx1ZTpmdW5jdGlvbihuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheShyPjE/ci0xOjApLGE9MTthPHI7YSsrKWVbYS0xXT1hcmd1bWVudHNbYV07aWYodGhpcy5vYnNlcnZlcnNbbl0pe3ZhciBvPVtdLmNvbmNhdCh0aGlzLm9ic2VydmVyc1tuXSk7by5mb3JFYWNoKGZ1bmN0aW9uKHUpe3UuYXBwbHkodm9pZCAwLGUpfSl9aWYodGhpcy5vYnNlcnZlcnNbIioiXSl7dmFyIHM9W10uY29uY2F0KHRoaXMub2JzZXJ2ZXJzWyIqIl0pO3MuZm9yRWFjaChmdW5jdGlvbih1KXt1LmFwcGx5KHUsW25dLmNvbmNhdChlKSl9KX19fV0pLGl9KCk7ZnVuY3Rpb24gTSgpe3ZhciBpLHQsbj1uZXcgUHJvbWlzZS
14hmdW5jdGlvbihyLGUpe2k9cix0PWV9KTtyZXR1cm4gbi5yZXNvbHZlPWksbi5yZWplY3Q9dCxufWZ1bmN0aW9uIG1lKGkpe3JldHVybiBpPT1udWxsPyIiOiIiK2l9ZnVuY3Rpb24gUWUoaSx0LG4pe2kuZm9yRWFjaChmdW5jdGlvbihyKXt0W3JdJiYobltyXT10W3JdKX0pfWZ1bmN0aW9uIG9lKGksdCxuKXtmdW5jdGlvbiByKHMpe3JldHVybiBzJiZzLmluZGV4T2YoIiMjIyIpPi0xP3MucmVwbGFjZSgvIyMjL2csIi4iKTpzfWZ1bmN0aW9uIGUoKXtyZXR1cm4haXx8dHlwZW9mIGk9PSJzdHJpbmcifWZvcih2YXIgYT10eXBlb2YgdCE9InN0cmluZyI/W10uY29uY2F0KHQpOnQuc3BsaXQoIi4iKTthLmxlbmd0aD4xOyl7aWYoZSgpKXJldHVybnt9O3ZhciBvPXIoYS5zaGlmdCgpKTshaVtvXSYmbiYmKGlbb109bmV3IG4pLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLG8pP2k9aVtvXTppPXt9fXJldHVybiBlKCk/e306e29iajppLGs6cihhLnNoaWZ0KCkpfX1mdW5jdGlvbiB5ZShpLHQsbil7dmFyIHI9b2UoaSx0LE9iamVjdCksZT1yLm9iaixhPXIuaztlW2FdPW59ZnVuY3Rpb24gWmUoaSx0LG4scil7dmFyIGU9b2UoaSx0LE9iamVjdCksYT1lLm9iaixvPWUuazthW29dPWFbb118fFtdLGFbb10ucHVzaChuKX1mdW5jdGlvbiBaKGksdCl7dmFyIG49b2UoaSx0KSxyPW4ub2JqLGU9bi5rO2lmKHIpcmV0dXJuIHJbZV19ZnVuY3Rpb24gYmUoaSx0LG4pe3ZhciByPVooaSxuKTtyZXR1cm4gciE9PXZvaWQgMD9yOloodCxuKX1mdW5jdGlvbiBPZShpLHQsbil7Zm9yKHZhciByIGluIHQpciE9PSJfX3Byb3RvX18iJiZyIT09ImNvbnN0cnVjdG9yIiYmKHIgaW4gaT90eXBlb2YgaVtyXT09InN0cmluZyJ8fGlbcl1pbnN0YW5jZW9mIFN0cmluZ3x8dHlwZW9mIHRbcl09PSJzdHJpbmcifHx0W3JdaW5zdGFuY2VvZiBTdHJpbmc/biYmKGlbcl09dFtyXSk6T2UoaVtyXSx0W3JdLG4pOmlbcl09dFtyXSk7cmV0dXJuIGl9ZnVuY3Rpb24gQShpKXtyZXR1cm4gaS5yZXBsYWNlKC9bXC1cW1xdXC9ce1x9XChcKVwqXCtcP1wuXFxcXlwkXHxdL2csIlxcJCYiKX12YXIgcWU9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyIsIi8iOiImI3gyRjsifTtmdW5jdGlvbiBYZShpKXtyZXR1cm4gdHlwZW9mIGk9PSJzdHJpbmciP2kucmVwbGFjZSgvWyY8PiInXC9dL2csZnVuY3Rpb24odCl7cmV0dXJuIHFlW3RdfSk6aX12YXIgcT10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lm5hdmlnYXRvciYmdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50RGF0YT4idSImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIik+LTEsZXQ9WyIgIiwiLCIsIj8iLCIhIiwiOyJdO2Z1bmN0aW9uIHR0KGksdCxuKXt0PXR8fCIiLG49bnx8IiI7dmFyIHI9ZXQuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiB0LmluZGV4T2Yocyk8MCYmbi5pbmRleE9mKHMpPDB9KTtpZihyLmxlbmd0aD09PTApcmV0dXJuITA7dmFyIGU9bmV3IFJlZ0V4cCgiKCIuY29uY2F0KHIubWFwKGZ1bmN0aW9uKHMpe3JldHVybiBzPT09Ij8iPyJcXD8iOnN9KS5qb2luKCJ8IiksIikiKSksYT0hZS50ZXN0KGkpO2lmKCFhKXt2YXIgbz1pLmluZGV4T2Yobik7bz4wJiYhZS50ZXN0KGkuc3Vic3RyaW5nKDAsbykpJiYoYT0hMCl9cmV0dXJuIGF9ZnVuY3Rpb24gU2UoaSx0KXt2YXIgbj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYKGkpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP1NlKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtfKGkscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlNlKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gaX1mdW5jdGlvbiBydChpKXt2YXIgdD1udCgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPWooaSksZTtpZih0KXt2YXIgYT1qKHRoaXMpLmNvbnN0cnVjdG9yO2U9UmVmbGVjdC5jb25zdHJ1Y3Qocixhcmd1bWVudHMsYSl9ZWxzZSBlPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBCKHRoaXMsZSl9fWZ1bmN0aW9uIG50KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGksdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOiIuIjtpZihpKXtpZihpW3RdKXJldHVybiBpW3RdO2Zvcih2YXIgcj10LnNwbGl0KG4pLGU9aSxhPTA7YTxyLmxlbmd0aDsrK2Epe2lmKCFlfHx0eXBlb2YgZVtyW2FdXT09InN0cmluZyImJmErMTxyLmxlbmd0aClyZXR1cm47aWYoZVtyW2FdXT09PXZvaWQgMCl7Zm9yKHZhciBvPTIscz1yLnNsaWNlKGEsYStvKS5qb2luKG4pLHU9ZVtzXTt1PT09dm9pZCAwJiZyLmxlbmd0aD5hK287KW8rKyxzPXIuc2xpY2UoYSxhK28pLmpvaW4obiksdT1lW3NdO2lmKHU9PT12b2lkIDApcmV0dXJuO2lmKHU9PT1udWxsKXJldHVybi
14BudWxsO2lmKHQuZW5kc1dpdGgocykpe2lmKHR5cGVvZiB1PT0ic3RyaW5nIilyZXR1cm4gdTtpZihzJiZ0eXBlb2YgdVtzXT09InN0cmluZyIpcmV0dXJuIHVbc119dmFyIGw9ci5zbGljZShhK28pLmpvaW4obik7cmV0dXJuIGw/d2UodSxsLG4pOnZvaWQgMH1lPWVbclthXV19cmV0dXJuIGV9fXZhciBhdD1mdW5jdGlvbihpKXtRKG4saSk7dmFyIHQ9cnQobik7ZnVuY3Rpb24gbihyKXt2YXIgZSxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7bnM6WyJ0cmFuc2xhdGlvbiJdLGRlZmF1bHROUzoidHJhbnNsYXRpb24ifTtyZXR1cm4gayh0aGlzLG4pLGU9dC5jYWxsKHRoaXMpLHEmJkkuY2FsbChGKGUpKSxlLmRhdGE9cnx8e30sZS5vcHRpb25zPWEsZS5vcHRpb25zLmtleVNlcGFyYXRvcj09PXZvaWQgMCYmKGUub3B0aW9ucy5rZXlTZXBhcmF0b3I9Ii4iKSxlLm9wdGlvbnMuaWdub3JlSlNPTlN0cnVjdHVyZT09PXZvaWQgMCYmKGUub3B0aW9ucy5pZ25vcmVKU09OU3RydWN0dXJlPSEwKSxlfXJldHVybiBSKG4sW3trZXk6ImFkZE5hbWVzcGFjZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy5ucy5pbmRleE9mKGUpPDAmJnRoaXMub3B0aW9ucy5ucy5wdXNoKGUpfX0se2tleToicmVtb3ZlTmFtZXNwYWNlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcy5vcHRpb25zLm5zLmluZGV4T2YoZSk7YT4tMSYmdGhpcy5vcHRpb25zLm5zLnNwbGljZShhLDEpfX0se2tleToiZ2V0UmVzb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e30sdT1zLmtleVNlcGFyYXRvciE9PXZvaWQgMD9zLmtleVNlcGFyYXRvcjp0aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yLGw9cy5pZ25vcmVKU09OU3RydWN0dXJlIT09dm9pZCAwP3MuaWdub3JlSlNPTlN0cnVjdHVyZTp0aGlzLm9wdGlvbnMuaWdub3JlSlNPTlN0cnVjdHVyZSxjPVtlLGFdO28mJnR5cGVvZiBvIT0ic3RyaW5nIiYmKGM9Yy5jb25jYXQobykpLG8mJnR5cGVvZiBvPT0ic3RyaW5nIiYmKGM9Yy5jb25jYXQodT9vLnNwbGl0KHUpOm8pKSxlLmluZGV4T2YoIi4iKT4tMSYmKGM9ZS5zcGxpdCgiLiIpKTt2YXIgZj1aKHRoaXMuZGF0YSxjKTtyZXR1cm4gZnx8IWx8fHR5cGVvZiBvIT0ic3RyaW5nIj9mOndlKHRoaXMuZGF0YSYmdGhpcy5kYXRhW2VdJiZ0aGlzLmRhdGFbZV1bYV0sbyx1KX19LHtrZXk6ImFkZFJlc291cmNlIix2YWx1ZTpmdW5jdGlvbihlLGEsbyxzKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06e3NpbGVudDohMX0sbD10aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yO2w9PT12b2lkIDAmJihsPSIuIik7dmFyIGM9W2UsYV07byYmKGM9Yy5jb25jYXQobD9vLnNwbGl0KGwpOm8pKSxlLmluZGV4T2YoIi4iKT4tMSYmKGM9ZS5zcGxpdCgiLiIpLHM9YSxhPWNbMV0pLHRoaXMuYWRkTmFtZXNwYWNlcyhhKSx5ZSh0aGlzLmRhdGEsYyxzKSx1LnNpbGVudHx8dGhpcy5lbWl0KCJhZGRlZCIsZSxhLG8scyl9fSx7a2V5OiJhZGRSZXNvdXJjZXMiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e3NpbGVudDohMX07Zm9yKHZhciB1IGluIG8pKHR5cGVvZiBvW3VdPT0ic3RyaW5nInx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShvW3VdKT09PSJbb2JqZWN0IEFycmF5XSIpJiZ0aGlzLmFkZFJlc291cmNlKGUsYSx1LG9bdV0se3NpbGVudDohMH0pO3Muc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixlLGEsbyl9fSx7a2V5OiJhZGRSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8scyx1KXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06e3NpbGVudDohMX0sYz1bZSxhXTtlLmluZGV4T2YoIi4iKT4tMSYmKGM9ZS5zcGxpdCgiLiIpLHM9byxvPWEsYT1jWzFdKSx0aGlzLmFkZE5hbWVzcGFjZXMoYSk7dmFyIGY9Wih0aGlzLmRhdGEsYyl8fHt9O3M/T2UoZixvLHUpOmY9WChYKHt9LGYpLG8pLHllKHRoaXMuZGF0YSxjLGYpLGwuc2lsZW50fHx0aGlzLmVtaXQoImFkZGVkIixlLGEsbyl9fSx7a2V5OiJyZW1vdmVSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oZSxhKXt0aGlzLmhhc1Jlc291cmNlQnVuZGxlKGUsYSkmJmRlbGV0ZSB0aGlzLmRhdGFbZV1bYV0sdGhpcy5yZW1vdmVOYW1lc3BhY2VzKGEpLHRoaXMuZW1pdCgicmVtb3ZlZCIsZSxhKX19LHtrZXk6Imhhc1Jlc291cmNlQnVuZGxlIix2YWx1ZTpmdW5jdGlvbihlLGEpe3JldHVybiB0aGlzLmdldFJlc291cmNlKGUsYSkhPT12b2lkIDB9fSx7a2V5OiJnZXRSZXNvdXJjZUJ1bmRsZSIsdmFsdWU6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gYXx8KGE9dGhpcy5vcHRpb25zLmRlZmF1bHROUyksdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEk9PT0idjEiP1goWCh7fSx7fSksdGhpcy5nZXRSZXNvdXJjZShlLGEpKTp0aGlzLmdldFJlc291cmNlKGUsYSl9fSx7a2V5OiJnZXREYXRhQnlMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGF0YVtlXX19LHtrZXk6Imhhc0xhbmd1YWdlU29tZVRyYW5zbGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcy5nZXREYXRhQnlMYW5ndWFnZShlKSxvPWEmJk9iamVjdC5rZXlzKGEpfHxbXTtyZXR1cm4hIW8uZmluZChmdW5jdGlvbihzKXtyZXR1cm4gYVtzXSYmT2JqZWN0LmtleXMoYVtzXSkubGVuZ3RoPjB9KX19LHtrZXk6InRvSlNPTiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX1dKSxufShJKSx4ZT17cHJvY2Vzc29yczp7fSxhZGRQb3N0UHJvY2Vzc29yOmZ1bmN0aW9uKHQpe3RoaXMucHJvY2Vzc29yc1t0Lm5hbWVdPXR9LGhhbmRsZTpmdW5jdGlvbih0LG4scixlLGEpe3ZhciBvPXRoaXM7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihzKXtvLnByb2Nlc3NvcnNbc10mJihuPW8ucHJvY2Vzc29yc1tzXS5wcm9jZXNzKG4scixlLGEpKX0pLG59fTtmdW5jdGlvbiBQZShpLHQpe3ZhciBuPU9
14iamVjdC5rZXlzKGkpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFMoaSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/UGUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe18oaSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6UGUoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBpfWZ1bmN0aW9uIGl0KGkpe3ZhciB0PW90KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9aihpKSxlO2lmKHQpe3ZhciBhPWoodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxhKX1lbHNlIGU9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEIodGhpcyxlKX19ZnVuY3Rpb24gb3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PSJmdW5jdGlvbiIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19dmFyIExlPXt9LGtlPWZ1bmN0aW9uKGkpe1EobixpKTt2YXIgdD1pdChuKTtmdW5jdGlvbiBuKHIpe3ZhciBlLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O3JldHVybiBrKHRoaXMsbiksZT10LmNhbGwodGhpcykscSYmSS5jYWxsKEYoZSkpLFFlKFsicmVzb3VyY2VTdG9yZSIsImxhbmd1YWdlVXRpbHMiLCJwbHVyYWxSZXNvbHZlciIsImludGVycG9sYXRvciIsImJhY2tlbmRDb25uZWN0b3IiLCJpMThuRm9ybWF0IiwidXRpbHMiXSxyLEYoZSkpLGUub3B0aW9ucz1hLGUub3B0aW9ucy5rZXlTZXBhcmF0b3I9PT12b2lkIDAmJihlLm9wdGlvbnMua2V5U2VwYXJhdG9yPSIuIiksZS5sb2dnZXI9Ti5jcmVhdGUoInRyYW5zbGF0b3IiKSxlfXJldHVybiBSKG4sW3trZXk6ImNoYW5nZUxhbmd1YWdlIix2YWx1ZTpmdW5jdGlvbihlKXtlJiYodGhpcy5sYW5ndWFnZT1lKX19LHtrZXk6ImV4aXN0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntpbnRlcnBvbGF0aW9uOnt9fTtpZihlPT1udWxsKXJldHVybiExO3ZhciBvPXRoaXMucmVzb2x2ZShlLGEpO3JldHVybiBvJiZvLnJlcyE9PXZvaWQgMH19LHtrZXk6ImV4dHJhY3RGcm9tS2V5Iix2YWx1ZTpmdW5jdGlvbihlLGEpe3ZhciBvPWEubnNTZXBhcmF0b3IhPT12b2lkIDA/YS5uc1NlcGFyYXRvcjp0aGlzLm9wdGlvbnMubnNTZXBhcmF0b3I7bz09PXZvaWQgMCYmKG89IjoiKTt2YXIgcz1hLmtleVNlcGFyYXRvciE9PXZvaWQgMD9hLmtleVNlcGFyYXRvcjp0aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yLHU9YS5uc3x8dGhpcy5vcHRpb25zLmRlZmF1bHROU3x8W10sbD1vJiZlLmluZGV4T2Yobyk+LTEsYz0hdGhpcy5vcHRpb25zLnVzZXJEZWZpbmVkS2V5U2VwYXJhdG9yJiYhYS5rZXlTZXBhcmF0b3ImJiF0aGlzLm9wdGlvbnMudXNlckRlZmluZWROc1NlcGFyYXRvciYmIWEubnNTZXBhcmF0b3ImJiF0dChlLG8scyk7aWYobCYmIWMpe3ZhciBmPWUubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCk7aWYoZiYmZi5sZW5ndGg+MClyZXR1cm57a2V5OmUsbmFtZXNwYWNlczp1fTt2YXIgZz1lLnNwbGl0KG8pOyhvIT09c3x8bz09PXMmJnRoaXMub3B0aW9ucy5ucy5pbmRleE9mKGdbMF0pPi0xKSYmKHU9Zy5zaGlmdCgpKSxlPWcuam9pbihzKX1yZXR1cm4gdHlwZW9mIHU9PSJzdHJpbmciJiYodT1bdV0pLHtrZXk6ZSxuYW1lc3BhY2VzOnV9fX0se2tleToidHJhbnNsYXRlIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9dGhpcztpZihQKGEpIT09Im9iamVjdCImJnRoaXMub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlciYmKGE9dGhpcy5vcHRpb25zLm92ZXJsb2FkVHJhbnNsYXRpb25PcHRpb25IYW5kbGVyKGFyZ3VtZW50cykpLGF8fChhPXt9KSxlPT1udWxsKXJldHVybiIiO0FycmF5LmlzQXJyYXkoZSl8fChlPVtTdHJpbmcoZSldKTt2YXIgdT1hLnJldHVybkRldGFpbHMhPT12b2lkIDA/YS5yZXR1cm5EZXRhaWxzOnRoaXMub3B0aW9ucy5yZXR1cm5EZXRhaWxzLGw9YS5rZXlTZXBhcmF0b3IhPT12b2lkIDA/YS5rZXlTZXBhcmF0b3I6dGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcixjPXRoaXMuZXh0cmFjdEZyb21LZXkoZVtlLmxlbmd0aC0xXSxhKSxmPWMua2V5LGc9Yy5uYW1lc3BhY2VzLHA9Z1tnLmxlbmd0aC0xXSxtPWEubG5nfHx0aGlzLmxhbmd1YWdlLHk9YS5hcHBlbmROYW1lc3BhY2VUb0NJTW9kZXx8dGhpcy5vcHRpb25zLmFwcGVuZE5hbWVzcGFjZVRvQ0lNb2RlO2lmKG0mJm0udG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXtpZih5KXt2YXIgdj1hLm5zU2VwYXJhdG9yfHx0aGlzLm9wdGlvbnMubnNTZXBhcmF0b3I7cmV0dXJuIHU/KGQucmVzPSIiLmNvbmNhdChwKS5jb25jYXQodikuY29uY2F0KGYpLGQpOiIiLmNvbmNhdChwKS5jb25jYXQodikuY29uY2F0KGYpfXJldHVybiB1PyhkLnJlcz1mLGQpOmZ9dmFyIGQ9dGhpcy5yZXNvbHZlKGUsYSksaD1kJiZkLnJlcyxPPWQmJmQudXNlZEtleXx8ZixiPWQmJmQuZXhhY3RVc2VkS2V5fHxmLHg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShoKSxFP
14VsiW29iamVjdCBOdW1iZXJdIiwiW29iamVjdCBGdW5jdGlvbl0iLCJbb2JqZWN0IFJlZ0V4cF0iXSxUPWEuam9pbkFycmF5cyE9PXZvaWQgMD9hLmpvaW5BcnJheXM6dGhpcy5vcHRpb25zLmpvaW5BcnJheXMsSD0hdGhpcy5pMThuRm9ybWF0fHx0aGlzLmkxOG5Gb3JtYXQuaGFuZGxlQXNPYmplY3QsSj10eXBlb2YgaCE9InN0cmluZyImJnR5cGVvZiBoIT0iYm9vbGVhbiImJnR5cGVvZiBoIT0ibnVtYmVyIjtpZihIJiZoJiZKJiZFLmluZGV4T2YoeCk8MCYmISh0eXBlb2YgVD09InN0cmluZyImJng9PT0iW29iamVjdCBBcnJheV0iKSl7aWYoIWEucmV0dXJuT2JqZWN0cyYmIXRoaXMub3B0aW9ucy5yZXR1cm5PYmplY3RzKXt0aGlzLm9wdGlvbnMucmV0dXJuZWRPYmplY3RIYW5kbGVyfHx0aGlzLmxvZ2dlci53YXJuKCJhY2Nlc3NpbmcgYW4gb2JqZWN0IC0gYnV0IHJldHVybk9iamVjdHMgb3B0aW9ucyBpcyBub3QgZW5hYmxlZCEiKTt2YXIgVT10aGlzLm9wdGlvbnMucmV0dXJuZWRPYmplY3RIYW5kbGVyP3RoaXMub3B0aW9ucy5yZXR1cm5lZE9iamVjdEhhbmRsZXIoTyxoLFMoUyh7fSxhKSx7fSx7bnM6Z30pKToia2V5ICciLmNvbmNhdChmLCIgKCIpLmNvbmNhdCh0aGlzLmxhbmd1YWdlLCIpJyByZXR1cm5lZCBhbiBvYmplY3QgaW5zdGVhZCBvZiBzdHJpbmcuIik7cmV0dXJuIHU/KGQucmVzPVUsZCk6VX1pZihsKXt2YXIgRGU9eD09PSJbb2JqZWN0IEFycmF5XSIscmU9RGU/W106e30sTnQ9RGU/YjpPO2Zvcih2YXIgViBpbiBoKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLFYpKXt2YXIgVGU9IiIuY29uY2F0KE50KS5jb25jYXQobCkuY29uY2F0KFYpO3JlW1ZdPXRoaXMudHJhbnNsYXRlKFRlLFMoUyh7fSxhKSx7am9pbkFycmF5czohMSxuczpnfSkpLHJlW1ZdPT09VGUmJihyZVtWXT1oW1ZdKX1oPXJlfX1lbHNlIGlmKEgmJnR5cGVvZiBUPT0ic3RyaW5nIiYmeD09PSJbb2JqZWN0IEFycmF5XSIpaD1oLmpvaW4oVCksaCYmKGg9dGhpcy5leHRlbmRUcmFuc2xhdGlvbihoLGUsYSxvKSk7ZWxzZXt2YXIgbmU9ITEsej0hMSxBZT1hLmNvdW50IT09dm9pZCAwJiZ0eXBlb2YgYS5jb3VudCE9InN0cmluZyIsdWU9bi5oYXNEZWZhdWx0VmFsdWUoYSksQ3Q9QWU/dGhpcy5wbHVyYWxSZXNvbHZlci5nZXRTdWZmaXgobSxhLmNvdW50LGEpOiIiLFc9YVsiZGVmYXVsdFZhbHVlIi5jb25jYXQoQ3QpXXx8YS5kZWZhdWx0VmFsdWU7IXRoaXMuaXNWYWxpZExvb2t1cChoKSYmdWUmJihuZT0hMCxoPVcpLHRoaXMuaXNWYWxpZExvb2t1cChoKXx8KHo9ITAsaD1mKTt2YXIgRXQ9YS5taXNzaW5nS2V5Tm9WYWx1ZUZhbGxiYWNrVG9LZXl8fHRoaXMub3B0aW9ucy5taXNzaW5nS2V5Tm9WYWx1ZUZhbGxiYWNrVG9LZXksRnQ9RXQmJno/dm9pZCAwOmgsWT11ZSYmVyE9PWgmJnRoaXMub3B0aW9ucy51cGRhdGVNaXNzaW5nO2lmKHp8fG5lfHxZKXtpZih0aGlzLmxvZ2dlci5sb2coWT8idXBkYXRlS2V5IjoibWlzc2luZ0tleSIsbSxwLGYsWT9XOmgpLGwpe3ZhciBLZT10aGlzLnJlc29sdmUoZixTKFMoe30sYSkse30se2tleVNlcGFyYXRvcjohMX0pKTtLZSYmS2UucmVzJiZ0aGlzLmxvZ2dlci53YXJuKCJTZWVtcyB0aGUgbG9hZGVkIHRyYW5zbGF0aW9ucyB3ZXJlIGluIGZsYXQgSlNPTiBmb3JtYXQgaW5zdGVhZCBvZiBuZXN0ZWQuIEVpdGhlciBzZXQga2V5U2VwYXJhdG9yOiBmYWxzZSBvbiBpbml0IG9yIG1ha2Ugc3VyZSB5b3VyIHRyYW5zbGF0aW9ucyBhcmUgcHVibGlzaGVkIGluIG5lc3RlZCBmb3JtYXQuIil9dmFyIEc9W10sYWU9dGhpcy5sYW5ndWFnZVV0aWxzLmdldEZhbGxiYWNrQ29kZXModGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nLGEubG5nfHx0aGlzLmxhbmd1YWdlKTtpZih0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmdUbz09PSJmYWxsYmFjayImJmFlJiZhZVswXSlmb3IodmFyIGZlPTA7ZmU8YWUubGVuZ3RoO2ZlKyspRy5wdXNoKGFlW2ZlXSk7ZWxzZSB0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmdUbz09PSJhbGwiP0c9dGhpcy5sYW5ndWFnZVV0aWxzLnRvUmVzb2x2ZUhpZXJhcmNoeShhLmxuZ3x8dGhpcy5sYW5ndWFnZSk6Ry5wdXNoKGEubG5nfHx0aGlzLmxhbmd1YWdlKTt2YXIgVWU9ZnVuY3Rpb24oJCxjZSxWZSl7dmFyICRlPXVlJiZWZSE9PWg/VmU6RnQ7cy5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyP3Mub3B0aW9ucy5taXNzaW5nS2V5SGFuZGxlcigkLHAsY2UsJGUsWSxhKTpzLmJhY2tlbmRDb25uZWN0b3ImJnMuYmFja2VuZENvbm5lY3Rvci5zYXZlTWlzc2luZyYmcy5iYWNrZW5kQ29ubmVjdG9yLnNhdmVNaXNzaW5nKCQscCxjZSwkZSxZLGEpLHMuZW1pdCgibWlzc2luZ0tleSIsJCxwLGNlLGgpfTt0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmcmJih0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmdQbHVyYWxzJiZBZT9HLmZvckVhY2goZnVuY3Rpb24obGUpe3MucGx1cmFsUmVzb2x2ZXIuZ2V0U3VmZml4ZXMobGUsYSkuZm9yRWFjaChmdW5jdGlvbigkKXtVZShbbGVdLGYrJCxhWyJkZWZhdWx0VmFsdWUiLmNvbmNhdCgkKV18fFcpfSl9KTpVZShHLGYsVykpfWg9dGhpcy5leHRlbmRUcmFuc2xhdGlvbihoLGUsYSxkLG8pLHomJmg9PT1mJiZ0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5JiYoaD0iIi5jb25jYXQocCwiOiIpLmNvbmNhdChmKSksKHp8fG5lKSYmdGhpcy5vcHRpb25zLnBhcnNlTWlzc2luZ0tleUhhbmRsZXImJih0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUFQSSE9PSJ2MSI/aD10aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcih0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5PyIiLmNvbmNhdChwLCI6IikuY29uY2F0KGYpOmYsbmU/aDp2b2lkIDApOmg9dGhpcy5vcHRpb25zLnBhcnNlTWlzc2luZ0tleUhhbmRsZXIoaCkpfXJldHVybiB1PyhkLnJlcz1oLGQpOmh9fSx7a2V5OiJleHRlbmRUcmFuc2xhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8scyx1KXt2YXIgbD10aGlzO2lmKHRoaXMuaTE4bkZvcm1hdCYmdGhpcy5pMThuRm9ybWF0LnBhcnNlKWU9dGhpcy5pMThuRm9ybWF0LnBhcnNlKGUsUyhTKHt9LHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmRlZmF1bHRWYXJpYWJsZXMpLG8pLHMudXNlZExuZyxzLnVzZWROUyxzLnVzZWRLZXkse3Jlc29sdmVkOnN9KTtlbHNlIGlmKCFvLnNraXBJbnRlcnBvbGF0aW9uKXtvLmludGVycG9sYXRpb24mJnRoaXMuaW50ZXJwb2xhdG9yLmluaXQoUyhTKHt9LG8pLHtpbnRlcnBvbGF0aW9uOlMoUyh7fSx0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbiksby5pbnRlcnBvbGF0aW9uKX0pKTt2YXIgYz10eXBlb2YgZT09InN0cmluZyImJihvJiZvLmludGVycG9sYXRpb24mJm8uaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXMhPT12b2lkIDA/by5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlczp0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXMpLGY7aWYoYyl7dmFyIGc9ZS5tYXRjaCh0aGlzLmludGVycG9sYXRvci5uZXN0aW5nUmVnZXhwKTtmPWcmJmcubGVuZ3RofXZhciBwPW8ucmVwbGFjZSYmdHlwZW9mIG8ucmVwbGFjZSE9InN0cmluZyI/by5yZXBsYWNlOm87aWYodGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyYmKHA9UyhTKHt9LHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmRlZmF1bHRWYXJpYWJsZXMpLHApKSxlPXRoaXMuaW50ZXJwb2xhdG9yLmludGVycG9sYXRlKGUscCxvLmxuZ3x8dGhpcy5sYW5ndWFnZSxvKSxjKXt2YXIgbT1lLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApL
14Hk9bSYmbS5sZW5ndGg7Zjx5JiYoby5uZXN0PSExKX1vLm5lc3QhPT0hMSYmKGU9dGhpcy5pbnRlcnBvbGF0b3IubmVzdChlLGZ1bmN0aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGgsTz1uZXcgQXJyYXkoaCksYj0wO2I8aDtiKyspT1tiXT1hcmd1bWVudHNbYl07cmV0dXJuIHUmJnVbMF09PT1PWzBdJiYhby5jb250ZXh0PyhsLmxvZ2dlci53YXJuKCJJdCBzZWVtcyB5b3UgYXJlIG5lc3RpbmcgcmVjdXJzaXZlbHkga2V5OiAiLmNvbmNhdChPWzBdLCIgaW4ga2V5OiAiKS5jb25jYXQoYVswXSkpLG51bGwpOmwudHJhbnNsYXRlLmFwcGx5KGwsTy5jb25jYXQoW2FdKSl9LG8pKSxvLmludGVycG9sYXRpb24mJnRoaXMuaW50ZXJwb2xhdG9yLnJlc2V0KCl9dmFyIHY9by5wb3N0UHJvY2Vzc3x8dGhpcy5vcHRpb25zLnBvc3RQcm9jZXNzLGQ9dHlwZW9mIHY9PSJzdHJpbmciP1t2XTp2O3JldHVybiBlIT1udWxsJiZkJiZkLmxlbmd0aCYmby5hcHBseVBvc3RQcm9jZXNzb3IhPT0hMSYmKGU9eGUuaGFuZGxlKGQsZSxhLHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLnBvc3RQcm9jZXNzUGFzc1Jlc29sdmVkP1Moe2kxOG5SZXNvbHZlZDpzfSxvKTpvLHRoaXMpKSxlfX0se2tleToicmVzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcyxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxzLHUsbCxjLGY7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIiYmKGU9W2VdKSxlLmZvckVhY2goZnVuY3Rpb24oZyl7aWYoIWEuaXNWYWxpZExvb2t1cChzKSl7dmFyIHA9YS5leHRyYWN0RnJvbUtleShnLG8pLG09cC5rZXk7dT1tO3ZhciB5PXAubmFtZXNwYWNlczthLm9wdGlvbnMuZmFsbGJhY2tOUyYmKHk9eS5jb25jYXQoYS5vcHRpb25zLmZhbGxiYWNrTlMpKTt2YXIgdj1vLmNvdW50IT09dm9pZCAwJiZ0eXBlb2Ygby5jb3VudCE9InN0cmluZyIsZD12JiYhby5vcmRpbmFsJiZvLmNvdW50PT09MCYmYS5wbHVyYWxSZXNvbHZlci5zaG91bGRVc2VJbnRsQXBpKCksaD1vLmNvbnRleHQhPT12b2lkIDAmJih0eXBlb2Ygby5jb250ZXh0PT0ic3RyaW5nInx8dHlwZW9mIG8uY29udGV4dD09Im51bWJlciIpJiZvLmNvbnRleHQhPT0iIixPPW8ubG5ncz9vLmxuZ3M6YS5sYW5ndWFnZVV0aWxzLnRvUmVzb2x2ZUhpZXJhcmNoeShvLmxuZ3x8YS5sYW5ndWFnZSxvLmZhbGxiYWNrTG5nKTt5LmZvckVhY2goZnVuY3Rpb24oYil7YS5pc1ZhbGlkTG9va3VwKHMpfHwoZj1iLCFMZVsiIi5jb25jYXQoT1swXSwiLSIpLmNvbmNhdChiKV0mJmEudXRpbHMmJmEudXRpbHMuaGFzTG9hZGVkTmFtZXNwYWNlJiYhYS51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UoZikmJihMZVsiIi5jb25jYXQoT1swXSwiLSIpLmNvbmNhdChiKV09ITAsYS5sb2dnZXIud2Fybigna2V5ICInLmNvbmNhdCh1LCciIGZvciBsYW5ndWFnZXMgIicpLmNvbmNhdChPLmpvaW4oIiwgIiksYCIgd29uJ3QgZ2V0IHJlc29sdmVkIGFzIG5hbWVzcGFjZSAiYCkuY29uY2F0KGYsJyIgd2FzIG5vdCB5ZXQgbG9hZGVkJyksIlRoaXMgbWVhbnMgc29tZXRoaW5nIElTIFdST05HIGluIHlvdXIgc2V0dXAuIFlvdSBhY2Nlc3MgdGhlIHQgZnVuY3Rpb24gYmVmb3JlIGkxOG5leHQuaW5pdCAvIGkxOG5leHQubG9hZE5hbWVzcGFjZSAvIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2Ugd2FzIGRvbmUuIFdhaXQgZm9yIHRoZSBjYWxsYmFjayBvciBQcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGFjY2Vzc2luZyBpdCEhISIpKSxPLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoIWEuaXNWYWxpZExvb2t1cChzKSl7Yz14O3ZhciBFPVttXTtpZihhLmkxOG5Gb3JtYXQmJmEuaTE4bkZvcm1hdC5hZGRMb29rdXBLZXlzKWEuaTE4bkZvcm1hdC5hZGRMb29rdXBLZXlzKEUsbSx4LGIsbyk7ZWxzZXt2YXIgVDt2JiYoVD1hLnBsdXJhbFJlc29sdmVyLmdldFN1ZmZpeCh4LG8uY291bnQsbykpO3ZhciBIPSIiLmNvbmNhdChhLm9wdGlvbnMucGx1cmFsU2VwYXJhdG9yLCJ6ZXJvIik7aWYodiYmKEUucHVzaChtK1QpLGQmJkUucHVzaChtK0gpKSxoKXt2YXIgSj0iIi5jb25jYXQobSkuY29uY2F0KGEub3B0aW9ucy5jb250ZXh0U2VwYXJhdG9yKS5jb25jYXQoby5jb250ZXh0KTtFLnB1c2goSiksdiYmKEUucHVzaChKK1QpLGQmJkUucHVzaChKK0gpKX19Zm9yKHZhciBVO1U9RS5wb3AoKTspYS5pc1ZhbGlkTG9va3VwKHMpfHwobD1VLHM9YS5nZXRSZXNvdXJjZSh4LGIsVSxvKSl9fSkpfSl9fSkse3JlczpzLHVzZWRLZXk6dSxleGFjdFVzZWRLZXk6bCx1c2VkTG5nOmMsdXNlZE5TOmZ9fX0se2tleToiaXNWYWxpZExvb2t1cCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT12b2lkIDAmJiEoIXRoaXMub3B0aW9ucy5yZXR1cm5OdWxsJiZlPT09bnVsbCkmJiEoIXRoaXMub3B0aW9ucy5yZXR1cm5FbXB0eVN0cmluZyYmZT09PSIiKX19LHtrZXk6ImdldFJlc291cmNlIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9O3JldHVybiB0aGlzLmkxOG5Gb3JtYXQmJnRoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZT90aGlzLmkxOG5Gb3JtYXQuZ2V0UmVzb3VyY2UoZSxhLG8scyk6dGhpcy5yZXNvdXJjZVN0b3JlLmdldFJlc291cmNlKGUsYSxvLHMpfX1dLFt7a2V5OiJoYXNEZWZhdWx0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBhPSJkZWZhdWx0VmFsdWUiO2Zvcih2YXIgbyBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiZhPT09by5zdWJzdHJpbmcoMCxhLmxlbmd0aCkmJmVbb10hPT12b2lkIDApcmV0dXJuITA7cmV0dXJuITF9fV0pLG59KEkpO2Z1bmN0aW9uIHNlKGkpe3JldHVybiBpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc2xpY2UoMSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSh0KXtrKHRoaXMsaSksdGhpcy5vcHRpb25zPXQsdGhpcy5zdXBwb3J0ZWRMbmdzPXRoaXMub3B0aW9ucy5zdXBwb3J0ZWRMbmdzfHwhMSx0aGlzLmxvZ2dlcj1OLmNyZWF0ZSgibGFuZ3VhZ2VVdGlscyIpfXJldHVybi
14BSKGksW3trZXk6ImdldFNjcmlwdFBhcnRGcm9tQ29kZSIsdmFsdWU6ZnVuY3Rpb24obil7aWYoIW58fG4uaW5kZXhPZigiLSIpPDApcmV0dXJuIG51bGw7dmFyIHI9bi5zcGxpdCgiLSIpO3JldHVybiByLmxlbmd0aD09PTJ8fChyLnBvcCgpLHJbci5sZW5ndGgtMV0udG9Mb3dlckNhc2UoKT09PSJ4Iik/bnVsbDp0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShyLmpvaW4oIi0iKSl9fSx7a2V5OiJnZXRMYW5ndWFnZVBhcnRGcm9tQ29kZSIsdmFsdWU6ZnVuY3Rpb24obil7aWYoIW58fG4uaW5kZXhPZigiLSIpPDApcmV0dXJuIG47dmFyIHI9bi5zcGxpdCgiLSIpO3JldHVybiB0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShyWzBdKX19LHtrZXk6ImZvcm1hdExhbmd1YWdlQ29kZSIsdmFsdWU6ZnVuY3Rpb24obil7aWYodHlwZW9mIG49PSJzdHJpbmciJiZuLmluZGV4T2YoIi0iKT4tMSl7dmFyIHI9WyJoYW5zIiwiaGFudCIsImxhdG4iLCJjeXJsIiwiY2FucyIsIm1vbmciLCJhcmFiIl0sZT1uLnNwbGl0KCItIik7cmV0dXJuIHRoaXMub3B0aW9ucy5sb3dlckNhc2VMbmc/ZT1lLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfSk6ZS5sZW5ndGg9PT0yPyhlWzBdPWVbMF0udG9Mb3dlckNhc2UoKSxlWzFdPWVbMV0udG9VcHBlckNhc2UoKSxyLmluZGV4T2YoZVsxXS50b0xvd2VyQ2FzZSgpKT4tMSYmKGVbMV09c2UoZVsxXS50b0xvd2VyQ2FzZSgpKSkpOmUubGVuZ3RoPT09MyYmKGVbMF09ZVswXS50b0xvd2VyQ2FzZSgpLGVbMV0ubGVuZ3RoPT09MiYmKGVbMV09ZVsxXS50b1VwcGVyQ2FzZSgpKSxlWzBdIT09InNnbiImJmVbMl0ubGVuZ3RoPT09MiYmKGVbMl09ZVsyXS50b1VwcGVyQ2FzZSgpKSxyLmluZGV4T2YoZVsxXS50b0xvd2VyQ2FzZSgpKT4tMSYmKGVbMV09c2UoZVsxXS50b0xvd2VyQ2FzZSgpKSksci5pbmRleE9mKGVbMl0udG9Mb3dlckNhc2UoKSk+LTEmJihlWzJdPXNlKGVbMl0udG9Mb3dlckNhc2UoKSkpKSxlLmpvaW4oIi0iKX1yZXR1cm4gdGhpcy5vcHRpb25zLmNsZWFuQ29kZXx8dGhpcy5vcHRpb25zLmxvd2VyQ2FzZUxuZz9uLnRvTG93ZXJDYXNlKCk6bn19LHtrZXk6ImlzU3VwcG9ydGVkQ29kZSIsdmFsdWU6ZnVuY3Rpb24obil7cmV0dXJuKHRoaXMub3B0aW9ucy5sb2FkPT09Imxhbmd1YWdlT25seSJ8fHRoaXMub3B0aW9ucy5ub25FeHBsaWNpdFN1cHBvcnRlZExuZ3MpJiYobj10aGlzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKG4pKSwhdGhpcy5zdXBwb3J0ZWRMbmdzfHwhdGhpcy5zdXBwb3J0ZWRMbmdzLmxlbmd0aHx8dGhpcy5zdXBwb3J0ZWRMbmdzLmluZGV4T2Yobik+LTF9fSx7a2V5OiJnZXRCZXN0TWF0Y2hGcm9tQ29kZXMiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciByPXRoaXM7aWYoIW4pcmV0dXJuIG51bGw7dmFyIGU7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihhKXtpZighZSl7dmFyIG89ci5mb3JtYXRMYW5ndWFnZUNvZGUoYSk7KCFyLm9wdGlvbnMuc3VwcG9ydGVkTG5nc3x8ci5pc1N1cHBvcnRlZENvZGUobykpJiYoZT1vKX19KSwhZSYmdGhpcy5vcHRpb25zLnN1cHBvcnRlZExuZ3MmJm4uZm9yRWFjaChmdW5jdGlvbihhKXtpZighZSl7dmFyIG89ci5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShhKTtpZihyLmlzU3VwcG9ydGVkQ29kZShvKSlyZXR1cm4gZT1vO2U9ci5vcHRpb25zLnN1cHBvcnRlZExuZ3MuZmluZChmdW5jdGlvbihzKXtpZihzLmluZGV4T2Yobyk9PT0wKXJldHVybiBzfSl9fSksZXx8KGU9dGhpcy5nZXRGYWxsYmFja0NvZGVzKHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZylbMF0pLGV9fSx7a2V5OiJnZXRGYWxsYmFja0NvZGVzIix2YWx1ZTpmdW5jdGlvbihuLHIpe2lmKCFuKXJldHVybltdO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iJiYobj1uKHIpKSx0eXBlb2Ygbj09InN0cmluZyImJihuPVtuXSksT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShuKT09PSJbb2JqZWN0IEFycmF5XSIpcmV0dXJuIG47aWYoIXIpcmV0dXJuIG4uZGVmYXVsdHx8W107dmFyIGU9bltyXTtyZXR1cm4gZXx8KGU9blt0aGlzLmdldFNjcmlwdFBhcnRGcm9tQ29kZShyKV0pLGV8fChlPW5bdGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUocildKSxlfHwoZT1uW3RoaXMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUocildKSxlfHwoZT1uLmRlZmF1bHQpLGV8fFtdfX0se2tleToidG9SZXNvbHZlSGllcmFyY2h5Iix2YWx1ZTpmdW5jdGlvbihuLHIpe3ZhciBlPXRoaXMsYT10aGlzLmdldEZhbGxiYWNrQ29kZXMocnx8dGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nfHxbXSxuKSxvPVtdLHM9ZnVuY3Rpb24obCl7bCYmKGUuaXNTdXBwb3J0ZWRDb2RlKGwpP28ucHVzaChsKTplLmxvZ2dlci53YXJuKCJyZWplY3RpbmcgbGFuZ3VhZ2UgY29kZSBub3QgZm91bmQgaW4gc3VwcG9ydGVkTG5nczogIi5jb25jYXQobCkpKX07cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIiYmbi5pbmRleE9mKCItIik+LTE/KHRoaXMub3B0aW9ucy5sb2FkIT09Imxhbmd1YWdlT25seSImJnModGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUobikpLHRoaXMub3B0aW9ucy5sb2FkIT09Imxhbmd1YWdlT25seSImJnRoaXMub3B0aW9ucy5sb2FkIT09ImN1cnJlbnRPbmx5IiYmcyh0aGlzLmdldFNjcmlwdFBhcnRGcm9tQ29kZShuKSksdGhpcy5vcHRpb25zLmxvYWQhPT0iY3VycmVudE9ubHkiJiZzKHRoaXMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUobikpKTp0eXBlb2Ygbj09InN0cmluZyImJnModGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUobikpLGEuZm9yRWFjaChmdW5jdGlvbih1KXtvLmluZGV4T2YodSk8MCYmcyhlLmZvcm1hdExhbmd1YWdlQ29kZSh1KSl9KSxvfX1dKSxpfSgpLHV0PVt7bG5nczpbImFjaCIsImFrIiwiYW0iLCJhcm4iLCJiciIsImZpbCIsImd1biIsImxuIiwibWZlIiwibWciLCJtaSIsIm9jIiwicHQiLCJwdC1CUiIsInRnIiwidGwiLCJ0aSIsInRyIiwidXoiLCJ3YSJdLG5yOlsxLDJdLGZjOjF9LHtsbmdzOlsiYWYiLCJhbiIsImFzdCIsImF6IiwiYmciLCJibiIsImNhIiwiZGEiLCJkZSIsImRldiIsImVsIiwiZW4iLCJlbyIsImVzIiwiZXQiLCJldSIsImZpIiwiZm8iLCJmdXIiLCJmeSIsImdsIiwiZ3UiLCJoYSIsImhpIiwiaHUiLCJoeSIsImlhIiwiaXQiLCJrayIsImtuIiwia3UiLCJsYiIsIm1haSIsIm1sIiwibW4iLCJtciIsIm5haCIsIm5hcCIsIm5iIiwibmUiLCJubCIsIm5uIiwibm8iLCJuc28iLCJwYSIsInBhcCIsInBtcyIsInBzIiwicHQtUFQiLCJybSIsInNjbyIsInNlIiwic2kiLCJzbyIsInNvbiIsInNxIiwic3YiLCJzdyIsInRh
14IiwidGUiLCJ0ayIsInVyIiwieW8iXSxucjpbMSwyXSxmYzoyfSx7bG5nczpbImF5IiwiYm8iLCJjZ2ciLCJmYSIsImh0IiwiaWQiLCJqYSIsImpibyIsImthIiwia20iLCJrbyIsImt5IiwibG8iLCJtcyIsInNhaCIsInN1IiwidGgiLCJ0dCIsInVnIiwidmkiLCJ3byIsInpoIl0sbnI6WzFdLGZjOjN9LHtsbmdzOlsiYmUiLCJicyIsImNuciIsImR6IiwiaHIiLCJydSIsInNyIiwidWsiXSxucjpbMSwyLDVdLGZjOjR9LHtsbmdzOlsiYXIiXSxucjpbMCwxLDIsMywxMSwxMDBdLGZjOjV9LHtsbmdzOlsiY3MiLCJzayJdLG5yOlsxLDIsNV0sZmM6Nn0se2xuZ3M6WyJjc2IiLCJwbCJdLG5yOlsxLDIsNV0sZmM6N30se2xuZ3M6WyJjeSJdLG5yOlsxLDIsMyw4XSxmYzo4fSx7bG5nczpbImZyIl0sbnI6WzEsMl0sZmM6OX0se2xuZ3M6WyJnYSJdLG5yOlsxLDIsMyw3LDExXSxmYzoxMH0se2xuZ3M6WyJnZCJdLG5yOlsxLDIsMywyMF0sZmM6MTF9LHtsbmdzOlsiaXMiXSxucjpbMSwyXSxmYzoxMn0se2xuZ3M6WyJqdiJdLG5yOlswLDFdLGZjOjEzfSx7bG5nczpbImt3Il0sbnI6WzEsMiwzLDRdLGZjOjE0fSx7bG5nczpbImx0Il0sbnI6WzEsMiwxMF0sZmM6MTV9LHtsbmdzOlsibHYiXSxucjpbMSwyLDBdLGZjOjE2fSx7bG5nczpbIm1rIl0sbnI6WzEsMl0sZmM6MTd9LHtsbmdzOlsibW5rIl0sbnI6WzAsMSwyXSxmYzoxOH0se2xuZ3M6WyJtdCJdLG5yOlsxLDIsMTEsMjBdLGZjOjE5fSx7bG5nczpbIm9yIl0sbnI6WzIsMV0sZmM6Mn0se2xuZ3M6WyJybyJdLG5yOlsxLDIsMjBdLGZjOjIwfSx7bG5nczpbInNsIl0sbnI6WzUsMSwyLDNdLGZjOjIxfSx7bG5nczpbImhlIiwiaXciXSxucjpbMSwyLDIwLDIxXSxmYzoyMn1dLGZ0PXsxOmZ1bmN0aW9uKHQpe3JldHVybisodD4xKX0sMjpmdW5jdGlvbih0KXtyZXR1cm4rKHQhPTEpfSwzOmZ1bmN0aW9uKHQpe3JldHVybiAwfSw0OmZ1bmN0aW9uKHQpe3JldHVybiB0JTEwPT0xJiZ0JTEwMCE9MTE/MDp0JTEwPj0yJiZ0JTEwPD00JiYodCUxMDA8MTB8fHQlMTAwPj0yMCk/MToyfSw1OmZ1bmN0aW9uKHQpe3JldHVybiB0PT0wPzA6dD09MT8xOnQ9PTI/Mjp0JTEwMD49MyYmdCUxMDA8PTEwPzM6dCUxMDA+PTExPzQ6NX0sNjpmdW5jdGlvbih0KXtyZXR1cm4gdD09MT8wOnQ+PTImJnQ8PTQ/MToyfSw3OmZ1bmN0aW9uKHQpe3JldHVybiB0PT0xPzA6dCUxMD49MiYmdCUxMDw9NCYmKHQlMTAwPDEwfHx0JTEwMD49MjApPzE6Mn0sODpmdW5jdGlvbih0KXtyZXR1cm4gdD09MT8wOnQ9PTI/MTp0IT04JiZ0IT0xMT8yOjN9LDk6ZnVuY3Rpb24odCl7cmV0dXJuKyh0Pj0yKX0sMTA6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PTE/MDp0PT0yPzE6dDw3PzI6dDwxMT8zOjR9LDExOmZ1bmN0aW9uKHQpe3JldHVybiB0PT0xfHx0PT0xMT8wOnQ9PTJ8fHQ9PTEyPzE6dD4yJiZ0PDIwPzI6M30sMTI6ZnVuY3Rpb24odCl7cmV0dXJuKyh0JTEwIT0xfHx0JTEwMD09MTEpfSwxMzpmdW5jdGlvbih0KXtyZXR1cm4rKHQhPT0wKX0sMTQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PTE/MDp0PT0yPzE6dD09Mz8yOjN9LDE1OmZ1bmN0aW9uKHQpe3JldHVybiB0JTEwPT0xJiZ0JTEwMCE9MTE/MDp0JTEwPj0yJiYodCUxMDA8MTB8fHQlMTAwPj0yMCk/MToyfSwxNjpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMD09MSYmdCUxMDAhPTExPzA6dCE9PTA/MToyfSwxNzpmdW5jdGlvbih0KXtyZXR1cm4gdD09MXx8dCUxMD09MSYmdCUxMDAhPTExPzA6MX0sMTg6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PTA/MDp0PT0xPzE6Mn0sMTk6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PTE/MDp0PT0wfHx0JTEwMD4xJiZ0JTEwMDwxMT8xOnQlMTAwPjEwJiZ0JTEwMDwyMD8yOjN9LDIwOmZ1bmN0aW9uKHQpe3JldHVybiB0PT0xPzA6dD09MHx8dCUxMDA+MCYmdCUxMDA8MjA/MToyfSwyMTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMDA9PTE/MTp0JTEwMD09Mj8yOnQlMTAwPT0zfHx0JTEwMD09ND8zOjB9LDIyOmZ1bmN0aW9uKHQpe3JldHVybiB0PT0xPzA6dD09Mj8xOih0PDB8fHQ+MTApJiZ0JTEwPT0wPzI6M319LGx0PVsidjEiLCJ2MiIsInYzIl0sUmU9e3plcm86MCxvbmU6MSx0d286MixmZXc6MyxtYW55OjQsb3RoZXI6NX07ZnVuY3Rpb24gY3QoKXt2YXIgaT17fTtyZXR1cm4gdXQuZm9yRWFjaChmdW5jdGlvbih0KXt0LmxuZ3MuZm9yRWFjaChmdW5jdGlvbihuKXtpW25dPXtudW1iZXJzOnQubnIscGx1cmFsczpmdFt0LmZjXX19KX0pLGl9dmFyIGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSh0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307ayh0aGlzLGkpLHRoaXMubGFuZ3VhZ2VVdGlscz10LHRoaXMub3B0aW9ucz1uLHRoaXMubG9nZ2VyPU4uY3JlYXRlKCJwbHVyYWxSZXNvbHZlciIpLCghdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OfHx0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049PT0idjQiKSYmKHR5cGVvZiBJbnRsPiJ1Inx8IUludGwuUGx1cmFsUnVsZXMpJiYodGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OPSJ2MyIsdGhpcy5sb2dnZXIuZXJyb3IoIllvdXIgZW52aXJvbm1lbnQgc2VlbXMgbm90IHRvIGJlIEludGwgQVBJIGNvbXBhdGlibGUsIHVzZSBhbiBJbnRsLlBsdXJhbFJ1bGVzIHBvbHlmaWxsLiBXaWxsIGZhbGxiYWNrIHRvIHRoZSBjb21wYXRpYmlsaXR5SlNPTiB2MyBmb3JtYXQgaGFuZGxpbmcuIikpLHRoaXMucnVsZXM9Y3QoKX1yZXR1cm4gUihpLFt7a2V5OiJhZGRSdWxlIix2YWx1ZTpmdW5jdGlvbihuLHIpe3RoaXMucnVsZXNbbl09cn19LHtrZXk6ImdldFJ1bGUiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtpZih0aGlzLnNob3VsZFVzZUludGxBcGkoKSl0cnl7cmV0dXJuIG5ldyBJbnRsLlBsdXJhbFJ1bGVzKG4se3R5cGU6ci5vcmRpbmFsPyJvcmRpbmFsIjoiY2FyZGluYWwifSl9Y2F0Y2h7cmV0dXJufXJldHVybiB0aGlzLnJ1bGVzW25dfHx0aGlzLnJ1bGVzW3RoaXMubGFuZ3VhZ2VVdGlscy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShuKV19fSx7a2V5OiJuZWVkc1BsdXJhbCIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LGU9dGhpcy5nZXRSdWxlKG4scik7cmV0dXJuIHRoaXMuc2hvdWxkVXNlSW50bEFwaSgpP2UmJmUucmVzb2x2ZWRPcHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5sZW5ndGg+MTplJiZlLm51bWJlcnMubGVuZ3RoPjF9fSx7a2V5OiJnZXRQbHVyYWxGb3Jtc09mS2V5Iix2YWx1ZTpmdW5jdGlvbihuLHIpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gdGhpcy5nZXRTdWZmaXhlcyhuLGUpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4iIi5jb25jYXQocikuY29uY2F0KGEpfSl9f
14Sx7a2V5OiJnZXRTdWZmaXhlcyIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHI9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxhPXRoaXMuZ2V0UnVsZShuLGUpO3JldHVybiBhP3RoaXMuc2hvdWxkVXNlSW50bEFwaSgpP2EucmVzb2x2ZWRPcHRpb25zKCkucGx1cmFsQ2F0ZWdvcmllcy5zb3J0KGZ1bmN0aW9uKG8scyl7cmV0dXJuIFJlW29dLVJlW3NdfSkubWFwKGZ1bmN0aW9uKG8pe3JldHVybiIiLmNvbmNhdChyLm9wdGlvbnMucHJlcGVuZCkuY29uY2F0KG8pfSk6YS5udW1iZXJzLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gci5nZXRTdWZmaXgobixvLGUpfSk6W119fSx7a2V5OiJnZXRTdWZmaXgiLHZhbHVlOmZ1bmN0aW9uKG4scil7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9LGE9dGhpcy5nZXRSdWxlKG4sZSk7cmV0dXJuIGE/dGhpcy5zaG91bGRVc2VJbnRsQXBpKCk/IiIuY29uY2F0KHRoaXMub3B0aW9ucy5wcmVwZW5kKS5jb25jYXQoYS5zZWxlY3QocikpOnRoaXMuZ2V0U3VmZml4UmV0cm9Db21wYXRpYmxlKGEscik6KHRoaXMubG9nZ2VyLndhcm4oIm5vIHBsdXJhbCBydWxlIGZvdW5kIGZvcjogIi5jb25jYXQobikpLCIiKX19LHtrZXk6ImdldFN1ZmZpeFJldHJvQ29tcGF0aWJsZSIsdmFsdWU6ZnVuY3Rpb24obixyKXt2YXIgZT10aGlzLGE9bi5ub0Ficz9uLnBsdXJhbHMocik6bi5wbHVyYWxzKE1hdGguYWJzKHIpKSxvPW4ubnVtYmVyc1thXTt0aGlzLm9wdGlvbnMuc2ltcGxpZnlQbHVyYWxTdWZmaXgmJm4ubnVtYmVycy5sZW5ndGg9PT0yJiZuLm51bWJlcnNbMF09PT0xJiYobz09PTI/bz0icGx1cmFsIjpvPT09MSYmKG89IiIpKTt2YXIgcz1mdW5jdGlvbigpe3JldHVybiBlLm9wdGlvbnMucHJlcGVuZCYmby50b1N0cmluZygpP2Uub3B0aW9ucy5wcmVwZW5kK28udG9TdHJpbmcoKTpvLnRvU3RyaW5nKCl9O3JldHVybiB0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049PT0idjEiP289PT0xPyIiOnR5cGVvZiBvPT0ibnVtYmVyIj8iX3BsdXJhbF8iLmNvbmNhdChvLnRvU3RyaW5nKCkpOnMoKTp0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT049PT0idjIifHx0aGlzLm9wdGlvbnMuc2ltcGxpZnlQbHVyYWxTdWZmaXgmJm4ubnVtYmVycy5sZW5ndGg9PT0yJiZuLm51bWJlcnNbMF09PT0xP3MoKTp0aGlzLm9wdGlvbnMucHJlcGVuZCYmYS50b1N0cmluZygpP3RoaXMub3B0aW9ucy5wcmVwZW5kK2EudG9TdHJpbmcoKTphLnRvU3RyaW5nKCl9fSx7a2V5OiJzaG91bGRVc2VJbnRsQXBpIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiFsdC5pbmNsdWRlcyh0aGlzLm9wdGlvbnMuY29tcGF0aWJpbGl0eUpTT04pfX1dKSxpfSgpO2Z1bmN0aW9uIGplKGksdCl7dmFyIG49T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gTChpKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9qZShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7XyhpLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpqZShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGkscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGl9dmFyIHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fTtrKHRoaXMsaSksdGhpcy5sb2dnZXI9Ti5jcmVhdGUoImludGVycG9sYXRvciIpLHRoaXMub3B0aW9ucz10LHRoaXMuZm9ybWF0PXQuaW50ZXJwb2xhdGlvbiYmdC5pbnRlcnBvbGF0aW9uLmZvcm1hdHx8ZnVuY3Rpb24obil7cmV0dXJuIG59LHRoaXMuaW5pdCh0KX1yZXR1cm4gUihpLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fTtuLmludGVycG9sYXRpb258fChuLmludGVycG9sYXRpb249e2VzY2FwZVZhbHVlOiEwfSk7dmFyIHI9bi5pbnRlcnBvbGF0aW9uO3RoaXMuZXNjYXBlPXIuZXNjYXBlIT09dm9pZCAwP3IuZXNjYXBlOlhlLHRoaXMuZXNjYXBlVmFsdWU9ci5lc2NhcGVWYWx1ZSE9PXZvaWQgMD9yLmVzY2FwZVZhbHVlOiEwLHRoaXMudXNlUmF3VmFsdWVUb0VzY2FwZT1yLnVzZVJhd1ZhbHVlVG9Fc2NhcGUhPT12b2lkIDA/ci51c2VSYXdWYWx1ZVRvRXNjYXBlOiExLHRoaXMucHJlZml4PXIucHJlZml4P0Eoci5wcmVmaXgpOnIucHJlZml4RXNjYXBlZHx8Int7Iix0aGlzLnN1ZmZpeD1yLnN1ZmZpeD9BKHIuc3VmZml4KTpyLnN1ZmZpeEVzY2FwZWR8fCJ9fSIsdGhpcy5mb3JtYXRTZXBhcmF0b3I9ci5mb3JtYXRTZXBhcmF0b3I/ci5mb3JtYXRTZXBhcmF0b3I6ci5mb3JtYXRTZXBhcmF0b3J8fCIsIix0aGlzLnVuZXNjYXBlUHJlZml4PXIudW5lc2NhcGVTdWZmaXg/IiI6ci51bmVzY2FwZVByZWZpeHx8Ii0iLHRoaXMudW5lc2NhcGVTdWZmaXg9dGhpcy51bmVzY2FwZVByZWZpeD8iIjpyLnVuZXNjYXBlU3VmZml4fHwiIix0aGlzLm5lc3RpbmdQcmVmaXg9ci5uZXN0aW5nUHJlZml4P0Eoci5uZXN0aW5nUHJlZml4KTpyLm5lc3RpbmdQcmVmaXhFc2NhcGVkfHxBKCIkdCgiKSx0aGlzLm5lc3RpbmdTdWZmaXg9ci5uZXN0aW5nU3VmZml4P0Eoci5uZXN0aW5nU3VmZml4KTpyLm5lc3RpbmdTdWZmaXhFc2NhcGVkfHxBKCIpIiksdGhpcy5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcj1yLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yP3IubmVzdGluZ09wdGlvbnNTZXBhcmF0b3I6ci5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcnx8IiwiLHRoaXMubWF4UmVwbGFjZXM9ci5tYXhSZXBsYWNlcz9yLm1heFJlcGxhY2VzOjFlMyx0aGlzLmFsd2F5c0Zvcm1hdD1yLmFsd2F5c0Zvcm1hdCE9PXZvaWQgMD9yLmFsd2F5c0Zvcm1hdDohMSx0aGlzLnJlc2V0UmVnRXhwKCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMmJnRoaXMuaW5pdCh0aGlzLm9wdGlvbnMpfX0se2tleToicmVzZXRSZWdFeHAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIG49IiIuY29uY2F0KHRoaXMucHJlZml4LCIoLis/KSIpLmNvbmNhdCh0aGlzLnN1ZmZpeCk7dGhpcy5yZWdleHA9bmV3IFJlZ0V4cChuLCJnIik7dmFyIHI9IiIuY29uY2F0KHRoaXMucHJlZml4KS5jb25jYXQodGhpcy51bmVzY2FwZVByZWZpeCwiKC4rPykiKS5jb25jYXQodGhpcy51bmVzY2FwZVN1ZmZpeCkuY29uY2F0KHRoaXMuc3VmZml4KTt0aGlzLnJlZ2V4cFVuZXNjYXBlPW5ldyBSZWdFeHAociwiZyIpO3ZhciBlPSIiLmNvbmNhdCh0aGlzLm5lc3RpbmdQcmVmaXgsIiguKz8pIikuY29uY2F0KHRoaXMubmVzdGluZ1N1ZmZpeCk7dGhpcy5uZXN0aW5nUmVnZXhwPW5ldyBSZWdFeHAoZSwi
14ZyIpfX0se2tleToiaW50ZXJwb2xhdGUiLHZhbHVlOmZ1bmN0aW9uKG4scixlLGEpe3ZhciBvPXRoaXMscyx1LGwsYz10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uJiZ0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5kZWZhdWx0VmFyaWFibGVzfHx7fTtmdW5jdGlvbiBmKHYpe3JldHVybiB2LnJlcGxhY2UoL1wkL2csIiQkJCQiKX12YXIgZz1mdW5jdGlvbihkKXtpZihkLmluZGV4T2Yoby5mb3JtYXRTZXBhcmF0b3IpPDApe3ZhciBoPWJlKHIsYyxkKTtyZXR1cm4gby5hbHdheXNGb3JtYXQ/by5mb3JtYXQoaCx2b2lkIDAsZSxMKEwoTCh7fSxhKSxyKSx7fSx7aW50ZXJwb2xhdGlvbmtleTpkfSkpOmh9dmFyIE89ZC5zcGxpdChvLmZvcm1hdFNlcGFyYXRvciksYj1PLnNoaWZ0KCkudHJpbSgpLHg9Ty5qb2luKG8uZm9ybWF0U2VwYXJhdG9yKS50cmltKCk7cmV0dXJuIG8uZm9ybWF0KGJlKHIsYyxiKSx4LGUsTChMKEwoe30sYSkscikse30se2ludGVycG9sYXRpb25rZXk6Yn0pKX07dGhpcy5yZXNldFJlZ0V4cCgpO3ZhciBwPWEmJmEubWlzc2luZ0ludGVycG9sYXRpb25IYW5kbGVyfHx0aGlzLm9wdGlvbnMubWlzc2luZ0ludGVycG9sYXRpb25IYW5kbGVyLG09YSYmYS5pbnRlcnBvbGF0aW9uJiZhLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzIT09dm9pZCAwP2EuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXM6dGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uc2tpcE9uVmFyaWFibGVzLHk9W3tyZWdleDp0aGlzLnJlZ2V4cFVuZXNjYXBlLHNhZmVWYWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gZihkKX19LHtyZWdleDp0aGlzLnJlZ2V4cCxzYWZlVmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIG8uZXNjYXBlVmFsdWU/ZihvLmVzY2FwZShkKSk6ZihkKX19XTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKHYpe2ZvcihsPTA7cz12LnJlZ2V4LmV4ZWMobik7KXt2YXIgZD1zWzFdLnRyaW0oKTtpZih1PWcoZCksdT09PXZvaWQgMClpZih0eXBlb2YgcD09ImZ1bmN0aW9uIil7dmFyIGg9cChuLHMsYSk7dT10eXBlb2YgaD09InN0cmluZyI/aDoiIn1lbHNlIGlmKGEmJmEuaGFzT3duUHJvcGVydHkoZCkpdT0iIjtlbHNlIGlmKG0pe3U9c1swXTtjb250aW51ZX1lbHNlIG8ubG9nZ2VyLndhcm4oIm1pc3NlZCB0byBwYXNzIGluIHZhcmlhYmxlICIuY29uY2F0KGQsIiBmb3IgaW50ZXJwb2xhdGluZyAiKS5jb25jYXQobikpLHU9IiI7ZWxzZSB0eXBlb2YgdSE9InN0cmluZyImJiFvLnVzZVJhd1ZhbHVlVG9Fc2NhcGUmJih1PW1lKHUpKTt2YXIgTz12LnNhZmVWYWx1ZSh1KTtpZihuPW4ucmVwbGFjZShzWzBdLE8pLG0/KHYucmVnZXgubGFzdEluZGV4Kz11Lmxlbmd0aCx2LnJlZ2V4Lmxhc3RJbmRleC09c1swXS5sZW5ndGgpOnYucmVnZXgubGFzdEluZGV4PTAsbCsrLGw+PW8ubWF4UmVwbGFjZXMpYnJlYWt9fSksbn19LHtrZXk6Im5lc3QiLHZhbHVlOmZ1bmN0aW9uKG4scil7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxvLHMsdT1MKHt9LGEpO3UuYXBwbHlQb3N0UHJvY2Vzc29yPSExLGRlbGV0ZSB1LmRlZmF1bHRWYWx1ZTtmdW5jdGlvbiBsKHAsbSl7dmFyIHk9dGhpcy5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvcjtpZihwLmluZGV4T2YoeSk8MClyZXR1cm4gcDt2YXIgdj1wLnNwbGl0KG5ldyBSZWdFeHAoIiIuY29uY2F0KHksIlsgXSp7IikpKSxkPSJ7Ii5jb25jYXQodlsxXSk7cD12WzBdLGQ9dGhpcy5pbnRlcnBvbGF0ZShkLHUpO3ZhciBoPWQubWF0Y2goLycvZyksTz1kLm1hdGNoKC8iL2cpOyhoJiZoLmxlbmd0aCUyPT09MCYmIU98fE8ubGVuZ3RoJTIhPT0wKSYmKGQ9ZC5yZXBsYWNlKC8nL2csJyInKSk7dHJ5e3U9SlNPTi5wYXJzZShkKSxtJiYodT1MKEwoe30sbSksdSkpfWNhdGNoKGIpe3JldHVybiB0aGlzLmxvZ2dlci53YXJuKCJmYWlsZWQgcGFyc2luZyBvcHRpb25zIHN0cmluZyBpbiBuZXN0aW5nIGZvciBrZXkgIi5jb25jYXQocCksYiksIiIuY29uY2F0KHApLmNvbmNhdCh5KS5jb25jYXQoZCl9cmV0dXJuIGRlbGV0ZSB1LmRlZmF1bHRWYWx1ZSxwfWZvcig7bz10aGlzLm5lc3RpbmdSZWdleHAuZXhlYyhuKTspe3ZhciBjPVtdLGY9ITE7aWYob1swXS5pbmRleE9mKHRoaXMuZm9ybWF0U2VwYXJhdG9yKSE9PS0xJiYhL3suKn0vLnRlc3Qob1sxXSkpe3ZhciBnPW9bMV0uc3BsaXQodGhpcy5mb3JtYXRTZXBhcmF0b3IpLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC50cmltKCl9KTtvWzFdPWcuc2hpZnQoKSxjPWcsZj0hMH1pZihzPXIobC5jYWxsKHRoaXMsb1sxXS50cmltKCksdSksdSkscyYmb1swXT09PW4mJnR5cGVvZiBzIT0ic3RyaW5nIilyZXR1cm4gczt0eXBlb2YgcyE9InN0cmluZyImJihzPW1lKHMpKSxzfHwodGhpcy5sb2dnZXIud2FybigibWlzc2VkIHRvIHJlc29sdmUgIi5jb25jYXQob1sxXSwiIGZvciBuZXN0aW5nICIpLmNvbmNhdChuKSkscz0iIiksZiYmKHM9Yy5yZWR1Y2UoZnVuY3Rpb24ocCxtKXtyZXR1cm4gZS5mb3JtYXQocCxtLGEubG5nLEwoTCh7fSxhKSx7fSx7aW50ZXJwb2xhdGlvbmtleTpvWzFdLnRyaW0oKX0pKX0scy50cmltKCkpKSxuPW4ucmVwbGFjZShvWzBdLHMpLHRoaXMucmVnZXhwLmxhc3RJbmRleD0wfXJldHVybiBufX1dKSxpfSgpO2Z1bmN0aW9uIE5lKGksdCl7dmFyIG49T2JqZWN0LmtleXMoaSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRChpKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9OZShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7XyhpLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpOZShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGkscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gZHQoaSl7dmFyIHQ9aS50b0xvd2VyQ2FzZSgpLnRyaW0oKSxuPXt9O2lmKGkuaW5kZXhPZigiKCIpPi0xKXt2YXIgcj1pLnNwbGl0KCIoIik7dD1yWzBdLnRvTG93ZXJDYXNlKCkudHJpbSgpO3ZhciBlPXJbMV0uc3Vic3RyaW5nKDAsclsxXS5sZW5ndGgtMSk7aWYodD09PSJjdXJyZW5jeSImJmUuaW5kZXhPZigiOiIpPDApbi5jdXJyZW5jeXx8KG4uY3VycmVuY3k9ZS50cmltKCkpO2Vsc2UgaWYodD09PSJyZWxhdGl2ZXRpbWUiJiZlLmluZGV4T2YoIjoiKTwwKW4ucmFuZ2V8fChuLnJhbmdlPWUudHJpbSgpKTtlbHNle3ZhciBhPWUuc3BsaXQoIjsiKTthLmZvckVhY2goZnVuY3Rpb24obyl7aWYobyl7dmFyIHM9by5zcGxpdCgiOiIpLHU9V2UocyksbD11WzBdLGM9dS5zbGljZSgxKSxmPWMuam9pbigiOiIpLnRyaW0oKS5yZXBsYWNlKC9eJyt8JyskL2csIiIpO25bbC50cmltKCldfHwobltsLnRyaW0oKV09ZiksZj09PSJmYWxzZSImJihuW2wudHJpbSgpXT0hMSksZj09PSJ0cnVlIiYmKG5bbC50cmltKCldPSEwKSxpc05hTihmKXx8KG5bbC50cmltKCldPXBhcnNlSW50KGYsMTApKX19KX19cmV0dXJue2Zvcm1hdE5hbWU6dCxmb3JtYXRPcHRpb25zOm59fWZ1bmN0aW9uIEsoaSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKHIsZSxhKXt2YXIgbz1lK0pTT04uc3RyaW5naWZ5KGEpLHM9dFtvXTtyZXR1cm4gc3x8KHM9aShlLGEpLHRbb109cykscyhyKX19dmFyIGh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fTtrKHRoaXMsaSksdGhpcy5sb2dnZXI9Ti5jcmVhdGUoImZvcm1hdHRlciIpLHRoaXMub3B0aW9ucz10LHRoaXMuZm9ybWF0cz17bnVtYmVyOksoZnVuY3Rpb24obixyKXt2YXIgZT1uZXcgSW50bC5OdW1iZXJGb3JtYXQobixyKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGUuZm9ybWF0KGEpfX0pLGN1cnJlbmN5OksoZnVuY3Rpb24obixyKXt2YXIgZT1uZXcgSW50bC5OdW1iZXJGb3JtYXQobixEKEQoe30scikse30se3N0eWxlOiJjdXJyZW5jeSJ9KSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBlLmZvcm1hdChhKX19KSxkYXRldGltZTpLKGZ1bmN0aW9uKG4scil7dmFyIGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobixEKHt9LHIpKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGUuZm9ybWF0KGEpfX0pLHJlbGF0aXZldGltZTpLKGZ1bmN0aW9uKG4scil7dmFyIGU9bmV3IEludGwuUmVsYXRpdmVUaW
141lRm9ybWF0KG4sRCh7fSxyKSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBlLmZvcm1hdChhLHIucmFuZ2V8fCJkYXkiKX19KSxsaXN0OksoZnVuY3Rpb24obixyKXt2YXIgZT1uZXcgSW50bC5MaXN0Rm9ybWF0KG4sRCh7fSxyKSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBlLmZvcm1hdChhKX19KX0sdGhpcy5pbml0KHQpfXJldHVybiBSKGksW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7aW50ZXJwb2xhdGlvbjp7fX0sZT1yLmludGVycG9sYXRpb247dGhpcy5mb3JtYXRTZXBhcmF0b3I9ZS5mb3JtYXRTZXBhcmF0b3I/ZS5mb3JtYXRTZXBhcmF0b3I6ZS5mb3JtYXRTZXBhcmF0b3J8fCIsIn19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24obixyKXt0aGlzLmZvcm1hdHNbbi50b0xvd2VyQ2FzZSgpLnRyaW0oKV09cn19LHtrZXk6ImFkZENhY2hlZCIsdmFsdWU6ZnVuY3Rpb24obixyKXt0aGlzLmZvcm1hdHNbbi50b0xvd2VyQ2FzZSgpLnRyaW0oKV09SyhyKX19LHtrZXk6ImZvcm1hdCIsdmFsdWU6ZnVuY3Rpb24obixyLGUsYSl7dmFyIG89dGhpcyxzPXIuc3BsaXQodGhpcy5mb3JtYXRTZXBhcmF0b3IpLHU9cy5yZWR1Y2UoZnVuY3Rpb24obCxjKXt2YXIgZj1kdChjKSxnPWYuZm9ybWF0TmFtZSxwPWYuZm9ybWF0T3B0aW9ucztpZihvLmZvcm1hdHNbZ10pe3ZhciBtPWw7dHJ5e3ZhciB5PWEmJmEuZm9ybWF0UGFyYW1zJiZhLmZvcm1hdFBhcmFtc1thLmludGVycG9sYXRpb25rZXldfHx7fSx2PXkubG9jYWxlfHx5LmxuZ3x8YS5sb2NhbGV8fGEubG5nfHxlO209by5mb3JtYXRzW2ddKGwsdixEKEQoRCh7fSxwKSxhKSx5KSl9Y2F0Y2goZCl7by5sb2dnZXIud2FybihkKX1yZXR1cm4gbX1lbHNlIG8ubG9nZ2VyLndhcm4oInRoZXJlIHdhcyBubyBmb3JtYXQgZnVuY3Rpb24gZm9yICIuY29uY2F0KGcpKTtyZXR1cm4gbH0sbik7cmV0dXJuIHV9fV0pLGl9KCk7ZnVuY3Rpb24gQ2UoaSx0KXt2YXIgbj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBFZShpKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9DZShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7XyhpLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpDZShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGkscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gdnQoaSl7dmFyIHQ9bXQoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1qKGkpLGU7aWYodCl7dmFyIGE9aih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KHIsYXJndW1lbnRzLGEpfWVsc2UgZT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gQih0aGlzLGUpfX1mdW5jdGlvbiBtdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiB5dChpLHQpe2kucGVuZGluZ1t0XSE9PXZvaWQgMCYmKGRlbGV0ZSBpLnBlbmRpbmdbdF0saS5wZW5kaW5nQ291bnQtLSl9dmFyIGJ0PWZ1bmN0aW9uKGkpe1EobixpKTt2YXIgdD12dChuKTtmdW5jdGlvbiBuKHIsZSxhKXt2YXIgbyxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTp7fTtyZXR1cm4gayh0aGlzLG4pLG89dC5jYWxsKHRoaXMpLHEmJkkuY2FsbChGKG8pKSxvLmJhY2tlbmQ9cixvLnN0b3JlPWUsby5zZXJ2aWNlcz1hLG8ubGFuZ3VhZ2VVdGlscz1hLmxhbmd1YWdlVXRpbHMsby5vcHRpb25zPXMsby5sb2dnZXI9Ti5jcmVhdGUoImJhY2tlbmRDb25uZWN0b3IiKSxvLndhaXRpbmdSZWFkcz1bXSxvLm1heFBhcmFsbGVsUmVhZHM9cy5tYXhQYXJhbGxlbFJlYWRzfHwxMCxvLnJlYWRpbmdDYWxscz0wLG8ubWF4UmV0cmllcz1zLm1heFJldHJpZXM+PTA/cy5tYXhSZXRyaWVzOjUsby5yZXRyeVRpbWVvdXQ9cy5yZXRyeVRpbWVvdXQ+PTE/cy5yZXRyeVRpbWVvdXQ6MzUwLG8uc3RhdGU9e30sby5xdWV1ZT1bXSxvLmJhY2tlbmQmJm8uYmFja2VuZC5pbml0JiZvLmJhY2tlbmQuaW5pdChhLHMuYmFja2VuZCxzKSxvfXJldHVybiBSKG4sW3trZXk6InF1ZXVlTG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8scyl7dmFyIHU9dGhpcyxsPXt9LGM9e30sZj17fSxnPXt9O3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24ocCl7dmFyIG09ITA7YS5mb3JFYWNoKGZ1bmN0aW9uKHkpe3ZhciB2PSIiLmNvbmNhdChwLCJ8IikuY29uY2F0KHkpOyFvLnJlbG9hZCYmdS5zdG9yZS5oYXNSZXNvdXJjZUJ1bmRsZShwLHkpP3Uuc3RhdGVbdl09Mjp1LnN0YXRlW3ZdPDB8fCh1LnN0YXRlW3ZdPT09MT9jW3ZdPT09dm9pZCAwJiYoY1t2XT0hMCk6KHUuc3RhdGVbdl09MSxtPSExLGNbdl09PT12b2lkIDAmJihjW3ZdPSEwKSxsW3ZdPT09dm9pZCAwJiYobFt2XT0hMCksZ1t5XT09PXZvaWQgMCYmKGdbeV09ITApKSl9KSxtfHwoZltwXT0hMCl9KSwoT2JqZWN0LmtleXMobCkubGVuZ3RofHxPYmplY3Qua2V5cyhjKS5sZW5ndGgpJiZ0aGlzLnF1ZXVlLnB1c2goe3BlbmRpbmc6YyxwZW5kaW5nQ291bnQ6T2JqZWN0LmtleXMoYykubGVuZ3RoLGxvYWRlZDp7fSxlcnJvcnM6W10sY2FsbGJhY2s6c30pLHt0b0xvYWQ6T2JqZWN0LmtleXMobCkscGVuZGluZzpPYmplY3Qua2V5cyhjKSx0b0xvYWRMYW5ndWFnZXM6T2JqZWN0LmtleXMoZiksdG9Mb2FkTmFtZXNwYWNlczpPYmplY3Qua2V5cyhnKX19fSx7a2V5OiJsb2FkZWQiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz1lLnNwbGl0KCJ8IiksdT1zWzBdLGw9c1sxXTthJiZ0aGlzLmVtaXQoImZhaWxlZExvYWRpbmciLHUsbCxhKSxvJiZ0aGlzLnN0b3JlLmFkZFJlc291cmNlQnVuZGxlKHUsbCxvKSx0aGlzLnN0YXRlW2VdPWE/LTE6Mjt2YXIgYz17fTt0aGlzLnF1ZXVlLmZvckVhY2goZnVuY3Rpb24oZil7WmUoZi5sb2FkZWQsW3VdLGwpLHl0KGYsZSksYSYmZi5lcnJvcnMucHVzaChhKSxmLnBlbmRpbmdDb3VudD09PTAmJiFmLmRvbmUmJihPYmplY3Qua2V5cyhmLmxvYWRlZCkuZm9yRWFjaChmdW5jdGlvbihnKXtjW2ddfHwoY1tnXT17fSk7dmFyIHA9Zi5sb2FkZWRbZ107cC5sZW5ndGgmJnAuZm9yRWFjaChmdW5jdGlvbihtKXtjW2ddW21dPT09dm9pZCAwJiYoY1tnXVttXT0hMCl9KX0pLGYuZG9uZT0hMCxmLmVycm9ycy5sZW5ndGg/Zi5jYWxsYmFjayhmLmVycm9ycyk6Zi5jYWxsYmFjaygpKX0pLHRoaXMuZW1pdCgibG9hZGVkIixjKSx0aGlzLnF1ZXVlPXRoaXMucXVldWUuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiFmLmRvbmV9KX19LHtrZXk6InJlYWQiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt2YXIgcz10aGlzLHU9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOjAsbD1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06dGhpcy5yZXRyeVRpbWVvdXQsYz1hcmd1bWVudHMubGVuZ3RoPjU/YXJndW1lbnRzWzVdOnZvaWQgMDtpZighZS5sZW5ndGgpcmV0dXJuIGMobnVsbCx7fSk7aWYodGhpcy5yZWFkaW5nQ2FsbHM+PXRoaXMubWF4UGFyYWxsZWxSZWFkcyl7dGhpcy53YWl0aW5nUmVhZHMucHVzaCh7bG5nOmUsbnM6YSxmY05hbWU6byx0cmllZDp1LHdhaXQ6bCxjYWxsYmFjazpjfSk7cmV0dXJufXJldHVybi
14B0aGlzLnJlYWRpbmdDYWxscysrLHRoaXMuYmFja2VuZFtvXShlLGEsZnVuY3Rpb24oZixnKXtpZihzLnJlYWRpbmdDYWxscy0tLHMud2FpdGluZ1JlYWRzLmxlbmd0aD4wKXt2YXIgcD1zLndhaXRpbmdSZWFkcy5zaGlmdCgpO3MucmVhZChwLmxuZyxwLm5zLHAuZmNOYW1lLHAudHJpZWQscC53YWl0LHAuY2FsbGJhY2spfWlmKGYmJmcmJnU8cy5tYXhSZXRyaWVzKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cy5yZWFkLmNhbGwocyxlLGEsbyx1KzEsbCoyLGMpfSxsKTtyZXR1cm59YyhmLGcpfSl9fSx7a2V5OiJwcmVwYXJlTG9hZGluZyIsdmFsdWU6ZnVuY3Rpb24oZSxhKXt2YXIgbz10aGlzLHM9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9LHU9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDA7aWYoIXRoaXMuYmFja2VuZClyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiTm8gYmFja2VuZCB3YXMgYWRkZWQgdmlhIGkxOG5leHQudXNlLiBXaWxsIG5vdCBsb2FkIHJlc291cmNlcy4iKSx1JiZ1KCk7dHlwZW9mIGU9PSJzdHJpbmciJiYoZT10aGlzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGUpKSx0eXBlb2YgYT09InN0cmluZyImJihhPVthXSk7dmFyIGw9dGhpcy5xdWV1ZUxvYWQoZSxhLHMsdSk7aWYoIWwudG9Mb2FkLmxlbmd0aClyZXR1cm4gbC5wZW5kaW5nLmxlbmd0aHx8dSgpLG51bGw7bC50b0xvYWQuZm9yRWFjaChmdW5jdGlvbihjKXtvLmxvYWRPbmUoYyl9KX19LHtrZXk6ImxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUsYSxvKXt0aGlzLnByZXBhcmVMb2FkaW5nKGUsYSx7fSxvKX19LHtrZXk6InJlbG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8pe3RoaXMucHJlcGFyZUxvYWRpbmcoZSxhLHtyZWxvYWQ6ITB9LG8pfX0se2tleToibG9hZE9uZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcyxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXToiIixzPWUuc3BsaXQoInwiKSx1PXNbMF0sbD1zWzFdO3RoaXMucmVhZCh1LGwsInJlYWQiLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oYyxmKXtjJiZhLmxvZ2dlci53YXJuKCIiLmNvbmNhdChvLCJsb2FkaW5nIG5hbWVzcGFjZSAiKS5jb25jYXQobCwiIGZvciBsYW5ndWFnZSAiKS5jb25jYXQodSwiIGZhaWxlZCIpLGMpLCFjJiZmJiZhLmxvZ2dlci5sb2coIiIuY29uY2F0KG8sImxvYWRlZCBuYW1lc3BhY2UgIikuY29uY2F0KGwsIiBmb3IgbGFuZ3VhZ2UgIikuY29uY2F0KHUpLGYpLGEubG9hZGVkKGUsYyxmKX0pfX0se2tleToic2F2ZU1pc3NpbmciLHZhbHVlOmZ1bmN0aW9uKGUsYSxvLHMsdSl7dmFyIGw9YXJndW1lbnRzLmxlbmd0aD41JiZhcmd1bWVudHNbNV0hPT12b2lkIDA/YXJndW1lbnRzWzVdOnt9O2lmKHRoaXMuc2VydmljZXMudXRpbHMmJnRoaXMuc2VydmljZXMudXRpbHMuaGFzTG9hZGVkTmFtZXNwYWNlJiYhdGhpcy5zZXJ2aWNlcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UoYSkpe3RoaXMubG9nZ2VyLndhcm4oJ2RpZCBub3Qgc2F2ZSBrZXkgIicuY29uY2F0KG8sJyIgYXMgdGhlIG5hbWVzcGFjZSAiJykuY29uY2F0KGEsJyIgd2FzIG5vdCB5ZXQgbG9hZGVkJyksIlRoaXMgbWVhbnMgc29tZXRoaW5nIElTIFdST05HIGluIHlvdXIgc2V0dXAuIFlvdSBhY2Nlc3MgdGhlIHQgZnVuY3Rpb24gYmVmb3JlIGkxOG5leHQuaW5pdCAvIGkxOG5leHQubG9hZE5hbWVzcGFjZSAvIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2Ugd2FzIGRvbmUuIFdhaXQgZm9yIHRoZSBjYWxsYmFjayBvciBQcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGFjY2Vzc2luZyBpdCEhISIpO3JldHVybn1vPT1udWxsfHxvPT09IiJ8fCh0aGlzLmJhY2tlbmQmJnRoaXMuYmFja2VuZC5jcmVhdGUmJnRoaXMuYmFja2VuZC5jcmVhdGUoZSxhLG8scyxudWxsLEVlKEVlKHt9LGwpLHt9LHtpc1VwZGF0ZTp1fSkpLCEoIWV8fCFlWzBdKSYmdGhpcy5zdG9yZS5hZGRSZXNvdXJjZShlWzBdLGEsbyxzKSl9fV0pLG59KEkpO2Z1bmN0aW9uIE90KCl7cmV0dXJue2RlYnVnOiExLGluaXRJbW1lZGlhdGU6ITAsbnM6WyJ0cmFuc2xhdGlvbiJdLGRlZmF1bHROUzpbInRyYW5zbGF0aW9uIl0sZmFsbGJhY2tMbmc6WyJkZXYiXSxmYWxsYmFja05TOiExLHN1cHBvcnRlZExuZ3M6ITEsbm9uRXhwbGljaXRTdXBwb3J0ZWRMbmdzOiExLGxvYWQ6ImFsbCIscHJlbG9hZDohMSxzaW1wbGlmeVBsdXJhbFN1ZmZpeDohMCxrZXlTZXBhcmF0b3I6Ii4iLG5zU2VwYXJhdG9yOiI6IixwbHVyYWxTZXBhcmF0b3I6Il8iLGNvbnRleHRTZXBhcmF0b3I6Il8iLHBhcnRpYWxCdW5kbGVkTGFuZ3VhZ2VzOiExLHNhdmVNaXNzaW5nOiExLHVwZGF0ZU1pc3Npbmc6ITEsc2F2ZU1pc3NpbmdUbzoiZmFsbGJhY2siLHNhdmVNaXNzaW5nUGx1cmFsczohMCxtaXNzaW5nS2V5SGFuZGxlcjohMSxtaXNzaW5nSW50ZXJwb2xhdGlvbkhhbmRsZXI6ITEscG9zdFByb2Nlc3M6ITEscG9zdFByb2Nlc3NQYXNzUmVzb2x2ZWQ6ITEscmV0dXJuTnVsbDohMCxyZXR1cm5FbXB0eVN0cmluZzohMCxyZXR1cm5PYmplY3RzOiExLGpvaW5BcnJheXM6ITEscmV0dXJuZWRPYmplY3RIYW5kbGVyOiExLHBhcnNlTWlzc2luZ0tleUhhbmRsZXI6ITEsYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5OiExLGFwcGVuZE5hbWVzcGFjZVRvQ0lNb2RlOiExLG92ZXJsb2FkVHJhbnNsYXRpb25PcHRpb25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBuPXt9O2lmKFAodFsxXSk9PT0ib2JqZWN0IiYmKG49dFsxXSksdHlwZW9mIHRbMV09PSJzdHJpbmciJiYobi5kZWZhdWx0VmFsdWU9dFsxXSksdHlwZW9mIHRbMl09PSJzdHJpbmciJiYobi50RGVzY3JpcHRpb249dFsyXSksUCh0WzJdKT09PSJvYmplY3QifHxQKHRbM10pPT09Im9iamVjdCIpe3ZhciByPXRbM118fHRbMl07T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtuW2VdPXJbZV19KX1yZXR1cm4gbn0saW50ZXJwb2xhdGlvbjp7ZXNjYXBlVmFsdWU6ITAsZm9ybWF0OmZ1bmN0aW9uKHQsbixyLGUpe3JldHVybiB0fSxwcmVmaXg6Int7IixzdWZmaXg6In19Iixmb3JtYXRTZXBhcmF0b3I6IiwiLHVuZXNjYXBlUHJlZml4OiItIixuZXN0aW5nUHJlZml4OiIkdCgiLG5lc3RpbmdTdWZmaXg6IikiLG5lc3RpbmdPcHRpb25zU2VwYXJhdG9yOiIsIixtYXhSZXBsYWNlczoxZTMsc2tpcE9uVmFyaWFibGVzOiEwfX19ZnVuY3Rpb24gRmUoaSl7cmV0dXJuIHR5cGVvZiBpLm5zPT0ic3RyaW5nIiYmKGkubnM9W2kubnNdKSx0eXBlb2YgaS5mYWxsYmFja0xuZz09InN0cmluZyImJihpLmZhbGxiYWNrTG5nPVtpLmZhbGxiYWNrTG5nXSksdHlwZW9mIGkuZmFsbGJhY2tOUz09InN0cmluZyImJihpLmZhbGxiYWNrTlM9W2kuZmFsbGJhY2tOU10pLGkuc3VwcG9ydGVkTG5ncyYmaS5zdXBwb3J0ZWRMbmdzLmluZGV4T2YoImNpbW9kZSIpPDAmJihpLnN1cHBvcnRlZExuZ3M9aS5zdXBwb3J0ZWRMbmdzLmNvbmNhdChbImNpbW9kZSJdKSksaX1mdW5jdGlvbiBfZShpLHQpe3ZhciBuPU9
14iamVjdC5rZXlzKGkpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEMoaSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/X2UoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe18oaSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6X2UoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBpfWZ1bmN0aW9uIFN0KGkpe3ZhciB0PXd0KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9aihpKSxlO2lmKHQpe3ZhciBhPWoodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxhKX1lbHNlIGU9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEIodGhpcyxlKX19ZnVuY3Rpb24gd3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PSJmdW5jdGlvbiIpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gZWUoKXt9ZnVuY3Rpb24geHQoaSl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGkpKTt0LmZvckVhY2goZnVuY3Rpb24obil7dHlwZW9mIGlbbl09PSJmdW5jdGlvbiImJihpW25dPWlbbl0uYmluZChpKSl9KX12YXIgdGU9ZnVuY3Rpb24oaSl7UShuLGkpO3ZhciB0PVN0KG4pO2Z1bmN0aW9uIG4oKXt2YXIgcixlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxhPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO2lmKGsodGhpcyxuKSxyPXQuY2FsbCh0aGlzKSxxJiZJLmNhbGwoRihyKSksci5vcHRpb25zPUZlKGUpLHIuc2VydmljZXM9e30sci5sb2dnZXI9TixyLm1vZHVsZXM9e2V4dGVybmFsOltdfSx4dChGKHIpKSxhJiYhci5pc0luaXRpYWxpemVkJiYhZS5pc0Nsb25lKXtpZighci5vcHRpb25zLmluaXRJbW1lZGlhdGUpcmV0dXJuIHIuaW5pdChlLGEpLEIocixGKHIpKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5pbml0KGUsYSl9LDApfXJldHVybiByfXJldHVybiBSKG4sW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxvPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3R5cGVvZiBhPT0iZnVuY3Rpb24iJiYobz1hLGE9e30pLCFhLmRlZmF1bHROUyYmYS5kZWZhdWx0TlMhPT0hMSYmYS5ucyYmKHR5cGVvZiBhLm5zPT0ic3RyaW5nIj9hLmRlZmF1bHROUz1hLm5zOmEubnMuaW5kZXhPZigidHJhbnNsYXRpb24iKTwwJiYoYS5kZWZhdWx0TlM9YS5uc1swXSkpO3ZhciBzPU90KCk7dGhpcy5vcHRpb25zPUMoQyhDKHt9LHMpLHRoaXMub3B0aW9ucyksRmUoYSkpLHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5QVBJIT09InYxIiYmKHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uPUMoQyh7fSxzLmludGVycG9sYXRpb24pLHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uKSksYS5rZXlTZXBhcmF0b3IhPT12b2lkIDAmJih0aGlzLm9wdGlvbnMudXNlckRlZmluZWRLZXlTZXBhcmF0b3I9YS5rZXlTZXBhcmF0b3IpLGEubnNTZXBhcmF0b3IhPT12b2lkIDAmJih0aGlzLm9wdGlvbnMudXNlckRlZmluZWROc1NlcGFyYXRvcj1hLm5zU2VwYXJhdG9yKTtmdW5jdGlvbiB1KGQpe3JldHVybiBkP3R5cGVvZiBkPT0iZnVuY3Rpb24iP25ldyBkOmQ6bnVsbH1pZighdGhpcy5vcHRpb25zLmlzQ2xvbmUpe3RoaXMubW9kdWxlcy5sb2dnZXI/Ti5pbml0KHUodGhpcy5tb2R1bGVzLmxvZ2dlciksdGhpcy5vcHRpb25zKTpOLmluaXQobnVsbCx0aGlzLm9wdGlvbnMpO3ZhciBsO3RoaXMubW9kdWxlcy5mb3JtYXR0ZXI/bD10aGlzLm1vZHVsZXMuZm9ybWF0dGVyOnR5cGVvZiBJbnRsPCJ1IiYmKGw9aHQpO3ZhciBjPW5ldyBzdCh0aGlzLm9wdGlvbnMpO3RoaXMuc3RvcmU9bmV3IGF0KHRoaXMub3B0aW9ucy5yZXNvdXJjZXMsdGhpcy5vcHRpb25zKTt2YXIgZj10aGlzLnNlcnZpY2VzO2YubG9nZ2VyPU4sZi5yZXNvdXJjZVN0b3JlPXRoaXMuc3RvcmUsZi5sYW5ndWFnZVV0aWxzPWMsZi5wbHVyYWxSZXNvbHZlcj1uZXcgZ3QoYyx7cHJlcGVuZDp0aGlzLm9wdGlvbnMucGx1cmFsU2VwYXJhdG9yLGNvbXBhdGliaWxpdHlKU09OOnRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTixzaW1wbGlmeVBsdXJhbFN1ZmZpeDp0aGlzLm9wdGlvbnMuc2ltcGxpZnlQbHVyYWxTdWZmaXh9KSxsJiYoIXRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmZvcm1hdHx8dGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0PT09cy5pbnRlcnBvbGF0aW9uLmZvcm1hdCkmJihmLmZvcm1hdHRlcj11KGwpLGYuZm9ybWF0dGVyLmluaXQoZix0aGlzLm9wdGlvbnMpLHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmZvcm1hdD1mLmZvcm1hdHRlci5mb3JtYXQuYmluZChmLmZvcm1hdHRlcikpLGYuaW50ZXJwb2xhdG9yPW5ldyBwdCh0aGlzLm9wdGlvbnMpLGYudXRpbHM9e2hhc0xvYWRlZE5hbWVzcGFjZTp0aGlzLmhhc0xvYWRlZE5hbWVzcGFjZS5iaW5kKHRoaXMpfSxmLmJhY2tlbmRDb25uZWN0b3I9bmV3IGJ0KHUodGhpcy5tb2R1bGVzLmJhY2tlbmQpLGYucmVzb3VyY2VTdG9yZSxmLHRoaXMub3B0aW9ucyksZi5iYWNrZW5kQ29ubmVjdG9yLm9uKCIqIixmdW5jdGlvbihkKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxPPW5ldyBBcnJheShoPjE/aC0xOjApLGI9MTtiPGg7YisrKU9bYi0xXT1hcmd1bWVudHNbYl07ZS5lbWl0LmFwcGx5KGUsW2RdLmNvbmNhdChPKSl9KSx0aGlzLm1vZHVsZXMubGFuZ3VhZ2VEZXRlY3RvciYmKGYubGFuZ3VhZ2VEZXRlY3Rvcj11KHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yKSxmLmxhbmd1YWdlRGV0ZWN0b3IuaW5pdChmLHRoaXMub3B0aW9ucy5kZXRlY3Rpb24sdGhpcy5vcHRpb25zKSksdGhpcy5tb2R1bGVzLmkxOG5Gb3JtYXQmJihmLmkxOG5Gb3JtYXQ9dSh0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCksZi5pMThuRm9ybWF0LmluaXQmJmYuaTE4bkZvcm1hdC5pbml0KHRoaXMpKSx0aGlzLnRyYW5zbGF0b3I9bmV3IGtlKHRoaXMuc2VydmljZXMsdGhpcy5vcHRpb25zKSx0aGlzLnRyYW5zbGF0b3Iub24oIioiLGZ1bmN0aW9uKGQpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLE89bmV3IEFycmF5KGg+MT9oLTE6MCksYj0xO2I8aDtiKyspT1tiLTFdPWFyZ3VtZW50c1tiXTtlLmVtaXQuYXBwbHkoZSxbZF0uY29uY2F0KE8pKX0pLHRoaXMubW9kdWxlcy5leHRlcm5hbC5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuaW5pdCYmZC5pbml0KGUpfSl9aWYodGhpcy5mb3JtYXQ9dGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0LG98fChvPWVlKSx0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcmJiF0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJiF0aGlzLm9wdGlvbnMubG5nKXt2YXIgZz10aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpO2cubGVuZ3RoPjAmJmdbMF0hPT0iZGV2IiYmKHRoaXMub3B0aW9ucy5sbmc9Z1swXSl9IXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciYmIXRoaXMub3B0aW9ucy5sbmcmJnRoaXMubG9nZ2VyLndhcm4oImluaXQ6IG5vIGxhbmd1YWdlRGV0ZWN0b3IgaXMgdXNlZCBhbmQgbm8gbG5nIGlzIGRlZmluZWQiKTt2YXIgcD1bImdldFJlc291cmNlIiwiaGFzUmVzb3VyY2VCdW5kbGUiLCJnZXRSZXNvdXJjZUJ1bmRsZSIsImdldERhdGFCeUxhbmd1YWdlIl07cC5mb3JFYWNoKGZ1bmN0aW9uKGQpe2VbZF09ZnVuY3Rpb24oKXt2YXIgaDtyZXR1cm4oaD1lLnN0b3JlKVtkXS5hcHBseShoLGFyZ3VtZW50cyl9fSk7dmFyIG09WyJhZGRSZXNvdXJjZSIsImFkZFJlc291cmNlcyIsImFkZFJlc291cmNlQnVuZGxlIiwicmVtb3ZlUmVzb3VyY2VCdW5kbGUiXTttLmZvckVhY2goZnVuY3Rpb24oZCl7ZVtkXT1mdW5jdGlvbigpe3ZhciBoO3JldHVybihoPWUuc3RvcmUpW2RdLmFwcGx5KGgsYXJndW1lbnRzKSxlfX0pO3Z
14hciB5PU0oKSx2PWZ1bmN0aW9uKCl7dmFyIGg9ZnVuY3Rpb24oYix4KXtlLmlzSW5pdGlhbGl6ZWQmJiFlLmluaXRpYWxpemVkU3RvcmVPbmNlJiZlLmxvZ2dlci53YXJuKCJpbml0OiBpMThuZXh0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIFlvdSBzaG91bGQgY2FsbCBpbml0IGp1c3Qgb25jZSEiKSxlLmlzSW5pdGlhbGl6ZWQ9ITAsZS5vcHRpb25zLmlzQ2xvbmV8fGUubG9nZ2VyLmxvZygiaW5pdGlhbGl6ZWQiLGUub3B0aW9ucyksZS5lbWl0KCJpbml0aWFsaXplZCIsZS5vcHRpb25zKSx5LnJlc29sdmUoeCksbyhiLHgpfTtpZihlLmxhbmd1YWdlcyYmZS5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkhPT0idjEiJiYhZS5pc0luaXRpYWxpemVkKXJldHVybiBoKG51bGwsZS50LmJpbmQoZSkpO2UuY2hhbmdlTGFuZ3VhZ2UoZS5vcHRpb25zLmxuZyxoKX07cmV0dXJuIHRoaXMub3B0aW9ucy5yZXNvdXJjZXN8fCF0aGlzLm9wdGlvbnMuaW5pdEltbWVkaWF0ZT92KCk6c2V0VGltZW91dCh2LDApLHl9fSx7a2V5OiJsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOmVlLHM9byx1PXR5cGVvZiBlPT0ic3RyaW5nIj9lOnRoaXMubGFuZ3VhZ2U7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiImJihzPWUpLCF0aGlzLm9wdGlvbnMucmVzb3VyY2VzfHx0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXMpe2lmKHUmJnUudG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiBzKCk7dmFyIGw9W10sYz1mdW5jdGlvbihwKXtpZihwKXt2YXIgbT1hLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KHApO20uZm9yRWFjaChmdW5jdGlvbih5KXtsLmluZGV4T2YoeSk8MCYmbC5wdXNoKHkpfSl9fTtpZih1KWModSk7ZWxzZXt2YXIgZj10aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpO2YuZm9yRWFjaChmdW5jdGlvbihnKXtyZXR1cm4gYyhnKX0pfXRoaXMub3B0aW9ucy5wcmVsb2FkJiZ0aGlzLm9wdGlvbnMucHJlbG9hZC5mb3JFYWNoKGZ1bmN0aW9uKGcpe3JldHVybiBjKGcpfSksdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmxvYWQobCx0aGlzLm9wdGlvbnMubnMsZnVuY3Rpb24oZyl7IWcmJiFhLnJlc29sdmVkTGFuZ3VhZ2UmJmEubGFuZ3VhZ2UmJmEuc2V0UmVzb2x2ZWRMYW5ndWFnZShhLmxhbmd1YWdlKSxzKGcpfSl9ZWxzZSBzKG51bGwpfX0se2tleToicmVsb2FkUmVzb3VyY2VzIix2YWx1ZTpmdW5jdGlvbihlLGEsbyl7dmFyIHM9TSgpO3JldHVybiBlfHwoZT10aGlzLmxhbmd1YWdlcyksYXx8KGE9dGhpcy5vcHRpb25zLm5zKSxvfHwobz1lZSksdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLnJlbG9hZChlLGEsZnVuY3Rpb24odSl7cy5yZXNvbHZlKCksbyh1KX0pLHN9fSx7a2V5OiJ1c2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlKXRocm93IG5ldyBFcnJvcigiWW91IGFyZSBwYXNzaW5nIGFuIHVuZGVmaW5lZCBtb2R1bGUhIFBsZWFzZSBjaGVjayB0aGUgb2JqZWN0IHlvdSBhcmUgcGFzc2luZyB0byBpMThuZXh0LnVzZSgpIik7aWYoIWUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBhcmUgcGFzc2luZyBhIHdyb25nIG1vZHVsZSEgUGxlYXNlIGNoZWNrIHRoZSBvYmplY3QgeW91IGFyZSBwYXNzaW5nIHRvIGkxOG5leHQudXNlKCkiKTtyZXR1cm4gZS50eXBlPT09ImJhY2tlbmQiJiYodGhpcy5tb2R1bGVzLmJhY2tlbmQ9ZSksKGUudHlwZT09PSJsb2dnZXIifHxlLmxvZyYmZS53YXJuJiZlLmVycm9yKSYmKHRoaXMubW9kdWxlcy5sb2dnZXI9ZSksZS50eXBlPT09Imxhbmd1YWdlRGV0ZWN0b3IiJiYodGhpcy5tb2R1bGVzLmxhbmd1YWdlRGV0ZWN0b3I9ZSksZS50eXBlPT09ImkxOG5Gb3JtYXQiJiYodGhpcy5tb2R1bGVzLmkxOG5Gb3JtYXQ9ZSksZS50eXBlPT09InBvc3RQcm9jZXNzb3IiJiZ4ZS5hZGRQb3N0UHJvY2Vzc29yKGUpLGUudHlwZT09PSJmb3JtYXR0ZXIiJiYodGhpcy5tb2R1bGVzLmZvcm1hdHRlcj1lKSxlLnR5cGU9PT0iM3JkUGFydHkiJiZ0aGlzLm1vZHVsZXMuZXh0ZXJuYWwucHVzaChlKSx0aGlzfX0se2tleToic2V0UmVzb2x2ZWRMYW5ndWFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoISghZXx8IXRoaXMubGFuZ3VhZ2VzKSYmIShbImNpbW9kZSIsImRldiJdLmluZGV4T2YoZSk+LTEpKWZvcih2YXIgYT0wO2E8dGhpcy5sYW5ndWFnZXMubGVuZ3RoO2ErKyl7dmFyIG89dGhpcy5sYW5ndWFnZXNbYV07aWYoIShbImNpbW9kZSIsImRldiJdLmluZGV4T2Yobyk+LTEpJiZ0aGlzLnN0b3JlLmhhc0xhbmd1YWdlU29tZVRyYW5zbGF0aW9ucyhvKSl7dGhpcy5yZXNvbHZlZExhbmd1YWdlPW87YnJlYWt9fX19LHtrZXk6ImNoYW5nZUxhbmd1YWdlIix2YWx1ZTpmdW5jdGlvbihlLGEpe3ZhciBvPXRoaXM7dGhpcy5pc0xhbmd1YWdlQ2hhbmdpbmdUbz1lO3ZhciBzPU0oKTt0aGlzLmVtaXQoImxhbmd1YWdlQ2hhbmdpbmciLGUpO3ZhciB1PWZ1bmN0aW9uKGcpe28ubGFuZ3VhZ2U9ZyxvLmxhbmd1YWdlcz1vLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGcpLG8ucmVzb2x2ZWRMYW5ndWFnZT12b2lkIDAsby5zZXRSZXNvbHZlZExhbmd1YWdlKGcpfSxsPWZ1bmN0aW9uKGcscCl7cD8odShwKSxvLnRyYW5zbGF0b3IuY2hhbmdlTGFuZ3VhZ2UocCksby5pc0xhbmd1YWdlQ2hhbmdpbmdUbz12b2lkIDAsby5lbWl0KCJsYW5ndWFnZUNoYW5nZWQiLHApLG8ubG9nZ2VyLmxvZygibGFuZ3VhZ2VDaGFuZ2VkIixwKSk6by5pc0xhbmd1YWdlQ2hhbmdpbmdUbz12b2lkIDAscy5yZXNvbHZlKGZ1bmN0aW9uKCl7cmV0dXJuIG8udC5hcHBseShvLGFyZ3VtZW50cyl9KSxhJiZhKGcsZnVuY3Rpb24oKXtyZXR1cm4gby50LmFwcGx5KG8sYXJndW1lbnRzKX0pfSxjPWZ1bmN0aW9uKGcpeyFlJiYhZyYmby5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yJiYoZz1bXSk7dmFyIHA9dHlwZW9mIGc9PSJzdHJpbmciP2c6by5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldEJlc3RNYXRjaEZyb21Db2RlcyhnKTtwJiYoby5sYW5ndWFnZXx8dShwKSxvLnRyYW5zbGF0b3IubGFuZ3VhZ2V8fG8udHJhbnNsYXRvci5jaGFuZ2VMYW5ndWFnZShwKSxvLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJm8uc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5jYWNoZVVzZXJMYW5ndWFnZShwKSksby5sb2FkUmVzb3VyY2VzKHAsZnVuY3Rpb24obSl7bChtLHApfSl9O3JldHVybiFlJiZ0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJiF0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IuYXN5bmM/Yyh0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IuZGV0ZWN0KCkpOiFlJiZ0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3ImJnRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5hc3luYz90aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IuZGV0ZWN0KGMpOmMoZSksc319LHtrZXk6ImdldEZpeGVkVCIsdmFsdWU6ZnVuY3Rpb24oZSxhLG8pe3ZhciBzPXRoaXMsdT1mdW5jdGlvbiBsKGMsZil7dmFyIGc7aWYoUChmKSE9PSJvYmplY3QiKXtmb3IodmFyIHA9YXJndW1lbnRzLmxlbmd0aCxtPW5ldyBBcnJheShwPjI/cC0yOjApLHk9Mjt5PHA7eSsrKW1beS0yXT1hcmd1bWVudHNbeV07Zz1zLm9wdGlvbnMub3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXIoW2MsZl0uY29uY2F0KG0pKX1lbHNlIGc9Qyh7fSxmKTtnLmxuZz1nLmxuZ3x8bC5sbmcsZy5sbmdzPWcubG5nc3x8bC5sbmdzLGcubnM9Zy5uc3x8bC5ucyxnLmtleVByZWZpeD1nLmtleVByZWZpeHx8b3x8bC5rZXlQcmVmaXg7dmFyIHY9cy5vcHRpb25zLmtleVNlcGFyYXRvcnx8Ii4iLGQ9Zy5rZXlQcmVmaXg/IiIuY29uY2F0KGcua2V5UHJlZml4KS5jb25jYXQodikuY29uY2F0KGMpOmM7cmV0dXJuIHMudChkLGcpfTtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP3UubG5nPWU6dS5sbmdzPWUsdS5ucz1hLHUua2V5UHJlZml4PW8sdX19LHtrZXk6InQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHRoaXMudHJhbnNsYXRvciYmKGU9dGhpcy50cmFuc2xhdG9yKS50cmFuc2xhdGUuYXBwbHkoZSxhcmd1bWVudHMpfX0se2tleToiZXhpc3RzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB0aGlzLnRyYW5zbGF0b3ImJihlPXRoaXMudHJhbnNsYXRvcikuZXhpc3RzLmFwcGx5KGUsYXJndW1lbnRzKX19LHtrZXk6InNldERlZmF1bHROYW1lc3BhY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy5kZWZhdWx0TlM9ZX19LHtrZXk6Imhhc0xvYWRlZE5hbWVzcGFjZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcyxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtpZighdGhpcy5pc0luaXRpYWxpemVkKXJldHVybi
14B0aGlzLmxvZ2dlci53YXJuKCJoYXNMb2FkZWROYW1lc3BhY2U6IGkxOG5leHQgd2FzIG5vdCBpbml0aWFsaXplZCIsdGhpcy5sYW5ndWFnZXMpLCExO2lmKCF0aGlzLmxhbmd1YWdlc3x8IXRoaXMubGFuZ3VhZ2VzLmxlbmd0aClyZXR1cm4gdGhpcy5sb2dnZXIud2FybigiaGFzTG9hZGVkTmFtZXNwYWNlOiBpMThuLmxhbmd1YWdlcyB3ZXJlIHVuZGVmaW5lZCBvciBlbXB0eSIsdGhpcy5sYW5ndWFnZXMpLCExO3ZhciBzPXRoaXMucmVzb2x2ZWRMYW5ndWFnZXx8dGhpcy5sYW5ndWFnZXNbMF0sdT10aGlzLm9wdGlvbnM/dGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nOiExLGw9dGhpcy5sYW5ndWFnZXNbdGhpcy5sYW5ndWFnZXMubGVuZ3RoLTFdO2lmKHMudG9Mb3dlckNhc2UoKT09PSJjaW1vZGUiKXJldHVybiEwO3ZhciBjPWZ1bmN0aW9uKHAsbSl7dmFyIHk9YS5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLnN0YXRlWyIiLmNvbmNhdChwLCJ8IikuY29uY2F0KG0pXTtyZXR1cm4geT09PS0xfHx5PT09Mn07aWYoby5wcmVjaGVjayl7dmFyIGY9by5wcmVjaGVjayh0aGlzLGMpO2lmKGYhPT12b2lkIDApcmV0dXJuIGZ9cmV0dXJuISEodGhpcy5oYXNSZXNvdXJjZUJ1bmRsZShzLGUpfHwhdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmJhY2tlbmR8fHRoaXMub3B0aW9ucy5yZXNvdXJjZXMmJiF0aGlzLm9wdGlvbnMucGFydGlhbEJ1bmRsZWRMYW5ndWFnZXN8fGMocyxlKSYmKCF1fHxjKGwsZSkpKX19LHtrZXk6ImxvYWROYW1lc3BhY2VzIix2YWx1ZTpmdW5jdGlvbihlLGEpe3ZhciBvPXRoaXMscz1NKCk7cmV0dXJuIHRoaXMub3B0aW9ucy5ucz8odHlwZW9mIGU9PSJzdHJpbmciJiYoZT1bZV0pLGUuZm9yRWFjaChmdW5jdGlvbih1KXtvLm9wdGlvbnMubnMuaW5kZXhPZih1KTwwJiZvLm9wdGlvbnMubnMucHVzaCh1KX0pLHRoaXMubG9hZFJlc291cmNlcyhmdW5jdGlvbih1KXtzLnJlc29sdmUoKSxhJiZhKHUpfSkscyk6KGEmJmEoKSxQcm9taXNlLnJlc29sdmUoKSl9fSx7a2V5OiJsb2FkTGFuZ3VhZ2VzIix2YWx1ZTpmdW5jdGlvbihlLGEpe3ZhciBvPU0oKTt0eXBlb2YgZT09InN0cmluZyImJihlPVtlXSk7dmFyIHM9dGhpcy5vcHRpb25zLnByZWxvYWR8fFtdLHU9ZS5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIHMuaW5kZXhPZihsKTwwfSk7cmV0dXJuIHUubGVuZ3RoPyh0aGlzLm9wdGlvbnMucHJlbG9hZD1zLmNvbmNhdCh1KSx0aGlzLmxvYWRSZXNvdXJjZXMoZnVuY3Rpb24obCl7by5yZXNvbHZlKCksYSYmYShsKX0pLG8pOihhJiZhKCksUHJvbWlzZS5yZXNvbHZlKCkpfX0se2tleToiZGlyIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlfHwoZT10aGlzLnJlc29sdmVkTGFuZ3VhZ2V8fCh0aGlzLmxhbmd1YWdlcyYmdGhpcy5sYW5ndWFnZXMubGVuZ3RoPjA/dGhpcy5sYW5ndWFnZXNbMF06dGhpcy5sYW5ndWFnZSkpLCFlKXJldHVybiJydGwiO3ZhciBhPVsiYXIiLCJzaHUiLCJzcXIiLCJzc2giLCJ4YWEiLCJ5aGQiLCJ5dWQiLCJhYW8iLCJhYmgiLCJhYnYiLCJhY20iLCJhY3EiLCJhY3ciLCJhY3giLCJhY3kiLCJhZGYiLCJhZHMiLCJhZWIiLCJhZWMiLCJhZmIiLCJhanAiLCJhcGMiLCJhcGQiLCJhcmIiLCJhcnEiLCJhcnMiLCJhcnkiLCJhcnoiLCJhdXoiLCJhdmwiLCJheWgiLCJheWwiLCJheW4iLCJheXAiLCJiYnoiLCJwZ2EiLCJoZSIsIml3IiwicHMiLCJwYnQiLCJwYnUiLCJwc3QiLCJwcnAiLCJwcmQiLCJ1ZyIsInVyIiwieWRkIiwieWRzIiwieWloIiwiamkiLCJ5aSIsImhibyIsIm1lbiIsInhtbiIsImZhIiwianByIiwicGVvIiwicGVzIiwicHJzIiwiZHYiLCJzYW0iLCJja2IiXTtyZXR1cm4gYS5pbmRleE9mKHRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShlKSk+LTF8fGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCItYXJhYiIpPjE/InJ0bCI6Imx0ciJ9fSx7a2V5OiJjbG9uZUluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sbz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06ZWUscz1DKEMoQyh7fSx0aGlzLm9wdGlvbnMpLGEpLHtpc0Nsb25lOiEwfSksdT1uZXcgbihzKTsoYS5kZWJ1ZyE9PXZvaWQgMHx8YS5wcmVmaXghPT12b2lkIDApJiYodS5sb2dnZXI9dS5sb2dnZXIuY2xvbmUoYSkpO3ZhciBsPVsic3RvcmUiLCJzZXJ2aWNlcyIsImxhbmd1YWdlIl07cmV0dXJuIGwuZm9yRWFjaChmdW5jdGlvbihjKXt1W2NdPWVbY119KSx1LnNlcnZpY2VzPUMoe30sdGhpcy5zZXJ2aWNlcyksdS5zZXJ2aWNlcy51dGlscz17aGFzTG9hZGVkTmFtZXNwYWNlOnUuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQodSl9LHUudHJhbnNsYXRvcj1uZXcga2UodS5zZXJ2aWNlcyx1Lm9wdGlvbnMpLHUudHJhbnNsYXRvci5vbigiKiIsZnVuY3Rpb24oYyl7Zm9yKHZhciBmPWFyZ3VtZW50cy5sZW5ndGgsZz1uZXcgQXJyYXkoZj4xP2YtMTowKSxwPTE7cDxmO3ArKylnW3AtMV09YXJndW1lbnRzW3BdO3UuZW1pdC5hcHBseSh1LFtjXS5jb25jYXQoZykpfSksdS5pbml0KHMsbyksdS50cmFuc2xhdG9yLm9wdGlvbnM9dS5vcHRpb25zLHUudHJhbnNsYXRvci5iYWNrZW5kQ29ubmVjdG9yLnNlcnZpY2VzLnV0aWxzPXtoYXNMb2FkZWROYW1lc3BhY2U6dS5oYXNMb2FkZWROYW1lc3BhY2UuYmluZCh1KX0sdX19LHtrZXk6InRvSlNPTiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57b3B0aW9uczp0aGlzLm9wdGlvbnMsc3RvcmU6dGhpcy5zdG9yZSxsYW5ndWFnZTp0aGlzLmxhbmd1YWdlLGxhbmd1YWdlczp0aGlzLmxhbmd1YWdlcyxyZXNvbHZlZExhbmd1YWdlOnRoaXMucmVzb2x2ZWRMYW5ndWFnZX19fV0pLG59KEkpO18odGUsImNyZWF0ZUluc3RhbmNlIixmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBuZXcgdGUoaSx0KX0pO3ZhciB3PXRlLmNyZWF0ZUluc3RhbmNlKCk7dy5jcmVhdGVJbnN0YW5jZT10ZS5jcmVhdGVJbnN0YW5jZSx3LmNyZWF0ZUluc3RhbmNlLHcuaW5pdCx3LmxvYWRSZXNvdXJjZXMsdy5yZWxvYWRSZXNvdXJjZXMsdy51c2Usdy5jaGFuZ2VMYW5ndWFnZSx3LmdldEZpeGVkVCx3LnQsdy5leGlzdHMsdy5zZXREZWZhdWx0TmFtZXNwYWNlLHcuaGFzTG9hZGVkTmFtZXNwYWNlLHcubG9hZE5hbWVzcGFjZXMsdy5sb2FkTGFuZ3VhZ2VzO2NvbnN0IFB0PShpLHQpPT50eXBlb2YgaT09Im51bWJlciImJnR5cGVvZiB0PT0ibnVtYmVyIj9pLXQ6U3RyaW5nKGkpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKHQpKTtmdW5jdGlvbiBMdChpKXtyZXR1cm4gUHR9Y29uc3Qga3Q9THQoKTtmdW5jdGlvbiBJZShpLHQpe2lmKGkubGVuZ3RoPHQubGVuZ3RoKXJldHVybi1JZSh0LGkpO2ZvcihsZXQgbj0wO248aS5sZW5ndGg7bisrKXtpZighdFtuXSlyZXR1cm4gMTtjb25zdCByPWt0KGlbbl0sdFtuXSk7aWYociE9PTApcmV0dXJuIHJ9cmV0dXJuIDB9ZnVuY3Rpb24gUnQoaSx0LG4pe2NvbnN0IHI9bj09PSJhc2NlbmRpbmciPzE6LTE7cmV0dXJuIGkubWFwKGU9Pih7ZGF0YTplLHZhbHVlOnQubWFwKGE9PmVbYV0pfSkpLnNvcnQoKGUsYSk9PnIqSWUoZS52YWx1ZSxhLnZhbHVlKSkubWFwKGU9PmUuZGF0YSl9Y29uc3QganQ9aT0+e3RyeXtjb25zdHtkYXRhOnQsdmlld01lYXN1cmVzOm4sc29ydDpyfT1pLmRhdGEsZT1SdC
14h0LG4scik7c2VsZi5wb3N0TWVzc2FnZShlKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQuc3RhY2spLHNlbGYucG9zdE1lc3NhZ2UodC5zdGFjayl9fTtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGp0LCExKX0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvcnQud29ya2VyLUJ3dnRMaUtTLmpzLm1hcAo=",wae=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),HR=typeof self<"u"&&self.Blob&&new Blob([wae(MB)],{type:"text/javascript;charset=utf-8"});function Hae(e){let t;try{if(t=HR&&(self.URL||self.webkitURL).createObjectURL(HR),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+MB,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}function Cp(e,t){return new Promise((i,n)=>{e.postMessage(t),e.onmessage=s=>{typeof s.data=="string"&&n({success:!1,message:s.data}),i(s.data)},e.onerror=s=>{n({success:!1,message:s})}})}const Nae=async(e,t)=>{if(t.length===0)return e;const i=new Yae;try{return await Cp(i,{dataSource:e,filters:t})}catch(n){throw new Error(n.message)}finally{i.terminate()}},Rae=async(e,t)=>{if(e.length===0)return e;const i=new Vae;try{return await Cp(i,{dataSource:e,trans:t})}catch(n){throw new Error(n.message)}finally{i.terminate()}},kae=async(e,t)=>{const i=new gae;try{return await Cp(i,{dataSource:e,query:t})}catch(n){throw new Error(n.message)}finally{i.terminate()}},Fae=async(e,t,i,n,s,l,c)=>{const r=new zae;try{return await Cp(r,{dimsInRow:e,dimsInColumn:t,allData:i,aggData:n,collapsedKeyList:s,showTableSummary:l,sort:c})}catch(a){throw new Error("Uncaught error in TableBuilderDataWorker",{cause:a})}finally{r.terminate()}},Sae=async(e,t,i)=>{const n=new Hae;try{return await Cp(n,{data:e,viewMeasures:t,sort:i})}catch(s){throw new Error("Uncaught error in ViewQueryWorker",{cause:s})}finally{n.terminate()}},Lae={generic:["auto","bar","line","area","trail","point","circle","tick","rect","arc","text","boxplot","table"],geographic:["poi","choropleth"]},Cae=["x","y"],Tae=["color","opacity","shape","size"],Kf={GEOM_TYPES:Lae,POSITION_CHANNEL_CONFIG_LIST:Cae,NON_POSITION_CHANNEL_CONFIG_LIST:Tae};function Mae(){return{dimensions:[],measures:[],rows:[],columns:[],color:[],opacity:[],size:[],shape:[],radius:[],theta:[],longitude:[],latitude:[],geoId:[],details:[],filters:[],text:[]}}function Kae(){const[e]=Kf.GEOM_TYPES.generic;return{defaultAggregated:!0,geoms:[e],showTableSummary:!1,coordSystem:"generic",stack:"stack",showActions:!1,interactiveScale:!1,sorted:"none",zeroScale:!0,scaleIncludeUnmatchedChoropleth:!1,background:void 0,size:{mode:"auto",width:320,height:200},format:{numberFormat:void 0,timeFormat:void 0,normalizedNumberFormat:void 0},geoKey:"name",resolve:{x:!1,y:!1,color:!1,opacity:!1,shape:!1,size:!1},limit:-1}}const NR={showActions:!1,showTableSummary:!1,stack:"stack",interactiveScale:!1,zeroScale:!0,background:void 0,size:{mode:"auto",width:320,height:200},format:{numberFormat:void 0,timeFormat:void 0,normalizedNumberFormat:void 0},geoKey:"name",resolve:{x:!1,y:!1,color:!1,opacity:!1,shape:!1,size:!1},renderer:"vega-lite"},RR={defaultAggregated:!0,geoms:[Kf.GEOM_TYPES.generic[0]],coordSystem:"generic",limit:-1},Bae={dimensions:[],measures:[],rows:[],columns:[],color:[],opacity:[],size:[],shape:[],radius:[],theta:[],longitude:[],latitude:[],geoId:[],details:[],filters:[],text:[]};function _ae(e){return{...e,encodings:{...Mae(),...e.encodings}}}const Oae=e=>({...e,config:{...Kae(),...e.config}});let KB=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,i)=>(i&=63,i<36?t+=i.toString(36):i<62?t+=(i-26).toString(36).toUpperCase():i>62?t+="-":t+="_",t),"");function XW(){return"gw_"+KB(4)}const yy=(e,t,i)=>i===e.length?e.concat([t]):e.flatMap((n,s)=>s===i?[t,n]:[n]),kR=(e,t)=>e.filter((i,n)=>n!==t),Va=(e,t,i)=>e.map((n,s)=>s===t?i(n):n);function Xt(e,t,i){const n=(s,l,c)=>{const[r,...a]=l;return a.length===0?{...s,[r]:c(s[r])}:{...s,[r]:n(s[r],a,c)}};return n(e,t.split("."),i)}const jae=e=>Math.floor(Math.sqrt(2*e));function Eae(e){return(t,i)=>{const{base:n,cache:s,cursor:l,now:c,timeline:r}=t;return{base:n,now:e(c,i),cursor:l+1,cache:l-s.cursor>jae(l)?{value:e(s.value,r[s.cursor]),cursor:s.cursor+1}:s,timeline:r.slice(0,l).concat([i])}}}const Wc={measureAfterDimension(e){return e.filter(t=>t.analyticType==="dimension").concat(e.filter(t=>t.analyticType==="measure"))},crossLimit(e){return function(t){let i=0;return t.reduce((n,s)=>(s.analyticType==="dimension"&&i<e&&(n.push(s),i++),s.analyticType==="measure"&&n.push(s),n),[])}},forceAnalyticType(e){return function(t){return t.map(i=>({...i,analyticType:e}))}},forceSemanticType(e){return function(t){return t.map(i=>({...i,semanticType:e}))}}};function Zy(e,t){return t.reduce((i,n)=>n(i),e)}function nG(e,t){const i={};return t.rows&&t.rows.length>0&&(i.rows=Zy(t.rows,[Wc.measureAfterDimension,Wc.crossLimit(e==="table"?1/0:2)])),t.columns&&t.columns.length>0&&(i.columns=Zy(t.columns,[Wc.measureAfterDimension,Wc.crossLimit(e==="table"?1/0:2)])),t.latitude&&t.latitude.length>0&&(i.latitude=Zy(t.latitude,[Wc.forceAnalyticType("dimension"),Wc.forceSemanticType("quantitative"),Wc.crossLimit(1)])),t.longitude&&t.longitude.length>0&&(i.longitude=Zy(t.longitude,[Wc.forceAnalyticType("dimension"),Wc.forceSemanticType("quantitative"),Wc.crossLimit(1)])),i}var df={},Yx={exports:{}},FR;function Pae(){return FR||(FR=1,function(e){(function(t,i){e.exports?e.exports=i():t.moo=i()})(wI,function(){var t=Object.prototype.hasOwnProperty,i=Object.prototype.toString,n=typeof new RegExp().sticky=="boolean";function s(x){return x&&i.call(x)==="[object RegExp]"}function l(x){return x&&typeof x=="object"&&!s(x)&&!Array.isArray(x)}function c(x){return x.replace(/[-\/\\^$*+?.()|[\]{}]/g,function(R){return R==="-"?"\\x2d":"\\"+R})}function r(x){var R=new RegExp("|"+x);return R.exec("").length-1}function a(x){return"("+x+")"}function u(x){if(!x.length)return"(?!)";var R=x.map(function(K){return"(?:"+K+")"}).join("|");return"(?:"+R+")"}
vendor: 5,817 bytes, lines 14-18
14function o(x){if(typeof x=="string")return"(?:"+c(x)+")";if(s(x)){if(x.ignoreCase)throw new Error("RegExp /i flag not allowed");if(x.global)throw new Error("RegExp /g flag is implied");if(x.sticky)throw new Error("RegExp /y flag is implied");if(x.multiline)throw new Error("RegExp /m flag is implied");return x.source}else throw new Error("Not a pattern: "+x)}function d(x,R){return x.length>R?x:Array(R-x.length+1).join(" ")+x}function b(x,R){for(var K=x.length,B=0;;){var _=x.lastIndexOf(` 15`,K-1);if(_===-1||(B++,K=_,B===R)||K===0)break}var j=B<R?0:K+1;return x.substring(j).split(` 16`)}function h(x){for(var R=Object.getOwnPropertyNames(x),K=[],B=0;B<R.length;B++){var _=R[B],j=x[_],U=[].concat(j);if(_==="include"){for(var $=0;$<U.length;$++)K.push({include:U[$]});continue}var te=[];U.forEach(function(E){l(E)?(te.length&&K.push(Z(_,te)),K.push(Z(_,E)),te=[]):te.push(E)}),te.length&&K.push(Z(_,te))}return K}function p(x){for(var R=[],K=0;K<x.length;K++){var B=x[K];if(B.include){for(var _=[].concat(B.include),j=0;j<_.length;j++)R.push({include:_[j]});continue}if(!B.type)throw new Error("Rule has no type: "+JSON.stringify(B));R.push(Z(B.type,B))}return R}function Z(x,R){if(l(R)||(R={match:R}),R.include)throw new Error("Matching rules cannot also include states");var K={defaultType:x,lineBreaks:!!R.error||!!R.fallback,pop:!1,next:null,push:null,error:!1,fallback:!1,value:null,type:null,shouldThrow:!1};for(var B in R)t.call(R,B)&&(K[B]=R[B]);if(typeof K.type=="string"&&x!==K.type)throw new Error("Type transform cannot be a string (type '"+K.type+"' for token '"+x+"')");var _=K.match;return K.match=Array.isArray(_)?_:_?[_]:[],K.match.sort(function(j,U){return s(j)&&s(U)?0:s(U)?-1:s(j)?1:U.length-j.length}),K}function X(x){return Array.isArray(x)?p(x):h(x)}var J=Z("error",{lineBreaks:!0,shouldThrow:!0});function V(x,R){for(var K=null,B=Object.create(null),_=!0,j=null,U=[],$=[],te=0;te<x.length;te++)x[te].fallback&&(_=!1);for(var te=0;te<x.length;te++){var E=x[te];if(E.include)throw new Error("Inheritance is not allowed in stateless lexers");if(E.error||E.fallback){if(K)throw!E.fallback==!K.fallback?new Error("Multiple "+(E.fallback?"fallback":"error")+" rules not allowed (for token '"+E.defaultType+"')"):new Error("fallback and error are mutually exclusive (for token '"+E.defaultType+"')");K=E}var ie=E.match.slice();if(_)for(;ie.length&&typeof ie[0]=="string"&&ie[0].length===1;){var ee=ie.shift();B[ee.charCodeAt(0)]=E}if(E.pop||E.push||E.next){if(!R)throw new Error("State-switching options are not allowed in stateless lexers (for token '"+E.defaultType+"')");if(E.fallback)throw new Error("State-switching options are not allowed on fallback tokens (for token '"+E.defaultType+"')")}if(ie.length!==0){_=!1,U.push(E);for(var A=0;A<ie.length;A++){var le=ie[A];if(s(le)){if(j===null)j=le.unicode;else if(j!==le.unicode&&E.fallback===!1)throw new Error("If one rule is /u then all must be")}}var ne=u(ie.map(o)),se=new RegExp(ne);if(se.test(""))throw new Error("RegExp matches empty string: "+se);var oe=r(ne);if(oe>0)throw new Error("RegExp has capture groups: "+se+` 17Use (?: ⦠) instead`);if(!E.lineBreaks&&se.test(` 18`))throw new Error("Rule should declare lineBreaks: "+se);$.push(a(ne))}}var de=K&&K.fallback,Je=n&&!de?"ym":"gm",Ie=n||de?"":"|";j===!0&&(Je+="u");var Ye=new RegExp(u($)+Ie,Je);return{regexp:Ye,groups:U,fast:B,error:K||J}}function g(x){var R=V(X(x));return new N({start:R},"start")}function I(x,R,K){var B=x&&(x.push||x.next);if(B&&!K[B])throw new Error("Missing state '"+B+"' (in token '"+x.defaultType+"' of state '"+R+"')");if(x&&x.pop&&+x.pop!=1)throw new Error("pop must be 1 (in token '"+x.defaultType+"' of state '"+R+"')")}function v(x,R){var K=x.$all?X(x.$all):[];delete x.$all;var B=Object.getOwnPropertyNames(x);R||(R=B[0]);for(var _=Object.create(null),j=0;j<B.length;j++){var U=B[j];_[U]=X(x[U]).concat(K)}for(var j=0;j<B.length;j++)for(var U=B[j],$=_[U],te=Object.create(null),E=0;E<$.length;E++){var ie=$[E];if(ie.include){var ee=[E,1];if(ie.include!==U&&!te[ie.include]){te[ie.include]=!0;var A=_[ie.include];if(!A)throw new Error("Cannot include nonexistent state '"+ie.include+"' (in state '"+U+"')");for(var le=0;le<A.length;le++){var ne=A[le];$.indexOf(ne)===-1&&ee.push(ne)}}$.splice.apply($,ee),E--}}for(var se=Object.create(null),j=0;j<B.length;j++){var U=B[j];se[U]=V(_[U],!0)}for(var j=0;j<B.length;j++){for(var oe=B[j],de=se[oe],Je=de.groups,E=0;E<Je.length;E++)I(Je[E],oe,se);for(var Ie=Object.getOwnPropertyNames(de.fast),E=0;E<Ie.length;E++)I(de.fast[Ie[E]],oe,se)}return new N(se,R)}function k(x){for(var R=typeof Map<"u",K=R?new Map:Object.create(null),B=Object.getOwnPropertyNames(x),_=0;_<B.length;_++){var j=B[_],U=x[j],$=Array.isArray(U)?U:[U];$.forEach(function(te){if(typeof te!="string")throw new Error("keyword must be string (in keyword '"+j+"')");R?K.set(te,j):K[te]=j})}return function(te){return R?K.get(te):K[te]}}var N=function(x,R){this.startState=R,this.states=x,this.buffer="",this.stack=[],this.reset()};N.prototype.reset=function(x,R){return this.buffer=x||"",this.index=0,this.line=R?R.line:1,this.col=R?R.col:1,this.queuedToken=R?R.queuedToken:null,this.queuedText=R?R.queuedText:"",this.queuedThrow=R?R.queuedThrow:null,this.setState(R?R.state:this.startState),this.stack=R&&R.stack?R.stack.slice():[],this},N.prototype.save=function(){return{line:this.line,col:this.col,state:this.state,stack:this.stack.slice(),queuedToken:this.queuedToken,queuedText:this.queuedText,queuedThrow:this.queuedThrow}},N.prototype.setState=function(x){if(!(!x||this.state===x)){this.state=x;var R=this.states[x];this.groups=R.groups,this.error=R.error,this.re=R.regexp,this.fast=R.fast}},N.prototype.popState=function(){this.setState(this.stack.pop())},N.prototype.pushState=function(x){this.stack.push(this.state),this.setState(x)};
18var C=n?function(x,R){return x.exec(R)}:function(x,R){var K=x.exec(R);return K[0].length===0?null:K};N.prototype._getGroup=function(x){for(var R=this.groups.length,K=0;K<R;K++)if(x[K+1]!==void 0)return this.groups[K];throw new Error("Cannot find token type for matched text")};function f(){return this.value}if(N.prototype.next=function(){var x=this.index;if(this.queuedGroup){var R=this._token(this.queuedGroup,this.queuedText,x);return this.queuedGroup=null,this.queuedText="",R}var K=this.buffer;if(x!==K.length){var U=this.fast[K.charCodeAt(x)];if(U)return this._token(U,K.charAt(x),x);var B=this.re;B.lastIndex=x;var _=C(B,K),j=this.error;if(_==null)return this._token(j,K.slice(x,K.length),x);var U=this._getGroup(_),$=_[0];return j.fallback&&_.index!==x?(this.queuedGroup=U,this.queuedText=$,this._token(j,K.slice(x,_.index),x)):this._token(U,$,x)}},N.prototype._token=function(x,R,K){var B=0;if(x.lineBreaks){var _=/\n/g,j=1;if(R===` 19`)B=1;else for(;_.exec(R);)B++,j=_.lastIndex}var U={type:typeof x.type=="function"&&x.type(R)||x.defaultType,value:typeof x.value=="function"?x.value(R):R,text:R,toString:f,offset:K,lineBreaks:B,line:this.line,col:this.col},$=R.length;if(this.index+=$,this.line+=B,B!==0?this.col=$-j+1:this.col+=$,x.shouldThrow){var te=new Error(this.formatError(U,"invalid syntax"));throw te}return x.pop?this.popState():x.push?this.pushState(x.push):x.next&&this.setState(x.next),U},typeof Symbol<"u"&&Symbol.iterator){var w=function(x){this.lexer=x};w.prototype.next=function(){var x=this.lexer.next();return{value:x,done:!x}},w.prototype[Symbol.iterator]=function(){return this},N.prototype[Symbol.iterator]=function(){return new w(this)}}return N.prototype.formatError=function(x,R){if(x==null)var K=this.buffer.slice(this.index),x={text:K,offset:this.index,lineBreaks:K.indexOf(` 20`)===-1?0:1,line:this.line,col:this.col};var B=2,_=Math.max(x.line-B,1),j=x.line+B,U=String(j).length,$=b(this.buffer,this.line-x.line+B+1).slice(0,5),te=[];te.push(R+" at line "+x.line+" col "+x.col+":"),te.push("");for(var E=0;E<$.length;E++){var ie=$[E],ee=_+E;te.push(d(String(ee),U)+" "+ie),ee===x.line&&te.push(d("",U+x.col+1)+"^")}return te.join(` 21`)},N.prototype.clone=function(){return new N(this.states,this.state)},N.prototype.has=function(x){return!0},{compile:g,states:v,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:k}})}(Yx)),Yx.exports}var Gx={exports:{}},SR;function Uae(){return SR||(SR=1,function(e){(function(t,i){e.exports?e.exports=i():t.nearley=i()})(wI,function(){function t(u,o,d){return this.id=++t.highestId,this.name=u,this.symbols=o,this.postprocess=d,this}t.highestId=0,t.prototype.toString=function(u){var o=typeof u>"u"?this.symbols.map(a).join(" "):this.symbols.slice(0,u).map(a).join(" ")+" â "+this.symbols.slice(u).map(a).join(" ");return this.name+" â "+o};function i(u,o,d,b){this.rule=u,this.dot=o,this.reference=d,this.data=[],this.wantedBy=b,this.isComplete=this.dot===u.symbols.length}i.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},i.prototype.nextState=function(u){var o=new i(this.rule,this.dot+1,this.reference,this.wantedBy);return o.left=this,o.right=u,o.isComplete&&(o.data=o.build(),o.right=void 0),o},i.prototype.build=function(){var u=[],o=this;do u.push(o.right.data),o=o.left;while(o.left);return u.reverse(),u},i.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,c.fail))};function n(u,o){this.grammar=u,this.index=o,this.states=[],this.wants={},this.scannable=[],this.completed={}}n.prototype.process=function(u){for(var o=this.states,d=this.wants,b=this.completed,h=0;h<o.length;h++){var p=o[h];if(p.isComplete){if(p.finish(),p.data!==c.fail){for(var Z=p.wantedBy,X=Z.length;X--;){var J=Z[X];this.complete(J,p)}if(p.reference===this.index){var V=p.rule.name;(this.completed[V]=this.completed[V]||[]).push(p)}}}else{var V=p.rule.symbols[p.dot];if(typeof V!="string"){this.scannable.push(p);continue}if(d[V]){if(d[V].push(p),b.hasOwnProperty(V))for(var g=b[V],X=0;X<g.length;X++){var I=g[X];this.complete(p,I)}}else d[V]=[p],this.predict(V)}}},n.prototype.predict=function(u){for(var o=this.grammar.byName[u]||[],d=0;d<o.length;d++){var b=o[d],h=this.wants[u],p=new i(b,0,this.index,h);this.states.push(p)}},n.prototype.complete=function(u,o){var d=u.nextState(o);this.states.push(d)};function s(u,o){this.rules=u,this.start=o||this.rules[0].name;var d=this.byName={};
vendor: 4,590 bytes, lines 21-32
21this.rules.forEach(function(b){d.hasOwnProperty(b.name)||(d[b.name]=[]),d[b.name].push(b)})}s.fromCompiled=function(b,o){var d=b.Lexer;b.ParserStart&&(o=b.ParserStart,b=b.ParserRules);var b=b.map(function(p){return new t(p.name,p.symbols,p.postprocess)}),h=new s(b,o);return h.lexer=d,h};function l(){this.reset("")}l.prototype.reset=function(u,o){this.buffer=u,this.index=0,this.line=o?o.line:1,this.lastLineBreak=o?-o.col:0},l.prototype.next=function(){if(this.index<this.buffer.length){var u=this.buffer[this.index++];return u===` 22`&&(this.line+=1,this.lastLineBreak=this.index),{value:u}}},l.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},l.prototype.formatError=function(u,o){var d=this.buffer;if(typeof d=="string"){var b=d.split(` 23`).slice(Math.max(0,this.line-5),this.line),h=d.indexOf(` 24`,this.index);h===-1&&(h=d.length);var p=this.index-this.lastLineBreak,Z=String(this.line).length;return o+=" at line "+this.line+" col "+p+`: 25 26`,o+=b.map(function(J,V){return X(this.line-b.length+V+1,Z)+" "+J},this).join(` 27`),o+=` 28`+X("",Z+p)+`^ 29`,o}else return o+" at index "+(this.index-1);function X(J,V){var g=String(J);return Array(V-g.length+1).join(" ")+g}};function c(u,o,d){if(u instanceof s)var b=u,d=o;else var b=s.fromCompiled(u,o);this.grammar=b,this.options={keepHistory:!1,lexer:b.lexer||new l};for(var h in d||{})this.options[h]=d[h];this.lexer=this.options.lexer,this.lexerState=void 0;var p=new n(b,0);this.table=[p],p.wants[b.start]=[],p.predict(b.start),p.process(),this.current=0}c.fail={},c.prototype.feed=function(u){var o=this.lexer;o.reset(u,this.lexerState);for(var d;;){try{if(d=o.next(),!d)break}catch(N){var Z=new n(this.grammar,this.current+1);this.table.push(Z);var b=new Error(this.reportLexerError(N));throw b.offset=this.current,b.token=N.token,b}var h=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var p=this.current+1,Z=new n(this.grammar,p);this.table.push(Z);for(var X=d.text!==void 0?d.text:d.value,J=o.constructor===l?d.value:d,V=h.scannable,g=V.length;g--;){var I=V[g],v=I.rule.symbols[I.dot];if(v.test?v.test(J):v.type?v.type===d.type:v.literal===X){var k=I.nextState({data:J,token:d,isToken:!0,reference:p-1});Z.states.push(k)}}if(Z.process(),Z.states.length===0){var b=new Error(this.reportError(d));throw b.offset=this.current,b.token=d,b}this.options.keepHistory&&(h.lexerState=o.save()),this.current++}return h&&(this.lexerState=o.save()),this.results=this.finish(),this},c.prototype.reportLexerError=function(u){var o,d,b=u.token;return b?(o="input "+JSON.stringify(b.text[0])+" (lexer error)",d=this.lexer.formatError(b,"Syntax error")):(o="input (lexer error)",d=u.message),this.reportErrorCommon(d,o)},c.prototype.reportError=function(u){var o=(u.type?u.type+" token: ":"")+JSON.stringify(u.value!==void 0?u.value:u),d=this.lexer.formatError(u,"Syntax error");return this.reportErrorCommon(d,o)},c.prototype.reportErrorCommon=function(u,o){var d=[];d.push(u);var b=this.table.length-2,h=this.table[b],p=h.states.filter(function(X){var J=X.rule.symbols[X.dot];return J&&typeof J!="string"});if(p.length===0)d.push("Unexpected "+o+`. I did not expect any more input. Here is the state of my parse table: 30`),this.displayStateStack(h.states,d);else{d.push("Unexpected "+o+`. Instead, I was expecting to see one of the following: 31`);var Z=p.map(function(X){return this.buildFirstStateStack(X,[])||[X]},this);Z.forEach(function(X){var J=X[0],V=J.rule.symbols[J.dot],g=this.getSymbolDisplay(V);d.push("A "+g+" based on:"),this.displayStateStack(X,d)},this)}return d.push(""),d.join(` 32`)},c.prototype.displayStateStack=function(u,o){for(var d,b=0,h=0;h<u.length;h++){var p=u[h],Z=p.rule.toString(p.dot);Z===d?b++:(b>0&&o.push(" ^ "+b+" more lines identical to this"),b=0,o.push(" "+Z)),d=Z}},c.prototype.getSymbolDisplay=function(u){return r(u)},c.prototype.buildFirstStateStack=function(u,o){if(o.indexOf(u)!==-1)return null;if(u.wantedBy.length===0)return[u];var d=u.wantedBy[0],b=[u].concat(o),h=this.buildFirstStateStack(d,b);return h===null?null:[u].concat(h)},c.prototype.save=function(){var u=this.table[this.current];return u.lexerState=this.lexerState,u},c.prototype.restore=function(u){var o=u.index;this.current=o,this.table[o]=u,this.table.splice(o+1),this.lexerState=u.lexerState,this.results=this.finish()},c.prototype.rewind=function(u){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[u])},c.prototype.finish=function(){var u=[],o=this.grammar.start,d=this.table[this.table.length-1];
32return d.states.forEach(function(b){b.rule.name===o&&b.dot===b.rule.symbols.length&&b.reference===0&&b.data!==c.fail&&u.push(b)}),u.map(function(b){return b.data})};function r(u){var o=typeof u;if(o==="string")return u;if(o==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return"character matching "+u;if(u.type)return u.type+" token";if(u.test)return"token matching "+String(u.test);throw new Error("Unknown symbol type: "+u)}}function a(u){var o=typeof u;if(o==="string")return u;if(o==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return u.toString();if(u.type)return"%"+u.type;if(u.test)return"<"+String(u.test)+">";throw new Error("Unknown symbol type: "+u)}}return{Parser:c,Grammar:s,Rule:t}})}(Gx)),Gx.exports}(function(e){(function(t,i){for(var n in i)t[n]=i[n]})(e,function(t){var i={};function n(s){if(i[s])return i[s].exports;var l=i[s]={i:s,l:!1,exports:{}};return t[s].call(l.exports,l,l.exports,n),l.l=!0,l.exports}return n.m=t,n.c=i,n.d=function(s,l,c){n.o(s,l)||Object.defineProperty(s,l,{enumerable:!0,get:c})},n.r=function(s){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},n.t=function(s,l){if(l&1&&(s=n(s)),l&8||l&4&&typeof s=="object"&&s&&s.__esModule)return s;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:s}),l&2&&typeof s!="string")for(var r in s)n.d(c,r,(function(a){return s[a]}).bind(null,r));return c},n.n=function(s){var l=s&&s.__esModule?function(){return s.default}:function(){return s};return n.d(l,"a",l),l},n.o=function(s,l){return Object.prototype.hasOwnProperty.call(s,l)},n.p="",n(n.s=7)}([function(t,i){t.exports=Pae()},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.unbox=i.doubleQuoted=i.box=i.track=i.tracking=i.trackingComments=i.lexerAny=i.lexer=void 0;const s=n(0),l=n(3),c={};for(const v of l.sqlKeywords)c["kw_"+v.toLowerCase()]=v;const r=v=>{const k=(0,s.keywords)(v);return N=>k(N.toUpperCase())};i.lexer=(0,s.compile)({word:{match:/[eE](?!')[A-Za-z0-9_]*|[a-df-zA-DF-Z_][A-Za-z0-9_]*/,type:r(c),value:v=>v.toLowerCase()},wordQuoted:{match:/"(?:[^"\*]|"")+"/,type:()=>"quoted_word",value:v=>v.substring(1,v.length-1)},string:{match:/'(?:[^']|\'\')*'/,value:v=>v.substring(1,v.length-1).replace(/''/g,"'")},eString:{match:/\b(?:e|E)'(?:[^'\\]|[\r\n\s]|(?:\\\s)|(?:\\\n)|(?:\\.)|(?:\'\'))+'/,value:v=>v.substring(2,v.length-1).replace(/''/g,"'").replace(/\\([\s\n])/g,(k,N)=>N).replace(/\\./g,k=>JSON.parse('"'+k+'"'))},qparam:{match:/\$\d+/},commentLine:/\-\-.*?$[\s\r\n]*/,commentFullOpen:/\/\*/,commentFullClose:/\*\/[\s\r\n]*/,star:"*",comma:",",space:{match:/[\s\t\n\v\f\r]+/,lineBreaks:!0},int:/\-?\d+(?![\.\d])/,float:/\-?(?:(?:\d*\.\d+)|(?:\d+\.\d*))/,lparen:"(",rparen:")",lbracket:"[",rbracket:"]",semicolon:";",dot:/\.(?!\d)/,op_cast:"::",op_colon:":",op_plus:"+",op_eq:"=",op_neq:{match:/(?:!=)|(?:\<\>)/,value:()=>"!="},op_membertext:"->>",op_member:"->",op_minus:"-",op_div:/\//,op_not_ilike:/\!~~\*/,op_not_like:/\!~~/,op_ilike:/~~\*/,op_like:/~~/,op_mod:"%",op_exp:"^",op_additive:{match:["||","-","#-","&&"]},op_compare:{match:[">",">=","<","<=","@>","<@","?","?|","?&","#>>",">>","<<","~","~*","!~","!~*","@@"]},ops_others:{match:["|","&","^","#"]},codeblock:{match:/\$\$(?:.|[\s\t\n\v\f\r])*?\$\$/s,lineBreaks:!0,value:v=>v.substring(2,v.length-2)}}),i.lexer.next=(v=>()=>{let k,N=null;for(;k=v.call(i.lexer);){if(k.type==="commentFullOpen"){if(N===null){N={nested:0,offset:k.offset,text:k.text};continue}N.nested++}if(N!=null){if(N.text+=k.text,k.type==="commentFullClose"){if(N.nested===0){a==null||a.push(u(N)),N=null;continue}N.nested--}continue}if(k.type!=="space"){if(k.type==="commentLine"){a==null||a.push(u(k));continue}break}}if(d&&k){const C=k.offset,f={start:C,end:C+k.text.length};k._location=f}return k})(i.lexer.next),i.lexerAny=i.lexer;let a=null;const u=({offset:v,text:k})=>({_location:{start:v,end:v+k.length},comment:k});function o(v){if(a)throw new Error("WAT ? Recursive comments tracking ð¤ð¤¨ ?");try{a=[];const k=v();return{comments:a,ast:k}}finally{a=null}}i.trackingComments=o;let d=!1;function b(v){if(d)return v();try{return d=!0,v()}finally{d=!1}}i.tracking=b;function h(v,k){if(!d||!k||typeof k!="object")return k;const N=I(v,!0),C=I(v,!1);if(!N||!C)return k;if(N===C)k._location=N;else{const f={start:N.start,end:C.end};k._location=f}return k}i.track=h;const p=Symbol("_literal"),Z=Symbol("_doublequoted");function X(v,k,N){return!d&&!N?k:h(v,{[p]:k,[Z]:N})}i.box=X;function J(v){return Array.isArray(v)&&v.length===1&&(v=J(v[0])),Array.isArray(v)&&!v.length?null:v}function V(v){const k=J(v);if(typeof v=="object"&&(k!=null&&k[Z]))return{doubleQuoted:!0}}i.doubleQuoted=V;function g(v){var k;
32return typeof v=="object"&&(k=v==null?void 0:v[p])!==null&&k!==void 0?k:v}i.unbox=g;function I(v,k){if(!v)return null;if(Array.isArray(v)){const N=k?1:-1;for(let C=k?0:v.length-1;C>=0&&C<v.length;C+=N){const f=I(v[C],k);if(f)return f}return null}return typeof v!="object"?null:v._location}},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.AstDefaultMapper=i.arrayNilMap=i.assignChanged=i.astMapper=void 0;const s=n(6);function l(b){const h=new u;return h.wrapped=b(h),h}i.astMapper=l;function c(b,h){if(!b)return b;let p=!1;for(const Z of Object.keys(h))if(b[Z]!==h[Z]){p=!0;break}return p?(0,s.trimNullish)({...b,...h},0):b}i.assignChanged=c;function r(b,h){if(!(b!=null&&b.length))return b;let p=!1,Z=b;for(let X=0;X<b.length;X++){const J=b[X],V=h(J);!p&&(!V||V!==J)&&(p=!0,Z=b.slice(0,X)),V&&p&&Z.push(V)}return Z}i.arrayNilMap=r;function a(b){switch(b==null?void 0:b.type){case"select":case"delete":case"insert":case"update":case"union":case"union all":case"with":return!0;default:return!1}}class u{super(){return new d(this)}
32statement(h){switch(h.type){case"alter table":return this.alterTable(h);case"alter index":return this.alterIndex(h);case"commit":case"start transaction":case"rollback":return this.transaction(h);case"create index":return this.createIndex(h);case"create table":return this.createTable(h);case"truncate table":return this.truncateTable(h);case"delete":return this.delete(h);case"insert":return this.insert(h);case"with":return this.with(h);case"with recursive":return this.withRecursive(h);case"select":return this.selection(h);case"update":return this.update(h);case"create extension":return this.createExtension(h);case"tablespace":return this.tablespace(h);case"set":return this.setGlobal(h);case"set timezone":return this.setTimezone(h);case"set names":return this.setNames(h);case"create sequence":return this.createSequence(h);case"alter sequence":return this.alterSequence(h);case"begin":return this.begin(h);case"drop table":case"drop index":case"drop sequence":case"drop type":case"drop trigger":return this.drop(h);case"create enum":return this.createEnum(h);case"create composite type":return this.createCompositeType(h);case"union":case"union all":return this.union(h);case"show":return this.show(h);case"prepare":return this.prepare(h);case"deallocate":return this.deallocate(h);case"create view":return this.createView(h);case"create materialized view":return this.createMaterializedView(h);case"refresh materialized view":return this.refreshMaterializedView(h);case"create schema":return this.createSchema(h);case"raise":return this.raise(h);case"comment":return this.comment(h);case"do":return this.do(h);case"create function":return this.createFunction(h);case"drop function":return this.dropFunction(h);case"values":return this.values(h);default:throw s.NotSupported.never(h)}}comment(h){return h}createView(h){const p=this.select(h.query);if(!p)return null;const Z=this.tableRef(h.name);return Z?c(h,{query:p,name:Z}):null}createMaterializedView(h){const p=this.select(h.query);if(!p)return null;const Z=this.tableRef(h.name);return Z?c(h,{query:p,name:Z}):null}refreshMaterializedView(h){return h}do(h){return h}createFunction(h){const p=r(h.arguments,X=>{const J=this.dataType(X.type);return c(X,{type:J})});let Z;if(h.returns)switch(h.returns.kind){case"table":Z=c(h.returns,{columns:r(h.returns.columns,X=>{const J=this.dataType(X.type);return J&&c(X,{type:J})})});break;case void 0:case null:case"array":Z=this.dataType(h.returns);break;default:throw s.NotSupported.never(h.returns)}return c(h,{returns:Z,arguments:p})}dropFunction(h){const p=r(h.arguments,Z=>{const X=this.dataType(Z.type);return c(Z,{type:X})});return c(h,{arguments:p})}show(h){return h}createEnum(h){return h}createCompositeType(h){const p=r(h.attributes,Z=>c(Z,{dataType:this.dataType(Z.dataType)}));return c(h,{attributes:p})}drop(h){return h}alterSequence(h){return h.change.type==="set options"&&h.change.as&&this.dataType(h.change.as),h}begin(h){return h}createSequence(h){return h.options.as&&this.dataType(h.options.as),h}tablespace(h){return h}setGlobal(h){return h}setTimezone(h){return h}setNames(h){return h}update(h){if(!h)return h;const p=this.tableRef(h.table);if(!p)return null;const Z=h.from&&this.from(h.from),X=h.where&&this.expr(h.where),J=r(h.sets,g=>this.set(g));if(!(J!=null&&J.length))return null;const V=r(h.returning,g=>this.selectionColumn(g));return c(h,{table:p,where:X,sets:J,from:Z,returning:V})}insert(h){var p,Z;const X=this.tableRef(h.into);if(!X)return null;const J=h.insert&&this.select(h.insert);if(!J)return null;const V=r(h.returning,v=>this.selectionColumn(v));let g=(p=h.onConflict)===null||p===void 0?void 0:p.on;switch(g==null?void 0:g.type){case"on constraint":break;case"on expr":g=c(g,{exprs:r(g.exprs,v=>this.expr(v))});break;case null:case void 0:break;default:throw s.NotSupported.never(g)}let I=(Z=h.onConflict)===null||Z===void 0?void 0:Z.do;if(I&&I!=="do nothing"){const v=r(I.sets,k=>this.set(k));v!=null&&v.length?I.sets!==v&&(I={sets:v}):I="do nothing"}return c(h,{into:X,insert:J,returning:V,onConflict:I?c(h.onConflict,{do:I,on:g}):h.onConflict})}raise(h){return c(h,{formatExprs:h.formatExprs&&r(h.formatExprs,p=>this.expr(p)),using:h.using&&r(h.using,p=>c(p,{value:this.expr(p.value)}))})}delete(h){const p=this.tableRef(h.from);if(!p)return null;const Z=h.where&&this.expr(h.where),X=r(h.returning,J=>this.selectionColumn(J));return c(h,{where:Z,returning:X,from:p})}createSchema(h){return h}createTable(h){const p=r(h.columns,Z=>{switch(Z.kind){case"column":return this.createColumn(Z);case"like table":return this.likeTable(Z);default:throw s.NotSupported.never(Z)}});return p!=null&&p.length?c(h,{columns:p}):null}likeTable(h){const p=this.tableRef(h.like);return p?c(h,{like:p}):null}truncateTable(h){return h}constraint(h){switch(h.type){case"not null":case"null":case"primary key":case"unique":case"add generated":return h;case"default":{const p=this.expr(h.default);return p?c(h,{default:p}):null}case"check":{const p=this.expr(h.expr);return p?c(h,{expr:p}):null}case"reference":{const p=this.tableRef(h.foreignTable);return p?c(h,{foreignTable:p}):null}default:throw s.NotSupported.never(h)}}set(h){const p=this.expr(h.value);return p?c(h,{value:p}):null}dataType(h){return h}tableRef(h){return h}transaction(h){return h}createExtension(h){return h}createIndex(h){const p=r(h.expressions,Z=>{const X=this.expr(Z.expression);return X===Z.expression?Z:X?{...Z,expression:X}:null});return p!=null&&p.length?c(h,{expressions:p}):null}
32prepare(h){const p=this.statement(h.statement);return p?c(h,{args:r(h.args,Z=>this.dataType(Z)),statement:p}):null}deallocate(h){return h}alterIndex(h){return h}alterTable(h){var p;const Z=this.tableRef(h.table);if(!Z)return null;let X=[],J=!1;for(let V=0;V<(((p=h.changes)===null||p===void 0?void 0:p.length)||0);V++){const g=h.changes[V],I=this.tableAlteration(g,h.table);J=J||I!=g,I&&X.push(I)}return X.length?J?c(h,{table:Z,changes:X}):h:null}tableAlteration(h,p){switch(h.type){case"add column":return this.addColumn(h,p);case"add constraint":return this.addConstraint(h,p);case"alter column":return this.alterColumn(h,p);case"rename":return this.renameTable(h,p);case"rename column":return this.renameColumn(h,p);case"rename constraint":return this.renameConstraint(h,p);case"drop column":return this.dropColumn(h,p);case"drop constraint":return this.dropConstraint(h,p);case"owner":return this.setTableOwner(h,p);default:throw s.NotSupported.never(h)}}dropColumn(h,p){return h}dropConstraint(h,p){return h}setTableOwner(h,p){return h}renameConstraint(h,p){return h}renameColumn(h,p){return h}renameTable(h,p){return h}alterColumn(h,p){let Z;switch(h.alter.type){case"set default":Z=this.setColumnDefault(h.alter,p,h.column);break;case"set type":Z=this.setColumnType(h.alter,p,h.column);break;case"drop default":case"set not null":case"drop not null":Z=this.alterColumnSimple(h.alter,p,h.column);break;case"add generated":Z=this.alterColumnAddGenerated(h.alter,p,h.column);break;default:throw s.NotSupported.never(h.alter)}return Z?c(h,{alter:Z}):null}setColumnType(h,p,Z){const X=this.dataType(h.dataType);return c(h,{dataType:X})}alterColumnAddGenerated(h,p,Z){return h}alterColumnSimple(h,p,Z){return h}setColumnDefault(h,p,Z){const X=this.expr(h.default);return X?c(h,{default:X}):null}addConstraint(h,p){return h}addColumn(h,p){const Z=this.createColumn(h.column);return Z?c(h,{column:Z}):null}createColumn(h){var p;const Z=this.dataType(h.dataType);if(!Z)return null;const X=(p=r(h.constraints,J=>this.constraint(J)))!==null&&p!==void 0?p:void 0;return c(h,{dataType:Z,constraints:X})}select(h){switch(h.type){case"select":return this.selection(h);case"union":case"union all":return this.union(h);case"with":return this.with(h);case"values":return this.values(h);case"with recursive":return this.withRecursive(h);default:throw s.NotSupported.never(h)}}selection(h){var p,Z;const X=r(h.from,N=>this.from(N)),J=r(h.columns,N=>this.selectionColumn(N)),V=h.where&&this.expr(h.where),g=r(h.groupBy,N=>this.expr(N)),I=h.having&&this.expr(h.having),v=this.orderBy(h.orderBy),k=c(h.limit,{limit:this.expr((p=h.limit)===null||p===void 0?void 0:p.limit),offset:this.expr((Z=h.limit)===null||Z===void 0?void 0:Z.offset)});return c(h,{from:X,columns:J,where:V,groupBy:g,having:I,orderBy:v,limit:k})}orderBy(h){return r(h,p=>{const Z=this.expr(p.by);return Z?Z===p.by?p:{...p,by:Z}:null})}union(h){const p=this.select(h.left),Z=this.select(h.right);return!p||!Z?p??Z:c(h,{left:p,right:Z})}with(h){const p=r(h.bind,X=>{const J=this.statement(X.statement);return a(J)?c(X,{statement:J}):null});if(!p)return null;const Z=this.statement(h.in);return a(Z)?c(h,{bind:p,in:Z}):null}withRecursive(h){const p=this.union(h.bind);if(!p||p.type!=="union"&&p.type!=="union all")return null;const Z=this.statement(h.in);return a(Z)?c(h,{bind:p,in:Z}):null}from(h){switch(h.type){case"table":return this.fromTable(h);case"statement":return this.fromStatement(h);case"call":return this.fromCall(h);default:throw s.NotSupported.never(h)}}fromCall(h){const p=this.call(h);return!p||p.type!=="call"?null:c(h,p)}fromStatement(h){const p=this.select(h.statement);if(!p)return null;const Z=h.join&&this.join(h.join);return c(h,{statement:p,join:Z})}values(h){const p=r(h.values,Z=>r(Z,X=>this.expr(X)));return p!=null&&p.length?c(h,{values:p}):null}join(h){const p=h.on&&this.expr(h.on);return!p&&!h.using?h:c(h,{on:p})}fromTable(h){const p=this.tableRef(h.name);if(!p)return null;const Z=h.join&&this.join(h.join);return c(h,{name:p,join:Z})}selectionColumn(h){const p=this.expr(h.expr);return p?c(h,{expr:p}):null}
32expr(h){if(!h)return h;switch(h.type){case"binary":return this.binary(h);case"unary":return this.unary(h);case"ref":return this.ref(h);case"string":case"numeric":case"integer":case"boolean":case"constant":case"null":return this.constant(h);case"list":case"array":return this.array(h);case"array select":return this.arraySelect(h);case"call":return this.call(h);case"cast":return this.cast(h);case"case":return this.case(h);case"member":return this.member(h);case"arrayIndex":return this.arrayIndex(h);case"ternary":return this.ternary(h);case"select":case"union":case"union all":case"with":case"with recursive":return this.select(h);case"keyword":return this.valueKeyword(h);case"parameter":return this.parameter(h);case"extract":return this.extract(h);case"overlay":return this.callOverlay(h);case"substring":return this.callSubstring(h);case"values":return this.values(h);case"default":return this.default(h);default:throw s.NotSupported.never(h)}}arraySelect(h){const p=this.select(h.select);return p?c(h,{select:p}):null}extract(h){const p=this.expr(h.from);return p?c(h,{from:p}):null}valueKeyword(h){return h}ternary(h){const p=this.expr(h.value),Z=this.expr(h.lo),X=this.expr(h.hi);
32return!p||!Z||!X?null:c(h,{value:p,lo:Z,hi:X})}parameter(h){return h}arrayIndex(h){const p=this.expr(h.array),Z=this.expr(h.index);return!p||!Z?null:c(h,{array:p,index:Z})}member(h){const p=this.expr(h.operand);return p?c(h,{operand:p}):null}case(h){const p=h.value&&this.expr(h.value),Z=r(h.whens,J=>{const V=this.expr(J.when),g=this.expr(J.value);return!V||!g?null:c(J,{value:g,when:V})});if(!(Z!=null&&Z.length))return null;const X=h.else&&this.expr(h.else);return c(h,{value:p,whens:Z,else:X})}cast(h){const p=this.expr(h.operand);return p?c(h,{operand:p}):null}call(h){const p=r(h.args,J=>this.expr(J));if(!p)return null;const Z=this.orderBy(h.orderBy),X=this.expr(h.filter);return c(h,{args:p,orderBy:Z,filter:X})}callSubstring(h){return c(h,{value:this.expr(h.value),from:this.expr(h.from),for:this.expr(h.for)})}callOverlay(h){return c(h,{value:this.expr(h.value),placing:this.expr(h.placing),from:this.expr(h.from),for:this.expr(h.for)})}array(h){const p=r(h.expressions,Z=>this.expr(Z));return p?c(h,{expressions:p}):null}constant(h){return h}default(h){return h}ref(h){return h}unary(h){const p=this.expr(h.operand);return p?c(h,{operand:p}):null}binary(h){const p=this.expr(h.left),Z=this.expr(h.right);return!p||!Z?null:c(h,{left:p,right:Z})}}i.AstDefaultMapper=u;const o=u.prototype;
32for(const b of Object.getOwnPropertyNames(o)){const h=o[b];b==="constructor"||b==="super"||typeof h!="function"||Object.defineProperty(o,b,{configurable:!1,get(){return function(...p){var Z;if(this.skipNext)return this.skipNext=!1,h.apply(this,p);const X=(Z=this.wrapped)===null||Z===void 0?void 0:Z[b];return X?X.apply(this.wrapped,p):h.apply(this,p)}}})}class d extends u{constructor(h){super(),this.parent=h}}for(const b of Object.getOwnPropertyNames(o)){const h=o[b];b==="constructor"||b==="super"||typeof h!="function"||Object.defineProperty(d.prototype,b,{configurable:!1,get(){return function(...p){return this.parent.skipNext=!0,h.apply(this.parent,p)}}})}},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.sqlKeywords=void 0,i.sqlKeywords=["ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","NATURAL","NOT","NOTNULL","NULL","OFFSET","ON","ONLY","OR","ORDER","OUTER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH","PRECISION"]},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.intervalToString=i.normalizeInterval=i.buildInterval=void 0;const s=[["years",12],["months",30],["days",24],["hours",60],["minutes",60],["seconds",1e3],["milliseconds",0]];function*l(d){if(typeof d[1]=="number")yield d;else for(const b of d)yield*l(b)}function c(d,b){var h;const p={};if(b==="invalid")throw new Error(`invalid input syntax for type interval: "${d}"`);for(const[Z,X]of l(b))p[Z]=((h=p[Z])!==null&&h!==void 0?h:0)+X;return p}i.buildInterval=c;function r(d){var b,h,p,Z,X,J,V,g,I;const v={...d};for(let C=0;C<s.length;C++){const[f,w]=s[C],x=(b=v[f])!==null&&b!==void 0?b:0,R=x>=0?Math.floor(x):Math.ceil(x);if(!x||R===x)continue;const K=(h=s[C+1])===null||h===void 0?void 0:h[0];K&&(v[K]=((p=v[K])!==null&&p!==void 0?p:0)+w*(x-R)),v[f]=R}if(v.months||v.years){const C=((Z=v.months)!==null&&Z!==void 0?Z:0)+((X=v.years)!==null&&X!==void 0?X:0)*12;v.months=C%12,v.years=(C-v.months)/12}let k=((J=v.hours)!==null&&J!==void 0?J:0)*3600+((V=v.minutes)!==null&&V!==void 0?V:0)*60+((g=v.seconds)!==null&&g!==void 0?g:0)+((I=v.milliseconds)!==null&&I!==void 0?I:0)/1e3,N=1;k<0&&(N=-1,k=-k),k>=3600?(v.hours=N*Math.floor(k/3600),k-=N*v.hours*3600):delete v.hours,k>=60?(v.minutes=N*Math.floor(k/60),k-=N*v.minutes*60):delete v.minutes,k>0?(v.seconds=N*Math.floor(k),k-=N*v.seconds):delete v.seconds,k>0?v.milliseconds=N*Math.round(k*1e3):delete v.milliseconds;for(const[C]of s)v[C]||delete v[C];return v}i.normalizeInterval=r;function a(d){var b,h,p;d=r(d);const Z=[];if(d.years&&Z.push(d.years===1?"1 year":d.years+" years"),d.months&&Z.push(d.months===1?"1 month":d.months+" months"),d.days&&Z.push(d.days===1?"1 day":d.days+" days"),d.hours||d.minutes||d.seconds||d.milliseconds){let X=`${u((b=d.hours)!==null&&b!==void 0?b:0)}:${u((h=d.minutes)!==null&&h!==void 0?h:0)}:${u((p=d.seconds)!==null&&p!==void 0?p:0)}`;d.milliseconds&&(X=X+(d.milliseconds/1e3).toString().substr(1)),(o(d.hours)||o(d.minutes)||o(d.seconds)||o(d.milliseconds))&&(X="-"+X),Z.push(X)}return Z.join(" ")}i.intervalToString=a;function u(d){return d=Math.abs(d),d<10?"0"+d:d.toString()}function o(d){return d&&d<0}},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.astVisitor=void 0;const s=n(2);class l{super(){return new r(this)}}const c=s.AstDefaultMapper.prototype;for(const u of Object.getOwnPropertyNames(c)){const o=c[u];u==="constructor"||u==="super"||typeof o!="function"||Object.defineProperty(l.prototype,u,{configurable:!1,get(){return function(...d){const b=this.visitor[u];return b?(b.apply(this.visitor,d),d[0]):o.apply(this,d)}}})}
32class r{constructor(o){this.parent=o}}for(const u of Object.getOwnPropertyNames(c)){const o=c[u];u==="constructor"||u==="super"||typeof o!="function"||Object.defineProperty(r.prototype,u,{configurable:!1,get(){return function(...d){return o.apply(this.parent,d)}}})}function a(u){return(0,s.astMapper)(o=>{const d=new l;return d.mapper=o,d.visitor=u(d),d})}i.astVisitor=a},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.trimNullish=i.NotSupported=void 0;class s extends Error{constructor(r){super("Not supported"+(r?": "+r:""))}static never(r,a){return new s(`${a??""} ${JSON.stringify(r)}`)}}i.NotSupported=s;function l(c,r=5){if(r<0||(c instanceof Array&&c.forEach(a=>l(a,r-1)),typeof c!="object"||c instanceof Date)||!c)return c;for(const a of Object.keys(c)){const u=c[a];u==null?delete c[a]:l(u,r-1)}return c}i.trimNullish=l},function(t,i,n){var s=this&&this.__createBinding||(Object.create?function(d,b,h,p){p===void 0&&(p=h);var Z=Object.getOwnPropertyDescriptor(b,h);(!Z||("get"in Z?!b.__esModule:Z.writable||Z.configurable))&&(Z={enumerable:!0,get:function(){return b[h]}}),Object.defineProperty(d,p,Z)}:function(d,b,h,p){p===void 0&&(p=h),d[p]=b[h]}),l=this&&this.__exportStar||function(d,b){for(var h in d)h!=="default"&&!Object.prototype.hasOwnProperty.call(b,h)&&s(b,d,h)};Object.defineProperty(i,"__esModule",{value:!0}),i.normalizeInterval=i.intervalToString=i.toSql=i.astMapper=i.assignChanged=i.arrayNilMap=i.astVisitor=i.parseWithComments=i.parseIntervalLiteral=i.parseGeometricLiteral=i.parseArrayLiteral=i.parseFirst=i.parse=void 0;var c=n(8);Object.defineProperty(i,"parse",{enumerable:!0,get:function(){return c.parse}}),Object.defineProperty(i,"parseFirst",{enumerable:!0,get:function(){return c.parseFirst}}),Object.defineProperty(i,"parseArrayLiteral",{enumerable:!0,get:function(){return c.parseArrayLiteral}}),Object.defineProperty(i,"parseGeometricLiteral",{enumerable:!0,get:function(){return c.parseGeometricLiteral}}),Object.defineProperty(i,"parseIntervalLiteral",{enumerable:!0,get:function(){return c.parseIntervalLiteral}}),Object.defineProperty(i,"parseWithComments",{enumerable:!0,get:function(){return c.parseWithComments}});var r=n(5);Object.defineProperty(i,"astVisitor",{enumerable:!0,get:function(){return r.astVisitor}});var a=n(2);Object.defineProperty(i,"arrayNilMap",{enumerable:!0,get:function(){return a.arrayNilMap}}),Object.defineProperty(i,"assignChanged",{enumerable:!0,get:function(){return a.assignChanged}}),Object.defineProperty(i,"astMapper",{enumerable:!0,get:function(){return a.astMapper}});var u=n(19);Object.defineProperty(i,"toSql",{enumerable:!0,get:function(){return u.toSql}}),l(n(21),i);var o=n(4);Object.defineProperty(i,"intervalToString",{enumerable:!0,get:function(){return o.intervalToString}}),Object.defineProperty(i,"normalizeInterval",{enumerable:!0,get:function(){return o.normalizeInterval}})},function(t,i,n){var s=this&&this.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(i,"__esModule",{value:!0}),i.parseGeometricLiteral=i.parseIntervalLiteral=i.parseArrayLiteral=i.parse=i.parseWithComments=i.parseFirst=void 0;const l=n(9),c=s(n(10)),r=s(n(11)),a=s(n(13)),u=s(n(15)),o=s(n(17)),d=n(4),b=n(1);let h,p,Z,X,J;function V(f){return I(f)[0]}i.parseFirst=V;function g(f,w){return(0,b.trackingComments)(()=>I(f,w))}i.parseWithComments=g;function I(f,w){h||(h=l.Grammar.fromCompiled(c.default));const x=typeof w=="string"?w:w==null?void 0:w.entry,R=typeof w=="string"?null:w,K=()=>C(f,h,x);let B=R!=null&&R.locationTracking?(0,b.tracking)(K):K();return typeof w!="string"&&!Array.isArray(B)&&(B=[B]),B}i.parse=I;function v(f){return p||(p=l.Grammar.fromCompiled(r.default)),C(f,p)}i.parseArrayLiteral=v;function k(f){if(f.startsWith("P"))return J||(J=l.Grammar.fromCompiled(o.default)),(0,d.buildInterval)(f,C(f,J));{X||(X=l.Grammar.fromCompiled(u.default));const w=f.toLowerCase();return(0,d.buildInterval)(f,C(w,X))}}i.parseIntervalLiteral=k;function N(f,w){return Z||(Z=l.Grammar.fromCompiled(a.default)),C(f,Z,w)}i.parseGeometricLiteral=N;function C(f,w,x){try{w.start=x??"main";const R=new l.Parser(w);R.feed(f);const K=R.finish();if(K.length){if(K.length!==1)throw new Error(`ð Ambiguous SQL syntax: Please file an issue stating the request that has failed at https://github.com/oguimbal/pgsql-ast-parser: 33 34 ${f} 35 36 `)}else throw new Error("Unexpected end of input");return K[0]}catch(R){if(typeof(R==null?void 0:R.message)!="string")throw R;let K=R.message,B=null;const _=[],j=/A (.+) token based on:/g;let U;for(;U=j.exec(K);)B=B??K.substr(0,U.index),_.push(` - A "${U[1]}" token`);throw B&&(K=B+_.join(` 37`)+` 38 39`),R.message=K,R}}},function(t,i){t.exports=Uae()},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0});function s(f){return f[0]}const l=n(1),c=n(1);function r(f){return a(f,void 0)}function a(f,w){const x=X(f);return!w||w.length===0?(0,c.track)(f,{name:x}):(0,c.track)(f,{name:x,columns:w.map(R=>({name:X(R)}))})}function u(f){const w=X(f);return(0,c.track)(f,{value:w})}function o(f){return Array.isArray(f)&&f.length===1&&(f=o(f[0])),Array.isArray(f)&&!f.length?null:(0,c.unbox)(f)}const d=f=>w=>(0,c.track)(w,w[f]),b=f=>Array.isArray(f)?(0,c.track)(f[f.length-1],f[f.length-1]):f;function h(f){if(Array.isArray(f)){const w=[];for(const x of f)w.push(...h(x));return w}return f?[f]:[]}function p(f){var w;return f=(0,c.unbox)(f),(w=f==null?void 0:f.value)!==null&&w!==void 0?w:f}function Z(f){return h((0,c.unbox)(f)).filter(x=>!!x).map(x=>p(x)).filter(x=>
39typeof x=="string").map(x=>x.trim()).filter(x=>!!x)}function X(f,w){return Z(f).join(w||"")}function J(f){const w={};for(const[x,R]of f)w[x]=R;return w}const V={sensitivity:"accent"},g=(f,w)=>f.localeCompare(w,void 0,V)===0,I=f=>(w,x,R)=>{const K=p(w[0]);return g(K,f)?(0,c.box)(w,f):R},v=I,k=(...f)=>{const w=new Set(f);return(x,R,K)=>{const B=typeof x[0]=="string"?x[0]:x[0].value;return w.has(B)?B:K}};function N(f,w){const x=new Set,R=w.map(c.unbox);for(const[K,B]of R){if(x.has(K))throw new Error("conflicting or redundant options");x.add(K),f[K]=(0,c.unbox)(B)}}const C={Lexer:l.lexerAny,ParserRules:[{name:"lparen",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen]},{name:"rparen",symbols:[l.lexerAny.has("rparen")?{type:"rparen"}:rparen]},{name:"number$subexpression$1",symbols:["float"]},{name:"number$subexpression$1",symbols:["int"]},{name:"number",symbols:["number$subexpression$1"],postprocess:o},{name:"dot",symbols:[l.lexerAny.has("dot")?{type:"dot"}:dot],postprocess:s},{name:"float",symbols:[l.lexerAny.has("float")?{type:"float"}:float],postprocess:f=>(0,c.box)(f,parseFloat(o(f)))},{name:"int",symbols:[l.lexerAny.has("int")?{type:"int"}:int],postprocess:f=>(0,c.box)(f,parseInt(o(f),10))},{name:"comma",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma],postprocess:s},{name:"star",symbols:[l.lexerAny.has("star")?{type:"star"}:star],postprocess:f=>(0,c.box)(f,f[0].value)},{name:"string$subexpression$1",symbols:[l.lexerAny.has("string")?{type:"string"}:string]},{name:"string$subexpression$1",symbols:[l.lexerAny.has("eString")?{type:"eString"}:eString]},{name:"string",symbols:["string$subexpression$1"],postprocess:f=>(0,c.box)(f,o(f[0]).value)},{name:"ident",symbols:["word"],postprocess:d(0)},{name:"word",symbols:[l.lexerAny.has("kw_primary")?{type:"kw_primary"}:kw_primary],postprocess:f=>(0,c.box)(f,"primary")},{name:"word",symbols:[l.lexerAny.has("kw_unique")?{type:"kw_unique"}:kw_unique],postprocess:f=>(0,c.box)(f,"unique")},{name:"word",symbols:[l.lexerAny.has("quoted_word")?{type:"quoted_word"}:quoted_word],postprocess:f=>(0,c.box)(f,f[0].value,!0)},{name:"word",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:f=>(0,c.box)(f,f[0].value)},{name:"collist_paren",symbols:["lparen","collist","rparen"],postprocess:d(1)},{name:"collist$ebnf$1",symbols:[]},{name:"collist$ebnf$1$subexpression$1",symbols:["comma","ident"],postprocess:b},{name:"collist$ebnf$1",symbols:["collist$ebnf$1","collist$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"collist",symbols:["ident","collist$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"kw_between",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("between")},{name:"kw_conflict",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("conflict")},{name:"kw_nothing",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("nothing")},{name:"kw_begin",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("begin")},{name:"kw_if",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("if")},{name:"kw_exists",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("exists")},{name:"kw_key",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("key")},{name:"kw_index",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("index")},{name:"kw_extension",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("extension")},{name:"kw_schema",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("schema")},{name:"kw_nulls",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("nulls")},{name:"kw_first",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("first")},{name:"kw_last",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("last")},{name:"kw_start",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("start")},{name:"kw_restart",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("restart")},{name:"kw_filter",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("filter")},{name:"kw_commit",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("commit")},{name:"kw_tablespace",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("tablespace")},{name:"kw_transaction",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("transaction")},{name:"kw_work",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("work")},{name:"kw_read",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("read")},{name:"kw_write",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("write")},{name:"kw_isolation",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("isolation")},{name:"kw_level",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("level")},{name:"kw_serializable",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("serializable")},{name:"kw_rollback",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("rollback")},{name:"kw_insert",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("insert")},{name:"kw_value",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("value")},{name:"kw_values",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("values")},{name:"kw_update",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("update")},{name:"kw_column",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("column")},{name:"kw_set",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("set")},{name:"kw_version",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("version")},{name:"kw_alter",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("alter")},{name:"kw_rename",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("rename")},{name:"kw_sequence",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("sequence")},{name:"kw_temp",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("temp")},{name:"kw_temporary",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("temporary")}
39,{name:"kw_add",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("add")},{name:"kw_owner",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("owner")},{name:"kw_owned",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("owned")},{name:"kw_including",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("including")},{name:"kw_excluding",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("excluding")},{name:"kw_none",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("none")},{name:"kw_drop",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("drop")},{name:"kw_operator",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("operator")},{name:"kw_minvalue",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("minvalue")},{name:"kw_maxvalue",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("maxvalue")},{name:"kw_data",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("data")},{name:"kw_type",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("type")},{name:"kw_trigger",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("trigger")},{name:"kw_delete",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("delete")},{name:"kw_cache",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("cache")},{name:"kw_cascade",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("cascade")},{name:"kw_no",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("no")},{name:"kw_timestamp",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("timestamp")},{name:"kw_cycle",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("cycle")},{name:"kw_function",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("function")},{name:"kw_returns",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("returns")},{name:"kw_language",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("language")},{name:"kw_out",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("out")},{name:"kw_inout",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("inout")},{name:"kw_variadic",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("variadic")},{name:"kw_action",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("action")},{name:"kw_restrict",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("restrict")},{name:"kw_truncate",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("truncate")},{name:"kw_increment",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("increment")},{name:"kw_by",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("by")},{name:"kw_row",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("row")},{name:"kw_rows",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("rows")},{name:"kw_next",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("next")},{name:"kw_match",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("match")},{name:"kw_replace",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("replace")},{name:"kw_recursive",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("recursive")},{name:"kw_view",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("view")},{name:"kw_cascaded",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("cascaded")},{name:"kw_unlogged",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("unlogged")},{name:"kw_global",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("global")},{name:"kw_option",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("option")},{name:"kw_materialized",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("materialized")},{name:"kw_partial",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("partial")},{name:"kw_partition",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("partition")},{name:"kw_simple",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("simple")},{name:"kw_generated",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("generated")},{name:"kw_always",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("always")},{name:"kw_identity",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("identity")},{name:"kw_name",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("name")},{name:"kw_enum",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("enum")},{name:"kw_show",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("show")},{name:"kw_ordinality",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("ordinality")},{name:"kw_overriding",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("overriding")},{name:"kw_over",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("over")},{name:"kw_system",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("system")},{name:"kw_comment",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("comment")},{name:"kw_time",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("time")},{name:"kw_names",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("names")},{name:"kw_at",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("at")},{name:"kw_zone",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("zone")},{name:"kw_interval",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("interval")},{name:"kw_hour",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("hour")},{name:"kw_minute",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("minute")},{name:"kw_local",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("local")},{name:"kw_prepare",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("prepare")},{name:"kw_deallocate",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("deallocate")},{name:"kw_raise",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("raise")},{name:"kw_continue",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("continue")},{name:"kw_share",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("share")},{name:"kw_refresh",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("refresh")},{name:"kw_nowait",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("nowait")},{name:"kw_skip",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("skip")},{name:"kw_locked",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:I("locked")},{name:"kw_ifnotexists",symbols:["kw_if",l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not,"kw_exists"]},{name:"kw_ifexists",symbols:["kw_if","kw_exists"]},{name:"kw_withordinality",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"kw_ordinality"]},{name:"kw_not_null",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not,l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null]},{name:"kw_primary_key",symbols:[l.lexerAny.has("kw_primary")?{type:"kw_primary"}:kw_primary,"kw_key"]},{name:"data_type$ebnf$1$subexpression$1$macrocall$2",symbols:["int"]},{name:"data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1",symbols:[]},{name:"data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"data_type$ebnf$1$subexpression$1$macrocall$2"],postprocess:b},{name:"data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1",symbols:["data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1","data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"data_type$ebnf$1$subexpression$1$macrocall$1",symbols:["data_type$ebnf$1$subexpression$1$macrocall$2","data_type$ebnf$1$subexpression$1$macrocall$1$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"data_type$ebnf$1$subexpression$1",symbols:["lparen","data_type$ebnf$1$subexpression$1$macrocall$1","rparen"],postprocess:d(1)},{name:"data_type$ebnf$1",symbols:["data_type$ebnf$1$subexpression$1"],postprocess:s},{name:"data_type$ebnf$1",symbols:[],postprocess:()=>null},{name:"data_type$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("kw_array")?{type:"kw_array"}:kw_array]},{name:"data_type$ebnf$2$subexpression$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket,l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket]},{name:"data_type$ebnf$2$subexpression$1$ebnf$1",symbols:["data_type$ebnf$2$subexpression$1$ebnf$1$subexpression$1"]},{name:"data_type$ebnf$2$subexpression$1$ebnf$1$subexpression$2",symbols:[l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket,l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket]},{name:"data_type$ebnf$2$subexpression$1$ebnf$1",symbols:["data_type$ebnf$2$subexpression$1$ebnf$1","data_type$ebnf$2$subexpression$1$ebnf$1$subexpression$2"],postprocess:f=>f[0].concat([f[1]])},{name:"data_type$ebnf$2$subexpression$1",symbols:["data_type$ebnf$2$subexpression$1$ebnf$1"]},{name:"data_type$ebnf$2",symbols:["data_type$ebnf$2$subexpression$1"],postprocess:s},{name:"data_type$ebnf$2",symbols:[],postprocess:()=>null},{name:"data_type",symbols:["data_type_simple","data_type$ebnf$1","data_type$ebnf$2"],postprocess:f=>{let w=f[2];const x=o(f[0]);let R;if(R={...x,...Array.isArray(f[1])&&f[1].length?{config:f[1].map(o)}:{}}
39,w){w[0].type==="kw_array"&&(w=[["array"]]);for(const K of w[0])R={kind:"array",arrayOf:R}}return(0,c.track)(f,R)}},{name:"data_type_list$ebnf$1",symbols:[]},{name:"data_type_list$ebnf$1$subexpression$1",symbols:["comma","data_type"],postprocess:b},{name:"data_type_list$ebnf$1",symbols:["data_type_list$ebnf$1","data_type_list$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"data_type_list",symbols:["data_type","data_type_list$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"data_type_simple",symbols:["data_type_text"],postprocess:f=>(0,c.track)(f,{name:X(f," ")})},{name:"data_type_simple",symbols:["data_type_numeric"],postprocess:f=>(0,c.track)(f,{name:X(f," ")})},{name:"data_type_simple",symbols:["data_type_date"]},{name:"data_type_simple",symbols:["qualified_name_mark_quotes"]},{name:"data_type_numeric$subexpression$1",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("double")},{name:"data_type_numeric",symbols:["data_type_numeric$subexpression$1",l.lexerAny.has("kw_precision")?{type:"kw_precision"}:kw_precision]},{name:"data_type_text$subexpression$1",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("character","bit")},{name:"data_type_text$subexpression$2",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("varying")},{name:"data_type_text",symbols:["data_type_text$subexpression$1","data_type_text$subexpression$2"]},{name:"data_type_date$subexpression$1",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("timestamp","time")},{name:"data_type_date$subexpression$2",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with]},{name:"data_type_date$subexpression$2",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("without")},{name:"data_type_date$subexpression$3",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("time")},{name:"data_type_date$subexpression$4",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("zone")},{name:"data_type_date",symbols:["data_type_date$subexpression$1","data_type_date$subexpression$2","data_type_date$subexpression$3","data_type_date$subexpression$4"],postprocess:f=>(0,c.track)(f,{name:X(f," ")})},{name:"data_type_date$subexpression$5",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("timestamp","time")},{name:"data_type_date$subexpression$6",symbols:["lparen","int","rparen"],postprocess:d(1)},{name:"data_type_date$subexpression$7",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with]},{name:"data_type_date$subexpression$7",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("without")},{name:"data_type_date$subexpression$8",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("time")},{name:"data_type_date$subexpression$9",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:v("zone")},{name:"data_type_date",symbols:["data_type_date$subexpression$5","data_type_date$subexpression$6","data_type_date$subexpression$7","data_type_date$subexpression$8","data_type_date$subexpression$9"],postprocess:f=>(0,c.track)(f,{name:`timestamp ${X(f[2])} time zone`,config:[(0,c.unbox)(f[1])]})},{name:"ident_aliased$subexpression$1",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"ident"],postprocess:b},{name:"ident_aliased",symbols:["ident_aliased$subexpression$1"]},{name:"ident_aliased",symbols:["ident"],postprocess:o},{name:"table_ref",symbols:["qualified_name"],postprocess:o},{name:"qcolumn$ebnf$1$subexpression$1",symbols:["dot","ident"],postprocess:b},{name:"qcolumn$ebnf$1",symbols:["qcolumn$ebnf$1$subexpression$1"],postprocess:s},{name:"qcolumn$ebnf$1",symbols:[],postprocess:()=>null},{name:"qcolumn",symbols:["ident","dot","ident","qcolumn$ebnf$1"],postprocess:f=>f[3]?(0,c.track)(f,{schema:(0,c.unbox)(f[0]),table:(0,c.unbox)(f[2]),column:(0,c.unbox)(f[3])}):(0,c.track)(f,{table:(0,c.unbox)(f[0]),column:(0,c.unbox)(f[2])})},{name:"table_ref_aliased$ebnf$1",symbols:["ident_aliased"],postprocess:s},{name:"table_ref_aliased$ebnf$1",symbols:[],postprocess:()=>null},{name:"table_ref_aliased",symbols:["table_ref","table_ref_aliased$ebnf$1"],postprocess:f=>{const w=o(f[1]);return(0,c.track)(f,{...o(f[0]),...w?{alias:w}:{}})}},{name:"qualified_name",symbols:["qname_ident"],postprocess:f=>(0,c.track)(f,{name:X(f)})},{name:"qualified_name",symbols:["ident","dot","ident_extended"],postprocess:f=>{const w=X(f[0]),x=X(f[2]);return(0,c.track)(f,{schema:w,name:x})}},{name:"qualified_name",symbols:[l.lexerAny.has("kw_current_schema")?{type:"kw_current_schema"}:kw_current_schema],postprocess:f=>(0,c.track)(f,{name:"current_schema"})},{name:"qualified_name_mark_quotes",symbols:["qname_ident"],postprocess:f=>(0,c.track)(f,{name:X(f),...(0,c.doubleQuoted)(f)})},{name:"qualified_name_mark_quotes",symbols:["ident","dot","ident_extended"],postprocess:f=>{const w=X(f[0]),x=X(f[2]);return(0,c.track)(f,{schema:w,name:x,...(0,c.doubleQuoted)(f[2])})}},{name:"qualified_name_mark_quotes",symbols:[l.lexerAny.has("kw_current_schema")?{type:"kw_current_schema"}:kw_current_schema],postprocess:f=>(0,c.track)(f,{name:"current_schema"})},{name:"qname_ident",symbols:["ident"]},{name:"qname_ident",symbols:[l.lexerAny.has("kw_precision")?{type:"kw_precision"}:kw_precision]},{name:"qname",symbols:["qualified_name"],postprocess:o},{name:"any_keyword",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_analyse")?{type:"kw_analyse"}:kw_analyse]}
39,{name:"any_keyword",symbols:[l.lexerAny.has("kw_analyze")?{type:"kw_analyze"}:kw_analyze]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_and")?{type:"kw_and"}:kw_and]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_any")?{type:"kw_any"}:kw_any]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_array")?{type:"kw_array"}:kw_array]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_asc")?{type:"kw_asc"}:kw_asc]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_asymmetric")?{type:"kw_asymmetric"}:kw_asymmetric]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_authorization")?{type:"kw_authorization"}:kw_authorization]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_binary")?{type:"kw_binary"}:kw_binary]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_both")?{type:"kw_both"}:kw_both]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_case")?{type:"kw_case"}:kw_case]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_cast")?{type:"kw_cast"}:kw_cast]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_check")?{type:"kw_check"}:kw_check]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_collate")?{type:"kw_collate"}:kw_collate]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_collation")?{type:"kw_collation"}:kw_collation]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_concurrently")?{type:"kw_concurrently"}:kw_concurrently]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_constraint")?{type:"kw_constraint"}:kw_constraint]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_cross")?{type:"kw_cross"}:kw_cross]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_catalog")?{type:"kw_current_catalog"}:kw_current_catalog]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_date")?{type:"kw_current_date"}:kw_current_date]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_role")?{type:"kw_current_role"}:kw_current_role]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_schema")?{type:"kw_current_schema"}:kw_current_schema]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_time")?{type:"kw_current_time"}:kw_current_time]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_timestamp")?{type:"kw_current_timestamp"}:kw_current_timestamp]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_current_user")?{type:"kw_current_user"}:kw_current_user]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_deferrable")?{type:"kw_deferrable"}:kw_deferrable]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_desc")?{type:"kw_desc"}:kw_desc]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_distinct")?{type:"kw_distinct"}:kw_distinct]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_do")?{type:"kw_do"}:kw_do]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_else")?{type:"kw_else"}:kw_else]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_end")?{type:"kw_end"}:kw_end]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_except")?{type:"kw_except"}:kw_except]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_false")?{type:"kw_false"}:kw_false]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_fetch")?{type:"kw_fetch"}:kw_fetch]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_for")?{type:"kw_for"}:kw_for]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_foreign")?{type:"kw_foreign"}:kw_foreign]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_freeze")?{type:"kw_freeze"}:kw_freeze]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_full")?{type:"kw_full"}:kw_full]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_grant")?{type:"kw_grant"}:kw_grant]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_group")?{type:"kw_group"}:kw_group]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_having")?{type:"kw_having"}:kw_having]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_ilike")?{type:"kw_ilike"}:kw_ilike]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_in")?{type:"kw_in"}:kw_in]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_initially")?{type:"kw_initially"}:kw_initially]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_inner")?{type:"kw_inner"}:kw_inner]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_intersect")?{type:"kw_intersect"}:kw_intersect]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_into")?{type:"kw_into"}:kw_into]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_is")?{type:"kw_is"}:kw_is]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_isnull")?{type:"kw_isnull"}:kw_isnull]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_join")?{type:"kw_join"}:kw_join]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_lateral")?{type:"kw_lateral"}:kw_lateral]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_leading")?{type:"kw_leading"}:kw_leading]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_left")?{type:"kw_left"}:kw_left]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_like")?{type:"kw_like"}:kw_like]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_limit")?{type:"kw_limit"}:kw_limit]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_localtime")?{type:"kw_localtime"}:kw_localtime]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_localtimestamp")?{type:"kw_localtimestamp"}:kw_localtimestamp]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_natural")?{type:"kw_natural"}:kw_natural]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_notnull")?{type:"kw_notnull"}:kw_notnull]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_offset")?{type:"kw_offset"}:kw_offset]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_only")?{type:"kw_only"}:kw_only]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_or")?{type:"kw_or"}:kw_or]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_order")?{type:"kw_order"}:kw_order]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_outer")?{type:"kw_outer"}:kw_outer]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_overlaps")?{type:"kw_overlaps"}:kw_overlaps]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_placing")?{type:"kw_placing"}:kw_placing]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_primary")?{type:"kw_primary"}:kw_primary]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_references")?{type:"kw_references"}:kw_references]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_returning")?{type:"kw_returning"}:kw_returning]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_right")?{type:"kw_right"}:kw_right]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_select")?{type:"kw_select"}:kw_select]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_session_user")?{type:"kw_session_user"}:kw_session_user]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_similar")?{type:"kw_similar"}:kw_similar]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_some")?{type:"kw_some"}:kw_some]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_symmetric")?{type:"kw_symmetric"}:kw_symmetric]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_tablesample")?{type:"kw_tablesample"}:kw_tablesample]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_then")?{type:"kw_then"}:kw_then]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_trailing")?{type:"kw_trailing"}:kw_trailing]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_true")?{type:"kw_true"}:kw_true]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_union")?{type:"kw_union"}:kw_union]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_unique")?{type:"kw_unique"}:kw_unique]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_user")?{type:"kw_user"}:kw_user]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_using")?{type:"kw_using"}:kw_using]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_variadic")?{type:"kw_variadic"}:kw_variadic]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_verbose")?{type:"kw_verbose"}:kw_verbose]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_when")?{type:"kw_when"}:kw_when]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_where")?{type:"kw_where"}:kw_where]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_window")?{type:"kw_window"}:kw_window]},{name:"any_keyword",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with]},{name:"ident_extended",symbols:["ident"]},{name:"ident_extended",symbols:["any_keyword"]},{name:"select_statement$ebnf$1",symbols:["select_from"],postprocess:s},{name:"select_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$2",symbols:["select_where"],postprocess:s},{name:"select_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$3$subexpression$1$ebnf$1",symbols:["select_having"],postprocess:s},{name:"select_statement$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$3$subexpression$1",symbols:["select_groupby","select_statement$ebnf$3$subexpression$1$ebnf$1"]},{name:"select_statement$ebnf$3",symbols:["select_statement$ebnf$3$subexpression$1"],postprocess:s},{name:"select_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$4",symbols:["select_order_by"],postprocess:s},{name:"select_statement$ebnf$4",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$5",symbols:["select_limit_offset"],postprocess:s},{name:"select_statement$ebnf$5",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$6$subexpression$1$ebnf$1",symbols:["select_skip"],postprocess:s},{name:"select_statement$ebnf$6$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_statement$ebnf$6$subexpression$1",symbols:["select_for","select_statement$ebnf$6$subexpression$1$ebnf$1"]},{name:"select_statement$ebnf$6",symbols:["select_statement$ebnf$6$subexpression$1"],postprocess:s},{name:"select_statement$ebnf$6",symbols:[],postprocess:()=>null},{name:"select_statement",symbols:["select_what","select_statement$ebnf$1","select_statement$ebnf$2","select_statement$ebnf$3","select_statement$ebnf$4","select_statement$ebnf$5","
39select_statement$ebnf$6"],postprocess:f=>{let[w,x,R,K,B,_,j]=f;x=o(x);let U=K&&K[0],$=K&&K[1];U=U&&(U.length===1&&U[0].type==="list"?U[0].expressions:U),$=$&&o($);let te=j&&j[0],E=j&&j[1];return E=o(E),(0,c.track)(f,{...w,...x?{from:Array.isArray(x)?x:[x]}:{},...U?{groupBy:U}:{},...$?{having:$}:{},..._?{limit:o(_)}:{},...B?{orderBy:B}:{},...R?{where:R}:{},...te?{for:te[1]}:{},...E?{skip:E}:{},type:"select"})}},{name:"select_from",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"select_from_items"],postprocess:b},{name:"select_from_items$ebnf$1",symbols:[]},{name:"select_from_items$ebnf$1$subexpression$1",symbols:["comma","select_from_item"],postprocess:b},{name:"select_from_items$ebnf$1",symbols:["select_from_items$ebnf$1","select_from_items$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"select_from_items",symbols:["select_from_item","select_from_items$ebnf$1"],postprocess:([f,w])=>[...f,...h(w)||[]]},{name:"select_from_item",symbols:["select_from_subject"]},{name:"select_from_item",symbols:["select_from_item_joins"],postprocess:d(0)},{name:"select_from_item_joins$subexpression$1",symbols:["select_from_item"],postprocess:d(0)},{name:"select_from_item_joins",symbols:["select_from_item_joins$subexpression$1","select_table_join"],postprocess:h},{name:"select_from_item_joins",symbols:["lparen","select_from_item_joins","rparen"],postprocess:d(1)},{name:"select_from_subject",symbols:["stb_table"],postprocess:o},{name:"select_from_subject",symbols:["stb_statement"],postprocess:o},{name:"select_from_subject",symbols:["stb_call"],postprocess:o},{name:"stb_opts$ebnf$1",symbols:["collist_paren"],postprocess:s},{name:"stb_opts$ebnf$1",symbols:[],postprocess:()=>null},{name:"stb_opts",symbols:["ident_aliased","stb_opts$ebnf$1"],postprocess:f=>(0,c.track)(f,{alias:X(f[0]),...f[1]&&{columnNames:(0,c.unbox)(f[1]).map(r)}})},{name:"stb_table$ebnf$1",symbols:["stb_opts"],postprocess:s},{name:"stb_table$ebnf$1",symbols:[],postprocess:()=>null},{name:"stb_table",symbols:["table_ref","stb_table$ebnf$1"],postprocess:f=>(0,c.track)(f,{type:"table",name:(0,c.track)(f,{...f[0],...f[1]})})},{name:"stb_statement",symbols:["selection_paren","stb_opts"],postprocess:f=>(0,c.track)(f,{type:"statement",statement:o(f[0]),...f[1]})},{name:"select_values",symbols:["kw_values","insert_values"],postprocess:f=>(0,c.track)(f,{type:"values",values:f[1]})},{name:"stb_call$ebnf$1",symbols:["kw_withordinality"],postprocess:s},{name:"stb_call$ebnf$1",symbols:[],postprocess:()=>null},{name:"stb_call$ebnf$2",symbols:["stb_call_alias"],postprocess:s},{name:"stb_call$ebnf$2",symbols:[],postprocess:()=>null},{name:"stb_call",symbols:["expr_function_call","stb_call$ebnf$1","stb_call$ebnf$2"],postprocess:f=>{const w=f[1],x=f[2];return!w&&!x?f[0]:(0,c.track)(f,{...f[0],...w&&{withOrdinality:!0},alias:x?a(x[0],x[1]):void 0})}},{name:"stb_call_alias$subexpression$1$ebnf$1",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as],postprocess:s},{name:"stb_call_alias$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"stb_call_alias$subexpression$1",symbols:["stb_call_alias$subexpression$1$ebnf$1","ident"],postprocess:b},{name:"stb_call_alias$ebnf$1",symbols:["stb_call_alias_list"],postprocess:s},{name:"stb_call_alias$ebnf$1",symbols:[],postprocess:()=>null},{name:"stb_call_alias",symbols:["stb_call_alias$subexpression$1","stb_call_alias$ebnf$1"]},{name:"stb_call_alias_list",symbols:["lparen","stb_call_alias_list_raw","rparen"],postprocess:d(1)},{name:"stb_call_alias_list_raw$ebnf$1",symbols:[]},{name:"stb_call_alias_list_raw$ebnf$1$subexpression$1",symbols:["comma","ident"],postprocess:b},{name:"stb_call_alias_list_raw$ebnf$1",symbols:["stb_call_alias_list_raw$ebnf$1","stb_call_alias_list_raw$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"stb_call_alias_list_raw",symbols:["ident","stb_call_alias_list_raw$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"select_table_join$ebnf$1",symbols:["select_table_join_clause"],postprocess:s},{name:"select_table_join$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_table_join",symbols:["select_join_op",l.lexerAny.has("kw_join")?{type:"kw_join"}:kw_join,"select_from_subject","select_table_join$ebnf$1"],postprocess:f=>(0,c.track)(f,{...o(f[2]),join:{type:X(f[0]," "),...f[3]&&o(f[3])}})},{name:"select_table_join_clause",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"expr"],postprocess:f=>(0,c.track)(f,{on:b(f)})},{name:"select_table_join_clause$macrocall$2",symbols:["ident"]},{name:"select_table_join_clause$macrocall$1$ebnf$1",symbols:[]},{name:"select_table_join_clause$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"select_table_join_clause$macrocall$2"],postprocess:b},{name:"select_table_join_clause$macrocall$1$ebnf$1",symbols:["select_table_join_clause$macrocall$1$ebnf$1","select_table_join_clause$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"select_table_join_clause$macrocall$1",symbols:["select_table_join_clause$macrocall$2","select_table_join_clause$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"select_table_join_clause",symbols:[l.lexerAny.has("kw_using")?{type:"kw_using"}:kw_using,"lparen","select_table_join_clause$macrocall$1","rparen"],postprocess:f=>(0,c.track)(f,{using:f[2].map(r)})},{name:"select_join_op$subexpression$1$ebnf$1",symbols:[l.lexerAny.has("kw_inner")?{type:"kw_inner"}:kw_inner],postprocess:s},{name:"select_join_op$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_join_op$subexpression$1",symbols:["select_join_op$subexpression$1$ebnf$1"],postprocess:f=>(0,c.box)(f,"INNER JOIN")},{name:"select_join_op",symbols:["select_join_op$subexpression$1"]},{name:"select_join_op$subexpression$2",symbols:[l.lexerAny.has("kw_cross")?{type:"kw_cross"}:kw_cross],postprocess:f=>(0,c.box)(f,"CROSS JOIN")},{name:"select_join_op",symbols:["select_join_op$subexpression$2"]},{name:"select_join_op$subexpression$3$ebnf$1",symbols:[l.lexerAny.has("kw_outer")?{type:"kw_outer"}:kw_outer],postprocess:s},{name:"select_join_op$subexpression$3$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_join_op$subexpression$3",symbols:[l.lexerAny.has("kw_left")?{type:"kw_left"}:kw_left,"select_join_op$subexpression$3$ebnf$1"],postprocess:f=>(0,c.box)(f,"LEFT JOIN")},{name:"select_join_op",symbols:["select_join_op$subexpression$3"]},{name:"select_join_op$subexpression$4$ebnf$1",symbols:[l.lexerAny.has("kw_outer")?{type:"kw_outer"}:kw_outer],postprocess:s},{name:"select_join_op$subexpression$4$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_join_op$subexpression$4",symbols:[l.lexerAny.has("kw_right")?{type:"kw_right"}:kw_right,"select_join_op$subexpression$4$ebnf$1"],postprocess:f=>(0,c.box)(f,"RIGHT JOIN")},{name:"select_join_op",symbols:["select_join_op$subexpression$4"]},{name:"select_join_op$subexpression$5$ebnf$1",symbols:[l.lexerAny.has("kw_outer")?{type:"kw_outer"}:kw_outer],postprocess:s},{name:"select_join_op$subexpression$5$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_join_op$subexpression$5",symbols:[l.lexerAny.has("kw_full")?{type:"kw_full"}:kw_full,"select_join_op$subexpression$5$ebnf$1"],postprocess:f=>(0,c.box)(f,"FULL JOIN")},{name:"select_join_op",symbols:["select_join_op$subexpression$5"]},{name:"select_what$ebnf$1",symbols:["select_distinct"],postprocess:s},{name:"select_what$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_what$ebnf$2",symbols:["select_expr_list_aliased"],postprocess:s},{name:"select_what$ebnf$2",symbols:[],postprocess:()=>null},{name:"select_what",symbols:[l.lexerAny.has("kw_select")?{type:"kw_select"}:kw_select,"select_what$ebnf$1","select_what$ebnf$2"],postprocess:f=>(0,c.track)(f,{columns:f[2],...f[1]&&{distinct:(0,c.unbox)(f[1])}})},{name:"select_expr_list_aliased$ebnf$1",symbols:[]},{name:"select_expr_list_aliased$ebnf$1$subexpression$1",symbols:["comma","select_expr_list_item"],postprocess:b},{name:"select_expr_list_aliased$ebnf$1",symbols:["select_expr_list_aliased$ebnf$1","select_expr_list_aliased$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"select_expr_list_aliased",symbols:["select_expr_list_item","select_expr_list_aliased$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"select_expr_list_item$ebnf$1",symbols:["ident_aliased"],postprocess:s},{name:"select_expr_list_item$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_expr_list_item",symbols:["expr","select_expr_list_item$ebnf$1"],postprocess:f=>
39(0,c.track)(f,{expr:f[0],...f[1]?{alias:r(f[1])}:{}})},{name:"select_distinct",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all],postprocess:f=>(0,c.box)(f,"all")},{name:"select_distinct$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"lparen","expr_list_raw","rparen"],postprocess:d(2)},{name:"select_distinct$ebnf$1",symbols:["select_distinct$ebnf$1$subexpression$1"],postprocess:s},{name:"select_distinct$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_distinct",symbols:[l.lexerAny.has("kw_distinct")?{type:"kw_distinct"}:kw_distinct,"select_distinct$ebnf$1"],postprocess:f=>(0,c.box)(f,f[1]||"distinct")},{name:"select_where",symbols:[l.lexerAny.has("kw_where")?{type:"kw_where"}:kw_where,"expr"],postprocess:b},{name:"select_groupby",symbols:[l.lexerAny.has("kw_group")?{type:"kw_group"}:kw_group,"kw_by","expr_list_raw"],postprocess:b},{name:"select_having",symbols:[l.lexerAny.has("kw_having")?{type:"kw_having"}:kw_having,"expr"],postprocess:b},{name:"select_limit_offset$ebnf$1$subexpression$1",symbols:["select_offset"]},{name:"select_limit_offset$ebnf$1$subexpression$1",symbols:["select_limit"]},{name:"select_limit_offset$ebnf$1",symbols:["select_limit_offset$ebnf$1$subexpression$1"]},{name:"select_limit_offset$ebnf$1$subexpression$2",symbols:["select_offset"]},{name:"select_limit_offset$ebnf$1$subexpression$2",symbols:["select_limit"]},{name:"select_limit_offset$ebnf$1",symbols:["select_limit_offset$ebnf$1","select_limit_offset$ebnf$1$subexpression$2"],postprocess:f=>f[0].concat([f[1]])},{name:"select_limit_offset",symbols:["select_limit_offset$ebnf$1"],postprocess:(f,w)=>{const x=o(f);if(!Array.isArray(x))return(0,c.track)(f,x);if(x.length!=2)return w;const R=o(x[0]),K=o(x[1]);return R.offset&&K.offset||R.limit&&K.limit?w:(0,c.track)(f,{...R,...K})}},{name:"select_offset$ebnf$1$subexpression$1",symbols:["kw_row"]},{name:"select_offset$ebnf$1$subexpression$1",symbols:["kw_rows"]},{name:"select_offset$ebnf$1",symbols:["select_offset$ebnf$1$subexpression$1"],postprocess:s},{name:"select_offset$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_offset",symbols:[l.lexerAny.has("kw_offset")?{type:"kw_offset"}:kw_offset,"expr_nostar","select_offset$ebnf$1"],postprocess:f=>(0,c.track)(f,{offset:o(f[1])})},{name:"select_limit$subexpression$1",symbols:["select_limit_1"]},{name:"select_limit$subexpression$1",symbols:["select_limit_2"]},{name:"select_limit",symbols:["select_limit$subexpression$1"],postprocess:f=>(0,c.track)(f,{limit:o(f)})},{name:"select_limit_1",symbols:[l.lexerAny.has("kw_limit")?{type:"kw_limit"}:kw_limit,"expr_nostar"],postprocess:b},{name:"select_limit_2$ebnf$1$subexpression$1",symbols:["kw_first"]},{name:"select_limit_2$ebnf$1$subexpression$1",symbols:["kw_next"]},{name:"select_limit_2$ebnf$1",symbols:["select_limit_2$ebnf$1$subexpression$1"],postprocess:s},{name:"select_limit_2$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_limit_2$subexpression$1",symbols:["kw_row"]},{name:"select_limit_2$subexpression$1",symbols:["kw_rows"]},{name:"select_limit_2",symbols:[l.lexerAny.has("kw_fetch")?{type:"kw_fetch"}:kw_fetch,"select_limit_2$ebnf$1","expr_nostar","select_limit_2$subexpression$1",l.lexerAny.has("kw_only")?{type:"kw_only"}:kw_only],postprocess:d(2)},{name:"select_for$subexpression$1",symbols:["kw_update"],postprocess:f=>(0,c.track)(f,{type:"update"})},{name:"select_for$subexpression$1",symbols:["kw_no","kw_key","kw_update"],postprocess:f=>(0,c.track)(f,{type:"no key update"})},{name:"select_for$subexpression$1",symbols:["kw_share"],postprocess:f=>(0,c.track)(f,{type:"share"})},{name:"select_for$subexpression$1",symbols:["kw_key","kw_share"],postprocess:f=>(0,c.track)(f,{type:"key share"})},{name:"select_for",symbols:[l.lexerAny.has("kw_for")?{type:"kw_for"}:kw_for,"select_for$subexpression$1"]},{name:"select_skip$subexpression$1",symbols:["kw_nowait"],postprocess:f=>(0,c.track)(f,{type:"nowait"})},{name:"select_skip$subexpression$1",symbols:["kw_skip","kw_locked"],postprocess:f=>(0,c.track)(f,{type:"skip locked"})},{name:"select_skip",symbols:["select_skip$subexpression$1"]},{name:"select_order_by$subexpression$1",symbols:[l.lexerAny.has("kw_order")?{type:"kw_order"}:kw_order,"kw_by"]},{name:"select_order_by$ebnf$1",symbols:[]},{name:"select_order_by$ebnf$1$subexpression$1",symbols:["comma","select_order_by_expr"],postprocess:b},{name:"select_order_by$ebnf$1",symbols:["select_order_by$ebnf$1","select_order_by$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"select_order_by",symbols:["select_order_by$subexpression$1","select_order_by_expr","select_order_by$ebnf$1"],postprocess:([f,w,x])=>[w,...x||[]]},{name:"select_order_by_expr$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_asc")?{type:"kw_asc"}:kw_asc]},{name:"select_order_by_expr$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_desc")?{type:"kw_desc"}:kw_desc]},{name:"select_order_by_expr$ebnf$1",symbols:["select_order_by_expr$ebnf$1$subexpression$1"],postprocess:s},{name:"select_order_by_expr$ebnf$1",symbols:[],postprocess:()=>null},{name:"select_order_by_expr$ebnf$2$subexpression$1$subexpression$1",symbols:["kw_first"]},{name:"select_order_by_expr$ebnf$2$subexpression$1$subexpression$1",symbols:["kw_last"]},{name:"select_order_by_expr$ebnf$2$subexpression$1",symbols:["kw_nulls","select_order_by_expr$ebnf$2$subexpression$1$subexpression$1"],postprocess:b},{name:"select_order_by_expr$ebnf$2",symbols:["select_order_by_expr$ebnf$2$subexpression$1"],postprocess:s},{name:"select_order_by_expr$ebnf$2",symbols:[],postprocess:()=>null},{name:"select_order_by_expr",symbols:["expr","select_order_by_expr$ebnf$1","select_order_by_expr$ebnf$2"],postprocess:f=>(0,c.track)(f,{by:f[0],...f[1]&&{order:X(f[1]).toUpperCase()},...f[2]&&{nulls:X(f[2]).toUpperCase()}})},{name:"expr",symbols:["expr_nostar"],postprocess:o},{name:"expr",symbols:["expr_star"],postprocess:o},{name:"expr_nostar",symbols:["expr_paren"],postprocess:o},{name:"expr_nostar",symbols:["expr_or"],postprocess:o},{name:"expr_paren$subexpression$1",symbols:["expr_or_select"]},{name:"expr_paren$subexpression$1",symbols:["expr_list_many"]},{name:"expr_paren",symbols:["lparen","expr_paren$subexpression$1","rparen"],postprocess:d(1)},{name:"expr_or$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("kw_or")?{type:"kw_or"}:kw_or]},{name:"expr_or$macrocall$2$macrocall$1",symbols:["expr_or$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_or$macrocall$2",symbols:["expr_or$macrocall$2$macrocall$1"]},{name:"expr_or$macrocall$3",symbols:["expr_or"]},{name:"expr_or$macrocall$4",symbols:["expr_and"]},{name:"expr_or$macrocall$1$subexpression$1",symbols:["expr_or$macrocall$3"]},{name:"expr_or$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_or$macrocall$1$subexpression$2",symbols:["expr_or$macrocall$4"]},{name:"expr_or$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_or$macrocall$1",symbols:["expr_or$macrocall$1$subexpression$1","expr_or$macrocall$2","expr_or$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_or$macrocall$1",symbols:["expr_or$macrocall$4"],postprocess:o},{name:"expr_or",symbols:["expr_or$macrocall$1"]},{name:"expr_and$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("kw_and")?{type:"kw_and"}:kw_and]},{name:"expr_and$macrocall$2$macrocall$1",symbols:["expr_and$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_and$macrocall$2",symbols:["expr_and$macrocall$2$macrocall$1"]},{name:"expr_and$macrocall$3",symbols:["expr_and"]},{name:"expr_and$macrocall$4",symbols:["expr_not"]},{name:"expr_and$macrocall$1$subexpression$1",symbols:["expr_and$macrocall$3"]},{name:"expr_and$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_and$macrocall$1$subexpression$2",symbols:["expr_and$macrocall$4"]},{name:"expr_and$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_and$macrocall$1",symbols:["expr_and$macrocall$1$subexpression$1","expr_and$macrocall$2","expr_and$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_and$macrocall$1",symbols:["expr_and$macrocall$4"],postprocess:o},{name:"expr_and",symbols:["expr_and$macrocall$1"]},{name:"expr_not$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not]},{name:"expr_not$macrocall$2$macrocall$1",symbols:["expr_not$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_not$macrocall$2",symbols:["expr_not$macrocall$2$macrocall$1"]},{name:"expr_not$macrocall$3",symbols:["expr_not"]},{name:"expr_not$macrocall$4",symbols:["expr_eq"]},{name:"expr_not$macrocall$1$subexpression$1",symbols:["expr_not$macrocall$3"]},{name:"expr_not$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_not$macrocall$1",symbols:["expr_not$macrocall$2","expr_not$macrocall$1$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"unary",...o(f[0]),operand:o(f[1])})},{name:"expr_not$macrocall$1",symbols:["expr_not$macrocall$4"],postprocess:o},{name:"expr_not",symbols:["expr_not$macrocall$1"]},{name:"expr_eq$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq]},{name:"expr_eq$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_neq")?{type:"op_neq"}:op_neq]},{name:"expr_eq$macrocall$2$macrocall$2",symbols:["expr_eq$macrocall$2$macrocall$2$subexpression$1"]},{name:"expr_eq$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_eq$macrocall$2$macrocall$2"]},{name:"expr_eq$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_eq$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_eq$macrocall$2$macrocall$1",symbols:["expr_eq$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_eq$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_eq$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_eq$macrocall$2",symbols:["expr_eq$macrocall$2$macrocall$1"]},{name:"expr_eq$macrocall$3",symbols:["expr_eq"]},{name:"expr_eq$macrocall$4",symbols:["expr_is"]},{name:"expr_eq$macrocall$1$subexpression$1",symbols:["expr_eq$macrocall$3"]},{name:"expr_eq$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_eq$macrocall$1$subexpression$2",symbols:["expr_eq$macrocall$4"]},{name:"expr_eq$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_eq$macrocall$1",symbols:["expr_eq$macrocall$1$subexpression$1","expr_eq$macrocall$2","expr_eq$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_eq$macrocall$1",symbols:["expr_eq$macrocall$4"],postprocess:o},{name:"expr_eq",symbols:["expr_eq$macrocall$1"]},{name:"expr_star",symbols:["star"],postprocess:f=>(0,c.track)(f,{type:"ref",name:"*"})},{name:"expr_is$subexpression$1",symbols:["expr_is"]},{name:"expr_is$subexpression$1",symbols:["expr_paren"]},{name:"expr_is$subexpression$2",symbols:[l.lexerAny.has("kw_isnull")?{type:"kw_isnull"}:kw_isnull]},{name:"expr_is$subexpression$2",symbols:[l.lexerAny.has("kw_is")?{type:"kw_is"}:kw_is,l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null]},{name:"expr_is",symbols:["expr_is$subexpression$1","expr_is$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"unary",op:"IS NULL",operand:o(f[0])})},{name:"expr_is$subexpression$3",symbols:["expr_is"]},{name:"expr_is$subexpression$3",symbols:["expr_paren"]},{name:"expr_is$subexpression$4",symbols:[l.lexerAny.has("kw_notnull")?{type:"kw_notnull"}:kw_notnull]},{name:"expr_is$subexpression$4",symbols:[l.lexerAny.has("kw_is")?{type:"kw_is"}:kw_is,"kw_not_null"]},{name:"expr_is",symbols:["expr_is$subexpression$3","expr_is$subexpression$4"],postprocess:f=>(0,c.track)(f,{type:"unary",op:"IS NOT NULL",operand:o(f[0])})},{name:"expr_is$subexpression$5",symbols:["expr_is"]},{name:"expr_is$subexpression$5",symbols:["expr_paren"]},{name:"expr_is$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"expr_is$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_is$subexpression$6",symbols:[l.lexerAny.has("kw_true")?{type:"kw_true"}:kw_true]},{name:"expr_is$subexpression$6",symbols:[l.lexerAny.has("kw_false")?{type:"kw_false"}:kw_false]},{name:"expr_is",symbols:["expr_is$subexpression$5",l.lexerAny.has("kw_is")?{type:"kw_is"}:kw_is,"expr_is$ebnf$1","expr_is$subexpression$6"],postprocess:f=>(0,c.track)(f,{type:"unary",op:"IS "+Z([f[2],f[3]]).join(" ").toUpperCase(),operand:o(f[0])})},{name:"expr_is",symbols:["expr_compare"],postprocess:o},{name:"expr_compare$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("op_compare")?{type:"op_compare"}:op_compare]},{name:"expr_compare$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_compare$macrocall$2$macrocall$2"]},{name:"expr_compare$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_compare$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_compare$macrocall$2$macrocall$1",symbols:["expr_compare$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_compare$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_compare$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_compare$macrocall$2",symbols:["expr_compare$macrocall$2$macrocall$1"]},{name:"expr_compare$macrocall$3",symbols:["expr_compare"]},{name:"expr_compare$macrocall$4",symbols:["expr_range"]},{name:"expr_compare$macrocall$1$subexpression$1",symbols:["expr_compare$macrocall$3"]},{name:"expr_compare$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_compare$macrocall$1$subexpression$2",symbols:["expr_compare$macrocall$4"]},{name:"expr_compare$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_compare$macrocall$1",symbols:["expr_compare$macrocall$1$subexpression$1","expr_compare$macrocall$2","expr_compare$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_compare$macrocall$1",symbols:["expr_compare$macrocall$4"],postprocess:o},{name:"expr_compare",symbols:["expr_compare$macrocall$1"]},{name:"expr_range$macrocall$2",symbols:["ops_between"]},{name:"expr_range$macrocall$3",symbols:[l.lexerAny.has("kw_and")?{type:"kw_and"}:kw_and]},{name:"expr_range$macrocall$4",symbols:["expr_range"]},{name:"expr_range$macrocall$5",symbols:["expr_others"]},{name:"expr_range$macrocall$1$subexpression$1",symbols:["expr_range$macrocall$4"]},{name:"expr_range$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_range$macrocall$1$subexpression$2",symbols:["expr_range$macrocall$4"]},{name:"expr_range$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_range$macrocall$1$subexpression$3",symbols:["expr_range$macrocall$5"]},{name:"expr_range$macrocall$1$subexpression$3",symbols:["expr_paren"]},{name:"expr_range$macrocall$1",symbols:["expr_range$macrocall$1$subexpression$1","expr_range$macrocall$2","expr_range$macrocall$1$subexpression$2","expr_range$macrocall$3","expr_range$macrocall$1$subexpression$3"],postprocess:f=>(0,c.track)(f,{type:"ternary",value:o(f[0]),lo:o(f[2]),hi:o(f[4]),op:(Z(f[1]).join(" ")||"<error>").toUpperCase()})},{name:"expr_range$macrocall$1",symbols:["expr_range$macrocall$5"],postprocess:o},{name:"expr_range",symbols:["expr_range$macrocall$1"]},{name:"expr_others$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("ops_others")?{type:"ops_others"}:ops_others]},{name:"expr_others$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_others$macrocall$2$macrocall$2"]},{name:"expr_others$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_others$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_others$macrocall$2$macrocall$1",symbols:["expr_others$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_others$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_others$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.t
39rack)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_others$macrocall$2",symbols:["expr_others$macrocall$2$macrocall$1"]},{name:"expr_others$macrocall$3",symbols:["expr_others"]},{name:"expr_others$macrocall$4",symbols:["expr_like"]},{name:"expr_others$macrocall$1$subexpression$1",symbols:["expr_others$macrocall$3"]},{name:"expr_others$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_others$macrocall$1$subexpression$2",symbols:["expr_others$macrocall$4"]},{name:"expr_others$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_others$macrocall$1",symbols:["expr_others$macrocall$1$subexpression$1","expr_others$macrocall$2","expr_others$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_others$macrocall$1",symbols:["expr_others$macrocall$4"],postprocess:o},{name:"expr_others",symbols:["expr_others$macrocall$1"]},{name:"expr_like$macrocall$2$macrocall$2",symbols:["ops_like"]},{name:"expr_like$macrocall$2$macrocall$1",symbols:["expr_like$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_like$macrocall$2",symbols:["expr_like$macrocall$2$macrocall$1"]},{name:"expr_like$macrocall$3",symbols:["expr_like"]},{name:"expr_like$macrocall$4",symbols:["expr_in"]},{name:"expr_like$macrocall$1$subexpression$1",symbols:["expr_like$macrocall$3"]},{name:"expr_like$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_like$macrocall$1$subexpression$2",symbols:["expr_like$macrocall$4"]},{name:"expr_like$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_like$macrocall$1",symbols:["expr_like$macrocall$1$subexpression$1","expr_like$macrocall$2","expr_like$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_like$macrocall$1",symbols:["expr_like$macrocall$4"],postprocess:o},{name:"expr_like",symbols:["expr_like$macrocall$1"]},{name:"expr_in$macrocall$2$macrocall$2",symbols:["ops_in"]},{name:"expr_in$macrocall$2$macrocall$1",symbols:["expr_in$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_in$macrocall$2",symbols:["expr_in$macrocall$2$macrocall$1"]},{name:"expr_in$macrocall$3",symbols:["expr_in"]},{name:"expr_in$macrocall$4",symbols:["expr_add"]},{name:"expr_in$macrocall$1$subexpression$1",symbols:["expr_in$macrocall$3"]},{name:"expr_in$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_in$macrocall$1$subexpression$2",symbols:["expr_in$macrocall$4"]},{name:"expr_in$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_in$macrocall$1",symbols:["expr_in$macrocall$1$subexpression$1","expr_in$macrocall$2","expr_in$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_in$macrocall$1",symbols:["expr_in$macrocall$4"],postprocess:o},{name:"expr_in",symbols:["expr_in$macrocall$1"]},{name:"expr_add$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_plus")?{type:"op_plus"}:op_plus]},{name:"expr_add$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_minus")?{type:"op_minus"}:op_minus]},{name:"expr_add$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_additive")?{type:"op_additive"}:op_additive]},{name:"expr_add$macrocall$2$macrocall$2",symbols:["expr_add$macrocall$2$macrocall$2$subexpression$1"]},{name:"expr_add$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_add$macrocall$2$macrocall$2"]},{name:"expr_add$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_add$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_add$macrocall$2$macrocall$1",symbols:["expr_add$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_add$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_add$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_add$macrocall$2",symbols:["expr_add$macrocall$2$macrocall$1"]},{name:"expr_add$macrocall$3",symbols:["expr_add"]},{name:"expr_add$macrocall$4",symbols:["expr_mult"]},{name:"expr_add$macrocall$1$subexpression$1",symbols:["expr_add$macrocall$3"]},{name:"expr_add$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_add$macrocall$1$subexpression$2",symbols:["expr_add$macrocall$4"]},{name:"expr_add$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_add$macrocall$1",symbols:["expr_add$macrocall$1$subexpression$1","expr_add$macrocall$2","expr_add$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_add$macrocall$1",symbols:["expr_add$macrocall$4"],postprocess:o},{name:"expr_add",symbols:["expr_add$macrocall$1"]},{name:"expr_mult$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("star")?{type:"star"}:star]},{name:"expr_mult$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_div")?{type:"op_div"}:op_div]},{name:"expr_mult$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_mod")?{type:"op_mod"}:op_mod]},{name:"expr_mult$macrocall$2$macrocall$2",symbols:["expr_mult$macrocall$2$macrocall$2$subexpression$1"]},{name:"expr_mult$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_mult$macrocall$2$macrocall$2"]},{name:"expr_mult$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_mult$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_mult$macrocall$2$macrocall$1",symbols:["expr_mult$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_mult$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_mult$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_mult$macrocall$2",symbols:["expr_mult$macrocall$2$macrocall$1"]},{name:"expr_mult$macrocall$3",symbols:["expr_mult"]},{name:"expr_mult$macrocall$4",symbols:["expr_exp"]},{name:"expr_mult$macrocall$1$subexpression$1",symbols:["expr_mult$macrocall$3"]},{name:"expr_mult$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_mult$macrocall$1$subexpression$2",symbols:["expr_mult$macrocall$4"]},{name:"expr_mult$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_mult$macrocall$1",symbols:["expr_mult$macrocall$1$subexpression$1","expr_mult$macrocall$2","expr_mult$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_mult$macrocall$1",symbols:["expr_mult$macrocall$4"],postprocess:o},{name:"expr_mult",symbols:["expr_mult$macrocall$1"]},{name:"expr_exp$macrocall$2$macrocall$2",symbols:[l.lexerAny.has("op_exp")?{type:"op_exp"}:op_exp]},{name:"expr_exp$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_exp$macrocall$2$macrocall$2"]},{name:"expr_exp$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_exp$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_exp$macrocall$2$macrocall$1",symbols:["expr_exp$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_exp$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_exp$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_exp$macrocall$2",symbols:["expr_exp$macrocall$2$macrocall$1"]},{name:"expr_exp$macrocall$3",symbols:["expr_exp"]},{name:"expr_exp$macrocall$4",symbols:["expr_unary_add"]},{name:"expr_exp$macrocall$1$subexpression$1",symbols:["expr_exp$macrocall$3"]},{name:"expr_exp$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_exp$macrocall$1$subexpression$2",symbols:["expr_exp$macrocall$4"]},{name:"expr_exp$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_exp$macrocall$1",symbols:["expr_exp$macrocall$1$subexpression$1","expr_exp$macrocall$2","expr_exp$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_exp$macrocall$1",symbols:["expr_exp$macrocall$4"],postprocess:o},{name:"expr_exp",symbols:["expr_exp$macrocall$1"]},{name:"expr_unary_add$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_plus")?{type:"op_plus"}:op_plus]},{name:"expr_unary_add$macrocall$2$macrocall$2$subexpression$1",symbols:[l.lexerAny.has("op_minus")?{type:"op_minus"}:op_minus]},{name:"expr_unary_add$macrocall$2$macrocall$2",symbols:["expr_unary_add$macrocall$2$macrocall$2$subexpression$1"]},{name:"expr_unary_add$macrocall$2$macrocall$1$macrocall$2",symbols:["expr_unary_add$macrocall$2$macrocall$2"]},{name:"expr_unary_add$macrocall$2$macrocall$1$macrocall$1",symbols:["expr_unary_add$macrocall$2$macrocall$1$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_unary_add$macrocall$2$macrocall$1",symbols:["expr_unary_add$macrocall$2$macrocall$1$macrocall$1"],postprocess:o},{name:"expr_unary_add$macrocall$2$macrocall$1",symbols:["kw_operator","lparen","ident","dot","expr_unary_add$macrocall$2$macrocall$2","rparen"],postprocess:f=>(0,c.track)(f,{op:(X(f[4]," ")||"<error>").toUpperCase(),opSchema:X(f[2])})},{name:"expr_unary_add$macrocall$2",symbols:["expr_unary_add$macrocall$2$macrocall$1"]},{name:"expr_unary_add$macrocall$3",symbols:["expr_unary_add"]},{name:"expr_unary_add$macrocall$4",symbols:["expr_various_constructs"]},{name:"expr_unary_add$macrocall$1$subexpression$1",symbols:["expr_unary_add$macrocall$3"]},{name:"expr_unary_add$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_unary_add$macrocall$1",symbols:["expr_unary_add$macrocall$2","expr_unary_add$macrocall$1$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"unary",...o(f[0]),operand:o(f[1])})},{name:"expr_unary_add$macrocall$1",symbols:["expr_unary_add$macrocall$4"],postprocess:o},{name:"expr_unary_add",symbols:["expr_unary_add$macrocall$1"]},{name:"expr_various_constructs$macrocall$2$macrocall$2",symbols:["various_binaries"]},{name:"expr_various_constructs$macrocall$2$macrocall$1",symbols:["expr_various_constructs$macrocall$2$macrocall$2"],postprocess:f=>(0,c.track)(f,{op:(X(f," ")||"<error>").toUpperCase()})},{name:"expr_various_constructs$macrocall$2",symbols:["expr_various_constructs$macrocall$2$macrocall$1"]},{name:"expr_various_constructs$macrocall$3",symbols:["expr_various_constructs"]},{name:"expr_various_constructs$macrocall$4",symbols:["expr_array_index"]},{name:"expr_various_constructs$macrocall$1$subexpression$1",symbols:["expr_various_constructs$macrocall$3"]},{name:"expr_various_constructs$macrocall$1$subexpression$1",symbols:["expr_paren"]},{name:"expr_various_constructs$macrocall$1$subexpression$2",symbols:["expr_various_constructs$macrocall$4"]},{name:"expr_various_constructs$macrocall$1$subexpression$2",symbols:["expr_paren"]},{name:"expr_various_constructs$macrocall$1",symbols:["expr_various_constructs$macrocall$1$subexpression$1","expr_various_constructs$macrocall$2","expr_various_constructs$macrocall$1$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"binary",left:o(f[0]),right:o(f[2]),...o(f[1])})},{name:"expr_various_constructs$macrocall$1",symbols:["expr_various_constructs$macrocall$4"],postprocess:o},{name:"expr_various_constructs",symbols:["expr_various_constructs$macrocall$1"]},{name:"expr_array_index$subexpression$1",symbols:["expr_array_index"]},{name:"expr_array_index$subexpression$1",symbols:["expr_paren"]},{name:"expr_array_index",symbols:["expr_array_index$subexpression$1",l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket,"expr_nostar",l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:f=>(0,c.track)(f,{type:"arrayIndex",array:o(f[0]),index:o(f[2])})},{name:"expr_array_index",symbols:["expr_member"],postprocess:o},{name:"expr_member$subexpression$1",symbols:["expr_member"]},{name:"expr_member$subexpression$1",symbols:["expr_paren"]},{name:"expr_member$subexpression$2",symbols:["string"]},{name:"expr_member$subexpression$2",symbols:["int"]},{name:"expr_member",symbols:["expr_member$subexpression$1","ops_member","expr_member$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"member",operand:o(f[0]),op:f[1],member:o(f[2])})},{name:"expr_member$subexpression$3",symbols:["expr_member"]},{name:"expr_member$subexpression$3",symbols:["expr_paren"]},{name:"expr_member",symbols:["expr_member$subexpression$3",l.lexerAny.has("op_cast")?{type:"op_cast"}:op_cast,"data_type"],postprocess:f=>(0,c.track)(f,{type:"cast",operand:o(f[0]),to:f[2]})},{name:"expr_member",symbols:[l.lexerAny.has("kw_cast")?{type:"kw_cast"}:kw_cast,"lparen","expr_nostar",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"data_type","rparen"],postprocess:f=>(0,c.track)(f,{type:"cast",operand:o(f[2]),to:f[4]})},{name:"expr_member",symbols:["data_type","string"],postprocess:f=>(0,c.track)(f,{type:"cast",operand:(0,c.track)(f[1],{type:"string",value:(0,c.unbox)(f[1])}),to:(0,c.unbox)(f[0])})},{name:"expr_member",symbols:["expr_dot"],postprocess:o},{name:"expr_dot$subexpression$1",symbols:["word"]},{name:"expr_dot$subexpression$1",symbols:["star"]},{name:"expr_dot",symbols:["qname",l.lexerAny.has("dot")?{type:"dot"}:dot,"expr_dot$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"ref",table:o(f[0]),name:X(f[2])})},{name:"expr_dot",symbols:["expr_final"],postprocess:o},{name:"expr_final",symbols:["expr_basic"]},{name:"expr_final",symbols:["expr_primary"]},{name:"expr_basic",symbols:["expr_special_calls"]},{name:"expr_basic",symbols:["expr_call"]},{name:"expr_basic",symbols:["expr_array"]},{name:"expr_basic",symbols:["expr_case"]},{name:"expr_basic",symbols:["expr_extract"]},{name:"expr_basic",symbols:["word"],postprocess:f=>(0,c.track)(f,{type:"ref",name:o(f[0])})},{name:"expr_array$ebnf$1",symbols:["expr_subarray_items"],postprocess:s},{name:"expr_array$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_array",symbols:[l.lexerAny.has("kw_array")?{type:"kw_array"}:kw_array,l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket,"expr_array$ebnf$1",l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:f=>(0,c.track)(f,{type:"array",expressions:f[2]||[]})},{name:"expr_array",symbols:[l.lexerAny.has("kw_array")?{type:"kw_array"}:kw_array,"lparen","selection","rparen"],postprocess:f=>(0,c.track)(f,{type:"array select",select:o(f[2])})},{name:"expr_subarray$ebnf$1",symbols:["expr_subarray_items"],postprocess:s},{name:"expr_subarray$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_subarray",symbols:[l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket,"expr_subarray$ebnf$1",l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:d(1)},{name:"expr_subarray_items$macrocall$2",symbols:["expr_list_item"]},{name:"expr_subarray_items$macrocall$1$ebnf$1",symbols:[]},{name:"expr_subarray_items$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"expr_subarray_items$macrocall$2"],postprocess:b},{name:"expr_subarray_items$macrocall$1$ebnf$1",symbols:["expr_subarray_items$macrocall$1$ebnf$1","expr_subarray_items$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"expr_subarray_items$macrocall$1",symbols:["expr_subarray_items$macrocall$2","expr_subarray_items$macrocall$1$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"expr_subarray_items",symbols:["expr_subarray_items$macrocall$1"],postprocess:f=>f[0].map(o)},{name:"expr_subarray_items$macrocall$4",symbols:["expr_subarray"]},{name:"expr_subarray_items$macrocall$3$ebnf$1",symbols:[]},{name:"expr_subarray_items$macrocall$3$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"expr_subarray_items$macrocall$4"],postprocess:b},{name:"expr_subarray_items$macrocall$3$ebnf$1",symbols:["expr_subarray_items$macrocall$3$ebnf$1","expr_subarray_items$macrocall$3$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"expr_subarray_items$macrocall$3",symbols:["expr_subarray_items$macrocall$4","expr_subarray_items$macrocall$3$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"expr_subarray_items",symbols:["expr_subarray_items$macrocall$3"],pos
39tprocess:f=>f[0].map(w=>(0,c.track)(w,{type:"array",expressions:w[0].map(o)}))},{name:"expr_function_call$ebnf$1",symbols:["expr_list_raw"],postprocess:s},{name:"expr_function_call$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_function_call",symbols:["expr_fn_name","lparen","expr_function_call$ebnf$1","rparen"],postprocess:f=>(0,c.track)(f,{type:"call",function:o(f[0]),args:f[2]||[]})},{name:"expr_call$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all]},{name:"expr_call$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_distinct")?{type:"kw_distinct"}:kw_distinct]},{name:"expr_call$ebnf$1",symbols:["expr_call$ebnf$1$subexpression$1"],postprocess:s},{name:"expr_call$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_call$ebnf$2",symbols:["expr_list_raw"],postprocess:s},{name:"expr_call$ebnf$2",symbols:[],postprocess:()=>null},{name:"expr_call$ebnf$3",symbols:["select_order_by"],postprocess:s},{name:"expr_call$ebnf$3",symbols:[],postprocess:()=>null},{name:"expr_call$ebnf$4$subexpression$1",symbols:["kw_filter","lparen",l.lexerAny.has("kw_where")?{type:"kw_where"}:kw_where,"expr","rparen"],postprocess:d(3)},{name:"expr_call$ebnf$4",symbols:["expr_call$ebnf$4$subexpression$1"],postprocess:s},{name:"expr_call$ebnf$4",symbols:[],postprocess:()=>null},{name:"expr_call$ebnf$5",symbols:["expr_call_over"],postprocess:s},{name:"expr_call$ebnf$5",symbols:[],postprocess:()=>null},{name:"expr_call",symbols:["expr_fn_name","lparen","expr_call$ebnf$1","expr_call$ebnf$2","expr_call$ebnf$3","rparen","expr_call$ebnf$4","expr_call$ebnf$5"],postprocess:f=>(0,c.track)(f,{type:"call",function:o(f[0]),...f[2]&&{distinct:X(f[2])},args:f[3]||[],...f[4]&&{orderBy:f[4]},...f[6]&&{filter:o(f[6])},...f[7]&&{over:o(f[7])}})},{name:"expr_call_over$ebnf$1$subexpression$1",symbols:["kw_partition","kw_by","expr_list_raw"],postprocess:b},{name:"expr_call_over$ebnf$1",symbols:["expr_call_over$ebnf$1$subexpression$1"],postprocess:s},{name:"expr_call_over$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_call_over$ebnf$2",symbols:["select_order_by"],postprocess:s},{name:"expr_call_over$ebnf$2",symbols:[],postprocess:()=>null},{name:"expr_call_over",symbols:["kw_over","lparen","expr_call_over$ebnf$1","expr_call_over$ebnf$2","rparen"],postprocess:f=>(0,c.track)(f,{...f[2]&&{partitionBy:f[2]},...f[3]&&{orderBy:f[3]}})},{name:"expr_extract$subexpression$1",symbols:["word"],postprocess:v("extract")},{name:"expr_extract",symbols:["expr_extract$subexpression$1","lparen","word",l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"expr","rparen"],postprocess:f=>(0,c.track)(f,{type:"extract",field:r(f[2]),from:f[4]})},{name:"expr_primary",symbols:["float"],postprocess:f=>(0,c.track)(f,{type:"numeric",value:(0,c.unbox)(f[0])})},{name:"expr_primary",symbols:["int"],postprocess:f=>(0,c.track)(f,{type:"integer",value:(0,c.unbox)(f[0])})},{name:"expr_primary",symbols:["string"],postprocess:f=>(0,c.track)(f,{type:"string",value:(0,c.unbox)(f[0])})},{name:"expr_primary",symbols:[l.lexerAny.has("kw_true")?{type:"kw_true"}:kw_true],postprocess:f=>(0,c.track)(f,{type:"boolean",value:!0})},{name:"expr_primary",symbols:[l.lexerAny.has("kw_false")?{type:"kw_false"}:kw_false],postprocess:f=>(0,c.track)(f,{type:"boolean",value:!1})},{name:"expr_primary",symbols:[l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null],postprocess:f=>(0,c.track)(f,{type:"null"})},{name:"expr_primary",symbols:["value_keyword"],postprocess:f=>(0,c.track)(f,{type:"keyword",keyword:X(f)})},{name:"expr_primary",symbols:[l.lexerAny.has("qparam")?{type:"qparam"}:qparam],postprocess:f=>(0,c.track)(f,{type:"parameter",name:X(f[0])})},{name:"expr_primary",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default],postprocess:f=>(0,c.track)(f,{type:"default"})},{name:"ops_like",symbols:["ops_like_keywors"]},{name:"ops_like",symbols:["ops_like_operators"]},{name:"ops_like_keywors$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"ops_like_keywors$ebnf$1",symbols:[],postprocess:()=>null},{name:"ops_like_keywors$subexpression$1",symbols:[l.lexerAny.has("kw_like")?{type:"kw_like"}:kw_like]},{name:"ops_like_keywors$subexpression$1",symbols:[l.lexerAny.has("kw_ilike")?{type:"kw_ilike"}:kw_ilike]},{name:"ops_like_keywors",symbols:["ops_like_keywors$ebnf$1","ops_like_keywors$subexpression$1"]},{name:"ops_like_operators$subexpression$1",symbols:[l.lexerAny.has("op_like")?{type:"op_like"}:op_like],postprocess:()=>"LIKE"},{name:"ops_like_operators",symbols:["ops_like_operators$subexpression$1"]},{name:"ops_like_operators$subexpression$2",symbols:[l.lexerAny.has("op_ilike")?{type:"op_ilike"}:op_ilike],postprocess:()=>"ILIKE"},{name:"ops_like_operators",symbols:["ops_like_operators$subexpression$2"]},{name:"ops_like_operators$subexpression$3",symbols:[l.lexerAny.has("op_not_like")?{type:"op_not_like"}:op_not_like],postprocess:()=>"NOT LIKE"},{name:"ops_like_operators",symbols:["ops_like_operators$subexpression$3"]},{name:"ops_like_operators$subexpression$4",symbols:[l.lexerAny.has("op_not_ilike")?{type:"op_not_ilike"}:op_not_ilike],postprocess:()=>"NOT ILIKE"},{name:"ops_like_operators",symbols:["ops_like_operators$subexpression$4"]},{name:"ops_in$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"ops_in$ebnf$1",symbols:[],postprocess:()=>null},{name:"ops_in",symbols:["ops_in$ebnf$1",l.lexerAny.has("kw_in")?{type:"kw_in"}:kw_in]},{name:"ops_between$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"ops_between$ebnf$1",symbols:[],postprocess:()=>null},{name:"ops_between",symbols:["ops_between$ebnf$1","kw_between"]},{name:"ops_member$subexpression$1",symbols:[l.lexerAny.has("op_member")?{type:"op_member"}:op_member]},{name:"ops_member$subexpression$1",symbols:[l.lexerAny.has("op_membertext")?{type:"op_membertext"}:op_membertext]},{name:"ops_member",symbols:["ops_member$subexpression$1"],postprocess:f=>{var w;return(w=o(f))===null||w===void 0?void 0:w.value}},{name:"expr_list_item",symbols:["expr_or_select"],postprocess:o},{name:"expr_list_item",symbols:["expr_star"],postprocess:o},{name:"expr_list_raw$macrocall$2",symbols:["expr_list_item"]},{name:"expr_list_raw$macrocall$1$ebnf$1",symbols:[]},{name:"expr_list_raw$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"expr_list_raw$macrocall$2"],postprocess:b},{name:"expr_list_raw$macrocall$1$ebnf$1",symbols:["expr_list_raw$macrocall$1$ebnf$1","expr_list_raw$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"expr_list_raw$macrocall$1",symbols:["expr_list_raw$macrocall$2","expr_list_raw$macrocall$1$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"expr_list_raw",symbols:["expr_list_raw$macrocall$1"],postprocess:([f])=>f.map(o)},{name:"expr_list_raw_many$macrocall$2",symbols:["expr_list_item"]},{name:"expr_list_raw_many$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"expr_list_raw_many$macrocall$2"],postprocess:b},{name:"expr_list_raw_many$macrocall$1$ebnf$1",symbols:["expr_list_raw_many$macrocall$1$ebnf$1$subexpression$1"]},{name:"expr_list_raw_many$macrocall$1$ebnf$1$subexpression$2",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"expr_list_raw_many$macrocall$2"],postprocess:b},{name:"expr_list_raw_many$macrocall$1$ebnf$1",symbols:["expr_list_raw_many$macrocall$1$ebnf$1","expr_list_raw_many$macrocall$1$ebnf$1$subexpression$2"],postprocess:f=>f[0].concat([f[1]])},{name:"expr_list_raw_many$macrocall$1",symbols:["expr_list_raw_many$macrocall$2","expr_list_raw_many$macrocall$1$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"expr_list_raw_many",symbols:["expr_list_raw_many$macrocall$1"],postprocess:([f])=>f.map(o)},{name:"expr_or_select",symbols:["expr_nostar"],postprocess:o},{name:"expr_or_select",symbols:["selection"],postprocess:o},{name:"expr_list_many",symbols:["expr_list_raw_many"],postprocess:f=>(0,c.track)(f,{type:"list",expressions:f[0]})},{name:"expr_case$ebnf$1",symbols:["expr_nostar"],postprocess:s},{name:"expr_case$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_case$ebnf$2",symbols:[]},{name:"expr_case$ebnf$2",symbols:["expr_case$ebnf$2","expr_case_whens"],postprocess:f=>f[0].concat([f[1]])},{name:"expr_case$ebnf$3",symbols:["expr_case_else"],postprocess:s},{name:"expr_case$ebnf$3",symbols:[],postprocess:()=>null},{name:"expr_case",symbols:[l.lexerAny.has("kw_case")?{type:"kw_case"}:kw_case,"expr_case$ebnf$1","expr_case$ebnf$2","expr_case$ebnf$3",l.lexerAny.has("kw_end")?{type:"kw_end"}:kw_end],postprocess:f=>(0,c.track)(f,{type:"case",value:f[1],whens:f[2],else:f[3]})},{name:"expr_case_whens",symbols:[l.lexerAny.has("kw_when")?{type:"kw_when"}:kw_when,"expr_nostar",l.lexerAny.has("kw_then")?{type:"kw_then"}:kw_then,"expr_nostar"],postprocess:f=>(0,c.track)(f,{when:f[1],value:f[3]})},{name:"expr_case_else",symbols:[l.lexerAny.has("kw_else")?{type:"kw_else"}:kw_else,"expr_nostar"],postprocess:b},{name:"expr_fn_name$subexpression$1$ebnf$1$subexpression$1",symbols:["word",l.lexerAny.has("dot")?{type:"dot"}:dot]},{name:"expr_fn_name$subexpression$1$ebnf$1",symbols:["expr_fn_name$subexpression$1$ebnf$1$subexpression$1"],postprocess:s},{name:"expr_fn_name$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"expr_fn_name$subexpression$1",symbols:["expr_fn_name$subexpression$1$ebnf$1","word_or_keyword"],postprocess:f=>(0,c.track)(f,{name:(0,c.unbox)(o(f[1])),...f[0]&&{schema:X(f[0][0])}})},{name:"expr_fn_name",symbols:["expr_fn_name$subexpression$1"]},{name:"expr_fn_name$subexpression$2$subexpression$1",symbols:[l.lexerAny.has("kw_any")?{type:"kw_any"}:kw_any]},{name:"expr_fn_name$subexpression$2$subexpression$1",symbols:[l.lexerAny.has("kw_some")?{type:"kw_some"}:kw_some]},{name:"expr_fn_name$subexpression$2$subexpression$1",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all]},{name:"expr_fn_name$subexpression$2",symbols:["expr_fn_name$subexpression$2$subexpression$1"],postprocess:f=>(0,c.track)(f,{name:X(o(f))})},{name:"expr_fn_name",symbols:["expr_fn_name$subexpression$2"]},{name:"word_or_keyword",symbols:["word"]},{name:"word_or_keyword",symbols:["value_keyword"],postprocess:f=>(0,c.box)(f,X(f))},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_catalog")?{type:"kw_current_catalog"}:kw_current_catalog]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_date")?{type:"kw_current_date"}:kw_current_date]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_role")?{type:"kw_current_role"}:kw_current_role]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_schema")?{type:"kw_current_schema"}:kw_current_schema]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_timestamp")?{type:"kw_current_timestamp"}:kw_current_timestamp]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_time")?{type:"kw_current_time"}:kw_current_time]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_localtimestamp")?{type:"kw_localtimestamp"}:kw_localtimestamp]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_localtime")?{type:"kw_localtime"}:kw_localtime]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_session_user")?{type:"kw_session_user"}:kw_session_user]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_user")?{type:"kw_user"}:kw_user]},{name:"value_keyword",symbols:[l.lexerAny.has("kw_current_user")?{type:"kw_current_user"}:kw_current_user]},{name:"expr_special_calls",symbols:["spe_overlay"]},{name:"expr_special_calls",symbols:["spe_substring"]},{name:"spe_overlay$subexpression$1",symbols:["word"],postprocess:v("overlay")},{name:"spe_overlay$subexpression$2",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen,"expr_nostar"]},{name:"spe_overlay$subexpression$3",symbols:[l.lexerAny.has("kw_placing")?{type:"kw_placing"}:kw_placing,"expr_nostar"]},{name:"spe_overlay$subexpression$4",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"expr_nostar"]},{name:"spe_overlay$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_for")?{type:"kw_for"}:kw_for,"expr_nostar"]},{name:"spe_overlay$ebnf$1",symbols:["spe_overlay$ebnf$1$subexpression$1"],postprocess:s},{name:"spe_overlay$ebnf$1",symbols:[],postprocess:()=>null},{name:"spe_overlay",symbols:["spe_overlay$subexpression$1","spe_overlay$subexpression$2","spe_overlay$subexpression$3","spe_overlay$subexpression$4","spe_overlay$ebnf$1",l.lexerAny.has("rparen")?{type:"rparen"}:rparen],postprocess:f=>(0,c.track)(f,{type:"overlay",value:f[1][1],placing:f[2][1],from:f[3][1],...f[4]&&{for:f[4][1]}})},{name:"spe_substring$subexpression$1",symbols:["word"],postprocess:v("substring")},{name:"spe_substring$subexpression$2",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen,"expr_nostar"]},{name:"spe_substring$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"expr_nostar"]},{name:"spe_substring$ebnf$1",symbols:["spe_substring$ebnf$1$subexpression$1"],postprocess:s},{name:"spe_substring$ebnf$1",symbols:[],postprocess:()=>null},{name:"spe_substring$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("kw_for")?{type:"kw_for"}:kw_for,"expr_nostar"]},{name:"spe_substring$ebnf$2",symbols:["spe_substring$ebnf$2$subexpression$1"],postprocess:s},{name:"spe_substring$ebnf$2",symbols:[],postprocess:()=>null},{name:"spe_substring",symbols:["spe_substring$subexpression$1","spe_substring$subexpression$2","spe_substring$ebnf$1","spe_substring$ebnf$2",l.lexerAny.has("rparen")?{type:"rparen"}:rparen],postprocess:f=>(0,c.track)(f,{type:"substring",value:f[1][1],...f[2]&&{from:f[2][1]},...f[3]&&{for:f[3][1]}})},{name:"various_binaries",symbols:["kw_at","kw_time","kw_zone"],postprocess:()=>"AT TIME ZONE"},{name:"createtable_statement$ebnf$1",symbols:["createtable_modifiers"],postprocess:s},{name:"createtable_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"createtable_statement$ebnf$2",symbols:["kw_ifnotexists"],postprocess:s},{name:"createtable_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"createtable_statement$ebnf$3",symbols:["createtable_opts"],postprocess:s},{name:"createtable_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"createtable_statement",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"createtable_statement$ebnf$1",l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table,"createtable_statement$ebnf$2","qname","lparen","createtable_declarationlist","rparen","createtable_statement$ebnf$3"],postprocess:f=>{const w=f[6].filter(R=>"kind"in R),x=f[6].filter(R=>!("kind"in R));return(0,c.track)(f,{type:"create table",...f[3]?{ifNotExists:!0}:{},name:f[4],columns:w,...o(f[1]),...x.length?{constraints:x}:{},...b(f)})}},{name:"createtable_modifiers",symbols:["kw_unlogged"],postprocess:f=>f[0]?{unlogged:!0}:{}},{name:"createtable_modifiers",symbols:["m_locglob"]},{name:"createtable_modifiers",symbols:["m_tmp"]},{name:"createtable_modifiers",symbols:["m_locglob","m_tmp"],postprocess:([f,w])=>({...f,...w})},{name:"m_locglob$subexpression$1",symbols:["kw_local"]},{name:"m_locglob$subexpression$1",symbols:["kw_global"]},{name:"m_locglob",symbols:["m_locglob$subexpression$1"],postprocess:f=>({locality:X(f)})},{name:"m_tmp$subexpression$1",symbols:["kw_temp"]},{name:"m_tmp$subexpression$1",symbols:["kw_temporary"]},{name:"m_tmp",symbols:["m_tmp$subexpression$1"],postprocess:f=>({temporary:!0})},{name:"createtable_declarationlist$ebnf$1",symbols:[]},{name:"createtable_declarationlist$ebnf$1$subexpression$1",symbols:["comma","createtable_declaration"],postprocess:b},{name:"createtable_declarationlist$ebnf$1",symbols:["createtable_declarationlist$ebnf$1","createtable_declarationlist$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_declarationlist",symbols:["createtable_declaration","createtable_declarationlist$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"createtable_declaration$subexpression$1",symbols:["createtable_constraint"]},{name:"createtable_declaration$subexpression$1",symbols:["createtable_column"]},{name:"createtable_declaration$subexpression$1",symbols:["createtable_like"]},{name:"createtable_declaration",symbols:["createtable_declaration$subexpression$1"],postprocess:o},{name:"createtable_constraint$macrocall$2",symbols:["createtable_constraint_def"]},{name:"createtable_constraint$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_constraint")?{
39type:"kw_constraint"}:kw_constraint,"word"]},{name:"createtable_constraint$macrocall$1$ebnf$1",symbols:["createtable_constraint$macrocall$1$ebnf$1$subexpression$1"],postprocess:s},{name:"createtable_constraint$macrocall$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"createtable_constraint$macrocall$1",symbols:["createtable_constraint$macrocall$1$ebnf$1","createtable_constraint$macrocall$2"],postprocess:f=>{const w=f[0]&&r(f[0][1]);return w?(0,c.track)(f,{constraintName:w,...o(f[1])}):(0,c.track)(f,o(f[1]))}},{name:"createtable_constraint",symbols:["createtable_constraint$macrocall$1"],postprocess:o},{name:"createtable_constraint_def",symbols:["createtable_constraint_def_unique"]},{name:"createtable_constraint_def",symbols:["createtable_constraint_def_check"]},{name:"createtable_constraint_def",symbols:["createtable_constraint_foreignkey"]},{name:"createtable_constraint_def_unique$subexpression$1",symbols:[l.lexerAny.has("kw_unique")?{type:"kw_unique"}:kw_unique]},{name:"createtable_constraint_def_unique$subexpression$1",symbols:["kw_primary_key"]},{name:"createtable_constraint_def_unique",symbols:["createtable_constraint_def_unique$subexpression$1","lparen","createtable_collist","rparen"],postprocess:f=>(0,c.track)(f,{type:X(f[0]," "),columns:f[2].map(r)})},{name:"createtable_constraint_def_check",symbols:[l.lexerAny.has("kw_check")?{type:"kw_check"}:kw_check,"expr_paren"],postprocess:f=>(0,c.track)(f,{type:"check",expr:o(f[1])})},{name:"createtable_constraint_foreignkey",symbols:[l.lexerAny.has("kw_foreign")?{type:"kw_foreign"}:kw_foreign,"kw_key","collist_paren","createtable_references"],postprocess:f=>(0,c.track)(f,{type:"foreign key",localColumns:f[2].map(r),...f[3]})},{name:"createtable_references$ebnf$1",symbols:[]},{name:"createtable_references$ebnf$1",symbols:["createtable_references$ebnf$1","createtable_constraint_foreignkey_onsometing"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_references",symbols:[l.lexerAny.has("kw_references")?{type:"kw_references"}:kw_references,"table_ref","collist_paren","createtable_references$ebnf$1"],postprocess:f=>(0,c.track)(f,{foreignTable:o(f[1]),foreignColumns:f[2].map(r),...f[3].reduce((w,x)=>({...w,...x}),{})})},{name:"createtable_constraint_foreignkey_onsometing",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"kw_delete","createtable_constraint_on_action"],postprocess:f=>(0,c.track)(f,{onDelete:b(f)})},{name:"createtable_constraint_foreignkey_onsometing",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"kw_update","createtable_constraint_on_action"],postprocess:f=>(0,c.track)(f,{onUpdate:b(f)})},{name:"createtable_constraint_foreignkey_onsometing$subexpression$1",symbols:[l.lexerAny.has("kw_full")?{type:"kw_full"}:kw_full]},{name:"createtable_constraint_foreignkey_onsometing$subexpression$1",symbols:["kw_partial"]},{name:"createtable_constraint_foreignkey_onsometing$subexpression$1",symbols:["kw_simple"]},{name:"createtable_constraint_foreignkey_onsometing",symbols:["kw_match","createtable_constraint_foreignkey_onsometing$subexpression$1"],postprocess:f=>(0,c.track)(f,{match:X(b(f))})},{name:"createtable_constraint_on_action$subexpression$1",symbols:["kw_cascade"]},{name:"createtable_constraint_on_action$subexpression$1$subexpression$1",symbols:["kw_no","kw_action"]},{name:"createtable_constraint_on_action$subexpression$1",symbols:["createtable_constraint_on_action$subexpression$1$subexpression$1"]},{name:"createtable_constraint_on_action$subexpression$1",symbols:["kw_restrict"]},{name:"createtable_constraint_on_action$subexpression$1$subexpression$2",symbols:[l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null]},{name:"createtable_constraint_on_action$subexpression$1$subexpression$2",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default]},{name:"createtable_constraint_on_action$subexpression$1",symbols:["kw_set","createtable_constraint_on_action$subexpression$1$subexpression$2"]},{name:"createtable_constraint_on_action",symbols:["createtable_constraint_on_action$subexpression$1"],postprocess:f=>X(f," ")},{name:"createtable_collist$ebnf$1",symbols:[]},{name:"createtable_collist$ebnf$1$subexpression$1",symbols:["comma","ident"],postprocess:b},{name:"createtable_collist$ebnf$1",symbols:["createtable_collist$ebnf$1","createtable_collist$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_collist",symbols:["ident","createtable_collist$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"createtable_column$ebnf$1",symbols:["createtable_collate"],postprocess:s},{name:"createtable_column$ebnf$1",symbols:[],postprocess:()=>null},{name:"createtable_column$ebnf$2",symbols:[]},{name:"createtable_column$ebnf$2",symbols:["createtable_column$ebnf$2","createtable_column_constraint"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_column",symbols:["word","data_type","createtable_column$ebnf$1","createtable_column$ebnf$2"],postprocess:f=>(0,c.track)(f,{kind:"column",name:r(f[0]),dataType:f[1],...f[2]?{collate:f[2][1]}:{},...f[3]&&f[3].length?{constraints:f[3]}:{}})},{name:"createtable_like$ebnf$1",symbols:[]},{name:"createtable_like$ebnf$1",symbols:["createtable_like$ebnf$1","createtable_like_opt"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_like",symbols:[l.lexerAny.has("kw_like")?{type:"kw_like"}:kw_like,"qname","createtable_like$ebnf$1"],postprocess:f=>(0,c.track)(f,{kind:"like table",like:f[1],options:f[2]})},{name:"createtable_like_opt$subexpression$1",symbols:["kw_including"]},{name:"createtable_like_opt$subexpression$1",symbols:["kw_excluding"]},{name:"createtable_like_opt",symbols:["createtable_like_opt$subexpression$1","createtable_like_opt_val"],postprocess:f=>(0,c.track)(f,{verb:X(f[0]),option:X(f[1])})},{name:"createtable_like_opt_val",symbols:["word"],postprocess:k("defaults","constraints","indexes","storage","comments")},{name:"createtable_like_opt_val",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all]},{name:"createtable_column_constraint$macrocall$2",symbols:["createtable_column_constraint_def"]},{name:"createtable_column_constraint$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_constraint")?{type:"kw_constraint"}:kw_constraint,"word"]},{name:"createtable_column_constraint$macrocall$1$ebnf$1",symbols:["createtable_column_constraint$macrocall$1$ebnf$1$subexpression$1"],postprocess:s},{name:"createtable_column_constraint$macrocall$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"createtable_column_constraint$macrocall$1",symbols:["createtable_column_constraint$macrocall$1$ebnf$1","createtable_column_constraint$macrocall$2"],postprocess:f=>{const w=f[0]&&r(f[0][1]);return w?(0,c.track)(f,{constraintName:w,...o(f[1])}):(0,c.track)(f,o(f[1]))}},{name:"createtable_column_constraint",symbols:["createtable_column_constraint$macrocall$1"],postprocess:o},{name:"createtable_column_constraint_def",symbols:[l.lexerAny.has("kw_unique")?{type:"kw_unique"}:kw_unique],postprocess:f=>(0,c.track)(f,{type:"unique"})},{name:"createtable_column_constraint_def",symbols:["kw_primary_key"],postprocess:f=>(0,c.track)(f,{type:"primary key"})},{name:"createtable_column_constraint_def",symbols:["kw_not_null"],postprocess:f=>(0,c.track)(f,{type:"not null"})},{name:"createtable_column_constraint_def",symbols:[l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null],postprocess:f=>(0,c.track)(f,{type:"null"})},{name:"createtable_column_constraint_def",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default,"expr"],postprocess:f=>(0,c.track)(f,{type:"default",default:o(f[1])})},{name:"createtable_column_constraint_def",symbols:[l.lexerAny.has("kw_check")?{type:"kw_check"}:kw_check,"expr_paren"],postprocess:f=>(0,c.track)(f,{type:"check",expr:o(f[1])})},{name:"createtable_column_constraint_def",symbols:["createtable_references"],postprocess:f=>(0,c.track)(f,{type:"reference",...o(f)})},{name:"createtable_column_constraint_def",symbols:["altercol_generated"]},{name:"createtable_collate",symbols:[l.lexerAny.has("kw_collate")?{type:"kw_collate"}:kw_collate,"qualified_name"]},{name:"createtable_opts$subexpression$1",symbols:["word"],postprocess:v("inherits")},{name:"createtable_opts$macrocall$2",symbols:["qname"]},{name:"createtable_opts$macrocall$1$ebnf$1",symbols:[]},{name:"createtable_opts$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"createtable_opts$macrocall$2"],postprocess:b},{name:"createtable_opts$macrocall$1$ebnf$1",symbols:["createtable_opts$macrocall$1$ebnf$1","createtable_opts$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createtable_opts$macrocall$1",symbols:["createtable_opts$macrocall$2","createtable_opts$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"createtable_opts",symbols:["createtable_opts$subexpression$1","lparen","createtable_opts$macrocall$1","rparen"],postprocess:f=>(0,c.track)(f,{inherits:f[2]})},{name:"createindex_statement$ebnf$1",symbols:[l.lexerAny.has("kw_unique")?{type:"kw_unique"}:kw_unique],postprocess:s},{name:"createindex_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$2",symbols:["kw_ifnotexists"],postprocess:s},{name:"createindex_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$3",symbols:["word"],postprocess:s},{name:"createindex_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$4$subexpression$1",symbols:[l.lexerAny.has("kw_using")?{type:"kw_using"}:kw_using,"ident"],postprocess:b},{name:"createindex_statement$ebnf$4",symbols:["createindex_statement$ebnf$4$subexpression$1"],postprocess:s},{name:"createindex_statement$ebnf$4",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$5",symbols:["createindex_with"],postprocess:s},{name:"createindex_statement$ebnf$5",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$6",symbols:["createindex_tblspace"],postprocess:s},{name:"createindex_statement$ebnf$6",symbols:[],postprocess:()=>null},{name:"createindex_statement$ebnf$7",symbols:["createindex_predicate"],postprocess:s},{name:"createindex_statement$ebnf$7",symbols:[],postprocess:()=>null},{name:"createindex_statement",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"createindex_statement$ebnf$1","kw_index","createindex_statement$ebnf$2","createindex_statement$ebnf$3",l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"table_ref","createindex_statement$ebnf$4","lparen","createindex_expressions","rparen","createindex_statement$ebnf$5","createindex_statement$ebnf$6","createindex_statement$ebnf$7"],postprocess:f=>(0,c.track)(f,{type:"create index",...f[1]&&{unique:!0},...f[3]&&{ifNotExists:!0},...f[4]&&{indexName:r(f[4])},table:f[6],...f[7]&&{using:r(f[7])},expressions:f[9],...f[11]&&{with:f[11]},...f[12]&&{tablespace:o(f[12])},...f[13]&&{where:o(f[13])}})},{name:"createindex_expressions$ebnf$1",symbols:[]},{name:"createindex_expressions$ebnf$1$subexpression$1",symbols:["comma","createindex_expression"],postprocess:b},{name:"createindex_expressions$ebnf$1",symbols:["createindex_expressions$ebnf$1","createindex_expressions$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createindex_expressions",symbols:["createindex_expression","createindex_expressions$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"createindex_expression$subexpression$1",symbols:["expr_basic"]},{name:"createindex_expression$subexpression$1",symbols:["expr_paren"]},{name:"createindex_expression$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_collate")?{type:"kw_collate"}:kw_collate,"qualified_name"],postprocess:b},{name:"createindex_expression$ebnf$1",symbols:["createindex_expression$ebnf$1$subexpression$1"],postprocess:s},{name:"createindex_expression$ebnf$1",symbols:[],postprocess:()=>null},{name:"createindex_expression$ebnf$2",symbols:["qualified_name"],postprocess:s},{name:"createindex_expression$ebnf$2",symbols:[],postprocess:()=>null},{name:"createindex_expression$ebnf$3$subexpression$1",symbols:[l.lexerAny.has("kw_asc")?{type:"kw_asc"}:kw_asc]},{name:"createindex_expression$ebnf$3$subexpression$1",symbols:[l.lexerAny.has("kw_desc")?{type:"kw_desc"}:kw_desc]},{name:"createindex_expression$ebnf$3",symbols:["createindex_expression$ebnf$3$subexpression$1"],postprocess:s},{name:"createindex_expression$ebnf$3",symbols:[],postprocess:()=>null},{name:"createindex_expression$ebnf$4$subexpression$1$subexpression$1",symbols:["kw_first"]},{name:"createindex_expression$ebnf$4$subexpression$1$subexpression$1",symbols:["kw_last"]},{name:"createindex_expression$ebnf$4$subexpression$1",symbols:["kw_nulls","createindex_expression$ebnf$4$subexpression$1$subexpression$1"],postprocess:b},{name:"createindex_expression$ebnf$4",symbols:["createindex_expression$ebnf$4$subexpression$1"],postprocess:s},{name:"createindex_expression$ebnf$4",symbols:[],postprocess:()=>null},{name:"createindex_expression",symbols:["createindex_expression$subexpression$1","createindex_expression$ebnf$1","createindex_expression$ebnf$2","createindex_expression$ebnf$3","createindex_expression$ebnf$4"],postprocess:f=>(0,c.track)(f,{expression:o(f[0]),...f[1]&&{collate:o(f[1])},...f[2]&&{opclass:o(f[2])},...f[3]&&{order:o(f[3]).value},...f[4]&&{nulls:o(f[4])}})},{name:"createindex_predicate",symbols:[l.lexerAny.has("kw_where")?{type:"kw_where"}:kw_where,"expr"],postprocess:b},{name:"createindex_with$macrocall$2",symbols:["createindex_with_item"]},{name:"createindex_with$macrocall$1$ebnf$1",symbols:[]},{name:"createindex_with$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"createindex_with$macrocall$2"],postprocess:b},{name:"createindex_with$macrocall$1$ebnf$1",symbols:["createindex_with$macrocall$1$ebnf$1","createindex_with$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createindex_with$macrocall$1",symbols:["createindex_with$macrocall$2","createindex_with$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"createindex_with",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"lparen","createindex_with$macrocall$1","rparen"],postprocess:d(2)},{name:"createindex_with_item$subexpression$1",symbols:["string"]},{name:"createindex_with_item$subexpression$1",symbols:["int"]},{name:"createindex_with_item",symbols:["ident",l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"createindex_with_item$subexpression$1"],postprocess:f=>(0,c.track)(f,{parameter:X(f[0]),value:o(f[2]).toString()})},{name:"createindex_tblspace",symbols:["kw_tablespace","ident"],postprocess:b},{name:"createextension_statement$ebnf$1",symbols:["kw_ifnotexists"],postprocess:s},{name:"createextension_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"createextension_statement$ebnf$2",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with],postprocess:s},{name:"createextension_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"createextension_statement$ebnf$3$subexpression$1",symbols:["kw_schema","word"],postprocess:b},{name:"createextension_statement$ebnf$3",symbols:["createextension_statement$ebnf$3$subexpression$1"],postprocess:s},{name:"createextension_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"createextension_statement$ebnf$4$subexpression$1",symbols:["kw_ver
39sion","string"],postprocess:b},{name:"createextension_statement$ebnf$4",symbols:["createextension_statement$ebnf$4$subexpression$1"],postprocess:s},{name:"createextension_statement$ebnf$4",symbols:[],postprocess:()=>null},{name:"createextension_statement$ebnf$5$subexpression$1",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"string"],postprocess:b},{name:"createextension_statement$ebnf$5",symbols:["createextension_statement$ebnf$5$subexpression$1"],postprocess:s},{name:"createextension_statement$ebnf$5",symbols:[],postprocess:()=>null},{name:"createextension_statement",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"kw_extension","createextension_statement$ebnf$1","word","createextension_statement$ebnf$2","createextension_statement$ebnf$3","createextension_statement$ebnf$4","createextension_statement$ebnf$5"],postprocess:f=>(0,c.track)(f,{type:"create extension",...f[2]?{ifNotExists:!0}:{},extension:r(f[3]),...f[5]?{schema:r(f[5])}:{},...f[6]?{version:u(f[6])}:{},...f[7]?{from:u(f[7])}:{}})},{name:"simplestatements_all",symbols:["simplestatements_start_transaction"]},{name:"simplestatements_all",symbols:["simplestatements_commit"]},{name:"simplestatements_all",symbols:["simplestatements_rollback"]},{name:"simplestatements_all",symbols:["simplestatements_tablespace"]},{name:"simplestatements_all",symbols:["simplestatements_set"]},{name:"simplestatements_all",symbols:["simplestatements_show"]},{name:"simplestatements_all",symbols:["simplestatements_begin"]},{name:"simplestatements_start_transaction$subexpression$1",symbols:["kw_start","kw_transaction"]},{name:"simplestatements_start_transaction",symbols:["simplestatements_start_transaction$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"start transaction"})},{name:"simplestatements_commit",symbols:["kw_commit"],postprocess:f=>(0,c.track)(f,{type:"commit"})},{name:"simplestatements_rollback",symbols:["kw_rollback"],postprocess:f=>(0,c.track)(f,{type:"rollback"})},{name:"simplestatements_tablespace",symbols:["kw_tablespace","word"],postprocess:f=>(0,c.track)(f,{type:"tablespace",tablespace:r(f[1])})},{name:"simplestatements_set$subexpression$1",symbols:["simplestatements_set_simple"]},{name:"simplestatements_set$subexpression$1",symbols:["simplestatements_set_timezone"]},{name:"simplestatements_set$subexpression$1",symbols:["simplestatements_set_names"]},{name:"simplestatements_set",symbols:["kw_set","simplestatements_set$subexpression$1"],postprocess:b},{name:"simplestatements_set_timezone",symbols:["kw_time","kw_zone","simplestatements_set_timezone_val"],postprocess:f=>(0,c.track)(f,{type:"set timezone",to:f[2]})},{name:"simplestatements_set_timezone_val$subexpression$1",symbols:["string"]},{name:"simplestatements_set_timezone_val$subexpression$1",symbols:["int"]},{name:"simplestatements_set_timezone_val",symbols:["simplestatements_set_timezone_val$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"value",value:o(f[0])})},{name:"simplestatements_set_timezone_val",symbols:["kw_local"],postprocess:f=>(0,c.track)(f,{type:"local"})},{name:"simplestatements_set_timezone_val",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default],postprocess:f=>(0,c.track)(f,{type:"default"})},{name:"simplestatements_set_timezone_val",symbols:["kw_interval","string","kw_hour",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"kw_minute"],postprocess:f=>(0,c.track)(f,{type:"interval",value:(0,c.unbox)(f[1])})},{name:"simplestatements_set_names",symbols:["kw_names","simplestatements_set_names_val"],postprocess:f=>(0,c.track)(f,{type:"set names",to:f[1]})},{name:"simplestatements_set_names_val$subexpression$1",symbols:["string"]},{name:"simplestatements_set_names_val",symbols:["simplestatements_set_names_val$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"value",value:o(f[0])})},{name:"simplestatements_set_simple$subexpression$1",symbols:[l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq]},{name:"simplestatements_set_simple$subexpression$1",symbols:[l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to]},{name:"simplestatements_set_simple",symbols:["ident","simplestatements_set_simple$subexpression$1","simplestatements_set_val"],postprocess:f=>
39(0,c.track)(f,{type:"set",variable:r(f[0]),set:(0,c.unbox)(f[2])})},{name:"simplestatements_set_val",symbols:["simplestatements_set_val_raw"],postprocess:o},{name:"simplestatements_set_val",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default],postprocess:f=>(0,c.track)(f,{type:"default"})},{name:"simplestatements_set_val$ebnf$1$subexpression$1",symbols:["comma","simplestatements_set_val_raw"]},{name:"simplestatements_set_val$ebnf$1",symbols:["simplestatements_set_val$ebnf$1$subexpression$1"]},{name:"simplestatements_set_val$ebnf$1$subexpression$2",symbols:["comma","simplestatements_set_val_raw"]},{name:"simplestatements_set_val$ebnf$1",symbols:["simplestatements_set_val$ebnf$1","simplestatements_set_val$ebnf$1$subexpression$2"],postprocess:f=>f[0].concat([f[1]])},{name:"simplestatements_set_val",symbols:["simplestatements_set_val_raw","simplestatements_set_val$ebnf$1"],postprocess:f=>(0,c.track)(f,{type:"list",values:[f[0],...f[1]||[]]})},{name:"simplestatements_set_val_raw$subexpression$1",symbols:["string"]},{name:"simplestatements_set_val_raw$subexpression$1",symbols:["int"]},{name:"simplestatements_set_val_raw",symbols:["simplestatements_set_val_raw$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"value",value:o(f)})},{name:"simplestatements_set_val_raw$subexpression$2",symbols:[l.lexerAny.has("word")?{type:"word"}:word]},{name:"simplestatements_set_val_raw$subexpression$2",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on]},{name:"simplestatements_set_val_raw$subexpression$2",symbols:[l.lexerAny.has("kw_true")?{type:"kw_true"}:kw_true]},{name:"simplestatements_set_val_raw$subexpression$2",symbols:[l.lexerAny.has("kw_false")?{type:"kw_false"}:kw_false]},{name:"simplestatements_set_val_raw",symbols:["simplestatements_set_val_raw$subexpression$2"],postprocess:f=>(0,c.track)(f,{type:"identifier",name:o(f).value})},{name:"simplestatements_set_val_raw",symbols:[l.lexerAny.has("quoted_word")?{type:"quoted_word"}:quoted_word],postprocess:f=>(0,c.track)(f,{type:"identifier",doubleQuoted:!0,name:o(f).value})},{name:"simplestatements_show",symbols:["kw_show","ident"],postprocess:f=>(0,c.track)(f,{type:"show",variable:r(f[1])})},{name:"create_schema$subexpression$1",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"kw_schema"]},{name:"create_schema$ebnf$1",symbols:["kw_ifnotexists"],postprocess:s},{name:"create_schema$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_schema",symbols:["create_schema$subexpression$1","create_schema$ebnf$1","ident"],postprocess:f=>(0,c.track)(f,{type:"create schema",name:r(f[2]),...f[1]?{ifNotExists:!0}:{}})},{name:"raise_statement$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("debug","log","info","notice","warning","exception")},{name:"raise_statement$ebnf$1",symbols:["raise_statement$ebnf$1$subexpression$1"],postprocess:s},{name:"raise_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"raise_statement$ebnf$2$subexpression$1",symbols:["comma","expr_list_raw"],postprocess:b},{name:"raise_statement$ebnf$2",symbols:["raise_statement$ebnf$2$subexpression$1"],postprocess:s},{name:"raise_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"raise_statement$ebnf$3",symbols:["raise_using"],postprocess:s},{name:"raise_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"raise_statement",symbols:["kw_raise","raise_statement$ebnf$1","string","raise_statement$ebnf$2","raise_statement$ebnf$3"],postprocess:f=>(0,c.track)(f,{type:"raise",format:X(f[2]),...f[1]&&{level:X(f[1])},...f[3]&&f[3].length&&{formatExprs:f[3]},...f[4]&&f[4].length&&{using:f[4]}})},{name:"raise_using$macrocall$2",symbols:["raise_using_one"]},{name:"raise_using$macrocall$1$ebnf$1",symbols:[]},{name:"raise_using$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"raise_using$macrocall$2"],postprocess:b},{name:"raise_using$macrocall$1$ebnf$1",symbols:["raise_using$macrocall$1$ebnf$1","raise_using$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"raise_using$macrocall$1",symbols:["raise_using$macrocall$2","raise_using$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"raise_using",symbols:[l.lexerAny.has("kw_using")?{type:"kw_using"}:kw_using,"raise_using$macrocall$1"],postprocess:b},{name:"raise_using_one",symbols:["raise_using_what",l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"expr"],postprocess:f=>(0,c.track)(f,{type:X(f[0]),value:f[2]})},{name:"raise_using_what",symbols:[l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table]},{name:"raise_using_what",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("message","detail","hint","errcode","column","constraint","datatype","schema")},{name:"comment_statement",symbols:["kw_comment",l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"comment_what",l.lexerAny.has("kw_is")?{type:"kw_is"}:kw_is,"string"],postprocess:f=>(0,c.track)(f,{type:"comment",comment:(0,c.unbox)(b(f)),on:o(f[2])})},{name:"comment_what",symbols:["comment_what_col"]},{name:"comment_what",symbols:["comment_what_nm"]},{name:"comment_what_nm$subexpression$1",symbols:[l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table]},{name:"comment_what_nm$subexpression$1",symbols:["kw_materialized","kw_view"]},{name:"comment_what_nm$subexpression$1",symbols:[l.lexerAny.has("word")?{type:"word"}:word],postprocess:k("database","index","trigger","type","view")},{name:"comment_what_nm",symbols:["comment_what_nm$subexpression$1","qualified_name"],postprocess:f=>(0,c.track)(f,{type:X(f[0]),name:f[1]})},{name:"comment_what_col",symbols:["kw_column","qcolumn"],postprocess:f=>(0,c.track)(f,{type:"column",column:b(f)})},{name:"simplestatements_begin$ebnf$1$subexpression$1",symbols:["kw_transaction"]},{name:"simplestatements_begin$ebnf$1$subexpression$1",symbols:["kw_work"]},{name:"simplestatements_begin$ebnf$1",symbols:["simplestatements_begin$ebnf$1$subexpression$1"],postprocess:s},{name:"simplestatements_begin$ebnf$1",symbols:[],postprocess:()=>null},{name:"simplestatements_begin$ebnf$2",symbols:[]},{name:"simplestatements_begin$ebnf$2$subexpression$1",symbols:["simplestatements_begin_isol"]},{name:"simplestatements_begin$ebnf$2$subexpression$1",symbols:["simplestatements_begin_writ"]},{name:"simplestatements_begin$ebnf$2$subexpression$1",symbols:["simplestatements_begin_def"]},{name:"simplestatements_begin$ebnf$2",symbols:["simplestatements_begin$ebnf$2","simplestatements_begin$ebnf$2$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"simplestatements_begin",symbols:["kw_begin","simplestatements_begin$ebnf$1","simplestatements_begin$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"begin",...f[2].reduce((w,x)=>({...o(w),...o(x)}),{})})},{name:"simplestatements_begin_isol$subexpression$1",symbols:["kw_isolation","kw_level"]},{name:"simplestatements_begin_isol$subexpression$2",symbols:["kw_serializable"]},{name:"simplestatements_begin_isol$subexpression$2$subexpression$1",symbols:["word"],postprocess:v("repeatable")},{name:"simplestatements_begin_isol$subexpression$2",symbols:["simplestatements_begin_isol$subexpression$2$subexpression$1","kw_read"]},{name:"simplestatements_begin_isol$subexpression$2$subexpression$2",symbols:["word"],postprocess:v("committed")},{name:"simplestatements_begin_isol$subexpression$2",symbols:["kw_read","simplestatements_begin_isol$subexpression$2$subexpression$2"]},{name:"simplestatements_begin_isol$subexpression$2$subexpression$3",symbols:["word"],postprocess:v("uncommitted")},{name:"simplestatements_begin_isol$subexpression$2",symbols:["kw_read","simplestatements_begin_isol$subexpression$2$subexpression$3"]},{name:"simplestatements_begin_isol",symbols:["simplestatements_begin_isol$subexpression$1","simplestatements_begin_isol$subexpression$2"],postprocess:f=>(0,c.track)(f,{isolationLevel:X(f[1]," ")}
39)},{name:"simplestatements_begin_writ$subexpression$1",symbols:["kw_read","kw_write"]},{name:"simplestatements_begin_writ$subexpression$1",symbols:["kw_read",l.lexerAny.has("kw_only")?{type:"kw_only"}:kw_only]},{name:"simplestatements_begin_writ",symbols:["simplestatements_begin_writ$subexpression$1"],postprocess:f=>(0,c.track)(f,{writeable:X(f," ")})},{name:"simplestatements_begin_def$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"simplestatements_begin_def$ebnf$1",symbols:[],postprocess:()=>null},{name:"simplestatements_begin_def",symbols:["simplestatements_begin_def$ebnf$1",l.lexerAny.has("kw_deferrable")?{type:"kw_deferrable"}:kw_deferrable],postprocess:f=>(0,c.track)(f,{deferrable:!f[0]})},{name:"insert_statement$subexpression$1",symbols:["kw_insert",l.lexerAny.has("kw_into")?{type:"kw_into"}:kw_into]},{name:"insert_statement$ebnf$1",symbols:["collist_paren"],postprocess:s},{name:"insert_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"insert_statement$ebnf$2$subexpression$1$subexpression$1",symbols:["kw_system"]},{name:"insert_statement$ebnf$2$subexpression$1$subexpression$1",symbols:[l.lexerAny.has("kw_user")?{type:"kw_user"}:kw_user]},{name:"insert_statement$ebnf$2$subexpression$1",symbols:["kw_overriding","insert_statement$ebnf$2$subexpression$1$subexpression$1","kw_value"],postprocess:d(1)},{name:"insert_statement$ebnf$2",symbols:["insert_statement$ebnf$2$subexpression$1"],postprocess:s},{name:"insert_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"insert_statement$ebnf$3$subexpression$1",symbols:["selection"]},{name:"insert_statement$ebnf$3$subexpression$1",symbols:["selection_paren"]},{name:"insert_statement$ebnf$3",symbols:["insert_statement$ebnf$3$subexpression$1"],postprocess:s},{name:"insert_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"insert_statement$ebnf$4$subexpression$1",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,"kw_conflict","insert_on_conflict"],postprocess:b},{name:"insert_statement$ebnf$4",symbols:["insert_statement$ebnf$4$subexpression$1"],postprocess:s},{name:"insert_statement$ebnf$4",symbols:[],postprocess:()=>null},{name:"insert_statement$ebnf$5$subexpression$1",symbols:[l.lexerAny.has("kw_returning")?{type:"kw_returning"}:kw_returning,"select_expr_list_aliased"],postprocess:b},{name:"insert_statement$ebnf$5",symbols:["insert_statement$ebnf$5$subexpression$1"],postprocess:s},{name:"insert_statement$ebnf$5",symbols:[],postprocess:()=>null},{name:"insert_statement",symbols:["insert_statement$subexpression$1","table_ref_aliased","insert_statement$ebnf$1","insert_statement$ebnf$2","insert_statement$ebnf$3","insert_statement$ebnf$4","insert_statement$ebnf$5"],postprocess:f=>{const w=f[2]&&f[2].map(r),x=X(f[3]),R=o(f[4]),K=f[5],B=f[6];return(0,c.track)(f,{type:"insert",into:o(f[1]),insert:R,...x&&{overriding:x},...w&&{columns:w},...B&&{returning:B},...K&&{onConflict:K}})}},{name:"insert_values$ebnf$1",symbols:[]},{name:"insert_values$ebnf$1$subexpression$1",symbols:["comma","insert_value"],postprocess:b},{name:"insert_values$ebnf$1",symbols:["insert_values$ebnf$1","insert_values$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"insert_values",symbols:["insert_value","insert_values$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"insert_value",symbols:["lparen","insert_expr_list_raw","rparen"],postprocess:d(1)},{name:"insert_expr_list_raw$ebnf$1",symbols:[]},{name:"insert_expr_list_raw$ebnf$1$subexpression$1",symbols:["comma","expr_or_select"],postprocess:b},{name:"insert_expr_list_raw$ebnf$1",symbols:["insert_expr_list_raw$ebnf$1","insert_expr_list_raw$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"insert_expr_list_raw",symbols:["expr_or_select","insert_expr_list_raw$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"insert_on_conflict$ebnf$1",symbols:["insert_on_conflict_what"],postprocess:s},{name:"insert_on_conflict$ebnf$1",symbols:[],postprocess:()=>null},{name:"insert_on_conflict",symbols:["insert_on_conflict$ebnf$1","insert_on_conflict_do"],postprocess:f=>(0,c.track)(f,{...f[0]?{on:o(f[0])}:{},...f[1]})},{name:"insert_on_conflict_what",symbols:["lparen","expr_list_raw","rparen"],postprocess:f=>(0,c.track)(f,{type:"on expr",exprs:f[1]})},{name:"insert_on_conflict_what",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,l.lexerAny.has("kw_constraint")?{type:"kw_constraint"}:kw_constraint,"qname"],postprocess:f=>(0,c.track)(f,{type:"on constraint",constraint:b(f)})},{name:"insert_on_conflict_do",symbols:[l.lexerAny.has("kw_do")?{type:"kw_do"}:kw_do,"kw_nothing"],postprocess:f=>({do:"do nothing"})},{name:"insert_on_conflict_do$subexpression$1",symbols:[l.lexerAny.has("kw_do")?{type:"kw_do"}:kw_do,"kw_update","kw_set"]},{name:"insert_on_conflict_do$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_where")?{type:"kw_where"}:kw_where,"expr"],postprocess:b},{name:"insert_on_conflict_do$ebnf$1",symbols:["insert_on_conflict_do$ebnf$1$subexpression$1"],postprocess:s},{name:"insert_on_conflict_do$ebnf$1",symbols:[],postprocess:()=>null},{name:"insert_on_conflict_do",symbols:["insert_on_conflict_do$subexpression$1","update_set_list","insert_on_conflict_do$ebnf$1"],postprocess:f=>({do:{sets:f[1]},...f[2]&&{where:f[2]}})},{name:"update_statement$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from,"select_from_subject"],postprocess:b},{name:"update_statement$ebnf$1",symbols:["update_statement$ebnf$1$subexpression$1"],postprocess:s},{name:"update_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"update_statement$ebnf$2",symbols:["select_where"],postprocess:s},{name:"update_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"update_statement$ebnf$3$subexpression$1",symbols:[l.lexerAny.has("kw_returning")?{type:"kw_returning"}:kw_returning,"select_expr_list_aliased"],postprocess:b},{name:"update_statement$ebnf$3",symbols:["update_statement$ebnf$3$subexpression$1"],postprocess:s},{name:"update_statement$ebnf$3",symbols:[],postprocess:()=>null},{name:"update_statement",symbols:["kw_update","table_ref_aliased","kw_set","update_set_list","update_statement$ebnf$1","update_statement$ebnf$2","update_statement$ebnf$3"],postprocess:f=>{const w=o(f[4]),x=o(f[5]),R=f[6];return(0,c.track)(f,{type:"update",table:o(f[1]),sets:f[3],...x?{where:x}:{},...w?{from:w}:{},...R?{returning:R}:{}})}},{name:"update_set_list$ebnf$1",symbols:[]},{name:"update_set_list$ebnf$1$subexpression$1",symbols:["comma","update_set"],postprocess:b},{name:"update_set_list$ebnf$1",symbols:["update_set_list$ebnf$1","update_set_list$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"update_set_list",symbols:["update_set","update_set_list$ebnf$1"],postprocess:([f,w])=>{const x=[];for(const R of[f,...w||[]]){const K=o(R);Array.isArray(K)?x.push(...K):x.push(K)}return x}},{name:"update_set",symbols:["update_set_one"]},{name:"update_set",symbols:["update_set_multiple"]},{name:"update_set_one",symbols:["ident",l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"expr"],postprocess:f=>(0,c.box)(f,{column:r(f[0]),value:o(f[2])})},{name:"update_set_multiple$subexpression$1",symbols:["lparen","expr_list_raw","rparen"],postprocess:d(1)},{name:"update_set_multiple",symbols:["collist_paren",l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"update_set_multiple$subexpression$1"],postprocess:f=>{const w=f[0],x=f[2];if(w.length!==x.length)throw new Error("number of columns does not match number of values");return(0,c.box)(f,w.map((R,K)=>({column:r(R),value:o(x[K])})))}},{name:"altertable_statement$ebnf$1",symbols:["kw_ifexists"],postprocess:s},{name:"altertable_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_statement$ebnf$2",symbols:[l.lexerAny.has("kw_only")?{type:"kw_only"}:kw_only],postprocess:s},{name:"altertable_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"altertable_statement",symbols:["kw_alter",l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table,"altertable_statement$ebnf$1","altertable_statement$ebnf$2","table_ref","altertable_actions"],postprocess:f=>(0,c.track)(f,{type:"alter table",...f[2]?{ifExists:!0}:{},...f[3]?{only:!0}:{},table:o(f[4]),changes:(0,c.unbox)(f[5]).map(o)})},{name:"altertable_actions$ebnf$1",symbols:[]},{name:"altertable_actions$ebnf$1$subexpression$1",symbols:["comma","altertable_action"],postprocess:b},{name:"altertable_actions$ebnf$1",symbols:["altertable_actions$ebnf$1","altertable_actions$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"altertable_actions",symbols:["altertable_action","altertable_actions$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"altertable_action",symbols:["altertable_rename_table"]},{name:"altertable_action",symbols:["altertable_rename_column"]},{name:"altertable_action",symbols:["altertable_rename_constraint"]},{name:"altertable_action",symbols:["altertable_add_column"]},{name:"altertable_action",symbols:["altertable_drop_column"]},{name:"altertable_action",symbols:["altertable_alter_column"]},{name:"altertable_action",symbols:["altertable_add_constraint"]},{name:"altertable_action",symbols:["altertable_drop_constraint"]},{name:"altertable_action",symbols:["altertable_owner"]},{name:"altertable_rename_table",symbols:["kw_rename",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"word"],postprocess:f=>(0,c.track)(f,{type:"rename",to:r(b(f))})},{name:"altertable_rename_column$ebnf$1",symbols:["kw_column"],postprocess:s},{name:"altertable_rename_column$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_rename_column",symbols:["kw_rename","altertable_rename_column$ebnf$1","ident",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"ident"],postprocess:f=>(0,c.track)(f,{type:"rename column",column:r(f[2]),to:r(b(f))})},{name:"altertable_rename_constraint",symbols:["kw_rename",l.lexerAny.has("kw_constraint")?{type:"kw_constraint"}:kw_constraint,"ident",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"ident"],postprocess:f=>(0,c.track)(f,{type:"rename constraint",constraint:r(f[2]),to:r(b(f))})},{name:"altertable_add_column$ebnf$1",symbols:["kw_column"],postprocess:s},{name:"altertable_add_column$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_add_column$ebnf$2",symbols:["kw_ifnotexists"],postprocess:s},{name:"altertable_add_column$ebnf$2",symbols:[],postprocess:()=>null},{name:"altertable_add_column",symbols:["kw_add","altertable_add_column$ebnf$1","altertable_add_column$ebnf$2","createtable_column"],postprocess:f=>(0,c.track)(f,{type:"add column",...f[2]?{ifNotExists:!0}:{},column:o(f[3])})},{name:"altertable_drop_column$ebnf$1",symbols:["kw_column"],postprocess:s},{name:"altertable_drop_column$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_drop_column$ebnf$2",symbols:["kw_ifexists"],postprocess:s},{name:"altertable_drop_column$ebnf$2",symbols:[],postprocess:()=>null},{name:"altertable_drop_column$ebnf$3$subexpression$1",symbols:["kw_restrict"]},{name:"altertable_drop_column$ebnf$3$subexpression$1",symbols:["kw_cascade"]},{name:"altertable_drop_column$ebnf$3",symbols:["altertable_drop_column$ebnf$3$subexpression$1"],postprocess:s},{name:"altertable_drop_column$ebnf$3",symbols:[],postprocess:()=>null},{name:"altertable_drop_column",symbols:["kw_drop","altertable_drop_column$ebnf$1","altertable_drop_column$ebnf$2","ident","altertable_drop_column$ebnf$3"],postprocess:f=>(0,c.track)(f,{type:"drop column",...f[2]?{ifExists:!0}:{},column:r(f[3]),...f[4]?{behaviour:X(f[4]," ")}:{}})},{name:"altertable_alter_column$ebnf$1",symbols:["kw_column"],postprocess:s},{name:"altertable_alter_column$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_alter_column",symbols:["kw_alter","altertable_alter_column$ebnf$1","ident","altercol"],postprocess:f=>(0,c.track)(f,{type:"alter column",column:r(f[2]),alter:o(f[3])})},{name:"altercol$ebnf$1$subexpression$1",symbols:["kw_set","kw_data"]},{name:"altercol$ebnf$1",symbols:["altercol$ebnf$1$subexpression$1"],postprocess:s},{name:"altercol$ebnf$1",symbols:[],postprocess:()=>null},{name:"altercol",symbols:["altercol$ebnf$1","kw_type","data_type"],postprocess:f=>(0,c.track)(f,{type:"set type",dataType:o(b(f))})},{name:"altercol",symbols:["kw_set",l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default,"expr"],postprocess:f=>(0,c.track)(f,{type:"set default",default:o(b(f))})},{name:"altercol",symbols:["kw_drop",l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default],postprocess:f=>(0,c.track)(f,{type:"drop default"})},{name:"altercol$subexpression$1",symbols:["kw_set"]},{name:"altercol$subexpression$1",symbols:["kw_drop"]},{name:"altercol",symbols:["altercol$subexpression$1","kw_not_null"],postprocess:f=>(0,c.track)(f,{type:X(f," ")})},{name:"altercol",symbols:["altercol_generated_add"],postprocess:o},{name:"altertable_add_constraint",symbols:["kw_add","createtable_constraint"],postprocess:f=>(0,c.track)(f,{type:"add constraint",constraint:o(b(f))})},{name:"altertable_drop_constraint$ebnf$1",symbols:["kw_ifexists"],postprocess:s},{name:"altertable_drop_constraint$ebnf$1",symbols:[],postprocess:()=>null},{name:"altertable_drop_constraint$ebnf$2$subexpression$1",symbols:["kw_restrict"]},{name:"altertable_drop_constraint$ebnf$2$subexpression$1",symbols:["kw_cascade"]},{name:"altertable_drop_constraint$ebnf$2",symbols:["altertable_drop_constraint$ebnf$2$subexpression$1"],postprocess:s},{name:"altertable_drop_constraint$ebnf$2",symbols:[],postprocess:()=>null},{name:"altertable_drop_constraint",symbols:["kw_drop",l.lexerAny.has("kw_constraint")?{type:"kw_constraint"}:kw_constraint,"altertable_drop_constraint$ebnf$1","ident","altertable_drop_constraint$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"drop constraint",...f[2]?{ifExists:!0}:{},constraint:r(f[3]),...f[4]?{behaviour:X(f[4]," ")}:{}})},{name:"altertable_owner",symbols:["kw_owner",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"ident"],postprocess:f=>(0,c.track)(f,{type:"owner",to:r(b(f))})},{name:"altercol_generated_add",symbols:["kw_add","altercol_generated"],postprocess:b},{name:"altercol_generated$ebnf$1$subexpression$1",symbols:["kw_always"]},{name:"altercol_generated$ebnf$1$subexpression$1",symbols:["kw_by",l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default]},{name:"altercol_generated$ebnf$1",symbols:["altercol_generated$ebnf$1$subexpression$1"],postprocess:s},{name:"altercol_generated$ebnf$1",symbols:[],postprocess:()=>null},{name:"altercol_generated$subexpression$1",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"kw_identity"]},{name:"altercol_generated$ebnf$2$subexpression$1",symbols:["lparen","altercol_generated_seq","rparen"],postprocess:d(1)},{name:"altercol_generated$ebnf$2",symbols:["altercol_generated$ebnf$2$subexpression$1"],postprocess:s},{name:"altercol_generated$ebnf$2",symbols:[],postprocess:()=>null},{name:"altercol_generated",symbols:["kw_generated","altercol_generated$ebnf$1","altercol_generated$subexpression$1","altercol_generated$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"add generated",...f[1]&&{always:X(f[1]," ")},...f[3]&&{sequence:o(f[3])}})},{name:"altercol_generated_seq$ebnf$1$subexpression$1",symbols:["kw_sequence","kw_name","qualified_name"]},{name:"altercol_generated_seq$ebnf$1",symbols:["altercol_generated_seq$ebnf$1$subexpression$1"],postprocess:s},{name:"altercol_generated_seq$ebnf$1",symbols:[],postprocess:()=>null},{name:"altercol_generated_seq$ebnf$2",symbols:[]},{name:"altercol_generated_seq$ebnf$2",symbols:["altercol_generated_seq$ebnf$2","create_sequence_option"],postprocess:f=>f[0].concat([f[1]])},{name:"altercol_generated_seq",symbols:["altercol_generated_seq$ebnf$1","altercol_generated_seq$ebnf$2"],postprocess:f=>{const w={...f[0]&&{name:o(b(f[0]))}};return N(w,f[1]),(0,c.track)(f,w)}}
39,{name:"alterindex_statement$ebnf$1",symbols:["kw_ifexists"],postprocess:s},{name:"alterindex_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"alterindex_statement",symbols:["kw_alter","kw_index","alterindex_statement$ebnf$1","table_ref","alterindex_action"],postprocess:f=>(0,c.track)(f,{type:"alter index",...f[2]?{ifExists:!0}:{},index:o(f[3]),change:o(f[4])})},{name:"alterindex_action",symbols:["alterindex_rename"]},{name:"alterindex_action",symbols:["alterindex_set_tablespace"]},{name:"alterindex_rename",symbols:["kw_rename",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"word"],postprocess:f=>(0,c.track)(f,{type:"rename",to:r(b(f))})},{name:"alterindex_set_tablespace",symbols:["kw_set","kw_tablespace","word"],postprocess:f=>(0,c.track)(f,{type:"set tablespace",tablespace:r(b(f))})},{name:"delete_statement",symbols:["delete_delete"]},{name:"delete_statement",symbols:["delete_truncate"]},{name:"delete_delete$subexpression$1",symbols:["kw_delete",l.lexerAny.has("kw_from")?{type:"kw_from"}:kw_from]},{name:"delete_delete$ebnf$1",symbols:["select_where"],postprocess:s},{name:"delete_delete$ebnf$1",symbols:[],postprocess:()=>null},{name:"delete_delete$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("kw_returning")?{type:"kw_returning"}:kw_returning,"select_expr_list_aliased"],postprocess:b},{name:"delete_delete$ebnf$2",symbols:["delete_delete$ebnf$2$subexpression$1"],postprocess:s},{name:"delete_delete$ebnf$2",symbols:[],postprocess:()=>null},{name:"delete_delete",symbols:["delete_delete$subexpression$1","table_ref_aliased","delete_delete$ebnf$1","delete_delete$ebnf$2"],postprocess:f=>{const w=f[2],x=f[3];return(0,c.track)(f,{type:"delete",from:o(f[1]),...w?{where:w}:{},...x?{returning:x}:{}})}},{name:"delete_truncate$subexpression$1$ebnf$1",symbols:[l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table],postprocess:s},{name:"delete_truncate$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"delete_truncate$subexpression$1",symbols:["kw_truncate","delete_truncate$subexpression$1$ebnf$1"]},{name:"delete_truncate$macrocall$2",symbols:["table_ref"]},{name:"delete_truncate$macrocall$1$ebnf$1",symbols:[]},{name:"delete_truncate$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"delete_truncate$macrocall$2"],postprocess:b},{name:"delete_truncate$macrocall$1$ebnf$1",symbols:["delete_truncate$macrocall$1$ebnf$1","delete_truncate$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"delete_truncate$macrocall$1",symbols:["delete_truncate$macrocall$2","delete_truncate$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"delete_truncate$ebnf$1$subexpression$1$subexpression$1",symbols:["kw_restart"]},{name:"delete_truncate$ebnf$1$subexpression$1$subexpression$1",symbols:["kw_continue"]},{name:"delete_truncate$ebnf$1$subexpression$1",symbols:["delete_truncate$ebnf$1$subexpression$1$subexpression$1","kw_identity"]},{name:"delete_truncate$ebnf$1",symbols:["delete_truncate$ebnf$1$subexpression$1"],postprocess:s},{name:"delete_truncate$ebnf$1",symbols:[],postprocess:()=>null},{name:"delete_truncate$ebnf$2$subexpression$1",symbols:["kw_restrict"]},{name:"delete_truncate$ebnf$2$subexpression$1",symbols:["kw_cascade"]},{name:"delete_truncate$ebnf$2",symbols:["delete_truncate$ebnf$2$subexpression$1"],postprocess:s},{name:"delete_truncate$ebnf$2",symbols:[],postprocess:()=>null},{name:"delete_truncate",symbols:["delete_truncate$subexpression$1","delete_truncate$macrocall$1","delete_truncate$ebnf$1","delete_truncate$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"truncate table",tables:f[1],...f[2]&&{identity:X(f[2][0])},...f[3]&&{cascade:X(f[3])}})},{name:"create_sequence_statement$ebnf$1$subexpression$1",symbols:["kw_temp"]},{name:"create_sequence_statement$ebnf$1$subexpression$1",symbols:["kw_temporary"]},{name:"create_sequence_statement$ebnf$1",symbols:["create_sequence_statement$ebnf$1$subexpression$1"],postprocess:s},{name:"create_sequence_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_sequence_statement$ebnf$2",symbols:["kw_ifnotexists"],postprocess:s},{name:"create_sequence_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"create_sequence_statement$ebnf$3",symbols:[]},{name:"create_sequence_statement$ebnf$3",symbols:["create_sequence_statement$ebnf$3","create_sequence_option"],postprocess:f=>f[0].concat([f[1]])},{name:"create_sequence_statement",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"create_sequence_statement$ebnf$1","kw_sequence","create_sequence_statement$ebnf$2","qualified_name","create_sequence_statement$ebnf$3"],postprocess:f=>{const w={type:"create sequence",...f[1]&&{temp:!0},...f[3]&&{ifNotExists:!0},name:o(f[4]),options:{}};return N(w.options,f[5]),(0,c.track)(f,w)}},{name:"create_sequence_option",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"data_type"],postprocess:f=>(0,c.box)(f,["as",f[1]])},{name:"create_sequence_option$ebnf$1",symbols:["kw_by"],postprocess:s},{name:"create_sequence_option$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_sequence_option",symbols:["kw_increment","create_sequence_option$ebnf$1","int"],postprocess:f=>(0,c.box)(f,["incrementBy",f[2]])},{name:"create_sequence_option",symbols:["create_sequence_minvalue"],postprocess:f=>(0,c.box)(f,["minValue",f[0]])},{name:"create_sequence_option",symbols:["create_sequence_maxvalue"],postprocess:f=>(0,c.box)(f,["maxValue",f[0]])},{name:"create_sequence_option$ebnf$2",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with],postprocess:s},{name:"create_sequence_option$ebnf$2",symbols:[],postprocess:()=>null},{name:"create_sequence_option",symbols:["kw_start","create_sequence_option$ebnf$2","int"],postprocess:f=>(0,c.box)(f,["startWith",f[2]])},{name:"create_sequence_option",symbols:["kw_cache","int"],postprocess:f=>(0,c.box)(f,["cache",f[1]])},{name:"create_sequence_option$ebnf$3",symbols:["kw_no"],postprocess:s},{name:"create_sequence_option$ebnf$3",symbols:[],postprocess:()=>null},{name:"create_sequence_option",symbols:["create_sequence_option$ebnf$3","kw_cycle"],postprocess:f=>
39(0,c.box)(f,["cycle",X(f," ")])},{name:"create_sequence_option",symbols:["create_sequence_owned_by"],postprocess:f=>(0,c.box)(f,["ownedBy",o(f)])},{name:"create_sequence_minvalue",symbols:["kw_minvalue","int"],postprocess:b},{name:"create_sequence_minvalue",symbols:["kw_no","kw_minvalue"],postprocess:f=>(0,c.box)(f,"no minvalue")},{name:"create_sequence_maxvalue",symbols:["kw_maxvalue","int"],postprocess:b},{name:"create_sequence_maxvalue",symbols:["kw_no","kw_maxvalue"],postprocess:f=>(0,c.box)(f,"no maxvalue")},{name:"create_sequence_owned_by$subexpression$1",symbols:["kw_none"]},{name:"create_sequence_owned_by$subexpression$1",symbols:["qcolumn"]},{name:"create_sequence_owned_by",symbols:["kw_owned","kw_by","create_sequence_owned_by$subexpression$1"],postprocess:f=>(0,c.box)(f,o(b(f)))},{name:"alter_sequence_statement$ebnf$1",symbols:["kw_ifexists"],postprocess:s},{name:"alter_sequence_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"alter_sequence_statement",symbols:["kw_alter","kw_sequence","alter_sequence_statement$ebnf$1","qualified_name","alter_sequence_statement_body"],postprocess:f=>{const w={type:"alter sequence",...f[2]&&{ifExists:!0},name:o(f[3]),change:f[4]};return(0,c.track)(f,w)}},{name:"alter_sequence_statement_body$ebnf$1",symbols:["alter_sequence_option"]},{name:"alter_sequence_statement_body$ebnf$1",symbols:["alter_sequence_statement_body$ebnf$1","alter_sequence_option"],postprocess:f=>f[0].concat([f[1]])},{name:"alter_sequence_statement_body",symbols:["alter_sequence_statement_body$ebnf$1"],postprocess:f=>{const w={type:"set options"};return N(w,f[0]),(0,c.track)(f,w)}},{name:"alter_sequence_statement_body$subexpression$1",symbols:["ident"]},{name:"alter_sequence_statement_body$subexpression$1",symbols:[l.lexerAny.has("kw_session_user")?{type:"kw_session_user"}:kw_session_user]},{name:"alter_sequence_statement_body$subexpression$1",symbols:[l.lexerAny.has("kw_current_user")?{type:"kw_current_user"}:kw_current_user]},{name:"alter_sequence_statement_body",symbols:["kw_owner",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"alter_sequence_statement_body$subexpression$1"],postprocess:f=>(0,c.track)(f,{type:"owner to",owner:r(b(f))})},{name:"alter_sequence_statement_body",symbols:["kw_rename",l.lexerAny.has("kw_to")?{type:"kw_to"}:kw_to,"ident"],postprocess:f=>(0,c.track)(f,{type:"rename",newName:r(b(f))})},{name:"alter_sequence_statement_body",symbols:["kw_set","kw_schema","ident"],postprocess:f=>(0,c.track)(f,{type:"set schema",newSchema:r(b(f))})},{name:"alter_sequence_option",symbols:["create_sequence_option"],postprocess:o},{name:"alter_sequence_option$ebnf$1$subexpression$1$ebnf$1",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with],postprocess:s},{name:"alter_sequence_option$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"alter_sequence_option$ebnf$1$subexpression$1",symbols:["alter_sequence_option$ebnf$1$subexpression$1$ebnf$1","int"],postprocess:b},{name:"alter_sequence_option$ebnf$1",symbols:["alter_sequence_option$ebnf$1$subexpression$1"],postprocess:s},{name:"alter_sequence_option$ebnf$1",symbols:[],postprocess:()=>null},{name:"alter_sequence_option",symbols:["kw_restart","alter_sequence_option$ebnf$1"],postprocess:f=>(0,c.box)(f,["restart",typeof(0,c.unbox)(f[1])=="number"?(0,c.unbox)(f[1]):!0])},{name:"drop_statement$ebnf$1",symbols:["kw_ifexists"],postprocess:s},{name:"drop_statement$ebnf$1",symbols:[],postprocess:()=>null},{name:"drop_statement$macrocall$2",symbols:["qualified_name"]},{name:"drop_statement$macrocall$1$ebnf$1",symbols:[]},{name:"drop_statement$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"drop_statement$macrocall$2"],postprocess:b},{name:"drop_statement$macrocall$1$ebnf$1",symbols:["drop_statement$macrocall$1$ebnf$1","drop_statement$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"drop_statement$macrocall$1",symbols:["drop_statement$macrocall$2","drop_statement$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"drop_statement$ebnf$2$subexpression$1",symbols:["kw_cascade"]},{name:"drop_statement$ebnf$2$subexpression$1",symbols:["kw_restrict"]},{name:"drop_statement$ebnf$2",symbols:["drop_statement$ebnf$2$subexpression$1"],postprocess:s},{name:"drop_statement$ebnf$2",symbols:[],postprocess:()=>null},{name:"drop_statement",symbols:["kw_drop","drop_what","drop_statement$ebnf$1","drop_statement$macrocall$1","drop_statement$ebnf$2"],postprocess:(f,w)=>{const x=o(f[1]);return(0,c.track)(f,{...x,...f[2]&&{ifExists:!0},names:f[3],...f[4]&&{cascade:X(f[4])}})}},{name:"drop_what",symbols:[l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table],postprocess:f=>(0,c.track)(f,{type:"drop table"})},{name:"drop_what",symbols:["kw_sequence"],postprocess:f=>(0,c.track)(f,{type:"drop sequence"})},{name:"drop_what",symbols:["kw_type"],postprocess:f=>(0,c.track)(f,{type:"drop type"})},{name:"drop_what",symbols:["kw_trigger"],postprocess:f=>(0,c.track)(f,{type:"drop trigger"})},{name:"drop_what$ebnf$1",symbols:[l.lexerAny.has("kw_concurrently")?{type:"kw_concurrently"}:kw_concurrently],postprocess:s},{name:"drop_what$ebnf$1",symbols:[],postprocess:()=>null},{name:"drop_what",symbols:["kw_index","drop_what$ebnf$1"],postprocess:f=>(0,c.track)(f,{type:"drop index",...f[1]&&{concurrently:!0}})},{name:"with_statement",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"with_statement_bindings","with_statement_statement"],postprocess:f=>(0,c.track)(f,{type:"with",bind:f[1],in:o(f[2])})},{name:"with_recursive_statement$subexpression$1",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"kw_recursive"]},{name:"with_recursive_statement",symbols:["with_recursive_statement$subexpression$1","ident","collist_paren",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"lparen","union_statement","rparen","with_statement_statement"],postprocess:f=>
39(0,c.track)(f,{type:"with recursive",alias:r(f[1]),columnNames:f[2].map(r),bind:f[5],in:o(f[7])})},{name:"with_statement_bindings$ebnf$1",symbols:[]},{name:"with_statement_bindings$ebnf$1$subexpression$1",symbols:["comma","with_statement_binding"],postprocess:b},{name:"with_statement_bindings$ebnf$1",symbols:["with_statement_bindings$ebnf$1","with_statement_bindings$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"with_statement_bindings",symbols:["with_statement_binding","with_statement_bindings$ebnf$1"],postprocess:([f,w])=>[f,...w||[]]},{name:"with_statement_binding",symbols:["word",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"lparen","with_statement_statement","rparen"],postprocess:f=>(0,c.track)(f,{alias:r(f[0]),statement:o(f[3])})},{name:"with_statement_statement",symbols:["selection"]},{name:"with_statement_statement",symbols:["insert_statement"]},{name:"with_statement_statement",symbols:["update_statement"]},{name:"with_statement_statement",symbols:["delete_statement"]},{name:"createtype_statement$subexpression$1",symbols:["createtype_enum"]},{name:"createtype_statement$subexpression$1",symbols:["createtype_composite"]},{name:"createtype_statement",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"kw_type","qualified_name","createtype_statement$subexpression$1"],postprocess:f=>(0,c.track)(f,{name:f[2],...o(f[3])})},{name:"createtype_enum$macrocall$2",symbols:["enum_value"]},{name:"createtype_enum$macrocall$1$ebnf$1",symbols:[]},{name:"createtype_enum$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"createtype_enum$macrocall$2"],postprocess:b},{name:"createtype_enum$macrocall$1$ebnf$1",symbols:["createtype_enum$macrocall$1$ebnf$1","createtype_enum$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createtype_enum$macrocall$1",symbols:["createtype_enum$macrocall$2","createtype_enum$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"createtype_enum",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"kw_enum","lparen","createtype_enum$macrocall$1","rparen"],postprocess:f=>(0,c.track)(f,{type:"create enum",values:f[3]})},{name:"enum_value",symbols:["string"],postprocess:f=>(0,c.track)(f,{value:X(f)})},{name:"createtype_composite$macrocall$2",symbols:["createtype_composite_attr"]},{name:"createtype_composite$macrocall$1$ebnf$1",symbols:[]},{name:"createtype_composite$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"createtype_composite$macrocall$2"],postprocess:b},{name:"createtype_composite$macrocall$1$ebnf$1",symbols:["createtype_composite$macrocall$1$ebnf$1","createtype_composite$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"createtype_composite$macrocall$1",symbols:["createtype_composite$macrocall$2","createtype_composite$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"createtype_composite",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"lparen","createtype_composite$macrocall$1","rparen"],postprocess:f=>(0,c.track)(f,{type:"create composite type",attributes:f[2]})},{name:"createtype_composite_attr$ebnf$1",symbols:["createtable_collate"],postprocess:s},{name:"createtype_composite_attr$ebnf$1",symbols:[],postprocess:()=>null},{name:"createtype_composite_attr",symbols:["word","data_type","createtype_composite_attr$ebnf$1"],postprocess:f=>(0,c.track)(f,{name:r(f[0]),dataType:f[1],...f[2]?{collate:f[2][1]}:{}})},{name:"union_left",symbols:["select_statement"]},{name:"union_left",symbols:["select_values"]},{name:"union_left",symbols:["selection_paren"]},{name:"union_right",symbols:["selection"]},{name:"union_right",symbols:["selection_paren"]},{name:"union_statement$subexpression$1$ebnf$1",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all],postprocess:s},{name:"union_statement$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"union_statement$subexpression$1",symbols:[l.lexerAny.has("kw_union")?{type:"kw_union"}:kw_union,"union_statement$subexpression$1$ebnf$1"]},{name:"union_statement",symbols:["union_left","union_statement$subexpression$1","union_right"],postprocess:f=>(0,c.track)(f,{type:X(f[1]," "),left:o(f[0]),right:o(f[2])})},{name:"prepare$ebnf$1$subexpression$1",symbols:["lparen","data_type_list","rparen"],postprocess:d(1)},{name:"prepare$ebnf$1",symbols:["prepare$ebnf$1$subexpression$1"],postprocess:s},{name:"prepare$ebnf$1",symbols:[],postprocess:()=>null},{name:"prepare",symbols:["kw_prepare","ident","prepare$ebnf$1",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"statement_noprep"],postprocess:f=>(0,c.track)(f,{type:"prepare",name:r(f[1]),...f[2]&&{args:f[2]},statement:o(b(f))})},{name:"deallocate$ebnf$1",symbols:["kw_prepare"],postprocess:s},{name:"deallocate$ebnf$1",symbols:[],postprocess:()=>null},{name:"deallocate",symbols:["kw_deallocate","deallocate$ebnf$1","deallocate_target"],postprocess:f=>(0,c.track)(f,{type:"deallocate",target:f[2]})},{name:"deallocate_target",symbols:["deallocate_all"],postprocess:o},{name:"deallocate_target",symbols:["deallocate_name"],postprocess:o},{name:"deallocate_name",symbols:["ident"],postprocess:f=>(0,c.track)(f,r(f[0]))},{name:"deallocate_all",symbols:[l.lexerAny.has("kw_all")?{type:"kw_all"}:kw_all],postprocess:f=>(0,c.track)(f,{option:"all"})},{name:"create_view_statements",symbols:["create_view"]},{name:"create_view_statements",symbols:["create_materialized_view"]},{name:"create_view$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_or")?{type:"kw_or"}:kw_or,"kw_replace"]},{name:"create_view$ebnf$1",symbols:["create_view$ebnf$1$subexpression$1"],postprocess:s},{name:"create_view$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_view$ebnf$2$subexpression$1",symbols:["kw_temp"]},{name:"create_view$ebnf$2$subexpression$1",symbols:["kw_temporary"]},{name:"create_view$ebnf$2",symbols:["create_view$ebnf$2$subexpression$1"],postprocess:s},{name:"create_view$ebnf$2",symbols:[],postprocess:()=>null},{name:"create_view$ebnf$3",symbols:["kw_recursive"],postprocess:s},{name:"create_view$ebnf$3",symbols:[],postprocess:()=>null},{name:"create_view$ebnf$4$subexpression$1$macrocall$2",symbols:["ident"]},{name:"create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1",symbols:[]},{name:"create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"create_view$ebnf$4$subexpression$1$macrocall$2"],postprocess:b},{name:"create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1",symbols:["create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1","create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"create_view$ebnf$4$subexpression$1$macrocall$1",symbols:["create_view$ebnf$4$subexpression$1$macrocall$2","create_view$ebnf$4$subexpression$1$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"create_view$ebnf$4$subexpression$1",symbols:["lparen","create_view$ebnf$4$subexpression$1$macrocall$1","rparen"],postprocess:d(1)},{name:"create_view$ebnf$4",symbols:["create_view$ebnf$4$subexpression$1"],postprocess:s},{name:"create_view$ebnf$4",symbols:[],postprocess:()=>null},{name:"create_view$ebnf$5",symbols:["create_view_opts"],postprocess:s},{name:"create_view$ebnf$5",symbols:[],postprocess:()=>null},{name:"create_view$ebnf$6$subexpression$1$subexpression$1",symbols:["kw_local"]},{name:"create_view$ebnf$6$subexpression$1$subexpression$1",symbols:["kw_cascaded"]},{name:"create_view$ebnf$6$subexpression$1",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"create_view$ebnf$6$subexpression$1$subexpression$1",l.lexerAny.has("kw_check")?{type:"kw_check"}:kw_check,"kw_option"],postprocess:d(1)},{name:"create_view$ebnf$6",symbols:["create_view$ebnf$6$subexpression$1"],postprocess:s},{name:"create_view$ebnf$6",symbols:[],postprocess:()=>null},{name:"create_view",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"create_view$ebnf$1","create_view$ebnf$2","create_view$ebnf$3","kw_view","qualified_name","create_view$ebnf$4","create_view$ebnf$5",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"selection","create_view$ebnf$6"],postprocess:f=>(0,c.track)(f,{type:"create view",...f[1]&&{orReplace:!0},...f[2]&&{temp:!0},...f[3]&&{recursive:!0},name:f[5],...f[6]&&{columnNames:f[6].map(r)},...f[7]&&{parameters:J(f[7])},query:f[9],...f[10]&&{checkOption:X(f[10])}})},{name:"create_view_opt",symbols:["ident",l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"ident"],postprocess:([f,w,x])=>[X(f),X(x)]},{name:"create_view_opts$macrocall$2",symbols:["create_view_opt"]},{name:"create_view_opts$macrocall$1$ebnf$1",symbols:[]},{name:"create_view_opts$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"create_view_opts$macrocall$2"],postprocess:b},{name:"create_view_opts$macrocall$1$ebnf$1",symbols:["create_view_opts$macrocall$1$ebnf$1","create_view_opts$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"create_view_opts$macrocall$1",symbols:["create_view_opts$macrocall$2","create_view_opts$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"create_view_opts",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"create_view_opts$macrocall$1"],postprocess:b},{name:"create_materialized_view$ebnf$1",symbols:["kw_ifnotexists"],postprocess:s},{name:"create_materialized_view$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_materialized_view$ebnf$2$subexpression$1$macrocall$2",symbols:["ident"]},{name:"create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1",symbols:[]},{name:"create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"create_materialized_view$ebnf$2$subexpression$1$macrocall$2"],postprocess:b},{name:"create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1",symbols:["create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1","create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"create_materialized_view$ebnf$2$subexpression$1$macrocall$1",symbols:["create_materialized_view$ebnf$2$subexpression$1$macrocall$2","create_materialized_view$ebnf$2$subexpression$1$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"create_materialized_view$ebnf$2$subexpression$1",symbols:["lparen","create_materialized_view$ebnf$2$subexpression$1$macrocall$1","rparen"],postprocess:d(1)},{name:"create_materialized_view$ebnf$2",symbols:["create_materialized_view$ebnf$2$subexpression$1"],postprocess:s},{name:"create_materialized_view$ebnf$2",symbols:[],postprocess:()=>null},{name:"create_materialized_view$ebnf$3",symbols:["create_view_opts"],postprocess:s},{name:"create_materialized_view$ebnf$3",symbols:[],postprocess:()=>null},{name:"create_materialized_view$ebnf$4$subexpression$1",symbols:["kw_tablespace","ident"],postprocess:b},{name:"create_materialized_view$ebnf$4",symbols:["create_materialized_view$ebnf$4$subexpression$1"],postprocess:s},{name:"create_materialized_view$ebnf$4",symbols:[],postprocess:()=>null},{name:"create_materialized_view$ebnf$5$subexpression$1$ebnf$1",symbols:["kw_no"],postprocess:s},{name:"create_materialized_view$ebnf$5$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_materialized_view$ebnf$5$subexpression$1",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"create_materialized_view$ebnf$5$subexpression$1$ebnf$1","kw_data"]},{name:"create_materialized_view$ebnf$5",symbols:["create_materialized_view$ebnf$5$subexpression$1"],postprocess:s},{name:"create_materialized_view$ebnf$5",symbols:[],postprocess:()=>null},{name:"create_materialized_view",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"kw_materialized","kw_view","create_materialized_view$ebnf$1","qualified_name","create_materialized_view$ebnf$2","create_materialized_view$ebnf$3","create_materialized_view$ebnf$4",l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"selection","create_materialized_view$ebnf$5"],postprocess:f=>(0,c.track)(f,{type:"create materialized view",...f[3]&&{ifNotExists:!0},name:f[4],...f[5]&&{columnNames:f[6].map(r)},...f[6]&&{parameters:J(f[6])},...f[7]&&{tablespace:r(f[7])},query:f[9],...f[10]&&{withData:X(f[10][1])!=="no"}})},{name:"refresh_view_statements$ebnf$1",symbols:[l.lexerAny.has("kw_concurrently")?{type:"kw_concurrently"}:kw_concurrently],postprocess:s},{name:"refresh_view_statements$ebnf$1",symbols:[],postprocess:()=>null},{name:"refresh_view_statements$ebnf$2$subexpression$1$ebnf$1",symbols:["kw_no"],postprocess:s},{name:"refresh_view_statements$ebnf$2$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"refresh_view_statements$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("kw_with")?{type:"kw_with"}:kw_with,"refresh_view_statements$ebnf$2$subexpression$1$ebnf$1","kw_data"]},{name:"refresh_view_statements$ebnf$2",symbols:["refresh_view_statements$ebnf$2$subexpression$1"],postprocess:s},{name:"refresh_view_statements$ebnf$2",symbols:[],postprocess:()=>null},{name:"refresh_view_statements",symbols:["kw_refresh","kw_materialized","kw_view","refresh_view_statements$ebnf$1","qname","refresh_view_statements$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"refresh materialized view",...f[3]?{concurrently:!0}:{},name:f[4],...f[5]?{withData:X(f[5][1])!=="no"}:{}})},{name:"functions_statements",symbols:["create_func"]},{name:"functions_statements",symbols:["do_stm"]},{name:"functions_statements",symbols:["drop_func"]},{name:"create_func$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("kw_or")?{type:"kw_or"}:kw_or,"kw_replace"]},{name:"create_func$ebnf$1",symbols:["create_func$ebnf$1$subexpression$1"],postprocess:s},{name:"create_func$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_func$subexpression$1$ebnf$1$macrocall$2",symbols:["func_argdef"]},{name:"create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1",symbols:[]},{name:"create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"create_func$subexpression$1$ebnf$1$macrocall$2"],postprocess:b},{name:"create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1",symbols:["create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1","create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"create_func$subexpression$1$ebnf$1$macrocall$1",symbols:["create_func$subexpression$1$ebnf$1$macrocall$2","create_func$subexpression$1$ebnf$1$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"create_func$subexpression$1$ebnf$1",symbols:["create_func$subexpression$1$ebnf$1$macrocall$1"],postprocess:s},{name:"create_func$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"create_func$subexpression$1",symbols:["lparen","create_func$subexpression$1$ebnf$1","rparen"],postprocess:d(1)},{name:"create_func$ebnf$2",symbols:["func_spec"]},{name:"create_func$ebnf$2",symbols:["create_func$ebnf$2","func_spec"],postprocess:f=>f[0].concat([f[1]])},{name:"create_func",symbols:[l.lexerAny.has("kw_create")?{type:"kw_create"}:kw_create,"create_func$ebnf$1","kw_function","qname","create_func$subexpression$1","create_func$ebnf$2"],postprocess:(f,w)=>{var x;const R={};for(const K of f[5]){for(const B in K)if(B[0]!=="_"&&B in R)throw new Error("conflicting or redundant options "+B);Object.assign(R,K)}return(0,c.track)(f,{type:"create function",...f[1]&&{orReplace:!0},name:f[3],arguments:(x=f[4])!==null&&x!==void 0?x:[],...R})}},{name:"func_argdef$ebnf$1",symbols:["func_argopts"],postprocess:s},{name:"func_argdef$ebnf$1",symbols:[],postprocess:()=>null},{name:"func_argdef$ebnf$2",symbols:["func_argdefault"],postprocess:s},{name:"func_argdef$ebnf$2",symbols:[],postprocess:()=>null},{name:"func_argdef",symbols:["func_argdef$ebnf$1","data_type","func_argdef$ebnf$2"],postprocess:f=>(0,c.track)(f,{default:f[2],type:f[1],...f[0]})},{name:"func_argdefault",symbols:[l.lexerAny.has("kw_default")?{type:"kw_default"}:kw_default,"expr"],postprocess:f=>f[1]},{name:"func_argdefault",symbols:[l.lexerAny.has("op_eq")?{type:"op_eq"}:op_eq,"expr"],postprocess:f=>f[1]},{name:"func_argopts$ebnf$1",symbols:["word"],postprocess:s},{name:"func_argopts$ebnf$1",symbols:[],postp
39rocess:()=>null},{name:"func_argopts",symbols:["func_argmod","func_argopts$ebnf$1"],postprocess:f=>(0,c.track)(f,{mode:X(f[0]),...f[1]&&{name:r(f[1])}})},{name:"func_argopts",symbols:["word"],postprocess:(f,w)=>{const x=r(f);return x==="out"||x==="inout"||x==="variadic"?w:(0,c.track)(f,{name:x})}},{name:"func_argmod",symbols:[l.lexerAny.has("kw_in")?{type:"kw_in"}:kw_in]},{name:"func_argmod",symbols:["kw_out"]},{name:"func_argmod",symbols:["kw_inout"]},{name:"func_argmod",symbols:["kw_variadic"]},{name:"func_spec",symbols:["kw_language","word"],postprocess:f=>(0,c.track)(f,{language:r(b(f))})},{name:"func_spec",symbols:["func_purity"],postprocess:f=>(0,c.track)(f,{purity:X(f)})},{name:"func_spec$subexpression$1",symbols:[l.lexerAny.has("codeblock")?{type:"codeblock"}:codeblock]},{name:"func_spec$subexpression$1",symbols:["string"]},{name:"func_spec",symbols:[l.lexerAny.has("kw_as")?{type:"kw_as"}:kw_as,"func_spec$subexpression$1"],postprocess:f=>({code:X(b(f))})},{name:"func_spec$ebnf$1",symbols:[l.lexerAny.has("kw_not")?{type:"kw_not"}:kw_not],postprocess:s},{name:"func_spec$ebnf$1",symbols:[],postprocess:()=>null},{name:"func_spec$subexpression$2",symbols:["word"],postprocess:v("leakproof")},{name:"func_spec",symbols:["func_spec$ebnf$1","func_spec$subexpression$2"],postprocess:f=>(0,c.track)(f,{leakproof:!f[0]})},{name:"func_spec",symbols:["func_returns"],postprocess:f=>(0,c.track)(f,{returns:o(f)})},{name:"func_spec$subexpression$3",symbols:["word"],postprocess:v("called")},{name:"func_spec",symbols:["func_spec$subexpression$3","oninp"],postprocess:()=>({onNullInput:"call"})},{name:"func_spec$subexpression$4",symbols:["word"],postprocess:v("returns")},{name:"func_spec",symbols:["func_spec$subexpression$4",l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null,"oninp"],postprocess:()=>({onNullInput:"null"})},{name:"func_spec$subexpression$5",symbols:["word"],postprocess:v("strict")},{name:"func_spec",symbols:["func_spec$subexpression$5"],postprocess:()=>({onNullInput:"strict"})},{name:"func_purity",symbols:["word"],postprocess:v("immutable")},{name:"func_purity",symbols:["word"],postprocess:v("stable")},{name:"func_purity",symbols:["word"],postprocess:v("volatile")},{name:"oninp$subexpression$1",symbols:["word"],postprocess:v("input")},{name:"oninp",symbols:[l.lexerAny.has("kw_on")?{type:"kw_on"}:kw_on,l.lexerAny.has("kw_null")?{type:"kw_null"}:kw_null,"oninp$subexpression$1"]},{name:"func_returns",symbols:["kw_returns","data_type"],postprocess:b},{name:"func_returns$macrocall$2",symbols:["func_ret_table_col"]},{name:"func_returns$macrocall$1$ebnf$1",symbols:[]},{name:"func_returns$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"func_returns$macrocall$2"],postprocess:b},{name:"func_returns$macrocall$1$ebnf$1",symbols:["func_returns$macrocall$1$ebnf$1","func_returns$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"func_returns$macrocall$1",symbols:["func_returns$macrocall$2","func_returns$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"func_returns",symbols:["kw_returns",l.lexerAny.has("kw_table")?{type:"kw_table"}:kw_table,"lparen","func_returns$macrocall$1","rparen"],postprocess:f=>(0,c.track)(f,{kind:"table",columns:f[3]})},{name:"func_ret_table_col",symbols:["word","data_type"],postprocess:f=>(0,c.track)(f,{name:r(f[0]),type:f[1]})},{name:"do_stm$ebnf$1$subexpression$1",symbols:["kw_language","word"],postprocess:b},{name:"do_stm$ebnf$1",symbols:["do_stm$ebnf$1$subexpression$1"],postprocess:s},{name:"do_stm$ebnf$1",symbols:[],postprocess:()=>null},{name:"do_stm",symbols:[l.lexerAny.has("kw_do")?{type:"kw_do"}:kw_do,"do_stm$ebnf$1",l.lexerAny.has("codeblock")?{type:"codeblock"}:codeblock],postprocess:f=>(0,c.track)(f,{type:"do",...f[1]&&{language:r(f[1])},code:f[2].value})},{name:"drop_func$ebnf$1$subexpression$1",symbols:["kw_if","kw_exists"]},{name:"drop_func$ebnf$1",symbols:["drop_func$ebnf$1$subexpression$1"],postprocess:s},{name:"drop_func$ebnf$1",symbols:[],postprocess:()=>null},{name:"drop_func$ebnf$2",symbols:["drop_func_overload"],postprocess:s},{name:"drop_func$ebnf$2",symbols:[],postprocess:()=>null},{name:"drop_func",symbols:["kw_drop","kw_function","drop_func$ebnf$1","qname","drop_func$ebnf$2"],postprocess:f=>(0,c.track)(f,{type:"drop function",...f[2]&&{ifExists:!0},name:f[3],...f[4]&&{arguments:f[4]}})},{name:"drop_func_overload$macrocall$2",symbols:["drop_func_overload_col"]},{name:"drop_func_overload$macrocall$1$ebnf$1",symbols:[]},{name:"drop_func_overload$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"drop_func_overload$macrocall$2"],postprocess:b},{name:"drop_func_overload$macrocall$1$ebnf$1",symbols:["drop_func_overload$macrocall$1$ebnf$1","drop_func_overload$macrocall$1$ebnf$1$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"drop_func_overload$macrocall$1",symbols:["drop_func_overload$macrocall$2","drop_func_overload$macrocall$1$ebnf$1"],postprocess:([f,w])=>[o(f),...w.map(o)||[]]},{name:"drop_func_overload",symbols:["lparen","drop_func_overload$macrocall$1","rparen"],postprocess:d(1)},{name:"drop_func_overload_col$ebnf$1",symbols:["word"],postprocess:s},{name:"drop_func_overload_col$ebnf$1",symbols:[],postprocess:()=>null},{name:"drop_func_overload_col",symbols:["drop_func_overload_col$ebnf$1","qname"],postprocess:f=>(0,c.track)(f,{type:f[1],...f[0]&&{name:r(f[0])}})},{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","statement_separator"],postprocess:f=>f[0].concat([f[1]])},{name:"main$ebnf$2",symbols:[]},{name:"main$ebnf$2$subexpression$1$ebnf$1",symbols:["statement_separator"]},{name:"main$ebnf$2$subexpression$1$ebnf$1",symbols:["main$ebnf$2$subexpression$1$ebnf$1","statement_separator"],postprocess:f=>f[0].concat([f[1]])},{name:"main$ebnf$2$subexpression$1",symbols:["main$ebnf$2$subexpression$1$ebnf$1","statement"]},{name:"main$ebnf$2",symbols:["main$ebnf$2","main$ebnf$2$subexpression$1"],postprocess:f=>f[0].concat([f[1]])},{name:"main$ebnf$3",symbols:[]},{name:"main$ebnf$3",symbols:["main$ebnf$3","statement_separator"],postprocess:f=>f[0].concat([f[1]])},{name:"main",symbols:["main$ebnf$1","statement","main$ebnf$2","main$ebnf$3"],postprocess:([f,w,x])=>{const R=x,K=[o(w),...R.map(B=>o(B[1]))];return K.length===1?K[0]:K}},{name:"statement_separator",symbols:[l.lexerAny.has("semicolon")?{type:"semicolon"}:semicolon]},{name:"statement",symbols:["statement_noprep"]},{name:"statement",symbols:["prepare"]},{name:"statement",symbols:["deallocate"]},{name:"statement_noprep",symbols:["selection"]},{name:"statement_noprep",symbols:["createtable_statement"]},{name:"statement_noprep",symbols:["createextension_statement"]},{name:"statement_noprep",symbols:["createindex_statement"]},{name:"statement_noprep",symbols:["simplestatements_all"]},{name:"statement_noprep",symbols:["insert_statement"]},{name:"statement_noprep",symbols:["update_statement"]},{name:"statement_noprep",symbols:["altertable_statement"]}
39,{name:"statement_noprep",symbols:["alterindex_statement"]},{name:"statement_noprep",symbols:["delete_statement"]},{name:"statement_noprep",symbols:["create_sequence_statement"]},{name:"statement_noprep",symbols:["alter_sequence_statement"]},{name:"statement_noprep",symbols:["drop_statement"]},{name:"statement_noprep",symbols:["createtype_statement"]},{name:"statement_noprep",symbols:["create_view_statements"]},{name:"statement_noprep",symbols:["refresh_view_statements"]},{name:"statement_noprep",symbols:["create_schema"]},{name:"statement_noprep",symbols:["raise_statement"]},{name:"statement_noprep",symbols:["comment_statement"]},{name:"statement_noprep",symbols:["functions_statements"]},{name:"selection",symbols:["select_statement"],postprocess:o},{name:"selection",symbols:["select_values"],postprocess:o},{name:"selection",symbols:["with_statement"],postprocess:o},{name:"selection",symbols:["with_recursive_statement"],postprocess:o},{name:"selection",symbols:["union_statement"],postprocess:o},{name:"selection_paren",symbols:["lparen","selection","rparen"],postprocess:d(1)}],ParserStart:"main"};i.default=C},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0});function s(a){return a[0]}const l=n(12),c=a=>a&&a[a.length-1],r={Lexer:l.lexerAny,ParserRules:[{name:"main$ebnf$1",symbols:["elements"],postprocess:s},{name:"main$ebnf$1",symbols:[],postprocess:()=>null},{name:"main",symbols:[l.lexerAny.has("start_list")?{type:"start_list"}:start_list,"main$ebnf$1",l.lexerAny.has("end_list")?{type:"end_list"}:end_list],postprocess:a=>a[1]||[]},{name:"elements$ebnf$1",symbols:[]},{name:"elements$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"elt"],postprocess:c},{name:"elements$ebnf$1",symbols:["elements$ebnf$1","elements$ebnf$1$subexpression$1"],postprocess:a=>a[0].concat([a[1]])},{name:"elements",symbols:["elt","elements$ebnf$1"],postprocess:([a,u])=>[a,...u||[]]},{name:"elt",symbols:[l.lexerAny.has("value")?{type:"value"}:value],postprocess:a=>a[0].value},{name:"elt",symbols:["main"],postprocess:a=>a[0]}],ParserStart:"main"};i.default=r},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.lexerAny=i.lexer=void 0;const s=n(0);i.lexer=(0,s.compile)({valueString:{match:/"(?:\\["\\]|[^\n"\\])*"/,value:l=>JSON.parse(l),type:l=>"value"},valueRaw:{match:/[^\s,\{\}"](?:[^,\{\}"]*[^\s,\{\}"])?/,type:()=>"value"},comma:",",space:{match:/[\s\t\n\v\f\r]+/,lineBreaks:!0},start_list:"{",end_list:"}"}),i.lexer.next=(l=>()=>{let c;for(;(c=l.call(i.lexer))&&c.type==="space";);return c})(i.lexer.next),i.lexerAny=i.lexer},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0});function s(o){return o[0]}const l=n(14),c=o=>d=>d[o],r=o=>o&&o[o.length-1];function a(o){return Array.isArray(o)&&o.length===1&&(o=a(o[0])),Array.isArray(o)&&!o.length?null:o}const u={Lexer:l.lexerAny,ParserRules:[{name:"number$subexpression$1",symbols:["float"]},{name:"number$subexpression$1",symbols:["int"]},{name:"number",symbols:["number$subexpression$1"],postprocess:a},{name:"float",symbols:[l.lexerAny.has("float")?{type:"float"}:float],postprocess:o=>parseFloat(a(o))},{name:"int",symbols:[l.lexerAny.has("int")?{type:"int"}:int],postprocess:o=>parseInt(a(o),10)},{name:"comma",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma],postprocess:s},{name:"point$macrocall$2",symbols:["point_content"]},{name:"point$macrocall$1$subexpression$1",symbols:["point$macrocall$2"]},{name:"point$macrocall$1$subexpression$1",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen,"point$macrocall$2",l.lexerAny.has("rparen")?{type:"rparen"}:rparen],postprocess:c(1)},{name:"point$macrocall$1",symbols:["point$macrocall$1$subexpression$1"],postprocess:a},{name:"point",symbols:["point$macrocall$1"],postprocess:a},{name:"point_content",symbols:["number","comma","number"],postprocess:o=>({x:o[0],y:o[2]})},{name:"line",symbols:[l.lexerAny.has("lcurl")?{type:"lcurl"}:lcurl,"number","comma","number","comma","number",l.lexerAny.has("rcurl")?{type:"rcurl"}:rcurl],postprocess:o=>({a:o[1],b:o[3],c:o[5]})},{name:"box",symbols:["closed_path"],postprocess:([o],d)=>o.length!==2?d:o},{name:"lseg",symbols:["path"],postprocess:([o],d)=>o.path.length!==2?d:o.path},{name:"path",symbols:["open_path"],postprocess:([o])=>({closed:!1,path:o})},{name:"path",symbols:["closed_path"],postprocess:([o])=>({closed:!0,path:o})},{name:"open_path$macrocall$2",symbols:[l.lexerAny.has("lbracket")?{type:"lbracket"}:lbracket]},{name:"open_path$macrocall$3",symbols:[l.lexerAny.has("rbracket")?{type:"rbracket"}:rbracket]},{name:"open_path$macrocall$1$macrocall$2",symbols:["point"]},{name:"open_path$macrocall$1$macrocall$1$ebnf$1",symbols:[]},{name:"open_path$macrocall$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"open_path$macrocall$1$macrocall$2"],postprocess:r},{name:"open_path$macrocall$1$macrocall$1$ebnf$1",symbols:["open_path$macrocall$1$macrocall$1$ebnf$1","open_path$macrocall$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:o=>o[0].concat([o[1]])},{name:"open_path$macrocall$1$macrocall$1",symbols:["open_path$macrocall$1$macrocall$2","open_path$macrocall$1$macrocall$1$ebnf$1"],postprocess:([o,d])=>[a(o),...d.map(a)||[]]},{name:"open_path$macrocall$1",symbols:["open_path$macrocall$2","open_path$macrocall$1$macrocall$1","open_path$macrocall$3"],postprocess:c(1)},{name:"open_path",symbols:["open_path$macrocall$1"],postprocess:r},{name:"closed_path$subexpression$1$macrocall$2",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen]},{name:"closed_path$subexpression$1$macrocall$3",symbols:[l.lexerAny.has("rparen")?{type:"rparen"}:rparen]},{name:"closed_path$subexpression$1$macrocall$1$macrocall$2",symbols:["point"]},{name:"closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1",symbols:[]},{name:"closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"closed_path$subexpression$1$macrocall$1$macrocall$2"],postprocess:r},{name:"closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1",symbols:["closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1","closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1$subexpression$1"],postprocess:o=>o[0].concat([o[1]])},{name:"closed_path$subexpression$1$macrocall$1$macrocall$1",symbols:["closed_path$subexpression$1$macrocall$1$macrocall$2","closed_path$subexpression$1$macrocall$1$macrocall$1$ebnf$1"],postprocess:([o,d])=>[a(o),...d.map(a)||[]]},{name:"closed_path$subexpression$1$macrocall$1",symbols:["closed_path$subexpression$1$macrocall$2","closed_path$subexpression$1$macrocall$1$macrocall$1","closed_path$subexpression$1$macrocall$3"],postprocess:c(1)},{name:"closed_path$subexpression$1",symbols:["closed_path$subexpression$1$macrocall$1"],postprocess:r},{name:"closed_path$subexpression$1$macrocall$5",symbols:["point"]},{name:"closed_path$subexpression$1$macrocall$4$ebnf$1",symbols:[]},{name:"closed_path$subexpression$1$macrocall$4$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("comma")?{type:"comma"}:comma,"closed_path$subexpression$1$macrocall$5"],postprocess:r},{name:"closed_path$subexpression$1$macrocall$4$ebnf$1",symbols:["closed_path$subexpression$1$macrocall$4$ebnf$1","closed_path$subexpression$1$macrocall$4$ebnf$1$subexpression$1"],postprocess:o=>o[0].concat([o[1]])},{name:"closed_path$subexpression$1$macrocall$4",symbols:["closed_path$subexpression$1$macrocall$5","closed_path$subexpression$1$macrocall$4$ebnf$1"],postprocess:([o,d])=>[a(o),...d.map(a)||[]]},{name:"closed_path$subexpression$1",symbols:["closed_path$subexpression$1$macrocall$4"],postprocess:r},{name:"closed_path",symbols:["closed_path$subexpression$1"],postprocess:c(0)},{name:"polygon",symbols:["closed_path"],postprocess:c(0)},{name:"circle_body",symbols:["point","comma","number"],postprocess:o=>({c:o[0],r:o[2]})},{name:"circle$subexpression$1$macrocall$2",symbols:[l.lexerAny.has("lcomp")?{type:"lcomp"}:lcomp]},{name:"circle$subexpression$1$macrocall$3",symbols:[l.lexerAny.has("rcomp")?{type:"rcomp"}:rcomp]},{name:"circle$subexpression$1$macrocall$1",symbols:["circle$subexpression$1$macrocall$2","circle_body","circle$subexpression$1$macrocall$3"],postprocess:c(1)},{name:"circle$subexpression$1",symbols:["circle$subexpression$1$macrocall$1"]},{name:"circle$subexpression$1$macrocall$5",symbols:[l.lexerAny.has("lparen")?{type:"lparen"}:lparen]},{name:"circle$subexpression$1$macrocall$6",symbols:[l.lexerAny.has("rparen")?{type:"rparen"}:rparen]},{name:"circle$subexpression$1$macrocall$4",symbols:["circle$subexpression$1$macrocall$5","circle_body","circle$subexpression$1$macrocall$6"],postprocess:c(1)},{name:"circle$subexpression$1",symbols:["circle$subexpression$1$macrocall$4"]},{name:"circle$subexpression$1",symbols:["circle_body"]},{name:"circle",symbols:["circle$subexpression$1"],postprocess:a}],ParserStart:"number"};i.default=u},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.lexerAny=i.lexer=void 0;const s=n(0);i.lexer=(0,s.compile)({comma:",",space:{match:/[\s\t\n\v\f\r]+/,lineBreaks:!0},int:/\-?\d+(?![\.\d])/,float:/\-?(?:(?:\d*\.\d+)|(?:\d+\.\d*))/,lcurl:"{",rcurl:"}",lparen:"(",rparen:")",lbracket:"[",rbracket:"]",lcomp:"<",rcomp:">"}),i.lexer.next=(l=>()=>{let c;for(;(c=l.call(i.lexer))&&c.type==="space";);return c})(i.lexer.next),i.lexerAny=i.lexer},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0});function s(r){return r[0]}const l=n(16),c={Lexer:l.lexerAny,ParserRules:[{name:"main$ebnf$1",symbols:["elt"]},{name:"main$ebnf$1",symbols:["main$ebnf$1","elt"],postprocess:r=>r[0].concat([r[1]])},{name:"main",symbols:["main$ebnf$1"],postprocess:([r])=>{const a=new Set;for(const u of r){const o=typeof u[1]=="number"?u[0]:"time";if(a.has(o))return"invalid";a.add(o)}return r}},{name:"elt",symbols:["time"]},{name:"elt",symbols:["num","unit"],postprocess:([[r],a])=>(a=a[0].type,[a,r])},{name:"unit",symbols:[l.lexerAny.has("years")?{type:"years"}:years]},{name:"unit",symbols:[l.lexerAny.has("months")?{type:"months"}:months]},{name:"unit",symbols:[l.lexerAny.has("days")?{type:"days"}
39:days]},{name:"unit",symbols:[l.lexerAny.has("hours")?{type:"hours"}:hours]},{name:"unit",symbols:[l.lexerAny.has("minutes")?{type:"minutes"}:minutes]},{name:"unit",symbols:[l.lexerAny.has("seconds")?{type:"seconds"}:seconds]},{name:"unit",symbols:[l.lexerAny.has("milliseconds")?{type:"milliseconds"}:milliseconds]},{name:"num",symbols:["int"]},{name:"num",symbols:["float"]},{name:"uint",symbols:[l.lexerAny.has("int")?{type:"int"}:int],postprocess:([r])=>parseInt(r,10)},{name:"int$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("neg")?{type:"neg"}:neg]},{name:"int$ebnf$1",symbols:["int$ebnf$1$subexpression$1"],postprocess:s},{name:"int$ebnf$1",symbols:[],postprocess:()=>null},{name:"int",symbols:["int$ebnf$1",l.lexerAny.has("int")?{type:"int"}:int],postprocess:([r,a])=>parseInt(a,10)*(r?-1:1)},{name:"float$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("neg")?{type:"neg"}:neg]},{name:"float$ebnf$1",symbols:["float$ebnf$1$subexpression$1"],postprocess:s},{name:"float$ebnf$1",symbols:[],postprocess:()=>null},{name:"float$ebnf$2",symbols:[l.lexerAny.has("int")?{type:"int"}:int],postprocess:s},{name:"float$ebnf$2",symbols:[],postprocess:()=>null},{name:"float",symbols:["float$ebnf$1","float$ebnf$2",l.lexerAny.has("dot")?{type:"dot"}:dot,l.lexerAny.has("int")?{type:"int"}:int],postprocess:([r,...a])=>parseFloat(a.map(u=>u?u.text:"0").join(""))*(r?-1:1)},{name:"time$ebnf$1$subexpression$1",symbols:[l.lexerAny.has("colon")?{type:"colon"}:colon,"uint"]},{name:"time$ebnf$1",symbols:["time$ebnf$1$subexpression$1"],postprocess:s},{name:"time$ebnf$1",symbols:[],postprocess:()=>null},{name:"time$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("dot")?{type:"dot"}:dot,l.lexerAny.has("int")?{type:"int"}:int]},{name:"time$ebnf$2",symbols:["time$ebnf$2$subexpression$1"],postprocess:s},{name:"time$ebnf$2",symbols:[],postprocess:()=>null},{name:"time",symbols:["uint",l.lexerAny.has("colon")?{type:"colon"}:colon,"uint","time$ebnf$1","time$ebnf$2"],postprocess:([r,a,u,o,d])=>{o=o&&o[1],d=d&&d[1];const b=typeof o=="number"?[["hours",r],["minutes",u],["seconds",o]]:[["minutes",r],["seconds",u]];return d&&b.push(["milliseconds",parseFloat("0."+d)*1e3]),b}}],ParserStart:"main"};i.default=c},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.lexerAny=i.lexer=void 0;const s=n(0);i.lexer=(0,s.compile)({int:/\d+/,neg:"-",dot:".",years:/(?:y|yrs?|years?)\b/,months:/(?:mon(?:th)?s?)\b/,days:/(?:d|days?)\b/,hours:/(?:h|hrs?|hours?)\b/,minutes:/(?:m|mins?|minutes?)\b/,seconds:/(?:s|secs?|seconds?)\b/,milliseconds:/(?:ms|milliseconds?)\b/,space:{match:/[\s\t\n\v\f\r]+/,lineBreaks:!0},colon:":"}),i.lexer.next=(l=>()=>{let c;for(;(c=l.call(i.lexer))&&c.type==="space";);return c})(i.lexer.next),i.lexerAny=i.lexer},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0});function s(r){return r[0]}const l=n(18),c={Lexer:l.lexerAny,ParserRules:[{name:"num",symbols:[l.lexerAny.has("int")?{type:"int"}:int]},{name:"num",symbols:[l.lexerAny.has("float")?{type:"float"}:float]},{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","long"],postprocess:r=>r[0].concat([r[1]])},{name:"main$ebnf$2$subexpression$1$ebnf$1",symbols:["short"]},{name:"main$ebnf$2$subexpression$1$ebnf$1",symbols:["main$ebnf$2$subexpression$1$ebnf$1","short"],postprocess:r=>r[0].concat([r[1]])},{name:"main$ebnf$2$subexpression$1",symbols:[l.lexerAny.has("T")?{type:"T"}:T,"main$ebnf$2$subexpression$1$ebnf$1"]},{name:"main$ebnf$2",symbols:["main$ebnf$2$subexpression$1"],postprocess:s},{name:"main$ebnf$2",symbols:[],postprocess:()=>null},{name:"main",symbols:[l.lexerAny.has("P")?{type:"P"}:P,"main$ebnf$1","main$ebnf$2"],postprocess:([r,a,u],o)=>(u=u?u[1]:[],!a.length&&!u.length?o:a.length?u.length?[...a,...u]:a:u)},{name:"long$subexpression$1",symbols:[l.lexerAny.has("Y")?{type:"Y"}:Y]},{name:"long$subexpression$1",symbols:[l.lexerAny.has("M")?{type:"M"}:M]},{name:"long$subexpression$1",symbols:[l.lexerAny.has("W")?{type:"W"}:W]},{name:"long$subexpression$1",symbols:[l.lexerAny.has("D")?{type:"D"}:D]},{name:"long",symbols:["num","long$subexpression$1"],postprocess:([r,a])=>{switch(r=parseFloat(r[0].value),a=a[0].type,a){case"Y":return["years",r];case"M":return["months",r];
39case"W":return["days",r*7];case"D":return["days",r];default:throw new Error("Unexpected unit "+a)}}},{name:"short$ebnf$1",symbols:[l.lexerAny.has("T")?{type:"T"}:T],postprocess:s},{name:"short$ebnf$1",symbols:[],postprocess:()=>null},{name:"short$subexpression$1",symbols:[l.lexerAny.has("H")?{type:"H"}:H]},{name:"short$subexpression$1",symbols:[l.lexerAny.has("M")?{type:"M"}:M]},{name:"short$subexpression$1",symbols:[l.lexerAny.has("S")?{type:"S"}:S]},{name:"short",symbols:["short$ebnf$1","num","short$subexpression$1"],postprocess:([r,a,u])=>{switch(a=parseFloat(a[0].value),u=u[0].type,u){case"H":return["hours",a];case"M":return["minutes",a];case"S":return["seconds",a];default:throw new Error("Unexpected unit "+u)}}}],ParserStart:"num"};i.default=c},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.lexerAny=i.lexer=void 0;const s=n(0);i.lexer=(0,s.compile)({int:/\-?\d+(?![\.\d])/,float:/\-?(?:(?:\d*\.\d+)|(?:\d+\.\d*))/,P:"P",Y:"Y",M:"M",W:"W",D:"D",H:"H",S:"S",T:"T"}),i.lexerAny=i.lexer},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.toSql=void 0;const s=n(2),l=n(5),c=n(6),r=n(20),a=n(3),u=new Set(a.sqlKeywords.map(w=>w.toLowerCase()));let o=[];function d(w){return b(w.name)}function b(w,x){if(!x){const R=w.toLowerCase();if(R===w&&!u.has(R)&&/^[a-z][a-z0-9_]*$/.test(R))return w}return'"'+w+'"'}function h(w,x,R){R&&o.push("(");let K=!0;for(const B of w)K||o.push(", "),K=!1,x(B);R&&o.push(")")}function p(w,x){switch(w.type){case"foreign key":o.push(" foreign key (",...w.localColumns.map(d).join(", "),")");case"reference":o.push(" REFERENCES "),x.tableRef(w.foreignTable),o.push("(",...w.foreignColumns.map(d).join(", "),") "),w.match&&o.push(" MATCH ",w.match.toUpperCase()),w.onDelete&&o.push(" ON DELETE ",w.onDelete),w.onUp
39date&&o.push(" ON UPDATE ",w.onUpdate);break;case"primary key":case"unique":o.push(" ",w.type," "),"columns"in w&&o.push("(",...w.columns.map(d).join(", "),") ");break;case"check":o.push(" check "),x.expr(w.expr);break;case"not null":case"null":o.push(" ",w.type," ");break;case"default":o.push(" default "),x.expr(w.default);break;case"add generated":o.push(" GENERATED "),g(x,w);break;default:throw c.NotSupported.never(w)}o.push(" ")}function Z(w,x){w.schema&&o.push(b(w.schema),"."),o.push(b(w.name,x)," ")}function X(w){Z(w),w.alias&&o.push(" AS ",b(w.alias)," ")}function J(w,x){o.push(" ORDER BY "),h(x,R=>{w.expr(R.by),R.order&&o.push(" ",R.order," "),R.nulls&&o.push(" NULLS ",R.nulls," ")},!1)}function V(w){switch(w.type){case"default":o.push("DEFAULT ");break;case"identifier":o.push(w.name);break;case"list":let x=!0;for(const R of w.values)x||o.push(", "),x=!1,V(R);break;case"value":o.push(typeof w.value=="number"?w.value.toString():(0,r.literal)(w.value));break;default:throw c.NotSupported.never(w)}}function g(w,x){x.always&&o.push(x.always.toUpperCase()," "),o.push("AS IDENTITY "),x.sequence&&(o.push("("),x.sequence.name&&(o.push("SEQUENCE NAME "),Z(x.sequence.name),o.push(" ")),I(w,x.sequence),o.push(") "))}function I(w,x){x.as&&(o.push("AS "),w.dataType(x.as),o.push(" ")),typeof x.incrementBy=="number"&&o.push("INCREMENT BY ",x.incrementBy.toString()," "),x.minValue==="no minvalue"&&o.push("NO MINVALUE "),typeof x.minValue=="number"&&o.push("MINVALUE ",x.minValue.toString()," "),x.maxValue==="no maxvalue"&&o.push("NO MAXVALUE "),typeof x.maxValue=="number"&&o.push("MAXVALUE ",x.maxValue.toString()," "),typeof x.startWith=="number"&&o.push("START WITH ",x.startWith.toString()," "),typeof x.cache=="number"&&o.push("CACHE ",x.cache.toString()," "),x.cycle&&o.push(x.cycle," "),x.ownedBy==="none"?o.push("OWNED BY NONE "):x.ownedBy&&(o.push("OWNED BY "),v(x.ownedBy)),"restart"in x&&(x.restart===!0?o.push("RESTART "):x.restart&&o.push("RESTART WITH ",x.restart.toString()," "))}function v(w){w.schema&&o.push(b(w.schema),"."),o.push(b(w.table),".",b(w.column)," ")}function k(w,x,R){if(!x){R();return}o.push(x.type," "),R(),x.on&&(o.push("ON "),w.expr(x.on)),x.using&&(o.push("USING ("),h(x.using,K=>o.push(d(K)),!1),o.push(") ")),o.push(" ")}function N(w){w.opSchema?o.push(" operator(",b(w.opSchema),".",w.op,") "):o.push(" ",w.op," ")}const C=(0,l.astVisitor)(w=>({addColumn:(...x)=>{o.push(" ADD COLUMN "),x[0].ifNotExists&&o.push("IF NOT EXISTS "),w.super().addColumn(...x)},createExtension:x=>{o.push("CREATE EXTENSION "),x.ifNotExists&&o.push(" IF NOT EXISTS "),o.push(d(x.extension)),!(!x.from&&!x.version&&!x.schema)&&(o.push(" WITH"),x.schema&&o.push(" SCHEMA ",d(x.schema)),x.version&&o.push(" VERSION ",(0,r.literal)(x.version.value)),x.from&&o.push(" FROM ",(0,r.literal)(x.from.value)))},tablespace:x=>{o.push("TABLESPACE ",d(x.tablespace))},addConstraint:x=>{o.push(" ADD ");const R=x.constraint.constraintName;R&&o.push(" CONSTRAINT ",d(R)," "),p(x.constraint,w)},alterColumn:(x,R)=>{o.push(" ALTER COLUMN ",d(x.column)," "),w.super().alterColumn(x,R)},setColumnDefault:(x,R,K)=>{if(o.push(" SET DEFAULT "),w.expr(x.default),x.updateExisting)throw new Error("Not implemented: updateExisting on set column default")},createEnum:x=>{o.push("CREATE TYPE "),Z(x.name),o.push(" AS ENUM "),h(x.values,R=>o.push((0,r.literal)(R.value)),!0),o.push(" ")},createCompositeType:x=>{o.push("CREATE TYPE "),Z(x.name),o.push(" AS "),h(x.attributes,R=>{o.push(d(R.name)," "),w.dataType(R.dataType),R.collate&&(o.push("COLLATE "),Z(R.collate))},!0),o.push(" ")},setTableOwner:x=>{o.push(" OWNER TO ",d(x.to))},alterColumnSimple:x=>o.push(x.type),alterColumnAddGenerated:x=>{o.push(" ADD GENERATED "),g(w,x)},setColumnType:x=>{o.push(" SET DATA TYPE "),w.dataType(x.dataType),o.push(" ")},alterTable:x=>{o.push("ALTER TABLE "),x.ifExists&&o.push(" IF EXISTS "),x.only&&o.push(" ONLY "),X(x.table),h(x.changes,R=>w.tableAlteration(R,x.table),!1)},alterIndex:x=>{switch(o.push("ALTER INDEX "),x.ifExists&&o.push(" IF EXISTS "),X(x.index),x.change.type){case"rename":o.push(" RENAME TO "),Z(x.change.to),o.push(" ");break;case"set tablespace":o.push(" SET TABLESPACE "),Z(x.change.tablespace),o.push(" ");break;default:throw c.NotSupported.never(x.change,"Alter index type not supported: ")}},tableAlteration:(x,R)=>{switch(x.type){case"add column":return w.addColumn(x,R);case"add constraint":return w.addConstraint(x,R);case"alter column":return w.alterColumn(x,R);case"rename":return w.renameTable(x,R);case"rename column":return w.renameColumn(x,R);case"rename constraint":return w.renameConstraint(x,R);case"drop column":return w.dropColumn(x,R);case"drop constraint":return w.dropConstraint(x,R);case"owner":return w.setTableOwner(x,R);default:throw c.NotSupported.never(x)}},array:x=>{o.push(x.type==="array"?"ARRAY[":"("),h(x.expressions,R=>w.expr(R),!1),o.push(x.type==="array"?"]":")")},arrayIndex:x=>{w.expr(x.array),o.push("["),w.expr(x.index),o.push("] ")},expr:x=>{if(x.type==="ref"){w.ref(x);return}if(x.type==="list"){w.super().expr(x);return}o.push("("),w.super().expr(x),o.push(")")},callOverlay:x=>{o.push("OVERLAY("),w.expr(x.value),o.push(" PLACING "),w.expr(x.placing),o.push(" FROM "),w.expr(x.from),x.for&&(o.push(" FOR "),w.expr(x.for)),o.push(")")},callSubstring:x=>{o.push("SUBSTRING("),w.expr(x.value),x.from&&(o.push(" FROM "),w.expr(x.from)),x.for&&(o.push(" FOR "),w.expr(x.for)),o.push(")")},binary:x=>{w.expr(x.left),N(x),w.expr(x.right)},call:x=>{Z(x.function),o.push("("),x.distinct&&o.push(x.distinct," "),h(x.args,R=>w.expr(R),!1),x.orderBy&&J(w,x.orderBy),o.push(") "),x.filter&&(o.push("filter (where "),w.expr(x.filter),o.push(") ")),x.over&&(
39o.push("over ("),x.over.partitionBy&&(o.push("PARTITION BY "),h(x.over.partitionBy,R=>w.expr(R),!1),o.push(" ")),x.over.orderBy&&(J(w,x.over.orderBy),o.push(" ")),o.push(") "))},case:x=>{o.push("CASE "),x.value&&w.expr(x.value);for(const R of x.whens)o.push(" WHEN "),w.expr(R.when),o.push(" THEN "),w.expr(R.value);x.else&&(o.push(" ELSE "),w.expr(x.else)),o.push(" END ")},cast:x=>{w.expr(x.operand),o.push("::"),w.dataType(x.to)},constant:x=>{switch(x.type){case"boolean":o.push(x.value?"true":"false");break;case"integer":o.push(x.value.toString(10));break;case"numeric":o.push(x.value.toString()),Number.isInteger(x.value)&&o.push(".");break;case"null":o.push("null");break;case"constant":break;case"string":o.push((0,r.literal)(x.value));break;default:throw c.NotSupported.never(x)}},valueKeyword:x=>{o.push(x.keyword," ")},comment:x=>{switch(o.push("COMMENT ON ",x.on.type.toUpperCase()," "),x.on.type){case"column":v(x.on.column);break;default:Z(x.on.name);break}o.push(" IS ",(0,r.literal)(x.comment)," ")},extract:x=>{o.push("EXTRACT (",x.field.name.toUpperCase()," FROM "),w.expr(x.from),o.push(") ")},createColumn:x=>{var R;o.push(d(x.name)," "),w.dataType(x.dataType),o.push(" "),x.collate&&(o.push("COLLATE "),Z(x.collate));for(const K of(R=x.constraints)!==null&&R!==void 0?R:[])w.constraint(K)},begin:x=>{o.push("BEGIN "),x.isolationLevel&&o.push("ISOLATION LEVEL ",x.isolationLevel.toUpperCase()," "),x.writeable&&o.push(x.writeable.toUpperCase()," "),typeof x.deferrable=="boolean"&&(x.deferrable||o.push("NOT "),o.push("DEFERRABLE "))},alterSequence:x=>{switch(o.push("ALTER SEQUENCE "),x.ifExists&&o.push("IF EXISTS "),Z(x.name),x.change.type){case"set options":I(w,x.change);break;case"rename":o.push("RENAME TO ",d(x.change.newName)," ");break;case"set schema":o.push("SET SCHEMA ",d(x.change.newSchema)," ");break;case"owner to":x.change.owner,o.push("OWNER TO ",d(x.change.owner)," ");break;default:throw c.NotSupported.never(x.change)}},createSequence:x=>{o.push("CREATE "),x.temp&&o.push("TEMPORARY "),o.push("SEQUENCE "),x.ifNotExists&&o.push("IF NOT EXISTS "),Z(x.name),I(w,x.options)},drop:x=>{o.push(x.type.toUpperCase()," "),x.concurrently&&o.push("CONCURRENTLY "),x.ifExists&&o.push("IF EXISTS "),h(x.names,R=>w.tableRef(R),!1),x.cascade&&o.push(x.cascade.toUpperCase()," ")},constraint:x=>{x.constraintName&&o.push(" CONSTRAINT ",d(x.constraintName)," "),p(x,w)},do:x=>{o.push("DO"),x.language&&o.push(" LANGUAGE ",x.language.name),o.push(" $$",x.co
39de,"$$")},createFunction:x=>{var R;if(o.push(x.orReplace?"CREATE OR REPLACE FUNCTION ":"CREATE FUNCTION "),Z(x.name),h(x.arguments,K=>{K.mode&&o.push(K.mode," "),K.name&&o.push(d(K.name)," "),w.dataType(K.type),K.default&&(o.push(" = "),w.expr(K.default))},!0),x.returns)switch(x.returns.kind){case"table":o.push(" RETURNS TABLE "),h(x.returns.columns,K=>{o.push(d(K.name)," "),w.dataType(K.type)},!0);break;case void 0:case null:case"array":o.push(" RETURNS "),w.dataType(x.returns);break;default:throw c.NotSupported.never(x.returns)}switch(o.push(" AS $$",(R=x.code)!==null&&R!==void 0?R:"","$$"),x.language&&o.push("LANGUAGE ",x.language.name," "),x.purity&&o.push(x.purity.toUpperCase()," "),typeof x.leakproof=="boolean"&&o.push(x.leakproof?"LEAKPROOF ":"NOT LEAKPROOF "),x.onNullInput){case"call":o.push("CALLED ON NULL INPUT ");break;case"null":o.push("RETURNS NULL ON NULL INPUT ");break;case"strict":o.push("STRICT ");break;case null:case void 0:break;default:throw c.NotSupported.never(x.onNullInput)}},dropFunction:x=>{o.push("DROP FUNCTION "),x.ifExists&&o.push("IF EXISTS "),Z(x.name),x.arguments&&h(x.arguments,R=>{R.name&&(Z(R.name),o.push(" ")),w.dataType(R.type)},!0),o.push(" ")},with:x=>{o.push("WITH "),h(x.bind,R=>{o.push(d(R.alias)," AS ("),w.statement(R.statement),o.push(") ")},!1),w.statement(x.in)},withRecursive:x=>{o.push("WITH RECURSIVE ",d(x.alias),"(",...x.columnNames.map(d).join(", "),") AS ("),w.union(x.bind),o.push(") "),w.statement(x.in)},setGlobal:x=>{o.push("SET ",d(x.variable)," = "),V(x.set)},setTimezone:x=>{switch(o.push("SET TIME ZONE "),x.to.type){case"default":case"local":o.push(x.to.type.toUpperCase()," ");break;case"value":o.push(typeof x.to.value=="string"?(0,r.literal)(x.to.value):x.to.value.toString(10));break;case"interval":o.push("INTERVAL ",(0,r.literal)(x.to.value)," HOUR TO MINUTE");break;default:throw c.NotSupported.never(x.to)}},setNames:x=>{switch(o.push("SET NAMES "),x.to.type){case"value":o.push((0,r.literal)(x.to.value));break}},dataType:x=>{var R,K;if((x==null?void 0:x.kind)==="array"){w.dataType(x.arrayOf),o.push("[]");return}if(!(x!=null&&x.name)){o.push("unkown");return}let B=!0;if(x.schema)Z(x,x.doubleQuoted);else if(x.doubleQuoted)Z(x,!0);else switch(x.name){case"double precision":case"character varying":case"bit varying":o.push(x.name," ");break;case"time without time zone":case"timestamp without time zone":case"time with time zone":case"timestamp with time zone":const _=x.name.split(" ");o.push(_.shift()),!((R=x.config)===null||R===void 0)&&R.length&&h(x.config,j=>o.push(j.toString(10)),!0),o.push(" "),o.push(_.join(" ")," "),B=!1;break;default:Z(x);break}B&&(!((K=x.config)===null||K===void 0)&&K.length)&&h(x.config,_=>o.push(_.toString(10)),!0)},createIndex:x=>{o.push(x.unique?"CREATE UNIQUE INDEX ":"CREATE INDEX "),x.ifNotExists&&o.push(" IF NOT EXISTS "),x.indexName&&o.push(d(x.indexName)," "),o.push("ON "),w.tableRef(x.table),x.using&&o.push("USING ",d(x.using)," "),h(x.expressions,R=>{w.expr(R.expression),o.push(" "),R.collate&&(o.push("COLLATE "),Z(R.collate)),R.opclass&&Z(R.opclass),R.order&&o.push(R.order," "),R.nulls&&o.push("nulls ",R.nulls," ")},!0),x.with&&(o.push("WITH "),h(x.with,R=>{o.push(R.parameter," = ",(0,r.literal)(R.value))},!0)),x.tablespace&&o.push("TABLESPACE ",b(x.tablespace)),x.where&&(o.push(" WHERE "),w.expr(x.where)),o.push(" ")},createTable:x=>{var R;o.push("CREATE "),x.locality&&o.push(x.locality.toUpperCase()," "),x.temporary&&o.push("TEMPORARY "),x.unlogged&&o.push("UNLOGGED "),o.push(x.ifNotExists?"TABLE IF NOT EXISTS ":"TABLE "),w.tableRef(x.name),o.push("("),h(x.columns,K=>{switch(K.kind){case"column":return w.createColumn(K);case"like table":return w.likeTable(K);default:throw c.NotSupported.never(K)}},!1),x.constraints&&(o.push(", "),h(x.constraints,K=>{const B=K.constraintName;B&&o.push("CONSTRAINT ",d(B)," "),p(K,w)},!1)),o.push(") "),!((R=x.inherits)===null||R===void 0)&&R.length&&(o.push(" INHERITS "),h(x.inherits,K=>Z(K),!0))},likeTable:x=>{o.push(" LIKE "),w.tableRef(x.like),o.push(" ");for(const{verb:R,option:K}of x.options)o.push(R.toUpperCase()," ",K.toUpperCase()," ")},createSchema:x=>{o.push(x.ifNotExists?"CREATE SCHEMA IF NOT EXISTS ":"CREATE SCHEMA "),o.push(d(x.name))},truncateTable:x=>{o.push("TRUNCATE TABLE ");let R=!0;for(const K of x.tables)R||o.push(", "),R=!1,w.tableRef(K);if(x.identity)switch(x.identity){case"restart":o.push(" RESTART IDENTITY ");break;case"continue":o.push(" CONTINUE IDENTITY ");break}x.cascade&&o.push(" ",x.cascade," ")},delete:x=>{o.push("DELETE FROM "),w.tableRef(x.from),x.where&&(o.push(" WHERE "),w.expr(x.where)),x.returning&&(o.push(" RETURNING "),h(x.returning,R=>w.selectionColumn(R),!1)),o.push(" ")},dropColumn:x=>
39{o.push(" DROP COLUMN "),x.ifExists&&o.push(" IF EXISTS "),o.push(d(x.column)),x.behaviour&&o.push(" ",x.behaviour),o.push(" ")},dropConstraint:x=>{o.push(" DROP CONSTRAINT "),x.ifExists&&o.push(" IF EXISTS "),o.push(d(x.constraint)),x.behaviour&&o.push(" ",x.behaviour.toUpperCase()," ")},from:x=>w.super().from(x),fromCall:x=>{k(w,x.join,()=>{var R,K;if(w.call(x),x.withOrdinality&&o.push(" WITH ORDINALITY"),x.alias){o.push(" AS ",d(x.alias)," ");const B=(K=(R=x.alias.columns)===null||R===void 0?void 0:R.length)!==null&&K!==void 0?K:0;if(B>0){o.push("(");for(let _=0;_<B;++_)_!==0&&o.push(", "),o.push(d(x.alias.columns[_]));o.push(")")}}}),o.push(" ")},fromStatement:x=>{k(w,x.join,()=>{o.push("("),w.select(x.statement),o.push(") "),x.alias&&(o.push(" AS ",b(x.alias)),x.columnNames&&h(x.columnNames,R=>o.push(d(R)),!0),o.push(" "))}),o.push(" ")},values:x=>{o.push("VALUES "),h(x.values,R=>{h(R,K=>{w.expr(K)},!0)},!1)},fromTable:x=>{k(w,x.join,()=>{if(w.tableRef(x.name),x.name.columnNames){if(!x.name.alias)throw new Error("Cannot specify aliased column names without an alias");h(x.name.columnNames,R=>o.push(d(R)),!0)}})},join:x=>{throw new Error("Should not happen ð")},insert:x=>{if(o.push("INSERT INTO "),w.tableRef(x.into),x.columns&&o.push("(",x.columns.map(d).join(", "),")"),o.push(" "),x.overriding&&o.push("OVERRIDING ",x.overriding.toUpperCase()," VALUE "),w.select(x.insert),o.push(" "),x.onConflict){o.push("ON CONFLICT ");const R=x.onConflict.on;switch(R==null?void 0:R.type){case"on expr":h(R.exprs,K=>w.expr(K),!0);break;case"on constraint":o.push("ON CONSTRAINT "),Z(R.constraint);case null:case void 0:break;default:throw c.NotSupported.never(R)}x.onConflict.do==="do nothing"?o.push(" DO NOTHING"):(o.push(" DO UPDATE SET "),h(x.onConflict.do.sets,K=>w.set(K),!1),x.onConflict.where&&(o.push(" WHERE "),w.expr(x.onConflict.where))),o.push(" ")}x.returning&&(o.push(" RETURNING "),h(x.returning,R=>w.selectionColumn(R),!1))},raise:x=>{var R,K;o.push("RAISE "),x.level&&o.push(x.level.toUpperCase()," "),o.push((0,r.literal)(x.format)," "),!((R=x.formatExprs)===null||R===void 0)&&R.length&&(o.push(", "),h(x.formatExprs,B=>w.expr(B),!1)),!((K=x.using)===null||K===void 0)&&K.length&&(o.push(" USING "),h(x.using,({type:B,value:_})=>{o.push(B.toUpperCase(),"="),w.expr(_)},!1)),o.push(" ")},default:()=>{o.push(" DEFAULT ")},member:x=>{w.expr(x.operand),o.push(x.op),o.push(typeof x.member=="number"?x.member.toString(10):(0,r.literal)(x.member))},ref:x=>{x.table&&(Z(x.table),o.push(".")),o.push(x.name==="*"?"*":b(x.name))},parameter:x=>{o.push(x.name)},renameColumn:x=>{o.push(" RENAME COLUMN ",d(x.column)," TO ",d(x.to))},renameConstraint:x=>{o.push(" RENAME CONSTRAINT ",d(x.constraint)," TO ",d(x.to))},renameTable:x=>{o.push(" RENAME TO ",d(x.to))},createView:x=>{o.push("CREATE "),x.orReplace&&o.push("OR REPLACE "),x.temp&&o.push("TEMP "),x.recursive&&o.push("RECURSIVE "),o.push("VIEW "),w.tableRef(x.name),x.columnNames&&h(x.columnNames,K=>o.push(d(K)),!0);const R=x.parameters&&Object.entries(x.parameters);R!=null&&R.length&&(o.push(" WITH "),h(R,([K,B])=>o.push(K,"=",B),!1)),o.push(" AS "),w.select(x.query),x.checkOption&&o.push(" WITH ",x.checkOption.toUpperCase()," CHECK OPTION")},createMaterializedView:x=>{o.push("CREATE MATERIALIZED VIEW "),x.ifNotExists&&o.push("IF NOT EXISTS "),w.tableRef(x.name),x.columnNames&&h(x.columnNames,K=>o.push(d(K)),!0);const R=x.parameters&&Object.entries(x.parameters);R!=null&&R.length&&(o.push(" WITH "),h(R,([K,B])=>o.push(K,"=",B),!1)),x.tablespace&&o.push(" TABLESPACE ",d(x.tablespace)),o.push(" AS "),w.select(x.query),typeof x.withData=="boolean"&&o.push(x.withData?" WITH DATA":" WITH NO DATA")},refreshMaterializedView:x=>{o.push("REFRESH MATERIALIZED VIEW "),x.concurrently&&o.push("CONCURRENTLY "),w.tableRef(x.name),typeof x.withData=="boolean"&&o.push(x.withData?" WITH DATA":" WITH NO DATA")},select:x=>w.super().select(x),selection:x=>{if(o.push("SELECT "),x.distinct&&(typeof x.distinct=="string"?o.push(x.distinct.toUpperCase()):(o.push(" DISTINCT ON "),h(x.distinct,R=>w.expr(R),!0)),o.push(" ")),x.columns&&h(x.columns,R=>w.selectionColumn(R),!1),o.push(" "),x.from){o.push("FROM ");const R=x.from.length;for(let K=0;K<R;K++){const B=x.from[K];K>0&&!B.join&&o.push(","),w.from(B)}o.push(" ")}x.where&&(o.push("WHERE "),w.expr(x.where),o.push(" ")),x.groupBy&&(o.push("GROUP BY "),h(x.groupBy,R=>w.expr(R),!1),o.push(" "),x.having&&(o.push(" HAVING "),w.expr(x.having),o.push(" "))),x.orderBy&&(J(w,x.orderBy),o.push(" ")),x.limit&&(x.limit.offset&&(o.push("OFFSET "),w.expr(x.limit.offset)),x.limit.limit&&(o.push("LIMIT "),w.expr(x.limit.limit))),x.for&&(o.push("FOR ",x.for.type.toUpperCase()),x.skip&&o.push(" ",x.skip.type.toUpperCase()))},show:x=>{o.push("SHOW ",d(x.variable))},prepare:x=>{var R;o.push("PREPARE ",d(x.name)),!((R=x.args)===null||R===void 0)&&R.length&&h(x.args,K=>
39w.dataType(K),!0),o.push(" AS "),w.statement(x.statement)},deallocate:x=>{if(o.push("DEALLOCATE "),"name"in x.target){o.push(x.target.name);return}o.push("ALL")},arraySelect:x=>{o.push("array("),w.select(x.select),o.push(")")},union:x=>{o.push("("),w.statement(x.left),o.push(") ",x.type.toUpperCase()," "),x.right.type==="union"||x.right.type==="union all"?w.union(x.right):(o.push("("),w.statement(x.right),o.push(")"))},selectionColumn:x=>{w.expr(x.expr),x.alias&&o.push(" AS ",d(x.alias)),o.push(" ")},set:x=>{o.push(d(x.column)," = "),w.expr(x.value),o.push(" ")},statement:x=>w.super().statement(x),tableRef:x=>{Z(x),x.alias&&o.push(" AS ",b(x.alias)),o.push(" ")},ternary:x=>{w.expr(x.value),o.push(" ",x.op," "),w.expr(x.lo),o.push(" AND "),w.expr(x.hi),o.push(" ")},transaction:x=>{o.push(x.type)},unary:x=>{switch(x.op){case"+":case"-":N(x),w.expr(x.operand);break;case"NOT":o.push(x.op),o.push(" "),w.expr(x.operand);break;default:w.expr(x.operand),o.push(" "),o.push(x.op)}},update:x=>{o.push("UPDATE "),w.tableRef(x.table),o.push(" SET "),h(x.sets,R=>w.set(R),!1),o.push(" "),x.from&&(o.push("FROM "),w.from(x.from),o.push(" ")),x.where&&(o.push("WHERE "),w.expr(x.where),o.push(" ")),x.returning&&(o.push(" RETURNING "),h(x.returning,R=>w.selectionColumn(R),!1),o.push(" "))}}));i.toSql={};const f=s.AstDefaultMapper.prototype;for(const w of Object.getOwnPropertyNames(f)){const x=f[w];w==="constructor"||w==="super"||typeof x!="function"||(i.toSql[w]=function(...R){try{return C[w].apply(C,R),o.join("").trim()}finally{o=[]}})}},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.literal=void 0;function s(l){if(l==null)return"NULL";if(Array.isArray(l)){var c=l.map(s);return"("+c.join(", ")+")"}var r=~l.indexOf("\\"),a=r?"E":"";return l=l.replace(/'/g,"''"),l=l.replace(/\\/g,"\\\\"),a+"'"+l+"'"}i.literal=s},function(t,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.locationOf=void 0;function s(l){const c=l._location;if(!c)throw new Error("This statement has not been parsed using location tracking (which has a small performance hit). ");return c}i.locationOf=s}]))})(df);function y2(e){return df.parse(e,"expr")}const $ae=new Set(["any_value","arg_max","max_by","arg_min","argMin","min_by","avg","mean","bit_and","bit_or","bit_xor","bitstring_agg","bool_and","bool_or","count","favg","first","arbitrary","fsum","kahan_sum","geomean","geometric_mean","histogram","last","list","array_agg","max","min","product","string_agg","group_concat","listagg","sum","approx_count_distinct","approx_quantile","reservoir_quantile","corr","covar_pop","covar_samp","entropy","kurtosis","mad","median","mode","quantile_cont","quantile_disc","quantile","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","skewness","stddev_pop","stddev_samp","stddev","var_pop","var_samp","variance"]);function BB(e,t){const i=new Map;t.forEach(s=>{i.set(s.name??s.fid,s)});const n=s=>{switch(s.type){case"integer":case"numeric":return["quantitative",!1];case"null":case"string":case"boolean":return["nominal",!1];case"unary":const[l,c]=n(s.operand);switch(s.op){case"+":case"-":return["quantitative",c];default:return["nominal",c]}case"ref":{const r=i.get(s.name);return r?[r.semanticType,!1]:["nominal",!1]}case"case":return s.else?n(s.else):n(s.whens[0].value);case"array":case"list":return s.expressions.length?n(s.expressions[0]):["nominal",!1];case"binary":return n(s.left);case"call":{if(s.function.name==="count")return["quantitative",!0];const[r]=n(s.args[0]);return[r,$ae.has(s.function.name.toLowerCase())]}case"cast":{const[r,a]=n(s.operand);if("name"in s.to)switch(s.to.name.toLowerCase()){case"date":case"timestamp":case"timestamp with time zone":case"time":case"time with time zone":case"interval":return["temporal",a];case"smallint":case"integer":case"bigint":case"decimal":case"numeric":case"real":case"double precision":case"smallserial":case"serial":case"bigserial":return["quantitative",a]}return["nominal",a]}default:return["nominal",!1]}};return n(e)}function _B(e){const t=new Set,i=n=>
39{n.type==="ref"?t.add(n.name):Object.values(n).forEach(s=>{s!==null&&typeof s=="object"&&"type"in s&&i(s)})};return i(y2(e)),Array.from(t)}function OB(e,t){const i=new Map;t.forEach(l=>{i.set((l.name??l.fid).toLowerCase(),l)});const n=y2(e),s=df.astMapper(()=>({ref:l=>{var c;return df.assignChanged(l,{name:((c=i.get(l.name.toLowerCase()))==null?void 0:c.fid)||l.name})}}));return df.toSql.expr(s.expr(n))}var Jt;(function(e){e[e.setConfig=0]="setConfig",e[e.removeField=1]="removeField",e[e.reorderField=2]="reorderField",e[e.moveField=3]="moveField",e[e.cloneField=4]="cloneField",e[e.createBinlogField=5]="createBinlogField",e[e.appendFilter=6]="appendFilter",e[e.modFilter=7]="modFilter",e[e.writeFilter=8]="writeFilter",e[e.setName=9]="setName",e[e.applySort=10]="applySort",e[e.transpose=11]="transpose",e[e.setLayout=12]="setLayout",e[e.setFieldAggregator=13]="setFieldAggregator",e[e.setGeoData=14]="setGeoData",e[e.setCoordSystem=15]="setCoordSystem",e[e.createDateDrillField=16]="createDateDrillField",e[e.createDateFeatureField=17]="createDateFeatureField",e[e.changeSemanticType=18]="changeSemanticType",e[e.setFilterAggregator=19]="setFilterAggregator",e[e.addFoldField=20]="addFoldField",e[e.upsertPaintField=21]="upsertPaintField",e[e.addSQLComputedField=22]="addSQLComputedField",e[e.removeAllField=23]="removeAllField",e[e.editAllField=24]="editAllField",e[e.replaceWithNLPQuery=25]="replaceWithNLPQuery",e[e.replaceChart=26]="replaceChart"})(Jt||(Jt={}));const XZ={[Jt.setConfig]:(e,t,i)=>Xt(e,"config",n=>({...n,[t]:i})),[Jt.removeField]:(e,t,i)=>Xt(e,`encodings.${t}`,n=>kR(n,i)),[Jt.reorderField]:(e,t,i,n)=>Xt(e,`encodings.${t}`,s=>s.map((l,c,r)=>c===i?r[n]:c===n?r[i]:l)),[Jt.moveField]:(e,t,i,n,s,l)=>{const c=e.encodings[t][i],r=n==="dimensions"?Xt(c,"analyticType",()=>"dimension"):n==="measures"?Xt(c,"analyticType",()=>"measure"):c;return Xt(e,"encodings",a=>({...a,[t]:kR(e.encodings[t],i),[n]:yy(e.encodings[n],r,s).slice(0,l??1/0)}))},[Jt.cloneField]:(e,t,i,n,s,l,c)=>{const r={...e.encodings[t][i]};return Xt(e,"encodings",a=>({...a,[n]:yy(e.encodings[n],r,s).slice(0,c??1/0)}))},[Jt.createBinlogField]:(e,t,i,n,s,l)=>{const c=e.encodings[t][i],r=n.startsWith("bin"),a=r?"dimensions":t,u=r?`${n}${l}`:`log${l}`,o={fid:s,name:`${u}(${c.name})`,semanticType:r?"ordinal":"quantitative",analyticType:r?"dimension":c.analyticType,computed:!0,expression:{op:n,as:s,params:[{type:"field",value:c.fid}],num:l}};return r||(o.aggName="sum"),Xt(e,`encodings.${a}`,d=>d.concat(o))},[Jt.appendFilter]:(e,t,i,n,s)=>{const l=e.encodings[i][n];return Xt(e,"encodings.filters",c=>yy(c,{...l,rule:null},t))},[Jt.modFilter]:(e,t,i,n)=>Xt(e,"encodings.filters",s=>{const l=e.encodings[i][n];return Va(s,t,c=>({...l,rule:null}))}),[Jt.writeFilter]:(e,t,i)=>Xt(e,"encodings.filters",n=>Va(n,t,s=>({...s,rule:i}))),[Jt.setName]:(e,t)=>({...e,name:t}),[Jt.applySort]:(e,t)=>{const{rows:i,columns:n}=e.encodings,s=i.length>0?i[i.length-1]:null,l=n.length>0?n[n.length-1]:null;return l!==null&&l.analyticType==="dimension"&&s!==null&&s.analyticType==="measure"?Xt(e,"encodings.columns",c=>Va(c,c.length-1,r=>({...r,sort:t}))):l!==null&&l.analyticType==="measure"&&s!==null&&s.analyticType==="dimension"?Xt(e,"encodings.rows",c=>Va(c,c.length-1,r=>({...r,sort:t}))):e},[Jt.transpose]:e=>Xt(e,"encodings",t=>({...t,columns:t.rows,rows:t.columns})),[Jt.setLayout]:(e,t)=>Xt(e,"layout",i=>Object.assign({},i,Object.fromEntries(t))),[Jt.setFieldAggregator]:(e,t,i,n)=>Xt(e,`encodings.${t}`,s=>Va(s,i,l=>({...l,aggName:n}))),[Jt.setGeoData]:(e,t,i,n)=>Xt(e,"layout",s=>({...s,geojson:t,geoKey:i,geoUrl:n})),[Jt.setCoordSystem]:(e,t)=>Xt(e,"config",i=>({...i,coordSystem:t,geoms:[Kf.GEOM_TYPES[t][0]]})),[Jt.createDateDrillField]:(e,t,i,n,s,l,c,r)=>{const a=e.encodings[t][i],u={fid:s,name:l,semanticType:"temporal",analyticType:a.analyticType,aggName:"sum",computed:!0,timeUnit:n,expression:{op:"dateTimeDrill",as:s,params:[{type:"field",value:a.fid},{type:"value",value:n},...c?[{type:"format",value:c}]:[],...Ca(r)?[{type:"offset",value:r}]:[]]}};return Xt(e,`encodings.${t}`,o=>o.concat(u))},[Jt.createDateFeatureField]:(e,t,i,n,s,l,c,r)=>{const a=e.encodings[t][i],u={fid:s,name:l,semanticType:"ordinal",analyticType:a.analyticType,aggName:"sum",computed:!0,expression:{op:"dateTimeFeature",as:s,params:[{type:"field",value:a.fid},{type:"value",value:n},...c?[{type:"format",value:c}]:[],...Ca(r)?[{type:"offset",value:r}]:[]]}};return Xt(e,`encodings.${t}`,o=>o.concat(u))},[Jt.changeSemanticType]:(e,t,i,n)=>Xt(e,`encodings.${t}`,s=>Va(s,i,l=>({...l,semanticType:n}))),[Jt.setFilterAggregator]:(e,t,i)=>Xt(e,"encodings.filters",n=>Va(n,t,s=>({...s,aggName:i||"sum",enableAgg:!!i,rule:null}))),[Jt.addFoldField]:(e,t,i,n,s,l,c)=>{let r=e;const a=r.encodings[t][i];if(!r.config.folds){const u=[...r.encodings.measures,...r.encodings.details].filter(o=>o.analyticType==="measure"&&o.fid!==Kc);r=XZ[Jt.setConfig](r,"folds",u.filter((o,d)=>d===0).map(o=>o.fid))}if(a.fid===Kc){const u=Object.keys(r.encodings).filter(o=>o!=="filters").map(o=>[o,r.encodings[o].findIndex(d=>d.fid===wu)]).filter(([o,d])=>d>=0);if(u.length===1){const[o,d]=u[0];r=XZ[Jt.cloneField](r,o,d,"details",0,`${l}_auto`,1/0)}}return XZ[Jt.cloneField](r,t,i,n,s,l,c)},[Jt.upsertPaintField]:(e,t,i)=>{if(!t)return Xt(e,"encodings",l=>Object.fromEntries(Object.entries(l).map(([c,r])=>[c,r.filter(a=>a.fid!==nu)])));const n="facets"in t?{op:"paint",as:nu,params:[{type:"newmap",value:t}]}:{op:"paint",as:nu,params:[{type:"map",value:t}]},s=t.usedColor.includes(255);return Xt(e,"encodings",l=>{let c=!1,r=!1;const a=Object.entries(l).map(([b,h])=>{const p=h.findIndex(Z=>Z.fid===nu);return p>-1?(c=!0,b==="filters"&&(r=!0),[b,Va(h,p,Z=>({...Z,expression:n}))]):[b,h]}),u={fid:nu,analyticType:"dimension",name:i,semanticType:"nominal",computed:!0,expression:n,rule:{type:"not in",value:[""]}};if(c)return!r&&s?Xt(Object.fromEntries(a),"filters",b=>b.concat(u)):Object.fromEntries(a);const o={fid:nu,analyticType:"dimension",name:i,semanticType:"nominal",computed:!0,expression:n},d=Xt(Xt(l,"dimensions",b=>yy(b,o,b.length)),"color",()=>[{...o}]);return s?Xt(d,"filters",b=>b.concat(u)):d})},[Jt.addSQLComputedField]:(e,t,i,n)=>{const[s,l]=BB(y2(n),e.encodings.dimensions.concat(e.encodings.measures)),c=s==="quantitative"?"measure":"dimension";return Xt(e,`encodings.${c}s`,r=>r.concat({analyticType:c,fid:t,name:i,semanticType:s,computed:!0,aggName:l?"expr":c==="dimension"?void 0:"sum",expression:{op:"expr",as:t,params:[{type:"sql",value:n}]}}))},[Jt.removeAllField]:(e,t)=>Xt(e,"encodings",i=>Object.fromEntries(Object.entries(i).map(([n,s])=>{const l=s.filter(c=>c.fid!==t);return s.length===l.length?[n,s]:[n,l]}))),[Jt.editAllField]:(e,t,i)=>{if(Object.keys(i).includes("name")){const n=e.encodings.dimensions.concat(e.encodings.measures).find(s=>s.fid===t);return xB(e,s=>
39{n&&Object.values(s.encodings).forEach(l=>l.forEach((c,r)=>{var a;if(c.fid===t)l[r]={...c,...i};else if(((a=c.expression)==null?void 0:a.op)==="expr"){const u=c.expression.params.find(o=>o.type==="sql");if(u){const o=OB(u.value,[{...n,fid:i.name,name:n.name??n.fid}]);o!==u.value&&(u.value=o)}}}))})}return Xt(e,"encodings",n=>Object.fromEntries(Object.entries(n).map(([s,l])=>l.find(r=>r.fid===t)?[s,l.map(r=>r.fid===t?{...r,...i}:r)]:[s,l])))},[Jt.replaceWithNLPQuery]:(e,t,i)=>({...JSON.parse(i),visId:e.visId,name:e.name}),[Jt.replaceChart]:(e,t)=>mf({...t,visId:e.visId,name:t.name??e.name})},Qae=(e,t)=>{const i={};return Object.keys(t.encodings).forEach(n=>{t.encodings[n]!==e.encodings[n]&&(i[n]=t.encodings[n])}),i};function LR(e,t){const i=[],n=new Array(t.length).fill(null).map(()=>[]);return e.forEach(s=>{const l=t.findIndex(c=>c(s));l>=0?n[l].push(s):i.push(s)}),i.concat(n.flat())}function sG(e){const t={};return e.dimensions&&e.dimensions.length>0&&(t.dimensions=LR(e.dimensions,[i=>i.fid===nu,i=>i.fid===wu])),e.measures&&e.measures.length>0&&(t.measures=LR(e.measures,[i=>i.fid===Nm,i=>i.fid===Kc])),t}const Dae=(e,t)=>{const i=Qae(t,e),n=e.config.geoms[0];return Object.keys(i).length===0&&tR(e.config.geoms,t.config.geoms)?e:tR(e.config.geoms,t.config.geoms)?Xt(e,"encodings",s=>({...s,...nG(n,i),...sG(i)})):Xt(e,"encodings",s=>({...s,...nG(n,s),...sG(s)}))},Aae=[Dae];function qae(e,t){const[i,...n]=t,s=XZ[i](e,...n);return Aae.reduce((l,c)=>c(l,e),s)}const eoe=Eae(qae);Object.fromEntries(Object.keys(Jt).map(e=>[e,(t,...i)=>eoe(t,[Jt[e],...i])]));function JW(e,t,i){return{config:i!=null&&i.config?{...RR,...i.config}:RR,encodings:Bae,layout:i!=null&&i.layout?{...NR,...i.layout}:NR,visId:e,name:t}}function jB(e,t,i,n){if(e.length===0)return JW(XW(),t,n);const s=[Bce(),..._ce()],l=s.filter(r=>r.analyticType==="dimension"),c=s.filter(r=>r.analyticType==="measure");return Xt(JW(XW(),t,n),"encodings",r=>({...r,dimensions:e.filter(a=>a.analyticType==="dimension").map(a=>({fid:a.fid,name:a.name||a.fid,basename:a.basename||a.name||a.fid,semanticType:a.semanticType,analyticType:a.analyticType,offset:a.offset})).concat(l),measures:e.filter(a=>a.analyticType==="measure").map(a=>({fid:a.fid,name:a.name||a.fid,basename:a.basename||a.name||a.fid,analyticType:a.analyticType,semanticType:a.semanticType,aggName:"sum",offset:a.offset})).concat(c)}))}function mf(e){var i;const t=JW(e.visId||XW(),e.name||"Chart");return t.config={...t.config,...e.config},t.encodings={...t.encodings,...e.encodings},t.layout={...t.layout,...e.layout,size:{...t.layout.size,...(i=e.layout)==null?void 0:i.size}},t}function toe(e){var i,n,s,l,c,r,a,u,o,d,b,h,p,Z,X,J,V;const t=JW(e.visId,e.name||"Chart");return t.config={...t.config,defaultAggregated:e.config.defaultAggregated,geoms:((i=e.config.geoms)==null?void 0:i.slice())??[],limit:e.config.limit,coordSystem:e.config.coordSystem,folds:e.config.folds},t.encodings={...t.encodings,dimensions:((n=e.encodings.dimensions)==null?void 0:n.slice())??[],measures:((s=e.encodings.measures)==null?void 0:s.slice())??[],rows:((l=e.encodings.rows)==null?void 0:l.slice())??[],columns:((c=e.encodings.columns)==null?void 0:c.slice())??[],color:((r=e.encodings.color)==null?void 0:r.slice())??[],opacity:((a=e.encodings.opacity)==null?void 0:a.slice())??[],size:((u=e.encodings.size)==null?void 0:u.slice())??[],shape:((o=e.encodings.shape)==null?void 0:o.slice())??[],theta:((d=e.encodings.theta)==null?void 0:d.slice())??[],radius:((b=e.encodings.radius)==null?void 0:b.slice())??[],longitude:((h=e.encodings.longitude)==null?void 0:h.slice())??[],latitude:((p=e.encodings.latitude)==null?void 0:p.slice())??[],geoId:((Z=e.encodings.geoId)==null?void 0:Z.slice())??[],details:((X=e.encodings.details)==null?void 0:X.slice())??[],filters:((J=e.encodings.filters)==null?void 0:J.slice())??[],text:((V=e.encodings.text)==null?void 0:V.slice())??[]},t.layout={...t.layout,background:e.config.background,format:e.config.format,interactiveScale:e.config.interactiveScale,resolve:e.config.resolve,showActions:e.config.showActions,stack:e.config.stack,zeroScale:e.config.zeroScale,size:{...t.layout.size,...e.config.size},colorPalette:e.config.colorPalette,geojson:e.config.geojson,geoKey:e.config.geoKey,geoUrl:e.config.geoUrl,primaryColor:e.config.primaryColor,scale:e.config.scale,scaleIncludeUnmatchedChoropleth:e.config.scaleIncludeUnmatchedChoropleth,showTableSummary:e.config.showTableSummary,useSvg:e.config.useSvg},t}function ioe(e){return"layout"in e?e:toe(_ae(Oae(e)))}function EB(e,t){return e.aggName==="expr"?e:{...e,aggName:t}}function PB(e,t,i,n,s,l){const c=n.find(r=>r.fid===Kc);if(s.find(r=>r.fid===wu)&&c){if(!(l!=null&&l.length))return[];const r=(l??[]).map(u=>i.find(o=>
39o.fid===u)).filter(Boolean).filter(u=>t||u.aggName!=="expr").map(u=>{if(t){const o=EB(u,c.aggName);return{name:Cf(o.name,o.aggName),fid:us(o.fid,o.aggName)}}return{name:u.name,fid:u.fid}}),a=new Set(r.map(u=>u.fid));return e.flatMap(u=>{const o=Object.fromEntries(Object.entries(u).filter(d=>!a.has(d[0])));return r.map(d=>({...o,[wu]:d.name,[t?us(Kc,c.aggName):Kc]:u[d.fid]}))})}return e}const noe=e=>{switch(e){case"choropleth":return["geoId","color","opacity","text","details"];case"poi":return["longitude","latitude","color","opacity","size","details"];case"arc":return["radius","theta","color","opacity","size","details","text"];case"bar":case"tick":case"line":case"area":case"boxplot":return["columns","rows","color","opacity","size","details","text"];case"text":return["columns","rows","color","opacity","size","text"];case"table":return["columns","rows"];default:return["columns","rows","color","opacity","size","details","shape"]}},UB=(e,t)=>{for(const i of e.params)i.type==="field"?t(i.value):i.type==="expression"?UB(i.value,t):i.type==="sql"?_B(i.value).forEach(t):i.type==="map"?(t(i.value.x),t(i.value.y)):i.type==="newmap"&&i.value.facets.flatMap(n=>
39n.dimensions).forEach(n=>t(n.fid))},CR=(e,t)=>{const i=new Map;return e.forEach(n=>i.set(t(n),n)),[...i.values()]},TR=(e,t)=>{const i=new Set(t);let n=e.filter(c=>i.has(c.key)),s=n.slice(),l=e.filter(c=>!i.has(c.key));for(;s.length&&l.length;){const c=new Set;for(const u of s)UB(u.expression,o=>c.add(o));const r=l.filter(u=>c.has(u.key));n=e.filter(u=>c.has(u.key)).concat(n.filter(u=>!c.has(u.key))),s=r,l=l.filter(u=>!c.has(u.key))}return n},soe=e=>{const t=Oce(e),i=e.rule;return i.type==="one of"?{fid:t,rule:{type:"one of",value:[...i.value]}}:i.type==="temporal range"?{fid:t,rule:{type:"temporal range",value:i.value,offset:i.offset,format:i.format}}:i.type==="not in"?{fid:t,rule:{type:"not in",value:[...i.value]}}:i.type==="range"?{fid:t,rule:{type:"range",value:[i.value[0]?Number(i.value[0]):i.value[0],i.value[1]?Number(i.value[1]):i.value[1]]}}:i.type==="regexp"?{fid:t,rule:{type:"regexp",value:i.value,caseSensitive:i.caseSensitive}}:(console.error("unknown rule",i),{fid:t,rule:i})},$B=(e,t,i,n,s,l,c=[],r,a)=>{const u=i.find(R=>R.fid===wu)&&n.find(R=>R.fid===Kc),o=i.filter(R=>R.fid!==wu),d=n.filter(R=>R.fid!==Kc);if(u){const R=n.find(B=>B.fid===Kc).aggName,K=c.map(B=>t.find(_=>_.fid===B)).filter(Boolean).map(B=>EB(B,R));o.push(...K.filter(B=>(B==null?void 0:B.analyticType)==="dimension")),d.push(...K.filter(B=>(B==null?void 0:B.analyticType)==="measure"))}const b=new Set([...o,...d,...e].map(R=>R.fid));let h=null,p=null,Z=null,X=null,J=null,V=null;const g=R=>{const K=soe(R);return b.add(K.fid),K},I=e.filter(R=>!R.computed&&R.rule&&!R.enableAgg).map(g);I.length&&(h={type:"filter",filters:I});const v=TR(t.filter(R=>R.computed&&R.expression&&!(R.expression.op==="expr"&&R.aggName==="expr")).map(R=>({key:R.fid,expression:MR(R.expression,t,{timezoneDisplayOffset:a})})),[...b]);v.length&&(p={type:"transform",transform:v});const k=e.filter(R=>R.computed&&R.rule&&!R.enableAgg).map(g);k.length&&(Z={type:"filter",filters:k});const N=e.filter(R=>R.enableAgg&&R.aggName&&R.rule),C=TR(t.filter(R=>R.computed&&R.expression&&R.expression.op==="expr"&&R.aggName==="expr").map(R=>({key:R.fid,expression:MR(R.expression,t,{timezoneDisplayOffset:a})})),[...b]),f=d.filter(R=>R.aggName).map(R=>[R.fid,R.aggName]).concat(N.map(R=>[R.fid,R.aggName])).concat(C.map(R=>[R.expression.params[0].value,"expr"])),w=s&&(f.length||d.length===0&&o.length>0);return w?X={type:"view",query:[{op:"aggregate",groupBy:CR(o.map(R=>R.fid),R=>R),measures:CR(d.concat(N).map(R=>({field:R.fid,agg:R.aggName,asFieldKey:us(R.fid,R.aggName)})).concat(C.map(R=>({field:R.expression.params[0].value,agg:"expr",asFieldKey:R.key}))),R=>R.asFieldKey)}]}:X={type:"view",query:[{op:"raw",fields:[...new Set([...o,...d])].filter(R=>R.aggName!=="expr").map(R=>R.fid)}]},w&&o.length>0&&N.length>0&&(V={type:"filter",filters:N.map(g)}),l!=="none"&&r&&r!==-1&&(J={type:"sort",by:d.map(R=>w?us(R.fid,R.aggName):R.fid),sort:l}),[h,p,Z,X,V,J].filter(Boolean)},MR=(e,t,i)=>(e==null?void 0:e.op)==="expr"?{...e,params:[{type:"sql",value:OB(e.params.find(n=>n.type==="sql").value,t).trim()}]}:e.op==="dateTimeDrill"||e.op==="dateTimeFeature"?{...e,params:[...e.params,{type:"displayOffset",value:i.timezoneDisplayOffset??new Date().getTimezoneOffset()}]}:e.op==="paint"?{...e,params:e.params.map(n=>{if(n.type==="map"){const s={...n.value.dict,255:{name:""}};return{type:"map",value:{x:n.value.x,y:n.value.y,domainX:n.value.domainX,domainY:n.value.domainY,map:n.value.map,dict:Object.fromEntries(n.value.usedColor.map(l=>[l,{name:s[l].name}])),mapwidth:n.value.mapwidth}}}else if(n.type==="newmap"){const s={...n.value.dict,255:{name:""}},l=Array.from(new Set(n.value.usedColor.concat(1)));return{type:"newmap",value:{facets:n.value.facets.map(({dimensions:c,map:r})=>({dimensions:c,map:r})),dict:Object.fromEntries(l.map(c=>[c,{name:s[c].name}]))}}}else return n})}:e,QB=async(e,t,i)=>{const n=t.find(l=>l.type==="view");return n&&n.query.length===1&&n.query[0].op==="raw"&&n.query[0].fields.length===0?[]:await e({workflow:t,limit:i})};function loe({title:e,titleId:t,...i},n){return Q.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},i),e?Q.createElement("title",{id:t},e):null,Q.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}))}const DB=Q.forwardRef(loe);function coe({title:e,titleId:t,...i},n){return Q.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},i),e?Q.createElement("title",{id:t},e):null,Q.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}))}const AB=Q.forwardRef(coe);function qB(e){return e.isCollapsed||e.children.length===0?1:e.children.map(qB).reduce((t,i)=>t+i,0)}function e_(e,t,i,n,s,l,c,r){const a=qB(e),{isCollapsed:u}=e;if(i>t.length)return;const o=i>0?t[i-1]:void 0,d=(o==null?void 0:o.semanticType)==="temporal"?b=>yB(YB(r,o.offset)(b)):b=>`${b}`;if(n[n.length-1].push(re.createElement("td",{key:`${i}-${e.fieldKey}-${e.value}`,className:"bg-secondary text-secondary-foreground align-top whitespace-nowrap p-2 text-xs m-1 border",colSpan:u?e.height+1:1,rowSpan:u?Math.max(s,1):a
39*Math.max(s,1)},re.createElement("div",{className:"flex"},re.createElement("div",null,d(e.value)),e.height>0&&e.key!=="__total"&&c&&re.createElement(re.Fragment,null,u&&re.createElement(AB,{className:"w-3 ml-1 self-center cursor-pointer",onClick:()=>l(e)}),!u&&re.createElement(DB,{className:"w-3 ml-1 self-center cursor-pointer",onClick:()=>l(e)}))))),!u)for(let b=0;b<e.children.length;b++){const h=e.children[b];e_(h,t,i+1,n,s,l,c),b<e.children.length-1&&n.push([])}}const roe=e=>{const{data:t,dimsInRow:i,measInRow:n,onHeaderCollapse:s}=e,l=Q.useMemo(()=>{const c=[[]];if(e_(t,i,0,c,n.length,s,e.enableCollapse,e.displayOffset),c[0].shift(),n.length>0){const r=[];for(let a of c){r.push([...a,re.createElement("td",{key:`0-${n[0].fid}-${n[0].aggName}`,className:"bg-secondary text-secondary-foreground whitespace-nowrap p-2 text-xs m-1 border"},n[0].aggName,"(",n[0].name,")")]);for(let u=1;u<n.length;u++)r.push([re.createElement("td",{key:`${u}-${n[u].fid}-${n[u].aggName}`,className:"bg-secondary text-secondary-foreground whitespace-nowrap p-2 text-xs m-1 border"},n[u].aggName,"(",n[u].name,")")])}return r}return c},[t,i,n]);return re.createElement("thead",{className:"bg-secondary border"},l.map((c,r)=>re.createElement("tr",{className:"border",key:r},c)))};function h3(e){return e.isCollapsed||e.children.length===0?1:e.children.map(h3).reduce((t,i)=>t+i,0)}function t_(e,t,i,n,s,l,c,r){const a=h3(e),{isCollapsed:u}=e;if(i>t.length)return;const o=i>0?t[i-1]:void 0,d=(o==null?void 0:o.semanticType)==="temporal"?b=>yB(YB(r,o.offset)(b)):b=>`${b}`;if(n[i].push(re.createElement("td",{key:`${i}-${e.fieldKey}-${e.value}-${n[i].length}`,className:"bg-secondary text-secondary-foreground align-top whitespace-nowrap p-2 text-xs m-1 border",colSpan:u?Math.max(s,1):a*Math.max(s,1),rowSpan:u?e.height+1:1},re.createElement("div",{className:"flex"},re.createElement("div",null,d(e.value)),e.height>0&&e.key!=="__total"&&c&&re.createElement(re.Fragment,null,u&&re.createElement(AB,{className:"w-3 ml-1 self-center cursor-pointer",onClick:()=>l(e)}),!u&&re.createElement(DB,{className:"w-3 ml-1 self-center cursor-pointer",onClick:()=>l(e)}))))),!u)for(let b=0;b<e.children.length;b++){const h=e.children[b];t_(h,t,i+1,n,s,l,c,r)}}const aoe=e=>{const{data:t,dimsInCol:i,measInCol:n,onHeaderCollapse:s,onTopTreeHeaderRowNumChange:l}=e,c=Q.useMemo(()=>{const r=new Array(i.length+1).fill(0).map(()=>[]);t_(t,i,0,r,n.length,s,e.enableCollapse,e.displayOffset);const a=h3(t);return r.forEach((u,o)=>{const d=u.map(b=>re.isValidElement(b)?b.props.rowSpan:0);d.length>0&&d[0]>1&&d.every(b=>b===d[0])&&u.forEach((b,h)=>{if(re.isValidElement(b)){const p=re.cloneElement(b,{...b.props,rowSpan:1});r[o][h]=p}})}),r.push(new Array(a).fill(0).flatMap((u,o)=>n.map(d=>re.createElement("td",{key:`${r.length}-${d.fid}-${d.aggName}-${o}`,className:"bg-secondary text-secondary-foreground whitespace-nowrap p-2 text-xs m-1 border"},d.aggName,"(",d.name,")")))),r.shift(),r},[t,i,n]);return Q.useEffect(()=>{l(c.filter(r=>r.length>0).length)},[c]),re.createElement("thead",{className:"border bg-secondary"},c.map((r,a)=>re.createElement("tr",{className:`${(r==null?void 0:r.length)>0?"":"hidden"} border`,key:a},r)))};function Ld(e,t,i){const n=us(t.fid,t.aggName);return e[n]===void 0?"--":i(e[n])}const ooe=re.memo(e=>{const{matrix:t,meaInRows:i,meaInColumns:n,numberFormat:s}=e,l=Q.useMemo(()=>{const c=s?qu(s):r=>r.toLocaleString();return r=>typeof r!="number"?`${r}`:c(r)},[s]);return re.createElement("tbody",{className:"bg-background text-foreground border-r border-b"},t.map((c,r)=>i.length!==0?i.map((a,u)=>re.createElement("tr",{className:"divide-x divide-border",key:`${r}-${a.fid}-${a.aggName}`},c.flatMap((o,d)=>(o=o??{},n.length!==0?n.map((b,h)=>re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${d}-${a.fid}-${a.aggName}-${b.fid}-${b.aggName}`},Ld(o,a,l)," , ",Ld(o,b,l))):re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${d}-${a.fid}-${a.aggName}`},Ld(o,a,l)))))):re.createElement("tr",{className:"divide-x divide-border",key:r},c.flatMap((a,u)=>(a=a??{},i.length===0&&n.length!==0?n.map((o,d)=>re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${u}-${d}-${o.fid}-${o.aggName}`},Ld(a,o,l))):i.length===0&&n.length===0?re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${u}`},"True"):i.flatMap((o,d)=>re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${u}-${d}-${o.fid}-${o.aggName}`},n.flatMap((b,h)=>re.createElement("td",{className:"whitespace-nowrap p-2 text-xs",key:`${r}-${u}-${d}-${h}-${b.fid}-${b.aggName}`},Ld(a,o,l)," , ",Ld(a,b,l))))))))))},function(t,i){return JSON.stringify(t.matrix)===JSON.stringify(i.matrix
39)&&t.numberFormat===i.numberFormat});function uoe(e){const t=e.className;return re.createElement("svg",{className:`animate-spin ${t}`,viewBox:"0 0 24 24"},re.createElement("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),re.createElement("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}))}function i_(){return re.createElement("div",{className:"bg-black/10 opacity-50 absolute top-0 left-0 right-0 bottom-0 z-50 flex items-center justify-center"},re.createElement(uoe,{className:"text-primary w-4 h-4 mr-2"}),re.createElement("span",{className:"text-sm text-primary"},"Loading..."))}var KR;(function(e){e.vis="vis",e.data="data",e.chat="chat"})(KR||(KR={}));const doe="https://graphic-walker.kanaries.net/chartinfo.json",moe="https://graphic-walker.kanaries.net/tersespec_v1.json";function uh(e){return Object.fromEntries(e.map(t=>[t,t]))}uh(["accent","category10","category20","category20b","category20c","dark2","paired","pastel1","pastel2","set1","set2","set3","tableau10","tableau20"]),uh(["blues","tealblues","teals","greens","browns","oranges","reds","purples","warmgreys","greys"]),uh(["viridis","magma","inferno","plasma","cividis","turbo","bluegreen","bluepurple","goldgreen","goldorange","goldred","greenblue","orangered","purplebluegreen","purpleblue","purplered","redpurple","yellowgreenblue","yellowgreen","yelloworangebrown","yelloworangered","darkblue","darkgold","darkgreen","darkmulti","darkred","lightgreyred","lightgreyteal","lightmulti","lightorange","lighttealblue"]),uh(["blueorange","brownbluegreen","purplegreen","pinkyellowgreen","purpleorange","redblue","redgrey","redyellowblue","redyellowgreen","spectral"]),uh(["rainbow","sinebow"]);const BR=e=>Math.max(e,1);function n_({rows:e,columns:t,color:i,opacity:n,size:s,details:l=[],radius:c,shape:r,text:a,theta:u,interactiveScale:o,dataSource:d,layoutMode:b,width:h,height:p,defaultAggregated:Z,geomType:X,stack:J,scales:V,mediaTheme:g,vegaConfig:I,displayOffset:v}){const k=Z?A=>A??Et:A=>A?A.aggName==="expr"?Et:A:Et,N=e.map(k).filter(A=>A!==Et),C=t.map(k).filter(A=>A!==Et),f=k(N.length>0?N[N.length-1]:Et),w=k(C.length>0?C[C.length-1]:Et),x=N.filter(A=>A.analyticType==="dimension"),R=C.filter(A=>A.analyticType==="dimension"),K=N.filter(A=>A.analyticType==="measure"),B=C.filter(A=>A.analyticType==="measure"),_=K.length===0?x.slice(-1):K,j=B.length===0?R.slice(-1):B,U=N.slice(0,-1).filter(A=>A.analyticType==="dimension"),$=C.slice(0,-1).filter(A=>A.analyticType==="dimension"),te=U.length>0?U[U.length-1]:Et,E=$.length>0?$[$.length-1]:Et,ie=[...N,...C,i,n,s,...l].filter(A=>!!A).filter(A=>A.aggName!=="expr").map(A=>A.fid),ee={data:{values:d},params:X==="boxplot"?void 0:[{name:"geom",select:{type:"point",fields:ie.map(Zm)}}]};if(o&&ee.params&&ee.params.push({name:"grid",select:"interval",bind:"scales"}),_.length<=1&&j.length<=1){if(b!=="auto")if(te===Et&&E===Et)ee.autosize="fit",ee.width=h-5,ee.height=p-5;else{const se=te!==Et?new Set(d.map(de=>de[te.fid])).size:1,oe=E!==Et?new Set(d.map(de=>de[E.fid])).size:1;ee.width=Math.floor(h/oe),ee.height=Math.floor(p/se)}const A=fR({x:w,y:f,color:k(i),opacity:k(n),size:k(s),shape:k(r),theta:k(u),radius:k(c),text:k(a),row:te,column:E,xOffset:Et,yOffset:Et,details:l.map(k).filter(se=>se!==Et),defaultAggregated:Z,stack:J,geomType:X,displayOffset:v,dataSource:d,vegaConfig:I}),le=V?pR(V,A,d,g):A;ee.mark=le.mark,"encoding"in le&&(ee.encoding=le.encoding),"transform"in le&&le.transform.length>0&&(ee.transform=le.transform),ee.resolve||(ee.resolve={});let ne=I.resolve;for(let se in ne){let oe=ne[se]?"independent":"shared";ee.resolve.scale={...ee.resolve.scale,[se]:oe},Kf.POSITION_CHANNEL_CONFIG_LIST.includes(se)?ee.resolve.axis={...ee.resolve.axis,[se]:oe}:Kf.NON_POSITION_CHANNEL_CONFIG_LIST.includes(se)&&(ee.resolve.legend={...ee.resolve.legend,[se]:oe})}return[ee]}else{if(b!=="auto")if(te===Et&&E===Et)ee.width=Math.floor(h/j.length)-5,ee.height=Math.floor(p/_.length)-5;else{const ne=te!==Et?new Set(d.map(oe=>oe[te.fid])).size:1,se=E!==Et?new Set(d.map(oe=>oe[E.fid])).size:1;ee.width=Math.floor(h/j.length/se),ee.height=Math.floor(p/_.length/ne)}let A=0,le=new Array(_.length*j.length);for(let ne=0;ne<BR(_.length);ne++)for(let se=0;se<BR(j.length);se++,A++){const oe=se===j.length-1,de=ne==0,Je=fR({x:j[se]||Et,y:_[ne]||Et,color:k(i),opacity:k(n),size:k(s),shape:k(r),theta:k(u),radius:k(c),text:k(a),row:te,column:E,xOffset:Et,yOffset:Et,details:l,defaultAggregated:Z,stack:J,geomType:X,hasLegend:oe,hideLegend:!de,displayOffset:v,dataSource:d}),Ie=V?pR(V,Je,d,g):Je;let Ye={...ee};const Te={...Ye,...Ie};"params"in Ye&&(Te.params=Ye.params),le[A]=Te}return le}}function boe(e){return[...e.dimensions,...e.measures]}function hoe(e,t){return noe(t).flatMap(i=>e[i]??[])}re.createContext(null);const s_=Q.createContext(async()=>[]);function foe(){return Q.useContext(s_)}const poe=function(t){const{data:i,visualConfig:n,layout:s,draggableFieldState:l}=t,c=foe(),r=Lp(),[a,u]=Q.useState(null),[o,d]=Q.useState(null),[b,h]=
39Q.useState([]),[p,Z]=Q.useState(!1),X=!t.disableCollapse,[J,V]=Q.useState({}),g=Q.useCallback(E=>{const{uniqueKey:ie,height:ee}=E;ee<1||V(A=>{const le={...A};return Object.entries(le).forEach(([ne,se])=>{ne.startsWith(ie)&&ne.length>ie.length&&delete le[ne]}),le[ie]?delete le[ie]:le[ie]=E.path,le})},[]),{rows:I,columns:v}=l,{defaultAggregated:k,folds:N}=n,{showTableSummary:C}=s,f=Q.useRef([]),[w,x]=Q.useState(0),R=Q.useMemo(()=>I.filter(E=>E.analyticType==="dimension"),[I]),K=Q.useMemo(()=>v.filter(E=>E.analyticType==="dimension"),[v]),B=Q.useMemo(()=>I.filter(E=>E.analyticType==="measure"),[I]),_=Q.useMemo(()=>v.filter(E=>E.analyticType==="measure"),[v]);Q.useEffect(()=>{if(!X){U();return}Object.keys(J).length>0?(V({}),C&&te()):j()},[i,X]),Q.useEffect(()=>{!X||C?U():j()},[X,J]),Q.useEffect(()=>{j()},[C]);const j=async()=>{await te(),U()},U=()=>{var ee;(ee=r.current)==null||ee.updateRenderStatus("rendering"),Z(!0);const E=j9(l),ie=jce(l);Fae(R,K,i,f.current,Object.keys(J),C,E!=="none"&&ie!=="none"?{fid:ie==="column"?`${B[0].fid}_${B[0].aggName}`:`${_[0].fid}_${_[0].aggName}`,mode:ie,type:E}:void 0).then(A=>{var oe;const{lt:le,tt:ne,metric:se}=A;lo.unstable_batchedUpdates(()=>{u(le),d(ne),h(se)}),(oe=r.current)==null||oe.updateRenderStatus("idle"),Z(!1)}).catch(A=>{var le;(le=r.current)==null||le.updateRenderStatus("error"),console.log(A),Z(!1)})},$=Q.useRef([]),te=()=>{var le;if(R.length===0&&K.length===0||i.length===0)return;let E=[],ie=[];if(C)E=R.map((ne,se)=>R.slice(0,se)),ie=K.map((ne,se)=>K.slice(0,se));else{const ne=Object.entries(J).map(([de,Je])=>Je[Je.length-1].key),se=R.filter(de=>ne.includes(de.fid)),oe=K.filter(de=>ne.includes(de.fid));E=se.map(de=>R.slice(0,R.indexOf(de)+1)),ie=oe.map(de=>K.slice(0,K.indexOf(de)+1))}E.push(R),ie.push(K);const ee=ie.flatMap(ne=>E.map(se=>[...ne,...se])).slice(0,-1);if($.current.length===ee.length&&$.current.every((ne,se)=>ne.length===ee[se].length&&ne.every((oe,de)=>eR(oe)===eR(ee[se][de]))))return;$.current=ee,Z(!0),(le=r.current)==null||le.updateRenderStatus("computing");const A=ee.map(ne=>{const se=l.filters,oe=boe(l),Je=hoe(l,"table").filter(Ve=>Ve.analyticType==="measure"),Ie=j9(l),{limit:Ye}=n,{timezoneDisplayOffset:Te}=n,$e=$B(se,oe,ne,Je,k,Ie,N??[],Ye>0?Ye:void 0,Te);return QB(c,$e,Ye>0?Ye:void 0).then(Ve=>PB(Ve,k,oe,Je,ne,N)).catch(Ve=>{var Me;return(Me=r.current)==null||Me.updateRenderStatus("error"),[]})});return new Promise((ne,se)=>{Promise.all(A).then(oe=>{Z(!1);const de=[...oe.flat()];f.current=de,ne()}).catch(oe=>{console.error(oe),Z(!1),se()})})};return re.createElement("div",{className:"relative"},p&&re.createElement(i_,null),re.createElement("div",{className:"flex"},re.createElement("table",{className:"border border-collapse"},re.createElement("thead",{className:"border"},new Array(Math.max(w-1,0)).fill(0).map((E,ie)=>re.createElement("tr",{className:"",key:ie},re.createElement("td",{className:"bg-secondary text-secondary-foreground p-2 m-1 text-xs border",colSpan:R.length+(B.length>0?1:0)},"_"))),w>0&&re.createElement("tr",{className:""},R.map(E=>re.createElement("td",{className:"bg-secondary text-secondary-foreground p-2 m-1 text-xs border whitespace-nowrap",colSpan:1},E.name)),B.length>0&&re.createElement("td",{className:"bg-secondary text-secondary-foreground p-2 m-1 text-xs border",colSpan:1},"_"))),a&&re.createElement(roe,{data:a,dimsInRow:R,measInRow:B,onHeaderCollapse:E=>g(E),enableCollapse:X,displayOffset:n.timezoneDisplayOffset})),re.createElement("table",{className:"border border-collapse"},o&&re.createElement(aoe,{data:o,dimsInCol:K,measInCol:_,onHeaderCollapse:E=>g(E),onTopTreeHeaderRowNumChange:E=>x(E),enableCollapse:X,displayOffset:n.timezoneDisplayOffset}),b&&re.createElement(ooe,{matrix:b,meaInColumns:_,meaInRows:B,numberFormat:s.format.numberFormat||""}))))},yoe=/("(?:[^\\"]|\\.)*")|[:,]/g;function Vx(e,t={}){const i=JSON.stringify([1],void 0,t.indent===void 0?2:t.indent).slice(2,-3),n=i===""?1/0:t.maxLength===void 0?80:t.maxLength;let{replacer:s}=t;return function l(c,r,a){c&&typeof c.toJSON=="function"&&(c=c.toJSON());const u=JSON.stringify(c,s);if(u===void 0)return u;const o=n-r.length-a;if(u.length<=o){const d=u.replace(yoe,(b,h)=>h||`${b} `);if(d.length<=o)return d}if(s!=null&&(c=JSON.parse(u),s=void 0),typeof c=="object"&&c!==null){const d=r+i,b=[];let h=0,p,Z;if(Array.isArray(c)){p="[",Z="]";const{length:X}=c;for(;h<X;h++)b.push(l(c[h],d,h===X-1?0:1)||"null")}else{p="{",Z="}";const X=Object.keys(c),{length:J}=X;for(;h<J;h++){const V=X[h],g=`${JSON.stringify(V)}: `,I=l(c[V],d,g.length+(h===J-1?0:1));
39I!==void 0&&b.push(g+I)}}if(b.length>0)return[p,i+b.join(`, 40${d}`),Z].join(` 41${r}`)}return u}(e,"",0)}function Ws(e,t,i){return e.fields=t||[],e.fname=i,e}function Zi(e){return e==null?null:e.fname}function Wn(e){return e==null?null:e.fields}function l_(e){return e.length===1?Zoe(e[0]):Woe(e)}const Zoe=e=>function(t){return t[e]},Woe=e=>{const t=e.length;return function(i){for(let n=0;n<t;++n)i=i[e[n]];return i}};function me(e){throw Error(e)}function lr(e){const t=[],i=e.length;let n=null,s=0,l="",c,r,a;e=e+"";function u(){t.push(l+e.substring(c,r)),l="",c=r+1}for(c=r=0;r<i;++r)if(a=e[r],a==="\\")l+=e.substring(c,r++),c=r;else if(a===n)u(),n=null,s=-1;else{if(n)continue;c===s&&a==='"'||c===s&&a==="'"?(c=r+1,n=a):a==="."&&!s?r>c?u():c=r+1:a==="["?(r>c&&u(),s=c=r+1):a==="]"&&(s||me("Access path missing open bracket: "+e),s>0&&u(),s=0,c=r+1)}return s&&me("Access path missing closing bracket: "+e),n&&me("Access path missing closing quote: "+e),r>c&&(r++,u()),t}function ol(e,t,i){const n=lr(e);return e=n.length===1?n[
vendor: 8,557 bytes, lines 41-42
410]:e,Ws((i&&i.get||l_)(n),[e],t||e)}const Tp=ol("id"),Vn=Ws(e=>e,[],"identity"),Sa=Ws(()=>0,[],"zero"),Jb=Ws(()=>1,[],"one"),ul=Ws(()=>!0,[],"true"),ga=Ws(()=>!1,[],"false"),f3=new Set(Object.getOwnPropertyNames(Object.prototype));function Xoe(e,t,i){const n=[t].concat([].slice.call(i));console[e].apply(console,n)}const c_=0,p3=1,y3=2,r_=3,a_=4;function Z3(e,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Xoe,n=e||c_;return{level(s){return arguments.length?(n=+s,this):n},error(){return n>=p3&&i(t||"error","ERROR",arguments),this},warn(){return n>=y3&&i(t||"warn","WARN",arguments),this},info(){return n>=r_&&i(t||"log","INFO",arguments),this},debug(){return n>=a_&&i(t||"log","DEBUG",arguments),this}}}var fe=Array.isArray;function we(e){return e===Object(e)}const _R=e=>e!=="__proto__";function xb(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return t.reduce((n,s)=>{for(const l in s)if(l==="signals")n.signals=Joe(n.signals,s.signals);else{const c=l==="legend"?{layout:1}:l==="style"?!0:null;Yb(n,l,s[l],c)}return n},{})}function Yb(e,t,i,n){if(!_R(t))return;let s,l;if(we(i)&&!fe(i)){l=we(e[t])?e[t]:e[t]={};for(s in i)n&&(n===!0||n[s])?Yb(l,s,i[s]):_R(s)&&(l[s]=i[s])}else e[t]=i}function Joe(e,t){if(e==null)return t;const i={},n=[];function s(l){i[l.name]||(i[l.name]=1,n.push(l))}return t.forEach(s),e.forEach(s),n}function Zt(e){return e[e.length-1]}function yn(e){return e==null||e===""?null:+e}const o_=e=>t=>e*Math.exp(t),u_=e=>t=>Math.log(e*t),d_=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),m_=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,xW=e=>t=>t<0?-Math.pow(-t,e):Math.pow(t,e);function Z2(e,t,i,n){const s=i(e[0]),l=i(Zt(e)),c=(l-s)*t;return[n(s-c),n(l-c)]}function b_(e,t){return Z2(e,t,yn,Vn)}function h_(e,t){var i=Math.sign(e[0]);return Z2(e,t,u_(i),o_(i))}function f_(e,t,i){return Z2(e,t,xW(i),xW(1/i))}function p_(e,t,i){return Z2(e,t,d_(i),m_(i))}function W2(e,t,i,n,s){const l=n(e[0]),c=n(Zt(e)),r=t!=null?n(t):(l+c)/2;return[s(r+(l-r)*i),s(r+(c-r)*i)]}function W3(e,t,i){return W2(e,t,i,yn,Vn)}function X3(e,t,i){const n=Math.sign(e[0]);return W2(e,t,i,u_(n),o_(n))}function YW(e,t,i,n){return W2(e,t,i,xW(n),xW(1/n))}function J3(e,t,i,n){return W2(e,t,i,d_(n),m_(n))}function y_(e){return 1+~~(new Date(e).getMonth()/3)}function Z_(e){return 1+~~(new Date(e).getUTCMonth()/3)}function Ne(e){return e!=null?fe(e)?e:[e]:[]}function W_(e,t,i){let n=e[0],s=e[1],l;return s<n&&(l=s,s=n,n=l),l=s-n,l>=i-t?[t,i]:[n=Math.min(Math.max(n,t),i-l),n+l]}function ct(e){return typeof e=="function"}const xoe="descending";function x3(e,t,i){i=i||{},t=Ne(t)||[];const n=[],s=[],l={},c=i.comparator||Yoe;return Ne(e).forEach((r,a)=>{r!=null&&(n.push(t[a]===xoe?-1:1),s.push(r=ct(r)?r:ol(r,null,i)),(Wn(r)||[]).forEach(u=>l[u]=1))}),s.length===0?null:Ws(c(s,n),Object.keys(l))}const Gb=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,(e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0),Yoe=(e,t)=>e.length===1?Goe(e[0],t[0]):Voe(e,t,e.length),Goe=(e,t)=>function(i,n){return Gb(e(i),e(n))*t},Voe=(e,t,i)=>(t.push(0),function(n,s){let l,c=0,r=-1;for(;c===0&&++r<i;)l=e[r],c=Gb(l(n),l(s));return c*t[r]});function In(e){return ct(e)?e:()=>e}function Y3(e,t){let i;return n=>{i&&clearTimeout(i),i=setTimeout(()=>(t(n),i=null),e)}}function lt(e){for(let t,i,n=1,s=arguments.length;n<s;++n){t=arguments[n];for(i in t)e[i]=t[i]}return e}function Qc(e,t){let i=0,n,s,l,c;if(e&&(n=e.length))if(t==null){for(s=e[i];i<n&&(s==null||s!==s);s=e[++i]);for(l=c=s;i<n;++i)s=e[i],s!=null&&(s<l&&(l=s),s>c&&(c=s))}else{for(s=t(e[i]);i<n&&(s==null||s!==s);s=t(e[++i]));for(l=c=s;i<n;++i)s=t(e[i]),s!=null&&(s<l&&(l=s),s>c&&(c=s))}return[l,c]}function X_(e,t){const i=e.length;let n=-1,s,l,c,r,a;if(t==null){for(;++n<i;)if(l=e[n],l!=null&&l>=l){s=c=l;break}if(n===i)return[-1,-1];for(r=a=n;++n<i;)l=e[n],l!=null&&(s>l&&(s=l,r=n),c<l&&(c=l,a=n))}else{for(;++n<i;)if(l=t(e[n],n,e),l!=null&&l>=l){s=c=l;break}if(n===i)return[-1,-1];for(r=a=n;++n<i;)l=t(e[n],n,e),l!=null&&(s>l&&(s=l,r=n),c<l&&(c=l,a=n))}return[r,a]}function Re(e,t){return Object.hasOwn(e,t)}const Wy={};function Vb(e){let t={},i;function n(l){return Re(t,l)&&t[l]!==Wy}const s={size:0,empty:0,object:t,has:n,get(l){return n(l)?t[l]:void 0},set(l,c){return n(l)||(++s.size,t[l]===Wy&&--s.empty),t[l]=c,this},delete(l){return n(l)&&(--s.size,++s.empty,t[l]=Wy),this},clear(){s.size=s.empty=0,s.object=t={}},test(l){return arguments.length?(i=l,s):i},clean(){const l={};let c=0;for(const r in t){const a=t[r];a!==Wy&&(!i||!i(a))&&(l[r]=a,++c)}s.size=c,s.empty=0,s.object=t=l}};return e&&Object.keys(e).forEach(l=>{s.set(l,e[l])}),s}function J_(e,t,i,n,s,l){if(!i&&i!==0)return l;const c=+i;let r=e[0],a=Zt(e),u;a<r&&(u=r,r=a,a=u),u=Math.abs(t-r);const o=Math.abs(a-t);return u<o&&u<=c?n:o<=c?s:l}function ge(e,t,i){const n=e.prototype=Object.create(t.prototype);return Object.defineProperty(n,"constructor",{value:e,writable:!0,enumerable:!0,configurable:!0}),lt(n,i)}function sm(e,t,i,n){let s=t[0],l=t[t.length-1],c;return s>l&&(c=s,s=l,l=c),i=i===void 0||i,n=n===void 0||n,(i?s<=e:s<e)&&(n?e<=l:e<l)}function Vo(e){return typeof e=="boolean"}function qa(e){return Object.prototype.toString.call(e)==="[object Date]"}function x_(e){return e&&ct(e[Symbol.iterator])}function zt(e){return typeof e=="number"}function G3(e){return Object.prototype.toString.call(e)==="[object RegExp]"}function He(e){return typeof e=="string"}function V3(e,t,i){e&&(e=t?Ne(e).map(r=>r.replace(/\\(.)/g,"$1")):Ne(e));const n=e&&e.length,s=i&&i.get||l_,l=r=>s(t?[r]:lr(r));let c;if(!n)c=function(){return""};else if(n===1){const r=l(e[0]);c=function(a){return""+r(a)}}else{const r=e.map(l);c=function(a){let u=""+r[0](a),o=0;for(;++o<n;)u+="|"+r[o](a);return u}}return Ws(c,e,"key")}function Y_(e,t){const i=e[0],n=Zt(e),s=+t;return s?s===1?n:i+s*(n-i):i}const Ioe=1e4;function G_(e){e=+e||Ioe;let t,i,n;const s=()=>{t={},i={},n=0},l=(c,r)=>(++n>e&&(i=t,t={},n=1),t[c]=r);return s(),{clear:s,has:c=>Re(t,c)||Re(i,c),get:c=>Re(t,c)?t[c]:Re(i,c)?l(c,i[c]):void 0,set:(c,r)=>Re(t,c)?t[c]=r:l(c,r)}}function V_(e,t,i,n){const s=t.length,l=i.length;if(!l)return t;if(!s)return i;const c=n||new t.constructor(s+l);let r=0,a=0,u=0;for(;r<s&&a<l;++u)c[u]=e(t[r],i[a])>0?i[a++]:t[r++];for(;r<s;++r,++u)c[u]=t[r];for(;a<l;++a,++u)c[u]=i[a];return c}function Lh(e,t){let i="";for(;--t>=0;)i+=e;return i}function I_(e,t,i,n){const s=i||" ",l=e+"",c=t-l.length;return c<=0?l:n==="left"?Lh(s,c)+l:n==="center"?Lh(s,~~(c/2))+l+Lh(s,Math.ceil(c/2)):l+Lh(s,c)}function Mp(e){return e&&Zt(e)-e[0]||0}function Ge(e){return fe(e)?"["+e.map(Ge)+"]":we(e)||He(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}function I3(e){return e==null||e===""?null:!e||e==="false"||e==="0"?!1:!!e}const goe=e=>zt(e)||qa(e)?e:Date.parse(e);function g3(e,t){return t=t||goe,e==null||e===""?null:t(e)}function v3(e){return e==null||e===""?null:e+""}function _l(e){const t={},i=e.length;for(let n=0;n<i;++n)t[e[n]]=!0;return t}function g_(e,t,i,n){const s=n??"â¦",l=e+"",c=l.length,r=Math.max(0,t-s.length);return c<=t?l:i==="left"?s+l.slice(c-r):i==="center"?l.slice(0,Math.ceil(r/2))+s+l.slice(c-~~(r/2)):l.slice(0,r)+s}function Ha(e,t,i){if(e)if(t){const n=e.length;for(let s=0;s<n;++s){const l=t(e[s]);l&&i(l,s,e)}}else e.forEach(i)}var OR={},Ix={},gx=34,dh=10,vx=13;function v_(e){return new Function("d","return {"+e.map(function(t,i){return JSON.stringify(t)+": d["+i+'] || ""'}).join(",")+"}")}function voe(e,t){var i=v_(e);return function(n,s){return t(i(n),s,e)}}function jR(e){var t=Object.create(null),i=[];return e.forEach(function(n){for(var s in n)s in t||i.push(t[s]=s)}),i}function es(e,t){var i=e+"",n=i.length;return n<t?new Array(t-n+1).join(0)+i:i}function zoe(e){return e<0?"-"+es(-e,6):e>9999?"+"+es(e,6):es(e,4)}function woe(e){var t=e.getUTCHours(),i=e.getUTCMinutes(),n=e.getUTCSeconds(),s=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":zoe(e.getUTCFullYear())+"-"+es(e.getUTCMonth()+1,2)+"-"+es(e.getUTCDate(),2)+(s?"T"+es(t,2)+":"+es(i,2)+":"+es(n,2)+"."+es(s,3)+"Z":n?"T"+es(t,2)+":"+es(i,2)+":"+es(n,2)+"Z":i||t?"T"+es(t,2)+":"+es(i,2)+"Z":"")}function Hoe(e){var t=new RegExp('["'+e+` 42\r]`),i=e.charCodeAt(0);function n(d,b){var h,p,Z=s(d,function(X,J){if(h)return h(X,J-1);p=X,h=b?voe(X,b):v_(X)});return Z.columns=p||[],Z}function s(d,b){var h=[],p=d.length,Z=0,X=0,J,V=p<=0,g=!1;d.charCodeAt(p-1)===dh&&--p,d.charCodeAt(p-1)===vx&&--p;function I(){if(V)return Ix;if(g)return g=!1,OR;var k,N=Z,C;
42if(d.charCodeAt(N)===gx){for(;Z++<p&&d.charCodeAt(Z)!==gx||d.charCodeAt(++Z)===gx;);return(k=Z)>=p?V=!0:(C=d.charCodeAt(Z++))===dh?g=!0:C===vx&&(g=!0,d.charCodeAt(Z)===dh&&++Z),d.slice(N+1,k-1).replace(/""/g,'"')}for(;Z<p;){if((C=d.charCodeAt(k=Z++))===dh)g=!0;else if(C===vx)g=!0,d.charCodeAt(Z)===dh&&++Z;else if(C!==i)continue;return d.slice(N,k)}return V=!0,d.slice(N,p)}for(;(J=I())!==Ix;){for(var v=[];J!==OR&&J!==Ix;)v.push(J),J=I();b&&(v=b(v,X++))==null||h.push(v)}return h}function l(d,b){return d.map(function(h){return b.map(function(p){return o(h[p])}).join(e)})}function c(d,b){return b==null&&(b=jR(d)),[b.map(o).join(e)].concat(l(d,b)).join(` 43`)}function r(d,b){return b==null&&(b=jR(d)),l(d,b).join(` 44`)}function a(d){return d.map(u).join(` 45`)}function u(d){return d.map(o).join(e)}function o(d){return d==null?"":d instanceof Date?woe(d):t.test(d+="")?'"'+d.replace(/"/g,'""')+'"':d}return{parse:n,parseRows:s,format:c,formatBody:r,formatRows:a,formatRow:u,formatValue:o}}const rn="year",ds="quarter",Xn="month",ki="week",ms="date",fn="day",Dc="dayofyear",Ts="hours",Ms="minutes",dl="seconds",Ol="milliseconds",z3=[rn,ds,Xn,ki,ms,fn,Dc,Ts,Ms,dl,Ol],zx=z3.reduce((e,t,i)=>(e[t]=1+i,e),{});function w3(e){const t=Ne(e).slice(),i={};return t.length||me("Missing time unit."),t.forEach(s=>{Re(zx,s)?i[s]=1:me(`Invalid time unit: ${s}.`)}),(i[ki]||i[fn]?1:0)+(i[ds]||i[Xn]||i[ms]?1:0)+(i[Dc]?1:0)>1&&me(`Incompatible time units: ${e}`),t.sort((s,l)=>zx[s]-zx[l]),t}const Noe={[rn]:"%Y ",[ds]:"Q%q ",[Xn]:"%b ",[ms]:"%d ",[ki]:"W%U ",[fn]:"%a ",[Dc]:"%j ",[Ts]:"%H:00",[Ms]:"00:%M",[dl]:":%S",[Ol]:".%L",[`${rn}-${Xn}`]:"%Y-%m ",[`${rn}-${Xn}-${ms}`]:"%Y-%m-%d ",[`${Ts}-${Ms}`]:"%H:%M"};function z_(e,t){const i=lt({},Noe,t),n=w3(e),s=n.length;let l="",c=0,r,a;for(c=0;c<s;)for(r=n.length;r>c;--r)if(a=n.slice(c,r).join("-"),i[a]!=null){l+=i[a],c=r;break}return l.trim()}const ru=new Date;function H3(e){return ru.setFullYear(e),ru.setMonth(0),ru.setDate(1),ru.setHours(0,0,0,0),ru}function w_(e){return N_(new Date(e))}function H_(e){return lG(new Date(e))}function N_(e){return pm.count(H3(e.getFullYear())-1,e)}function lG(e){return QZ.count(H3(e.getFullYear())-1,e)}function cG(e){return H3(e).getDay()}function Roe(e,t,i,n,s,l,c){if(0<=e&&e<100){const r=new Date(-1,t,i,n,s,l,c);return r.setFullYear(e),r}return new Date(e,t,i,n,s,l,c)}function R_(e){return F_(new Date(e))}function k_(e){return rG(new Date(e))}function F_(e){const t=Date.UTC(e.getUTCFullYear(),0,1);return fZ.count(t-1,e)}function rG(e){const t=Date.UTC(e.getUTCFullYear(),0,1);return AZ.count(t-1,e)}function aG(e){return ru.setTime(Date.UTC(e,0,1)),ru.getUTCDay()}function koe(e,t,i,n,s,l,c){if(0<=e&&e<100){const r=new Date(Date.UTC(-1,t,i,n,s,l,c));return r.setUTCFullYear(i.y),r}return new Date(Date.UTC(e,t,i,n,s,l,c))}function S_(e,t,i,n,s){const l=t||1,c=Zt(e),r=(J,V,g)=>(g=g||J,Foe(i[g],n[g],J===c&&l,V)),a=new Date,u=_l(e),o=u[rn]?r(rn):In(2012),d=u[Xn]?r(Xn):u[ds]?r(ds):Sa,b=u[ki]&&u[fn]?r(fn,1,ki+fn):u[ki]?r(ki,1):u[fn]?r(fn,1):u[ms]?r(ms,1):u[Dc]?r(Dc,1):Jb,h=u[Ts]?r(Ts):Sa,p=u[Ms]?r(Ms):Sa,Z=u[dl]?r(dl):Sa,X=u[Ol]?r(Ol):Sa;return function(J){a.setTime(+J);const V=o(a);return s(V,d(a),b(a,V),h(a),p(a),Z(a),X(a))}}function Foe(e,t,i,n){const s=i<=1?e:n?(l,c)=>n+i*Math.floor((e(l,c)-n)/i):(l,c)=>i*Math.floor(e(l,c)/i);return t?(l,c)=>t(s(l,c),c):s}function km(e,t,i){return t+e*7-(i+6)%7}const Soe={[rn]:e=>e.getFullYear(),[ds]:e=>Math.floor(e.getMonth()/3),[Xn]:e=>e.getMonth(),[ms]:e=>e.getDate(),[Ts]:e=>e.getHours(),[Ms]:e=>e.getMinutes(),[dl]:e=>e.getSeconds(),[Ol]:e=>e.getMilliseconds(),[Dc]:e=>N_(e),[ki]:e=>lG(e),[ki+fn]:(e,t)=>km(lG(e),e.getDay(),cG(t)),[fn]:(e,t)=>km(1,e.getDay(),cG(t))},Loe={[ds]:e=>3*e,[ki]:(e,t)=>km(e,0,cG(t))};function L_(e,t){return S_(e,t||1,Soe,Loe,Roe)}const Coe={[rn]:e=>e.getUTCFullYear(),[ds]:e=>Math.floor(e.getUTCMonth()/3),[Xn]:e=>e.getUTCMonth(),[ms]:e=>e.getUTCDate(),[Ts]:e=>e.getUTCHours(),[Ms]:e=>e.getUTCMinutes(),[dl]:e=>e.getUTCSeconds(),[Ol]:e=>e.getUTCMilliseconds(),[Dc]:e=>F_(e),[ki]:e=>rG(e),[fn]:(e,t)=>km(1,e.getUTCDay(),aG(t)),[ki+fn]:(e,t)=>km(rG(e),e.getUTCDay(),aG(t))},Toe={[ds]:e=>3*e,[ki]:(e,t)=>km(e,0,aG(t))};function C_(e,t){return S_(e,t||1,Coe,Toe,koe)}
vendor: 74,384 bytes, lines 45-46
45const Moe={[rn]:FI,[ds]:DZ.every(3),[Xn]:DZ,[ki]:QZ,[ms]:pm,[fn]:pm,[Dc]:pm,[Ts]:kI,[Ms]:RI,[dl]:fb,[Ol]:lM},Koe={[rn]:CI,[ds]:qZ.every(3),[Xn]:qZ,[ki]:AZ,[ms]:fZ,[fn]:fZ,[Dc]:fZ,[Ts]:LI,[Ms]:SI,[dl]:fb,[Ol]:lM};function Ib(e){return Moe[e]}function gb(e){return Koe[e]}function T_(e,t,i){return e?e.offset(t,i):void 0}function M_(e,t,i){return T_(Ib(e),t,i)}function K_(e,t,i){return T_(gb(e),t,i)}function B_(e,t,i,n){return e?e.range(t,i,n):void 0}function __(e,t,i,n){return B_(Ib(e),t,i,n)}function O_(e,t,i,n){return B_(gb(e),t,i,n)}const Ch=1e3,Th=Ch*60,Mh=Th*60,X2=Mh*24,Boe=X2*7,ER=X2*30,oG=X2*365,j_=[rn,Xn,ms,Ts,Ms,dl,Ol],Kh=j_.slice(0,-1),Bh=Kh.slice(0,-1),_h=Bh.slice(0,-1),_oe=_h.slice(0,-1),Ooe=[rn,ki],PR=[rn,Xn],E_=[rn],mh=[[Kh,1,Ch],[Kh,5,5*Ch],[Kh,15,15*Ch],[Kh,30,30*Ch],[Bh,1,Th],[Bh,5,5*Th],[Bh,15,15*Th],[Bh,30,30*Th],[_h,1,Mh],[_h,3,3*Mh],[_h,6,6*Mh],[_h,12,12*Mh],[_oe,1,X2],[Ooe,1,Boe],[PR,1,ER],[PR,3,3*ER],[E_,1,oG]];function P_(e){const t=e.extent,i=e.maxbins||40,n=Math.abs(Mp(t))/i;let s=DX(r=>r[2]).right(mh,n),l,c;return s===mh.length?(l=E_,c=Hf(t[0]/oG,t[1]/oG,i)):s?(s=mh[n/mh[s-1][2]<mh[s][2]/n?s-1:s],l=s[0],c=s[1]):(l=j_,c=Math.max(Hf(t[0],t[1],i),1)),{units:l,step:c}}function Oh(e){const t={};return i=>t[i]||(t[i]=e(i))}function joe(e,t){return i=>{const n=e(i),s=n.indexOf(t);if(s<0)return n;let l=Eoe(n,s);const c=l<n.length?n.slice(l):"";for(;--l>s;)if(n[l]!=="0"){++l;break}return n.slice(0,l)+c}}function Eoe(e,t){let i=e.lastIndexOf("e"),n;if(i>0)return i;for(i=e.length;--i>t;)if(n=e.charCodeAt(i),n>=48&&n<=57)return i+1}function U_(e){const t=Oh(e.format),i=e.formatPrefix;return{format:t,formatPrefix:i,formatFloat(n){const s=oN(n||",");if(s.precision==null){switch(s.precision=12,s.type){case"%":s.precision-=2;break;case"e":s.precision-=1;break}return joe(t(s),t(".1f")(1)[1])}else return t(s)},formatSpan(n,s,l,c){c=oN(c??",f");const r=Hf(n,s,l),a=Math.max(Math.abs(n),Math.abs(s));let u;if(c.precision==null)switch(c.type){case"s":return isNaN(u=Xte(r,a))||(c.precision=u),i(c,a);case"":case"e":case"g":case"p":case"r":{isNaN(u=Wte(r,a))||(c.precision=u-(c.type==="e"));break}case"f":case"%":{isNaN(u=Zte(r))||(c.precision=u-(c.type==="%")*2);break}}return t(c)}}}let uG;$_();function $_(){return uG=U_({format:qu,formatPrefix:Jte})}function Q_(e){return U_(pte(e))}function GW(e){return arguments.length?uG=Q_(e):uG}function UR(e,t,i){i=i||{},we(i)||me(`Invalid time multi-format specifier: ${i}`);const n=t(dl),s=t(Ms),l=t(Ts),c=t(ms),r=t(ki),a=t(Xn),u=t(ds),o=t(rn),d=e(i[Ol]||".%L"),b=e(i[dl]||":%S"),h=e(i[Ms]||"%I:%M"),p=e(i[Ts]||"%I %p"),Z=e(i[ms]||i[fn]||"%a %d"),X=e(i[ki]||"%b %d"),J=e(i[Xn]||"%B"),V=e(i[ds]||"%B"),g=e(i[rn]||"%Y");return I=>(n(I)<I?d:s(I)<I?b:l(I)<I?h:c(I)<I?p:a(I)<I?r(I)<I?Z:X:o(I)<I?u(I)<I?J:V:g)(I)}function D_(e){const t=Oh(e.format),i=Oh(e.utcFormat);return{timeFormat:n=>He(n)?t(n):UR(t,Ib,n),utcFormat:n=>He(n)?i(n):UR(i,gb,n),timeParse:Oh(e.parse),utcParse:Oh(e.utcParse)}}let dG;A_();function A_(){return dG=D_({format:NI,parse:Yte,utcFormat:AX,utcParse:xte})}function q_(e){return D_(yte(e))}function Bf(e){return arguments.length?dG=q_(e):dG}const mG=(e,t)=>lt({},e,t);function eO(e,t){const i=e?Q_(e):GW(),n=t?q_(t):Bf();return mG(i,n)}function N3(e,t){const i=arguments.length;return i&&i!==2&&me("defaultLocale expects either zero or two arguments."),i?mG(GW(e),Bf(t)):mG(GW(),Bf())}function Poe(){return $_(),A_(),N3()}const Uoe=/^(data:|([A-Za-z]+:)?\/\/)/,$oe=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Qoe=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,$R="file://";function Doe(e,t){return i=>({options:i||{},sanitize:qoe,load:Aoe,fileAccess:!1,file:eue(),http:iue(e)})}async function Aoe(e,t){const i=await this.sanitize(e,t),n=i.href;return i.localFile?this.file(n):this.http(n,t)}async function qoe(e,t){t=lt({},this.options,t);const i=this.fileAccess,n={href:null};let s,l,c;const r=$oe.test(e.replace(Qoe,""));(e==null||typeof e!="string"||!r)&&me("Sanitize failure, invalid URI: "+Ge(e));const a=Uoe.test(e);return(c=t.baseURL)&&!a&&(!e.startsWith("/")&&!c.endsWith("/")&&(e="/"+e),e=c+e),l=(s=e.startsWith($R))||t.mode==="file"||t.mode!=="http"&&!a&&i,s?e=e.slice($R.length):e.startsWith("//")&&(t.defaultProtocol==="file"?(e=e.slice(2),l=!0):e=(t.defaultProtocol||"http")+":"+e),Object.defineProperty(n,"localFile",{value:!!l}),n.href=e,t.target&&(n.target=t.target+""),t.rel&&(n.rel=t.rel+""),t.context==="image"&&t.crossOrigin&&(n.crossOrigin=t.crossOrigin+""),n}function eue(e){return tue}async function tue(){me("No file system access.")}function iue(e){return e?async function(t,i){const n=lt({},this.options.http,i),s=i&&i.response,l=await e(t,n);return l.ok?ct(l[s])?l[s]():l.text():me(l.status+""+l.statusText)}:nue}async function nue(){me("No HTTP fetch method available.")}const sue=e=>e!=null&&e===e,lue=e=>e==="true"||e==="false"||e===!0||e===!1,cue=e=>!Number.isNaN(Date.parse(e)),tO=e=>!Number.isNaN(+e)&&!(e instanceof Date),rue=e=>tO(e)&&Number.isInteger(+e),bG={boolean:I3,integer:yn,number:yn,date:g3,string:v3,unknown:Vn},Xy=[lue,rue,tO,cue],aue=["boolean","integer","number","date"];function iO(e,t){if(!e||!e.length)return"unknown";const i=e.length,n=Xy.length,s=Xy.map((l,c)=>c+1);for(let l=0,c=0,r,a;l<i;++l)for(a=t?e[l][t]:e[l],r=0;r<n;++r)if(s[r]&&sue(a)&&!Xy[r](a)&&(s[r]=0,++c,c===Xy.length))return"string";return aue[s.reduce((l,c)=>l===0?c:l,0)-1]}function nO(e,t){return t.reduce((i,n)=>(i[n]=iO(e,n),i),{})}function QR(e){const t=function(i,n){const s={delimiter:e};return R3(i,n?lt(n,s):s)};return t.responseType="text",t}function R3(e,t){return t.header&&(e=t.header.map(Ge).join(t.delimiter)+` 46`+e),Hoe(t.delimiter).parse(e+"")}R3.responseType="text";function oue(e){return typeof Buffer=="function"&&ct(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function k3(e,t){const i=t&&t.property?ol(t.property):Vn;return we(e)&&!oue(e)?uue(i(e),t):i(JSON.parse(e))}k3.responseType="json";function uue(e,t){return!fe(e)&&x_(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}const due={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function sO(e,t){let i,n,s,l;return e=k3(e,t),t&&t.feature?(i=NB,s=t.feature):t&&t.mesh?(i=Ore,s=t.mesh,l=due[t.filter]):me("Missing TopoJSON feature or mesh parameter."),n=(n=e.objects[s])?i(e,n,l):me("Invalid TopoJSON object: "+s),n&&n.features||[n]}sO.responseType="json";const JZ={dsv:R3,csv:QR(","),tsv:QR(" "),json:k3,topojson:sO};function F3(e,t){return arguments.length>1?(JZ[e]=t,this):Re(JZ,e)?JZ[e]:null}function lO(e){const t=F3(e);return t&&t.responseType||"text"}function cO(e,t,i,n){t=t||{};const s=F3(t.type||"json");return s||me("Unknown data format type: "+t.type),e=s(e,t),t.parse&&mue(e,t.parse,i,n),Re(e,"columns")&&delete e.columns,e}function mue(e,t,i,n){if(!e.length)return;const s=Bf();i=i||s.timeParse,n=n||s.utcParse;let l=e.columns||Object.keys(e[0]),c,r,a,u,o,d;t==="auto"&&(t=nO(e,l)),l=Object.keys(t);const b=l.map(h=>{const p=t[h];let Z,X;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return Z=p.split(/:(.+)?/,2),X=Z[1],(X[0]==="'"&&X[X.length-1]==="'"||X[0]==='"'&&X[X.length-1]==='"')&&(X=X.slice(1,-1)),(Z[0]==="utc"?n:i)(X);if(!bG[p])throw Error("Illegal format pattern: "+h+":"+p);return bG[p]});for(a=0,o=e.length,d=l.length;a<o;++a)for(c=e[a],u=0;u<d;++u)r=l[u],c[r]=b[u](c[r])}const J2=Doe(typeof fetch<"u"&&fetch);function x2(e){const t=e||Vn,i=[],n={};return i.add=s=>{const l=t(s);return n[l]||(n[l]=1,i.push(s)),i},i.remove=s=>{const l=t(s);if(n[l]){n[l]=0;const c=i.indexOf(s);c>=0&&i.splice(c,1)}return i},i}async function xZ(e,t){try{await t(e)}catch(i){e.error(i)}}const rO=Symbol("vega_id");let bue=1;function Y2(e){return!!(e&&Oe(e))}function Oe(e){return e[rO]}function aO(e,t){return e[rO]=t,e}function Rt(e){const t=e===Object(e)?e:{data:e};return Oe(t)?t:aO(t,bue++)}function S3(e){return G2(e,Rt({}))}function G2(e,t){for(const i in e)t[i]=e[i];return t}function oO(e,t){return aO(t,Oe(e))}function sd(e,t){return e?t?(i,n)=>e(i,n)||Oe(t(i))-Oe(t(n)):(i,n)=>e(i,n)||Oe(i)-Oe(n):null}function uO(e){return e&&e.constructor===ld}function ld(){const e=[],t=[],i=[],n=[],s=[];let l=null,c=!1;return{constructor:ld,insert(r){const a=Ne(r),u=a.length;for(let o=0;o<u;++o)e.push(a[o]);return this},remove(r){const a=ct(r)?n:t,u=Ne(r),o=u.length;for(let d=0;d<o;++d)a.push(u[d]);return this},modify(r,a,u){const o={field:a,value:In(u)};return ct(r)?(o.filter=r,s.push(o)):(o.tuple=r,i.push(o)),this},encode(r,a){return ct(r)?s.push({filter:r,field:a}):i.push({tuple:r,field:a}),this},clean(r){return l=r,this},reflow(){return c=!0,this},pulse(r,a){const u={},o={};let d,b,h,p,Z,X;for(d=0,b=a.length;d<b;++d)u[Oe(a[d])]=1;for(d=0,b=t.length;d<b;++d)Z=t[d],u[Oe(Z)]=-1;for(d=0,b=n.length;d<b;++d)p=n[d],a.forEach(V=>{p(V)&&(u[Oe(V)]=-1)});for(d=0,b=e.length;d<b;++d)Z=e[d],X=Oe(Z),u[X]?u[X]=1:r.add.push(Rt(e[d]));for(d=0,b=a.length;d<b;++d)Z=a[d],u[Oe(Z)]<0&&r.rem.push(Z);function J(V,g,I){I?V[g]=I(V):r.encode=g,c||(o[Oe(V)]=V)}for(d=0,b=i.length;d<b;++d)h=i[d],Z=h.tuple,p=h.field,X=u[Oe(Z)],X>0&&(J(Z,p,h.value),r.modifies(p));for(d=0,b=s.length;d<b;++d)h=s[d],p=h.filter,a.forEach(V=>{p(V)&&u[Oe(V)]>0&&J(V,h.field,h.value)}),r.modifies(h.field);if(c)r.mod=t.length||n.length?a.filter(V=>u[Oe(V)]>0):a.slice();else for(X in o)r.mod.push(o[X]);return(l||l==null&&(t.length||n.length))&&r.clean(!0),r}}}const YZ="_:mod:_";function V2(){Object.defineProperty(this,YZ,{writable:!0,value:{}})}V2.prototype={set(e,t,i,n){const s=this,l=s[e],c=s[YZ];return t!=null&&t>=0?(l[t]!==i||n)&&(l[t]=i,c[t+":"+e]=-1,c[e]=-1):(l!==i||n)&&(s[e]=i,c[e]=fe(i)?1+i.length:-1),s},modified(e,t){const i=this[YZ];if(arguments.length){if(fe(e)){for(let n=0;n<e.length;++n)if(i[e[n]])return!0;return!1}}else{for(const n in i)if(i[n])return!0;return!1}return t!=null&&t>=0?t+1<i[e]||!!i[t+":"+e]:!!i[e]},clear(){return this[YZ]={},this}};let hue=0;const fue="pulse",pue=new V2,yue=1,Zue=2;function Pt(e,t,i,n){this.id=++hue,this.value=e,this.stamp=-1,this.rank=-1,this.qrank=-1,this.flags=0,t&&(this._update=t),i&&this.parameters(i,n)}function DR(e){return function(t){const i=this.flags;return arguments.length===0?!!(i&e):(this.flags=t?i|e:i&~e,this)}}Pt.prototype={targets(){return this._targets||(this._targets=x2(Tp))},set(e){return this.value!==e?(this.value=e,1):0},skip:DR(yue),modified:DR(Zue),parameters(e,t,i){t=t!==!1;const n=this._argval=this._argval||new V2,s=this._argops=this._argops||[],l=[];let c,r,a,u;const o=(d,b,h)=>{h instanceof Pt?(h!==this&&(t&&h.targets().add(this),l.push(h)),s.push({op:h,name:d,index:b})):n.set(d,b,h)};for(c in e)if(r=e[c],c===fue)Ne(r).forEach(d=>{d instanceof Pt?d!==this&&(d.targets().add(this),l.push(d)):me("Pulse parameters must be operator instances.")}),this.source=r;else if(fe(r))for(n.set(c,-1,Array(a=r.length)),u=0;u<a;++u)o(c,u,r[u]);else o(c,-1,r);return this.marshall().clear(),i&&(s.initonly=!0),l},marshall(e){const t=this._argval||pue,i=this._argops;let n,s,l,c;if(i){const r=i.length;for(s=0;s<r;++s)n=i[s],l=n.op,c=l.modified()&&l.stamp===e,t.set(n.name,n.index,l.value,c);if(i.initonly){for(s=0;s<r;++s)n=i[s],n.op.targets().remove(this);this._argops=null,this._update=null}}return t},detach(){const e=this._argops;let t,i,n,s;if(e)for(t=0,i=e.length;t<i;++t)n=e[t],s=n.op,s._targets&&s._targets.remove(this);this.pulse=null,this.source=null},evaluate(e){const t=this._update;if(t){const i=this.marshall(e.stamp),n=t.call(this,i,e);if(i.clear(),n!==this.value)this.value=n;else if(!this.modified())return e.StopPropagation}},run(e){if(e.stamp<this.stamp)return e.StopPropagation;let t;return this.skip()?(this.skip(!1),t=0):t=this.evaluate(e),this.pulse=t||e}};function Wue(e,t,i,n){let s=1,l;return e instanceof Pt?l=e:e&&e.prototype instanceof Pt?l=new e:ct(e)?l=new Pt(null,e):(s=0,l=new Pt(e,t)),this.rank(l),s&&(n=i,i=t),i&&this.connect(l,l.parameters(i,n)),this.touch(l),l}function Xue(e,t){const i=e.rank,n=t.length;for(let s=0;s<n;++s)if(i<t[s].rank){this.rerank(e);return}}let Jue=0;function I2(e,t,i){this.id=++Jue,this.value=null,i&&(this.receive=i),e&&(this._filter=e),t&&(this._apply=t)}function va(e,t,i){return new I2(e,t,i)}I2.prototype={_filter:ul,_apply:Vn,targets(){return this._targets||(this._targets=x2(Tp))},consume(e){return arguments.length?(this._consume=!!e,this):!!this._consume},receive(e){if(this._filter(e)){const t=this.value=this._apply(e),i=this._targets,n=i?i.length:0;for(let s=0;s<n;++s)i[s].receive(t);this._consume&&(e.preventDefault(),e.stopPropagation())}},filter(e){const t=va(e);return this.targets().add(t),t},apply(e){const t=va(null,e);return this.targets().add(t),t},merge(){const e=va();this.targets().add(e);for(let t=0,i=arguments.length;t<i;++t)arguments[t].targets().add(e);return e},throttle(e){let t=-1;return this.filter(()=>{const i=Date.now();return i-t>e?(t=i,1):0})},debounce(e){const t=va();return this.targets().add(va(null,null,Y3(e,i=>{const n=i.dataflow;t.receive(i),n&&n.run&&n.run()}))),t},between(e,t){let i=!1;return e.targets().add(va(null,null,()=>i=!0)),t.targets().add(va(null,null,()=>i=!1)),this.filter(()=>i)},detach(){this._filter=ul,this._targets=null}};function xue(e,t,i,n){const s=this,l=va(i,n),c=function(u){u.dataflow=s;try{l.receive(u)}catch(o){s.error(o)}finally{s.run()}};let r;typeof e=="string"&&typeof document<"u"?r=document.querySelectorAll(e):r=Ne(e);const a=r.length;for(let u=0;u<a;++u)r[u].addEventListener(t,c);return l}function Yue(e,t){const i=this.locale();return cO(e,t,i.timeParse,i.utcParse)}function Gue(e,t,i){return t=this.parse(t,i),this.pulse(e,this.changeset().insert(t))}async function Vue(e,t){const i=this;let n=0,s;try{s=await i.loader().load(e,{context:"dataflow",response:lO(t&&t.type)});try{s=i.parse(s,t)}catch(l){n=-2,i.warn("Data ingestion failed",e,l)}}catch(l){n=-1,i.warn("Loading failed",e,l)}return{data:s,status:n}}async function Iue(e,t,i){const n=this,s=n._pending||gue(n);s.requests+=1;const l=await n.request(t,i);return n.pulse(e,n.changeset().remove(ul).insert(l.data||[])),s.done(),l}function gue(e){let t;const i=new Promise(n=>t=n);return i.requests=0,i.done=()=>{--i.requests===0&&(e._pending=null,t(e))},e._pending=i}const vue={skip:!0};function zue(e,t,i,n,s){return(e instanceof Pt?Hue:wue)(this,e,t,i,n,s),this}function wue(e,t,i,n,s,l){const c=lt({},l,vue);let r,a;ct(i)||(i=In(i)),n===void 0?r=u=>e.touch(i(u)):ct(n)?(a=new Pt(null,n,s,!1),r=u=>{a.evaluate(u);const o=i(u),d=a.value;uO(d)?e.pulse(o,d,l):e.update(o,d,c)}):r=u=>e.update(i(u),n,c),t.apply(r)}function Hue(e,t,i,n,s,l){if(n===void 0)t.targets().add(i);else{const c=l||{},r=new Pt(null,Nue(i,n),s,!1);r.modified(c.force),r.rank=t.rank,t.targets().add(r),i&&(r.skip(!0),r.value=i.value,r.targets().add(i),e.connect(i,[r]))}}function Nue(e,t){return t=ct(t)?t:In(t),e?function(i,n){const s=t(i,n);return e.skip()||(e.skip(s!==this.value).value=s),s}:t}function Rue(e){e.rank=++this._rank}function kue(e){const t=[e];let i,n,s;for(;t.length;)if(this.rank(i=t.pop()),n=i._targets)for(s=n.length;--s>=0;)t.push(i=n[s]),i===e&&me("Cycle detected in dataflow graph.")}const VW={},Vc=1,Na=2,zr=4,Fue=Vc|Na,AR=Vc|zr,Cd=Vc|Na|zr,qR=8,bh=16,ek=32,tk=64;function eo(e,t,i){this.dataflow=e,this.stamp=t??-1,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=i||null}function wx(e,t){const i=[];return Ha(e,t,n=>i.push(n)),i}function ik(e,t){const i={};return e.visit(t,n=>{i[Oe(n)]=1}),n=>i[Oe(n)]?null:n}function Jy(e,t){return e?(i,n)=>e(i,n)&&t(i,n):t}eo.prototype={StopPropagation:VW,ADD:Vc,REM:Na,MOD:zr,ADD_REM:Fue,ADD_MOD:AR,ALL:Cd,REFLOW:qR,SOURCE:bh,NO_SOURCE:ek,NO_FIELDS:tk,fork(e){return new eo(this.dataflow).init(this,e)},clone(){const e=this.fork(Cd);return e.add=e.add.slice(),e.rem=e.rem.slice(),e.mod=e.mod.slice(),e.source&&(e.source=e.source.slice()),e.materialize(Cd|bh)},addAll(){let e=this;return!e.source||e.add===e.rem||!e.rem.length&&e.source.length===e.add.length||(e=new eo(this.dataflow).init(this),e.add=e.source,e.rem=[]),e},init(e,t){const i=this;return i.stamp=e.stamp,i.encode=e.encode,e.fields&&!(t&tk)&&(i.fields=e.fields),t&Vc?(i.addF=e.addF,i.add=e.add):(i.addF=null,i.add=[]),t&Na?(i.remF=e.remF,i.rem=e.rem):(i.remF=null,i.rem=[]),t&zr?(i.modF=e.modF,i.mod=e.mod):(i.modF=null,i.mod=[]),t&ek?(i.srcF=null,i.source=null):(i.srcF=e.srcF,i.source=e.source,e.cleans&&(i.cleans=e.cleans)),i},runAfter(e){this.dataflow.runAfter(e)},changed(e){const t=e||Cd;return t&Vc&&this.add.length||t&Na&&this.rem.length||t&zr&&this.mod.length},reflow(e){if(e)return this.fork(Cd).reflow();const t=this.add.length,i=this.source&&this.source.length;return i&&i!==t&&(this.mod=this.source,t&&this.filter(zr,ik(this,Vc))),this},clean(e){return arguments.length?(this.cleans=!!e,this):this.cleans},modifies(e){const t=this.fields||(this.fields={});return fe(e)?e.forEach(i=>t[i]=!0):t[e]=!0,this},modified(e,t){const i=this.fields;return(t||this.mod.length)&&i?arguments.length?fe(e)?e.some(n=>i[n]):i[e]:!!i:!1},filter(e,t){const i=this;return e&Vc&&(i.addF=Jy(i.addF,t)),e&Na&&(i.remF=Jy(i.remF,t)),e&zr&&(i.modF=Jy(i.modF,t)),e&bh&&(i.srcF=Jy(i.srcF,t)),i},materialize(e){e=e||Cd;const t=this;return e&Vc&&t.addF&&(t.add=wx(t.add,t.addF),t.addF=null),e&Na&&t.remF&&(t.rem=wx(t.rem,t.remF),t.remF=null),e&zr&&t.modF&&(t.mod=wx(t.mod,t.modF),t.modF=null),e&bh&&t.srcF&&(t.source=t.source.filter(t.srcF),t.srcF=null),t},visit(e,t){const i=this,n=t;if(e&bh)return Ha(i.source,i.srcF,n),i;e&Vc&&Ha(i.add,i.addF,n),e&Na&&Ha(i.rem,i.remF,n),e&zr&&Ha(i.mod,i.modF,n);const s=i.source;if(e&qR&&s){const l=i.add.length+i.mod.length;l===s.length||(l?Ha(s,ik(i,AR),n):Ha(s,i.srcF,n))}return i}};function L3(e,t,i,n){const s=this;let l=0;this.dataflow=e,this.stamp=t,this.fields=null,this.encode=n||null,this.pulses=i;for(const c of i)if(c.stamp===t){if(c.fields){const r=s.fields||(s.fields={});for(const a in c.fields)r[a]=1}c.changed(s.ADD)&&(l|=s.ADD),c.changed(s.REM)&&(l|=s.REM),c.changed(s.MOD)&&(l|=s.MOD)}this.changes=l}ge(L3,eo,{fork(e){const t=new eo(this.dataflow).init(this,e&this.NO_FIELDS);return e!==void 0&&(e&t.ADD&&this.visit(t.ADD,i=>t.add.push(i)),e&t.REM&&this.visit(t.REM,i=>t.rem.push(i)),e&t.MOD&&this.visit(t.MOD,i=>t.mod.push(i))),t},changed(e){return this.changes&e},modified(e){const t=this,i=t.fields;return i&&t.changes&t.MOD?fe(e)?e.some(n=>i[n]):i[e]:0},filter(){me("MultiPulse does not support filtering.")},materialize(){me("MultiPulse does not support materialization.")},visit(e,t){const i=this,n=i.pulses,s=n.length;let l=0;if(e&i.SOURCE)for(;l<s;++l)n[l].visit(e,t);else for(;l<s;++l)n[l].stamp===i.stamp&&n[l].visit(e,t);return i}});async function Sue(e,t,i){const n=this,s=[];if(n._pulse)return dO(n);if(n._pending&&await n._pending,t&&await xZ(n,t),!n._touched.length)return n.debug("Dataflow invoked, but nothing to do."),n;const l=++n._clock;n._pulse=new eo(n,l,e),n._touched.forEach(o=>n._enqueue(o,!0)),n._touched=x2(Tp);let c=0,r,a,u;try{for(;n._heap.size()>0;){if(r=n._heap.pop(),r.rank!==r.qrank){n._enqueue(r,!0);continue}a=r.run(n._getPulse(r,e)),a.then?a=await a:a.async&&(s.push(a.async),a=VW),a!==VW&&r._targets&&r._targets.forEach(o=>n._enqueue(o)),++c}}catch(o){n._heap.clear(),u=o}if(n._input={},n._pulse=null,n.debug(`Pulse ${l}: ${c} operators`),u&&(n._postrun=[],n.error(u)),n._postrun.length){const o=n._postrun.sort((d,b)=>b.priority-d.priority);n._postrun=[];for(let d=0;d<o.length;++d)await xZ(n,o[d].callback)}return i&&await xZ(n,i),s.length&&Promise.all(s).then(o=>n.runAsync(null,()=>{o.forEach(d=>{try{d(n)}catch(b){n.error(b)}})})),n}async function Lue(e,t,i){for(;this._running;)await this._running;const n=()=>this._running=null;return(this._running=this.evaluate(e,t,i)).then(n,n),this._running}function Cue(e,t,i){return this._pulse?dO(this):(this.evaluate(e,t,i),this)}function Tue(e,t,i){if(this._pulse||t)this._postrun.push({priority:i||0,callback:e});else try{e(this)}catch(n){this.error(n)}}function dO(e){return e.error("Dataflow already running. Use runAsync() to chain invocations."),e}function Mue(e,t){const i=e.stamp<this._clock;i&&(e.stamp=this._clock),(i||t)&&(e.qrank=e.rank,this._heap.push(e))}function Kue(e,t){const i=e.source,n=this._clock;return i&&fe(i)?new L3(this,n,i.map(s=>s.pulse),t):this._input[e.id]||Bue(this._pulse,i&&i.pulse)}function Bue(e,t){return t&&t.stamp===e.stamp?t:(e=e.fork(),t&&t!==VW&&(e.source=t.source),e)}const C3={skip:!1,force:!1};function _ue(e,t){const i=t||C3;return this._pulse?this._enqueue(e):this._touched.add(e),i.skip&&e.skip(!0),this}function Oue(e,t,i){const n=i||C3;return(e.set(t)||n.force)&&this.touch(e,n),this}function jue(e,t,i){this.touch(e,i||C3);const n=new eo(this,this._clock+(this._pulse?0:1)),s=e.pulse&&e.pulse.source||[];return n.target=e,this._input[e.id]=t.pulse(n,s),this}function Eue(e){let t=[];return{clear:()=>t=[],size:()=>t.length,peek:()=>t[0],push:i=>(t.push(i),mO(t,0,t.length-1,e)),pop:()=>{const i=t.pop();let n;return t.length?(n=t[0],t[0]=i,Pue(t,0,e)):n=i,n}}}function mO(e,t,i,n){let s,l;const c=e[i];for(;i>t;){if(l=i-1>>1,s=e[l],n(c,s)<0){e[i]=s,i=l;continue}break}return e[i]=c}function Pue(e,t,i){const n=t,s=e.length,l=e[t];let c=(t<<1)+1,r;for(;c<s;)r=c+1,r<s&&i(e[c],e[r])>=0&&(c=r),e[t]=e[c],t=c,c=(t<<1)+1;return e[t]=l,mO(e,n,t,i)}function Wm(){this.logger(Z3()),this.logLevel(p3),this._clock=0,this._rank=0,this._locale=N3();try{this._loader=J2()}catch{}this._touched=x2(Tp),this._input={},this._pulse=null,this._heap=Eue((e,t)=>e.qrank-t.qrank),this._postrun=[]}function hh(e){return function(){return this._log[e].apply(this,arguments)}}Wm.prototype={stamp(){return this._clock},loader(e){return arguments.length?(this._loader=e,this):this._loader},locale(e){return arguments.length?(this._locale=e,this):this._locale},logger(e){return arguments.length?(this._log=e,this):this._log},error:hh("error"),warn:hh("warn"),info:hh("info"),debug:hh("debug"),logLevel:hh("level"),cleanThreshold:1e4,add:Wue,connect:Xue,rank:Rue,rerank:kue,pulse:jue,touch:_ue,update:Oue,changeset:ld,ingest:Gue,parse:Yue,preload:Iue,request:Vue,events:xue,on:zue,evaluate:Sue,run:Cue,runAsync:Lue,runAfter:Tue,_enqueue:Mue,_getPulse:Kue};function ue(e,t){Pt.call(this,e,null,t)}ge(ue,Pt,{run(e){if(e.stamp<this.stamp)return e.StopPropagation;let t;return this.skip()?this.skip(!1):t=this.evaluate(e),t=t||e,t.then?t=t.then(i=>this.pulse=i):t!==e.StopPropagation&&(this.pulse=t),t},evaluate(e){const t=this.marshall(e.stamp),i=this.transform(t,e);return t.clear(),i},transform(){}});const Fm={};function bO(e){const t=hO(e);return t&&t.Definition||null}function hO(e){return e=e&&e.toLowerCase(),Re(Fm,e)?Fm[e]:null}function*fO(e,t){if(t==null)for(let i of e)i!=null&&i!==""&&(i=+i)>=i&&(yield i);else{let i=-1;for(let n of e)n=t(n,++i,e),n!=null&&n!==""&&(n=+n)>=n&&(yield n)}}function T3(e,t,i){const n=Float64Array.from(fO(e,i));return n.sort(ll),t.map(s=>Gte(n,s))}function M3(e,t){return T3(e,[.25,.5,.75],t)}function K3(e,t){const i=e.length,n=BI(e,t),s=M3(e,t),l=(s[2]-s[0])/1.34;return 1.06*(Math.min(n,l)||n||Math.abs(s[0])||1)*Math.pow(i,-.2)}function pO(e){const t=e.maxbins||20,i=e.base||10,n=Math.log(i),s=e.divide||[5,2];let l=e.extent[0],c=e.extent[1],r,a,u,o,d,b;const h=e.span||c-l||Math.abs(l)||1;if(e.step)r=e.step;else if(e.steps){for(o=h/t,d=0,b=e.steps.length;d<b&&e.steps[d]<o;++d);r=e.steps[Math.max(0,d-1)]}else{for(a=Math.ceil(Math.log(t)/n),u=e.minstep||0,r=Math.max(u,Math.pow(i,Math.round(Math.log(h)/n)-a));Math.ceil(h/r)>t;)r*=i;for(d=0,b=s.length;d<b;++d)o=r/s[d],o>=u&&h/o<=t&&(r=o)}o=Math.log(r);const p=o>=0?0:~~(-o/n)+1,Z=Math.pow(i,-p-1);return(e.nice||e.nice===void 0)&&(o=Math.floor(l/r+Z)*r,l=l<o?o-r:o,c=Math.ceil(c/r)*r),{start:l,stop:c===l?l+r:c,step:r}}var ml=Math.random;function Uue(e){ml=e}function yO(e,t,i,n){if(!e.length)return[void 0,void 0];const s=Float64Array.from(fO(e,n)),l=s.length,c=t;let r,a,u,o;for(u=0,o=Array(c);u<c;++u){for(r=0,a=0;a<l;++a)r+=s[~~(ml()*l)];o[u]=r/l}return o.sort(ll),[Pc(o,i/2),Pc(o,1-i/2)]}function ZO(e,t,i,n){n=n||(b=>b);const s=e.length,l=new Float64Array(s);let c=0,r=1,a=n(e[0]),u=a,o=a+t,d;for(;r<s;++r){if(d=n(e[r]),d>=o){for(u=(a+u)/2;c<r;++c)l[c]=u;o=d+t,a=d}u=d}for(u=(a+u)/2;c<r;++c)l[c]=u;return i?$ue(l,t+t/4):l}function $ue(e,t){const i=e.length;let n=0,s=1,l,c;for(;e[n]===e[s];)++s;for(;s<i;){for(l=s+1;e[s]===e[l];)++l;if(e[s]-e[s-1]<t){for(c=s+(n+l-s-s>>1);c<s;)e[c++]=e[s];for(;c>s;)e[c--]=e[n]}n=s,s=l}return e}function Que(e){return function(){return e=(1103515245*e+12345)%2147483647,e/2147483647}}function Due(e,t){t==null&&(t=e,e=0);let i,n,s;const l={min(c){return arguments.length?(i=c||0,s=n-i,l):i},max(c){return arguments.length?(n=c||0,s=n-i,l):n},sample(){return i+Math.floor(s*ml())},pdf(c){return c===Math.floor(c)&&c>=i&&c<n?1/s:0},cdf(c){const r=Math.floor(c);return r<i?0:r>=n?1:(r-i+1)/s},icdf(c){return c>=0&&c<=1?i-1+Math.floor(c*s):NaN}};return l.min(e).max(t)}const WO=Math.sqrt(2*Math.PI),Aue=Math.SQRT2;let fh=NaN;function g2(e,t){e=e||0,t=t??1;let i=0,n=0,s,l;if(fh===fh)i=fh,fh=NaN;else{do i=ml()*2-1,n=ml()*2-1,s=i*i+n*n;while(s===0||s>1);l=Math.sqrt(-2*Math.log(s)/s),i*=l,fh=n*l}return e+i*t}function B3(e,t,i){i=i??1;const n=(e-(t||0))/i;return Math.exp(-.5*n*n)/(i*WO)}function v2(e,t,i){t=t||0,i=i??1;const n=(e-t)/i,s=Math.abs(n);let l;if(s>37)l=0;else{const c=Math.exp(-s*s/2);let r;s<7.07106781186547?(r=.0352624965998911*s+.700383064443688,r=r*s+6.37396220353165,r=r*s+33.912866078383,r=r*s+112.079291497871,r=r*s+221.213596169931,r=r*s+220.206867912376,l=c*r,r=.0883883476483184*s+1.75566716318264,r=r*s+16.064177579207,r=r*s+86.7807322029461,r=r*s+296.564248779674,r=r*s+637.333633378831,r=r*s+793.826512519948,r=r*s+440.413735824752,l=l/r):(r=s+.65,r=s+4/r,r=s+3/r,r=s+2/r,r=s+1/r,l=c/r/2.506628274631)}return n>0?1-l:l}function z2(e,t,i){return e<0||e>1?NaN:(t||0)+(i??1)*Aue*que(2*e-1)}function que(e){let t=-Math.log((1-e)*(1+e)),i;return t<6.25?(t-=3.125,i=-364441206401782e-35,i=-16850591381820166e-35+i*t,i=128584807152564e-32+i*t,i=11157877678025181e-33+i*t,i=-1333171662854621e-31+i*t,i=20972767875968562e-33+i*t,i=6637638134358324e-30+i*t,i=-4054566272975207e-29+i*t,i=-8151934197605472e-29+i*t,i=26335093153082323e-28+i*t,i=-12975133253453532e-27+i*t,i=-5415412054294628e-26+i*t,i=10512122733215323e-25+i*t,i=-4112633980346984e-24+i*t,i=-29070369957882005e-24+i*t,i=42347877827932404e-23+i*t,i=-13654692000834679e-22+i*t,i=-13882523362786469e-21+i*t,i=.00018673420803405714+i*t,i=-.000740702534166267+i*t,i=-.006033670871430149+i*t,i=.24015818242558962+i*t,i=1.6536545626831027+i*t):t<16?(t=Math.sqrt(t)-3.25,i=22137376921775787e-25,i=9075656193888539e-23+i*t,i=-27517406297064545e-23+i*t,i=18239629214389228e-24+i*t,i=15027403968909828e-22+i*t,i=-4013867526981546e-21+i*t,i=29234449089955446e-22+i*t,i=12475304481671779e-21+i*t,i=-47318229009055734e-21+i*t,i=6828485145957318e-20+i*t,i=24031110387097894e-21+i*t,i=-.0003550375203628475+i*t,i=.0009532893797373805+i*t,i=-.0016882755560235047+i*t,i=.002491442096107851+i*t,i=-.003751208507569241+i*t,i=.005370914553590064+i*t,i=1.0052589676941592+i*t,i=3.0838856104922208+i*t):Number.isFinite(t)?(t=Math.sqrt(t)-5,i=-27109920616438573e-27,i=-2555641816996525e-25+i*t,i=15076572693500548e-25+i*t,i=-3789465440126737e-24+i*t,i=761570120807834e-23+i*t,i=-1496002662714924e-23+i*t,i=2914795345090108e-23+i*t,i=-6771199775845234e-23+i*t,i=22900482228026655e-23+i*t,i=-99298272942317e-20+i*t,i=4526062597223154e-21+i*t,i=-1968177810553167e-20+i*t,i=7599527703001776e-20+i*t,i=-.00021503011930044477+i*t,i=-.00013871931833623122+i*t,i=1.0103004648645344+i*t,i=4.849906401408584+i*t):i=1/0,i*e}function _3(e,t){let i,n;const s={mean(l){return arguments.length?(i=l||0,s):i},stdev(l){return arguments.length?(n=l??1,s):n},sample:()=>g2(i,n),pdf:l=>B3(l,i,n),cdf:l=>v2(l,i,n),icdf:l=>z2(l,i,n)};return s.mean(e).stdev(t)}function O3(e,t){const i=_3();let n=0;const s={data(l){return arguments.length?(e=l,n=l?l.length:0,s.bandwidth(t)):e},bandwidth(l){return arguments.length?(t=l,!t&&e&&(t=K3(e)),s):t},sample(){return e[~~(ml()*n)]+t*i.sample()},pdf(l){let c=0,r=0;for(;r<n;++r)c+=i.pdf((l-e[r])/t);return c/t/n},cdf(l){let c=0,r=0;for(;r<n;++r)c+=i.cdf((l-e[r])/t);return c/n},icdf(){throw Error("KDE icdf not supported.")}};return s.data(e)}function j3(e,t){return e=e||0,t=t??1,Math.exp(e+g2()*t)}function E3(e,t,i){if(e<=0)return 0;t=t||0,i=i??1;const n=(Math.log(e)-t)/i;return Math.exp(-.5*n*n)/(i*WO*e)}function P3(e,t,i){return v2(Math.log(e),t,i)}function U3(e,t,i){return Math.exp(z2(e,t,i))}function XO(e,t){let i,n;const s={mean(l){return arguments.length?(i=l||0,s):i},stdev(l){return arguments.length?(n=l??1,s):n},sample:()=>j3(i,n),pdf:l=>E3(l,i,n),cdf:l=>P3(l,i,n),icdf:l=>U3(l,i,n)};return s.mean(e).stdev(t)}function JO(e,t){let i=0,n;function s(c){const r=[];let a=0,u;for(u=0;u<i;++u)a+=r[u]=c[u]==null?1:+c[u];for(u=0;u<i;++u)r[u]/=a;return r}const l={weights(c){return arguments.length?(n=s(t=c||[]),l):t},distributions(c){return arguments.length?(c?(i=c.length,e=c):(i=0,e=[]),l.weights(t)):e},sample(){const c=ml();let r=e[i-1],a=n[0],u=0;for(;u<i-1;a+=n[++u])if(c<a){r=e[u];break}return r.sample()},pdf(c){let r=0,a=0;for(;a<i;++a)r+=n[a]*e[a].pdf(c);return r},cdf(c){let r=0,a=0;for(;a<i;++a)r+=n[a]*e[a].cdf(c);return r},icdf(){throw Error("Mixture icdf not supported.")}};return l.distributions(e).weights(t)}function $3(e,t){return t==null&&(t=e??1,e=0),e+(t-e)*ml()}function Q3(e,t,i){return i==null&&(i=t??1,t=0),e>=t&&e<=i?1/(i-t):0}function D3(e,t,i){return i==null&&(i=t??1,t=0),e<t?0:e>i?1:(e-t)/(i-t)}function A3(e,t,i){return i==null&&(i=t??1,t=0),e>=0&&e<=1?t+e*(i-t):NaN}function xO(e,t){let i,n;const s={min(l){return arguments.length?(i=l||0,s):i},max(l){return arguments.length?(n=l??1,s):n},sample:()=>$3(i,n),pdf:l=>Q3(l,i,n),cdf:l=>D3(l,i,n),icdf:l=>A3(l,i,n)};return t==null&&(t=e??1,e=0),s.min(e).max(t)}function q3(e,t,i){let n=0,s=0;for(const l of e){const c=i(l);t(l)==null||c==null||isNaN(c)||(n+=(c-n)/++s)}return{coef:[n],predict:()=>n,rSquared:0}}function Kp(e,t,i,n){const s=n-e*e,l=Math.abs(s)<1e-24?0:(i-e*t)/s;return[t-l*e,l]}function w2(e,t,i,n){e=e.filter(h=>{let p=t(h),Z=i(h);return p!=null&&(p=+p)>=p&&Z!=null&&(Z=+Z)>=Z}),n&&e.sort((h,p)=>t(h)-t(p));const s=e.length,l=new Float64Array(s),c=new Float64Array(s);let r=0,a=0,u=0,o,d,b;for(b of e)l[r]=o=+t(b),c[r]=d=+i(b),++r,a+=(o-a)/r,u+=(d-u)/r;for(r=0;r<s;++r)l[r]-=a,c[r]-=u;return[l,c,a,u]}function Bp(e,t,i,n){let s=-1,l,c;for(const r of e)l=t(r),c=i(r),l!=null&&(l=+l)>=l&&c!=null&&(c=+c)>=c&&n(l,c,++s)}function vb(e,t,i,n,s){let l=0,c=0;return Bp(e,t,i,(r,a)=>{const u=a-s(r),o=a-n;l+=u*u,c+=o*o}),1-l/c}function e5(e,t,i){let n=0,s=0,l=0,c=0,r=0;Bp(e,t,i,(o,d)=>{++r,n+=(o-n)/r,s+=(d-s)/r,l+=(o*d-l)/r,c+=(o*o-c)/r});const a=Kp(n,s,l,c),u=o=>a[0]+a[1]*o;return{coef:a,predict:u,rSquared:vb(e,t,i,s,u)}}function YO(e,t,i){let n=0,s=0,l=0,c=0,r=0;Bp(e,t,i,(o,d)=>{++r,o=Math.log(o),n+=(o-n)/r,s+=(d-s)/r,l+=(o*d-l)/r,c+=(o*o-c)/r});const a=Kp(n,s,l,c),u=o=>a[0]+a[1]*Math.log(o);return{coef:a,predict:u,rSquared:vb(e,t,i,s,u)}}function GO(e,t,i){const[n,s,l,c]=w2(e,t,i);let r=0,a=0,u=0,o=0,d=0,b,h,p;Bp(e,t,i,(V,g)=>{b=n[d++],h=Math.log(g),p=b*g,r+=(g*h-r)/d,a+=(p-a)/d,u+=(p*h-u)/d,o+=(b*p-o)/d});const[Z,X]=Kp(a/c,r/c,u/c,o/c),J=V=>Math.exp(Z+X*(V-l));return{coef:[Math.exp(Z-X*l),X],predict:J,rSquared:vb(e,t,i,c,J)}}function VO(e,t,i){let n=0,s=0,l=0,c=0,r=0,a=0;Bp(e,t,i,(d,b)=>{const h=Math.log(d),p=Math.log(b);++a,n+=(h-n)/a,s+=(p-s)/a,l+=(h*p-l)/a,c+=(h*h-c)/a,r+=(b-r)/a});const u=Kp(n,s,l,c),o=d=>u[0]*Math.pow(d,u[1]);return u[0]=Math.exp(u[0]),{coef:u,predict:o,rSquared:vb(e,t,i,r,o)}}function t5(e,t,i){const[n,s,l,c]=w2(e,t,i),r=n.length;let a=0,u=0,o=0,d=0,b=0,h,p,Z,X;for(h=0;h<r;)p=n[h],Z=s[h++],X=p*p,a+=(X-a)/h,u+=(X*p-u)/h,o+=(X*X-o)/h,d+=(p*Z-d)/h,b+=(X*Z-b)/h;const J=o-a*a,V=a*J-u*u,g=(b*a-d*u)/V,I=(d*J-b*u)/V,v=-g*a,k=N=>(N=N-l,g*N*N+I*N+v+c);return{coef:[v-I*l+g*l*l+c,I-2*g*l,g],predict:k,rSquared:vb(e,t,i,c,k)}}function IO(e,t,i,n){if(n===0)return q3(e,t,i);if(n===1)return e5(e,t,i);if(n===2)return t5(e,t,i);const[s,l,c,r]=w2(e,t,i),a=s.length,u=[],o=[],d=n+1;let b,h,p,Z,X;for(b=0;b<d;++b){for(p=0,Z=0;p<a;++p)Z+=Math.pow(s[p],b)*l[p];for(u.push(Z),X=new Float64Array(d),h=0;h<d;++h){for(p=0,Z=0;p<a;++p)Z+=Math.pow(s[p],b+h);X[h]=Z}o.push(X)}o.push(u);const J=tde(o),V=g=>{g-=c;let I=r+J[0]+J[1]*g+J[2]*g*g;for(b=3;b<d;++b)I+=J[b]*Math.pow(g,b);return I};return{coef:ede(d,J,-c,r),predict:V,rSquared:vb(e,t,i,r,V)}}function ede(e,t,i,n){const s=Array(e);let l,c,r,a;for(l=0;l<e;++l)s[l]=0;for(l=e-1;l>=0;--l)for(r=t[l],a=1,s[l]+=r,c=1;c<=l;++c)a*=(l+1-c)/c,s[l-c]+=r*Math.pow(i,c)*a;return s[0]+=n,s}function tde(e){const t=e.length-1,i=[];let n,s,l,c,r;for(n=0;n<t;++n){for(c=n,s=n+1;s<t;++s)Math.abs(e[n][s])>Math.abs(e[n][c])&&(c=s);for(l=n;l<t+1;++l)r=e[l][n],e[l][n]=e[l][c],e[l][c]=r;for(s=n+1;s<t;++s)for(l=t;l>=n;l--)e[l][s]-=e[l][n]*e[n][s]/e[n][n]}for(s=t-1;s>=0;--s){for(r=0,l=s+1;l<t;++l)r+=e[l][s]*i[l];i[s]=(e[t][s]-r)/e[s][s]}return i}const nk=2,sk=1e-12;function gO(e,t,i,n){const[s,l,c,r]=w2(e,t,i,!0),a=s.length,u=Math.max(2,~~(n*a)),o=new Float64Array(a),d=new Float64Array(a),b=new Float64Array(a).fill(1);for(let h=-1;++h<=nk;){const p=[0,u-1];for(let X=0;X<a;++X){const J=s[X],V=p[0],g=p[1],I=J-s[V]>s[g]-J?V:g;let v=0,k=0,N=0,C=0,f=0;const w=1/Math.abs(s[I]-J||1);for(let K=V;K<=g;++K){const B=s[K],_=l[K],j=ide(Math.abs(J-B)*w)*b[K],U=B*j;v+=j,k+=U,N+=_*j,C+=_*U,f+=B*U}const[x,R]=Kp(k/v,N/v,C/v,f/v);o[X]=x+R*J,d[X]=Math.abs(l[X]-o[X]),nde(s,X+1,p)}if(h===nk)break;const Z=Rf(d);if(Math.abs(Z)<sk)break;for(let X=0,J,V;X<a;++X)J=d[X]/(6*Z),b[X]=J>=1?sk:(V=1-J*J)*V}return sde(s,o,c,r)}function ide(e){return(e=1-e*e*e)*e*e}function nde(e,t,i){const n=e[t];let s=i[0],l=i[1]+1;if(!(l>=e.length))for(;t>s&&e[l]-n<=n-e[s];)i[0]=++s,i[1]=l,++l}function sde(e,t,i,n){const s=e.length,l=[];let c=0,r=0,a=[],u;for(;c<s;++c)u=e[c]+i,a[0]===u?a[1]+=(t[c]-a[1])/++r:(r=0,a[1]+=n,a=[u,t[c]],l.push(a));return a[1]+=n,l}const lde=.5*Math.PI/180;function H2(e,t,i,n){i=i||25,n=Math.max(i,n||200);const s=Z=>[Z,e(Z)],l=t[0],c=t[1],r=c-l,a=r/n,u=[s(l)],o=[];if(i===n){for(let Z=1;Z<n;++Z)u.push(s(l+Z/i*r));return u.push(s(c)),u}else{o.push(s(c));for(let Z=i;--Z>0;)o.push(s(l+Z/i*r))}let d=u[0],b=o[o.length-1];const h=1/r,p=cde(d[1],o);for(;b;){const Z=s((d[0]+b[0])/2);Z[0]-d[0]>=a&&rde(d,Z,b,h,p)>lde?o.push(Z):(d=b,u.push(b),o.pop()),b=o[o.length-1]}return u}function cde(e,t){let i=e,n=e;const s=t.length;for(let l=0;l<s;++l){const c=t[l][1];c<i&&(i=c),c>n&&(n=c)}return 1/(n-i)}function rde(e,t,i,n,s){const l=Math.atan2(s*(i[1]-e[1]),n*(i[0]-e[0])),c=Math.atan2(s*(t[1]-e[1]),n*(t[0]-e[0]));return Math.abs(l-c)}function ade(e){return t=>{const i=e.length;let n=1,s=String(e[0](t));for(;n<i;++n)s+="|"+e[n](t);return s}}function hG(e){return!e||!e.length?function(){return""}:e.length===1?e[0]:ade(e)}function vO(e,t,i){return i||e+(t?"_"+t:"")}const Hx=()=>{},ode={init:Hx,add:Hx,rem:Hx,idx:0},_f={values:{init:e=>e.cell.store=!0,value:e=>e.cell.data.values(),idx:-1},count:{value:e=>e.cell.num},__count__:{value:e=>e.missing+e.valid},missing:{value:e=>e.missing},valid:{value:e=>e.valid},sum:{init:e=>e.sum=0,value:e=>e.valid?e.sum:void 0,add:(e,t)=>e.sum+=+t,rem:(e,t)=>e.sum-=t},product:{init:e=>e.product=1,value:e=>e.valid?e.product:void 0,add:(e,t)=>e.product*=t,rem:(e,t)=>e.product/=t},mean:{init:e=>e.mean=0,value:e=>e.valid?e.mean:void 0,add:(e,t)=>(e.mean_d=t-e.mean,e.mean+=e.mean_d/e.valid),rem:(e,t)=>(e.mean_d=t-e.mean,e.mean-=e.valid?e.mean_d/e.valid:e.mean)},average:{value:e=>e.valid?e.mean:void 0,req:["mean"],idx:1},variance:{init:e=>e.dev=0,value:e=>e.valid>1?e.dev/(e.valid-1):void 0,add:(e,t)=>e.dev+=e.mean_d*(t-e.mean),rem:(e,t)=>e.dev-=e.mean_d*(t-e.mean),req:["mean"],idx:1},variancep:{value:e=>e.valid>1?e.dev/e.valid:void 0,req:["variance"],idx:2},stdev:{value:e=>e.valid>1?Math.sqrt(e.dev/(e.valid-1)):void 0,req:["variance"],idx:2},stdevp:{value:e=>e.valid>1?Math.sqrt(e.dev/e.valid):void 0,req:["variance"],idx:2},stderr:{value:e=>e.valid>1?Math.sqrt(e.dev/(e.valid*(e.valid-1))):void 0,req:["variance"],idx:2},distinct:{value:e=>e.cell.data.distinct(e.get),req:["values"],idx:3},ci0:{value:e=>e.cell.data.ci0(e.get),req:["values"],idx:3},ci1:{value:e=>e.cell.data.ci1(e.get),req:["values"],idx:3},median:{value:e=>e.cell.data.q2(e.get),req:["values"],idx:3},q1:{value:e=>e.cell.data.q1(e.get),req:["values"],idx:3},q3:{value:e=>e.cell.data.q3(e.get),req:["values"],idx:3},min:{init:e=>e.min=void 0,value:e=>e.min=Number.isNaN(e.min)?e.cell.data.min(e.get):e.min,add:(e,t)=>{(t<e.min||e.min===void 0)&&(e.min=t)},rem:(e,t)=>{t<=e.min&&(e.min=NaN)},req:["values"],idx:4},max:{init:e=>e.max=void 0,value:e=>e.max=Number.isNaN(e.max)?e.cell.data.max(e.get):e.max,add:(e,t)=>{(t>e.max||e.max===void 0)&&(e.max=t)},rem:(e,t)=>{t>=e.max&&(e.max=NaN)},req:["values"],idx:4},argmin:{init:e=>e.argmin=void 0,value:e=>e.argmin||e.cell.data.argmin(e.get),add:(e,t,i)=>{t<e.min&&(e.argmin=i)},rem:(e,t)=>{t<=e.min&&(e.argmin=void 0)},req:["min","values"],idx:3},argmax:{init:e=>e.argmax=void 0,value:e=>e.argmax||e.cell.data.argmax(e.get),add:(e,t,i)=>{t>e.max&&(e.argmax=i)},rem:(e,t)=>{t>=e.max&&(e.argmax=void 0)},req:["max","values"],idx:3},exponential:{init:(e,t)=>{e.exp=0,e.exp_r=t},value:e=>e.valid?e.exp*(1-e.exp_r)/(1-e.exp_r**e.valid):void 0,add:(e,t)=>e.exp=e.exp_r*e.exp+t,rem:(e,t)=>e.exp=(e.exp-t/e.exp_r**(e.valid-1))/e.exp_r},exponentialb:{value:e=>e.valid?e.exp*(1-e.exp_r):void 0,req:["exponential"],idx:1}},_p=Object.keys(_f).filter(e=>e!=="__count__");function ude(e,t){return(i,n)=>lt({name:e,aggregate_param:n,out:i||e},ode,t)}[..._p,"__count__"].forEach(e=>{_f[e]=ude(e,_f[e])});function zO(e,t,i){return _f[e](i,t)}function wO(e,t){return e.idx-t.idx}function dde(e){const t={};e.forEach(n=>t[n.name]=n);const i=n=>{n.req&&n.req.forEach(s=>{t[s]||i(t[s]=_f[s]())})};return e.forEach(i),Object.values(t).sort(wO)}function mde(){this.valid=0,this.missing=0,this._ops.forEach(e=>e.aggregate_param==null?e.init(this):e.init(this,e.aggregate_param))}function bde(e,t){if(e==null||e===""){++this.missing;return}e===e&&(++this.valid,this._ops.forEach(i=>i.add(this,e,t)))}function hde(e,t){if(e==null||e===""){--this.missing;return}e===e&&(--this.valid,this._ops.forEach(i=>i.rem(this,e,t)))}function fde(e){return this._out.forEach(t=>e[t.out]=t.value(this)),e}function HO(e,t){const i=t||Vn,n=dde(e),s=e.slice().sort(wO);function l(c){this._ops=n,this._out=s,this.cell=c,this.init()}return l.prototype.init=mde,l.prototype.add=bde,l.prototype.rem=hde,l.prototype.set=fde,l.prototype.get=i,l.fields=e.map(c=>c.out),l}function i5(e){this._key=e?ol(e):Oe,this.reset()}const dn=i5.prototype;dn.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null};dn.add=function(e){this._add.push(e)};dn.rem=function(e){this._rem.push(e)};dn.values=function(){if(this._get=null,this._rem.length===0)return this._add;const e=this._add,t=this._rem,i=this._key,n=e.length,s=t.length,l=Array(n-s),c={};let r,a,u;for(r=0;r<s;++r)c[i(t[r])]=1;for(r=0,a=0;r<n;++r)c[i(u=e[r])]?c[i(u)]=0:l[a++]=u;return this._rem=[],this._add=l};dn.distinct=function(e){const t=this.values(),i={};let n=t.length,s=0,l;for(;--n>=0;)l=e(t[n])+"",Re(i,l)||(i[l]=1,++s);return s};dn.extent=function(e){if(this._get!==e||!this._ext){const t=this.values(),i=X_(t,e);this._ext=[t[i[0]],t[i[1]]],this._get=e}return this._ext};dn.argmin=function(e){return this.extent(e)[0]||{}};dn.argmax=function(e){return this.extent(e)[1]||{}};dn.min=function(e){const t=this.extent(e)[0];return t!=null?e(t):void 0};dn.max=function(e){const t=this.extent(e)[1];return t!=null?e(t):void 0};dn.quartile=function(e){return(this._get!==e||!this._q)&&(this._q=M3(this.values(),e),this._get=e),this._q};dn.q1=function(e){return this.quartile(e)[0]};dn.q2=function(e){return this.quartile(e)[1]};dn.q3=function(e){return this.quartile(e)[2]};dn.ci=function(e){return(this._get!==e||!this._ci)&&(this._ci=yO(this.values(),1e3,.05,e),this._get=e),this._ci};dn.ci0=function(e){return this.ci(e)[0]};dn.ci1=function(e){return this.ci(e)[1]};function uo(e){ue.call(this,null,e),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}uo.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:_p},{name:"aggregate_params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};ge(uo,ue,{transform(e,t){const i=this,n=t.fork(t.NO_SOURCE|t.NO_FIELDS),s=e.modified();return i.stamp=n.stamp,i.value&&(s||t.modified(i._inputs,!0))?(i._prev=i.value,i.value=s?i.init(e):Object.create(null),t.visit(t.SOURCE,l=>i.add(l))):(i.value=i.value||i.init(e),t.visit(t.REM,l=>i.rem(l)),t.visit(t.ADD,l=>i.add(l))),n.modifies(i._outputs),i._drop=e.drop!==!1,e.cross&&i._dims.length>1&&(i._drop=!1,i.cross()),t.clean()&&i._drop&&n.clean(!0).runAfter(()=>this.clean()),i.changes(n)},cross(){const e=this,t=e.value,i=e._dnames,n=i.map(()=>({})),s=i.length;function l(r){let a,u,o,d;for(a in r)for(o=r[a].tuple,u=0;u<s;++u)n[u][d=o[i[u]]]=d}l(e._prev),l(t);function c(r,a,u){const o=i[u],d=n[u++];for(const b in d){const h=r?r+"|"+b:b;a[o]=d[b],u<s?c(h,a,u):t[h]||e.cell(h,a)}}c("",{},0)},init(e){const t=this._inputs=[],i=this._outputs=[],n={};function s(V){const g=Ne(Wn(V)),I=g.length;let v=0,k;for(;v<I;++v)n[k=g[v]]||(n[k]=1,t.push(k))}this._dims=Ne(e.groupby),this._dnames=this._dims.map(V=>{const g=Zi(V);return s(V),i.push(g),g}),this.cellkey=e.key?e.key:hG(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];const l=e.fields||[null],c=e.ops||["count"],r=e.aggregate_params||[null],a=e.as||[],u=l.length,o={};let d,b,h,p,Z,X,J;for(u!==c.length&&me("Unmatched number of fields and aggregate ops."),J=0;J<u;++J){if(d=l[J],b=c[J],h=r[J]||null,d==null&&b!=="count"&&me("Null aggregate field specified."),Z=Zi(d),X=vO(b,Z,a[J]),i.push(X),b==="count"){this._counts.push(X);continue}p=o[Z],p||(s(d),p=o[Z]=[],p.field=d,this._measures.push(p)),b!=="count"&&(this._countOnly=!1),p.push(zO(b,h,X))}return this._measures=this._measures.map(V=>HO(V,V.field)),Object.create(null)},cellkey:hG(),cell(e,t){let i=this.value[e];return i?i.num===0&&this._drop&&i.stamp<this.stamp?(i.stamp=this.stamp,this._adds[this._alen++]=i):i.stamp<this.stamp&&(i.stamp=this.stamp,this._mods[this._mlen++]=i):(i=this.value[e]=this.newcell(e,t),this._adds[this._alen++]=i),i},newcell(e,t){const i={key:e,num:0,agg:null,tuple:this.newtuple(t,this._prev&&this._prev[e]),stamp:this.stamp,store:!1};if(!this._countOnly){const n=this._measures,s=n.length;i.agg=Array(s);for(let l=0;l<s;++l)i.agg[l]=new n[l](i)}return i.store&&(i.data=new i5),i},newtuple(e,t){const i=this._dnames,n=this._dims,s=n.length,l={};for(let c=0;c<s;++c)l[i[c]]=n[c](e);return t?oO(t.tuple,l):Rt(l)},clean(){const e=this.value;for(const t in e)e[t].num===0&&delete e[t]},add(e){const t=this.cellkey(e),i=this.cell(t,e);if(i.num+=1,this._countOnly)return;i.store&&i.data.add(e);const n=i.agg;for(let s=0,l=n.length;s<l;++s)n[s].add(n[s].get(e),e)},rem(e){const t=this.cellkey(e),i=this.cell(t,e);if(i.num-=1,this._countOnly)return;i.store&&i.data.rem(e);const n=i.agg;for(let s=0,l=n.length;s<l;++s)n[s].rem(n[s].get(e),e)},celltuple(e){const t=e.tuple,i=this._counts;e.store&&e.data.values();for(let n=0,s=i.length;n<s;++n)t[i[n]]=e.num;if(!this._countOnly){const n=e.agg;for(let s=0,l=n.length;s<l;++s)n[s].set(t)}return t},changes(e){const t=this._adds,i=this._mods,n=this._prev,s=this._drop,l=e.add,c=e.rem,r=e.mod;let a,u,o,d;if(n)for(u in n)a=n[u],(!s||a.num)&&c.push(a.tuple);for(o=0,d=this._alen;o<d;++o)l.push(this.celltuple(t[o])),t[o]=null;for(o=0,d=this._mlen;o<d;++o)a=i[o],(a.num===0&&s?c:r).push(this.celltuple(a)),i[o]=null;return this._alen=this._mlen=0,this._prev=null,e}});const pde=1e-14;function n5(e){ue.call(this,null,e)}n5.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"span",type:"number"},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]};ge(n5,ue,{transform(e,t){const i=e.interval!==!1,n=this._bins(e),s=n.start,l=n.step,c=e.as||["bin0","bin1"],r=c[0],a=c[1];let u;return e.modified()?(t=t.reflow(!0),u=t.SOURCE):u=t.modified(Wn(e.field))?t.ADD_MOD:t.ADD,t.visit(u,i?o=>{const d=n(o);o[r]=d,o[a]=d==null?null:s+l*(1+(d-s)/l)}:o=>o[r]=n(o)),t.modifies(i?c:r)},_bins(e){if(this.value&&!e.modified())return this.value;const t=e.field,i=pO(e),n=i.step;let s=i.start,l=s+Math.ceil((i.stop-s)/n)*n,c,r;(c=e.anchor)!=null&&(r=c-(s+n*Math.floor((c-s)/n)),s+=r,l+=r);const a=function(u){let o=yn(t(u));return o==null?null:o<s?-1/0:o>l?1/0:(o=Math.max(s,Math.min(o,l-n)),s+n*Math.floor(pde+(o-s)/n))};return a.start=s,a.stop=i.stop,a.step=n,this.value=Ws(a,Wn(t),e.name||"bin_"+Zi(t))}});function NO(e,t,i){const n=e;let s=t||[],l=i||[],c={},r=0;return{add:a=>l.push(a),remove:a=>c[n(a)]=++r,size:()=>s.length,data:(a,u)=>(r&&(s=s.filter(o=>!c[n(o)]),c={},r=0),u&&a&&s.sort(a),l.length&&(s=a?V_(a,s,l.sort(a)):s.concat(l),l=[]),s)}}function s5(e){ue.call(this,[],e)}s5.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]};ge(s5,ue,{transform(e,t){const i=t.fork(t.ALL),n=NO(Oe,this.value,i.materialize(i.ADD).add),s=e.sort,l=t.changed()||s&&(e.modified("sort")||t.modified(s.fields));return i.visit(i.REM,n.remove),this.modified(l),this.value=i.source=n.data(sd(s),l),t.source&&t.source.root&&(this.value.root=t.source.root),i}});function RO(e){Pt.call(this,null,yde,e)}ge(RO,Pt);function yde(e){return this.value&&!e.modified()?this.value:x3(e.fields,e.orders)}function l5(e){ue.call(this,null,e)}l5.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]};function Zde(e,t,i){switch(t){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase();break}return e.match(i)}ge(l5,ue,{transform(e,t){const i=d=>b=>{for(var h=Zde(r(b),e.case,l)||[],p,Z=0,X=h.length;Z<X;++Z)c.test(p=h[Z])||d(p)},n=this._parameterCheck(e,t),s=this._counts,l=this._match,c=this._stop,r=e.field,a=e.as||["text","count"],u=i(d=>s[d]=1+(s[d]||0)),o=i(d=>s[d]-=1);return n?t.visit(t.SOURCE,u):(t.visit(t.ADD,u),t.visit(t.REM,o)),this._finish(t,a)},_parameterCheck(e,t){let i=!1;return(e.modified("stopwords")||!this._stop)&&(this._stop=new RegExp("^"+(e.stopwords||"")+"$","i"),i=!0),(e.modified("pattern")||!this._match)&&(this._match=new RegExp(e.pattern||"[\\w']+","g"),i=!0),(e.modified("field")||t.modified(e.field.fields))&&(i=!0),i&&(this._counts={}),i},_finish(e,t){const i=this._counts,n=this._tuples||(this._tuples={}),s=t[0],l=t[1],c=e.fork(e.NO_SOURCE|e.NO_FIELDS);let r,a,u;for(r in i)a=n[r],u=i[r]||0,!a&&u?(n[r]=a=Rt({}),a[s]=r,a[l]=u,c.add.push(a)):u===0?(a&&c.rem.push(a),i[r]=null,n[r]=null):a[l]!==u&&(a[l]=u,c.mod.push(a));return c.modifies(t)}});function c5(e){ue.call(this,null,e)}c5.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]};ge(c5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE),n=e.as||["a","b"],s=n[0],l=n[1],c=!this.value||t.changed(t.ADD_REM)||e.modified("as")||e.modified("filter");let r=this.value;return c?(r&&(i.rem=r),r=t.materialize(t.SOURCE).source,i.add=this.value=Wde(r,s,l,e.filter||ul)):i.mod=r,i.source=this.value,i.modifies(n)}});function Wde(e,t,i,n){for(var s=[],l={},c=e.length,r=0,a,u;r<c;++r)for(l[t]=u=e[r],a=0;a<c;++a)l[i]=e[a],n(l)&&(s.push(Rt(l)),l={},l[t]=u);return s}const lk={kde:O3,mixture:JO,normal:_3,lognormal:XO,uniform:xO},Xde="distributions",ck="function",Jde="field";function kO(e,t){const i=e[ck];Re(lk,i)||me("Unknown distribution function: "+i);const n=lk[i]();for(const s in e)s===Jde?n.data((e.from||t()).map(e[s])):s===Xde?n[s](e[s].map(l=>kO(l,t))):typeof n[s]===ck&&n[s](e[s]);return n}function r5(e){ue.call(this,null,e)}const FO=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"lognormal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],xde={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:FO},{name:"weights",type:"number",array:!0}]};r5.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:FO.concat(xde)},{name:"as",type:"string",array:!0,default:["value","density"]}]};ge(r5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){const n=kO(e.distribution,Yde(t)),s=e.steps||e.minsteps||25,l=e.steps||e.maxsteps||200;let c=e.method||"pdf";c!=="pdf"&&c!=="cdf"&&me("Invalid density method: "+c),!e.extent&&!n.data&&me("Missing density extent parameter."),c=n[c];const r=e.as||["value","density"],a=e.extent||Qc(n.data()),u=H2(c,a,s,l).map(o=>{const d={};return d[r[0]]=o[0],d[r[1]]=o[1],Rt(d)});this.value&&(i.rem=this.value),this.value=i.add=i.source=u}return i}});function Yde(e){return()=>e.materialize(e.SOURCE).source}function SO(e,t){return e?e.map((i,n)=>t[n]||Zi(i)):null}function a5(e,t,i){const n=[],s=d=>d(a);let l,c,r,a,u,o;if(t==null)n.push(e.map(i));else for(l={},c=0,r=e.length;c<r;++c)a=e[c],u=t.map(s),o=l[u],o||(l[u]=o=[],o.dims=u,n.push(o)),o.push(i(a));return n}const LO="bin";function o5(e){ue.call(this,null,e)}o5.Definition={type:"DotBin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"step",type:"number"},{name:"smooth",type:"boolean",default:!1},{name:"as",type:"string",default:LO}]};const Gde=(e,t)=>Mp(Qc(e,t))/30;ge(o5,ue,{transform(e,t){if(this.value&&!(e.modified()||t.changed()))return t;const i=t.materialize(t.SOURCE).source,n=a5(t.source,e.groupby,Vn),s=e.smooth||!1,l=e.field,c=e.step||Gde(i,l),r=sd((p,Z)=>l(p)-l(Z)),a=e.as||LO,u=n.length;let o=1/0,d=-1/0,b=0,h;for(;b<u;++b){const p=n[b].sort(r);h=-1;for(const Z of ZO(p,c,s,l))Z<o&&(o=Z),Z>d&&(d=Z),p[++h][a]=Z}return this.value={start:o,stop:d,step:c},t.reflow(!0).modifies(a)}});function CO(e){Pt.call(this,null,Vde,e),this.modified(!0)}ge(CO,Pt);function Vde(e){const t=e.expr;return this.value&&!e.modified("expr")?this.value:Ws(i=>t(i,e),Wn(t),Zi(t))}function u5(e){ue.call(this,[void 0,void 0],e)}u5.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]};ge(u5,ue,{transform(e,t){const i=this.value,n=e.field,s=t.changed()||t.modified(n.fields)||e.modified("field");let l=i[0],c=i[1];if((s||l==null)&&(l=1/0,c=-1/0),t.visit(s?t.SOURCE:t.ADD,r=>{const a=yn(n(r));a!=null&&(a<l&&(l=a),a>c&&(c=a))}),!Number.isFinite(l)||!Number.isFinite(c)){let r=Zi(n);r&&(r=` for field "${r}"`),t.dataflow.warn(`Infinite extent${r}: [${l}, ${c}]`),l=c=void 0}this.value=[l,c]}});function d5(e,t){Pt.call(this,e),this.parent=t,this.count=0}ge(d5,Pt,{connect(e){return this.detachSubflow=e.detachSubflow,this.targets().add(e),e.source=this},add(e){this.count+=1,this.value.add.push(e)},rem(e){this.count-=1,this.value.rem.push(e)},mod(e){this.value.mod.push(e)},init(e){this.value.init(e,e.NO_SOURCE)},evaluate(){return this.value}});function N2(e){ue.call(this,{},e),this._keys=Vb();const t=this._targets=[];t.active=0,t.forEach=i=>{for(let n=0,s=t.active;n<s;++n)i(t[n],n,t)}}ge(N2,ue,{activate(e){this._targets[this._targets.active++]=e},subflow(e,t,i,n){const s=this.value;let l=Re(s,e)&&s[e],c,r;return l?l.value.stamp<i.stamp&&(l.init(i),this.activate(l)):(r=n||(r=this._group[e])&&r.tuple,c=i.dataflow,l=new d5(i.fork(i.NO_SOURCE),this),c.add(l).connect(t(c,e,r)),s[e]=l,this.activate(l)),l},clean(){const e=this.value;let t=0;for(const i in e)if(e[i].count===0){const n=e[i].detachSubflow;n&&n(),delete e[i],++t}if(t){const i=this._targets.filter(n=>n&&n.count>0);this.initTargets(i)}},initTargets(e){const t=this._targets,i=t.length,n=e?e.length:0;let s=0;for(;s<n;++s)t[s]=e[s];for(;s<i&&t[s]!=null;++s)t[s]=null;t.active=n},transform(e,t){const i=t.dataflow,n=e.key,s=e.subflow,l=this._keys,c=e.modified("key"),r=a=>this.subflow(a,s,t);return this._group=e.group||{},this.initTargets(),t.visit(t.REM,a=>{const u=Oe(a),o=l.get(u);o!==void 0&&(l.delete(u),r(o).rem(a))}),t.visit(t.ADD,a=>{const u=n(a);l.set(Oe(a),u),r(u).add(a)}),c||t.modified(n.fields)?t.visit(t.MOD,a=>{const u=Oe(a),o=l.get(u),d=n(a);o===d?r(d).mod(a):(l.set(u,d),r(o).rem(a),r(d).add(a))}):t.changed(t.MOD)&&t.visit(t.MOD,a=>{r(l.get(Oe(a))).mod(a)}),c&&t.visit(t.REFLOW,a=>{const u=Oe(a),o=l.get(u),d=n(a);o!==d&&(l.set(u,d),r(o).rem(a),r(d).add(a))}),t.clean()?i.runAfter(()=>{this.clean(),l.clean()}):l.empty>i.cleanThreshold&&i.runAfter(l.clean),t}});function TO(e){Pt.call(this,null,Ide,e)}ge(TO,Pt);function Ide(e){return this.value&&!e.modified()?this.value:fe(e.name)?Ne(e.name).map(t=>ol(t)):ol(e.name,e.as)}function m5(e){ue.call(this,Vb(),e)}m5.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]};ge(m5,ue,{transform(e,t){const i=t.dataflow,n=this.value,s=t.fork(),l=s.add,c=s.rem,r=s.mod,a=e.expr;let u=!0;t.visit(t.REM,d=>{const b=Oe(d);n.has(b)?n.delete(b):c.push(d)}),t.visit(t.ADD,d=>{a(d,e)?l.push(d):n.set(Oe(d),1)});function o(d){const b=Oe(d),h=a(d,e),p=n.get(b);h&&p?(n.delete(b),l.push(d)):!h&&!p?(n.set(b,1),c.push(d)):u&&h&&!p&&r.push(d)}return t.visit(t.MOD,o),e.modified()&&(u=!1,t.visit(t.REFLOW,o)),n.empty>i.cleanThreshold&&i.runAfter(n.clean),s}});function b5(e){ue.call(this,[],e)}b5.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]};ge(b5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE),n=e.fields,s=SO(n,e.as||[]),l=e.index||null,c=s.length;return i.rem=this.value,t.visit(t.SOURCE,r=>{const a=n.map(p=>p(r)),u=a.reduce((p,Z)=>Math.max(p,Z.length),0);let o=0,d,b,h;for(;o<u;++o){for(b=S3(r),d=0;d<c;++d)b[s[d]]=(h=a[d][o])==null?null:h;l&&(b[l]=o),i.add.push(b)}}),this.value=i.source=i.add,l&&i.modifies(l),i.modifies(s)}});function h5(e){ue.call(this,[],e)}h5.Definition={type:"Fold",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0,length:2,default:["key","value"]}]};ge(h5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE),n=e.fields,s=n.map(Zi),l=e.as||["key","value"],c=l[0],r=l[1],a=n.length;return i.rem=this.value,t.visit(t.SOURCE,u=>{for(let o=0,d;o<a;++o)d=S3(u),d[c]=s[o],d[r]=n[o](u),i.add.push(d)}),this.value=i.source=i.add,i.modifies(l)}});function f5(e){ue.call(this,null,e)}f5.Definition={type:"Formula",metadata:{modifies:!0},params:[{name:"expr",type:"expr",required:!0},{name:"as",type:"string",required:!0},{name:"initonly",type:"boolean"}]};ge(f5,ue,{transform(e,t){const i=e.expr,n=e.as,s=e.modified(),l=e.initonly?t.ADD:s?t.SOURCE:t.modified(i.fields)||t.modified(n)?t.ADD_MOD:t.ADD;return s&&(t=t.materialize().reflow(!0)),e.initonly||t.modifies(n),t.visit(l,c=>c[n]=i(c,e))}});function MO(e){ue.call(this,[],e)}ge(MO,ue,{transform(e,t){const i=t.fork(t.ALL),n=e.generator;let s=this.value,l=e.size-s.length,c,r,a;if(l>0){for(c=[];--l>=0;)c.push(a=Rt(n(e))),s.push(a);i.add=i.add.length?i.materialize(i.ADD).add.concat(c):c}else r=s.slice(0,-l),i.rem=i.rem.length?i.materialize(i.REM).rem.concat(r):r,s=s.slice(-l);return i.source=this.value=s,i}});const xy={value:"value",median:Rf,mean:UM,min:$r,max:_n},gde=[];function p5(e){ue.call(this,[],e)}p5.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]};function vde(e){var t=e.method||xy.value,i;if(xy[t]==null)me("Unrecognized imputation method: "+t);else return t===xy.value?(i=e.value!==void 0?e.value:0,()=>i):xy[t]}function zde(e){const t=e.field;return i=>i?t(i):NaN}ge(p5,ue,{transform(e,t){var i=t.fork(t.ALL),n=vde(e),s=zde(e),l=Zi(e.field),c=Zi(e.key),r=(e.groupby||[]).map(Zi),a=wde(t.source,e.groupby,e.key,e.keyvals),u=[],o=this.value,d=a.domain.length,b,h,p,Z,X,J,V,g,I,v;for(X=0,g=a.length;X<g;++X)for(b=a[X],p=b.values,h=NaN,V=0;V<d;++V)if(b[V]==null){for(Z=a.domain[V],v={_impute:!0},J=0,I=p.length;J<I;++J)v[r[J]]=p[J];v[c]=Z,v[l]=Number.isNaN(h)?h=n(b,s):h,u.push(Rt(v))}return u.length&&(i.add=i.materialize(i.ADD).add.concat(u)),o.length&&(i.rem=i.materialize(i.REM).rem.concat(o)),this.value=u,i}});function wde(e,t,i,n){var s=J=>J(X),l=[],c=n?n.slice():[],r={},a={},u,o,d,b,h,p,Z,X;for(c.forEach((J,V)=>r[J]=V+1),b=0,Z=e.length;b<Z;++b)X=e[b],p=i(X),h=r[p]||(r[p]=c.push(p)),o=(u=t?t.map(s):gde)+"",(d=a[o])||(d=a[o]=[],l.push(d),d.values=u),d[h-1]=X;return l.domain=c,l}function y5(e){uo.call(this,e)}y5.Definition={type:"JoinAggregate",metadata:{modifies:!0},params:[{name:"groupby",type:"field",array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"ops",type:"enum",array:!0,values:_p},{name:"as",type:"string",null:!0,array:!0},{name:"key",type:"field"}]};ge(y5,uo,{transform(e,t){const i=this,n=e.modified();let s;return i.value&&(n||t.modified(i._inputs,!0))?(s=i.value=n?i.init(e):{},t.visit(t.SOURCE,l=>i.add(l))):(s=i.value=i.value||this.init(e),t.visit(t.REM,l=>i.rem(l)),t.visit(t.ADD,l=>i.add(l))),i.changes(),t.visit(t.SOURCE,l=>{lt(l,s[i.cellkey(l)].tuple)}),t.reflow(n).modifies(this._outputs)},changes(){const e=this._adds,t=this._mods;let i,n;for(i=0,n=this._alen;i<n;++i)this.celltuple(e[i]),e[i]=null;for(i=0,n=this._mlen;i<n;++i)this.celltuple(t[i]),t[i]=null;this._alen=this._mlen=0}});function Z5(e){ue.call(this,null,e)}Z5.Definition={type:"KDE",metadata:{generates:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"cumulative",type:"boolean",default:!1},{name:"counts",type:"boolean",default:!1},{name:"bandwidth",type:"number",default:0},{name:"extent",type:"number",array:!0,length:2},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"as",type:"string",array:!0,default:["value","density"]}]};ge(Z5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){const n=t.materialize(t.SOURCE).source,s=a5(n,e.groupby,e.field),l=(e.groupby||[]).map(Zi),c=e.bandwidth,r=e.cumulative?"cdf":"pdf",a=e.as||["value","density"],u=[];let o=e.extent,d=e.steps||e.minsteps||25,b=e.steps||e.maxsteps||200;r!=="pdf"&&r!=="cdf"&&me("Invalid density method: "+r),e.resolve==="shared"&&(o||(o=Qc(n,e.field)),d=b=e.steps||b),s.forEach(h=>{const p=O3(h,c)[r],Z=e.counts?h.length:1,X=o||Qc(h);H2(p,X,d,b).forEach(J=>{const V={};for(let g=0;g<l.length;++g)V[l[g]]=h.dims[g];V[a[0]]=J[0],V[a[1]]=J[1]*Z,u.push(Rt(V))})}),this.value&&(i.rem=this.value),this.value=i.add=i.source=u}return i}});function KO(e){Pt.call(this,null,Hde,e)}ge(KO,Pt);function Hde(e){return this.value&&!e.modified()?this.value:V3(e.fields,e.flat)}function BO(e){ue.call(this,[],e),this._pending=null}ge(BO,ue,{transform(e,t){const i=t.dataflow;return this._pending?Nx(this,t,this._pending):Nde(e)?t.StopPropagation:e.values?Nx(this,t,i.parse(e.values,e.format)):e.async?{async:i.request(e.url,e.format).then(s=>(this._pending=Ne(s.data),l=>l.touch(this)))}:i.request(e.url,e.format).then(n=>Nx(this,t,Ne(n.data)))}});function Nde(e){return e.modified("async")&&!(e.modified("values")||e.modified("url")||e.modified("format"))}function Nx(e,t,i){i.forEach(Rt);const n=t.fork(t.NO_FIELDS&t.NO_SOURCE);return n.rem=e.value,e.value=n.source=n.add=i,e._pending=null,n.rem.length&&n.clean(!0),n}function W5(e){ue.call(this,{},e)}W5.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]};ge(W5,ue,{transform(e,t){const i=e.fields,n=e.index,s=e.values,l=e.default==null?null:e.default,c=e.modified(),r=i.length;let a=c?t.SOURCE:t.ADD,u=t,o=e.as,d,b,h;return s?(b=s.length,r>1&&!o&&me('Multi-field lookup requires explicit "as" parameter.'),o&&o.length!==r*b&&me('The "as" parameter has too few output field names.'),o=o||s.map(Zi),d=function(p){for(var Z=0,X=0,J,V;Z<r;++Z)if(V=n.get(i[Z](p)),V==null)for(J=0;J<b;++J,++X)p[o[X]]=l;else for(J=0;J<b;++J,++X)p[o[X]]=s[J](V)}):(o||me("Missing output field names."),d=function(p){for(var Z=0,X;Z<r;++Z)X=n.get(i[Z](p)),p[o[Z]]=X??l}),c?u=t.reflow(!0):(h=i.some(p=>t.modified(p.fields)),a|=h?t.MOD:0),t.visit(a,d),u.modifies(o)}});function _O(e){Pt.call(this,null,Rde,e)}ge(_O,Pt);function Rde(e){if(this.value&&!e.modified())return this.value;const t=e.extents,i=t.length;let n=1/0,s=-1/0,l,c;for(l=0;l<i;++l)c=t[l],c[0]<n&&(n=c[0]),c[1]>s&&(s=c[1]);return[n,s]}function OO(e){Pt.call(this,null,kde,e)}ge(OO,Pt);function kde(e){return this.value&&!e.modified()?this.value:e.values.reduce((t,i)=>t.concat(i),[])}function jO(e){ue.call(this,null,e)}ge(jO,ue,{transform(e,t){return this.modified(e.modified()),this.value=e,t.fork(t.NO_SOURCE|t.NO_FIELDS)}});function X5(e){uo.call(this,e)}X5.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:_p,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]};ge(X5,uo,{_transform:uo.prototype.transform,transform(e,t){return this._transform(Fde(e,t),t)}});function Fde(e,t){const i=e.field,n=e.value,s=(e.op==="count"?"__count__":e.op)||"sum",l=Wn(i).concat(Wn(n)),c=Lde(i,e.limit||0,t);return t.changed()&&e.set("__pivot__",null,null,!0),{key:e.key,groupby:e.groupby,ops:c.map(()=>s),fields:c.map(r=>Sde(r,i,n,l)),as:c.map(r=>r+""),modified:e.modified.bind(e)}}function Sde(e,t,i,n){return Ws(s=>t(s)===e?i(s):NaN,n,e+"")}function Lde(e,t,i){const n={},s=[];return i.visit(i.SOURCE,l=>{const c=e(l);n[c]||(n[c]=1,s.push(c))}),s.sort(Gb),t?s.slice(0,t):s}function EO(e){N2.call(this,e)}ge(EO,N2,{transform(e,t){const i=e.subflow,n=e.field,s=l=>this.subflow(Oe(l),i,t,l);return(e.modified("field")||n&&t.modified(Wn(n)))&&me("PreFacet does not support field modification."),this.initTargets(),n?(t.visit(t.MOD,l=>{const c=s(l);n(l).forEach(r=>c.mod(r))}),t.visit(t.ADD,l=>{const c=s(l);n(l).forEach(r=>c.add(Rt(r)))}),t.visit(t.REM,l=>{const c=s(l);n(l).forEach(r=>c.rem(r))})):(t.visit(t.MOD,l=>s(l).mod(l)),t.visit(t.ADD,l=>s(l).add(l)),t.visit(t.REM,l=>s(l).rem(l))),t.clean()&&t.runAfter(()=>this.clean()),t}});function J5(e){ue.call(this,null,e)}J5.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]};ge(J5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE),n=e.fields,s=SO(e.fields,e.as||[]),l=n?(r,a)=>Cde(r,a,n,s):G2;let c;return this.value?c=this.value:(t=t.addAll(),c=this.value={}),t.visit(t.REM,r=>{const a=Oe(r);i.rem.push(c[a]),c[a]=null}),t.visit(t.ADD,r=>{const a=l(r,Rt({}));c[Oe(r)]=a,i.add.push(a)}),t.visit(t.MOD,r=>{i.mod.push(l(r,c[Oe(r)]))}),i}});function Cde(e,t,i,n){for(let s=0,l=i.length;s<l;++s)t[n[s]]=i[s](e);return t}function PO(e){ue.call(this,null,e)}ge(PO,ue,{transform(e,t){return this.value=e.value,e.modified("value")?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}});function x5(e){ue.call(this,null,e)}x5.Definition={type:"Quantile",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"probs",type:"number",array:!0},{name:"step",type:"number",default:.01},{name:"as",type:"string",array:!0,default:["prob","value"]}]};const Tde=1e-14;ge(x5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=e.as||["prob","value"];if(this.value&&!e.modified()&&!t.changed())return i.source=this.value,i;const s=t.materialize(t.SOURCE).source,l=a5(s,e.groupby,e.field),c=(e.groupby||[]).map(Zi),r=[],a=e.step||.01,u=e.probs||Cn(a/2,1-Tde,a),o=u.length;return l.forEach(d=>{const b=T3(d,u);for(let h=0;h<o;++h){const p={};for(let Z=0;Z<c.length;++Z)p[c[Z]]=d.dims[Z];p[n[0]]=u[h],p[n[1]]=b[h],r.push(Rt(p))}}),this.value&&(i.rem=this.value),this.value=i.add=i.source=r,i}});function UO(e){ue.call(this,null,e)}ge(UO,ue,{transform(e,t){let i,n;return this.value?n=this.value:(i=t=t.addAll(),n=this.value={}),e.derive&&(i=t.fork(t.NO_SOURCE),t.visit(t.REM,s=>{const l=Oe(s);i.rem.push(n[l]),n[l]=null}),t.visit(t.ADD,s=>{const l=S3(s);n[Oe(s)]=l,i.add.push(l)}),t.visit(t.MOD,s=>{const l=n[Oe(s)];for(const c in s)l[c]=s[c],i.modifies(c);i.mod.push(l)})),i}});function Y5(e){ue.call(this,[],e),this.count=0}Y5.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]};ge(Y5,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE),n=e.modified("size"),s=e.size,l=this.value.reduce((o,d)=>(o[Oe(d)]=1,o),{});let c=this.value,r=this.count,a=0;function u(o){let d,b;c.length<s?c.push(o):(b=~~((r+1)*ml()),b<c.length&&b>=a&&(d=c[b],l[Oe(d)]&&i.rem.push(d),c[b]=o)),++r}if(t.rem.length&&(t.visit(t.REM,o=>{const d=Oe(o);l[d]&&(l[d]=-1,i.rem.push(o)),--r}),c=c.filter(o=>l[Oe(o)]!==-1)),(t.rem.length||n)&&c.length<s&&t.source&&(a=r=c.length,t.visit(t.SOURCE,o=>{l[Oe(o)]||u(o)}),a=-1),n&&c.length>s){const o=c.length-s;for(let d=0;d<o;++d)l[Oe(c[d])]=-1,i.rem.push(c[d]);c=c.slice(o)}return t.mod.length&&t.visit(t.MOD,o=>{l[Oe(o)]&&i.mod.push(o)}),t.add.length&&t.visit(t.ADD,u),(t.add.length||a<0)&&(i.add=c.filter(o=>!l[Oe(o)])),this.count=r,this.value=i.source=c,i}});function G5(e){ue.call(this,null,e)}G5.Definition={type:"Sequence",metadata:{generates:!0,changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]};ge(G5,ue,{transform(e,t){if(this.value&&!e.modified())return;const i=t.materialize().fork(t.MOD),n=e.as||"data";return i.rem=this.value?t.rem.concat(this.value):t.rem,this.value=Cn(e.start,e.stop,e.step||1).map(s=>{const l={};return l[n]=s,Rt(l)}),i.add=t.add.concat(this.value),i}});function $O(e){ue.call(this,null,e),this.modified(!0)}ge($O,ue,{transform(e,t){return this.value=t.source,t.changed()?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}});function V5(e){ue.call(this,null,e)}const QO=["unit0","unit1"];V5.Definition={type:"TimeUnit",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"units",type:"enum",values:z3,array:!0},{name:"step",type:"number",default:1},{name:"maxbins",type:"number",default:40},{name:"extent",type:"date",array:!0},{name:"timezone",type:"enum",default:"local",values:["local","utc"]},{name:"as",type:"string",array:!0,length:2,default:QO}]};ge(V5,ue,{transform(e,t){const i=e.field,n=e.interval!==!1,s=e.timezone==="utc",l=this._floor(e,t),c=(s?gb:Ib)(l.unit).offset,r=e.as||QO,a=r[0],u=r[1],o=l.step;let d=l.start||1/0,b=l.stop||-1/0,h=t.ADD;return(e.modified()||t.changed(t.REM)||t.modified(Wn(i)))&&(t=t.reflow(!0),h=t.SOURCE,d=1/0,b=-1/0),t.visit(h,p=>{const Z=i(p);let X,J;Z==null?(p[a]=null,n&&(p[u]=null)):(p[a]=X=J=l(Z),n&&(p[u]=J=c(X,o)),X<d&&(d=X),J>b&&(b=J))}),l.start=d,l.stop=b,t.modifies(n?r:a)},_floor(e,t){const i=e.timezone==="utc",{units:n,step:s}=e.units?{units:e.units,step:e.step||1}:P_({extent:e.extent||Qc(t.materialize(t.SOURCE).source,e.field),maxbins:e.maxbins}),l=w3(n),c=this.value||{},r=(i?C_:L_)(l,s);return r.unit=Zt(l),r.units=l,r.step=s,r.start=c.start,r.stop=c.stop,this.value=r}});function DO(e){ue.call(this,Vb(),e)}ge(DO,ue,{transform(e,t){const i=t.dataflow,n=e.field,s=this.value,l=r=>s.set(n(r),r);let c=!0;return e.modified("field")||t.modified(n.fields)?(s.clear(),t.visit(t.SOURCE,l)):t.changed()?(t.visit(t.REM,r=>s.delete(n(r))),t.visit(t.ADD,l)):c=!1,this.modified(c),s.empty>i.cleanThreshold&&i.runAfter(s.clean),t.fork()}});function AO(e){ue.call(this,null,e)}ge(AO,ue,{transform(e,t){(!this.value||e.modified("field")||e.modified("sort")||t.changed()||e.sort&&t.modified(e.sort.fields))&&(this.value=(e.sort?t.source.slice().sort(sd(e.sort)):t.source).map(e.field))}});function Mde(e,t,i,n){const s=Of[e](t,i);return{init:s.init||Sa,update:function(l,c){c[n]=s.next(l)}}}const Of={row_number:function(){return{next:e=>e.index+1}},rank:function(){let e;return{init:()=>e=1,next:t=>{const i=t.index,n=t.data;return i&&t.compare(n[i-1],n[i])?e=i+1:e}}},dense_rank:function(){let e;return{init:()=>e=1,next:t=>{const i=t.index,n=t.data;return i&&t.compare(n[i-1],n[i])?++e:e}}},percent_rank:function(){const e=Of.rank(),t=e.next;return{init:e.init,next:i=>(t(i)-1)/(i.data.length-1)}},cume_dist:function(){let e;return{init:()=>e=0,next:t=>{const i=t.data,n=t.compare;let s=t.index;if(e<s){for(;s+1<i.length&&!n(i[s],i[s+1]);)++s;e=s}return(1+e)/i.length}}},ntile:function(e,t){t=+t,t>0||me("ntile num must be greater than zero.");const i=Of.cume_dist(),n=i.next;return{init:i.init,next:s=>Math.ceil(t*n(s))}},lag:function(e,t){return t=+t||1,{next:i=>{const n=i.index-t;return n>=0?e(i.data[n]):null}}},lead:function(e,t){return t=+t||1,{next:i=>{const n=i.index+t,s=i.data;return n<s.length?e(s[n]):null}}},first_value:function(e){return{next:t=>e(t.data[t.i0])}},last_value:function(e){return{next:t=>e(t.data[t.i1-1])}},nth_value:function(e,t){return t=+t,t>0||me("nth_value nth must be greater than zero."),{next:i=>{const n=i.i0+(t-1);return n<i.i1?e(i.data[n]):null}}},prev_value:function(e){let t;return{init:()=>t=null,next:i=>{const n=e(i.data[i.index]);return n!=null?t=n:t}}},next_value:function(e){let t,i;return{init:()=>(t=null,i=-1),next:n=>{const s=n.data;return n.index<=i?t:(i=Kde(e,s,n.index))<0?(i=s.length,t=null):t=e(s[i])}}}};function Kde(e,t,i){for(let n=t.length;i<n;++i)if(e(t[i])!=null)return i;return-1}const Bde=Object.keys(Of);function qO(e){const t=Ne(e.ops),i=Ne(e.fields),n=Ne(e.params),s=Ne(e.aggregate_params),l=Ne(e.as),c=this.outputs=[],r=this.windows=[],a={},u={},o=[],d=[];let b=!0;function h(p){Ne(Wn(p)).forEach(Z=>a[Z]=1)}h(e.sort),t.forEach((p,Z)=>{const X=i[Z],J=n[Z],V=s[Z]||null,g=Zi(X),I=vO(p,g,l[Z]);if(h(X),c.push(I),Re(Of,p))r.push(Mde(p,X,J,I));else{if(X==null&&p!=="count"&&me("Null aggregate field specified."),p==="count"){o.push(I);return}b=!1;let v=u[g];v||(v=u[g]=[],v.field=X,d.push(v)),v.push(zO(p,V,I))}}),(o.length||d.length)&&(this.cell=_de(d,o,b)),this.inputs=Object.keys(a)}const e4=qO.prototype;e4.init=function(){this.windows.forEach(e=>e.init()),this.cell&&this.cell.init()};e4.update=function(e,t){const i=this.cell,n=this.windows,s=e.data,l=n&&n.length;let c;if(i){for(c=e.p0;c<e.i0;++c)i.rem(s[c]);for(c=e.p1;c<e.i1;++c)i.add(s[c]);i.set(t)}for(c=0;c<l;++c)n[c].update(e,t)};function _de(e,t,i){e=e.map(a=>HO(a,a.field));const n={num:0,agg:null,store:!1,count:t};if(!i)for(var s=e.length,l=n.agg=Array(s),c=0;c<s;++c)l[c]=new e[c](n);if(n.store)var r=n.data=new i5;return n.add=function(a){if(n.num+=1,!i){r&&r.add(a);for(let u=0;u<s;++u)l[u].add(l[u].get(a),a)}},n.rem=function(a){if(n.num-=1,!i){r&&r.rem(a);for(let u=0;u<s;++u)l[u].rem(l[u].get(a),a)}},n.set=function(a){let u,o;for(r&&r.values(),u=0,o=t.length;u<o;++u)a[t[u]]=n.num;if(!i)for(u=0,o=l.length;u<o;++u)l[u].set(a)},n.init=function(){n.num=0,r&&r.reset();for(let a=0;a<s;++a)l[a].init()},n}function I5(e){ue.call(this,{},e),this._mlen=0,this._mods=[]}I5.Definition={type:"Window",metadata:{modifies:!0},params:[{name:"sort",type:"compare"},{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Bde.concat(_p)},{name:"params",type:"number",null:!0,array:!0},{name:"aggregate_params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"frame",type:"number",null:!0,array:!0,length:2,default:[null,0]},{name:"ignorePeers",type:"boolean",default:!1}]};ge(I5,ue,{transform(e,t){this.stamp=t.stamp;const i=e.modified(),n=sd(e.sort),s=hG(e.groupby),l=r=>this.group(s(r));let c=this.state;(!c||i)&&(c=this.state=new qO(e)),i||t.modified(c.inputs)?(this.value={},t.visit(t.SOURCE,r=>l(r).add(r))):(t.visit(t.REM,r=>l(r).remove(r)),t.visit(t.ADD,r=>l(r).add(r)));for(let r=0,a=this._mlen;r<a;++r)Ode(this._mods[r],c,n,e);return this._mlen=0,this._mods=[],t.reflow(i).modifies(c.outputs)},group(e){let t=this.value[e];return t||(t=this.value[e]=NO(Oe),t.stamp=-1),t.stamp<this.stamp&&(t.stamp=this.stamp,this._mods[this._mlen++]=t),t}});function Ode(e,t,i,n){const s=n.sort,l=s&&!n.ignorePeers,c=n.frame||[null,0],r=e.data(i),a=r.length,u=l?DX(s):null,o={i0:0,i1:0,p0:0,p1:0,index:0,data:r,compare:s||In(-1)};t.init();for(let d=0;d<a;++d)jde(o,c,d,a),l&&Ede(o,u),t.update(o,r[d])}
46function jde(e,t,i,n){e.p0=e.i0,e.p1=e.i1,e.i0=t[0]==null?0:Math.max(0,i-Math.abs(t[0])),e.i1=t[1]==null?n:Math.min(n,i+Math.abs(t[1])+1),e.index=i}function Ede(e,t){const i=e.i0,n=e.i1-1,s=e.compare,l=e.data,c=l.length-1;i>0&&!s(l[i],l[i-1])&&(e.i0=t.left(l,l[i])),n<c&&!s(l[n],l[n+1])&&(e.i1=t.right(l,l[n]))}const Pde=Object.freeze(Object.defineProperty({__proto__:null,aggregate:uo,bin:n5,collect:s5,compare:RO,countpattern:l5,cross:c5,density:r5,dotbin:o5,expression:CO,extent:u5,facet:N2,field:TO,filter:m5,flatten:b5,fold:h5,formula:f5,generate:MO,impute:p5,joinaggregate:y5,kde:Z5,key:KO,load:BO,lookup:W5,multiextent:_O,multivalues:OO,params:jO,pivot:X5,prefacet:EO,project:J5,proxy:PO,quantile:x5,relay:UO,sample:Y5,sequence:G5,sieve:$O,subflow:d5,timeunit:V5,tupleindex:DO,values:AO,window:I5},Symbol.toStringTag,{value:"Module"}));function to(e,t){if(typeof document<"u"&&document.createElement){const i=document.createElement("canvas");if(i&&i.getContext)return i.width=e,i.height=t,i}return null}const Ude=()=>typeof Image<"u"?Image:null,t4=at("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),i4=at("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),n4=at("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),s4=at("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),l4=at("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),c4=at("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),r4=at("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),a4=at("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),o4=at("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),u4=at("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),Ut=e=>sM(e[e.length-1]);var d4=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(at);const m4=Ut(d4);var b4=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(at);const h4=Ut(b4);var f4=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(at);const p4=Ut(f4);var y4=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(at);const Z4=Ut(y4);var fG=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(at);const IW=Ut(fG);var W4=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(at);const X4=Ut(W4);var pG=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(at);const gW=Ut(pG);var J4=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d
467191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(at);const x4=Ut(J4);var Y4=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(at);const G4=Ut(Y4);var V4=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(at);const I4=Ut(V4);var g4=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(at);const v4=Ut(g4);var z4=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(at);const w4=Ut(z4);var H4=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(at);const N4=Ut(H4);var R4=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(at);const k4=Ut(R4);var F4=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(at);const S4=Ut(F4);var L4=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(at);const C4=Ut(L4);var T4=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(at);const M4=Ut(T4);var K4=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(at);const B4=Ut(K4);var _4=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(at);const O4=Ut(_4);var j4=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(at);const E4=Ut(j4);var P4=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(at);const U4=Ut(P4);var $4=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ec
46ae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(at);const Q4=Ut($4);var D4=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(at);const A4=Ut(D4);var q4=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(at);const ej=Ut(q4);var tj=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(at);const ij=Ut(tj);var nj=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(at);const sj=Ut(nj);var lj=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(at);const cj=Ut(lj);function rj(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}const aj=PX(Vu(300,.5,0),Vu(-240,.5,1));var oj=PX(Vu(-100,.75,.35),Vu(80,1.5,.8)),uj=PX(Vu(260,.75,.35),Vu(80,1.5,.8)),Yy=Vu();function dj(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Yy.h=360*e-100,Yy.s=1.5-1.5*t,Yy.l=.8-.9*t,Yy+""}var Gy=ro(),$de=Math.PI/3,Qde=Math.PI*2/3;function mj(e){var t;return e=(.5-e)*Math.PI,Gy.r=255*(t=Math.sin(e))*t,Gy.g=255*(t=Math.sin(e+$de))*t,Gy.b=255*(t=Math.sin(e+Qde))*t,Gy+""}function bj(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function R2(e){var t=e.length;return function(i){return e[Math.max(0,Math.min(t-1,Math.floor(i*t)))]}}const hj=R2(at("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc
465c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var fj=R2(at("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),pj=R2(at("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),yj=R2(at("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function g5(e,t,i){const n=e-t+i*2;return e?n>0?n:1:0}const Dde="identity",Sm="linear",Ar="log",Op="pow",jp="sqrt",k2="symlog",Nu="time",Ru="utc",_c="sequential",zb="diverging",Lm="quantile",F2="quantize",S2="threshold",v5="ordinal",yG="point",Zj="band",z5="bin-ordinal",Li="continuous",Ep="discrete",Pp="discretizing",pl="interpolating",w5="temporal";function Ade(e){return function(t){let i=t[0],n=t[1],s;return n<i&&(s=i,i=n,n=s),[e.invert(i),e.invert(n)]}}function qde(e){return function(t){const i=e.range();let n=t[0],s=t[1],l=-1,c,r,a,u;
vendor: 7,085 bytes, line 46
46for(s<n&&(r=n,n=s,s=r),a=0,u=i.length;a<u;++a)i[a]>=n&&i[a]<=s&&(l<0&&(l=a),c=a);if(!(l<0))return n=e.invertExtent(i[l]),s=e.invertExtent(i[c]),[n[0]===void 0?n[1]:n[0],s[1]===void 0?s[0]:s[1]]}}function H5(){const e=QX().unknown(void 0),t=e.domain,i=e.range;let n=[0,1],s,l,c=!1,r=0,a=0,u=.5;delete e.unknown;function o(){const d=t().length,b=n[1]<n[0],h=n[1-b],p=g5(d,r,a);let Z=n[b-0];s=(h-Z)/(p||1),c&&(s=Math.floor(s)),Z+=(h-Z-s*(d-r))*u,l=s*(1-r),c&&(Z=Math.round(Z),l=Math.round(l));const X=Cn(d).map(J=>Z+s*J);return i(b?X.reverse():X)}return e.domain=function(d){return arguments.length?(t(d),o()):t()},e.range=function(d){return arguments.length?(n=[+d[0],+d[1]],o()):n.slice()},e.rangeRound=function(d){return n=[+d[0],+d[1]],c=!0,o()},e.bandwidth=function(){return l},e.step=function(){return s},e.round=function(d){return arguments.length?(c=!!d,o()):c},e.padding=function(d){return arguments.length?(a=Math.max(0,Math.min(1,d)),r=a,o()):r},e.paddingInner=function(d){return arguments.length?(r=Math.max(0,Math.min(1,d)),o()):r},e.paddingOuter=function(d){return arguments.length?(a=Math.max(0,Math.min(1,d)),o()):a},e.align=function(d){return arguments.length?(u=Math.max(0,Math.min(1,d)),o()):u},e.invertRange=function(d){if(d[0]==null||d[1]==null)return;const b=n[1]<n[0],h=b?i().reverse():i(),p=h.length-1;let Z=+d[0],X=+d[1],J,V,g;if(!(Z!==Z||X!==X)&&(X<Z&&(g=Z,Z=X,X=g),!(X<h[0]||Z>n[1-b])))return J=Math.max(0,Nf(h,Z)-1),V=Z===X?J:Nf(h,X)-1,Z-h[J]>l+1e-10&&++J,b&&(g=J,J=p-V,V=p-g),J>V?void 0:t().slice(J,V+1)},e.invert=function(d){const b=e.invertRange([d,d]);return b&&b[0]},e.copy=function(){return H5().domain(t()).range(n).round(c).paddingInner(r).paddingOuter(a).align(u)},o()}function Wj(e){const t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return Wj(t())},e}function eme(){return Wj(H5().paddingInner(1))}var tme=Array.prototype.map;function ime(e){return tme.call(e,yn)}const nme=Array.prototype.slice;function Xj(){let e=[],t=[];function i(n){return n==null||n!==n?void 0:t[(Nf(e,n)-1)%t.length]}return i.domain=function(n){return arguments.length?(e=ime(n),i):e.slice()},i.range=function(n){return arguments.length?(t=nme.call(n),i):t.slice()},i.tickFormat=function(n,s){return Nte(e[0],Zt(e),n??10,s)},i.copy=function(){return Xj().domain(i.domain()).range(i.range())},i}const vW=new Map,Jj=Symbol("vega_scale");function xj(e){return e[Jj]=!0,e}function rk(e){return e&&e[Jj]===!0}function sme(e,t,i){const n=function(){const l=t();return l.invertRange||(l.invertRange=l.invert?Ade(l):l.invertExtent?qde(l):void 0),l.type=e,xj(l)};return n.metadata=_l(Ne(i)),n}function wt(e,t,i){return arguments.length>1?(vW.set(e,sme(e,t,i)),this):Yj(e)?vW.get(e):void 0}wt(Dde,cM);wt(Sm,$X,Li);wt(Ar,rM,[Li,Ar]);wt(Op,aM,Li);wt(jp,Vte,Li);wt(k2,oM,Li);wt(Nu,uM,[Li,w5]);wt(Ru,dM,[Li,w5]);wt(_c,mM,[Li,pl]);wt(`${_c}-${Sm}`,mM,[Li,pl]);wt(`${_c}-${Ar}`,Ite,[Li,pl,Ar]);wt(`${_c}-${Op}`,gte,[Li,pl]);wt(`${_c}-${jp}`,vte,[Li,pl]);wt(`${_c}-${k2}`,zte,[Li,pl]);wt(`${zb}-${Sm}`,bM,[Li,pl]);wt(`${zb}-${Ar}`,hM,[Li,pl,Ar]);wt(`${zb}-${Op}`,fM,[Li,pl]);wt(`${zb}-${jp}`,wte,[Li,pl]);wt(`${zb}-${k2}`,pM,[Li,pl]);wt(Lm,yM,[Pp,Lm]);wt(F2,Hte,Pp);wt(S2,ZM,Pp);wt(z5,Xj,[Ep,Pp]);wt(v5,QX,Ep);wt(Zj,H5,Ep);wt(yG,eme,Ep);function Yj(e){return vW.has(e)}function cd(e,t){const i=vW.get(e);return i&&i.metadata[t]}function N5(e){return cd(e,Li)}function Cm(e){return cd(e,Ep)}function ZG(e){return cd(e,Pp)}function Gj(e){return cd(e,Ar)}function lme(e){return cd(e,w5)}function Vj(e){return cd(e,pl)}function Ij(e){return cd(e,Lm)}const cme=["clamp","base","constant","exponent"];function gj(e,t){const i=t[0],n=Zt(t)-i;return function(s){return e(i+s*n)}}function L2(e,t,i){return Gp(R5(t||"rgb",i),e)}function vj(e,t){const i=new Array(t),n=t+1;for(let s=0;s<t;)i[s]=e(++s/n);return i}function zj(e,t,i){const n=i-t;let s,l,c;return!n||!Number.isFinite(n)?In(.5):(s=(l=e.type).indexOf("-"),l=s<0?l:l.slice(s+1),c=wt(l)().domain([t,i]).range([0,1]),cme.forEach(r=>e[r]?c[r](e[r]()):0),c)}function R5(e,t){const i=sne[rme(e)];return t!=null&&i&&i.gamma?i.gamma(t):i}function rme(e){return"interpolate"+e.toLowerCase().split("-").map(t=>t[0].toUpperCase()+t.slice(1)).join("")}const ame={blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033
46059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},ome={accent:i4,category10:t4,category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",dark2:n4,observable10:s4,paired:l4,pastel1:c4,pastel2:r4,set1:a4,set2:o4,set3:u4,tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5"};function wj(e){if(fe(e))return e;const t=e.length/6|0,i=new Array(t);for(let n=0;n<t;)i[n]="#"+e.slice(n*6,++n*6);return i}function Hj(e,t){for(const i in e)k5(i,t(e[i]))}const ak={};Hj(ome,wj);Hj(ame,e=>L2(wj(e)));function k5(e,t){return e=e&&e.toLowerCase(),arguments.length>1?(ak[e]=t,this):ak[e]}const GZ="symbol",ume="discrete",dme="gradient",mme=e=>fe(e)?e.map(t=>String(t)):String(e),bme=(e,t)=>e[1]-t[1],hme=(e,t)=>t[1]-e[1];function F5(e,t,i){let n;return zt(t)&&(e.bins&&(t=Math.max(t,e.bins.length)),i!=null&&(t=Math.min(t,Math.floor(Mp(e.domain())/i||1)+1))),we(t)&&(n=t.step,t=t.interval),He(t)&&(t=e.type===Nu?Ib(t):e.type==Ru?gb(t):me("Only time and utc scales accept interval strings."),n&&(t=t.every(n))),t}function Nj(e,t,i){let n=e.range(),s=n[0],l=Zt(n),c=bme;if(s>l&&(n=l,l=s,s=n,c=hme),s=Math.floor(s),l=Math.ceil(l),t=t.map(r=>[r,e(r)]).filter(r=>s<=r[1]&&r[1]<=l).sort(c).map(r=>r[0]),i>0&&t.length>1){const r=[t[0],Zt(t)];for(;t.length>i&&t.length>=3;)t=t.filter((a,u)=>!(u%2));t.length<3&&(t=r)}return t}function S5(e,t){return e.bins?Nj(e,e.bins,t):e.ticks?e.ticks(t):e.domain()}function Rj(e,t,i,n,s,l){const c=t.type;let r=mme;if(c===Nu||s===Nu)r=e.timeFormat(n);else if(c===Ru||s===Ru)r=e.utcFormat(n);else if(Gj(c)){const a=e.formatFloat(n);if(l||t.bins)r=a;else{const u=kj(t,i,!1);r=o=>u(o)?a(o):""}}else if(t.tickFormat){const a=t.domain();r=e.formatSpan(a[0],a[a.length-1],i,n)}else n&&(r=e.format(n));return r}function kj(e,t,i){const n=S5(e,t),s=e.base(),l=Math.log(s),c=Math.max(1,s*t/n.length),r=a=>{let u=a/Math.pow(s,Math.round(Math.log(a)/l));return u*s<s-.5&&(u*=s),u<=c};return i?n.filter(r):r}const WG={[Lm]:"quantiles",[F2]:"thresholds",[S2]:"domain"},Fj={[Lm]:"quantiles",[F2]:"domain"};function Sj(e,t){return e.bins?yme(e.bins):e.type===Ar?kj(e,t,!0):WG[e.type]?pme(e[WG[e.type]]()):S5(e,t)}function fme(e,t,i){const n=t[Fj[t.type]](),s=n.length;let l=s>1?n[1]-n[0]:n[0],c;for(c=1;c<s;++c)l=Math.min(l,n[c]-n[c-1]);return e.formatSpan(0,l,3*10,i)}function pme(e){const t=[-1/0].concat(e);return t.max=1/0,t}function yme(e){const t=e.slice(0,-1);return t.max=Zt(e),t}const Zme=e=>WG[e.type]||e.bins;function Lj(e,t,i,n,s,l,c){const r=Fj[t.type]&&l!==Nu&&l!==Ru?fme(e,t,s
vendor: 34,452 bytes, line 46
46):Rj(e,t,i,s,l,c);return n===GZ&&Zme(t)?Wme(r):n===ume?Xme(r):Jme(r)}const Wme=e=>(t,i,n)=>{const s=ok(n[i+1],ok(n.max,1/0)),l=uk(t,e),c=uk(s,e);return l&&c?l+" â "+c:c?"< "+c:"⥠"+l},ok=(e,t)=>e??t,Xme=e=>(t,i)=>i?e(t):null,Jme=e=>t=>e(t),uk=(e,t)=>Number.isFinite(e)?t(e):null;function xme(e){const t=e.domain(),i=t.length-1;let n=+t[0],s=+Zt(t),l=s-n;if(e.type===S2){const c=i?l/i:.1;n-=c,s+=c,l=s-n}return c=>(c-n)/l}function Yme(e,t,i,n){const s=n||t.type;return He(i)&&lme(s)&&(i=i.replace(/%a/g,"%A").replace(/%b/g,"%B")),!i&&s===Nu?e.timeFormat("%A, %d %B %Y, %X"):!i&&s===Ru?e.utcFormat("%A, %d %B %Y, %X UTC"):Lj(e,t,5,null,i,n,!0)}function Cj(e,t,i){i=i||{};const n=Math.max(3,i.maxlen||7),s=Yme(e,t,i.format,i.formatType);if(ZG(t.type)){const l=Sj(t).slice(1).map(s),c=l.length;return`${c} boundar${c===1?"y":"ies"}: ${l.join(", ")}`}else if(Cm(t.type)){const l=t.domain(),c=l.length,r=c>n?l.slice(0,n-2).map(s).join(", ")+", ending with "+l.slice(-1).map(s):l.map(s).join(", ");return`${c} value${c===1?"":"s"}: ${r}`}else{const l=t.domain();return`values from ${s(l[0])} to ${s(Zt(l))}`}}let Tj=0;function Gme(){Tj=0}const zW="p_";function L5(e){return e&&e.gradient}function Mj(e,t,i){const n=e.gradient;let s=e.id,l=n==="radial"?zW:"";return s||(s=e.id="gradient_"+Tj++,n==="radial"?(e.x1=Xc(e.x1,.5),e.y1=Xc(e.y1,.5),e.r1=Xc(e.r1,0),e.x2=Xc(e.x2,.5),e.y2=Xc(e.y2,.5),e.r2=Xc(e.r2,.5),l=zW):(e.x1=Xc(e.x1,0),e.y1=Xc(e.y1,0),e.x2=Xc(e.x2,1),e.y2=Xc(e.y2,0))),t[s]=e,"url("+(i||"")+"#"+l+s+")"}function Xc(e,t){return e??t}function Kj(e,t){var i=[],n;return n={gradient:"linear",x1:e?e[0]:0,y1:e?e[1]:0,x2:t?t[0]:1,y2:t?t[1]:0,stops:i,stop:function(s,l){return i.push({offset:s,color:l}),n}}}const dk={basis:{curve:vM},"basis-closed":{curve:gM},"basis-open":{curve:IM},bundle:{curve:_M,tension:"beta",value:.85},cardinal:{curve:BM,tension:"tension",value:0},"cardinal-open":{curve:KM,tension:"tension",value:0},"cardinal-closed":{curve:MM,tension:"tension",value:0},"catmull-rom":{curve:TM,tension:"alpha",value:.5},"catmull-rom-closed":{curve:CM,tension:"alpha",value:.5},"catmull-rom-open":{curve:LM,tension:"alpha",value:.5},linear:{curve:qX},"linear-closed":{curve:VM},monotone:{horizontal:GM,vertical:YM},natural:{curve:xM},step:{curve:JM},"step-after":{curve:XM},"step-before":{curve:WM}};function C5(e,t,i){var n=Re(dk,e)&&dk[e],s=null;return n&&(s=n.curve||n[t||"vertical"],n.tension&&i!=null&&(s=s[n.tension](i))),s}const Vme={m:2,l:2,h:1,v:1,z:0,c:6,s:4,q:4,t:2,a:7},Ime=/[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi,gme=/^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/,vme=/^((\s+,?\s*)|(,\s*))/,zme=/^[01]/;function Tm(e){const t=[];return(e.match(Ime)||[]).forEach(n=>{let s=n[0];const l=s.toLowerCase(),c=Vme[l],r=wme(l,c,n.slice(1).trim()),a=r.length;if(a<c||a&&a%c!==0)throw Error("Invalid SVG path, incorrect parameter count");if(t.push([s,...r.slice(0,c)]),a!==c){l==="m"&&(s=s==="M"?"L":"l");for(let u=c;u<a;u+=c)t.push([s,...r.slice(u,u+c)])}}),t}function wme(e,t,i){const n=[];for(let s=0;t&&s<i.length;)for(let l=0;l<t;++l){const c=e==="a"&&(l===3||l===4)?zme:gme,r=i.slice(s).match(c);if(r===null)throw Error("Invalid SVG path, incorrect parameter type");s+=r[0].length,n.push(+r[0]);const a=i.slice(s).match(vme);a!==null&&(s+=a[0].length)}return n}const mo=Math.PI/180,Hme=1e-14,au=Math.PI/2,zc=Math.PI*2,Td=Math.sqrt(3)/2;var Rx={},kx={},Bj=[].join;function Nme(e,t,i,n,s,l,c,r,a){const u=Bj.call(arguments);if(Rx[u])return Rx[u];const o=c*mo,d=Math.sin(o),b=Math.cos(o);i=Math.abs(i),n=Math.abs(n);const h=b*(r-e)*.5+d*(a-t)*.5,p=b*(a-t)*.5-d*(r-e)*.5;let Z=h*h/(i*i)+p*p/(n*n);Z>1&&(Z=Math.sqrt(Z),i*=Z,n*=Z);const X=b/i,J=d/i,V=-d/n,g=b/n,I=X*r+J*a,v=V*r+g*a,k=X*e+J*t,N=V*e+g*t;let f=1/((k-I)*(k-I)+(N-v)*(N-v))-.25;f<0&&(f=0);let w=Math.sqrt(f);l==s&&(w=-w);const x=.5*(I+k)-w*(N-v),R=.5*(v+N)+w*(k-I),K=Math.atan2(v-R,I-x);let _=Math.atan2(N-R,k-x)-K;_<0&&l===1?_+=zc:_>0&&l===0&&(_-=zc);const j=Math.ceil(Math.abs(_/(au+.001))),U=[];for(let $=0;$<j;++$){const te=K+$*_/j,E=K+($+1)*_/j;U[$]=[x,R,te,E,i,n,d,b]}return Rx[u]=U}function Rme(e){const t=Bj.call(e);if(kx[t])return kx[t];var i=e[0],n=e[1],s=e[2],l=e[3],c=e[4],r=e[5],a=e[6],u=e[7];const o=u*c,d=-a*r,b=a*c,h=u*r,p=Math.cos(s),Z=Math.sin(s),X=Math.cos(l),J=Math.sin(l),V=.5*(l-s),g=Math.sin(V*.5),I=8/3*g*g/Math.sin(V),v=i+p-I*Z,k=n+Z+I*p,N=i+X,C=n+J,f=N+I*J,w=C-I*X;return kx[t]=[o*v+d*k,b*v+h*k,o*f+d*w,b*f+h*w,o*N+d*C,b*N+h*C]}const Ps=["l",0,0,0,0,0,0,0];function kme(e,t,i){const n=Ps[0]=e[0];if(n==="a"||n==="A")Ps[1]=t*e[1],Ps[2]=i*e[2],Ps[3]=e[3],Ps[4]=e[4],Ps[5]=e[5],Ps[6]=t*e[6],Ps[7]=i*e[7];else if(n==="h"||n==="H")Ps[1]=t*e[1];else if(n==="v"||n==="V")Ps[1]=i*e[1];else for(var s=1,l=e.length;s<l;++s)Ps[s]=(s%2==1?t:i)*e[s];return Ps}function jf(e,t,i,n,s,l){var c,r=null,a=0,u=0,o=0,d=0,b,h,p,Z,X=0,J=0;i==null&&(i=0),n==null&&(n=0),s==null&&(s=1),l==null&&(l=s),e.beginPath&&e.beginPath();for(var V=0,g=t.length;V<g;++V){switch(c=t[V],(s!==1||l!==1)&&(c=kme(c,s,l)),c[0]){case"l":a+=c[1],u+=c[2],e.lineTo(a+i,u+n);break;case"L":a=c[1],u=c[2],e.lineTo(a+i,u+n);break;case"h":a+=c[1],e.lineTo(a+i,u+n);break;case"H":a=c[1],e.lineTo(a+i,u+n);break;case"v":u+=c[1],e.lineTo(a+i,u+n);break;case"V":u=c[1],e.lineTo(a+i,u+n);break;case"m":a+=c[1],u+=c[2],X=a,J=u,e.moveTo(a+i,u+n);break;case"M":a=c[1],u=c[2],X=a,J=u,e.moveTo(a+i,u+n);break;case"c":b=a+c[5],h=u+c[6],o=a+c[3],d=u+c[4],e.bezierCurveTo(a+c[1]+i,u+c[2]+n,o+i,d+n,b+i,h+n),a=b,u=h;break;case"C":a=c[5],u=c[6],o=c[3],d=c[4],e.bezierCurveTo(c[1]+i,c[2]+n,o+i,d+n,a+i,u+n);break;case"s":b=a+c[3],h=u+c[4],o=2*a-o,d=2*u-d,e.bezierCurveTo(o+i,d+n,a+c[1]+i,u+c[2]+n,b+i,h+n),o=a+c[1],d=u+c[2],a=b,u=h;break;case"S":b=c[3],h=c[4],o=2*a-o,d=2*u-d,e.bezierCurveTo(o+i,d+n,c[1]+i,c[2]+n,b+i,h+n),a=b,u=h,o=c[1],d=c[2];break;case"q":b=a+c[3],h=u+c[4],o=a+c[1],d=u+c[2],e.quadraticCurveTo(o+i,d+n,b+i,h+n),a=b,u=h;break;case"Q":b=c[3],h=c[4],e.quadraticCurveTo(c[1]+i,c[2]+n,b+i,h+n),a=b,u=h,o=c[1],d=c[2];break;case"t":b=a+c[1],h=u+c[2],r[0].match(/[QqTt]/)===null?(o=a,d=u):r[0]==="t"?(o=2*a-p,d=2*u-Z):r[0]==="q"&&(o=2*a-o,d=2*u-d),p=o,Z=d,e.quadraticCurveTo(o+i,d+n,b+i,h+n),a=b,u=h,o=a+c[1],d=u+c[2];break;case"T":b=c[1],h=c[2],o=2*a-o,d=2*u-d,e.quadraticCurveTo(o+i,d+n,b+i,h+n),a=b,u=h;break;case"a":mk(e,a+i,u+n,[c[1],c[2],c[3],c[4],c[5],c[6]+a+i,c[7]+u+n]),a+=c[6],u+=c[7];break;case"A":mk(e,a+i,u+n,[c[1],c[2],c[3],c[4],c[5],c[6]+i,c[7]+n]),a=c[6],u=c[7];break;case"z":case"Z":a=X,u=J,e.closePath();break}r=c}}function mk(e,t,i,n){const s=Nme(n[5],n[6],n[0],n[1],n[3],n[4],n[2],t,i);for(let l=0;l<s.length;++l){const c=Rme(s[l]);e.bezierCurveTo(c[0],c[1],c[2],c[3],c[4],c[5])}}const bk=.5773502691896257,hk={circle:{draw:function(e,t){const i=Math.sqrt(t)/2;e.moveTo(i,0),e.arc(0,0,i,0,zc)}},cross:{draw:function(e,t){var i=Math.sqrt(t)/2,n=i/2.5;e.moveTo(-i,-n),e.lineTo(-i,n),e.lineTo(-n,n),e.lineTo(-n,i),e.lineTo(n,i),e.lineTo(n,n),e.lineTo(i,n),e.lineTo(i,-n),e.lineTo(n,-n),e.lineTo(n,-i),e.lineTo(-n,-i),e.lineTo(-n,-n),e.closePath()}},diamond:{draw:function(e,t){const i=Math.sqrt(t)/2;e.moveTo(-i,0),e.lineTo(0,-i),e.lineTo(i,0),e.lineTo(0,i),e.closePath()}},square:{draw:function(e,t){var i=Math.sqrt(t),n=-i/2;e.rect(n,n,i,i)}},arrow:{draw:function(e,t){var i=Math.sqrt(t)/2,n=i/7,s=i/2.5,l=i/8;e.moveTo(-n,i),e.lineTo(n,i),e.lineTo(n,-l),e.lineTo(s,-l),e.lineTo(0,-i),e.lineTo(-s,-l),e.lineTo(-n,-l),e.closePath()}},wedge:{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i,s=n-i*bk,l=i/4;e.moveTo(0,-n-s),e.lineTo(-l,n-s),e.lineTo(l,n-s),e.closePath()}},triangle:{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i,s=n-i*bk;e.moveTo(0,-n-s),e.lineTo(-i,n-s),e.lineTo(i,n-s),e.closePath()}},"triangle-up":{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i;e.moveTo(0,-n),e.lineTo(-i,n),e.lineTo(i,n),e.closePath()}},"triangle-down":{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i;e.moveTo(0,n),e.lineTo(-i,-n),e.lineTo(i,-n),e.closePath()}},"triangle-right":{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i;e.moveTo(n,0),e.lineTo(-n,-i),e.lineTo(-n,i),e.closePath()}},"triangle-left":{draw:function(e,t){var i=Math.sqrt(t)/2,n=Td*i;e.moveTo(-n,0),e.lineTo(n,-i),e.lineTo(n,i),e.closePath()}},stroke:{draw:function(e,t){const i=Math.sqrt(t)/2;e.moveTo(-i,0),e.lineTo(i,0)}}};function _j(e){return Re(hk,e)?hk[e]:Fme(e)}var Fx={};function Fme(e){if(!Re(Fx,e)){const t=Tm(e);Fx[e]={draw:function(i,n){jf(i,t,0,0,Math.sqrt(n)/2)}}}return Fx[e]}const Ia=.448084975506;function Sme(e){return e.x}function Lme(e){return e.y}function Cme(e){return e.width}function Tme(e){return e.height}function Jr(e){return typeof e=="function"?e:()=>+e}function Vy(e,t,i){return Math.max(t,Math.min(e,i))}function Oj(){var e=Sme,t=Lme,i=Cme,n=Tme,s=Jr(0),l=s,c=s,r=s,a=null;function u(o,d,b){var h,p=d??+e.call(this,o),Z=b??+t.call(this,o),X=+i.call(this,o),J=+n.call(this,o),V=Math.min(X,J)/2,g=Vy(+s.call(this,o),0,V),I=Vy(+l.call(this,o),0,V),v=Vy(+c.call(this,o),0,V),k=Vy(+r.call(this,o),0,V);if(a||(a=h=MI()),g<=0&&I<=0&&v<=0&&k<=0)a.rect(p,Z,X,J);else{var N=p+X,C=Z+J;a.moveTo(p+g,Z),a.lineTo(N-I,Z),a.bezierCurveTo(N-Ia*I,Z,N,Z+Ia*I,N,Z+I),a.lineTo(N,C-k),a.bezierCurveTo(N,C-Ia*k,N-Ia*k,C,N-k,C),a.lineTo(p+v,C),a.bezierCurveTo(p+Ia*v,C,p,C-Ia*v,p,C-v),a.lineTo(p,Z+g),a.bezierCurveTo(p,Z+Ia*g,p+Ia*g,Z,p+g,Z),a.closePath()}if(h)return a=null,h+""||null}return u.x=function(o){return arguments.length?(e=Jr(o),u):e},u.y=function(o){return arguments.length?(t=Jr(o),u):t},u.width=function(o){return arguments.length?(i=Jr(o),u):i},u.height=function(o){return arguments.length?(n=Jr(o),u):n},u.cornerRadius=function(o,d,b,h){return arguments.length?(s=Jr(o),l=d!=null?Jr(d):s,r=b!=null?Jr(b):s,c=h!=null?Jr(h):l,u):s},u.context=function(o){return arguments.length?(a=o??null,u):a},u}function jj(){var e,t,i,n,s=null,l,c,r,a;function u(d,b,h){const p=h/2;if(l){var Z=r-b,X=d-c;if(Z||X){var J=Math.hypot(Z,X),V=(Z/=J)*a,g=(X/=J)*a,I=Math.atan2(X,Z);s.moveTo(c-V,r-g),s.lineTo(d-Z*p,b-X*p),s.arc(d,b,p,I-Math.PI,I),s.lineTo(c+V,r+g),s.arc(c,r,a,I,I+Math.PI)}else s.arc(d,b,p,0,zc);s.closePath()}else l=1;c=d,r=b,a=p}function o(d){var b,h=d.length,p,Z=!1,X;for(s==null&&(s=X=MI()),b=0;b<=h;++b)!(b<h&&n(p=d[b],b,d))===Z&&(Z=!Z)&&(l=0),Z&&u(+e(p,b,d),+t(p,b,d),+i(p,b,d));if(X)return s=null,X+""||null}return o.x=function(d){return arguments.length?(e=d,o):e},o.y=function(d){return arguments.length?(t=d,o):t},o.size=function(d){return arguments.length?(i=d,o):i},o.defined=function(d){return arguments.length?(n=d,o):n},o.context=function(d){return arguments.length?(d==null?s=null:s=d,o):s},o}function Up(e,t){return e??t}const $p=e=>e.x||0,Qp=e=>e.y||0,Mme=e=>e.width||0,Kme=e=>e.height||0,Bme=e=>(e.x||0)+(e.width||0),_me=e=>(e.y||0)+(e.height||0),Ome=e=>e.startAngle||0,jme=e=>e.endAngle||0,Eme=e=>e.padAngle||0,Pme=e=>e.innerRadius||0,Ume=e=>e.outerRadius||0,$me=e=>e.cornerRadius||0,Qme=e=>Up(e.cornerRadiusTopLeft,e.cornerRadius)||0,Dme=e=>Up(e.cornerRadiusTopRight,e.cornerRadius)||0,Ame=e=>Up(e.cornerRadiusBottomRight,e.cornerRadius)||0,qme=e=>Up(e.cornerRadiusBottomLeft,e.cornerRadius)||0,ebe=e=>Up(e.size,64),tbe=e=>e.size||1,C2=e=>e.defined!==!1,ibe=e=>_j(e.shape||"circle"),nbe=vie().startAngle(Ome).endAngle(jme).padAngle(Eme).innerRadius(Pme).outerRadius(Ume).cornerRadius($me),sbe=TI().x($p).y1(Qp).y0(_me).defined(C2),lbe=TI().y(Qp).x1($p).x0(Bme).defined(C2),cbe=zM().x($p).y(Qp).defined(C2),rbe=Oj().x($p).y(Qp).width(Mme).height(Kme).cornerRadius(Qme,Dme,Ame,qme),abe=Rte().type(ibe).size(ebe),obe=jj().x($p).y(Qp).defined(C2).size(tbe);function T5(e){return e.cornerRadius||e.cornerRadiusTopLeft||e.cornerRadiusTopRight||e.cornerRadiusBottomRight||e.cornerRadiusBottomLeft}function ube(e,t){return nbe.context(e)(t)}function dbe(e,t){const i=t[0],n=i.interpolate||"linear";return(i.orient==="horizontal"?lbe:sbe).curve(C5(n,i.orient,i.tension)).context(e)(t)}function mbe(e,t){const i=t[0],n=i.interpolate||"linear";return cbe.curve(C5(n,i.orient,i.tension)).context(e)(t)}function wb(e,t,i,n){return rbe.context(e)(t,i,n)}function bbe(e,t){return(t.mark.shape||t.shape).context(e)(t)}function hbe(e,t){return abe.context(e)(t)}function fbe(e,t){return obe.context(e)(t)}var Ej=1;function Pj(){Ej=1}function M5(e,t,i){var n=t.clip,s=e._defs,l=t.clip_id||(t.clip_id="clip"+Ej++),c=s.clipping[l]||(s.clipping[l]={id:l});return ct(n)?c.path=n(null):T5(i)?c.path=wb(null,i,0,0):(c.width=i.width||0,c.height=i.height||0),"url(#"+l+")"}function zi(e){this.clear(),e&&this.union(e)}zi.prototype={clone(){return new zi(this)},clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},equals(e){return this.x1===e.x1&&this.y1===e.y1&&this.x2===e.x2&&this.y2===e.y2},set(e,t,i,n){return i<e?(this.x2=e,this.x1=i):(this.x1=e,this.x2=i),n<t?(this.y2=t,this.y1=n):(this.y1=t,this.y2=n),this},add(e,t){return e<this.x1&&(this.x1=e),t<this.y1&&(this.y1=t),e>this.x2&&(this.x2=e),t>this.y2&&(this.y2=t),this},expand(e){return this.x1-=e,this.y1-=e,this.x2+=e,this.y2+=e,this},round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale(e){return this.x1*=e,this.y1*=e,this.x2*=e,this.y2*=e,this},translate(e,t){return this.x1+=e,this.x2+=e,this.y1+=t,this.y2+=t,this},rotate(e,t,i){const n=this.rotatedPoints(e,t,i);return this.clear().add(n[0],n[1]).add(n[2],n[3]).add(n[4],n[5]).add(n[6],n[7])},rotatedPoints(e,t,i){var{x1:n,y1:s,x2:l,y2:c}=this,r=Math.cos(e),a=Math.sin(e),u=t-t*r+i*a,o=i-t*a-i*r;return[r*n-a*s+u,a*n+r*s+o,r*n-a*c+u,a*n+r*c+o,r*l-a*s+u,a*l+r*s+o,r*l-a*c+u,a*l+r*c+o]},union(e){return e.x1<this.x1&&(this.x1=e.x1),e.y1<this.y1&&(this.y1=e.y1),e.x2>this.x2&&(this.x2=e.x2),e.y2>this.y2&&(this.y2=e.y2),this},intersect(e){return e.x1>this.x1&&(this.x1=e.x1),e.y1>this.y1&&(this.y1=e.y1),e.x2<this.x2&&(this.x2=e.x2),e.y2<this.y2&&(this.y2=e.y2),this},encloses(e){return e&&this.x1<=e.x1&&this.x2>=e.x2&&this.y1<=e.y1&&this.y2>=e.y2},alignsWith(e){return e&&(this.x1==e.x1||this.x2==e.x2||this.y1==e.y1||this.y2==e.y2)},intersects(e){return e&&!(this.x2<e.x1||this.x1>e.x2||this.y2<e.y1||this.y1>e.y2)},contains(e,t){return!(e<this.x1||e>this.x2||t<this.y1||t>this.y2)},width(){return this.x2-this.x1},height(){return this.y2-this.y1}};function T2(e){this.mark=e,this.bounds=this.bounds||new zi}function M2(e){T2.call(this,e),this.items=this.items||[]}ge(M2,T2);class Uj{constructor(t){this._pending=0,this._loader=t||J2()}pending(){return this._pending}sanitizeURL(t){const i=this;return fk(i),i._loader.sanitize(t,{context:"href"}).then(n=>(ph(i),n)).catch(()=>(ph(i),null))}loadImage(t){const i=this,n=Ude();return fk(i),i._loader.sanitize(t,{context:"image"}).then(s=>{const l=s.href;if(!l||!n)throw{url:l};const c=new n,r=Re(s,"crossOrigin")?s.crossOrigin:"anonymous";return r!=null&&(c.crossOrigin=r),c.onload=()=>ph(i),c.onerror=()=>ph(i),c.src=l,c}).catch(s=>(ph(i),{complete:!1,width:0,height:0,src:s&&s.url||""}))}ready(){const t=this;return new Promise(i=>{function n(s){t.pending()?setTimeout(()=>{n(!0)},10):i(s)}n(!1)})}}function fk(e){e._pending+=1}function ph(e){e._pending-=1}function la(e,t,i){if(t.stroke&&t.opacity!==0&&t.strokeOpacity!==0){const n=t.strokeWidth!=null?+t.strokeWidth:1;e.expand(n+(i?pbe(t,n):0))}return e}function pbe(e,t){return e.strokeJoin&&e.strokeJoin!=="miter"?0:t}const ybe=zc-1e-8;let K2,VZ,IZ,bu,XG,gZ,JG,xG;const Ta=(e,t)=>K2.add(e,t),vZ=(e,t)=>Ta(VZ=e,IZ=t),pk=e=>Ta(e,K2.y1),yk=e=>Ta(K2.x1,e),ou=(e,t)=>XG*e+JG*t,uu=(e,t)=>gZ*e+xG*t,Sx=(e,t)=>Ta(ou(e,t),uu(e,t)),Lx=(e,t)=>vZ(ou(e,t),uu(e,t));function Dp(e,t){return K2=e,t?(bu=t*mo,XG=xG=Math.cos(bu),gZ=Math.sin(bu),JG=-gZ):(XG=xG=1,bu=gZ=JG=0),Zbe}const Zbe={beginPath(){},closePath(){},moveTo:Lx,lineTo:Lx,rect(e,t,i,n){bu?(Sx(e+i,t),Sx(e+i,t+n),Sx(e,t+n),Lx(e,t)):(Ta(e+i,t+n),vZ(e,t))},quadraticCurveTo(e,t,i,n){const s=ou(e,t),l=uu(e,t),c=ou(i,n),r=uu(i,n);Zk(VZ,s,c,pk),Zk(IZ,l,r,yk),vZ(c,r)},bezierCurveTo(e,t,i,n,s,l){const c=ou(e,t),r=uu(e,t),a=ou(i,n),u=uu(i,n),o=ou(s,l),d=uu(s,l);Wk(VZ,c,a,o,pk),Wk(IZ,r,u,d,yk),vZ(o,d)},arc(e,t,i,n,s,l){if(n+=bu,s+=bu,VZ=i*Math.cos(s)+e,IZ=i*Math.sin(s)+t,Math.abs(s-n)>ybe)Ta(e-i,t-i),Ta(e+i,t+i);else{const c=u=>Ta(i*Math.cos(u)+e,i*Math.sin(u)+t);let r,a;if(c(n),c(s),s!==n)if(n=n%zc,n<0&&(n+=zc),s=s%zc,s<0&&(s+=zc),s<n&&(l=!l,r=n,n=s,s=r),l)for(s-=zc,r=n-n%au,a=0;a<4&&r>s;++a,r-=au)c(r);else for(r=n-n%au+au,a=0;a<4&&r<s;++a,r=r+au)c(r)}}};function Zk(e,t,i,n){const s=(e-t)/(e+i-2*t);0<s&&s<1&&n(e+(t-e)*s)}function Wk(e,t,i,n,s){const l=n-e+3*t-3*i,c=e+i-2*t,r=e-t;let a=0,u=0,o;Math.abs(l)>Hme?(o=c*c+r*l,o>=0&&(o=Math.sqrt(o),a=(-c+o)/l,u=(-c-o)/l)):a=.5*r/c,0<a&&a<1&&s(Xk(a,e,t,i,n)),0<u&&u<1&&s(Xk(u,e,t,i,n))}function Xk(e,t,i,n,s){const l=1-e,c=l*l,r=e*e;return c*l*t+3*c*e*i+3*l*r*n+r*e*s}var io=(io=to(1,1))?io.getContext("2d"):null;const YG=new zi;function K5(e){return function(t,i){if(!io)return!0;e(io,t),YG.clear().union(t.bounds).intersect(i).round();const{x1:n,y1:s,x2:l,y2:c}=YG;for(let r=s;r<=c;++r)for(let a=n;a<=l;++a)if(io.isPointInPath(a,r))return!0;return!1}}function B5(e,t){return t.contains(e.x||0,e.y||0)}function $j(e,t){const i=e.x||0,n=e.y||0,s=e.width||0,l=e.height||0;return t.intersects(YG.set(i,n,i+s,n+l))}function Qj(e,t){const i=e.x||0,n=e.y||0,s=e.x2!=null?e.x2:i,l=e.y2!=null?e.y2:n;return lm(t,i,n,s,l)}function lm(e,t,i,n,s){const{x1:l,y1:c,x2:r,y2:a}=e,u=n-t,o=s-i;let d=0,b=1,h,p,Z,X;for(X=0;X<4;++X){if(X===0&&(h=-u,p=-(l-t)),X===1&&(h=u,p=r-t),X===2&&(h=-o,p=-(c-i)),X===3&&(h=o,p=a-i),Math.abs(h)<1e-10&&p<0)return!1;if(Z=p/h,h<0){if(Z>b)return!1;Z>d&&(d=Z)}else if(h>0){if(Z<d)return!1;Z<b&&(b=Z)}}return!0}function Mm(e,t){e.globalCompositeOperation=t.blend||"source-over"}function Gl(e,t){return e??t}function Jk(e,t){const i=t.length;for(let n=0;n<i;++n)e.addColorStop(t[n].offset,t[n].color);return e}function Wbe(e,t,i){const n=i.width(),s=i.height();let l;if(t.gradient==="radial")l=e.createRadialGradient(i.x1+Gl(t.x1,.5)*n,i.y1+Gl(t.y1,.5)*s,Math.max(n,s)*Gl(t.r1,0),i.x1+Gl(t.x2,.5)*n,i.y1+Gl(t.y2,.5)*s,Math.max(n,s)*Gl(t.r2,.5));else{const c=Gl(t.x1,0),r=Gl(t.y1,0),a=Gl(t.x2,1),u=Gl(t.y2,0);if(c===a||r===u||n===s)l=e.createLinearGradient(i.x1+c*n,i.y1+r*s,i.x1+a*n,i.y1+u*s);else{const o=to(Math.ceil(n),Math.ceil(s)),d=o.getContext("2d");return d.scale(n,s),d.fillStyle=Jk(d.createLinearGradient(c,r,a,u),t.stops),d.fillRect(0,0,n,s),e.createPattern(o,"no-repeat")}}return Jk(l,t.stops)}function Dj(e,t,i){return L5(i)?Wbe(e,i,t.bounds):i}function wW(e,t,i){return i*=t.fillOpacity==null?1:t.fillOpacity,i>0?(e.globalAlpha=i,e.fillStyle=Dj(e,t,t.fill),!0):!1}var Xbe=[];function Km(e,t,i){var n=(n=t.strokeWidth)!=null?n:1;return n<=0?!1:(i*=t.strokeOpacity==null?1:t.strokeOpacity,i>0?(e.globalAlpha=i,e.strokeStyle=Dj(e,t,t.stroke),e.lineWidth=n,e.lineCap=t.strokeCap||"butt",e.lineJoin=t.strokeJoin||"miter",e.miterLimit=t.strokeMiterLimit||10,e.setLineDash&&(e.setLineDash(t.strokeDash||Xbe),e.lineDashOffset=t.strokeDashOffset||0),!0):!1)}function Jbe(e,t){return e.zindex-t.zindex||e.index-t.index}function _5(e){if(!e.zdirty)return e.zitems;var t=e.items,i=[],n,s,l;for(s=0,l=t.length;s<l;++s)n=t[s],n.index=s,n.zindex&&i.push(n);return e.zdirty=!1,e.zitems=i.sort(Jbe)}function jl(e,t){var i=e.items,n,s;if(!i||!i.length)return;const l=_5(e);if(l&&l.length){for(n=0,s=i.length;n<s;++n)i[n].zindex||t(i[n]);i=l}for(n=0,s=i.length;n<s;++n)t(i[n])}function HW(e,t){var i=e.items,n,s;if(!i||!i.length)return null;const l=_5(e);for(l&&l.length&&(i=l),s=i.length;--s>=0;)if(n=t(i[s]))return n;if(i===l){for(i=e.items,s=i.length;--s>=0;)if(!i[s].zindex&&(n=t(i[s])))return n}return null}function O5(e){return function(t,i,n){jl(i,s=>{(!n||n.intersects(s.bounds))&&Aj(e,t,s,s)})}}function xbe(e){return function(t,i,n){i.items.length&&(!n||n.intersects(i.bounds))&&Aj(e,t,i.items[0],i.items)}}function Aj(e,t,i,n){var s=i.opacity==null?1:i.opacity;s!==0&&(e(t,n)||(Mm(t,i),i.fill&&wW(t,i,s)&&t.fill(),i.stroke&&Km(t,i,s)&&t.stroke()))}function B2(e){return e=e||ul,function(t,i,n,s,l,c){return n*=t.pixelRatio,s*=t.pixelRatio,HW(i,r=>{const a=r.bounds;if(!(a&&!a.contains(l,c)||!a)&&e(t,r,n,s,l,c))return r})}}function Ap(e,t){return function(i,n,s,l){var c=Array.isArray(n)?n[0]:n,r=t??c.fill,a=c.stroke&&i.isPointInStroke,u,o;return a&&(u=c.strokeWidth,o=c.strokeCap,i.lineWidth=u??1,i.lineCap=o??"butt"),e(i,n)?!1:r&&i.isPointInPath(s,l)||a&&i.isPointInStroke(s,l)}}function j5(e){return B2(Ap(e))}function yu(e,t){return"translate("+e+","+t+")"}function E5(e){return"rotate("+e+")"}function Ybe(e,t){return"scale("+e+","+t+")"}function qj(e){return yu(e.x||0,e.y||0)}function Gbe(e){return yu(e.x||0,e.y||0)+(e.angle?" "+E5(e.angle):"")}function Vbe(e){return yu(e.x||0,e.y||0)+(e.angle?" "+E5(e.angle):"")+(e.scaleX||e.scaleY?" "+Ybe(e.scaleX||1,e.scaleY||1):"")}function P5(e,t,i){function n(c,r){c("transform",Gbe(r)),c("d",t(null,r))}function s(c,r){return t(Dp(c,r.angle),r),la(c,r).translate(r.x||0,r.y||0)}function l(c,r){var a=r.x||0,u=r.y||0,o=r.angle||0;c.translate(a,u),o&&c.rotate(o*=mo),c.beginPath(),t(c,r),o&&c.rotate(-o),c.translate(-a,-u)}return{type:e,tag:"path",nested:!1,attr:n,bound:s,draw:O5(l),pick:j5(l),isect:i||K5(l)}}var Ibe=P5("arc",ube);function gbe(e,t){for(var i=e[0].orient==="horizontal"?t[1]:t[0],n=e[0].orient==="horizontal"?"y":"x",s=e.length,l=1/0,c,r;--s>=0;)e[s].defined!==!1&&(r=Math.abs(e[s][n]-i),r<l&&(l=r,c=e[s]));return c}function vbe(e,t){for(var i=Math.pow(e[0].strokeWidth||1,2),n=e.length,s,l,c;--n>=0;)if(e[n].defined!==!1&&(s=e[n].x-t[0],l=e[n].y-t[1],c=s*s+l*l,c<i))return e[n];return null}function zbe(e,t){for(var i=e.length,n,s,l;--i>=0;)if(e[i].defined!==!1&&(n=e[i].x-t[0],s=e[i].y-t[1],l=n*n+s*s,n=e[i].size||1,l<n*n))return e[i];return null}function U5(e,t,i){function n(a,u){var o=u.mark.items;o.length&&a("d",t(null,o))}function s(a,u){var o=u.items;return o.length===0?a:(t(Dp(a),o),la(a,o[0]))}function l(a,u){a.beginPath(),t(a,u)}const c=Ap(l);function r(a,u,o,d,b,h){var p=u.items,Z=u.bounds;return!p||!p.length||Z&&!Z.contains(b,h)?null:(o*=a.pixelRatio,d*=a.pixelRatio,c(a,p,o,d)?p[0]:null)}return{type:e,tag:"path",nested:!0,attr:n,bound:s,draw:xbe(l),pick:r,isect:B5,tip:i}}var wbe=U5("area",dbe,gbe);function Hbe(e,t){var i=t.clip;e.save(),ct(i)?(e.beginPath(),i(e),e.clip()):eE(e,t.group)}function eE(e,t){e.beginPath(),T5(t)?wb(e,t,0,0):e.rect(0,0,t.width||0,t.height||0),e.clip()}function tE(e){const t=Gl(e.strokeWidth,1);return e.strokeOffset!=null?e.strokeOffset:e.stroke&&t>.5&&t<1.5?.5-Math.abs(t-1):0}function Nbe(e,t){e("transform",qj(t))}function iE(e,t){const i=tE(t);e("d",wb(null,t,i,i))}function Rbe(e,t){e("class","background"),e("aria-hidden",!0),iE(e,t)}function kbe(e,t){e("class","foreground"),e("aria-hidden",!0),t.strokeForeground?iE(e,t):e("d","")}function Fbe(e,t,i){const n=t.clip?M5(i,t,t):null;e("clip-path",n)}function Sbe(e,t){if(!t.clip&&t.items){const i=t.items,n=i.length;for(let s=0;s<n;++s)e.union(i[s].bounds)}return(t.clip||t.width||t.height)&&!t.noBound&&e.add(0,0).add(t.width||0,t.height||0),la(e,t),e.translate(t.x||0,t.y||0)}function Ef(e,t,i,n){const s=tE(t);e.beginPath(),wb(e,t,(i||0)+s,(n||0)+s)}const Lbe=Ap(Ef),Cbe=Ap(Ef,!1),Tbe=Ap(Ef,!0);function Mbe(e,t,i,n){jl(t,s=>{const l=s.x||0,c=s.y||0,r=s.strokeForeground,a=s.opacity==null?1:s.opacity;(s.stroke||s.fill)&&a&&(Ef(e,s,l,c),Mm(e,s),s.fill&&wW(e,s,a)&&e.fill(),s.stroke&&!r&&Km(e,s,a)&&e.stroke()),e.save(),e.translate(l,c),s.clip&&eE(e,s),i&&i.translate(-l,-c),jl(s,u=>{(u.marktype==="group"||n==null||n.includes(u.marktype))&&this.draw(e,u,i,n)}),i&&i.translate(l,c),e.restore(),r&&s.stroke&&a&&(Ef(e,s,l,c),Mm(e,s),Km(e,s,a)&&e.stroke())})}function Kbe(e,t,i,n,s,l){if(t.bounds&&!t.bounds.contains(s,l)||!t.items)return null;const c=i*e.pixelRatio,r=n*e.pixelRatio;return HW(t,a=>{let u,o,d;const b=a.bounds;if(b&&!b.contains(s,l))return;o=a.x||0,d=a.y||0;const h=o+(a.width||0),p=d+(a.height||0),Z=a.clip;if(Z&&(s<o||s>h||l<d||l>p))return;if(e.save(),e.translate(o,d),o=s-o,d=l-d,Z&&T5(a)&&!Tbe(e,a,c,r))return e.restore(),null;const X=a.strokeForeground,J=t.interactive!==!1;return J&&X&&a.stroke&&Cbe(e,a,c,r)?(e.restore(),a):(u=HW(a,V=>Bbe(V,o,d)?this.pick(V,i,n,o,d):null),!u&&J&&(a.fill||!X&&a.stroke)&&Lbe(e,a,c,r)&&(u=a),e.restore(),u||null)})}function Bbe(e,t,i){return(e.interactive!==!1||e.marktype==="group")&&e.bounds&&e.bounds.contains(t,i)}var _be={type:"group",tag:"g",nested:!1,attr:Nbe,bound:Sbe,draw:Mbe,pick:Kbe,isect:$j,content:Fbe,background:Rbe,foreground:kbe},Pf={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"};function $5(e,t){var i=e.image;return(!i||e.url&&e.url!==i.url)&&(i={complete:!1,width:0,height:0},t.loadImage(e.url).then(n=>{e.image=n,e.image.url=e.url})),i}function Q5(e,t){return e.width!=null?e.width:!t||!t.width?0:e.aspect!==!1&&e.height?e.height*t.width/t.height:t.width}function D5(e,t){return e.height!=null?e.height:!t||!t.height?0:e.aspect!==!1&&e.width?e.width*t.height/t.width:t.height}function _2(e,t){return e==="center"?t/2:e==="right"?t:0}function O2(e,t){return e==="middle"?t/2:e==="bottom"?t:0}function Obe(e,t,i){const n=$5(t,i),s=Q5(t,n),l=D5(t,n),c=(t.x||0)-_2(t.align,s),r=(t.y||0)-O2(t.baseline,l),a=!n.src&&n.toDataURL?n.toDataURL():n.src||"";e("href",a,Pf["xmlns:xlink"],"xlink:href"),e("transform",yu(c,r)),e("width",s),e("height",l),e("preserveAspectRatio",t.aspect===!1?"none":"xMidYMid")}function jbe(e,t){const i=t.image,n=Q5(t,i),s=D5(t,i),l=(t.x||0)-_2(t.align,n),c=(t.y||0)-O2(t.baseline,s);return e.set(l,c,l+n,c+s)}function Ebe(e,t,i){jl(t,n=>{if(i&&!i.intersects(n.bounds))return;const s=$5(n,this);let l=Q5(n,s),c=D5(n,s);if(l===0||c===0)return;let r=(n.x||0)-_2(n.align,l),a=(n.y||0)-O2(n.baseline,c),u,o,d,b;n.aspect!==!1&&(o=s.width/s.height,d=n.width/n.height,o===o&&d===d&&o!==d&&(d<o?(b=l/o,a+=(c-b)/2,c=b):(b=c*o,r+=(l-b)/2,l=b))),(s.complete||s.toDataURL)&&(Mm(e,n),e.globalAlpha=(u=n.opacity)!=null?u:1,e.imageSmoothingEnabled=n.smooth!==!1,e.drawImage(s,r,a,l,c))})}var Pbe={type:"image",tag:"image",nested:!1,attr:Obe,bound:jbe,draw:Ebe,pick:B2(),isect:ul,get:$5,xOffset:_2,yOffset:O2},Ube=U5("line",mbe,vbe);function $be(e,t){var i=t.scaleX||1,n=t.scaleY||1;(i!==1||n!==1)&&e("vector-effect","non-scaling-stroke"),e("transform",Vbe(t)),e("d",t.path)}function zZ(e,t){var i=t.path;if(i==null)return!0;var n=t.x||0,s=t.y||0,l=t.scaleX||1,c=t.scaleY||1,r=(t.angle||0)*mo,a=t.pathCache;(!a||a.path!==i)&&((t.pathCache=a=Tm(i)).path=i),r&&e.rotate&&e.translate?(e.translate(n,s),e.rotate(r),jf(e,a,0,0,l,c),e.rotate(-r),e.translate(-n,-s)):jf(e,a,n,s,l,c)}function Qbe(e,t){return zZ(Dp(e,t.angle),t)?e.set(0,0,0,0):la(e,t,!0)}var Dbe={type:"path",tag:"path",nested:!1,attr:$be,bound:Qbe,draw:O5(zZ),pick:j5(zZ),isect:K5(zZ)};function Abe(e,t){e("d",wb(null,t))}function qbe(e,t){var i,n;return la(e.set(i=t.x||0,n=t.y||0,i+t.width||0,n+t.height||0),t)}function xk(e,t){e.beginPath(),wb(e,t)}var ehe={type:"rect",tag:"path",nested:!1,attr:Abe,bound:qbe,draw:O5(xk),pick:j5(xk),isect:$j};function the(e,t){e("transform",qj(t)),e("x2",t.x2!=null?t.x2-(t.x||0):0),e("y2",t.y2!=null?t.y2-(t.y||0):0)}function ihe(e,t){var i,n;return la(e.set(i=t.x||0,n=t.y||0,t.x2!=null?t.x2:i,t.y2!=null?t.y2:n),t)}function nE(e,t,i){var n,s,l,c;return t.stroke&&Km(e,t,i)?(n=t.x||0,s=t.y||0,l=t.x2!=null?t.x2:n,c=t.y2!=null?t.y2:s,e.beginPath(),e.moveTo(n,s),e.lineTo(l,c),!0):!1}function nhe(e,t,i){jl(t,n=>{if(!(i&&!i.intersects(n.bounds))){var s=n.opacity==null?1:n.opacity;s&&nE(e,n,s)&&(Mm(e,n),e.stroke())}})}function she(e,t,i,n){return e.isPointInStroke?nE(e,t,1)&&e.isPointInStroke(i,n):!1}var lhe={type:"rule",tag:"line",nested:!1,attr:the,bound:ihe,draw:nhe,pick:B2(she),isect:Qj},che=P5("shape",bbe),rhe=P5("symbol",hbe,B5);const Yk=G_();var ks={height:cr,measureWidth:A5,estimateWidth:NW,width:NW,canvas:sE};sE(!0);function sE(e){ks.width=e&&io?A5:NW}function NW(e,t){return lE(ho(e,t),cr(e))}function lE(e,t){return~~(.8*e.length*t)}function A5(e,t){return cr(e)<=0||!(t=ho(e,t))?0:cE(t,j2(e))}function cE(e,t){const i=`(${t}) ${e}`;let n=Yk.get(i);return n===void 0&&(io.font=t,n=io.measureText(e).width,Yk.set(i,n)),n}function cr(e){return e.fontSize!=null?+e.fontSize||0:11}function bo(e){return e.lineHeight!=null?e.lineHeight:cr(e)+2}function ahe(e){return fe(e)?e.length>1?e:e[0]:e}function qp(e){return ahe(e.lineBreak&&e.text&&!fe(e.text)?e.text.split(e.lineBreak):e.text)}function q5(e){const t=qp(e);return(fe(t)?t.length-1:0)*bo(e)}function ho(e,t){const i=t==null?"":(t+"").trim();return e.limit>0&&i.length?uhe(e,i):i}function ohe(e){if(ks.width===A5){const t=j2(e);return i=>cE(i,t)}else if(ks.width===NW){const t=cr(e);return i=>lE(i,t)}else return t=>ks.width(e,t)}function uhe(e,t){var i=+e.limit,n=ohe(e);if(n(t)<i)return t;var s=e.ellipsis||"â¦",l=e.dir==="rtl",c=0,r=t.length,a;if(i-=n(s),l){for(;c<r;)a=c+r>>>1,n(t.slice(a))>i?c=a+1:r=a;return s+t.slice(c)}else{for(;c<r;)a=1+(c+r>>>1),n(t.slice(0,a))<i?c=a:r=a-1;return t.slice(0,c)+s}}function e0(e,t){var i=e.font;return(t&&i?String(i).replace(/"/g,"'"):i)||"sans-serif"}function j2(e,t){return(e.fontStyle?e.fontStyle+" ":"")+(e.fontVariant?e.fontVariant+" ":"")+(e.fontWeight?e.fontWeight+" ":"")+cr(e)+"px "+e0(e,t)}function eg(e){var t=e.baseline,i=cr(e);return Math.round(t==="top"?.79*i:t==="middle"?.3*i:t==="bottom"?-.21*i:t==="line-top"?.29*i+.5*bo(e):t==="line-bottom"?.29*i-.5*bo(e):0)}const dhe={left:"start",center:"middle",right:"end"},bf=new zi;function E2(e){var t=e.x||0,i=e.y||0,n=e.radius||0,s;return n&&(s=(e.theta||0)-au,t+=n*Math.cos(s),i+=n*Math.sin(s)),bf.x1=t,bf.y1=i,bf}function mhe(e,t){var i=t.dx||0,n=(t.dy||0)+eg(t),s=E2(t),l=s.x1,c=s.y1,r=t.angle||0,a;e("text-anchor",dhe[t.align]||"start"),r?(a=yu(l,c)+" "+E5(r),(i||n)&&(a+=" "+yu(i,n))):a=yu(l+i,c+n),e("transform",a)}function tg(e,t,i){var n=ks.height(t),s=t.align,l=E2(t),c=l.x1,r=l.y1,a=t.dx||0,u=(t.dy||0)+eg(t)-Math.round(.8*n),o=qp(t),d;if(fe(o)?(n+=bo(t)*(o.length-1),d=o.reduce((b,h)=>Math.max(b,ks.width(t,h)),0)):d=ks.width(t,o),s==="center"?a-=d/2:s==="right"&&(a-=d),e.set(a+=c,u+=r,a+d,u+n),t.angle&&!i)e.rotate(t.angle*mo,c,r);else if(i===2)return e.rotatedPoints(t.angle*mo,c,r);return e}function bhe(e,t,i){jl(t,n=>{var s=n.opacity==null?1:n.opacity,l,c,r,a,u,o,d;if(!(i&&!i.intersects(n.bounds)||s===0||n.fontSize<=0||n.text==null||n.text.length===0)){if(e.font=j2(n),e.textAlign=n.align||"left",l=E2(n),c=l.x1,r=l.y1,n.angle&&(e.save(),e.translate(c,r),e.rotate(n.angle*mo),c=r=0),c+=n.dx||0,r+=(n.dy||0)+eg(n),o=qp(n),Mm(e,n),fe(o))for(u=bo(n),a=0;a<o.length;++a)d=ho(n,o[a]),n.fill&&wW(e,n,s)&&e.fillText(d,c,r),n.stroke&&Km(e,n,s)&&e.strokeText(d,c,r),r+=u;else d=ho(n,o),n.fill&&wW(e,n,s)&&e.fillText(d,c,r),n.stroke&&Km(e,n,s)&&e.strokeText(d,c,r);n.angle&&e.restore()}})}function hhe(e,t,i,n,s,l){if(t.fontSize<=0)return!1;if(!t.angle)return!0;var c=E2(t),r=c.x1,a=c.y1,u=tg(bf,t,1),o=-t.angle*mo,d=Math.cos(o),b=Math.sin(o),h=d*s-b*l+(r-d*r+b*a),p=b*s+d*l+(a-b*r-d*a);return u.contains(h,p)}function fhe(e,t){const i=tg(bf,e,2);return lm(t,i[0],i[1],i[2],i[3])||lm(t,i[0],i[1],i[4],i[5])||lm(t,i[4],i[5],i[6],i[7])||lm(t,i[2],i[3],i[6],i[7])}var phe={type:"text",tag:"text",nested:!1,attr:mhe,bound:tg,draw:bhe,pick:B2(hhe),isect:fhe},yhe=U5("trail",fbe,zbe),Ks={arc:Ibe,area:wbe,group:_be,image:Pbe,line:Ube,path:Dbe,rect:ehe,rule:lhe,shape:che,symbol:rhe,text:phe,trail:yhe};function GG(e,t,i){var n=Ks[e.mark.marktype],s=t||n.bound;return n.nested&&(e=e.mark),s(e.bounds||(e.bounds=new zi),e,i)}var Gk={mark:null};function rE(e,t,i){var n=Ks[e.marktype],s=n.bound,l=e.items,c=l&&l.length,r,a,u,o;if(n.nested)return c?u=l[0]:(Gk.mark=e,u=Gk),o=GG(u,s,i),t=t&&t.union(o)||o,t;if(t=t||e.bounds&&e.bounds.clear()||new zi,c)for(r=0,a=l.length;r<a;++r)t.union(GG(l[r],s,i));return e.bounds=t}const Zhe=["marktype","name","role","interactive","clip","items","zindex","x","y","width","height","align","baseline","fill","fillOpacity","opacity","blend","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","strokeForeground","strokeOffset","startAngle","endAngle","innerRadius","outerRadius","cornerRadius","padAngle","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight","interpolate","tension","orient","defined","url","aspect","smooth","path","scaleX","scaleY","x2","y2","size","shape","text","angle","theta","radius","dir","dx","dy","ellipsis","limit","lineBreak","lineHeight","font","fontSize","fontWeight","fontStyle","fontVariant","description","aria","ariaRole","ariaRoleDescription"];function aE(e,t){return JSON.stringify(e,Zhe,t)}function oE(e){const t=typeof e=="string"?JSON.parse(e):e;return uE(t)}function uE(e){var t=e.marktype,i=e.items,n,s,l;if(i)for(s=0,l=i.length;s<l;++s)n=t?"mark":"group",i[s][n]=e,i[s].zindex&&(i[s][n].zdirty=!0),(t||n)==="group"&&uE(i[s]);return t&&rE(e),e}class dE{constructor(t){arguments.length?this.root=oE(t):(this.root=Vk({marktype:"group",name:"root",role:"frame"}),this.root.items=[new M2(this.root)])}toJSON(t){return aE(this.root,t||0)}mark(t,i,n){i=i||this.root.items[0];const s=Vk(t,i);return i.items[n]=s,s.zindex&&(s.group.zdirty=!0),s}}function Vk(e,t){const i={bounds:new zi,clip:!!e.clip,group:t,interactive:e.interactive!==!1,items:[],marktype:e.marktype,name:e.name||void 0,role:e.role||void 0,zindex:e.zindex||0};return e.aria!=null&&(i.aria=e.aria),e.description&&(i.description=e.description),i}function Ma(e,t,i){return!e&&typeof document<"u"&&document.createElement&&(e=document),e?i?e.createElementNS(i,t):e.createElement(t):null}function ig(e,t){t=t.toLowerCase();for(var i=e.childNodes,n=0,s=i.length;n<s;++n)if(i[n].tagName.toLowerCase()===t)return i[n]}function Ri(e,t,i,n){var s=e.childNodes[t],l;return(!s||s.tagName.toLowerCase()!==i.toLowerCase())&&(l=s||null,s=Ma(e.ownerDocument,i,n),e.insertBefore(s,l)),s}function $s(e,t){for(var i=e.childNodes,n=i.length;n>t;)e.removeChild(i[--n]);return e}function mE(e){return"mark-"+e.marktype+(e.role?" role-"+e.role:"")+(e.name?" "+e.name:"")}function P2(e,t){const i=t.getBoundingClientRect();return[e.clientX-i.left-(t.clientLeft||0),e.clientY-i.top-(t.clientTop||0)]}function Whe(e,t,i,n){var s=e&&e.mark,l,c;if(s&&(l=Ks[s.marktype]).tip){for(c=P2(t,i),c[0]-=n[0],c[1]-=n[1];e=e.mark.group;
46)c[0]-=e.x||0,c[1]-=e.y||0;e=l.tip(s.items,c)}return e}let ng=class{constructor(t,i){this._active=null,this._handlers={},this._loader=t||J2(),this._tooltip=i||Xhe}initialize(t,i,n){return this._el=t,this._obj=n||null,this.origin(i)}element(){return this._el}canvas(){return this._el&&this._el.firstChild}origin(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()}scene(t){return arguments.length?(this._scene=t,this):this._scene}on(){}off(){}_handlerIndex(t,i,n){for(let s=t?t.length:0;--s>=0;)if(t[s].type===i&&(!n||t[s].handler===n))return s;return-1}handlers(t){const i=this._handlers,n=[];if(t)n.push(...i[this.eventName(t)]);else for(const s in i)n.push(...i[s]);return n}eventName(t){const i=t.indexOf(".");return i<0?t:t.slice(0,i)}handleHref(t,i,n){this._loader.sanitize(n,{context:"href"}).then(s=>{const l=new MouseEvent(t.type,t),c=Ma(null,"a");for(const r in s)c.setAttribute(r,s[r]);c.dispatchEvent(l)}).catch(()=>{})}handleTooltip(t,i,n){if(i&&i.tooltip!=null){i=Whe(i,t,this.canvas(),this._origin);const s=n&&i&&i.tooltip||null;this._tooltip.call(this._obj,this,t,i,s)}}getItemBoundingClientRect(t){const i=this.canvas();if(!i)return;const n=i.getBoundingClientRect(),s=this._origin,l=t.bounds,c=l.width(),r=l.height();let a=l.x1+s[0]+n.left,u=l.y1+s[1]+n.top;for(;t.mark&&(t=t.mark.group);)a+=t.x||0,u+=t.y||0;return{x:a,y:u,width:c,height:r,left:a,top:u,right:a+c,bottom:u+r}}};function Xhe(e,t,i,n){e.element().setAttribute("title",n||"")}class t0{constructor(t){this._el=null,this._bgcolor=null,this._loader=new Uj(t)}initialize(t,i,n,s,l){return this._el=t,this.resize(i,n,s,l)}element(){return this._el}canvas(){return this._el&&this._el.firstChild}background(t){return arguments.length===0?this._bgcolor:(this._bgcolor=t,this)}resize(t,i,n,s){return this._width=t,this._height=i,this._origin=n||[0,0],this._scale=s||1,this}dirty(){}render(t,i){const n=this;return n._call=function(){n._render(t,i)},n._call(),n._call=null,n}_render(){}renderAsync(t,i){const n=this.render(t,i);return this._ready?this._ready.then(()=>n):Promise.resolve(n)}_load(t,i){var n=this,s=n._loader[t](i);if(!n._ready){const l=n._call;n._ready=n._loader.ready().then(c=>{c&&l(),n._ready=null})}return s}sanitizeURL(t){return this._load("sanitizeURL",t)}loadImage(t){return this._load("loadImage",t)}}const Jhe="keydown",xhe="keypress",Yhe="keyup",bE="dragenter",wZ="dragleave",hE="dragover",VG="pointerdown",Ghe="pointerup",RW="pointermove",HZ="pointerout",fE="pointerover",IG="mousedown",Vhe="mouseup",pE="mousemove",kW="mouseout",yE="mouseover",FW="click",Ihe="dblclick",ghe="wheel",ZE="mousewheel",SW="touchstart",LW="touchmove",CW="touchend",vhe=[Jhe,xhe,Yhe,bE,wZ,hE,VG,Ghe,RW,HZ,fE,IG,Vhe,pE,kW,yE,FW,Ihe,ghe,ZE,SW,LW,CW],gG=RW,hf=kW,vG=FW;class i0 extends ng{constructor(t,i){super(t,i),this._down=null,this._touch=null,this._first=!0,this._events={},this.events=vhe,this.pointermove=gk([RW,pE],[fE,yE],[HZ,kW]),this.dragover=gk([hE],[bE],[wZ]),this.pointerout=vk([HZ,kW]),this.dragleave=vk([wZ])}initialize(t,i,n){return this._canvas=t&&ig(t,"canvas"),[FW,IG,VG,RW,HZ,wZ].forEach(s=>Ik(this,s)),super.initialize(t,i,n)}canvas(){return this._canvas}context(){return this._canvas.getContext("2d")}DOMMouseScroll(t){this.fire(ZE,t)}pointerdown(t){this._down=this._active,this.fire(VG,t)}mousedown(t){this._down=this._active,this.fire(IG,t)}click(t){this._down===this._active&&(this.fire(FW,t),this._down=null)}touchstart(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(SW,t,!0)}touchmove(t){this.fire(LW,t,!0)}touchend(t){this.fire(CW,t,!0),this._touch=null}fire(t,i,n){const s=n?this._touch:this._active,l=this._handlers[t];if(i.vegaType=t,t===vG&&s&&s.href?this.handleHref(i,s,s.href):(t===gG||t===hf)&&this.handleTooltip(i,s,t!==hf),l)for(let c=0,r=l.length;c<r;++c)l[c].handler.call(this._obj,i,s)}on(t,i){const n=this.eventName(t),s=this._handlers;return this._handlerIndex(s[n],t,i)<0&&(Ik(this,t),(s[n]||(s[n]=[])).push({type:t,handler:i})),this}off(t,i){const n=this.eventName(t),s=this._handlers[n],l=this._handlerIndex(s,t,i);return l>=0&&s.splice(l,1),this}pickEvent(t){const i=P2(t,this._canvas),n=this._origin;return this.pick(this._scene,i[0],i[1],i[0]-n[0],i[1]-n[1])}pick(t,i,n,s,l){const c=this.context();return Ks[t.marktype].pick.call(this,c,t,i,n,s,l)}}const zhe=e=>e===SW||e===LW||e===CW?[SW,LW,CW]:[e];function Ik(e,t){zhe(t).forEach(i=>
46whe(e,i))}function whe(e,t){const i=e.canvas();i&&!e._events[t]&&(e._events[t]=1,i.addEventListener(t,e[t]?n=>e[t](n):n=>e.fire(t,n)))}function jh(e,t,i){t.forEach(n=>e.fire(n,i))}function gk(e,t,i){return function(n){const s=this._active,l=this.pickEvent(n);l===s?jh(this,e,n):((!s||!s.exit)&&jh(this,i,n),this._active=l,jh(this,t,n),jh(this,e,n))}}function vk(e){return function(t){jh(this,e,t),this._active=null}}function Hhe(){return typeof window<"u"&&window.devicePixelRatio||1}function Nhe(e,t,i,n,s,l){const c=typeof HTMLElement<"u"&&e instanceof HTMLElement&&e.parentNode!=null,r=e.getContext("2d"),a=c?Hhe():s;e.width=t*a,e.height=i*a;for(const u in l)r[u]=l[u];return c&&a!==1&&(e.style.width=t+"px",e.style.height=i+"px"),r.pixelRatio=a,r.setTransform(a,0,0,a,a*n[0],a*n[1]),e}class TW extends t0{constructor(t){super(t),this._options={},this._redraw=!1,this._dirty=new zi,this._tempb=new zi}initialize(t,i,n,s,l,c){return this._options=c||{},this._canvas=this._options.externalContext?null:to(1,1,this._options.type),t&&this._canvas&&($s(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),super.initialize(t,i,n,s,l)}resize(t,i,n,s){if(super.resize(t,i,n,s),this._canvas)Nhe(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context);else{const l=this._options.externalContext;l||me("CanvasRenderer is missing a valid canvas or context"),l.scale(this._scale,this._scale),l.translate(this._origin[0],this._origin[1])}return this._redraw=!0,this}canvas(){return this._canvas}context(){return this._options.externalContext||(this._canvas?this._canvas.getContext("2d"):null)}dirty(t){const i=this._tempb.clear().union(t.bounds);let n=t.mark.group;for(;n;)i.translate(n.x||0,n.y||0),n=n.mark.group;this._dirty.union(i)}_render(t,i){const n=this.context(),s=this._origin,l=this._width,c=this._height,r=this._dirty,a=Rhe(s,l,c);n.save();const u=this._redraw||r.empty()?(this._redraw=!1,a.expand(1)):khe(n,a.intersect(r),s);return this.clear(-s[0],-s[1],l,c),this.draw(n,t,u,i),n.restore(),r.clear(),this}draw(t,i,n,s){if(i.marktype!=="group"&&s!=null&&!s.includes(i.marktype))return;const l=Ks[i.marktype];i.clip&&Hbe(t,i),l.draw.call(this,t,i,n,s),i.clip&&t.restore()}clear(t,i,n,s){const l=this._options,c=this.context();l.type!=="pdf"&&!l.externalContext&&c.clearRect(t,i,n,s),this._bgcolor!=null&&(c.fillStyle=this._bgcolor,c.fillRect(t,i,n,s))}}const Rhe=(e,t,i)=>new zi().set(0,0,t,i).translate(-e[0],-e[1]);
46function khe(e,t,i){return t.expand(1).round(),e.pixelRatio%1&&t.scale(e.pixelRatio).round().scale(1/e.pixelRatio),t.translate(-(i[0]%1),-(i[1]%1)),e.beginPath(),e.rect(t.x1,t.y1,t.width(),t.height()),e.clip(),t}class WE extends ng{constructor(t,i){super(t,i);const n=this;n._hrefHandler=Cx(n,(s,l)=>{l&&l.href&&n.handleHref(s,l,l.href)}),n._tooltipHandler=Cx(n,(s,l)=>{n.handleTooltip(s,l,s.type!==hf)})}initialize(t,i,n){let s=this._svg;return s&&(s.removeEventListener(vG,this._hrefHandler),s.removeEventListener(gG,this._tooltipHandler),s.removeEventListener(hf,this._tooltipHandler)),this._svg=s=t&&ig(t,"svg"),s&&(s.addEventListener(vG,this._hrefHandler),s.addEventListener(gG,this._tooltipHandler),s.addEventListener(hf,this._tooltipHandler)),super.initialize(t,i,n)}canvas(){return this._svg}on(t,i){const n=this.eventName(t),s=this._handlers;if(this._handlerIndex(s[n],t,i)<0){const c={type:t,handler:i,listener:Cx(this,i)};(s[n]||(s[n]=[])).push(c),this._svg&&this._svg.addEventListener(n,c.listener)}return this}off(t,i){const n=this.eventName(t),s=this._handlers[n],l=this._handlerIndex(s,t,i);return l>=0&&(this._svg&&this._svg.removeEventListener(n,s[l].listener),s.splice(l,1)),this}}const Cx=(e,t)=>i=>{let n=i.target.__data__;n=Array.isArray(n)?n[0]:n,i.vegaType=i.type,t.call(e._obj,i,n)},XE="aria-hidden",sg="aria-label",lg="role",cg="aria-roledescription",JE="graphics-object",rg="graphics-symbol",xE=(e,t,i)=>({[lg]:e,[cg]:t,[sg]:i||void 0}),Fhe=_l(["axis-domain","axis-grid","axis-label","axis-tick","axis-title","legend-band","legend-entry","legend-gradient","legend-label","legend-title","legend-symbol","title"]),zk={axis:{desc:"axis",caption:Che},legend:{desc:"legend",caption:The},"title-text":{desc:"title",caption:e=>`Title text '${Hk(e)}'`}
vendor: 4,635 bytes, line 46
46,"title-subtitle":{desc:"subtitle",caption:e=>`Subtitle text '${Hk(e)}'`}},wk={ariaRole:lg,ariaRoleDescription:cg,description:sg};function YE(e,t){const i=t.aria===!1;if(e(XE,i||void 0),i||t.description==null)for(const n in wk)e(wk[n],void 0);else{const n=t.mark.marktype;e(sg,t.description),e(lg,t.ariaRole||(n==="group"?JE:rg)),e(cg,t.ariaRoleDescription||`${n} mark`)}}function GE(e){return e.aria===!1?{[XE]:!0}:Fhe[e.role]?null:zk[e.role]?Lhe(e,zk[e.role]):She(e)}function She(e){const t=e.marktype,i=t==="group"||t==="text"||e.items.some(n=>n.description!=null&&n.aria!==!1);return xE(i?JE:rg,`${t} mark container`,e.description)}function Lhe(e,t){try{const i=e.items[0],n=t.caption||(()=>"");return xE(t.role||rg,t.desc,i.description||n(i))}catch{return null}}function Hk(e){return Ne(e.text).join(" ")}function Che(e){const t=e.datum,i=e.orient,n=t.title?VE(e):null,s=e.context,l=s.scales[t.scale].value,c=s.dataflow.locale(),r=l.type;return`${i==="left"||i==="right"?"Y":"X"}-axis`+(n?` titled '${n}'`:"")+` for a ${Cm(r)?"discrete":r} scale with ${Cj(c,l,e)}`}function The(e){const t=e.datum,i=t.title?VE(e):null,n=`${t.type||""} legend`.trim(),s=t.scales,l=Object.keys(s),c=e.context,r=c.scales[s[l[0]]].value,a=c.dataflow.locale();return Khe(n)+(i?` titled '${i}'`:"")+` for ${Mhe(l)} with ${Cj(a,r,e)}`}function VE(e){try{return Ne(Zt(e.items).items[0].text).join(" ")}catch{return null}}function Mhe(e){return e=e.map(t=>t+(t==="fill"||t==="stroke"?" color":"")),e.length<2?e[0]:e.slice(0,-1).join(", ")+" and "+Zt(e)}function Khe(e){return e.length?e[0].toUpperCase()+e.slice(1):e}const IE=e=>(e+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),Bhe=e=>IE(e).replace(/"/g,""").replace(/\t/g,"	").replace(/\n/g,"
").replace(/\r/g,"
");function ag(){let e="",t="",i="";const n=[],s=()=>t=i="",l=a=>{t&&(e+=`${t}>${i}`,s()),n.push(a)},c=(a,u)=>(u!=null&&(t+=` ${a}="${Bhe(u)}"`),r),r={open(a){l(a),t="<"+a;for(var u=arguments.length,o=new Array(u>1?u-1:0),d=1;d<u;d++)o[d-1]=arguments[d];for(const b of o)for(const h in b)c(h,b[h]);return r},close(){const a=n.pop();return t?e+=t+(i?`>${i}</${a}>`:"/>"):e+=`</${a}>`,s(),r},attr:c,text:a=>(i+=IE(a),r),toString:()=>e};return r}const gE=e=>vE(ag(),e)+"";function vE(e,t){if(e.open(t.tagName),t.hasAttributes()){const i=t.attributes,n=i.length;for(let s=0;s<n;++s)e.attr(i[s].name,i[s].value)}if(t.hasChildNodes()){const i=t.childNodes;for(const n of i)n.nodeType===3?e.text(n.nodeValue):vE(e,n)}return e.close()}const MW={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",strokeCap:"stroke-linecap",strokeJoin:"stroke-linejoin",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeMiterLimit:"stroke-miterlimit",opacity:"opacity"},KW={blend:"mix-blend-mode"},zE={fill:"none","stroke-miterlimit":10},yh=0,Nk="http://www.w3.org/2000/xmlns/",Ni=Pf.xmlns;class og extends t0{constructor(t){super(t),this._dirtyID=0,this._dirty=[],this._svg=null,this._root=null,this._defs=null}initialize(t,i,n,s,l){return this._defs={},this._clearDefs(),t&&(this._svg=Ri(t,0,"svg",Ni),this._svg.setAttributeNS(Nk,"xmlns",Ni),this._svg.setAttributeNS(Nk,"xmlns:xlink",Pf["xmlns:xlink"]),this._svg.setAttribute("version",Pf.version),this._svg.setAttribute("class","marks"),$s(t,1),this._root=Ri(this._svg,yh,"g",Ni),Ka(this._root,zE),$s(this._svg,yh+1)),this.background(this._bgcolor),super.initialize(t,i,n,s,l)}background(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),super.background(...arguments)}resize(t,i,n,s){return super.resize(t,i,n,s),this._svg&&(Ka(this._svg,{width:this._width*this._scale,height:this._height*this._scale,viewBox:`0 0 ${this._width} ${this._height}`}),this._root.setAttribute("transform",`translate(${this._origin})`)),this._dirty=[],this}canvas(){return this._svg}svg(){const t=this._svg,i=this._bgcolor;if(!t)return null;let n;i&&(t.removeAttribute("style"),n=Ri(t,yh,"rect",Ni),Ka(n,{width:this._width,height:this._height,fill:i}));const s=gE(t);return i&&(t.removeChild(n),this._svg.style.setProperty("background-color",i)),s}_render(t,i){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs(),this.mark(this._root,t,void 0,i),$s(this._root,1)),this.defs(),this._dirty=[],++this._dirtyID,this}dirty(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))}isDirty(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t.dirty===this._dirtyID}_dirtyCheck(){this._dirtyAll=!0;const t=this._dirty;if(!t.length||!this._dirtyID)return!0;const i=++this._dirtyID;let n,s,l,c,r,a,u;
46for(r=0,a=t.length;r<a;++r)if(n=t[r],s=n.mark,s.marktype!==l&&(l=s.marktype,c=Ks[l]),s.zdirty&&s.dirty!==i&&(this._dirtyAll=!1,Rk(n,i),s.items.forEach(o=>{o.dirty=i})),!s.zdirty){if(n.exit){c.nested&&s.items.length?(u=s.items[0],u._svg&&this._update(c,u._svg,u)):n._svg&&(u=n._svg.parentNode,u&&u.removeChild(n._svg)),n._svg=null;continue}n=c.nested?s.items[0]:n,n._update!==i&&(!n._svg||!n._svg.ownerSVGElement?(this._dirtyAll=!1,Rk(n,i)):this._update(c,n._svg,n),n._update=i)}return!this._dirtyAll}mark(t,i,n,s){if(!this.isDirty(i))return i._svg;const l=this._svg,c=i.marktype,r=Ks[c],a=i.interactive===!1?"none":null,u=r.tag==="g",o=kk(i,t,n,"g",l);if(c!=="group"&&s!=null&&!s.includes(c))return $s(o,0),i._svg;o.setAttribute("class",mE(i));const d=GE(i);for(const Z in d)Nn(o,Z,d[Z]);u||Nn(o,"pointer-events",a),Nn(o,"clip-path",i.clip?M5(this,i,i.group):null);let b=null,h=0;const p=Z=>{const X=this.isDirty(Z),J=kk(Z,o,b,r.tag,l);X&&(this._update(r,J,Z),u&&jhe(this,J,Z,s)),b=J,++h};return r.nested?i.items.length&&p(i.items[0]):jl(i,p),$s(o,h),o}_update(t,i,n){Lr=i,hn=i.__values__,YE(ff,n),t.attr(ff,n,this);const s=Phe[t.type];s&&s.call(this,t,i,n),Lr&&this.style(Lr,n)}style(t,i){if(i!=null){for(const n in MW){let s=n==="font"?e0(i):i[n];if(s===hn[n])continue;const l=MW[n];s==null?t.removeAttribute(l):(L5(s)&&(s=Mj(s,this._defs.gradient,wE())),t.setAttribute(l,s+"")),hn[n]=s}for(const n in KW)NZ(t,KW[n],i[n])}}defs(){const t=this._svg,i=this._defs;let n=i.el,s=0;
vendor: 5,197 bytes, lines 46-47
46for(const l in i.gradient)n||(i.el=n=Ri(t,yh+1,"defs",Ni)),s=_he(n,i.gradient[l],s);for(const l in i.clipping)n||(i.el=n=Ri(t,yh+1,"defs",Ni)),s=Ohe(n,i.clipping[l],s);n&&(s===0?(t.removeChild(n),i.el=null):$s(n,s))}_clearDefs(){const t=this._defs;t.gradient={},t.clipping={}}}function Rk(e,t){for(;e&&e.dirty!==t;e=e.mark.group)if(e.dirty=t,e.mark&&e.mark.dirty!==t)e.mark.dirty=t;else return}function _he(e,t,i){let n,s,l;if(t.gradient==="radial"){let c=Ri(e,i++,"pattern",Ni);Ka(c,{id:zW+t.id,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),c=Ri(c,0,"rect",Ni),Ka(c,{width:1,height:1,fill:`url(${wE()}#${t.id})`}),e=Ri(e,i++,"radialGradient",Ni),Ka(e,{id:t.id,fx:t.x1,fy:t.y1,fr:t.r1,cx:t.x2,cy:t.y2,r:t.r2})}else e=Ri(e,i++,"linearGradient",Ni),Ka(e,{id:t.id,x1:t.x1,x2:t.x2,y1:t.y1,y2:t.y2});for(n=0,s=t.stops.length;n<s;++n)l=Ri(e,n,"stop",Ni),l.setAttribute("offset",t.stops[n].offset),l.setAttribute("stop-color",t.stops[n].color);return $s(e,n),i}function Ohe(e,t,i){let n;return e=Ri(e,i,"clipPath",Ni),e.setAttribute("id",t.id),t.path?(n=Ri(e,0,"path",Ni),n.setAttribute("d",t.path)):(n=Ri(e,0,"rect",Ni),Ka(n,{x:0,y:0,width:t.width,height:t.height})),$s(e,1),i+1}function jhe(e,t,i,n){t=t.lastChild.previousSibling;let s,l=0;jl(i,c=>{s=e.mark(t,c,s,n),++l}),$s(t,1+l)}function kk(e,t,i,n,s){let l=e._svg,c;if(!l&&(c=t.ownerDocument,l=Ma(c,n,Ni),e._svg=l,e.mark&&(l.__data__=e,l.__values__={fill:"default"},n==="g"))){const r=Ma(c,"path",Ni);l.appendChild(r),r.__data__=e;const a=Ma(c,"g",Ni);l.appendChild(a),a.__data__=e;const u=Ma(c,"path",Ni);l.appendChild(u),u.__data__=e,u.__values__={fill:"default"}}return(l.ownerSVGElement!==s||Ehe(l,i))&&t.insertBefore(l,i?i.nextSibling:t.firstChild),l}function Ehe(e,t){return e.parentNode&&e.parentNode.childNodes.length>1&&e.previousSibling!=t}let Lr=null,hn=null;const Phe={group(e,t,i){const n=Lr=t.childNodes[2];hn=n.__values__,e.foreground(ff,i,this),hn=t.__values__,Lr=t.childNodes[1],e.content(ff,i,this);const s=Lr=t.childNodes[0];e.background(ff,i,this);const l=i.mark.interactive===!1?"none":null;if(l!==hn.events&&(Nn(n,"pointer-events",l),Nn(s,"pointer-events",l),hn.events=l),i.strokeForeground&&i.stroke){const c=i.fill;Nn(n,"display",null),this.style(s,i),Nn(s,"stroke",null),c&&(i.fill=null),hn=n.__values__,this.style(n,i),c&&(i.fill=c),Lr=null}else Nn(n,"display","none")},image(e,t,i){i.smooth===!1?(NZ(t,"image-rendering","optimizeSpeed"),NZ(t,"image-rendering","pixelated")):NZ(t,"image-rendering",null)},text(e,t,i){const n=qp(i);let s,l,c,r;fe(n)?(l=n.map(a=>ho(i,a)),s=l.join(` 47`),s!==hn.text&&($s(t,0),c=t.ownerDocument,r=bo(i),l.forEach((a,u)=>{const o=Ma(c,"tspan",Ni);o.__data__=i,o.textContent=a,u&&(o.setAttribute("x",0),o.setAttribute("dy",r)),t.appendChild(o)}),hn.text=s)):(l=ho(i,n),l!==hn.text&&(t.textContent=l,hn.text=l)),Nn(t,"font-family",e0(i)),Nn(t,"font-size",cr(i)+"px"),Nn(t,"font-style",i.fontStyle),Nn(t,"font-variant",i.fontVariant),Nn(t,"font-weight",i.fontWeight)}};function ff(e,t,i){t!==hn[e]&&(i?Uhe(Lr,e,t,i):Nn(Lr,e,t),hn[e]=t)}function NZ(e,t,i){i!==hn[t]&&(i==null?e.style.removeProperty(t):e.style.setProperty(t,i+""),hn[t]=i)}function Ka(e,t){for(const i in t)Nn(e,i,t[i])}function Nn(e,t,i){i!=null?e.setAttribute(t,i):e.removeAttribute(t)}function Uhe(e,t,i,n){i!=null?e.setAttributeNS(n,t,i):e.removeAttributeNS(n,t)}function wE(){let e;return typeof window>"u"?"":(e=window.location).hash?e.href.slice(0,-e.hash.length):e.href}class HE extends t0{constructor(t){super(t),this._text=null,this._defs={gradient:{},clipping:{}}}svg(){return this._text}_render(t){const i=ag();i.open("svg",lt({},Pf,{class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:`0 0 ${this._width} ${this._height}`}));const n=this._bgcolor;return n&&n!=="transparent"&&n!=="none"&&i.open("rect",{width:this._width,height:this._height,fill:n}).close(),i.open("g",zE,{transform:"translate("+this._origin+")"}),this.mark(i,t),i.close(),this.defs(i),this._text=i.close()+"",this}mark(t,i){const n=Ks[i.marktype],s=n.tag,l=[YE,n.attr];t.open("g",{class:mE(i),"clip-path":i.clip?M5(this,i,i.group):null},GE(i),{"pointer-events":s!=="g"&&i.interactive===!1?"none":null});const c=r=>{const a=this.href(r);if(a&&t.open("a",a),t.open(s,this.attr(i,r,l,s!=="g"?s:null)),s==="text"){const u=qp(r);if(fe(u)){const o={x:0,dy:bo(r)};for(let d=0;d<u.length;++d)t.open("tspan",d?o:null).text(ho(r,u[d])).close()}else t.text(ho(r,u))}else if(s==="g"){const u=r.strokeForeground,o=r.fill,d=r.stroke;u&&d&&(r.stroke=null),t.open("path",this.attr(i,r,n.background,"bgrect")).close(),t.open("g",this.attr(i,r,n.content)),jl(r,b=>this.mark(t,b)),t.close(),u&&d?(o&&(r.fill=null),r.stroke=d,t.open("path",this.attr(i,r,n.foreground,"bgrect")).close(),o&&(r.fill=o)):t.open("path",this.attr(i,r,n.foreground,"bgfore")).close()}t.close(),a&&t.close()};return n.nested?i.items&&i.items.length&&c(i.items[0]):jl(i,c),t.close()}href(t){const i=t.href;let n;if(i){if(n=this._hrefs&&this._hrefs[i])return n;this.sanitizeURL(i).then(s=>{s["xlink:href"]=s.href,s.href=null,(this._hrefs||(this._hrefs={}))[i]=s})}return null}attr(t,i,n,s){const l={},c=(r,a,u,o)=>{l[o||r]=a};
47return Array.isArray(n)?n.forEach(r=>r(c,i,this)):n(c,i,this),s&&$he(l,i,t,s,this._defs),l}defs(t){const i=this._defs.gradient,n=this._defs.clipping;if(Object.keys(i).length+Object.keys(n).length!==0){t.open("defs");for(const l in i){const c=i[l],r=c.stops;c.gradient==="radial"?(t.open("pattern",{id:zW+l,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),t.open("rect",{width:"1",height:"1",fill:"url(#"+l+")"}).close(),t.close(),t.open("radialGradient",{id:l,fx:c.x1,fy:c.y1,fr:c.r1,cx:c.x2,cy:c.y2,r:c.r2})):t.open("linearGradient",{id:l,x1:c.x1,x2:c.x2,y1:c.y1,y2:c.y2});for(let a=0;a<r.length;++a)t.open("stop",{offset:r[a].offset,"stop-color":r[a].color}).close();t.close()}for(const l in n){const c=n[l];t.open("clipPath",{id:l}),c.path?t.open("path",{d:c.path}).close():t.open("rect",{x:0,y:0,width:c.width,height:c.height}).close(),t.close()}t.close()}}}function $he(e,t,i,n,s){let l;if(t==null||(n==="bgrect"&&i.interactive===!1&&(e["pointer-events"]="none"),n==="bgfore"&&(i.interactive===!1&&(e["pointer-events"]="none"),e.display="none",t.fill!==null)))return e;n==="image"&&t.smooth===!1&&(l=["image-rendering: optimizeSpeed;","image-rendering: pixelated;"]),n==="text"&&(e["font-family"]=e0(t),e["font-size"]=cr(t)+"px",e["font-style"]=t.fontStyle,e["font-variant"]=t.fontVariant,e["font-weight"]=t.fontWeight);for(const c in MW){let r=t[c];const a=MW[c];r==="transparent"&&(a==="fill"||a==="stroke")||r!=null&&(L5(r)&&(r=Mj(r,s.gradient,"")),e[a]=r)}for(const c in KW){const r=t[c];r!=null&&(l=l||[],l.push(`${KW[c]}: ${r};`))}return l&&(e.style=l.join(" ")),e}const gl={svgMarkTypes:["text"],svgOnTop:!0,debug:!1};function Qhe(e){gl.svgMarkTypes=e.svgMarkTypes??["text"],gl.svgOnTop=e.svgOnTop??!0,gl.debug=e.debug??!1}class zG extends t0{constructor(t){super(t),this._svgRenderer=new og(t),this._canvasRenderer=new TW(t)}initialize(t,i,n,s,l){this._root_el=Ri(t,0,"div");const c=Ri(this._root_el,0,"div"),r=Ri(this._root_el,1,"div");return this._root_el.style.position="relative",gl.debug||(c.style.height="100%",r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.height="100%",r.style.width="100%"),this._svgEl=gl.svgOnTop?r:c,this._canvasEl=gl.svgOnTop?c:r,this._svgEl.style.pointerEvents="none",this._canvasRenderer.initialize(this._canvasEl,i,n,s,l),this._svgRenderer.initialize(this._svgEl,i,n,s,l),super.initialize(t,i,n,s,l)}dirty(t){return gl.svgMarkTypes.includes(t.mark.marktype)?this._svgRenderer.dirty(t):this._canvasRenderer.dirty(t),this}_render(t,i){const s=(i??["arc","area","image","line","path","rect","rule","shape","symbol","text","trail"]).filter(l=>!gl.svgMarkTypes.includes(l));this._svgRenderer.render(t,gl.svgMarkTypes),this._canvasRenderer.render(t,s)}resize(t,i,n,s){return super.resize(t,i,n,s),this._svgRenderer.resize(t,i,n,s),this._canvasRenderer.resize(t,i,n,s),this}background(t){return gl.svgOnTop?this._canvasRenderer.background(t):this._svgRenderer.background(t),this}}class NE extends i0{constructor(t,i){super(t,i)}initialize(t,i,n){const s=Ri(Ri(t,0,"div"),gl.svgOnTop?0:1,"div");return super.initialize(s,i,n)}}const RE="canvas",kE="hybrid",FE="png",SE="svg",LE="none",Ba={Canvas:RE,PNG:FE,SVG:SE,Hybrid:kE,None:LE},ku={};ku[RE]=ku[FE]={renderer:TW,headless:TW,handler:i0};ku[SE]={renderer:og,headless:HE,handler:WE};ku[kE]={renderer:zG,headless:zG,handler:NE};ku[LE]={};function U2(e,t){return e=String(e||"").toLowerCase(),arguments.length>1?(ku[e]=t,this):ku[e]}function CE(e,t,i){const n=[],s=new zi().union(t),l=e.marktype;return l?TE(e,s,i,n):l==="group"?ME(e,s,i,n):me("Intersect scene must be mark node or group item.")}function TE(e,t,i,n){if(Dhe(e,t,i)){const s=e.items,l=e.marktype,c=s.length;let r=0;if(l==="group")for(;r<c;++r)ME(s[r],t,i,n);else for(const a=Ks[l].isect;r<c;++r){const u=s[r];KE(u,t,a)&&n.push(u)}}return n}function Dhe(e,t,i){return e.bounds&&t.intersects(e.bounds)&&(e.marktype==="group"||e.interactive!==!1&&(!i||i(e)))}function ME(e,t,i,n){i&&i(e.mark)&&KE(e,t,Ks.group.isect)&&n.push(e);const s=e.items,l=s&&s.length;if(l){const c=e.x||0,r=e.y||0;t.translate(-c,-r);for(let a=0;a<l;++a)TE(s[a],t,i,n);t.translate(c,r)}return n}function KE(e,t,i){const n=e.bounds;return t.encloses(n)||t.intersects(n)&&i(e,t)}const Tx=new zi;function BE(e){const t=e.clip;if(ct(t))t(Dp(Tx.clear()));else if(t)Tx.set(0,0,e.group.width,e.group.height);else return;
vendor: 57,560 bytes, line 47
47e.bounds.intersect(Tx)}const Ahe=1e-9;function ug(e,t,i){return e===t?!0:i==="path"?_E(e,t):e instanceof Date&&t instanceof Date?+e==+t:zt(e)&&zt(t)?Math.abs(e-t)<=Ahe:!e||!t||!we(e)&&!we(t)?e==t:qhe(e,t)}function _E(e,t){return ug(Tm(e),Tm(t))}function qhe(e,t){var i=Object.keys(e),n=Object.keys(t),s,l;if(i.length!==n.length)return!1;for(i.sort(),n.sort(),l=i.length-1;l>=0;l--)if(i[l]!=n[l])return!1;for(l=i.length-1;l>=0;l--)if(s=i[l],!ug(e[s],t[s],s))return!1;return typeof e==typeof t}function efe(){Pj(),Gme()}const Bm="top",Nl="left",Rl="right",fo="bottom",tfe="top-left",ife="top-right",nfe="bottom-left",sfe="bottom-right",dg="start",wG="middle",Rn="end",lfe="x",cfe="y",$2="group",mg="axis",bg="title",rfe="frame",afe="scope",hg="legend",OE="row-header",jE="row-footer",EE="row-title",PE="column-header",UE="column-footer",$E="column-title",ofe="padding",ufe="symbol",QE="fit",DE="fit-x",AE="fit-y",dfe="pad",fg="none",Iy="all",HG="each",pg="flush",_a="column",Oa="row";function qE(e){ue.call(this,null,e)}ge(qE,ue,{transform(e,t){const i=t.dataflow,n=e.mark,s=n.marktype,l=Ks[s],c=l.bound;let r=n.bounds,a;if(l.nested)n.items.length&&i.dirty(n.items[0]),r=gy(n,c),n.items.forEach(u=>{u.bounds.clear().union(r)});else if(s===$2||e.modified())switch(t.visit(t.MOD,u=>i.dirty(u)),r.clear(),n.items.forEach(u=>r.union(gy(u,c))),n.role){case mg:case hg:case bg:t.reflow()}else a=t.changed(t.REM),t.visit(t.ADD,u=>{r.union(gy(u,c))}),t.visit(t.MOD,u=>{a=a||r.alignsWith(u.bounds),i.dirty(u),r.union(gy(u,c))}),a&&(r.clear(),n.items.forEach(u=>r.union(u.bounds)));return BE(n),t.modifies("bounds")}});function gy(e,t,i){return t(e.bounds.clear(),e,i)}const Fk=":vega_identifier:";function yg(e){ue.call(this,0,e)}yg.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]};ge(yg,ue,{transform(e,t){const i=mfe(t.dataflow),n=e.as;let s=i.value;return t.visit(t.ADD,l=>l[n]=l[n]||++s),i.set(this.value=s),t}});function mfe(e){return e._signals[Fk]||(e._signals[Fk]=e.add(0))}function e6(e){ue.call(this,null,e)}ge(e6,ue,{transform(e,t){let i=this.value;i||(i=t.dataflow.scenegraph().mark(e.markdef,bfe(e),e.index),i.group.context=e.context,e.context.group||(e.context.group=i.group),i.source=this.source,i.clip=e.clip,i.interactive=e.interactive,this.value=i);const n=i.marktype===$2?M2:T2;return t.visit(t.ADD,s=>n.call(s,i)),(e.modified("clip")||e.modified("interactive"))&&(i.clip=e.clip,i.interactive=!!e.interactive,i.zdirty=!0,t.reflow()),i.items=t.source,t}});function bfe(e){const t=e.groups,i=e.parent;return t&&t.size===1?t.get(Object.keys(t.object)[0]):t&&i?t.lookup(i):null}function t6(e){ue.call(this,null,e)}const Sk={parity:e=>e.filter((t,i)=>i%2?t.opacity=0:1),greedy:(e,t)=>{let i;return e.filter((n,s)=>!s||!i6(i.bounds,n.bounds,t)?(i=n,1):n.opacity=0)}},i6=(e,t,i)=>i>Math.max(t.x1-e.x2,e.x1-t.x2,t.y1-e.y2,e.y1-t.y2),Lk=(e,t)=>{for(var i=1,n=e.length,s=e[0].bounds,l;i<n;s=l,++i)if(i6(s,l=e[i].bounds,t))return!0},hfe=e=>{const t=e.bounds;return t.width()>1&&t.height()>1},ffe=(e,t,i)=>{var n=e.range(),s=new zi;return t===Bm||t===fo?s.set(n[0],-1/0,n[1],1/0):s.set(-1/0,n[0],1/0,n[1]),s.expand(i||1),l=>s.encloses(l.bounds)},Ck=e=>(e.forEach(t=>t.opacity=1),e),Tk=(e,t)=>e.reflow(t.modified()).modifies("opacity");ge(t6,ue,{transform(e,t){const i=Sk[e.method]||Sk.parity,n=e.separation||0;let s=t.materialize(t.SOURCE).source,l,c;if(!s||!s.length)return;if(!e.method)return e.modified("method")&&(Ck(s),t=Tk(t,e)),t;if(s=s.filter(hfe),!s.length)return;if(e.sort&&(s=s.slice().sort(e.sort)),l=Ck(s),t=Tk(t,e),l.length>=3&&Lk(l,n)){do l=i(l,n);while(l.length>=3&&Lk(l,n));l.length<3&&!Zt(s).opacity&&(l.length>1&&(Zt(l).opacity=0),Zt(s).opacity=1)}e.boundScale&&e.boundTolerance>=0&&(c=ffe(e.boundScale,e.boundOrient,+e.boundTolerance),s.forEach(a=>{c(a)||(a.opacity=0)}));const r=l[0].mark.bounds.clear();return s.forEach(a=>{a.opacity&&r.union(a.bounds)}),t}});function n6(e){ue.call(this,null,e)}ge(n6,ue,{transform(e,t){const i=t.dataflow;if(t.visit(t.ALL,n=>i.dirty(n)),t.fields&&t.fields.zindex){const n=t.source&&t.source[0];n&&(n.mark.zdirty=!0)}}});const bn=new zi;function cm(e,t,i){return e[t]===i?0:(e[t]=i,1)}function pfe(e){var t=e.items[0].orient;return t===Nl||t===Rl}function yfe(e){let t=+e.grid;return[e.ticks?t++:-1,e.labels?t++:-1,t+ +e.domain]}function Zfe(e,t,i,n){var s=t.items[0],l=s.datum,c=s.translate!=null?s.translate:.5,r=s.orient,a=yfe(l),u=s.range,o=s.offset,d=s.position,b=s.minExtent,h=s.maxExtent,p=l.title&&s.items[a[2]].items[0],Z=s.titlePadding,X=s.bounds,J=p&&q5(p),V=0,g=0,I,v;switch(bn.clear().union(X),X.clear(),(I=a[0])>-1&&X.union(s.items[I].bounds),(I=a[1])>-1&&X.union(s.items[I].bounds),r){case Bm:V=d||0,g=-o,v=Math.max(b,Math.min(h,-X.y1)),X.add(0,-v).add(u,0),p&&vy(e,p,v,Z,J,0,-1,X);break;case Nl:V=-o,g=d||0,v=Math.max(b,Math.min(h,-X.x1)),X.add(-v,0).add(0,u),p&&vy(e,p,v,Z,J,1,-1,X);break;case Rl:V=i+o,g=d||0,v=Math.max(b,Math.min(h,X.x2)),X.add(0,0).add(v,u),p&&vy(e,p,v,Z,J,1,1,X);break;case fo:V=d||0,g=n+o,v=Math.max(b,Math.min(h,X.y2)),X.add(0,0).add(u,v),p&&vy(e,p,v,Z,0,0,1,X);break;default:V=s.x,g=s.y}return la(X.translate(V,g),s),cm(s,"x",V+c)|cm(s,"y",g+c)&&(s.bounds=bn,e.dirty(s),s.bounds=X,e.dirty(s)),s.mark.bounds.clear().union(X)}function vy(e,t,i,n,s,l,c,r){const a=t.bounds;if(t.auto){const u=c*(i+s+n);let o=0,d=0;e.dirty(t),l?o=(t.x||0)-(t.x=u):d=(t.y||0)-(t.y=u),t.mark.bounds.clear().union(a.translate(-o,-d)),e.dirty(t)}r.union(a)}const Mk=(e,t)=>Math.floor(Math.min(e,t)),Kk=(e,t)=>Math.ceil(Math.max(e,t));function Wfe(e){var t=e.items,i=t.length,n=0,s,l;const c={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};for(;n<i;++n)if(s=t[n],l=s.items,s.marktype===$2)switch(s.role){case mg:case hg:case bg:break;case OE:c.rowheaders.push(...l);break;case jE:c.rowfooters.push(...l);break;case PE:c.colheaders.push(...l);break;case UE:c.colfooters.push(...l);break;case EE:c.rowtitle=l[0];break;case $E:c.coltitle=l[0];break;default:c.marks.push(...l)}return c}function Xfe(e){return new zi().set(0,0,e.width||0,e.height||0)}function Jfe(e){const t=e.bounds.clone();return t.empty()?t.set(0,0,0,0):t.translate(-(e.x||0),-(e.y||0))}function li(e,t,i){const n=we(e)?e[t]:e;return n??(i!==void 0?i:0)}function Bk(e){return e<0?Math.ceil(-e):0}function s6(e,t,i){var n=!i.nodirty,s=i.bounds===pg?Xfe:Jfe,l=bn.set(0,0,0,0),c=li(i.align,_a),r=li(i.align,Oa),a=li(i.padding,_a),u=li(i.padding,Oa),o=i.columns||t.length,d=o<=0?1:Math.ceil(t.length/o),b=t.length,h=Array(b),p=Array(o),Z=0,X=Array(b),J=Array(d),V=0,g=Array(b),I=Array(b),v=Array(b),k,N,C,f,w,x,R,K,B,_,j;for(N=0;N<o;++N)p[N]=0;for(N=0;N<d;++N)J[N]=0;for(N=0;N<b;++N)x=t[N],w=v[N]=s(x),x.x=x.x||0,g[N]=0,x.y=x.y||0,I[N]=0,C=N%o,f=~~(N/o),Z=Math.max(Z,R=Math.ceil(w.x2)),V=Math.max(V,K=Math.ceil(w.y2)),p[C]=Math.max(p[C],R),J[f]=Math.max(J[f],K),h[N]=a+Bk(w.x1),X[N]=u+Bk(w.y1),n&&e.dirty(t[N]);for(N=0;N<b;++N)N%o===0&&(h[N]=0),N<o&&(X[N]=0);if(c===HG)for(C=1;C<o;++C){for(j=0,N=C;N<b;N+=o)j<h[N]&&(j=h[N]);for(N=C;N<b;N+=o)h[N]=j+p[C-1]}else if(c===Iy){for(j=0,N=0;N<b;++N)N%o&&j<h[N]&&(j=h[N]);for(N=0;N<b;++N)N%o&&(h[N]=j+Z)}else for(c=!1,C=1;C<o;++C)for(N=C;N<b;N+=o)h[N]+=p[C-1];if(r===HG)for(f=1;f<d;++f){for(j=0,N=f*o,k=N+o;N<k;++N)j<X[N]&&(j=X[N]);for(N=f*o;N<k;++N)X[N]=j+J[f-1]}else if(r===Iy){for(j=0,N=o;N<b;++N)j<X[N]&&(j=X[N]);for(N=o;N<b;++N)X[N]=j+V}else for(r=!1,f=1;f<d;++f)for(N=f*o,k=N+o;N<k;++N)X[N]+=J[f-1];for(B=0,N=0;N<b;++N)B=h[N]+(N%o?B:0),g[N]+=B-t[N].x;for(C=0;C<o;++C)for(_=0,N=C;N<b;N+=o)_+=X[N],I[N]+=_-t[N].y;if(c&&li(i.center,_a)&&d>1)for(N=0;N<b;++N)w=c===Iy?Z:p[N%o],B=w-v[N].x2-t[N].x-g[N],B>0&&(g[N]+=B/2);if(r&&li(i.center,Oa)&&o!==1)for(N=0;N<b;++N)w=r===Iy?V:J[~~(N/o)],_=w-v[N].y2-t[N].y-I[N],_>0&&(I[N]+=_/2);for(N=0;N<b;++N)l.union(v[N].translate(g[N],I[N]));switch(B=li(i.anchor,lfe),_=li(i.anchor,cfe),li(i.anchor,_a)){case Rn:B-=l.width();break;case wG:B-=l.width()/2}switch(li(i.anchor,Oa)){case Rn:_-=l.height();break;case wG:_-=l.height()/2}for(B=Math.round(B),_=Math.round(_),l.clear(),N=0;N<b;++N)t[N].mark.bounds.clear();for(N=0;N<b;++N)x=t[N],x.x+=g[N]+=B,x.y+=I[N]+=_,l.union(x.mark.bounds.union(x.bounds.translate(g[N],I[N]))),n&&e.dirty(x);return l}function xfe(e,t,i){var n=Wfe(t),s=n.marks,l=i.bounds===pg?Yfe:Gfe,c=i.offset,r=i.columns||s.length,a=r<=0?1:Math.ceil(s.length/r),u=a*r,o,d,b,h,p,Z,X;const J=s6(e,s,i);J.empty()&&J.set(0,0,0,0),n.rowheaders&&(Z=li(i.headerBand,Oa,null),o=zy(e,n.rowheaders,s,r,a,-li(c,"rowHeader"),Mk,0,l,"x1",0,r,1,Z)),n.colheaders&&(Z=li(i.headerBand,_a,null),d=zy(e,n.colheaders,s,r,r,-li(c,"columnHeader"),Mk,1,l,"y1",0,1,r,Z)),n.rowfooters&&(Z=li(i.footerBand,Oa,null),b=zy(e,n.rowfooters,s,r,a,li(c,"rowFooter"),Kk,0,l,"x2",r-1,r,1,Z)),n.colfooters&&(Z=li(i.footerBand,_a,null),h=zy(e,n.colfooters,s,r,r,li(c,"columnFooter"),Kk,1,l,"y2",u-r,1,r,Z)),n.rowtitle&&(p=li(i.titleAnchor,Oa),X=li(c,"rowTitle"),X=p===Rn?b+X:o-X,Z=li(i.titleBand,Oa,.5),_k(e,n.rowtitle,X,0,J,Z)),n.coltitle&&(p=li(i.titleAnchor,_a),X=li(c,"columnTitle"),X=p===Rn?h+X:d-X,Z=li(i.titleBand,_a,.5),_k(e,n.coltitle,X,1,J,Z))}function Yfe(e,t){return t==="x1"?e.x||0:t==="y1"?e.y||0:t==="x2"?(e.x||0)+(e.width||0):t==="y2"?(e.y||0)+(e.height||0):void 0}function Gfe(e,t){return e.bounds[t]}function zy(e,t,i,n,s,l,c,r,a,u,o,d,b,h){var p=i.length,Z=0,X=0,J,V,g,I,v,k,N,C,f;if(!p)return Z;for(J=o;J<p;J+=d)i[J]&&(Z=c(Z,a(i[J],u)));if(!t.length)return Z;for(t.length>s&&(e.warn("Grid headers exceed limit: "+s),t=t.slice(0,s)),Z+=l,V=0,I=t.length;V<I;++V)e.dirty(t[V]),t[V].mark.bounds.clear();for(J=o,V=0,I=t.length;V<I;++V,J+=d){for(k=t[V],v=k.mark.bounds,g=J;g>=0&&(N=i[g])==null;g-=b);r?(C=h==null?N.x:Math.round(N.bounds.x1+h*N.bounds.width()),f=Z):(C=Z,f=h==null?N.y:Math.round(N.bounds.y1+h*N.bounds.height())),v.union(k.bounds.translate(C-(k.x||0),f-(k.y||0))),k.x=C,k.y=f,e.dirty(k),X=c(X,v[u])}return X}function _k(e,t,i,n,s,l){if(t){e.dirty(t);var c=i,r=i;n?c=Math.round(s.x1+l*s.width()):r=Math.round(s.y1+l*s.height()),t.bounds.translate(c-(t.x||0),r-(t.y||0)),t.mark.bounds.clear().union(t.bounds),t.x=c,t.y=r,e.dirty(t)}}function Vfe(e,t){const i=e[t]||{};return(n,s)=>i[n]!=null?i[n]:e[n]!=null?e[n]:s}function Ife(e,t){let i=-1/0;return e.forEach(n=>{n.offset!=null&&(i=Math.max(i,n.offset))}),i>-1/0?i:t}function gfe(e,t,i,n,s,l,c){const r=Vfe(i,t),a=Ife(e,r("offset",0)),u=r("anchor",dg),o=u===Rn?1:u===wG?.5:0,d={align:HG,bounds:r("bounds",pg),columns:r("direction")==="vertical"?1:e.length,padding:r("margin",8),center:r("center"),nodirty:!0};switch(t){case Nl:d.anchor={x:Math.floor(n.x1)-a,column:Rn,y:o*(c||n.height()+2*n.y1),row:u};break;case Rl:d.anchor={x:Math.ceil(n.x2)+a,y:o*(c||n.height()+2*n.y1),row:u};break;case Bm:d.anchor={y:Math.floor(s.y1)-a,row:Rn,x:o*(l||s.width()+2*s.x1),column:u};break;case fo:d.anchor={y:Math.ceil(s.y2)+a,x:o*(l||s.width()+2*s.x1),column:u};break;case tfe:d.anchor={x:a,y:a};break;case ife:d.anchor={x:l-a,y:a,column:Rn};break;case nfe:d.anchor={x:a,y:c-a,row:Rn};break;case sfe:d.anchor={x:l-a,y:c-a,column:Rn,row:Rn};break}return d}function vfe(e,t){var i=t.items[0],n=i.datum,s=i.orient,l=i.bounds,c=i.x,r=i.y,a,u;return i._bounds?i._bounds.clear().union(l):i._bounds=l.clone(),l.clear(),wfe(e,i,i.items[0].items[0]),l=zfe(i,l),a=2*i.padding,u=2*i.padding,l.empty()||(a=Math.ceil(l.width()+a),u=Math.ceil(l.height()+u)),n.type===ufe&&Hfe(i.items[0].items[0].items[0].items),s!==fg&&(i.x=c=0,i.y=r=0),i.width=a,i.height=u,la(l.set(c,r,c+a,r+u),i),i.mark.bounds.clear().union(l),i}function zfe(e,t){return e.items.forEach(i=>t.union(i.bounds)),t.x1=e.padding,t.y1=e.padding,t}function wfe(e,t,i){var n=t.padding,s=n-i.x,l=n-i.y;if(!t.datum.title)(s||l)&&Zh(e,i,s,l);else{var c=t.items[1].items[0],r=c.anchor,a=t.titlePadding||0,u=n-c.x,o=n-c.y;switch(c.orient){case Nl:s+=Math.ceil(c.bounds.width())+a;break;case Rl:case fo:break;default:l+=c.bounds.height()+a}switch((s||l)&&Zh(e,i,s,l),c.orient){case Nl:o+=Md(t,i,c,r,1,1);break;case Rl:u+=Md(t,i,c,Rn,0,0)+a,o+=Md(t,i,c,r,1,1);break;case fo:u+=Md(t,i,c,r,0,0),o+=Md(t,i,c,Rn,-1,0,1)+a;break;default:u+=Md(t,i,c,r,0,0)}(u||o)&&Zh(e,c,u,o),(u=Math.round(c.bounds.x1-n))<0&&(Zh(e,i,-u,0),Zh(e,c,-u,0))}}function Md(e,t,i,n,s,l,c){const r=e.datum.type!=="symbol",a=i.datum.vgrad,u=r&&(l||!a)&&!c?t.items[0]:t,o=u.bounds[s?"y2":"x2"]-e.padding,d=a&&l?o:0,b=a&&l?0:o,h=s<=0?0:q5(i);return Math.round(n===dg?d:n===Rn?b-h:.5*(o-h))}function Zh(e,t,i,n){t.x+=i,t.y+=n,t.bounds.translate(i,n),t.mark.bounds.translate(i,n),e.dirty(t)}function Hfe(e){const t=e.reduce((i,n)=>(i[n.column]=Math.max(n.bounds.x2-n.x,i[n.column]||0),i),{});e.forEach(i=>{i.width=t[i.column],i.height=i.bounds.y2-i.y})}function Nfe(e,t,i,n,s){var l=t.items[0],c=l.frame,r=l.orient,a=l.anchor,u=l.offset,o=l.padding,d=l.items[0].items[0],b=l.items[1]&&l.items[1].items[0],h=r===Nl||r===Rl?n:i,p=0,Z=0,X=0,J=0,V=0,g;if(c!==$2?r===Nl?(p=s.y2,h=s.y1):r===Rl?(p=s.y1,h=s.y2):(p=s.x1,h=s.x2):r===Nl&&(p=n,h=0),g=a===dg?p:a===Rn?h:(p+h)/2,b&&b.text){switch(r){case Bm:case fo:V=d.bounds.height()+o;break;case Nl:J=d.bounds.width()+o;break;case Rl:J=-d.bounds.width()-o;break}bn.clear().union(b.bounds),bn.translate(J-(b.x||0),V-(b.y||0)),cm(b,"x",J)|cm(b,"y",V)&&(e.dirty(b),b.bounds.clear().union(bn),b.mark.bounds.clear().union(bn),e.dirty(b)),bn.clear().union(b.bounds)}else bn.clear();switch(bn.union(d.bounds),r){case Bm:Z=g,X=s.y1-bn.height()-u;break;case Nl:Z=s.x1-bn.width()-u,X=g;break;case Rl:Z=s.x2+bn.width()+u,X=g;break;case fo:Z=g,X=s.y2+u;break;default:Z=l.x,X=l.y}return cm(l,"x",Z)|cm(l,"y",X)&&(bn.translate(Z,X),e.dirty(l),l.bounds.clear().union(bn),t.bounds.clear().union(bn),e.dirty(l)),l.bounds}function l6(e){ue.call(this,null,e)}ge(l6,ue,{transform(e,t){const i=t.dataflow;return e.mark.items.forEach(n=>{e.layout&&xfe(i,n,e.layout),kfe(i,n,e)}),Rfe(e.mark.group)?t.reflow():t}});function Rfe(e){return e&&e.mark.role!=="legend-entry"}function kfe(e,t,i){var n=t.items,s=Math.max(0,t.width||0),l=Math.max(0,t.height||0),c=new zi().set(0,0,s,l),r=c.clone(),a=c.clone(),u=[],o,d,b,h,p,Z;for(p=0,Z=n.length;p<Z;++p)switch(d=n[p],d.role){case mg:h=pfe(d)?r:a,h.union(Zfe(e,d,s,l));break;case bg:o=d;break;case hg:u.push(vfe(e,d));break;case rfe:case afe:case OE:case jE:case EE:case PE:case UE:case $E:r.union(d.bounds),a.union(d.bounds);break;default:c.union(d.bounds)}if(u.length){const X={};u.forEach(J=>{b=J.orient||Rl,b!==fg&&(X[b]||(X[b]=[])).push(J)});for(const J in X){const V=X[J];s6(e,V,gfe(V,J,i.legends,r,a,s,l))}u.forEach(J=>{const V=J.bounds;if(V.equals(J._bounds)||(J.bounds=J._bounds,e.dirty(J),J.bounds=V,e.dirty(J)),i.autosize&&(i.autosize.type===QE||i.autosize.type===DE||i.autosize.type===AE))switch(J.orient){case Nl:case Rl:c.add(V.x1,0).add(V.x2,0);break;case Bm:case fo:c.add(0,V.y1).add(0,V.y2)}else c.union(V)})}c.union(r).union(a),o&&c.union(Nfe(e,o,s,l,c)),t.clip&&c.set(0,0,t.width||0,t.height||0),Ffe(e,t,c,i)}function Ffe(e,t,i,n){const s=n.autosize||{},l=s.type;if(e._autosize<1||!l)return;let c=e._width,r=e._height,a=Math.max(0,t.width||0),u=Math.max(0,Math.ceil(-i.x1)),o=Math.max(0,t.height||0),d=Math.max(0,Math.ceil(-i.y1));const b=Math.max(0,Math.ceil(i.x2-a)),h=Math.max(0,Math.ceil(i.y2-o));if(s.contains===ofe){const p=e.padding();c-=p.left+p.right,r-=p.top+p.bottom}l===fg?(u=0,d=0,a=c,o=r):l===QE?(a=Math.max(0,c-u-b),o=Math.max(0,r-d-h)):l===DE?(a=Math.max(0,c-u-b),r=o+d+h):l===AE?(c=a+u+b,o=Math.max(0,r-d-h)):l===dfe&&(c=a+u+b,r=o+d+h),e._resizeView(c,r,a,o,[u,d],s.resize)}const Sfe=Object.freeze(Object.defineProperty({__proto__:null,bound:qE,identifier:yg,mark:e6,overlap:t6,render:n6,viewlayout:l6},Symbol.toStringTag,{value:"Module"}));function c6(e){ue.call(this,null,e)}ge(c6,ue,{transform(e,t){if(this.value&&!e.modified())return t.StopPropagation;var i=t.dataflow.locale(),n=t.fork(t.NO_SOURCE|t.NO_FIELDS),s=this.value,l=e.scale,c=e.count==null?e.values?e.values.length:10:e.count,r=F5(l,c,e.minstep),a=e.format||Rj(i,l,r,e.formatSpecifier,e.formatType,!!e.values),u=e.values?Nj(l,e.values,r):S5(l,r);return s&&(n.rem=s),s=u.map((o,d)=>Rt({index:d/(u.length-1||1),value:o,label:a(o)})),e.extra&&s.length&&s.push(Rt({index:-1,extra:{value:s[0].value},label:""})),n.source=s,n.add=s,this.value=s,n}});function r6(e){ue.call(this,null,e)}function Lfe(){return Rt({})}function Cfe(e){const t=Vb().test(i=>i.exit);return t.lookup=i=>t.get(e(i)),t}ge(r6,ue,{transform(e,t){var i=t.dataflow,n=t.fork(t.NO_SOURCE|t.NO_FIELDS),s=e.item||Lfe,l=e.key||Oe,c=this.value;return fe(n.encode)&&(n.encode=null),c&&(e.modified("key")||t.modified(l))&&me("DataJoin does not support modified key function or fields."),c||(t=t.addAll(),this.value=c=Cfe(l)),t.visit(t.ADD,r=>{const a=l(r);let u=c.get(a);u?u.exit?(c.empty--,n.add.push(u)):n.mod.push(u):(u=s(r),c.set(a,u),n.add.push(u)),u.datum=r,u.exit=!1}),t.visit(t.MOD,r=>{const a=l(r),u=c.get(a);u&&(u.datum=r,n.mod.push(u))}),t.visit(t.REM,r=>{const a=l(r),u=c.get(a);r===u.datum&&!u.exit&&(n.rem.push(u),u.exit=!0,++c.empty)}),t.changed(t.ADD_MOD)&&n.modifies("datum"),(t.clean()||e.clean&&c.empty>i.cleanThreshold)&&i.runAfter(c.clean),n}});function a6(e){ue.call(this,null,e)}ge(a6,ue,{transform(e,t){var i=t.fork(t.ADD_REM),n=e.mod||!1,s=e.encoders,l=t.encode;if(fe(l))if(i.changed()||l.every(d=>s[d]))l=l[0],i.encode=null;else return t.StopPropagation;var c=l==="enter",r=s.update||ga,a=s.enter||ga,u=s.exit||ga,o=(l&&!c?s[l]:r)||ga;if(t.changed(t.ADD)&&(t.visit(t.ADD,d=>{a(d,e),r(d,e)}),i.modifies(a.output),i.modifies(r.output),o!==ga&&o!==r&&(t.visit(t.ADD,d=>{o(d,e)}),i.modifies(o.output))),t.changed(t.REM)&&u!==ga&&(t.visit(t.REM,d=>{u(d,e)}),i.modifies(u.output)),c||o!==ga){const d=t.MOD|(e.modified()?t.REFLOW:0);c?(t.visit(d,b=>{const h=a(b,e)||n;(o(b,e)||h)&&i.mod.push(b)}),i.mod.length&&i.modifies(a.output)):t.visit(d,b=>{(o(b,e)||n)&&i.mod.push(b)}),i.mod.length&&i.modifies(o.output)}return i.changed()?i:t.StopPropagation}});function o6(e){ue.call(this,[],e)}ge(o6,ue,{transform(e,t){if(this.value!=null&&!e.modified())return t.StopPropagation;var i=t.dataflow.locale(),n=t.fork(t.NO_SOURCE|t.NO_FIELDS),s=this.value,l=e.type||GZ,c=e.scale,r=+e.limit,a=F5(c,e.count==null?5:e.count,e.minstep),u=!!e.values||l===GZ,o=e.format||Lj(i,c,a,l,e.formatSpecifier,e.formatType,u),d=e.values||Sj(c,a),b,h,p,Z,X;return s&&(n.rem=s),l===GZ?(r&&d.length>r?(t.dataflow.warn("Symbol legend count exceeds limit, filtering items."),s=d.slice(0,r-1),X=!0):s=d,ct(p=e.size)?(!e.values&&c(s[0])===0&&(s=s.slice(1)),Z=s.reduce((J,V)=>Math.max(J,p(V,e)),0)):p=In(Z=p||8),s=s.map((J,V)=>Rt({index:V,label:o(J,V,s),value:J,offset:Z,size:p(J,e)})),X&&(X=d[s.length],s.push(Rt({index:s.length,label:`â¦${d.length-s.length} entries`,value:X,offset:Z,size:p(X,e)})))):l===dme?(b=c.domain(),h=zj(c,b[0],Zt(b)),d.length<3&&!e.values&&b[0]!==Zt(b)&&(d=[b[0],Zt(b)]),s=d.map((J,V)=>Rt({index:V,label:o(J,V,d),value:J,perc:h(J)}))):(p=d.length-1,h=xme(c),s=d.map((J,V)=>Rt({index:V,label:o(J,V,d),value:J,perc:V?h(J):0,perc2:V===p?1:h(d[V+1])}))),n.source=s,n.add=s,this.value=s,n}});const Tfe=e=>e.source.x,Mfe=e=>e.source.y,Kfe=e=>e.target.x,Bfe=e=>e.target.y;function Zg(e){ue.call(this,{},e)}Zg.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]};ge(Zg,ue,{transform(e,t){var i=e.sourceX||Tfe,n=e.sourceY||Mfe,s=e.targetX||Kfe,l=e.targetY||Bfe,c=e.as||"path",r=e.orient||"vertical",a=e.shape||"line",u=Ok.get(a+"-"+r)||Ok.get(a);return u||me("LinkPath unsupported type: "+e.shape+(e.orient?"-"+e.orient:"")),t.visit(t.SOURCE,o=>{o[c]=u(i(o),n(o),s(o),l(o))}),t.reflow(e.modified()).modifies(c)}});const u6=(e,t,i,n)=>"M"+e+","+t+"L"+i+","+n,_fe=(e,t,i,n)=>u6(t*Math.cos(e),t*Math.sin(e),n*Math.cos(i),n*Math.sin(i)),d6=(e,t,i,n)=>{var s=i-e,l=n-t,c=Math.hypot(s,l)/2,r=180*Math.atan2(l,s)/Math.PI;return"M"+e+","+t+"A"+c+","+c+" "+r+" 0 1 "+i+","+n},Ofe=(e,t,i,n)=>d6(t*Math.cos(e),t*Math.sin(e),n*Math.cos(i),n*Math.sin(i)),m6=(e,t,i,n)=>{const s=i-e,l=n-t,c=.2*(s+l),r=.2*(l-s);return"M"+e+","+t+"C"+(e+c)+","+(t+r)+" "+(i+r)+","+(n-c)+" "+i+","+n},jfe=(e,t,i,n)=>m6(t*Math.cos(e),t*Math.sin(e),n*Math.cos(i),n*Math.sin(i)),Efe=(e,t,i,n)=>"M"+e+","+t+"V"+n+"H"+i,Pfe=(e,t,i,n)=>"M"+e+","+t+"H"+i+"V"+n,Ufe=(e,t,i,n)=>{const s=Math.cos(e),l=Math.sin(e),c=Math.cos(i),r=Math.sin(i),a=Math.abs(i-e)>Math.PI?i<=e:i>e;return"M"+t*s+","+t*l+"A"+t+","+t+" 0 0,"+(a?1:0)+" "+t*c+","+t*r+"L"+n*c+","+n*r},$fe=(e,t,i,n)=>{const s=(e+i)/2;return"M"+e+","+t+"C"+s+","+t+" "+s+","+n+" "+i+","+n},Qfe=(e,t,i,n)=>{const s=(t+n)/2;return"M"+e+","+t+"C"+e+","+s+" "+i+","+s+" "+i+","+n},Dfe=(e,t,i,n)=>{const s=Math.cos(e),l=Math.sin(e),c=Math.cos(i),r=Math.sin(i),a=(t+n)/2;return"M"+t*s+","+t*l+"C"+a*s+","+a*l+" "+a*c+","+a*r+" "+n*c+","+n*r},Ok=Vb({line:u6,"line-radial":_fe,arc:d6,"arc-radial":Ofe,curve:m6,"curve-radial":jfe,"orthogonal-horizontal":Efe,"orthogonal-vertical":Pfe,"orthogonal-radial":Ufe,"diagonal-horizontal":$fe,"diagonal-vertical":Qfe,"diagonal-radial":Dfe});function Wg(e){ue.call(this,null,e)}Wg.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]};ge(Wg,ue,{transform(e,t){var i=e.as||["startAngle","endAngle"],n=i[0],s=i[1],l=e.field||Jb,c=e.startAngle||0,r=e.endAngle!=null?e.endAngle:2*Math.PI,a=t.source,u=a.map(l),o=u.length,d=c,b=(r-c)/Uc(u),h=Cn(o),p,Z,X;for(e.sort&&h.sort((J,V)=>u[J]-u[V]),p=0;p<o;++p)X=u[h[p]],Z=a[h[p]],Z[n]=d,Z[s]=d+=X*b;return this.value=u,t.reflow(e.modified()).modifies(i)}});const Afe=5;function qfe(e){const t=e.type;return!e.bins&&(t===Sm||t===Op||t===jp)}function b6(e){return N5(e)&&e!==_c}const epe=_l(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function h6(e){ue.call(this,null,e),this.modified(!0)}ge(h6,ue,{transform(e,t){var i=t.dataflow,n=this.value,s=tpe(e);(!n||s!==n.type)&&(this.value=n=wt(s)());for(s in e)if(!epe[s]){if(s==="padding"&&b6(n.type))continue;ct(n[s])?n[s](e[s]):i.warn("Unsupported scale property: "+s)}return rpe(n,e,cpe(n,e,npe(n,e,i))),t.fork(t.NO_SOURCE|t.NO_FIELDS)}});function tpe(e){var t=e.type,i="",n;return t===_c?_c+"-"+Sm:(ipe(e)&&(n=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,i=n===2?_c+"-":n===3?zb+"-":""),(i+t||Sm).toLowerCase())}function ipe(e){const t=e.type;return N5(t)&&t!==Nu&&t!==Ru&&(e.scheme||e.range&&e.range.length&&e.range.every(He))}function npe(e,t,i){const n=spe(e,t.domainRaw,i);if(n>-1)return n;var s=t.domain,l=e.type,c=t.zero||t.zero===void 0&&qfe(e),r,a;if(!s)return 0;if((c||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(r=(s=s.slice()).length-1||1,c&&(s[0]>0&&(s[0]=0),s[r]<0&&(s[r]=0)),t.domainMin!=null&&(s[0]=t.domainMin),t.domainMax!=null&&(s[r]=t.domainMax),t.domainMid!=null)){a=t.domainMid;const u=a>s[r]?r+1:a<s[0]?0:r;u!==r&&i.warn("Scale domainMid exceeds domain min or max.",a),s.splice(u,0,a)}return b6(l)&&t.padding&&s[0]!==Zt(s)&&(s=lpe(l,s,t.range,t.padding,t.exponent,t.constant)),e.domain(f6(l,s,i)),l===v5&&e.unknown(t.domainImplicit?wM:void 0),t.nice&&e.nice&&e.nice(t.nice!==!0&&F5(e,t.nice)||null),s.length}function spe(e,t,i){return t?(e.domain(f6(e.type,t,i)),t.length):-1}function lpe(e,t,i,n,s,l){var c=Math.abs(Zt(i)-i[0]),r=c/(c-2*n),a=e===Ar?X3(t,null,r):e===jp?YW(t,null,r,.5):e===Op?YW(t,null,r,s||1):e===k2?J3(t,null,r,l||1):W3(t,null,r);return t=t.slice(),t[0]=a[0],t[t.length-1]=a[1],t}function f6(e,t,i){if(Gj(e)){var n=Math.abs(t.reduce((s,l)=>s+(l<0?-1:l>0?1:0),0));n!==t.length&&i.warn("Log scale domain includes zero: "+Ge(t))}return t}function cpe(e,t,i){let n=t.bins;if(n&&!fe(n)){const s=e.domain(),l=s[0],c=Zt(s),r=n.step;let a=n.start==null?l:n.start,u=n.stop==null?c:n.stop;r||me("Scale bins parameter missing step property."),a<l&&(a=r*Math.ceil(l/r)),u>c&&(u=r*Math.floor(c/r)),n=Cn(a,u+r/2,r)}return n?e.bins=n:e.bins&&delete e.bins,e.type===z5&&(n?!t.domain&&!t.domainRaw&&(e.domain(n),i=n.length):e.bins=e.domain()),i}function rpe(e,t,i){var n=e.type,s=t.round||!1,l=t.range;if(t.rangeStep!=null)l=ape(n,t,i);else if(t.scheme&&(l=ope(n,t,i),ct(l))){if(e.interpolator)return e.interpolator(l);me(`Scale type ${n} does not support interpolating color schemes.`)}if(l&&Vj(n))return e.interpolator(L2(NG(l,t.reverse),t.interpolate,t.interpolateGamma));l&&t.interpolate&&e.interpolate?e.interpolate(R5(t.interpolate,t.interpolateGamma)):ct(e.round)?e.round(s):ct(e.rangeRound)&&e.interpolate(s?HI:eM),l&&e.range(NG(l,t.reverse))}function ape(e,t,i){e!==Zj&&e!==yG&&me("Only band and point scales support rangeStep.");var n=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,s=e===yG?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*g5(i,s,n)]}function ope(e,t,i){var n=t.schemeExtent,s,l;return fe(t.scheme)?l=L2(t.scheme,t.interpolate,t.interpolateGamma):(s=t.scheme.toLowerCase(),l=k5(s),l||me(`Unrecognized scheme name: ${t.scheme}`)),i=e===S2?i+1:e===z5?i-1:e===Lm||e===F2?+t.schemeCount||Afe:i,Vj(e)?jk(l,n,t.reverse):ct(l)?vj(jk(l,n),i):e===v5?l:l.slice(0,i)}function jk(e,t,i){return ct(e)&&(t||i)?gj(e,NG(t||[0,1],i)):e}function NG(e,t){return t?e.slice().reverse():e}function p6(e){ue.call(this,null,e)}ge(p6,ue,{transform(e,t){const i=e.modified("sort")||t.changed(t.ADD)||t.modified(e.sort.fields)||t.modified("datum");return i&&t.source.sort(sd(e.sort)),this.modified(i),t}});const Ek="zero",y6="center",Z6="normalize",W6=["y0","y1"];function Xg(e){ue.call(this,null,e)}Xg.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:Ek,values:[Ek,y6,Z6]},{name:"as",type:"string",array:!0,length:2,default:W6}]};ge(Xg,ue,{transform(e,t){var i=e.as||W6,n=i[0],s=i[1],l=sd(e.sort),c=e.field||Jb,r=e.offset===y6?upe:e.offset===Z6?dpe:mpe,a,u,o,d;for(a=bpe(t.source,e.groupby,l,c),u=0,o=a.length,d=a.max;u<o;++u)r(a[u],d,c,n,s);return t.reflow(e.modified()).modifies(i)}});function upe(e,t,i,n,s){for(var l=(t-e.sum)/2,c=e.length,r=0,a;r<c;++r)a=e[r],a[n]=l,a[s]=l+=Math.abs(i(a))}function dpe(e,t,i,n,s){for(var l=1/e.sum,c=0,r=e.length,a=0,u=0,o;a<r;++a)o=e[a],o[n]=c,o[s]=c=l*(u+=Math.abs(i(o)))}function mpe(e,t,i,n,s){for(var l=0,c=0,r=e.length,a=0,u,o;a<r;++a)o=e[a],u=+i(o),u<0?(o[n]=c,o[s]=c+=u):(o[n]=l,o[s]=l+=u)}function bpe(e,t,i,n){var s=[],l=Z=>Z(o),c,r,a,u,o,d,b,h,p;if(t==null)s.push(e.slice());else for(c={},r=0,a=e.length;r<a;++r)o=e[r],d=t.map(l),b=c[d],b||(c[d]=b=[],s.push(b)),b.push(o);for(d=0,p=0,u=s.length;d<u;++d){for(b=s[d],r=0,h=0,a=b.length;r<a;++r)h+=Math.abs(n(b[r]));b.sum=h,h>p&&(p=h),i&&b.sort(i)}return s.max=p,s}const hpe=Object.freeze(Object.defineProperty({__proto__:null,axisticks:c6,datajoin:r6,encode:a6,legendentries:o6,linkpath:Zg,pie:Wg,scale:h6,sortitems:p6,stack:Xg},Symbol.toStringTag,{value:"Module"}));var Ue=1e-6,RG=1e-12,bt=Math.PI,pi=bt/2,BW=bt/4,En=bt*2,Ji=180/bt,dt=bt/180,yt=Math.abs,Hb=Math.atan,bl=Math.atan2,Pe=Math.cos,wy=Math.ceil,X6=Math.exp,kG=Math.hypot,_W=Math.log,Mx=Math.pow,je=Math.sin,il=Math.sign||function(e){return e>0?1:e<0?-1:0},Pn=Math.sqrt,Jg=Math.tan;function J6(e){return e>1?0:e<-1?bt:Math.acos(e)}function bs(e){return e>1?pi:e<-1?-pi:Math.asin(e)}function sn(){}function OW(e,t){e&&Uk.hasOwnProperty(e.type)&&Uk[e.type](e,t)}var Pk={Feature:function(e,t){OW(e.geometry,t)},FeatureCollection:function(e,t){for(var i=e.features,n=-1,s=i.length;++n<s;)OW(i[n].geometry,t)}},Uk={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var i=e.coordinates,n=-1,s=i.length;++n<s;)e=i[n],t.point(e[0],e[1],e[2])},LineString:function(e,t){FG(e.coordinates,t,0)},MultiLineString:function(e,t){for(var i=e.coordinates,n=-1,s=i.length;++n<s;)FG(i[n],t,0)},Polygon:function(e,t){$k(e.coordinates,t)},MultiPolygon:function(e,t){for(var i=e.coordinates,n=-1,s=i.length;++n<s;)$k(i[n],t)},GeometryCollection:function(e,t){for(var i=e.geometries,n=-1,s=i.length;++n<s;)OW(i[n],t)}};function FG(e,t,i){var n=-1,s=e.length-i,l;for(t.lineStart();++n<s;)l=e[n],t.point(l[0],l[1],l[2]);t.lineEnd()}function $k(e,t){var i=-1,n=e.length;for(t.polygonStart();++i<n;)FG(e[i],t,1);t.polygonEnd()}function wc(e,t){e&&Pk.hasOwnProperty(e.type)?Pk[e.type](e,t):OW(e,t)}var jW=new On,EW=new On,x6,Y6,SG,LG,CG,Ac={point:sn,lineStart:sn,lineEnd:sn,polygonStart:function(){jW=new On,Ac.lineStart=fpe,Ac.lineEnd=ppe},polygonEnd:function(){var e=+jW;EW.add(e<0?En+e:e),this.lineStart=this.lineEnd=this.point=sn},sphere:function(){EW.add(En)}};function fpe(){Ac.point=ype}function ppe(){G6(x6,Y6)}function ype(e,t){Ac.point=G6,x6=e,Y6=t,e*=dt,t*=dt,SG=e,LG=Pe(t=t/2+BW),CG=je(t)}function G6(e,t){e*=dt,t*=dt,t=t/2+BW;var i=e-SG,n=i>=0?1:-1,s=n*i,l=Pe(t),c=je(t),r=CG*c,a=LG*l+r*Pe(s),u=r*n*je(s);jW.add(bl(u,a)),SG=e,LG=l,CG=c}function Zpe(e){return EW=new On,wc(e,Ac),EW*2}function PW(e){return[bl(e[1],e[0]),bs(e[2])]}function Fu(e){var t=e[0],i=e[1],n=Pe(i);return[n*Pe(t),n*je(t),je(i)]}function Hy(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function _m(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Kx(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Ny(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function UW(e){var t=Pn(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var ui,ss,hi,Is,lu,V6,I6,Xm,pf,Ra,qr,wr={point:TG,lineStart:Qk,lineEnd:Dk,polygonStart:function(){wr.point=v6,wr.lineStart=Wpe,wr.lineEnd=Xpe,pf=new On,Ac.polygonStart()},polygonEnd:function(){Ac.polygonEnd(),wr.point=TG,wr.lineStart=Qk,wr.lineEnd=Dk,jW<0?(ui=-(hi=180),ss=-(Is=90)):pf>Ue?Is=90:pf<-1e-6&&(ss=-90),qr[0]=ui,qr[1]=hi},sphere:function(){ui=-(hi=180),ss=-(Is=90)}};function TG(e,t){Ra.push(qr=[ui=e,hi=e]),t<ss&&(ss=t),t>Is&&(Is=t)}function g6(e,t){var i=Fu([e*dt,t*dt]);if(Xm){var n=_m(Xm,i),s=[n[1],-n[0],0],l=_m(s,n);UW(l),l=PW(l);var c=e-lu,r=c>0?1:-1,a=l[0]*Ji*r,u,o=yt(c)>180;o^(r*lu<a&&a<r*e)?(u=l[1]*Ji,u>Is&&(Is=u)):(a=(a+360)%360-180,o^(r*lu<a&&a<r*e)?(u=-l[1]*Ji,u<ss&&(ss=u)):(t<ss&&(ss=t),t>Is&&(Is=t))),o?e<lu?Vs(ui,e)>Vs(ui,hi)&&(hi=e):Vs(e,hi)>Vs(ui,hi)&&(ui=e):hi>=ui?(e<ui&&(ui=e),e>hi&&(hi=e)):e>lu?Vs(ui,e)>Vs(ui,hi)&&(hi=e):Vs(e,hi)>Vs(ui,hi)&&(ui=e)}else Ra.push(qr=[ui=e,hi=e]);t<ss&&(ss=t),t>Is&&(Is=t),Xm=i,lu=e}function Qk(){wr.point=g6}function Dk(){qr[0]=ui,qr[1]=hi,wr.point=TG,Xm=null}function v6(e,t){if(Xm){var i=e-lu;pf.add(yt(i)>180?i+(i>0?360:-360):i)}else V6=e,I6=t;Ac.point(e,t),g6(e,t)}function Wpe(){Ac.lineStart()}function Xpe(){v6(V6,I6),Ac.lineEnd(),yt(pf)>Ue&&(ui=-(hi=180)),qr[0]=ui,qr[1]=hi,Xm=null}function Vs(e,t){return(t-=e)<0?t+360:t}function Jpe(e,t){return e[0]-t[0]}function Ak(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}function xpe(e){var t,i,n,s,l,c,r;if(Is=hi=-(ui=ss=1/0),Ra=[],wc(e,wr),i=Ra.length){for(Ra.sort(Jpe),t=1,n=Ra[0],l=[n];t<i;++t)s=Ra[t],Ak(n,s[0])||Ak(n,s[1])?(Vs(n[0],s[1])>Vs(n[0],n[1])&&(n[1]=s[1]),Vs(s[0],n[1])>Vs(n[0],n[1])&&(n[0]=s[0])):l.push(n=s);for(c=-1/0,i=l.length-1,t=0,n=l[i];t<=i;n=s,++t)s=l[t],(r=Vs(n[1],s[0]))>c&&(c=r,ui=s[0],hi=n[1])}return Ra=qr=null,ui===1/0||ss===1/0?[[NaN,NaN],[NaN,NaN]]:[[ui,ss],[hi,Is]]}var Eh,$W,QW,DW,AW,qW,eX,tX,MG,KG,BG,z6,w6,kn,Fn,Sn,kl={sphere:sn,point:xg,lineStart:qk,lineEnd:eF,polygonStart:function(){kl.lineStart=Vpe,kl.lineEnd=Ipe},polygonEnd:function(){kl.lineStart=qk,kl.lineEnd=eF}};function xg(e,t){e*=dt,t*=dt;var i=Pe(t);n0(i*Pe(e),i*je(e),je(t))}function n0(e,t,i){++Eh,QW+=(e-QW)/Eh,DW+=(t-DW)/Eh,AW+=(i-AW)/Eh}function qk(){kl.point=Ype}function Ype(e,t){e*=dt,t*=dt;var i=Pe(t);kn=i*Pe(e),Fn=i*je(e),Sn=je(t),kl.point=Gpe,n0(kn,Fn,Sn)}function Gpe(e,t){e*=dt,t*=dt;var i=Pe(t),n=i*Pe(e),s=i*je(e),l=je(t),c=bl(Pn((c=Fn*l-Sn*s)*c+(c=Sn*n-kn*l)*c+(c=kn*s-Fn*n)*c),kn*n+Fn*s+Sn*l);$W+=c,qW+=c*(kn+(kn=n)),eX+=c*(Fn+(Fn=s)),tX+=c*(Sn+(Sn=l)),n0(kn,Fn,Sn)}function eF(){kl.point=xg}function Vpe(){kl.point=gpe}function Ipe(){H6(z6,w6),kl.point=xg}function gpe(e,t){z6=e,w6=t,e*=dt,t*=dt,kl.point=H6;var i=Pe(t);kn=i*Pe(e),Fn=i*je(e),Sn=je(t),n0(kn,Fn,Sn)}function H6(e,t){e*=dt,t*=dt;var i=Pe(t),n=i*Pe(e),s=i*je(e),l=je(t),c=Fn*l-Sn*s,r=Sn*n-kn*l,a=kn*s-Fn*n,u=kG(c,r,a),o=bs(u),d=u&&-o/u;MG.add(d*c),KG.add(d*r),BG.add(d*a),$W+=o,qW+=o*(kn+(kn=n)),eX+=o*(Fn+(Fn=s)),tX+=o*(Sn+(Sn=l)),n0(kn,Fn,Sn)}function vpe(e){Eh=$W=QW=DW=AW=qW=eX=tX=0,MG=new On,KG=new On,BG=new On,wc(e,kl);var t=+MG,i=+KG,n=+BG,s=kG(t,i,n);return s<RG&&(t=qW,i=eX,n=tX,$W<Ue&&(t=QW,i=DW,n=AW),s=kG(t,i,n),s<RG)?[NaN,NaN]:[bl(i,t)*Ji,bs(n/s)*Ji]}function _G(e,t){function i(n,s){return n=e(n,s),t(n[0],n[1])}return e.invert&&t.invert&&(i.invert=function(n,s){return n=t.invert(n,s),n&&e.invert(n[0],n[1])}),i}function OG(e,t){return yt(e)>bt&&(e-=Math.round(e/En)*En),[e,t]}OG.invert=OG;function N6(e,t,i){return(e%=En)?t||i?_G(iF(e),nF(t,i)):iF(e):t||i?nF(t,i):OG}function tF(e){return function(t,i){return t+=e,yt(t)>bt&&(t-=Math.round(t/En)*En),[t,i]}}function iF(e){var t=tF(e);return t.invert=tF(-e),t}function nF(e,t){var i=Pe(e),n=je(e),s=Pe(t),l=je(t);function c(r,a){var u=Pe(a),o=Pe(r)*u,d=je(r)*u,b=je(a),h=b*i+o*n;return[bl(d*s-h*l,o*i-b*n),bs(h*s+d*l)]}return c.invert=function(r,a){var u=Pe(a),o=Pe(r)*u,d=je(r)*u,b=je(a),h=b*s-d*l;return[bl(d*s+b*l,o*i+h*n),bs(h*i-o*n)]},c}function zpe(e){e=N6(e[0]*dt,e[1]*dt,e.length>2?e[2]*dt:0);function t(i){return i=e(i[0]*dt,i[1]*dt),i[0]*=Ji,i[1]*=Ji,i}return t.invert=function(i){return i=e.invert(i[0]*dt,i[1]*dt),i[0]*=Ji,i[1]*=Ji,i},t}function wpe(e,t,i,n,s,l){if(i){var c=Pe(t),r=je(t),a=n*i;s==null?(s=t+n*En,l=t-a/2):(s=sF(c,s),l=sF(c,l),(n>0?s<l:s>l)&&(s+=n*En));for(var u,o=s;n>0?o>l:o<l;o-=a)u=PW([c,-r*Pe(o),-r*je(o)]),e.point(u[0],u[1])}}function sF(e,t){t=Fu(t),t[0]-=e,UW(t);var i=J6(-t[1]);return((-t[2]<0?-i:i)+En-Ue)%En}function R6(){var e=[],t;return{point:function(i,n,s){t.push([i,n,s])},lineStart:function(){e.push(t=[])},lineEnd:sn,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var i=e;return e=[],t=null,i}}}function RZ(e,t){return yt(e[0]-t[0])<Ue&&yt(e[1]-t[1])<Ue}function Ry(e,t,i,n){this.x=e,this.z=t,this.o=i,this.e=n,this.v=!1,this.n=this.p=null}function k6(e,t,i,n,s){var l=[],c=[],r,a;if(e.forEach(function(p){if(!((Z=p.length-1)<=0)){var Z,X=p[0],J=p[Z],V;if(RZ(X,J)){if(!X[2]&&!J[2]){for(s.lineStart(),r=0;r<Z;++r)s.point((X=p[r])[0],X[1]);s.lineEnd();return}J[0]+=2*Ue}l.push(V=new Ry(X,p,null,!0)),c.push(V.o=new Ry(X,null,V,!1)),l.push(V=new Ry(J,p,null,!1)),c.push(V.o=new Ry(J,null,V,!0))}}),!!l.length){for(c.sort(t),lF(l),lF(c),r=0,a=c.length;r<a;++r)c[r].e=i=!i;for(var u=l[0],o,d;;){for(var b=u,h=!0;b.v;)if((b=b.n)===u)return;o=b.z,s.lineStart();do{if(b.v=b.o.v=!0,b.e){if(h)for(r=0,a=o.length;r<a;++r)s.point((d=o[r])[0],d[1]);else n(b.x,b.n.x,1,s);b=b.n}else{if(h)for(o=b.p.z,r=o.length-1;r>=0;--r)s.point((d=o[r])[0],d[1]);else n(b.x,b.p.x,-1,s);b=b.p}b=b.o,o=b.z,h=!h}while(!b.v);s.lineEnd()}}}function lF(e){if(t=e.length){for(var t,i=0,n=e[0],s;++i<t;)n.n=s=e[i],s.p=n,n=s;n.n=s=e[0],s.p=n}}function Bx(e){return yt(e[0])<=bt?e[0]:il(e[0])*((yt(e[0])+bt)%En-bt)}function Hpe(e,t){var i=Bx(t),n=t[1],s=je(n),l=[je(i),-Pe(i),0],c=0,r=0,a=new On;s===1?n=pi+Ue:s===-1&&(n=-pi-Ue);for(var u=0,o=e.length;u<o;++u)if(b=(d=e[u]).length)for(var d,b,h=d[b-1],p=Bx(h),Z=h[1]/2+BW,X=je(Z),J=Pe(Z),V=0;V<b;++V,p=I,X=k,J=N,h=g){var g=d[V],I=Bx(g),v=g[1]/2+BW,k=je(v),N=Pe(v),C=I-p,f=C>=0?1:-1,w=f*C,x=w>bt,R=X*k;if(a.add(bl(R*f*je(w),J*N+R*Pe(w))),c+=x?C+f*En:C,x^p>=i^I>=i){var K=_m(Fu(h),Fu(g));UW(K);var B=_m(l,K);UW(B);var _=(x^C>=0?-1:1)*bs(B[2]);(n>_||n===_&&(K[0]||K[1]))&&(r+=x^C>=0?1:-1)}}return(c<-1e-6||c<Ue&&a<-1e-12)^r&1}function F6(e,t,i,n){return function(s){var l=t(s),c=R6(),r=t(c),a=!1,u,o,d,b={point:h,lineStart:Z,lineEnd:X,polygonStart:function(){b.point=J,b.lineStart=V,b.lineEnd=g,o=[],u=[]},polygonEnd:function(){b.point=h,b.lineStart=Z,b.lineEnd=X,o=$M(o);var I=Hpe(u,n);o.length?(a||(s.polygonStart(),a=!0),k6(o,Rpe,I,i,s)):I&&(a||(s.polygonStart(),a=!0),s.lineStart(),i(null,null,1,s),s.lineEnd()),a&&(s.polygonEnd(),a=!1),o=u=null},sphere:function(){s.polygonStart(),s.lineStart(),i(null,null,1,s),s.lineEnd(),s.polygonEnd()}};function h(I,v){e(I,v)&&s.point(I,v)}function p(I,v){l.point(I,v)}function Z(){b.point=p,l.lineStart()}function X(){b.point=h,l.lineEnd()}function J(I,v){d.push([I,v]),r.point(I,v)}function V(){r.lineStart(),d=[]}function g(){J(d[0][0],d[0][1]),r.lineEnd();var I=r.clean(),v=c.result(),k,N=v.length,C,f,w;if(d.pop(),u.push(d),d=null,!!N){if(I&1){if(f=v[0],(C=f.length-1)>0){for(a||(s.polygonStart(),a=!0),s.lineStart(),k=0;k<C;++k)s.point((w=f[k])[0],w[1]);s.lineEnd()}return}N>1&&I&2&&v.push(v.pop().concat(v.shift())),o.push(v.filter(Npe))}}return b}}function Npe(e){return e.length>1}function Rpe(e,t){return((e=e.x)[0]<0?e[1]-pi-Ue:pi-e[1])-((t=t.x)[0]<0?t[1]-pi-Ue:pi-t[1])}const cF=F6(function(){return!0},kpe,Spe,[-bt,-pi]);function kpe(e){var t=NaN,i=NaN,n=NaN,s;return{lineStart:function(){e.lineStart(),s=1},point:function(l,c){var r=l>0?bt:-bt,a=yt(l-t);yt(a-bt)<Ue?(e.point(t,i=(i+c)/2>0?pi:-pi),e.point(n,i),e.lineEnd(),e.lineStart(),e.point(r,i),e.point(l,i),s=0):n!==r&&a>=bt&&(yt(t-n)<Ue&&(t-=n*Ue),yt(l-r)<Ue&&(l-=r*Ue),i=Fpe(t,i,l,c),e.point(n,i),e.lineEnd(),e.lineStart(),e.point(r,i),s=0),e.point(t=l,i=c),n=r},lineEnd:function(){e.lineEnd(),t=i=NaN},clean:function(){return 2-s}}}function Fpe(e,t,i,n){var s,l,c=je(e-i);return yt(c)>Ue?Hb((je(t)*(l=Pe(n))*je(i)-je(n)*(s=Pe(t))*je(e))/(s*l*c)):(t+n)/2}function Spe(e,t,i,n){var s;if(e==null)s=i*pi,n.point(-bt,s),n.point(0,s),n.point(bt,s),n.point(bt,0),n.point(bt,-s),n.point(0,-s),n.point(-bt,-s),n.point(-bt,0),n.point(-bt,s);else if(yt(e[0]-t[0])>Ue){var l=e[0]<t[0]?bt:-bt;s=i*l/2,n.point(-l,s),n.point(0,s),n.point(l,s)}else n.point(t[0],t[1])}function Lpe(e){var t=Pe(e),i=2*dt,n=t>0,s=yt(t)>Ue;function l(o,d,b,h){wpe(h,e,i,b,o,d)}function c(o,d){return Pe(o)*Pe(d)>t}function r(o){var d,b,h,p,Z;return{lineStart:function(){p=h=!1,Z=1},point:function(X,J){var V=[X,J],g,I=c(X,J),v=n?I?0:u(X,J):I?u(X+(X<0?bt:-bt),J):0;if(!d&&(p=h=I)&&o.lineStart(),I!==h&&(g=a(d,V),(!g||RZ(d,g)||RZ(V,g))&&(V[2]=1)),I!==h)Z=0,I?(o.lineStart(),g=a(V,d),o.point(g[0],g[1])):(g=a(d,V),o.point(g[0],g[1],2),o.lineEnd()),d=g;else if(s&&d&&n^I){var k;!(v&b)&&(k=a(V,d,!0))&&(Z=0,n?(o.lineStart(),o.point(k[0][0],k[0][1]),o.point(k[1][0],k[1][1]),o.lineEnd()):(o.point(k[1][0],k[1][1]),o.lineEnd(),o.lineStart(),o.point(k[0][0],k[0][1],3)))}I&&(!d||!RZ(d,V))&&o.point(V[0],V[1]),d=V,h=I,b=v},lineEnd:function(){h&&o.lineEnd(),d=null},clean:function(){return Z|(p&&h)<<1}}}function a(o,d,b){var h=Fu(o),p=Fu(d),Z=[1,0,0],X=_m(h,p),J=Hy(X,X),V=X[0],g=J-V*V;if(!g)return!b&&o;var I=t*J/g,v=-t*V/g,k=_m(Z,X),N=Ny(Z,I),C=Ny(X,v);Kx(N,C);var f=k,w=Hy(N,f),x=Hy(f,f),R=w*w-x*(Hy(N,N)-1);if(!(R<0)){var K=Pn(R),B=Ny(f,(-w-K)/x);if(Kx(B,N),B=PW(B),!b)return B;var _=o[0],j=d[0],U=o[1],$=d[1],te;j<_&&(te=_,_=j,j=te);var E=j-_,ie=yt(E-bt)<Ue,ee=ie||E<Ue;if(!ie&&$<U&&(te=U,U=$,$=te),ee?ie?U+$>0^B[1]<(yt(B[0]-_)<Ue?U:$):U<=B[1]&&B[1]<=$:E>bt^(_<=B[0]&&B[0]<=j)){var A=Ny(f,(-w+K)/x);return Kx(A,N),[B,PW(A)]}}}function u(o,d){var b=n?e:bt-e,h=0;return o<-b?h|=1:o>b&&(h|=2),d<-b?h|=4:d>b&&(h|=8),h}return F6(c,r,l,n?[0,-e]:[-bt,e-bt])}function Cpe(e,t,i,n,s,l){var c=e[0],r=e[1],a=t[0],u=t[1],o=0,d=1,b=a-c,h=u-r,p;if(p=i-c,!(!b&&p>0)){if(p/=b,b<0){if(p<o)return;p<d&&(d=p)}else if(b>0){if(p>d)return;p>o&&(o=p)}if(p=s-c,!(!b&&p<0)){if(p/=b,b<0){if(p>d)return;p>o&&(o=p)}else if(b>0){if(p<o)return;p<d&&(d=p)}if(p=n-r,!(!h&&p>0)){if(p/=h,h<0){if(p<o)return;p<d&&(d=p)}else if(h>0){if(p>d)return;p>o&&(o=p)}if(p=l-r,!(!h&&p<0)){if(p/=h,h<0){if(p>d)return;p>o&&(o=p)}else if(h>0){if(p<o)return;p<d&&(d=p)}return o>0&&(e[0]=c+o*b,e[1]=r+o*h),d<1&&(t[0]=c+d*b,t[1]=r+d*h),!0}}}}}var ky=1e9,Fy=-1e9;function Yg(e,t,i,n){function s(u,o){return e<=u&&u<=i&&t<=o&&o<=n}function l(u,o,d,b){var h=0,p=0;if(u==null||(h=c(u,d))!==(p=c(o,d))||a(u,o)<0^d>0)do b.point(h===0||h===3?e:i,h>1?n:t);while((h=(h+d+4)%4)!==p);else b.point(o[0],o[1])}function c(u,o){return yt(u[0]-e)<Ue?o>0?0:3:yt(u[0]-i)<Ue?o>0?2:1:yt(u[1]-t)<Ue?o>0?1:0:o>0?3:2}function r(u,o){return a(u.x,o.x)}function a(u,o){var d=c(u,1),b=c(o,1);return d!==b?d-b:d===0?o[1]-u[1]:d===1?u[0]-o[0]:d===2?u[1]-o[1]:o[0]-u[0]}return function(u){var o=u,d=R6(),b,h,p,Z,X,J,V,g,I,v,k,N={point:C,lineStart:R,lineEnd:K,polygonStart:w,polygonEnd:x};function C(_,j){s(_,j)&&o.point(_,j)}function f(){for(var _=0,j=0,U=h.length;j<U;++j)for(var $=h[j],te=1,E=$.length,ie=$[0],ee,A,le=ie[0],ne=ie[1];te<E;++te)ee=le,A=ne,ie=$[te],le=ie[0],ne=ie[1],A<=n?ne>n&&(le-ee)*(n-A)>(ne-A)*(e-ee)&&++_:ne<=n&&(le-ee)*(n-A)<(ne-A)*(e-ee)&&--_;return _}function w(){o=d,b=[],h=[],k=!0}function x(){var _=f(),j=k&&_,U=(b=$M(b)).length;(j||U)&&(u.polygonStart(),j&&(u.lineStart(),l(null,null,1,u),u.lineEnd()),U&&k6(b,r,_,l,u),u.polygonEnd()),o=u,b=h=p=null}function R(){N.point=B,h&&h.push(p=[]),v=!0,I=!1,V=g=NaN}function K(){b&&(B(Z,X),J&&I&&d.rejoin(),b.push(d.result())),N.point=C,I&&o.lineEnd()}function B(_,j){var U=s(_,j);if(h&&p.push([_,j]),v)Z=_,X=j,J=U,v=!1,U&&(o.lineStart(),o.point(_,j));else if(U&&I)o.point(_,j);else{var $=[V=Math.max(Fy,Math.min(ky,V)),g=Math.max(Fy,Math.min(ky,g))],te=[_=Math.max(Fy,Math.min(ky,_)),j=Math.max(Fy,Math.min(ky,j))];Cpe($,te,e,t,i,n)?(I||(o.lineStart(),o.point($[0],$[1])),o.point(te[0],te[1]),U||o.lineEnd(),k=!1):U&&(o.lineStart(),o.point(_,j),k=!1)}V=_,g=j,I=U}return N}}function rF(e,t,i){var n=Cn(e,t-Ue,i).concat(t);return function(s){return n.map(function(l){return[s,l]})}}function aF(e,t,i){var n=Cn(e,t-Ue,i).concat(t);return function(s){return n.map(function(l){return[l,s]})}}function Tpe(){var e,t,i,n,s,l,c,r,a=10,u=a,o=90,d=360,b,h,p,Z,X=2.5;function J(){return{type:"MultiLineString",coordinates:V()}}function V(){return Cn(wy(n/o)*o,i,o).map(p).concat(Cn(wy(r/d)*d,c,d).map(Z)).concat(Cn(wy(t/a)*a,e,a).filter(function(g){return yt(g%o)>Ue}).map(b)).concat(Cn(wy(l/u)*u,s,u).filter(function(g){return yt(g%d)>Ue}).map(h))}return J.lines=function(){return V().map(function(g){return{type:"LineString",coordinates:g}})},J.outline=function(){return{type:"Polygon",coordinates:[p(n).concat(Z(c).slice(1),p(i).reverse().slice(1),Z(r).reverse().slice(1))]}},J.extent=function(g){return arguments.length?J.extentMajor(g).extentMinor(g):J.extentMinor()},J.extentMajor=function(g){return arguments.length?(n=+g[0][0],i=+g[1][0],r=+g[0][1],c=+g[1][1],n>i&&(g=n,n=i,i=g),r>c&&(g=r,r=c,c=g),J.precision(X)):[[n,r],[i,c]]},J.extentMinor=function(g){return arguments.length?(t=+g[0][0],e=+g[1][0],l=+g[0][1],s=+g[1][1],t>e&&(g=t,t=e,e=g),l>s&&(g=l,l=s,s=g),J.precision(X)):[[t,l],[e,s]]},J.step=function(g){return arguments.length?J.stepMajor(g).stepMinor(g):J.stepMinor()},J.stepMajor=function(g){return arguments.length?(o=+g[0],d=+g[1],J):[o,d]},J.stepMinor=function(g){return arguments.length?(a=+g[0],u=+g[1],J):[a,u]},J.precision=function(g){return arguments.length?(X=+g,b=rF(l,s,90),h=aF(t,e,X),p=rF(r,c,90),Z=aF(n,i,X),J):X},J.extentMajor([[-180,-90+Ue],[180,90-Ue]]).extentMinor([[-180,-80-Ue],[180,80+Ue]])}const Uf=e=>e;var _x=new On,jG=new On,S6,L6,EG,PG,Sr={point:sn,lineStart:sn,lineEnd:sn,polygonStart:function(){Sr.lineStart=Mpe,Sr.lineEnd=Bpe},polygonEnd:function(){Sr.lineStart=Sr.lineEnd=Sr.point=sn,_x.add(yt(jG)),jG=new On},result:function(){var e=_x/2;return _x=new On,e}};function Mpe(){Sr.point=Kpe}function Kpe(e,t){Sr.point=C6,S6=EG=e,L6=PG=t}function C6(e,t){jG.add(PG*e-EG*t),EG=e,PG=t}function Bpe(){C6(S6,L6)}var Om=1/0,iX=Om,$f=-Om,nX=$f,sX={point:_pe,lineStart:sn,lineEnd:sn,polygonStart:sn,polygonEnd:sn,result:function(){var e=[[Om,iX],[$f,nX]];return $f=nX=-(iX=Om=1/0),e}};function _pe(e,t){e<Om&&(Om=e),e>$f&&($f=e),t<iX&&(iX=t),t>nX&&(nX=t)}var UG=0,$G=0,Ph=0,lX=0,cX=0,rm=0,QG=0,DG=0,Uh=0,T6,M6,Hc,Nc,As={point:Su,lineStart:oF,lineEnd:uF,polygonStart:function(){As.lineStart=Epe,As.lineEnd=Ppe},polygonEnd:function(){As.point=Su,As.lineStart=oF,As.lineEnd=uF},result:function(){var e=Uh?[QG/Uh,DG/Uh]:rm?[lX/rm,cX/rm]:Ph?[UG/Ph,$G/Ph]:[NaN,NaN];return UG=$G=Ph=lX=cX=rm=QG=DG=Uh=0,e}};function Su(e,t){UG+=e,$G+=t,++Ph}function oF(){As.point=Ope}function Ope(e,t){As.point=jpe,Su(Hc=e,Nc=t)}function jpe(e,t){var i=e-Hc,n=t-Nc,s=Pn(i*i+n*n);lX+=s*(Hc+e)/2,cX+=s*(Nc+t)/2,rm+=s,Su(Hc=e,Nc=t)}function uF(){As.point=Su}function Epe(){As.point=Upe}function Ppe(){K6(T6,M6)}function Upe(e,t){As.point=K6,Su(T6=Hc=e,M6=Nc=t)}function K6(e,t){var i=e-Hc,n=t-Nc,s=Pn(i*i+n*n);lX+=s*(Hc+e)/2,cX+=s*(Nc+t)/2,rm+=s,s=Nc*e-Hc*t,QG+=s*(Hc+e),DG+=s*(Nc+t),Uh+=s*3,Su(Hc=e,Nc=t)}function B6(e){this._context=e}B6.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,En);break}}},result:sn};var AG=new On,Ox,_6,O6,$h,Qh,Qf={point:sn,lineStart:function(){Qf.point=$pe},lineEnd:function(){Ox&&j6(_6,O6),Qf.point=sn},polygonStart:function(){Ox=!0},polygonEnd:function(){Ox=null},result:function(){var e=+AG;return AG=new On,e}};function $pe(e,t){Qf.point=j6,_6=$h=e,O6=Qh=t}function j6(e,t){$h-=e,Qh-=t,AG.add(Pn($h*$h+Qh*Qh)),$h=e,Qh=t}let dF,rX,mF,bF;class hF{constructor(t){this._append=t==null?E6:Qpe(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,i){switch(this._point){case 0:{this._append`M${t},${i}`,this._point=1;break}case 1:{this._append`L${t},${i}`;break}default:{if(this._append`M${t},${i}`,this._radius!==mF||this._append!==rX){const n=this._radius,s=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,mF=n,rX=this._append,bF=this._,this._=s}this._+=bF;break}}}result(){const t=this._;return this._="",t.length?t:null}}function E6(e){let t=1;this._+=e[0];for(const i=e.length;t<i;++t)this._+=arguments[t]+e[t]}function Qpe(e){const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return E6;if(t!==dF){const i=10**t;dF=t,rX=function(s){let l=1;this._+=s[0];for(const c=s.length;l<c;++l)this._+=Math.round(arguments[l]*i)/i+s[l]}}return rX}function s0(e,t){let i=3,n=4.5,s,l;function c(r){return r&&(typeof n=="function"&&l.pointRadius(+n.apply(this,arguments)),wc(r,s(l))),l.result()}return c.area=function(r){return wc(r,s(Sr)),Sr.result()},c.measure=function(r){return wc(r,s(Qf)),Qf.result()},c.bounds=function(r){return wc(r,s(sX)),sX.result()},c.centroid=function(r){return wc(r,s(As)),As.result()},c.projection=function(r){return arguments.length?(s=r==null?(e=null,Uf):(e=r).stream,c):e},c.context=function(r){return arguments.length?(l=r==null?(t=null,new hF(i)):new B6(t=r),typeof n!="function"&&l.pointRadius(n),c):t},c.pointRadius=function(r){return arguments.length?(n=typeof r=="function"?r:(l.pointRadius(+r),+r),c):n},c.digits=function(r){if(!arguments.length)return i;if(r==null)i=null;else{const a=Math.floor(r);if(!(a>=0))throw new RangeError(`invalid digits: ${r}`);i=a}return t===null&&(l=new hF(i)),c},c.projection(e).digits(i).context(t)}function aX(e){return{stream:l0(e)}}function l0(e){return function(t){var i=new qG;for(var n in e)i[n]=e[n];return i.stream=t,i}}function qG(){}qG.prototype={constructor:qG,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Gg(e,t,i){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),wc(i,e.stream(sX)),t(sX.result()),n!=null&&e.clipExtent(n),e}function Q2(e,t,i){return Gg(e,function(n){var s=t[1][0]-t[0][0],l=t[1][1]-t[0][1],c=Math.min(s/(n[1][0]-n[0][0]),l/(n[1][1]-n[0][1])),r=+t[0][0]+(s-c*(n[1][0]+n[0][0]))/2,a=+t[0][1]+(l-c*(n[1][1]+n[0][1]))/2;e.scale(150*c).translate([r,a])},i)}function Vg(e,t,i){return Q2(e,[[0,0],t],i)}function Ig(e,t,i){return Gg(e,function(n){var s=+t,l=s/(n[1][0]-n[0][0]),c=(s-l*(n[1][0]+n[0][0]))/2,r=-l*n[0][1];e.scale(150*l).translate([c,r])},i)}function gg(e,t,i){return Gg(e,function(n){var s=+t,l=s/(n[1][1]-n[0][1]),c=-l*n[0][0],r=(s-l*(n[1][1]+n[0][1]))/2;e.scale(150*l).translate([c,r])},i)}var fF=16,Dpe=Pe(30*dt);function pF(e,t){return+t?qpe(e,t):Ape(e)}function Ape(e){return l0({point:function(t,i){t=e(t,i),this.stream.point(t[0],t[1])}})}function qpe(e,t){function i(n,s,l,c,r,a,u,o,d,b,h,p,Z,X){var J=u-n,V=o-s,g=J*J+V*V;if(g>4*t&&Z--){var I=c+b,v=r+h,k=a+p,N=Pn(I*I+v*v+k*k),C=bs(k/=N),f=yt(yt(k)-1)<Ue||yt(l-d)<Ue?(l+d)/2:bl(v,I),w=e(f,C),x=w[0],R=w[1],K=x-n,B=R-s,_=V*K-J*B;(_*_/g>t||yt((J*K+V*B)/g-.5)>.3||c*b+r*h+a*p<Dpe)&&(i(n,s,l,c,r,a,x,R,f,I/=N,v/=N,k,Z,X),X.point(x,R),i(x,R,f,I,v,k,u,o,d,b,h,p,Z,X))}}return function(n){var s,l,c,r,a,u,o,d,b,h,p,Z,X={point:J,lineStart:V,lineEnd:I,polygonStart:function(){n.polygonStart(),X.lineStart=v},polygonEnd:function(){n.polygonEnd(),X.lineStart=V}};function J(C,f){C=e(C,f),n.point(C[0],C[1])}function V(){d=NaN,X.point=g,n.lineStart()}function g(C,f){var w=Fu([C,f]),x=e(C,f);i(d,b,o,h,p,Z,d=x[0],b=x[1],o=C,h=w[0],p=w[1],Z=w[2],fF,n),n.point(d,b)}function I(){X.point=J,n.lineEnd()}function v(){V(),X.point=k,X.lineEnd=N}function k(C,f){g(s=C,f),l=d,c=b,r=h,a=p,u=Z,X.point=g}function N(){i(d,b,o,h,p,Z,l,c,s,r,a,u,fF,n),X.lineEnd=I,I()}return X}}var e0e=l0({point:function(e,t){this.stream.point(e*dt,t*dt)}});function t0e(e){return l0({point:function(t,i){var n=e(t,i);return this.stream.point(n[0],n[1])}})}function i0e(e,t,i,n,s){function l(c,r){return c*=n,r*=s,[t+e*c,i-e*r]}return l.invert=function(c,r){return[(c-t)/e*n,(i-r)/e*s]},l}function yF(e,t,i,n,s,l){if(!l)return i0e(e,t,i,n,s);var c=Pe(l),r=je(l),a=c*e,u=r*e,o=c/e,d=r/e,b=(r*i-c*t)/e,h=(r*t+c*i)/e;function p(Z,X){return Z*=n,X*=s,[a*Z-u*X+t,i-u*Z-a*X]}return p.invert=function(Z,X){return[n*(o*Z-d*X+b),s*(h-d*Z-o*X)]},p}function rr(e){return P6(function(){return e})()}function P6(e){var t,i=150,n=480,s=250,l=0,c=0,r=0,a=0,u=0,o,d=0,b=1,h=1,p=null,Z=cF,X=null,J,V,g,I=Uf,v=.5,k,N,C,f,w;function x(_){return C(_[0]*dt,_[1]*dt)}function R(_){return _=C.invert(_[0],_[1]),_&&[_[0]*Ji,_[1]*Ji]}x.stream=function(_){return f&&w===_?f:f=e0e(t0e(o)(Z(k(I(w=_)))))},x.preclip=function(_){return arguments.length?(Z=_,p=void 0,B()):Z},x.postclip=function(_){return arguments.length?(I=_,X=J=V=g=null,B()):I},x.clipAngle=function(_){return arguments.length?(Z=+_?Lpe(p=_*dt):(p=null,cF),B()):p*Ji},x.clipExtent=function(_){return arguments.length?(I=_==null?(X=J=V=g=null,Uf):Yg(X=+_[0][0],J=+_[0][1],V=+_[1][0],g=+_[1][1]),B()):X==null?null:[[X,J],[V,g]]},x.scale=function(_){return arguments.length?(i=+_,K()):i},x.translate=function(_){return arguments.length?(n=+_[0],s=+_[1],K()):[n,s]},x.center=function(_){return arguments.length?(l=_[0]%360*dt,c=_[1]%360*dt,K()):[l*Ji,c*Ji]},x.rotate=function(_){return arguments.length?(r=_[0]%360*dt,a=_[1]%360*dt,u=_.length>2?_[2]%360*dt:0,K()):[r*Ji,a*Ji,u*Ji]},x.angle=function(_){return arguments.length?(d=_%360*dt,K()):d*Ji},x.reflectX=function(_){return arguments.length?(b=_?-1:1,K()):b<0},x.reflectY=function(_){return arguments.length?(h=_?-1:1,K()):h<0},x.precision=function(_){return arguments.length?(k=pF(N,v=_*_),B()):Pn(v)},x.fitExtent=function(_,j){return Q2(x,_,j)},x.fitSize=function(_,j){return Vg(x,_,j)},x.fitWidth=function(_,j){return Ig(x,_,j)},x.fitHeight=function(_,j){return gg(x,_,j)};function K(){var _=yF(i,0,0,b,h,d).apply(null,t(l,c)),j=yF(i,n-_[0],s-_[1],b,h,d);return o=N6(r,a,u),N=_G(t,j),C=_G(o,N),k=pF(N,v),B()}function B(){return f=w=null,x}return function(){return t=e.apply(this,arguments),x.invert=t.invert&&R,K()}}function vg(e){var t=0,i=bt/3,n=P6(e),s=n(t,i);return s.parallels=function(l){return arguments.length?n(t=l[0]*dt,i=l[1]*dt):[t*Ji,i*Ji]},s}function n0e(e){var t=Pe(e);function i(n,s){return[n*t,je(s)/t]}return i.invert=function(n,s){return[n/t,bs(s*t)]},i}function s0e(e,t){var i=je(e),n=(i+je(t))/2;if(yt(n)<Ue)return n0e(e);var s=1+i*(2*n-i),l=Pn(s)/n;function c(r,a){var u=Pn(s-2*n*je(a))/n;return[u*je(r*=n),l-u*Pe(r)]}return c.invert=function(r,a){var u=l-a,o=bl(r,yt(u))*il(u);return u*n<0&&(o-=bt*il(r)*il(u)),[o/n,bs((s-(r*r+u*u)*n*n)/(2*n))]},c}function Df(){return vg(s0e).scale(155.424).center([0,33.6442])}function zg(){return Df().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function l0e(e){var t=e.length;return{point:function(i,n){for(var s=-1;++s<t;)e[s].point(i,n)},sphere:function(){for(var i=-1;++i<t;)e[i].sphere()},lineStart:function(){for(var i=-1;++i<t;)e[i].lineStart()},lineEnd:function(){for(var i=-1;++i<t;)e[i].lineEnd()},polygonStart:function(){for(var i=-1;++i<t;)e[i].polygonStart()},polygonEnd:function(){for(var i=-1;++i<t;)e[i].polygonEnd()}}}function U6(){var e,t,i=zg(),n,s=Df().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l,c=Df().rotate([157,0]).center([-3,19.9]).parallels([8,18]),r,a,u={point:function(b,h){a=[b,h]}};function o(b){var h=b[0],p=b[1];return a=null,n.point(h,p),a||(l.point(h,p),a)||(r.point(h,p),a)}o.invert=function(b){var h=i.scale(),p=i.translate(),Z=(b[0]-p[0])/h,X=(b[1]-p[1])/h;return(X>=.12&&X<.234&&Z>=-.425&&Z<-.214?s:X>=.166&&X<.234&&Z>=-.214&&Z<-.115?c:i).invert(b)},o.stream=function(b){return e&&t===b?e:e=l0e([i.stream(t=b),s.stream(b),c.stream(b)])},o.precision=function(b){return arguments.length?(i.precision(b),s.precision(b),c.precision(b),d()):i.precision()},o.scale=function(b){return arguments.length?(i.scale(b),s.scale(b*.35),c.scale(b),o.translate(i.translate())):i.scale()},o.translate=function(b){if(!arguments.length)return i.translate();var h=i.scale(),p=+b[0],Z=+b[1];return n=i.translate(b).clipExtent([[p-.455*h,Z-.238*h],[p+.455*h,Z+.238*h]]).stream(u),l=s.translate([p-.307*h,Z+.201*h]).clipExtent([[p-.425*h+Ue,Z+.12*h+Ue],[p-.214*h-Ue,Z+.234*h-Ue]]).stream(u),r=c.translate([p-.205*h,Z+.212*h]).clipExtent([[p-.214*h+Ue,Z+.166*h+Ue],[p-.115*h-Ue,Z+.234*h-Ue]]).stream(u),d()},o.fitExtent=function(b,h){return Q2(o,b,h)},o.fitSize=function(b,h){return Vg(o,b,h)},o.fitWidth=function(b,h){return Ig(o,b,h)},o.fitHeight=function(b,h){return gg(o,b,h)};function d(){return e=t=null,o}return o.scale(1070)}function $6(e){return function(t,i){var n=Pe(t),s=Pe(i),l=e(n*s);return l===1/0?[2,0]:[l*s*je(t),l*je(i)]}}function c0(e){return function(t,i){var n=Pn(t*t+i*i),s=e(n),l=je(s),c=Pe(s);return[bl(t*l,n*c),bs(n&&i*l/n)]}}var Q6=$6(function(e){return Pn(2/(1+e))});Q6.invert=c0(function(e){return 2*bs(e/2)});function D6(){return rr(Q6).scale(124.75).clipAngle(180-.001)}var A6=$6(function(e){return(e=J6(e))&&e/je(e)});A6.invert=c0(function(e){return e});function q6(){return rr(A6).scale(79.4188).clipAngle(180-.001)}function D2(e,t){return[e,_W(Jg((pi+t)/2))]}D2.invert=function(e,t){return[e,2*Hb(X6(t))-pi]};function eP(){return tP(D2).scale(961/En)}function tP(e){var t=rr(e),i=t.center,n=t.scale,s=t.translate,l=t.clipExtent,c=null,r,a,u;t.scale=function(d){return arguments.length?(n(d),o()):n()},t.translate=function(d){return arguments.length?(s(d),o()):s()},t.center=function(d){return arguments.length?(i(d),o()):i()},t.clipExtent=function(d){return arguments.length?(d==null?c=r=a=u=null:(c=+d[0][0],r=+d[0][1],a=+d[1][0],u=+d[1][1]),o()):c==null?null:[[c,r],[a,u]]};function o(){var d=bt*n(),b=t(zpe(t.rotate()).invert([0,0]));return l(c==null?[[b[0]-d,b[1]-d],[b[0]+d,b[1]+d]]:e===D2?[[Math.max(b[0]-d,c),r],[Math.min(b[0]+d,a),u]]:[[c,Math.max(b[1]-d,r)],[a,Math.min(b[1]+d,u)]])}return o()}function Sy(e){return Jg((pi+e)/2)}function c0e(e,t){var i=Pe(e),n=e===t?je(e):_W(i/Pe(t))/_W(Sy(t)/Sy(e)),s=i*Mx(Sy(e),n)/n;if(!n)return D2;function l(c,r){s>0?r<-pi+Ue&&(r=-pi+Ue):r>pi-Ue&&(r=pi-Ue);var a=s/Mx(Sy(r),n);return[a*je(n*c),s-a*Pe(n*c)]}return l.invert=function(c,r){var a=s-r,u=il(n)*Pn(c*c+a*a),o=bl(c,yt(a))*il(a);return a*n<0&&(o-=bt*il(c)*il(a)),[o/n,2*Hb(Mx(s/u,1/n))-pi]},l}function iP(){return vg(c0e).scale(109.5).parallels([30,30])}function oX(e,t){return[e,t]}oX.invert=oX;function nP(){return rr(oX).scale(152.63)}function r0e(e,t){var i=Pe(e),n=e===t?je(e):(i-Pe(t))/(t-e),s=i/n+e;if(yt(n)<Ue)return oX;function l(c,r){var a=s-r,u=n*c;return[a*je(u),s-a*Pe(u)]}return l.invert=function(c,r){var a=s-r,u=bl(c,yt(a))*il(a);return a*n<0&&(u-=bt*il(c)*il(a)),[u/n,s-il(n)*Pn(c*c+a*a)]},l}function sP(){return vg(r0e).scale(131.154).center([0,13.9389])}
vendor: 2,003 bytes, line 47
47var yf=1.340264,Zf=-.081106,Wf=893e-6,Xf=.003796,uX=Pn(3)/2,a0e=12;function lP(e,t){var i=bs(uX*je(t)),n=i*i,s=n*n*n;return[e*Pe(i)/(uX*(yf+3*Zf*n+s*(7*Wf+9*Xf*n))),i*(yf+Zf*n+s*(Wf+Xf*n))]}lP.invert=function(e,t){for(var i=t,n=i*i,s=n*n*n,l=0,c,r,a;l<a0e&&(r=i*(yf+Zf*n+s*(Wf+Xf*n))-t,a=yf+3*Zf*n+s*(7*Wf+9*Xf*n),i-=c=r/a,n=i*i,s=n*n*n,!(yt(c)<RG));++l);return[uX*e*(yf+3*Zf*n+s*(7*Wf+9*Xf*n))/Pe(i),bs(je(i)/uX)]};function cP(){return rr(lP).scale(177.158)}function rP(e,t){var i=Pe(t),n=Pe(e)*i;return[i*je(e)/n,je(t)/n]}rP.invert=c0(Hb);function aP(){return rr(rP).scale(144.049).clipAngle(60)}function o0e(){var e=1,t=0,i=0,n=1,s=1,l=0,c,r,a=null,u,o,d,b=1,h=1,p=l0({point:function(I,v){var k=g([I,v]);this.stream.point(k[0],k[1])}}),Z=Uf,X,J;function V(){return b=e*n,h=e*s,X=J=null,g}function g(I){var v=I[0]*b,k=I[1]*h;if(l){var N=k*c-v*r;v=v*c+k*r,k=N}return[v+t,k+i]}return g.invert=function(I){var v=I[0]-t,k=I[1]-i;if(l){var N=k*c+v*r;v=v*c-k*r,k=N}return[v/b,k/h]},g.stream=function(I){return X&&J===I?X:X=p(Z(J=I))},g.postclip=function(I){return arguments.length?(Z=I,a=u=o=d=null,V()):Z},g.clipExtent=function(I){return arguments.length?(Z=I==null?(a=u=o=d=null,Uf):Yg(a=+I[0][0],u=+I[0][1],o=+I[1][0],d=+I[1][1]),V()):a==null?null:[[a,u],[o,d]]},g.scale=function(I){return arguments.length?(e=+I,V()):e},g.translate=function(I){return arguments.length?(t=+I[0],i=+I[1],V()):[t,i]},g.angle=function(I){return arguments.length?(l=I%360*dt,r=je(l),c=Pe(l),V()):l*Ji},g.reflectX=function(I){return arguments.length?(n=I?-1:1,V()):n<0},g.reflectY=function(I){return arguments.length?(s=I?-1:1,V()):s<0},g.fitExtent=function(I,v){return Q2(g,I,v)},g.fitSize=function(I,v){return Vg(g,I,v)},g.fitWidth=function(I,v){return Ig(g,I,v)},g.fitHeight=function(I,v){return gg(g,I,v)},g}function oP(e,t){var i=t*t,n=i*i;return[e*(.8707-.131979*i+n*(-.013791+n*(.003971*i-.001529*n))),t*(1.007226+i*(.015085+n*(-.044475+.028874*i-.005916*n)))]}oP.invert=function(e,t){var i=t,n=25,s;do{var l=i*i,c=l*l;
vendor: 67,981 bytes, line 47
47i-=s=(i*(1.007226+l*(.015085+c*(-.044475+.028874*l-.005916*c)))-t)/(1.007226+l*(.015085*3+c*(-.044475*7+.028874*9*l-.005916*11*c)))}while(yt(s)>Ue&&--n>0);return[e/(.8707+(l=i*i)*(-.131979+l*(-.013791+l*l*l*(.003971-.001529*l)))),i]};function u0e(){return rr(oP).scale(175.295)}function uP(e,t){return[Pe(t)*je(e),je(t)]}uP.invert=c0(bs);function dP(){return rr(uP).scale(249.5).clipAngle(90+Ue)}function mP(e,t){var i=Pe(t),n=1+Pe(e)*i;return[i*je(e)/n,je(t)/n]}mP.invert=c0(function(e){return 2*Hb(e)});function bP(){return rr(mP).scale(250).clipAngle(142)}function hP(e,t){return[_W(Jg((pi+t)/2)),-e]}hP.invert=function(e,t){return[-t,2*Hb(X6(e))-pi]};function fP(){var e=tP(hP),t=e.center,i=e.rotate;return e.center=function(n){return arguments.length?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},e.rotate=function(n){return arguments.length?i([n[0],n[1],n.length>2?n[2]+90:90]):(n=i(),[n[0],n[1],n[2]-90])},i([0,0,90]).scale(159.155)}var d0e=Math.abs,eV=Math.cos,dX=Math.sin,m0e=1e-6,pP=Math.PI,tV=pP/2,ZF=b0e(2);function WF(e){return e>1?tV:e<-1?-tV:Math.asin(e)}function b0e(e){return e>0?Math.sqrt(e):0}function h0e(e,t){var i=e*dX(t),n=30,s;do t-=s=(t+dX(t)-i)/(1+eV(t));while(d0e(s)>m0e&&--n>0);return t/2}function f0e(e,t,i){function n(s,l){return[e*s*eV(l=h0e(i,l)),t*dX(l)]}return n.invert=function(s,l){return l=WF(l/t),[s/(e*eV(l)),WF((2*l+dX(2*l))/i)]},n}var p0e=f0e(ZF/tV,ZF,pP);function y0e(){return rr(p0e).scale(169.529)}const Z0e=s0(),iV=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function W0e(e,t){return function i(){const n=t();return n.type=e,n.path=s0().projection(n),n.copy=n.copy||function(){const s=i();return iV.forEach(l=>{n[l]&&s[l](n[l]())}),s.path.pointRadius(n.path.pointRadius()),s},xj(n)}}function wg(e,t){if(!e||typeof e!="string")throw new Error("Projection type must be a name string.");return e=e.toLowerCase(),arguments.length>1?(mX[e]=W0e(e,t),this):mX[e]||null}function yP(e){return e&&e.path||Z0e}const mX={albers:zg,albersusa:U6,azimuthalequalarea:D6,azimuthalequidistant:q6,conicconformal:iP,conicequalarea:Df,conicequidistant:sP,equalEarth:cP,equirectangular:nP,gnomonic:aP,identity:o0e,mercator:eP,mollweide:y0e,naturalEarth1:u0e,orthographic:dP,stereographic:bP,transversemercator:fP};for(const e in mX)wg(e,mX[e]);function X0e(){}const xr=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function ZP(){var e=1,t=1,i=r;function n(a,u){return u.map(o=>s(a,o))}function s(a,u){var o=[],d=[];return l(a,u,b=>{i(b,a,u),J0e(b)>0?o.push([b]):d.push(b)}),d.forEach(b=>{for(var h=0,p=o.length,Z;h<p;++h)if(x0e((Z=o[h])[0],b)!==-1){Z.push(b);return}}),{type:"MultiPolygon",value:u,coordinates:o}}function l(a,u,o){var d=[],b=[],h,p,Z,X,J,V;for(h=p=-1,X=a[0]>=u,xr[X<<1].forEach(g);++h<e-1;)Z=X,X=a[h+1]>=u,xr[Z|X<<1].forEach(g);for(xr[X<<0].forEach(g);++p<t-1;){for(h=-1,X=a[p*e+e]>=u,J=a[p*e]>=u,xr[X<<1|J<<2].forEach(g);++h<e-1;)Z=X,X=a[p*e+e+h+1]>=u,V=J,J=a[p*e+h+1]>=u,xr[Z|X<<1|J<<2|V<<3].forEach(g);xr[X|J<<3].forEach(g)}for(h=-1,J=a[p*e]>=u,xr[J<<2].forEach(g);++h<e-1;)V=J,J=a[p*e+h+1]>=u,xr[J<<2|V<<3].forEach(g);xr[J<<3].forEach(g);function g(I){var v=[I[0][0]+h,I[0][1]+p],k=[I[1][0]+h,I[1][1]+p],N=c(v),C=c(k),f,w;(f=b[N])?(w=d[C])?(delete b[f.end],delete d[w.start],f===w?(f.ring.push(k),o(f.ring)):d[f.start]=b[w.end]={start:f.start,end:w.end,ring:f.ring.concat(w.ring)}):(delete b[f.end],f.ring.push(k),b[f.end=C]=f):(f=d[C])?(w=b[N])?(delete d[f.start],delete b[w.end],f===w?(f.ring.push(k),o(f.ring)):d[w.start]=b[f.end]={start:w.start,end:f.end,ring:w.ring.concat(f.ring)}):(delete d[f.start],f.ring.unshift(v),d[f.start=N]=f):d[N]=b[C]={start:N,end:C,ring:[v,k]}}}function c(a){return a[0]*2+a[1]*(e+1)*4}function r(a,u,o){a.forEach(d=>{var b=d[0],h=d[1],p=b|0,Z=h|0,X,J=u[Z*e+p];b>0&&b<e&&p===b&&(X=u[Z*e+p-1],d[0]=b+(o-X)/(J-X)-.5),h>0&&h<t&&Z===h&&(X=u[(Z-1)*e+p],d[1]=h+(o-X)/(J-X)-.5)})}return n.contour=s,n.size=function(a){if(!arguments.length)return[e,t];var u=Math.floor(a[0]),o=Math.floor(a[1]);return u>=0&&o>=0||me("invalid size"),e=u,t=o,n},n.smooth=function(a){return arguments.length?(i=a?r:X0e,n):i===r},n}function J0e(e){for(var t=0,i=e.length,n=e[i-1][1]*e[0][0]-e[i-1][0]*e[0][1];++t<i;)n+=e[t-1][1]*e[t][0]-e[t-1][0]*e[t][1];return n}function x0e(e,t){for(var i=-1,n=t.length,s;++i<n;)if(s=Y0e(e,t[i]))return s;return 0}function Y0e(e,t){for(var i=t[0],n=t[1],s=-1,l=0,c=e.length,r=c-1;l<c;r=l++){var a=e[l],u=a[0],o=a[1],d=e[r],b=d[0],h=d[1];if(G0e(a,d,t))return 0;o>n!=h>n&&i<(b-u)*(n-o)/(h-o)+u&&(s=-s)}return s}function G0e(e,t,i){var n;return V0e(e,t,i)&&I0e(e[n=+(e[0]===t[0])],i[n],t[n])}function V0e(e,t,i){return(t[0]-e[0])*(i[1]-e[1])===(i[0]-e[0])*(t[1]-e[1])}function I0e(e,t,i){return e<=t&&t<=i||i<=t&&t<=e}function WP(e,t,i){return function(n){var s=Qc(n),l=i?Math.min(s[0],0):s[0],c=s[1],r=c-l,a=t?Hf(l,c,e):r/(e+1);return Cn(l+a,c,a)}}function Hg(e){ue.call(this,null,e)}Hg.Definition={type:"Isocontour",metadata:{generates:!0},params:[{name:"field",type:"field"},{name:"thresholds",type:"number",array:!0},{name:"levels",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"zero",type:"boolean",default:!0},{name:"smooth",type:"boolean",default:!0},{name:"scale",type:"number",expr:!0},{name:"translate",type:"number",array:!0,expr:!0},{name:"as",type:"string",null:!0,default:"contour"}]};ge(Hg,ue,{transform(e,t){if(this.value&&!t.changed()&&!e.modified())return t.StopPropagation;var i=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=t.materialize(t.SOURCE).source,s=e.field||Vn,l=ZP().smooth(e.smooth!==!1),c=e.thresholds||g0e(n,s,e),r=e.as===null?null:e.as||"contour",a=[];return n.forEach(u=>{const o=s(u),d=l.size([o.width,o.height])(o.values,fe(c)?c:c(o.values));v0e(d,o,u,e),d.forEach(b=>{a.push(G2(u,Rt(r!=null?{[r]:b}:b)))})}),this.value&&(i.rem=this.value),this.value=i.source=i.add=a,i}});function g0e(e,t,i){const n=WP(i.levels||10,i.nice,i.zero!==!1);return i.resolve!=="shared"?n:n(e.map(s=>_n(t(s).values)))}function v0e(e,t,i,n){let s=n.scale||t.scale,l=n.translate||t.translate;if(ct(s)&&(s=s(i,n)),ct(l)&&(l=l(i,n)),(s===1||s==null)&&!l)return;const c=(zt(s)?s:s[0])||1,r=(zt(s)?s:s[1])||1,a=l&&l[0]||0,u=l&&l[1]||0;e.forEach(XP(t,c,r,a,u))}function XP(e,t,i,n,s){const l=e.x1||0,c=e.y1||0,r=t*i<0;function a(d){d.forEach(u)}function u(d){r&&d.reverse(),d.forEach(o)}function o(d){d[0]=(d[0]-l)*t+n,d[1]=(d[1]-c)*i+s}return function(d){return d.coordinates.forEach(a),d}}function XF(e,t,i){const n=e>=0?e:K3(t,i);return Math.round((Math.sqrt(4*n*n+1)-1)/2)}function jx(e){return ct(e)?e:In(+e)}function JP(){var e=a=>a[0],t=a=>a[1],i=Jb,n=[-1,-1],s=960,l=500,c=2;function r(a,u){const o=XF(n[0],a,e)>>c,d=XF(n[1],a,t)>>c,b=o?o+2:0,h=d?d+2:0,p=2*b+(s>>c),Z=2*h+(l>>c),X=new Float32Array(p*Z),J=new Float32Array(p*Z);let V=X;a.forEach(I=>{const v=b+(+e(I)>>c),k=h+(+t(I)>>c);v>=0&&v<p&&k>=0&&k<Z&&(X[v+k*p]+=+i(I))}),o>0&&d>0?(Kd(p,Z,X,J,o),Bd(p,Z,J,X,d),Kd(p,Z,X,J,o),Bd(p,Z,J,X,d),Kd(p,Z,X,J,o),Bd(p,Z,J,X,d)):o>0?(Kd(p,Z,X,J,o),Kd(p,Z,J,X,o),Kd(p,Z,X,J,o),V=J):d>0&&(Bd(p,Z,X,J,d),Bd(p,Z,J,X,d),Bd(p,Z,X,J,d),V=J);const g=u?Math.pow(2,-2*c):1/Uc(V);for(let I=0,v=p*Z;I<v;++I)V[I]*=g;return{values:V,scale:1<<c,width:p,height:Z,x1:b,y1:h,x2:b+(s>>c),y2:h+(l>>c)}}return r.x=function(a){return arguments.length?(e=jx(a),r):e},r.y=function(a){return arguments.length?(t=jx(a),r):t},r.weight=function(a){return arguments.length?(i=jx(a),r):i},r.size=function(a){if(!arguments.length)return[s,l];var u=+a[0],o=+a[1];return u>=0&&o>=0||me("invalid size"),s=u,l=o,r},r.cellSize=function(a){return arguments.length?((a=+a)>=1||me("invalid cell size"),c=Math.floor(Math.log(a)/Math.LN2),r):1<<c},r.bandwidth=function(a){return arguments.length?(a=Ne(a),a.length===1&&(a=[+a[0],+a[0]]),a.length!==2&&me("invalid bandwidth"),n=a,r):n},r}function Kd(e,t,i,n,s){const l=(s<<1)+1;for(let c=0;c<t;++c)for(let r=0,a=0;r<e+s;++r)r<e&&(a+=i[r+c*e]),r>=s&&(r>=l&&(a-=i[r-l+c*e]),n[r-s+c*e]=a/Math.min(r+1,e-1+l-r,l))}function Bd(e,t,i,n,s){const l=(s<<1)+1;for(let c=0;c<e;++c)for(let r=0,a=0;r<t+s;++r)r<t&&(a+=i[c+r*e]),r>=s&&(r>=l&&(a-=i[c+(r-l)*e]),n[c+(r-s)*e]=a/Math.min(r+1,t-1+l-r,l))}function Ng(e){ue.call(this,null,e)}Ng.Definition={type:"KDE2D",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"weight",type:"field"},{name:"groupby",type:"field",array:!0},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number",array:!0,length:2},{name:"counts",type:"boolean",default:!1},{name:"as",type:"string",default:"grid"}]};const z0e=["x","y","weight","size","cellSize","bandwidth"];function xP(e,t){return z0e.forEach(i=>t[i]!=null?e[i](t[i]):0),e}ge(Ng,ue,{transform(e,t){if(this.value&&!t.changed()&&!e.modified())return t.StopPropagation;var i=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=t.materialize(t.SOURCE).source,s=w0e(n,e.groupby),l=(e.groupby||[]).map(Zi),c=xP(JP(),e),r=e.as||"grid",a=[];function u(o,d){for(let b=0;b<l.length;++b)o[l[b]]=d[b];return o}return a=s.map(o=>Rt(u({[r]:c(o,e.counts)},o.dims))),this.value&&(i.rem=this.value),this.value=i.source=i.add=a,i}});function w0e(e,t){var i=[],n=o=>o(r),s,l,c,r,a,u;if(t==null)i.push(e);else for(s={},l=0,c=e.length;l<c;++l)r=e[l],a=t.map(n),u=s[a],u||(s[a]=u=[],u.dims=a,i.push(u)),u.push(r);return i}function Rg(e){ue.call(this,null,e)}Rg.Definition={type:"Contour",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"values",type:"number",array:!0},{name:"x",type:"field"},{name:"y",type:"field"},{name:"weight",type:"field"},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number"},{name:"count",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"thresholds",type:"number",array:!0},{name:"smooth",type:"boolean",default:!0}]};ge(Rg,ue,{transform(e,t){if(this.value&&!t.changed()&&!e.modified())return t.StopPropagation;var i=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=ZP().smooth(e.smooth!==!1),s=e.values,l=e.thresholds||WP(e.count||10,e.nice,!!s),c=e.size,r,a;return s||(s=t.materialize(t.SOURCE).source,r=xP(JP(),e)(s,!0),a=XP(r,r.scale||1,r.scale||1,0,0),c=[r.width,r.height],s=r.values),l=fe(l)?l:l(s),s=n.size(c)(s,l),a&&s.forEach(a),this.value&&(i.rem=this.value),this.value=i.source=i.add=(s||[]).map(Rt),i}});const nV="Feature",kg="FeatureCollection",H0e="MultiPoint";function Fg(e){ue.call(this,null,e)}Fg.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]};ge(Fg,ue,{transform(e,t){var i=this._features,n=this._points,s=e.fields,l=s&&s[0],c=s&&s[1],r=e.geojson||!s&&Vn,a=t.ADD,u;u=e.modified()||t.changed(t.REM)||t.modified(Wn(r))||l&&t.modified(Wn(l))||c&&t.modified(Wn(c)),(!this.value||u)&&(a=t.SOURCE,this._features=i=[],this._points=n=[]),r&&t.visit(a,o=>i.push(r(o))),l&&c&&(t.visit(a,o=>{var d=l(o),b=c(o);d!=null&&b!=null&&(d=+d)===d&&(b=+b)===b&&n.push([d,b])}),i=i.concat({type:nV,geometry:{type:H0e,coordinates:n}})),this.value={type:kg,features:i}}});function Sg(e){ue.call(this,null,e)}Sg.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]};ge(Sg,ue,{transform(e,t){var i=t.fork(t.ALL),n=this.value,s=e.field||Vn,l=e.as||"path",c=i.SOURCE;!n||e.modified()?(this.value=n=yP(e.projection),i.materialize().reflow()):c=s===Vn||t.modified(s.fields)?i.ADD_MOD:i.ADD;const r=N0e(n,e.pointRadius);return i.visit(c,a=>a[l]=n(s(a))),n.pointRadius(r),i.modifies(l)}});function N0e(e,t){const i=e.pointRadius();return e.context(null),t!=null&&e.pointRadius(t),i}function Lg(e){ue.call(this,null,e)}Lg.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]};ge(Lg,ue,{transform(e,t){var i=e.projection,n=e.fields[0],s=e.fields[1],l=e.as||["x","y"],c=l[0],r=l[1],a;function u(o){const d=i([n(o),s(o)]);d?(o[c]=d[0],o[r]=d[1]):(o[c]=void 0,o[r]=void 0)}return e.modified()?t=t.materialize().reflow(!0).visit(t.SOURCE,u):(a=t.modified(n.fields)||t.modified(s.fields),t.visit(a?t.ADD_MOD:t.ADD,u)),t.modifies(l)}});function Cg(e){ue.call(this,null,e)}Cg.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]};ge(Cg,ue,{transform(e,t){var i=t.fork(t.ALL),n=this.value,s=e.as||"shape",l=i.ADD;return(!n||e.modified())&&(this.value=n=R0e(yP(e.projection),e.field||ol("datum"),e.pointRadius),i.materialize().reflow(),l=i.SOURCE),i.visit(l,c=>c[s]=n),i.modifies(s)}});function R0e(e,t,i){const n=i==null?s=>e(t(s)):s=>{var l=e.pointRadius(),c=e.pointRadius(i)(t(s));return e.pointRadius(l),c};return n.context=s=>(e.context(s),n),n}function Tg(e){ue.call(this,[],e),this.generator=Tpe()}Tg.Definition={type:"Graticule",metadata:{changes:!0,generates:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]};ge(Tg,ue,{transform(e,t){var i=this.value,n=this.generator,s;if(!i.length||e.modified())for(const l in e)ct(n[l])&&n[l](e[l]);return s=n(),i.length?t.mod.push(oO(i[0],s)):t.add.push(Rt(s)),i[0]=s,t}});function Mg(e){ue.call(this,null,e)}Mg.Definition={type:"heatmap",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"color",type:"string",expr:!0},{name:"opacity",type:"number",expr:!0},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"as",type:"string",default:"image"}]};ge(Mg,ue,{transform(e,t){if(!t.changed()&&!e.modified())return t.StopPropagation;var i=t.materialize(t.SOURCE).source,n=e.resolve==="shared",s=e.field||Vn,l=F0e(e.opacity,e),c=k0e(e.color,e),r=e.as||"image",a={$x:0,$y:0,$value:0,$max:n?_n(i.map(u=>_n(s(u).values))):0};return i.forEach(u=>{const o=s(u),d=lt({},u,a);n||(d.$max=_n(o.values||[])),u[r]=S0e(o,d,c.dep?c:In(c(d)),l.dep?l:In(l(d)))}),t.reflow(!0).modifies(r)}});function k0e(e,t){let i;return ct(e)?(i=n=>ro(e(n,t)),i.dep=YP(e)):i=In(ro(e||"#888")),i}function F0e(e,t){let i;return ct(e)?(i=n=>e(n,t),i.dep=YP(e)):e?i=In(e):(i=n=>n.$value/n.$max||0,i.dep=!0),i}function YP(e){if(!ct(e))return!1;const t=_l(Wn(e));return t.$x||t.$y||t.$value||t.$max}function S0e(e,t,i,n){const s=e.width,l=e.height,c=e.x1||0,r=e.y1||0,a=e.x2||s,u=e.y2||l,o=e.values,d=o?X=>o[X]:Sa,b=to(a-c,u-r),h=b.getContext("2d"),p=h.getImageData(0,0,a-c,u-r),Z=p.data;for(let X=r,J=0;X<u;++X){t.$y=X-r;for(let V=c,g=X*s;V<a;++V,J+=4){t.$x=V-c,t.$value=d(V+g);const I=i(t);Z[J+0]=I.r,Z[J+1]=I.g,Z[J+2]=I.b,Z[J+3]=~~(255*n(t))}}return h.putImageData(p,0,0),b}function GP(e){ue.call(this,null,e),this.modified(!0)}ge(GP,ue,{transform(e,t){let i=this.value;return!i||e.modified("type")?(this.value=i=C0e(e.type),iV.forEach(n=>{e[n]!=null&&JF(i,n,e[n])})):iV.forEach(n=>{e.modified(n)&&JF(i,n,e[n])}),e.pointRadius!=null&&i.path.pointRadius(e.pointRadius),e.fit&&L0e(i,e),t.fork(t.NO_SOURCE|t.NO_FIELDS)}});function L0e(e,t){const i=T0e(t.fit);t.extent?e.fitExtent(t.extent,i):t.size&&e.fitSize(t.size,i)}function C0e(e){const t=wg((e||"mercator").toLowerCase());return t||me("Unrecognized projection type: "+e),t()}function JF(e,t,i){ct(e[t])&&e[t](i)}function T0e(e){return e=Ne(e),e.length===1?e[0]:{type:kg,features:e.reduce((t,i)=>t.concat(M0e(i)),[])}}function M0e(e){return e.type===kg?e.features:Ne(e).filter(t=>t!=null).map(t=>t.type===nV?t:{type:nV,geometry:t})}const K0e=Object.freeze(Object.defineProperty({__proto__:null,contour:Rg,geojson:Fg,geopath:Sg,geopoint:Lg,geoshape:Cg,graticule:Tg,heatmap:Mg,isocontour:Hg,kde2d:Ng,projection:GP},Symbol.toStringTag,{value:"Module"}));function B0e(e,t){var i,n=1;e==null&&(e=0),t==null&&(t=0);function s(){var l,c=i.length,r,a=0,u=0;for(l=0;l<c;++l)r=i[l],a+=r.x,u+=r.y;for(a=(a/c-e)*n,u=(u/c-t)*n,l=0;l<c;++l)r=i[l],r.x-=a,r.y-=u}return s.initialize=function(l){i=l},s.x=function(l){return arguments.length?(e=+l,s):e},s.y=function(l){return arguments.length?(t=+l,s):t},s.strength=function(l){return arguments.length?(n=+l,s):n},s}function _0e(e){const t=+this._x.call(null,e),i=+this._y.call(null,e);return VP(this.cover(t,i),t,i,e)}function VP(e,t,i,n){if(isNaN(t)||isNaN(i))return e;var s,l=e._root,c={data:n},r=e._x0,a=e._y0,u=e._x1,o=e._y1,d,b,h,p,Z,X,J,V;if(!l)return e._root=c,e;for(;l.length;)if((Z=t>=(d=(r+u)/2))?r=d:u=d,(X=i>=(b=(a+o)/2))?a=b:o=b,s=l,!(l=l[J=X<<1|Z]))return s[J]=c,e;if(h=+e._x.call(null,l.data),p=+e._y.call(null,l.data),t===h&&i===p)return c.next=l,s?s[J]=c:e._root=c,e;do s=s?s[J]=new Array(4):e._root=new Array(4),(Z=t>=(d=(r+u)/2))?r=d:u=d,(X=i>=(b=(a+o)/2))?a=b:o=b;while((J=X<<1|Z)===(V=(p>=b)<<1|h>=d));return s[V]=l,s[J]=c,e}function O0e(e){var t,i,n=e.length,s,l,c=new Array(n),r=new Array(n),a=1/0,u=1/0,o=-1/0,d=-1/0;for(i=0;i<n;++i)isNaN(s=+this._x.call(null,t=e[i]))||isNaN(l=+this._y.call(null,t))||(c[i]=s,r[i]=l,s<a&&(a=s),s>o&&(o=s),l<u&&(u=l),l>d&&(d=l));if(a>o||u>d)return this;for(this.cover(a,u).cover(o,d),i=0;i<n;++i)VP(this,c[i],r[i],e[i]);return this}function j0e(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var i=this._x0,n=this._y0,s=this._x1,l=this._y1;if(isNaN(i))s=(i=Math.floor(e))+1,l=(n=Math.floor(t))+1;else{for(var c=s-i||1,r=this._root,a,u;i>e||e>=s||n>t||t>=l;)switch(u=(t<n)<<1|e<i,a=new Array(4),a[u]=r,r=a,c*=2,u){case 0:s=i+c,l=n+c;break;case 1:i=s-c,l=n+c;break;case 2:s=i+c,n=l-c;break;case 3:i=s-c,n=l-c;break}this._root&&this._root.length&&(this._root=r)}return this._x0=i,this._y0=n,this._x1=s,this._y1=l,this}function E0e(){var e=[];return this.visit(function(t){if(!t.length)do e.push(t.data);while(t=t.next)}),e}function P0e(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function Ln(e,t,i,n,s){this.node=e,this.x0=t,this.y0=i,this.x1=n,this.y1=s}function U0e(e,t,i){var n,s=this._x0,l=this._y0,c,r,a,u,o=this._x1,d=this._y1,b=[],h=this._root,p,Z;for(h&&b.push(new Ln(h,s,l,o,d)),i==null?i=1/0:(s=e-i,l=t-i,o=e+i,d=t+i,i*=i);p=b.pop();)if(!(!(h=p.node)||(c=p.x0)>o||(r=p.y0)>d||(a=p.x1)<s||(u=p.y1)<l))if(h.length){var X=(c+a)/2,J=(r+u)/2;b.push(new Ln(h[3],X,J,a,u),new Ln(h[2],c,J,X,u),new Ln(h[1],X,r,a,J),new Ln(h[0],c,r,X,J)),(Z=(t>=J)<<1|e>=X)&&(p=b[b.length-1],b[b.length-1]=b[b.length-1-Z],b[b.length-1-Z]=p)}else{var V=e-+this._x.call(null,h.data),g=t-+this._y.call(null,h.data),I=V*V+g*g;if(I<i){var v=Math.sqrt(i=I);s=e-v,l=t-v,o=e+v,d=t+v,n=h.data}}return n}function $0e(e){if(isNaN(o=+this._x.call(null,e))||isNaN(d=+this._y.call(null,e)))return this;var t,i=this._root,n,s,l,c=this._x0,r=this._y0,a=this._x1,u=this._y1,o,d,b,h,p,Z,X,J;if(!i)return this;if(i.length)for(;;){if((p=o>=(b=(c+a)/2))?c=b:a=b,(Z=d>=(h=(r+u)/2))?r=h:u=h,t=i,!(i=i[X=Z<<1|p]))return this;if(!i.length)break;(t[X+1&3]||t[X+2&3]||t[X+3&3])&&(n=t,J=X)}for(;i.data!==e;)if(s=i,!(i=i.next))return this;return(l=i.next)&&delete i.next,s?(l?s.next=l:delete s.next,this):t?(l?t[X]=l:delete t[X],(i=t[0]||t[1]||t[2]||t[3])&&i===(t[3]||t[2]||t[1]||t[0])&&!i.length&&(n?n[J]=i:this._root=i),this):(this._root=l,this)}function Q0e(e){for(var t=0,i=e.length;t<i;++t)this.remove(e[t]);return this}function D0e(){return this._root}function A0e(){var e=0;return this.visit(function(t){if(!t.length)do++e;while(t=t.next)}),e}function q0e(e){var t=[],i,n=this._root,s,l,c,r,a;for(n&&t.push(new Ln(n,this._x0,this._y0,this._x1,this._y1));i=t.pop();)if(!e(n=i.node,l=i.x0,c=i.y0,r=i.x1,a=i.y1)&&n.length){var u=(l+r)/2,o=(c+a)/2;(s=n[3])&&t.push(new Ln(s,u,o,r,a)),(s=n[2])&&t.push(new Ln(s,l,o,u,a)),(s=n[1])&&t.push(new Ln(s,u,c,r,o)),(s=n[0])&&t.push(new Ln(s,l,c,u,o))}return this}function eye(e){var t=[],i=[],n;for(this._root&&t.push(new Ln(this._root,this._x0,this._y0,this._x1,this._y1));n=t.pop();){var s=n.node;if(s.length){var l,c=n.x0,r=n.y0,a=n.x1,u=n.y1,o=(c+a)/2,d=(r+u)/2;(l=s[0])&&t.push(new Ln(l,c,r,o,d)),(l=s[1])&&t.push(new Ln(l,o,r,a,d)),(l=s[2])&&t.push(new Ln(l,c,d,o,u)),(l=s[3])&&t.push(new Ln(l,o,d,a,u))}i.push(n)}for(;n=i.pop();)e(n.node,n.x0,n.y0,n.x1,n.y1);return this}function tye(e){return e[0]}function iye(e){return arguments.length?(this._x=e,this):this._x}function nye(e){return e[1]}function sye(e){return arguments.length?(this._y=e,this):this._y}function Kg(e,t,i){var n=new Bg(t??tye,i??nye,NaN,NaN,NaN,NaN);return e==null?n:n.addAll(e)}function Bg(e,t,i,n,s,l){this._x=e,this._y=t,this._x0=i,this._y0=n,this._x1=s,this._y1=l,this._root=void 0}function xF(e){for(var t={data:e.data},i=t;e=e.next;)i=i.next={data:e.data};return t}var $n=Kg.prototype=Bg.prototype;$n.copy=function(){var e=new Bg(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,i,n;if(!t)return e;if(!t.length)return e._root=xF(t),e;for(i=[{source:t,target:e._root=new Array(4)}];t=i.pop();)for(var s=0;s<4;++s)(n=t.source[s])&&(n.length?i.push({source:n,target:t.target[s]=new Array(4)}):t.target[s]=xF(n));return e};$n.add=_0e;$n.addAll=O0e;$n.cover=j0e;$n.data=E0e;$n.extent=P0e;$n.find=U0e;$n.remove=$0e;$n.removeAll=Q0e;$n.root=D0e;$n.size=A0e;$n.visit=q0e;$n.visitAfter=eye;$n.x=iye;$n.y=sye;function Tn(e){return function(){return e}}function ja(e){return(e()-.5)*1e-6}function lye(e){return e.x+e.vx}function cye(e){return e.y+e.vy}function rye(e){var t,i,n,s=1,l=1;typeof e!="function"&&(e=Tn(e==null?1:+e));function c(){for(var u,o=t.length,d,b,h,p,Z,X,J=0;J<l;++J)for(d=Kg(t,lye,cye).visitAfter(r),u=0;u<o;++u)b=t[u],Z=i[b.index],X=Z*Z,h=b.x+b.vx,p=b.y+b.vy,d.visit(V);function V(g,I,v,k,N){var C=g.data,f=g.r,w=Z+f;if(C){if(C.index>b.index){var x=h-C.x-C.vx,R=p-C.y-C.vy,K=x*x+R*R;K<w*w&&(x===0&&(x=ja(n),K+=x*x),R===0&&(R=ja(n),K+=R*R),K=(w-(K=Math.sqrt(K)))/K*s,b.vx+=(x*=K)*(w=(f*=f)/(X+f)),b.vy+=(R*=K)*w,C.vx-=x*(w=1-w),C.vy-=R*w)}return}return I>h+w||k<h-w||v>p+w||N<p-w}}function r(u){if(u.data)return u.r=i[u.data.index];for(var o=u.r=0;o<4;++o)u[o]&&u[o].r>u.r&&(u.r=u[o].r)}function a(){if(t){var u,o=t.length,d;for(i=new Array(o),u=0;u<o;++u)d=t[u],i[d.index]=+e(d,u,t)}}return c.initialize=function(u,o){t=u,n=o,a()},c.iterations=function(u){return arguments.length?(l=+u,c):l},c.strength=function(u){return arguments.length?(s=+u,c):s},c.radius=function(u){return arguments.length?(e=typeof u=="function"?u:Tn(+u),a(),c):e},c}function aye(e){return e.index}function YF(e,t){var i=e.get(t);if(!i)throw new Error("node not found: "+t);return i}function oye(e){var t=aye,i=d,n,s=Tn(30),l,c,r,a,u,o=1;e==null&&(e=[]);function d(X){return 1/Math.min(r[X.source.index],r[X.target.index])}function b(X){for(var J=0,V=e.length;J<o;++J)for(var g=0,I,v,k,N,C,f,w;g<V;++g)I=e[g],v=I.source,k=I.target,N=k.x+k.vx-v.x-v.vx||ja(u),C=k.y+k.vy-v.y-v.vy||ja(u),f=Math.sqrt(N*N+C*C),f=(f-l[g])/f*X*n[g],N*=f,C*=f,k.vx-=N*(w=a[g]),k.vy-=C*w,v.vx+=N*(w=1-w),v.vy+=C*w}function h(){if(c){var X,J=c.length,V=e.length,g=new Map(c.map((v,k)=>[t(v,k,c),v])),I;for(X=0,r=new Array(J);X<V;++X)I=e[X],I.index=X,typeof I.source!="object"&&(I.source=YF(g,I.source)),typeof I.target!="object"&&(I.target=YF(g,I.target)),r[I.source.index]=(r[I.source.index]||0)+1,r[I.target.index]=(r[I.target.index]||0)+1;for(X=0,a=new Array(V);X<V;++X)I=e[X],a[X]=r[I.source.index]/(r[I.source.index]+r[I.target.index]);n=new Array(V),p(),l=new Array(V),Z()}}function p(){if(c)for(var X=0,J=e.length;X<J;++X)n[X]=+i(e[X],X,e)}function Z(){if(c)for(var X=0,J=e.length;X<J;++X)l[X]=+s(e[X],X,e)}return b.initialize=function(X,J){c=X,u=J,h()},b.links=function(X){return arguments.length?(e=X,h(),b):e},b.id=function(X){return arguments.length?(t=X,b):t},b.iterations=function(X){return arguments.length?(o=+X,b):o},b.strength=function(X){return arguments.length?(i=typeof X=="function"?X:Tn(+X),p(),b):i},b.distance=function(X){return arguments.length?(s=typeof X=="function"?X:Tn(+X),Z(),b):s},b}const uye=1664525,dye=1013904223,GF=4294967296;function mye(){let e=1;return()=>(e=(uye*e+dye)%GF)/GF}function bye(e){return e.x}function hye(e){return e.y}var fye=10,pye=Math.PI*(3-Math.sqrt(5));function yye(e){var t,i=1,n=.001,s=1-Math.pow(n,1/300),l=0,c=.6,r=new Map,a=kte(d),u=Fte("tick","end"),o=mye();e==null&&(e=[]);function d(){b(),u.call("tick",t),i<n&&(a.stop(),u.call("end",t))}function b(Z){var X,J=e.length,V;Z===void 0&&(Z=1);for(var g=0;g<Z;++g)for(i+=(l-i)*s,r.forEach(function(I){I(i)}),X=0;X<J;++X)V=e[X],V.fx==null?V.x+=V.vx*=c:(V.x=V.fx,V.vx=0),V.fy==null?V.y+=V.vy*=c:(V.y=V.fy,V.vy=0);return t}function h(){for(var Z=0,X=e.length,J;Z<X;++Z){if(J=e[Z],J.index=Z,J.fx!=null&&(J.x=J.fx),J.fy!=null&&(J.y=J.fy),isNaN(J.x)||isNaN(J.y)){var V=fye*Math.sqrt(.5+Z),g=Z*pye;J.x=V*Math.cos(g),J.y=V*Math.sin(g)}(isNaN(J.vx)||isNaN(J.vy))&&(J.vx=J.vy=0)}}function p(Z){return Z.initialize&&Z.initialize(e,o),Z}return h(),t={tick:b,restart:function(){return a.restart(d),t},stop:function(){return a.stop(),t},nodes:function(Z){return arguments.length?(e=Z,h(),r.forEach(p),t):e},alpha:function(Z){return arguments.length?(i=+Z,t):i},alphaMin:function(Z){return arguments.length?(n=+Z,t):n},alphaDecay:function(Z){return arguments.length?(s=+Z,t):+s},alphaTarget:function(Z){return arguments.length?(l=+Z,t):l},velocityDecay:function(Z){return arguments.length?(c=1-Z,t):1-c},randomSource:function(Z){return arguments.length?(o=Z,r.forEach(p),t):o},force:function(Z,X){return arguments.length>1?(X==null?r.delete(Z):r.set(Z,p(X)),t):r.get(Z)},find:function(Z,X,J){var V=0,g=e.length,I,v,k,N,C;for(J==null?J=1/0:J*=J,V=0;V<g;++V)N=e[V],I=Z-N.x,v=X-N.y,k=I*I+v*v,k<J&&(C=N,J=k);return C},on:function(Z,X){return arguments.length>1?(u.on(Z,X),t):u.on(Z)}}}function Zye(){var e,t,i,n,s=Tn(-30),l,c=1,r=1/0,a=.81;function u(h){var p,Z=e.length,X=Kg(e,bye,hye).visitAfter(d);for(n=h,p=0;p<Z;++p)t=e[p],X.visit(b)}function o(){if(e){var h,p=e.length,Z;for(l=new Array(p),h=0;h<p;++h)Z=e[h],l[Z.index]=+s(Z,h,e)}}function d(h){var p=0,Z,X,J=0,V,g,I;if(h.length){for(V=g=I=0;I<4;++I)(Z=h[I])&&(X=Math.abs(Z.value))&&(p+=Z.value,J+=X,V+=X*Z.x,g+=X*Z.y);h.x=V/J,h.y=g/J}else{Z=h,Z.x=Z.data.x,Z.y=Z.data.y;do p+=l[Z.data.index];while(Z=Z.next)}h.value=p}function b(h,p,Z,X){if(!h.value)return!0;var J=h.x-t.x,V=h.y-t.y,g=X-p,I=J*J+V*V;if(g*g/a<I)return I<r&&(J===0&&(J=ja(i),I+=J*J),V===0&&(V=ja(i),I+=V*V),I<c&&(I=Math.sqrt(c*I)),t.vx+=J*h.value*n/I,t.vy+=V*h.value*n/I),!0;if(h.length||I>=r)return;(h.data!==t||h.next)&&(J===0&&(J=ja(i),I+=J*J),V===0&&(V=ja(i),I+=V*V),I<c&&(I=Math.sqrt(c*I)));do h.data!==t&&(g=l[h.data.index]*n/I,t.vx+=J*g,t.vy+=V*g);while(h=h.next)}return u.initialize=function(h,p){e=h,i=p,o()},u.strength=function(h){return arguments.length?(s=typeof h=="function"?h:Tn(+h),o(),u):s},u.distanceMin=function(h){return arguments.length?(c=h*h,u):Math.sqrt(c)},u.distanceMax=function(h){return arguments.length?(r=h*h,u):Math.sqrt(r)},u.theta=function(h){return arguments.length?(a=h*h,u):Math.sqrt(a)},u}function Wye(e){var t=Tn(.1),i,n,s;typeof e!="function"&&(e=Tn(e==null?0:+e));function l(r){for(var a=0,u=i.length,o;a<u;++a)o=i[a],o.vx+=(s[a]-o.x)*n[a]*r}function c(){if(i){var r,a=i.length;for(n=new Array(a),s=new Array(a),r=0;r<a;++r)n[r]=isNaN(s[r]=+e(i[r],r,i))?0:+t(i[r],r,i)}}return l.initialize=function(r){i=r,c()},l.strength=function(r){return arguments.length?(t=typeof r=="function"?r:Tn(+r),c(),l):t},l.x=function(r){return arguments.length?(e=typeof r=="function"?r:Tn(+r),c(),l):e},l}function Xye(e){var t=Tn(.1),i,n,s;typeof e!="function"&&(e=Tn(e==null?0:+e));function l(r){for(var a=0,u=i.length,o;a<u;++a)o=i[a],o.vy+=(s[a]-o.y)*n[a]*r}function c(){if(i){var r,a=i.length;for(n=new Array(a),s=new Array(a),r=0;r<a;++r)n[r]=isNaN(s[r]=+e(i[r],r,i))?0:+t(i[r],r,i)}}return l.initialize=function(r){i=r,c()},l.strength=function(r){return arguments.length?(t=typeof r=="function"?r:Tn(+r),c(),l):t},l.y=function(r){return arguments.length?(e=typeof r=="function"?r:Tn(+r),c(),l):e},l}const VF={center:B0e,collide:rye,nbody:Zye,link:oye,x:Wye,y:Xye},Dh="forces",sV=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],Jye=["static","iterations"],IP=["x","y","vx","vy"];function _g(e){ue.call(this,null,e)}_g.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30,expr:!0},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:IP}]};ge(_g,ue,{transform(e,t){var i=this.value,n=t.changed(t.ADD_REM),s=e.modified(sV),l=e.iterations||300;if(i?(n&&(t.modifies("index"),i.nodes(t.source)),(s||t.changed(t.MOD))&&gP(i,e,0,t)):(this.value=i=Yye(t.source,e),i.on("tick",xye(t.dataflow,this)),e.static||(n=!0,i.tick()),t.modifies("index")),s||n||e.modified(Jye)||t.changed()&&e.restart){if(i.alpha(Math.max(i.alpha(),e.alpha||1)).alphaDecay(1-Math.pow(i.alphaMin(),1/l)),e.static)for(i.stop();--l>=0;)i.tick();else if(i.stopped()&&i.restart(),!n)return t.StopPropagation}return this.finish(e,t)},finish(e,t){const i=t.dataflow;for(let r=this._argops,a=0,u=r.length,o;a<u;++a)if(o=r[a],!(o.name!==Dh||o.op._argval.force!=="link")){for(var n=o.op._argops,s=0,l=n.length,c;s<l;++s)if(n[s].name==="links"&&(c=n[s].op.source)){i.pulse(c,i.changeset().reflow());break}}return t.reflow(e.modified()).modifies(IP)}});function xye(e,t){return()=>e.touch(t).run()}function Yye(e,t){const i=yye(e),n=i.stop,s=i.restart;let l=!1;return i.stopped=()=>l,i.restart=()=>(l=!1,s()),i.stop=()=>(l=!0,n()),gP(i,t,!0).on("end",()=>l=!0)}function gP(e,t,i,n){var s=Ne(t.forces),l,c,r,a;for(l=0,c=sV.length;l<c;++l)r=sV[l],r!==Dh&&t.modified(r)&&e[r](t[r]);for(l=0,c=s.length;l<c;++l)a=Dh+l,r=i||t.modified(Dh,l)?Vye(s[l]):n&&Gye(s[l],n)?e.force(a):null,r&&e.force(a,r);for(c=e.numForces||0;l<c;++l)e.force(Dh+l,null);return e.numForces=s.length,e}function Gye(e,t){var i,n;for(i in e)if(ct(n=e[i])&&t.modified(Wn(n)))return 1;return 0}function Vye(e){var t,i;Re(VF,e.force)||me("Unrecognized force: "+e.force),t=VF[e.force]();for(i in e)ct(t[i])&&Iye(t[i],e[i],e);return t}function Iye(e,t,i){e(ct(t)?n=>t(n,i):t)}const gye=Object.freeze(Object.defineProperty({__proto__:null,force:_g},Symbol.toStringTag,{value:"Module"}));function vye(e,t){return e.parent===t.parent?1:2}function zye(e){return e.reduce(wye,0)/e.length}function wye(e,t){return e+t.x}function Hye(e){return 1+e.reduce(Nye,0)}function Nye(e,t){return Math.max(e,t.y)}function Rye(e){for(var t;t=e.children;)e=t[0];return e}function kye(e){for(var t;t=e.children;)e=t[t.length-1];return e}function Fye(){var e=vye,t=1,i=1,n=!1;function s(l){var c,r=0;l.eachAfter(function(b){var h=b.children;h?(b.x=zye(h),b.y=Hye(h)):(b.x=c?r+=e(b,c):0,b.y=0,c=b)});var a=Rye(l),u=kye(l),o=a.x-e(a,u)/2,d=u.x+e(u,a)/2;return l.eachAfter(n?function(b){b.x=(b.x-l.x)*t,b.y=(l.y-b.y)*i}:function(b){b.x=(b.x-o)/(d-o)*t,b.y=(1-(l.y?b.y/l.y:1))*i})}return s.separation=function(l){return arguments.length?(e=l,s):e},s.size=function(l){return arguments.length?(n=!1,t=+l[0],i=+l[1],s):n?null:[t,i]},s.nodeSize=function(l){return arguments.length?(n=!0,t=+l[0],i=+l[1],s):n?[t,i]:null},s}const Sye=1664525,Lye=1013904223,IF=4294967296;function Cye(){let e=1;return()=>(e=(Sye*e+Lye)%IF)/IF}function Tye(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Mye(e,t){let i=e.length,n,s;for(;i;)s=t()*i--|0,n=e[i],e[i]=e[s],e[s]=n;return e}function Kye(e,t){for(var i=0,n=(e=Mye(Array.from(e),t)).length,s=[],l,c;i<n;)l=e[i],c&&vP(c,l)?++i:(c=_ye(s=Bye(s,l)),i=0);return c}function Bye(e,t){var i,n;if(Ex(t,e))return[t];for(i=0;i<e.length;++i)if(Ly(t,e[i])&&Ex(Ah(e[i],t),e))return[e[i],t];for(i=0;i<e.length-1;++i)for(n=i+1;n<e.length;++n)if(Ly(Ah(e[i],e[n]),t)&&Ly(Ah(e[i],t),e[n])&&Ly(Ah(e[n],t),e[i])&&Ex(zP(e[i],e[n],t),e))return[e[i],e[n],t];throw new Error}function Ly(e,t){var i=e.r-t.r,n=t.x-e.x,s=t.y-e.y;return i<0||i*i<n*n+s*s}function vP(e,t){var i=e.r-t.r+Math.max(e.r,t.r,1)*1e-9,n=t.x-e.x,s=t.y-e.y;return i>0&&i*i>n*n+s*s}function Ex(e,t){for(var i=0;i<t.length;++i)if(!vP(e,t[i]))return!1;return!0}function _ye(e){switch(e.length){case 1:return Oye(e[0]);case 2:return Ah(e[0],e[1]);case 3:return zP(e[0],e[1],e[2])}}function Oye(e){return{x:e.x,y:e.y,r:e.r}}function Ah(e,t){var i=e.x,n=e.y,s=e.r,l=t.x,c=t.y,r=t.r,a=l-i,u=c-n,o=r-s,d=Math.sqrt(a*a+u*u);return{x:(i+l+a/d*o)/2,y:(n+c+u/d*o)/2,r:(d+s+r)/2}}function zP(e,t,i){var n=e.x,s=e.y,l=e.r,c=t.x,r=t.y,a=t.r,u=i.x,o=i.y,d=i.r,b=n-c,h=n-u,p=s-r,Z=s-o,X=a-l,J=d-l,V=n*n+s*s-l*l,g=V-c*c-r*r+a*a,I=V-u*u-o*o+d*d,v=h*p-b*Z,k=(p*I-Z*g)/(v*2)-n,N=(Z*X-p*J)/v,C=(h*g-b*I)/(v*2)-s,f=(b*J-h*X)/v,w=N*N+f*f-1,x=2*(l+k*N+C*f),R=k*k+C*C-l*l,K=-(Math.abs(w)>1e-6?(x+Math.sqrt(x*x-4*w*R))/(2*w):R/x);return{x:n+k+N*K,y:s+C+f*K,r:K}}function gF(e,t,i){var n=e.x-t.x,s,l,c=e.y-t.y,r,a,u=n*n+c*c;u?(l=t.r+i.r,l*=l,a=e.r+i.r,a*=a,l>a?(s=(u+a-l)/(2*u),r=Math.sqrt(Math.max(0,a/u-s*s)),i.x=e.x-s*n-r*c,i.y=e.y-s*c+r*n):(s=(u+l-a)/(2*u),r=Math.sqrt(Math.max(0,l/u-s*s)),i.x=t.x+s*n-r*c,i.y=t.y+s*c+r*n)):(i.x=t.x+i.r,i.y=t.y)}function vF(e,t){var i=e.r+t.r-1e-6,n=t.x-e.x,s=t.y-e.y;return i>0&&i*i>n*n+s*s}function zF(e){var t=e._,i=e.next._,n=t.r+i.r,s=(t.x*i.r+i.x*t.r)/n,l=(t.y*i.r+i.y*t.r)/n;return s*s+l*l}function Cy(e){this._=e,this.next=null,this.previous=null}function jye(e,t){if(!(l=(e=Tye(e)).length))return 0;var i,n,s,l,c,r,a,u,o,d,b;if(i=e[0],i.x=0,i.y=0,!(l>1))return i.r;if(n=e[1],i.x=-n.r,n.x=i.r,n.y=0,!(l>2))return i.r+n.r;gF(n,i,s=e[2]),i=new Cy(i),n=new Cy(n),s=new Cy(s),i.next=s.previous=n,n.next=i.previous=s,s.next=n.previous=i;e:for(a=3;a<l;++a){gF(i._,n._,s=e[a]),s=new Cy(s),u=n.next,o=i.previous,d=n._.r,b=i._.r;do if(d<=b){if(vF(u._,s._)){n=u,i.next=n,n.previous=i,--a;continue e}d+=u._.r,u=u.next}else{if(vF(o._,s._)){i=o,i.next=n,n.previous=i,--a;continue e}b+=o._.r,o=o.previous}while(u!==o.next);for(s.previous=i,s.next=n,i.next=n.previous=n=s,c=zF(i);(s=s.next)!==n;)(r=zF(s))<c&&(i=s,c=r);n=i.next}for(i=[n._],s=n;(s=s.next)!==n;)i.push(s._);for(s=Kye(i,t),a=0;a<l;++a)i=e[a],i.x-=s.x,i.y-=s.y;return s.r}function Eye(e){return Math.sqrt(e.value)}function Pye(){var e=null,t=1,i=1,n=uN;function s(l){const c=Cye();return l.x=t/2,l.y=i/2,e?l.eachBefore(wF(e)).eachAfter(Px(n,.5,c)).eachBefore(HF(1)):l.eachBefore(wF(Eye)).eachAfter(Px(uN,1,c)).eachAfter(Px(n,l.r/Math.min(t,i),c)).eachBefore(HF(Math.min(t,i)/(2*l.r))),l}return s.radius=function(l){return arguments.length?(e=pZ(l),s):e},s.size=function(l){return arguments.length?(t=+l[0],i=+l[1],s):[t,i]},s.padding=function(l){return arguments.length?(n=typeof l=="function"?l:zie(+l),s):n},s}function wF(e){return function(t){t.children||(t.r=Math.max(0,+e(t)||0))}}function Px(e,t,i){return function(n){if(s=n.children){var s,l,c=s.length,r=e(n)*t||0,a;if(r)for(l=0;l<c;++l)s[l].r+=r;if(a=jye(s,i),r)for(l=0;l<c;++l)s[l].r-=r;n.r=a+r}}}function HF(e){return function(t){var i=t.parent;t.r*=e,i&&(t.x=i.x+e*t.x,t.y=i.y+e*t.y)}}function Uye(){var e=1,t=1,i=0,n=!1;function s(c){var r=c.height+1;return c.x0=c.y0=i,c.x1=e,c.y1=t/r,c.eachBefore(l(t,r)),n&&c.eachBefore(wie),c}function l(c,r){return function(a){a.children&&t2(a,a.x0,c*(a.depth+1)/r,a.x1,c*(a.depth+2)/r);var u=a.x0,o=a.y0,d=a.x1-i,b=a.y1-i;d<u&&(u=d=(u+d)/2),b<o&&(o=b=(o+b)/2),a.x0=u,a.y0=o,a.x1=d,a.y1=b}}return s.round=function(c){return arguments.length?(n=!!c,s):n},s.size=function(c){return arguments.length?(e=+c[0],t=+c[1],s):[e,t]},s.padding=function(c){return arguments.length?(i=+c,s):i},s}var $ye={depth:-1},NF={},Ux={};function Qye(e){return e.id}function Dye(e){return e.parentId}function RF(){var e=Qye,t=Dye,i;function n(s){var l=Array.from(s),c=e,r=t,a,u,o,d,b,h,p,Z,X=new Map;if(i!=null){const J=l.map((I,v)=>Aye(i(I,v,s))),V=J.map(kF),g=new Set(J).add("");for(const I of V)g.has(I)||(g.add(I),J.push(I),V.push(kF(I)),l.push(Ux));c=(I,v)=>J[v],r=(I,v)=>V[v]}for(o=0,a=l.length;o<a;++o)u=l[o],h=l[o]=new OM(u),(p=c(u,o,s))!=null&&(p+="")&&(Z=h.id=p,X.set(Z,X.has(Z)?NF:h)),(p=r(u,o,s))!=null&&(p+="")&&(h.parent=p);for(o=0;o<a;++o)if(h=l[o],p=h.parent){if(b=X.get(p),!b)throw new Error("missing: "+p);if(b===NF)throw new Error("ambiguous: "+p);b.children?b.children.push(h):b.children=[h],h.parent=b}else{if(d)throw new Error("multiple roots");d=h}if(!d)throw new Error("no root");if(i!=null){for(;d.data===Ux&&d.children.length===1;)d=d.children[0],--a;for(let J=l.length-1;J>=0&&(h=l[J],h.data===Ux);--J)h.data=null}if(d.parent=$ye,d.eachBefore(function(J){J.depth=J.parent.depth+1,--a}).eachBefore(Hie),d.parent=null,a>0)throw new Error("cycle");return d}return n.id=function(s){return arguments.length?(e=pZ(s),n):e},n.parentId=function(s){return arguments.length?(t=pZ(s),n):t},n.path=function(s){return arguments.length?(i=pZ(s),n):i},n}function Aye(e){e=`${e}`;let t=e.length;return lV(e,t-1)&&!lV(e,t-2)&&(e=e.slice(0,-1)),e[0]==="/"?e:`/${e}`}function kF(e){let t=e.length;if(t<2)return"";for(;--t>1&&!lV(e,t););return e.slice(0,t)}function lV(e,t){if(e[t]==="/"){let i=0;for(;t>0&&e[--t]==="\\";)++i;if((i&1)===0)return!0}return!1}function qye(e,t){return e.parent===t.parent?1:2}function $x(e){var t=e.children;return t?t[0]:e.t}function Qx(e){var t=e.children;return t?t[t.length-1]:e.t}function eZe(e,t,i){var n=i/(t.i-e.i);t.c-=n,t.s+=i,e.c+=n,t.z+=i,t.m+=i}function tZe(e){for(var t=0,i=0,n=e.children,s=n.length,l;--s>=0;)l=n[s],l.z+=t,l.m+=t,t+=l.s+(i+=l.c)}function iZe(e,t,i){return e.a.parent===t.parent?e.a:i}function kZ(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}kZ.prototype=Object.create(OM.prototype);function nZe(e){for(var t=new kZ(e,0),i,n=[t],s,l,c,r;i=n.pop();)if(l=i._.children)for(i.children=new Array(r=l.length),c=r-1;c>=0;--c)n.push(s=i.children[c]=new kZ(l[c],c)),s.parent=i;return(t.parent=new kZ(null,0)).children=[t],t}function sZe(){var e=qye,t=1,i=1,n=null;function s(u){var o=nZe(u);if(o.eachAfter(l),o.parent.m=-o.z,o.eachBefore(c),n)u.eachBefore(a);else{var d=u,b=u,h=u;u.eachBefore(function(V){V.x<d.x&&(d=V),V.x>b.x&&(b=V),V.depth>h.depth&&(h=V)});var p=d===b?1:e(d,b)/2,Z=p-d.x,X=t/(b.x+p+Z),J=i/(h.depth||1);u.eachBefore(function(V){V.x=(V.x+Z)*X,V.y=V.depth*J})}return u}function l(u){var o=u.children,d=u.parent.children,b=u.i?d[u.i-1]:null;if(o){tZe(u);var h=(o[0].z+o[o.length-1].z)/2;b?(u.z=b.z+e(u._,b._),u.m=u.z-h):u.z=h}else b&&(u.z=b.z+e(u._,b._));u.parent.A=r(u,b,u.parent.A||d[0])}function c(u){u._.x=u.z+u.parent.m,u.m+=u.parent.m}function r(u,o,d){if(o){for(var b=u,h=u,p=o,Z=b.parent.children[0],X=b.m,J=h.m,V=p.m,g=Z.m,I;p=Qx(p),b=$x(b),p&&b;)Z=$x(Z),h=Qx(h),h.a=u,I=p.z+V-b.z-X+e(p._,b._),I>0&&(eZe(iZe(p,u,d),u,I),X+=I,J+=I),V+=p.m,X+=b.m,g+=Z.m,J+=h.m;p&&!Qx(h)&&(h.t=p,h.m+=V-J),b&&!$x(Z)&&(Z.t=b,Z.m+=X-g,d=u)}return d}function a(u){u.x*=t,u.y=u.depth*i}return s.separation=function(u){return arguments.length?(e=u,s):e},s.size=function(u){return arguments.length?(n=!1,t=+u[0],i=+u[1],s):n?null:[t,i]},s.nodeSize=function(u){return arguments.length?(n=!0,t=+u[0],i=+u[1],s):n?[t,i]:null},s}function lZe(e,t,i,n,s){var l=e.children,c,r=l.length,a,u=new Array(r+1);for(u[0]=a=c=0;c<r;++c)u[c+1]=a+=l[c].value;o(0,r,e.value,t,i,n,s);function o(d,b,h,p,Z,X,J){if(d>=b-1){var V=l[d];V.x0=p,V.y0=Z,V.x1=X,V.y1=J;return}for(var g=u[d],I=h/2+g,v=d+1,k=b-1;v<k;){var N=v+k>>>1;u[N]<I?v=N+1:k=N}I-u[v-1]<u[v]-I&&d+1<v&&--v;var C=u[v]-g,f=h-C;if(X-p>J-Z){var w=h?(p*f+X*C)/h:X;o(d,v,C,p,Z,w,J),o(v,b,f,w,Z,X,J)}else{var x=h?(Z*f+J*C)/h:J;o(d,v,C,p,Z,X,x),o(v,b,f,p,x,X,J)}}}function cZe(e,t,i,n,s){(e.depth&1?KI:t2)(e,t,i,n,s)}const rZe=function e(t){function i(n,s,l,c,r){if((a=n._squarify)&&a.ratio===t)for(var a,u,o,d,b=-1,h,p=a.length,Z=n.value;++b<p;){for(u=a[b],o=u.children,d=u.value=0,h=o.length;d<h;++d)u.value+=o[d].value;u.dice?t2(u,s,l,c,Z?l+=(r-l)*u.value/Z:r):KI(u,s,l,Z?s+=(c-s)*u.value/Z:c,r),Z-=u.value}else n._squarify=a=Nie(t,n,s,l,c,r),a.ratio=t}return i.ratio=function(n){return e((n=+n)>1?n:1)},i}(Rie);function cV(e,t,i){const n={};return e.each(s=>{const l=s.data;i(l)&&(n[t(l)]=s)}),e.lookup=n,e}function Og(e){ue.call(this,null,e)}Og.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]};const aZe=e=>e.values;ge(Og,ue,{transform(e,t){t.source||me("Nest transform requires an upstream data source.");var i=e.generate,n=e.modified(),s=t.clone(),l=this.value;return(!l||n||t.changed())&&(l&&l.each(c=>{c.children&&Y2(c.data)&&s.rem.push(c.data)}),this.value=l=kie({values:Ne(e.keys).reduce((c,r)=>(c.key(r),c),oZe()).entries(s.source)},aZe),i&&l.each(c=>{c.children&&(c=Rt(c.data),s.add.push(c),s.source.push(c))}),cV(l,Oe,Oe)),s.source.root=l,s}});function oZe(){const e=[],t={entries:s=>n(i(s,0),0),key:s=>(e.push(s),t)};function i(s,l){if(l>=e.length)return s;const c=s.length,r=e[l++],a={},u={};let o=-1,d,b,h;for(;++o<c;)d=r(b=s[o])+"",(h=a[d])?h.push(b):a[d]=[b];for(d in a)u[d]=i(a[d],l);return u}function n(s,l){if(++l>e.length)return s;const c=[];for(const r in s)c.push({key:r,values:n(s[r],l)});return c}return t}function ca(e){ue.call(this,null,e)}const uZe=(e,t)=>e.parent===t.parent?1:2;ge(ca,ue,{transform(e,t){(!t.source||!t.source.root)&&me(this.constructor.name+" transform requires a backing tree data source.");const i=this.layout(e.method),n=this.fields,s=t.source.root,l=e.as||n;e.field?s.sum(e.field):s.count(),e.sort&&s.sort(sd(e.sort,c=>c.data)),dZe(i,this.params,e),i.separation&&i.separation(e.separation!==!1?uZe:Jb);try{this.value=i(s)}catch(c){me(c)}return s.each(c=>mZe(c,n,l)),t.reflow(e.modified()).modifies(l).modifies("leaf")}});function dZe(e,t,i){for(let n,s=0,l=t.length;s<l;++s)n=t[s],n in i&&e[n](i[n])}function mZe(e,t,i){const n=e.data,s=t.length-1;for(let l=0;l<s;++l)n[i[l]]=e[t[l]];n[i[s]]=e.children?e.children.length:0}const rV=["x","y","r","depth","children"];function jg(e){ca.call(this,e)}jg.Definition={type:"Pack",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"radius",type:"field",default:null},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:rV.length,default:rV}]};ge(jg,ca,{layout:Pye,params:["radius","size","padding"],fields:rV});const aV=["x0","y0","x1","y1","depth","children"];function Eg(e){ca.call(this,e)}Eg.Definition={type:"Partition",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:aV.length,default:aV}]};ge(Eg,ca,{layout:Uye,params:["size","round","padding"],fields:aV});function Pg(e){ue.call(this,null,e)}Pg.Definition={type:"Stratify",metadata:{treesource:!0},params:[{name:"key",type:"field",required:!0},{name:"parentKey",type:"field",required:!0}]};ge(Pg,ue,{transform(e,t){t.source||me("Stratify transform requires an upstream data source.");let i=this.value;const n=e.modified(),s=t.fork(t.ALL).materialize(t.SOURCE),l=!i||n||t.changed(t.ADD_REM)||t.modified(e.key.fields)||t.modified(e.parentKey.fields);return s.source=s.source.slice(),l&&(i=s.source.length?cV(RF().id(e.key).parentId(e.parentKey)(s.source),e.key,ul):cV(RF()([{}]),e.key,e.key)),s.source.root=this.value=i,s}});const FF={tidy:sZe,cluster:Fye},oV=["x","y","depth","children"];function Ug(e){ca.call(this,e)}Ug.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:oV.length,default:oV}]};ge(Ug,ca,{layout(e){const t=e||"tidy";if(Re(FF,t))return FF[t]();me("Unrecognized Tree layout method: "+t)},params:["size","nodeSize"],fields:oV});function $g(e){ue.call(this,[],e)}$g.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]};ge($g,ue,{transform(e,t){const i=this.value,n=t.source&&t.source.root,s=t.fork(t.NO_SOURCE),l={};return n||me("TreeLinks transform requires a tree data source."),t.changed(t.ADD_REM)?(s.rem=i,t.visit(t.SOURCE,c=>l[Oe(c)]=1),n.each(c=>{const r=c.data,a=c.parent&&c.parent.data;a&&l[Oe(r)]&&l[Oe(a)]&&s.add.push(Rt({source:a,target:r}))}),this.value=s.add):t.changed(t.MOD)&&(t.visit(t.MOD,c=>l[Oe(c)]=1),i.forEach(c=>{(l[Oe(c.source)]||l[Oe(c.target)])&&s.mod.push(c)})),s}});const SF={binary:lZe,dice:t2,slice:KI,slicedice:cZe,squarify:Sie,resquarify:rZe},uV=["x0","y0","x1","y1","depth","children"];function Qg(e){ca.call(this,e)}Qg.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:uV.length,default:uV}]};ge(Qg,ca,{layout(){const e=Fie();return e.ratio=t=>{const i=e.tile();i.ratio&&e.tile(i.ratio(t))},e.method=t=>{Re(SF,t)?e.tile(SF[t]):me("Unrecognized Treemap layout method: "+t)},e},params:["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],fields:uV});const bZe=Object.freeze(Object.defineProperty({__proto__:null,nest:Og,pack:jg,partition:Eg,stratify:Pg,tree:Ug,treelinks:$g,treemap:Qg},Symbol.toStringTag,{value:"Module"})),Dx=4278190080;function hZe(e,t){const i=e.bitmap();return(t||[]).forEach(n=>i.set(e(n.boundary[0]),e(n.boundary[3]))),[i,void 0]}function fZe(e,t,i,n,s){const l=e.width,c=e.height,r=n||s,a=to(l,c).getContext("2d"),u=to(l,c).getContext("2d"),o=r&&to(l,c).getContext("2d");i.forEach(C=>FZ(a,C,!1)),FZ(u,t,!1),r&&FZ(o,t,!0);const d=Ax(a,l,c),b=Ax(u,l,c),h=r&&Ax(o,l,c),p=e.bitmap(),Z=r&&e.bitmap();let X,J,V,g,I,v,k,N;for(J=0;J<c;++J)for(X=0;X<l;++X)I=J*l+X,v=d[I]&Dx,N=b[I]&Dx,k=r&&h[I]&Dx,(v||k||N)&&(V=e(X),g=e(J),!s&&(v||N)&&p.set(V,g),r&&(v||k)&&Z.set(V,g));return[p,Z]}function Ax(e,t,i){return new Uint32Array(e.getImageData(0,0,t,i).data.buffer)}function FZ(e,t,i){if(!t.length)return;const n=t[0].mark.marktype;n==="group"?t.forEach(s=>{s.items.forEach(l=>FZ(e,l.items,i))}):Ks[n].draw(e,{items:i?t.map(pZe):t})}function pZe(e){const t=G2(e,{});return t.stroke&&t.strokeOpacity!==0||t.fill&&t.fillOpacity!==0?{...t,strokeOpacity:1,stroke:"#000",fillOpacity:0}:t}const Yr=5,wn=31,Af=32,ka=new Uint32Array(Af+1),wl=new Uint32Array(Af+1);wl[0]=0;ka[0]=~wl[0];for(let e=1;e<=Af;++e)wl[e]=wl[e-1]<<1|1,ka[e]=~wl[e];function yZe(e,t){const i=new Uint32Array(~~((e*t+Af)/Af));function n(l,c){i[l]|=c}function s(l,c){i[l]&=c}return{array:i,get:(l,c)=>{const r=c*e+l;return i[r>>>Yr]&1<<(r&wn)},set:(l,c)=>{const r=c*e+l;n(r>>>Yr,1<<(r&wn))},clear:(l,c)=>{const r=c*e+l;s(r>>>Yr,~(1<<(r&wn)))},getRange:(l,c,r,a)=>{let u=a,o,d,b,h;for(;u>=c;--u)if(o=u*e+l,d=u*e+r,b=o>>>Yr,h=d>>>Yr,b===h){if(i[b]&ka[o&wn]&wl[(d&wn)+1])return!0}else{if(i[b]&ka[o&wn]||i[h]&wl[(d&wn)+1])return!0;for(let p=b+1;p<h;++p)if(i[p])return!0}return!1},setRange:(l,c,r,a)=>{let u,o,d,b,h;for(;c<=a;++c)if(u=c*e+l,o=c*e+r,d=u>>>Yr,b=o>>>Yr,d===b)n(d,ka[u&wn]&wl[(o&wn)+1]);else for(n(d,ka[u&wn]),n(b,wl[(o&wn)+1]),h=d+1;h<b;++h)n(h,4294967295)},clearRange:(l,c,r,a)=>{let u,o,d,b,h;for(;c<=a;++c)if(u=c*e+l,o=c*e+r,d=u>>>Yr,b=o>>>Yr,d===b)s(d,wl[u&wn]|ka[(o&wn)+1]);else for(s(d,wl[u&wn]),s(b,ka[(o&wn)+1]),h=d+1;h<b;++h)s(h,0)},outOfBounds:(l,c,r,a)=>l<0||c<0||a>=t||r>=e}}function ZZe(e,t,i){const n=Math.max(1,Math.sqrt(e*t/1e6)),s=~~((e+2*i+n)/n),l=~~((t+2*i+n)/n),c=r=>~~((r+i)/n);return c.invert=r=>r*n-i,c.bitmap=()=>yZe(s,l),c.ratio=n,c.padding=i,c.width=e,c.height=t,c}function WZe(e,t,i,n){const s=e.width,l=e.height;return function(c){const r=c.datum.datum.items[n].items,a=r.length,u=c.datum.fontSize,o=ks.width(c.datum,c.datum.text);let d=0,b,h,p,Z,X,J,V;for(let g=0;g<a;++g)b=r[g].x,p=r[g].y,h=r[g].x2===void 0?b:r[g].x2,Z=r[g].y2===void 0?p:r[g].y2,X=(b+h)/2,J=(p+Z)/2,V=Math.abs(h-b+Z-p),V>=d&&(d=V,c.x=X,c.y=J);return X=o/2,J=u/2,b=c.x-X,h=c.x+X,p=c.y-J,Z=c.y+J,c.align="center",b<0&&h<=s?c.align="left":0<=b&&s<h&&(c.align="right"),c.baseline="middle",p<0&&Z<=l?c.baseline="top":0<=p&&l<Z&&(c.baseline="bottom"),!0}}function bX(e,t,i,n,s,l){let c=i/2;return e-c<0||e+c>s||t-(c=n/2)<0||t+c>l}function Ea(e,t,i,n,s,l,c,r){const a=s*l/(n*2),u=e(t-a),o=e(t+a),d=e(i-(l=l/2)),b=e(i+l);return c.outOfBounds(u,d,o,b)||c.getRange(u,d,o,b)||r&&r.getRange(u,d,o,b)}function XZe(e,t,i,n){const s=e.width,l=e.height,c=t[0],r=t[1];function a(u,o,d,b,h){const p=e.invert(u),Z=e.invert(o);let X=d,J=l,V;if(!bX(p,Z,b,h,s,l)&&!Ea(e,p,Z,h,b,X,c,r)&&!Ea(e,p,Z,h,b,h,c,null)){for(;J-X>=1;)V=(X+J)/2,Ea(e,p,Z,h,b,V,c,r)?J=V:X=V;if(X>d)return[p,Z,X,!0]}}return function(u){const o=u.datum.datum.items[n].items,d=o.length,b=u.datum.fontSize,h=ks.width(u.datum,u.datum.text);let p=i?b:0,Z=!1,X=!1,J=0,V,g,I,v,k,N,C,f,w,x,R,K,B,_,j,U,$;for(let te=0;te<d;++te){for(V=o[te].x,I=o[te].y,g=o[te].x2===void 0?V:o[te].x2,v=o[te].y2===void 0?I:o[te].y2,V>g&&($=V,V=g,g=$),I>v&&($=I,I=v,v=$),w=e(V),R=e(g),x=~~((w+R)/2),K=e(I),_=e(v),B=~~((K+_)/2),C=x;C>=w;--C)for(f=B;f>=K;--f)U=a(C,f,p,h,b),U&&([u.x,u.y,p,Z]=U);for(C=x;C<=R;++C)for(f=B;f<=_;++f)U=a(C,f,p,h,b),U&&([u.x,u.y,p,Z]=U);!Z&&!i&&(j=Math.abs(g-V+v-I),k=(V+g)/2,N=(I+v)/2,j>=J&&!bX(k,N,h,b,s,l)&&!Ea(e,k,N,b,h,b,c,null)&&(J=j,u.x=k,u.y=N,X=!0))}return Z||X?(k=h/2,N=b/2,c.setRange(e(u.x-k),e(u.y-N),e(u.x+k),e(u.y+N)),u.align="center",u.baseline="middle",!0):!1}}const JZe=[-1,-1,1,1],xZe=[-1,1,-1,1];function YZe(e,t,i,n){const s=e.width,l=e.height,c=t[0],r=t[1],a=e.bitmap();return function(u){const o=u.datum.datum.items[n].items,d=o.length,b=u.datum.fontSize,h=ks.width(u.datum,u.datum.text),p=[];let Z=i?b:0,X=!1,J=!1,V=0,g,I,v,k,N,C,f,w,x,R,K,B;for(let _=0;_<d;++_){for(g=o[_].x,v=o[_].y,I=o[_].x2===void 0?g:o[_].x2,k=o[_].y2===void 0?v:o[_].y2,p.push([e((g+I)/2),e((v+k)/2)]);p.length;)if([f,w]=p.pop(),!(c.get(f,w)||r.get(f,w)||a.get(f,w))){a.set(f,w);for(let j=0;j<4;++j)N=f+JZe[j],C=w+xZe[j],a.outOfBounds(N,C,N,C)||p.push([N,C]);if(N=e.invert(f),C=e.invert(w),x=Z,R=l,!bX(N,C,h,b,s,l)&&!Ea(e,N,C,b,h,x,c,r)&&!Ea(e,N,C,b,h,b,c,null)){for(;R-x>=1;)K=(x+R)/2,Ea(e,N,C,b,h,K,c,r)?R=K:x=K;x>Z&&(u.x=N,u.y=C,Z=x,X=!0)}}!X&&!i&&(B=Math.abs(I-g+k-v),N=(g+I)/2,C=(v+k)/2,B>=V&&!bX(N,C,h,b,s,l)&&!Ea(e,N,C,b,h,b,c,null)&&(V=B,u.x=N,u.y=C,J=!0))}return X||J?(N=h/2,C=b/2,c.setRange(e(u.x-N),e(u.y-C),e(u.x+N),e(u.y+C)),u.align="center",u.baseline="middle",!0):!1}}const GZe=["right","center","left"],VZe=["bottom","middle","top"];function IZe(e,t,i,n){const s=e.width,l=e.height,c=t[0],r=t[1],a=n.length;return function(u){const o=u.boundary,d=u.datum.fontSize;if(o[2]<0||o[5]<0||o[0]>s||o[3]>l)return!1;let b=u.textWidth??0,h,p,Z,X,J,V,g,I,v,k,N,C,f,w,x;for(let R=0;R<a;++R){if(h=(i[R]&3)-1,p=(i[R]>>>2&3)-1,Z=h===0&&p===0||n[R]<0,X=h&&p?Math.SQRT1_2:1,J=n[R]<0?-1:1,V=o[1+h]+n[R]*h*X,N=o[4+p]+J*d*p/2+n[R]*p*X,I=N-d/2,v=N+d/2,C=e(V),w=e(I),x=e(v),!b)if(LF(C,C,w,x,c,r,V,V,I,v,o,Z))b=ks.width(u.datum,u.datum.text);else continue;if(k=V+J*b*h/2,V=k-b/2,g=k+b/2,C=e(V),f=e(g),LF(C,f,w,x,c,r,V,g,I,v,o,Z))return u.x=h?h*J<0?g:V:k,u.y=p?p*J<0?v:I:N,u.align=GZe[h*J+1],u.baseline=VZe[p*J+1],c.setRange(C,w,f,x),!0}return!1}}function LF(e,t,i,n,s,l,c,r,a,u,o,d){return!(s.outOfBounds(e,i,t,n)||(d&&l||s).getRange(e,i,t,n))}const qx=0,eY=4,tY=8,iY=0,nY=1,sY=2,gZe={"top-left":qx+iY,top:qx+nY,"top-right":qx+sY,left:eY+iY,middle:eY+nY,right:eY+sY,"bottom-left":tY+iY,bottom:tY+nY,"bottom-right":tY+sY},vZe={naive:WZe,"reduced-search":XZe,floodfill:YZe};function zZe(e,t,i,n,s,l,c,r,a,u,o){if(!e.length)return e;const d=Math.max(n.length,s.length),b=wZe(n,d),h=HZe(s,d),p=NZe(e[0].datum),Z=p==="group"&&e[0].datum.items[a].marktype,X=Z==="area",J=RZe(p,Z,r,a),V=u===null||u===1/0,g=X&&o==="naive";let I=-1,v=-1;const k=e.map(w=>{const x=V?ks.width(w,w.text):void 0;return I=Math.max(I,x),v=Math.max(v,w.fontSize),{datum:w,opacity:0,x:void 0,y:void 0,align:void 0,baseline:void 0,boundary:J(w),textWidth:x}});u=u===null||u===1/0?Math.max(I,v)+Math.max(...n):u;const N=ZZe(t[0],t[1],u);let C;if(!g){i&&k.sort((R,K)=>i(R.datum,K.datum));let w=!1;for(let R=0;R<h.length&&!w;++R)w=h[R]===5||b[R]<0;const x=(p&&c||X)&&e.map(R=>R.datum);C=l.length||x?fZe(N,x||[],l,w,X):hZe(N,c&&k)}const f=X?vZe[o](N,C,c,a):IZe(N,C,h,b);return k.forEach(w=>w.opacity=+f(w)),k}function wZe(e,t){const i=new Float64Array(t),n=e.length;for(let s=0;s<n;++s)i[s]=e[s]||0;for(let s=n;s<t;++s)i[s]=i[n-1];return i}function HZe(e,t){const i=new Int8Array(t),n=e.length;for(let s=0;s<n;++s)i[s]|=gZe[e[s]];for(let s=n;s<t;++s)i[s]=i[n-1];return i}function NZe(e){return e&&e.mark&&e.mark.marktype}function RZe(e,t,i,n){const s=l=>[l.x,l.x,l.x,l.y,l.y,l.y];return e?e==="line"||e==="area"?l=>s(l.datum):t==="line"?l=>{const c=l.datum.items[n].items;return s(c.length?c[i==="start"?0:c.length-1]:{x:NaN,y:NaN})}:l=>{const c=l.datum.bounds;return[c.x1,(c.x1+c.x2)/2,c.x2,c.y1,(c.y1+c.y2)/2,c.y2]}:s}const dV=["x","y","opacity","align","baseline"],wP=["top-left","left","bottom-left","top","bottom","top-right","right","bottom-right"];function Dg(e){ue.call(this,null,e)}Dg.Definition={type:"Label",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"sort",type:"compare"},{name:"anchor",type:"string",array:!0,default:wP},{name:"offset",type:"number",array:!0,default:[1]},{name:"padding",type:"number",default:0,null:!0},{name:"lineAnchor",type:"string",values:["start","end"],default:"end"},{name:"markIndex",type:"number",default:0},{name:"avoidBaseMark",type:"boolean",default:!0},{name:"avoidMarks",type:"data",array:!0},{name:"method",type:"string",default:"naive"},{name:"as",type:"string",array:!0,length:dV.length,default:dV}]};ge(Dg,ue,{transform(e,t){function i(l){const c=e[l];return ct(c)&&t.modified(c.fields)}const n=e.modified();if(!(n||t.changed(t.ADD_REM)||i("sort")))return;(!e.size||e.size.length!==2)&&me("Size parameter should be specified as a [width, height] array.");const s=e.as||dV;return zZe(t.materialize(t.SOURCE).source||[],e.size,e.sort,Ne(e.offset==null?1:e.offset),Ne(e.anchor||wP),e.avoidMarks||[],e.avoidBaseMark!==!1,e.lineAnchor||"end",e.markIndex||0,e.padding===void 0?0:e.padding,e.method||"naive").forEach(l=>{const c=l.datum;c[s[0]]=l.x,c[s[1]]=l.y,c[s[2]]=l.opacity,c[s[3]]=l.align,c[s[4]]=l.baseline}),t.reflow(n).modifies(s)}});const kZe=Object.freeze(Object.defineProperty({__proto__:null,label:Dg},Symbol.toStringTag,{value:"Module"}));function HP(e,t){var i=[],n=function(o){return o(r)},s,l,c,r,a,u;if(t==null)i.push(e);else for(s={},l=0,c=e.length;l<c;++l)r=e[l],a=t.map(n),u=s[a],u||(s[a]=u=[],u.dims=a,i.push(u)),u.push(r);return i}function Ag(e){ue.call(this,null,e)}Ag.Definition={type:"Loess",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"bandwidth",type:"number",default:.3},{name:"as",type:"string",array:!0}]};ge(Ag,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){const n=t.materialize(t.SOURCE).source,s=HP(n,e.groupby),l=(e.groupby||[]).map(Zi),c=l.length,r=e.as||[Zi(e.x),Zi(e.y)],a=[];s.forEach(u=>{gO(u,e.x,e.y,e.bandwidth||.3).forEach(o=>{const d={};for(let b=0;b<c;++b)d[l[b]]=u.dims[b];d[r[0]]=o[0],d[r[1]]=o[1],a.push(Rt(d))})}),this.value&&(i.rem=this.value),this.value=i.add=i.source=a}return i}});const mV={constant:q3,linear:e5,log:YO,exp:GO,pow:VO,quad:t5,poly:IO},FZe=(e,t)=>e==="poly"?t:e==="quad"?2:1;function qg(e){ue.call(this,null,e)}qg.Definition={type:"Regression",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"string",default:"linear",values:Object.keys(mV)},{name:"order",type:"number",default:3},{name:"extent",type:"number",array:!0,length:2},{name:"params",type:"boolean",default:!1},{name:"as",type:"string",array:!0}]};ge(qg,ue,{transform(e,t){const i=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){const n=t.materialize(t.SOURCE).source,s=HP(n,e.groupby),l=(e.groupby||[]).map(Zi),c=e.method||"linear",r=e.order==null?3:e.order,a=FZe(c,r),u=e.as||[Zi(e.x),Zi(e.y)],o=mV[c],d=[];let b=e.extent;Re(mV,c)||me("Invalid regression method: "+c),b!=null&&c==="log"&&b[0]<=0&&(t.dataflow.warn("Ignoring extent with values <= 0 for log regression."),b=null),s.forEach(h=>{if(h.length<=a){t.dataflow.warn("Skipping regression with more parameters than data points.");return}const Z=o(h,e.x,e.y,r);if(e.params){d.push(Rt({keys:h.dims,coef:Z.coef,rSquared:Z.rSquared}));return}const X=b||Qc(h,e.x),J=V=>{const g={};for(let I=0;I<l.length;++I)g[l[I]]=h.dims[I];g[u[0]]=V[0],g[u[1]]=V[1],d.push(Rt(g))};c==="linear"||c==="constant"?X.forEach(V=>J([V,Z.predict(V)])):H2(Z.predict,X,25,200).forEach(J)}),this.value&&(i.rem=this.value),this.value=i.add=i.source=d}return i}});const SZe=Object.freeze(Object.defineProperty({__proto__:null,loess:Ag,regression:qg},Symbol.toStringTag,{value:"Module"})),_r=11102230246251565e-32,mn=134217729,LZe=(3+8*_r)*_r;function lY(e,t,i,n,s){let l,c,r,a,u=t[0],o=n[0],d=0,b=0;o>u==o>-u?(l=u,u=t[++d]):(l=o,o=n[++b]);let h=0;if(d<e&&b<i)for(o>u==o>-u?(c=u+l,r=l-(c-u),u=t[++d]):(c=o+l,r=l-(c-o),o=n[++b]),l=c,r!==0&&(s[h++]=r);d<e&&b<i;)o>u==o>-u?(c=l+u,a=c-l,r=l-(c-a)+(u-a),u=t[++d]):(c=l+o,a=c-l,r=l-(c-a)+(o-a),o=n[++b]),l=c,r!==0&&(s[h++]=r);for(;d<e;)c=l+u,a=c-l,r=l-(c-a)+(u-a),u=t[++d],l=c,r!==0&&(s[h++]=r);for(;b<i;)c=l+o,a=c-l,r=l-(c-a)+(o-a),o=n[++b],l=c,r!==0&&(s[h++]=r);return(l!==0||h===0)&&(s[h++]=l),h}function CZe(e,t){let i=t[0];for(let n=1;n<e;n++)i+=t[n];return i}function r0(e){return new Float64Array(e)}const TZe=(3+16*_r)*_r,MZe=(2+12*_r)*_r,KZe=(9+64*_r)*_r*_r,_d=r0(4),CF=r0(8),TF=r0(12),MF=r0(16),Hn=r0(4);function BZe(e,t,i,n,s,l,c){let r,a,u,o,d,b,h,p,Z,X,J,V,g,I,v,k,N,C;const f=e-s,w=i-s,x=t-l,R=n-l;I=f*R,b=mn*f,h=b-(b-f),p=f-h,b=mn*R,Z=b-(b-R),X=R-Z,v=p*X-(I-h*Z-p*Z-h*X),k=x*w,b=mn*x,h=b-(b-x),p=x-h,b=mn*w,Z=b-(b-w),X=w-Z,N=p*X-(k-h*Z-p*Z-h*X),J=v-N,d=v-J,_d[0]=v-(J+d)+(d-N),V=I+J,d=V-I,g=I-(V-d)+(J-d),J=g-k,d=g-J,_d[1]=g-(J+d)+(d-k),C=V+J,d=C-V,_d[2]=V-(C-d)+(J-d),_d[3]=C;let K=CZe(4,_d),B=MZe*c;if(K>=B||-K>=B||(d=e-f,r=e-(f+d)+(d-s),d=i-w,u=i-(w+d)+(d-s),d=t-x,a=t-(x+d)+(d-l),d=n-R,o=n-(R+d)+(d-l),r===0&&a===0&&u===0&&o===0)||(B=KZe*c+LZe*Math.abs(K),K+=f*o+R*r-(x*u+w*a),K>=B||-K>=B))return K;I=r*R,b=mn*r,h=b-(b-r),p=r-h,b=mn*R,Z=b-(b-R),X=R-Z,v=p*X-(I-h*Z-p*Z-h*X),k=a*w,b=mn*a,h=b-(b-a),p=a-h,b=mn*w,Z=b-(b-w),X=w-Z,N=p*X-(k-h*Z-p*Z-h*X),J=v-N,d=v-J,Hn[0]=v-(J+d)+(d-N),V=I+J,d=V-I,g=I-(V-d)+(J-d),J=g-k,d=g-J,Hn[1]=g-(J+d)+(d-k),C=V+J,d=C-V,Hn[2]=V-(C-d)+(J-d),Hn[3]=C;const _=lY(4,_d,4,Hn,CF);I=f*o,b=mn*f,h=b-(b-f),p=f-h,b=mn*o,Z=b-(b-o),X=o-Z,v=p*X-(I-h*Z-p*Z-h*X),k=x*u,b=mn*x,h=b-(b-x),p=x-h,b=mn*u,Z=b-(b-u),X=u-Z,N=p*X-(k-h*Z-p*Z-h*X),J=v-N,d=v-J,Hn[0]=v-(J+d)+(d-N),V=I+J,d=V-I,g=I-(V-d)+(J-d),J=g-k,d=g-J,Hn[1]=g-(J+d)+(d-k),C=V+J,d=C-V,Hn[2]=V-(C-d)+(J-d),Hn[3]=C;const j=lY(_,CF,4,Hn,TF);I=r*o,b=mn*r,h=b-(b-r),p=r-h,b=mn*o,Z=b-(b-o),X=o-Z,v=p*X-(I-h*Z-p*Z-h*X),k=a*u,b=mn*a,h=b-(b-a),p=a-h,b=mn*u,Z=b-(b-u),X=u-Z,N=p*X-(k-h*Z-p*Z-h*X),J=v-N,d=v-J,Hn[0]=v-(J+d)+(d-N),V=I+J,d=V-I,g=I-(V-d)+(J-d),J=g-k,d=g-J,Hn[1]=g-(J+d)+(d-k),C=V+J,d=C-V,Hn[2]=V-(C-d)+(J-d),Hn[3]=C;const U=lY(j,TF,4,Hn,MF);return MF[U-1]}function Ty(e,t,i,n,s,l){const c=(t-l)*(i-s),r=(e-s)*(n-l),a=c-r,u=Math.abs(c+r);return Math.abs(a)>=TZe*u?a:-BZe(e,t,i,n,s,l,u)}const KF=Math.pow(2,-52),My=new Uint32Array(512);class hX{static from(t,i=PZe,n=UZe){const s=t.length,l=new Float64Array(s*2);for(let c=0;c<s;c++){const r=t[c];l[2*c]=i(r),l[2*c+1]=n(r)}return new hX(l)}constructor(t){const i=t.length>>1;if(i>0&&typeof t[0]!="number")throw new Error("Expected coords to contain numbers.");this.coords=t;const n=Math.max(2*i-5,0);this._triangles=new Uint32Array(n*3),this._halfedges=new Int32Array(n*3),this._hashSize=Math.ceil(Math.sqrt(i)),this._hullPrev=new Uint32Array(i),this._hullNext=new Uint32Array(i),this._hullTri=new Uint32Array(i),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(i),this._dists=new Float64Array(i),this.trianglesLen=0,this._cx=0,this._cy=0,this._hullStart=0,this.hull=this._triangles,this.triangles=this._triangles,this.halfedges=this._halfedges,this.update()}update(){const{coords:t,_hullPrev:i,_hullNext:n,_hullTri:s,_hullHash:l}=this,c=t.length>>1;let r=1/0,a=1/0,u=-1/0,o=-1/0;for(let f=0;f<c;f++){const w=t[2*f],x=t[2*f+1];w<r&&(r=w),x<a&&(a=x),w>u&&(u=w),x>o&&(o=x),this._ids[f]=f}const d=(r+u)/2,b=(a+o)/2;let h=0,p=0,Z=0;for(let f=0,w=1/0;f<c;f++){const x=cY(d,b,t[2*f],t[2*f+1]);x<w&&(h=f,w=x)}const X=t[2*h],J=t[2*h+1];for(let f=0,w=1/0;f<c;f++){if(f===h)continue;const x=cY(X,J,t[2*f],t[2*f+1]);x<w&&x>0&&(p=f,w=x)}let V=t[2*p],g=t[2*p+1],I=1/0;for(let f=0;f<c;f++){if(f===h||f===p)continue;const w=jZe(X,J,V,g,t[2*f],t[2*f+1]);w<I&&(Z=f,I=w)}let v=t[2*Z],k=t[2*Z+1];if(I===1/0){for(let x=0;x<c;x++)this._dists[x]=t[2*x]-t[0]||t[2*x+1]-t[1];am(this._ids,this._dists,0,c-1);const f=new Uint32Array(c);let w=0;for(let x=0,R=-1/0;x<c;x++){const K=this._ids[x],B=this._dists[K];B>R&&(f[w++]=K,R=B)}this.hull=f.subarray(0,w),this.triangles=new Uint32Array(0),this.halfedges=new Int32Array(0);return}if(Ty(X,J,V,g,v,k)<0){const f=p,w=V,x=g;p=Z,V=v,g=k,Z=f,v=w,k=x}const N=EZe(X,J,V,g,v,k);this._cx=N.x,this._cy=N.y;for(let f=0;f<c;f++)this._dists[f]=cY(t[2*f],t[2*f+1],N.x,N.y);am(this._ids,this._dists,0,c-1),this._hullStart=h;let C=3;n[h]=i[Z]=p,n[p]=i[h]=Z,n[Z]=i[p]=h,s[h]=0,s[p]=1,s[Z]=2,l.fill(-1),l[this._hashKey(X,J)]=h,l[this._hashKey(V,g)]=p,l[this._hashKey(v,k)]=Z,this.trianglesLen=0,this._addTriangle(h,p,Z,-1,-1,-1);for(let f=0,w=0,x=0;f<this._ids.length;f++){const R=this._ids[f],K=t[2*R],B=t[2*R+1];if(f>0&&Math.abs(K-w)<=KF&&Math.abs(B-x)<=KF||(w=K,x=B,R===h||R===p||R===Z))continue;let _=0;for(let E=0,ie=this._hashKey(K,B);E<this._hashSize&&(_=l[(ie+E)%this._hashSize],!(_!==-1&&_!==n[_]));E++);_=i[_];let j=_,U;for(;U=n[j],Ty(K,B,t[2*j],t[2*j+1],t[2*U],t[2*U+1])>=0;)if(j=U,j===_){j=-1;break}if(j===-1)continue;let $=this._addTriangle(j,R,n[j],-1,-1,s[j]);s[R]=this._legalize($+2),s[j]=$,C++;let te=n[j];for(;U=n[te],Ty(K,B,t[2*te],t[2*te+1],t[2*U],t[2*U+1])<0;)$=this._addTriangle(te,R,U,s[R],-1,s[te]),s[R]=this._legalize($+2),n[te]=te,C--,te=U;if(j===_)for(;U=i[j],Ty(K,B,t[2*U],t[2*U+1],t[2*j],t[2*j+1])<0;)$=this._addTriangle(U,R,j,-1,s[j],s[U]),this._legalize($+2),s[U]=$,n[j]=j,C--,j=U;this._hullStart=i[R]=j,n[j]=i[te]=R,n[R]=te,l[this._hashKey(K,B)]=R,l[this._hashKey(t[2*j],t[2*j+1])]=j}this.hull=new Uint32Array(C);for(let f=0,w=this._hullStart;f<C;f++)this.hull[f]=w,w=n[w];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,i){return Math.floor(_Ze(t-this._cx,i-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:i,_halfedges:n,coords:s}=this;let l=0,c=0;for(;;){const r=n[t],a=t-t%3;if(c=a+(t+2)%3,r===-1){if(l===0)break;t=My[--l];continue}const u=r-r%3,o=a+(t+1)%3,d=u+(r+2)%3,b=i[c],h=i[t],p=i[o],Z=i[d];if(OZe(s[2*b],s[2*b+1],s[2*h],s[2*h+1],s[2*p],s[2*p+1],s[2*Z],s[2*Z+1])){i[t]=Z,i[r]=b;const J=n[d];if(J===-1){let g=this._hullStart;do{if(this._hullTri[g]===d){this._hullTri[g]=t;break}g=this._hullPrev[g]}while(g!==this._hullStart)}this._link(t,J),this._link(r,n[c]),this._link(c,d);const V=u+(r+1)%3;l<My.length&&(My[l++]=V)}else{if(l===0)break;t=My[--l]}}return c}_link(t,i){this._halfedges[t]=i,i!==-1&&(this._halfedges[i]=t)}_addTriangle(t,i,n,s,l,c){const r=this.trianglesLen;return this._triangles[r]=t,this._triangles[r+1]=i,this._triangles[r+2]=n,this._link(r,s),this._link(r+1,l),this._link(r+2,c),this.trianglesLen+=3,r}}function _Ze(e,t){const i=e/(Math.abs(e)+Math.abs(t));return(t>0?3-i:1+i)/4}function cY(e,t,i,n){const s=e-i,l=t-n;return s*s+l*l}function OZe(e,t,i,n,s,l,c,r){const a=e-c,u=t-r,o=i-c,d=n-r,b=s-c,h=l-r,p=a*a+u*u,Z=o*o+d*d,X=b*b+h*h;return a*(d*X-Z*h)-u*(o*X-Z*b)+p*(o*h-d*b)<0}function jZe(e,t,i,n,s,l){const c=i-e,r=n-t,a=s-e,u=l-t,o=c*c+r*r,d=a*a+u*u,b=.5/(c*u-r*a),h=(u*o-r*d)*b,p=(c*d-a*o)*b;return h*h+p*p}function EZe(e,t,i,n,s,l){const c=i-e,r=n-t,a=s-e,u=l-t,o=c*c+r*r,d=a*a+u*u,b=.5/(c*u-r*a),h=e+(u*o-r*d)*b,p=t+(c*d-a*o)*b;return{x:h,y:p}}function am(e,t,i,n){if(n-i<=20)for(let s=i+1;s<=n;s++){const l=e[s],c=t[l];let r=s-1;for(;r>=i&&t[e[r]]>c;)e[r+1]=e[r--];e[r+1]=l}else{const s=i+n>>1;let l=i+1,c=n;Wh(e,s,l),t[e[i]]>t[e[n]]&&Wh(e,i,n),t[e[l]]>t[e[n]]&&Wh(e,l,n),t[e[i]]>t[e[l]]&&Wh(e,i,l);const r=e[l],a=t[r];for(;;){do l++;while(t[e[l]]<a);do c--;while(t[e[c]]>a);if(c<l)break;Wh(e,l,c)}e[i+1]=e[c],e[c]=r,n-l+1>=c-i?(am(e,t,l,n),am(e,t,i,c-1)):(am(e,t,i,c-1),am(e,t,l,n))}}function Wh(e,t,i){const n=e[t];e[t]=e[i],e[i]=n}function PZe(e){return e[0]}function UZe(e){return e[1]}const BF=1e-6;class hu{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,i){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,i){this._+=`L${this._x1=+t},${this._y1=+i}`}arc(t,i,n){t=+t,i=+i,n=+n;const s=t+n,l=i;if(n<0)throw new Error("negative radius");this._x1===null?this._+=`M${s},${l}`:(Math.abs(this._x1-s)>BF||Math.abs(this._y1-l)>BF)&&(this._+="L"+s+","+l),n&&(this._+=`A${n},${n}
47,0,1,1,${t-n},${i}A${n},${n},0,1,1,${this._x1=s},${this._y1=l}`)}rect(t,i,n,s){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}h${+n}v${+s}h${-n}Z`}value(){return this._||null}}class bV{constructor(){this._=[]}moveTo(t,i){this._.push([t,i])}closePath(){this._.push(this._[0].slice())}lineTo(t,i){this._.push([t,i])}value(){return this._.length?this._:null}}let $Ze=class{constructor(t,[i,n,s,l]=[0,0,960,500]){if(!((s=+s)>=(i=+i))||!((l=+l)>=(n=+n)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(t.points.length*2),this.vectors=new Float64Array(t.points.length*2),this.xmax=s,this.xmin=i,this.ymax=l,this.ymin=n,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:i,triangles:n},vectors:s}=this;let l,c;const r=this.circumcenters=this._circumcenters.subarray(0,n.length/3*2);for(let Z=0,X=0,J=n.length,V,g;Z<J;Z+=3,X+=2){const I=n[Z]*2,v=n[Z+1]*2,k=n[Z+2]*2,N=t[I],C=t[I+1],f=t[v],w=t[v+1],x=t[k],R=t[k+1],K=f-N,B=w-C,_=x-N,j=R-C,U=(K*j-B*_)*2;if(Math.abs(U)<1e-9){if(l===void 0){l=c=0;for(const te of i)l+=t[te*2],c+=t[te*2+1];l/=i.length,c/=i.length}const $=1e9*Math.sign((l-N)*j-(c-C)*_);V=(N+x)/2-$*j,g=(C+R)/2+$*_}else{const $=1/U,te=K*K+B*B,E=_*_+j*j;V=N+(j*te-B*E)*$,g=C+(K*E-_*te)*$}r[X]=V,r[X+1]=g}let a=i[i.length-1],u,o=a*4,d,b=t[2*a],h,p=t[2*a+1];s.fill(0);for(let Z=0;Z<i.length;++Z)a=i[Z],u=o,d=b,h=p,o=a*4,b=t[2*a],p=t[2*a+1],s[u+2]=s[o]=h-p,s[u+3]=s[o+1]=b-d}render(t){const i=t==null?t=new hu:void 0,{delaunay:{halfedges:n,inedges:s,hull:l},circumcenters:c,vectors:r}=this;if(l.length<=1)return null;for(let o=0,d=n.length;o<d;++o){const b=n[o];if(b<o)continue;const h=Math.floor(o/3)*2,p=Math.floor(b/3)*2,Z=c[h],X=c[h+1],J=c[p],V=c[p+1];this._renderSegment(Z,X,J,V,t)}let a,u=l[l.length-1];for(let o=0;o<l.length;++o){a=u,u=l[o];const d=Math.floor(s[u]/3)*2,b=c[d],h=c[d+1],p=a*4,Z=this._project(b,h,r[p+2],r[p+3]);Z&&this._renderSegment(b,h,Z[0],Z[1],t)}return i&&i.value()}renderBounds(t){const i=t==null?t=new hu:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),i&&i.value()}renderCell(t,i){const n=i==null?i=new hu:void 0,s=this._clip(t);if(s===null||!s.length)return;i.moveTo(s[0],s[1]);let l=s.length;for(;s[0]===s[l-2]&&s[1]===s[l-1]&&l>1;)l-=2;for(let c=2;c<l;c+=2)(s[c]!==s[c-2]||s[c+1]!==s[c-1])&&i.lineTo(s[c],s[c+1]);return i.closePath(),n&&n.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let i=0,n=t.length/2;i<n;++i){const s=this.cellPolygon(i);s&&(s.index=i,yield s)}}cellPolygon(t){const i=new bV;return this.renderCell(t,i),i.value()}_renderSegment(t,i,n,s,l){let c;const r=this._regioncode(t,i),a=this._regioncode(n,s);r===0&&a===0?(l.moveTo(t,i),l.lineTo(n,s)):(c=this._clipSegment(t,i,n,s,r,a))&&(l.moveTo(c[0],c[1]),l.lineTo(c[2],c[3]))}contains(t,i,n){return i=+i,i!==i||(n=+n,n!==n)?!1:this.delaunay._step(t,i,n)===t}*neighbors(t){const i=this._clip(t);if(i)for(const n of this.delaunay.neighbors(t)){const s=this._clip(n);if(s){e:for(let l=0,c=i.length;l<c;l+=2)for(let r=0,a=s.length;r<a;r+=2)if(i[l]===s[r]&&i[l+1]===s[r+1]&&i[(l+2)%c]===s[(r+a-2)%a]&&i[(l+3)%c]===s[(r+a-1)%a]){yield n;break e}}}}_cell(t){const{circumcenters:i,delaunay:{inedges:n,halfedges:s,triangles:l}}=this,c=n[t];if(c===-1)return null;const r=[];let a=c;do{const u=Math.floor(a/3);if(r.push(i[u*2],i[u*2+1]),a=a%3===2?a-2:a+1,l[a]!==t)break;a=s[a]}while(a!==c&&a!==-1);return r}_clip(t){if(t===0&&this.delaunay.hull.length===1)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const i=this._cell(t);if(i===null)return null;const{vectors:n}=this,s=t*4;return this._simplify(n[s]||n[s+1]?this._clipInfinite(t,i,n[s],n[s+1],n[s+2],n[s+3]):this._clipFinite(t,i))}_clipFinite(t,i){const n=i.length;let s=null,l,c,r=i[n-2],a=i[n-1],u,o=this._regioncode(r,a),d,b=0;for(let h=0;h<n;h+=2)if(l=r,c=a,r=i[h],a=i[h+1],u=o,o=this._regioncode(r,a),u===0&&o===0)d=b,b=0,s?s.push(r,a):s=[r,a];else{let p,Z,X,J,V;if(u===0){if((p=this._clipSegment(l,c,r,a,u,o))===null)continue;[Z,X,J,V]=p}else{if((p=this._clipSegment(r,a,l,c,o,u))===null)continue;
vendor: 22,947 bytes, line 47
47[J,V,Z,X]=p,d=b,b=this._edgecode(Z,X),d&&b&&this._edge(t,d,b,s,s.length),s?s.push(Z,X):s=[Z,X]}d=b,b=this._edgecode(J,V),d&&b&&this._edge(t,d,b,s,s.length),s?s.push(J,V):s=[J,V]}if(s)d=b,b=this._edgecode(s[0],s[1]),d&&b&&this._edge(t,d,b,s,s.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return s}_clipSegment(t,i,n,s,l,c){const r=l<c;for(r&&([t,i,n,s,l,c]=[n,s,t,i,c,l]);;){if(l===0&&c===0)return r?[n,s,t,i]:[t,i,n,s];if(l&c)return null;let a,u,o=l||c;o&8?(a=t+(n-t)*(this.ymax-i)/(s-i),u=this.ymax):o&4?(a=t+(n-t)*(this.ymin-i)/(s-i),u=this.ymin):o&2?(u=i+(s-i)*(this.xmax-t)/(n-t),a=this.xmax):(u=i+(s-i)*(this.xmin-t)/(n-t),a=this.xmin),l?(t=a,i=u,l=this._regioncode(t,i)):(n=a,s=u,c=this._regioncode(n,s))}}_clipInfinite(t,i,n,s,l,c){let r=Array.from(i),a;if((a=this._project(r[0],r[1],n,s))&&r.unshift(a[0],a[1]),(a=this._project(r[r.length-2],r[r.length-1],l,c))&&r.push(a[0],a[1]),r=this._clipFinite(t,r))for(let u=0,o=r.length,d,b=this._edgecode(r[o-2],r[o-1]);u<o;u+=2)d=b,b=this._edgecode(r[u],r[u+1]),d&&b&&(u=this._edge(t,d,b,r,u),o=r.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(r=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return r}_edge(t,i,n,s,l){for(;i!==n;){let c,r;switch(i){case 5:i=4;continue;case 4:i=6,c=this.xmax,r=this.ymin;break;case 6:i=2;continue;case 2:i=10,c=this.xmax,r=this.ymax;break;case 10:i=8;continue;case 8:i=9,c=this.xmin,r=this.ymax;break;case 9:i=1;continue;case 1:i=5,c=this.xmin,r=this.ymin;break}(s[l]!==c||s[l+1]!==r)&&this.contains(t,c,r)&&(s.splice(l,0,c,r),l+=2)}return l}_project(t,i,n,s){let l=1/0,c,r,a;if(s<0){if(i<=this.ymin)return null;(c=(this.ymin-i)/s)<l&&(a=this.ymin,r=t+(l=c)*n)}else if(s>0){if(i>=this.ymax)return null;(c=(this.ymax-i)/s)<l&&(a=this.ymax,r=t+(l=c)*n)}if(n>0){if(t>=this.xmax)return null;(c=(this.xmax-t)/n)<l&&(r=this.xmax,a=i+(l=c)*s)}else if(n<0){if(t<=this.xmin)return null;(c=(this.xmin-t)/n)<l&&(r=this.xmin,a=i+(l=c)*s)}return[r,a]}_edgecode(t,i){return(t===this.xmin?1:t===this.xmax?2:0)|(i===this.ymin?4:i===this.ymax?8:0)}_regioncode(t,i){return(t<this.xmin?1:t>this.xmax?2:0)|(i<this.ymin?4:i>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let i=0;i<t.length;i+=2){const n=(i+2)%t.length,s=(i+4)%t.length;(t[i]===t[n]&&t[n]===t[s]||t[i+1]===t[n+1]&&t[n+1]===t[s+1])&&(t.splice(n,2),i-=2)}t.length||(t=null)}return t}};const QZe=2*Math.PI,Od=Math.pow;function DZe(e){return e[0]}function AZe(e){return e[1]}function qZe(e){const{triangles:t,coords:i}=e;for(let n=0;n<t.length;n+=3){const s=2*t[n],l=2*t[n+1],c=2*t[n+2];if((i[c]-i[s])*(i[l+1]-i[s+1])-(i[l]-i[s])*(i[c+1]-i[s+1])>1e-10)return!1}return!0}function eWe(e,t,i){return[e+Math.sin(e+t)*i,t+Math.cos(e-t)*i]}class ev{static from(t,i=DZe,n=AZe,s){return new ev("length"in t?tWe(t,i,n,s):Float64Array.from(iWe(t,i,n,s)))}constructor(t){this._delaunator=new hX(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,i=this.points;if(t.hull&&t.hull.length>2&&qZe(t)){this.collinear=Int32Array.from({length:i.length/2},(b,h)=>h).sort((b,h)=>i[2*b]-i[2*h]||i[2*b+1]-i[2*h+1]);const a=this.collinear[0],u=this.collinear[this.collinear.length-1],o=[i[2*a],i[2*a+1],i[2*u],i[2*u+1]],d=1e-8*Math.hypot(o[3]-o[1],o[2]-o[0]);for(let b=0,h=i.length/2;b<h;++b){const p=eWe(i[2*b],i[2*b+1],d);i[2*b]=p[0],i[2*b+1]=p[1]}this._delaunator=new hX(i)}else delete this.collinear;const n=this.halfedges=this._delaunator.halfedges,s=this.hull=this._delaunator.hull,l=this.triangles=this._delaunator.triangles,c=this.inedges.fill(-1),r=this._hullIndex.fill(-1);for(let a=0,u=n.length;a<u;++a){const o=l[a%3===2?a-2:a+1];(n[a]===-1||c[o]===-1)&&(c[o]=a)}for(let a=0,u=s.length;a<u;++a)r[s[a]]=a;s.length<=2&&s.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=s[0],c[s[0]]=1,s.length===2&&(c[s[1]]=0,this.triangles[1]=s[1],this.triangles[2]=s[1]))}voronoi(t){return new $Ze(this,t)}*neighbors(t){const{inedges:i,hull:n,_hullIndex:s,halfedges:l,triangles:c,collinear:r}=this;if(r){const d=r.indexOf(t);d>0&&(yield r[d-1]),d<r.length-1&&(yield r[d+1]);return}const a=i[t];if(a===-1)return;let u=a,o=-1;do{if(yield o=c[u],u=u%3===2?u-2:u+1,c[u]!==t)return;if(u=l[u],u===-1){const d=n[(s[t]+1)%n.length];d!==o&&(yield d);return}}while(u!==a)}find(t,i,n=0){if(t=+t,t!==t||(i=+i,i!==i))return-1;const s=n;let l;for(;(l=this._step(n,t,i))>=0&&l!==n&&l!==s;)n=l;return l}_step(t,i,n){const{inedges:s,hull:l,_hullIndex:c,halfedges:r,triangles:a,points:u}=this;if(s[t]===-1||!u.length)return(t+1)%(u.length>>1);let o=t,d=Od(i-u[t*2],2)+Od(n-u[t*2+1],2);const b=s[t];let h=b;do{let p=a[h];const Z=Od(i-u[p*2],2)+Od(n-u[p*2+1],2);if(Z<d&&(d=Z,o=p),h=h%3===2?h-2:h+1,a[h]!==t)break;if(h=r[h],h===-1){if(h=l[(c[t]+1)%l.length],h!==p&&Od(i-u[h*2],2)+Od(n-u[h*2+1],2)<d)return h;break}}while(h!==b);return o}render(t){const i=t==null?t=new hu:void 0,{points:n,halfedges:s,triangles:l}=this;for(let c=0,r=s.length;c<r;++c){const a=s[c];if(a<c)continue;const u=l[c]*2,o=l[a]*2;t.moveTo(n[u],n[u+1]),t.lineTo(n[o],n[o+1])}return this.renderHull(t),i&&i.value()}renderPoints(t,i){i===void 0&&(!t||typeof t.moveTo!="function")&&(i=t,t=null),i=i==null?2:+i;const n=t==null?t=new hu:void 0,{points:s}=this;for(let l=0,c=s.length;l<c;l+=2){const r=s[l],a=s[l+1];t.moveTo(r+i,a),t.arc(r,a,i,0,QZe)}return n&&n.value()}renderHull(t){const i=t==null?t=new hu:void 0,{hull:n,points:s}=this,l=n[0]*2,c=n.length;t.moveTo(s[l],s[l+1]);for(let r=1;r<c;++r){const a=2*n[r];t.lineTo(s[a],s[a+1])}return t.closePath(),i&&i.value()}hullPolygon(){const t=new bV;return this.renderHull(t),t.value()}renderTriangle(t,i){const n=i==null?i=new hu:void 0,{points:s,triangles:l}=this,c=l[t*=3]*2,r=l[t+1]*2,a=l[t+2]*2;return i.moveTo(s[c],s[c+1]),i.lineTo(s[r],s[r+1]),i.lineTo(s[a],s[a+1]),i.closePath(),n&&n.value()}*trianglePolygons(){const{triangles:t}=this;for(let i=0,n=t.length/3;i<n;++i)yield this.trianglePolygon(i)}trianglePolygon(t){const i=new bV;return this.renderTriangle(t,i),i.value()}}function tWe(e,t,i,n){const s=e.length,l=new Float64Array(s*2);for(let c=0;c<s;++c){const r=e[c];l[c*2]=t.call(n,r,c,e),l[c*2+1]=i.call(n,r,c,e)}return l}function*iWe(e,t,i,n){let s=0;for(const l of e)yield t.call(n,l,s,e),yield i.call(n,l,s,e),++s}function tv(e){ue.call(this,null,e)}tv.Definition={type:"Voronoi",metadata:{modifies:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"size",type:"number",array:!0,length:2},{name:"extent",type:"array",array:!0,length:2,default:[[-1e5,-1e5],[1e5,1e5]],content:{type:"number",array:!0,length:2}},{name:"as",type:"string",default:"path"}]};const nWe=[-1e5,-1e5,1e5,1e5];ge(tv,ue,{transform(e,t){const i=e.as||"path",n=t.source;if(!n||!n.length)return t;let s=e.size;s=s?[0,0,s[0],s[1]]:(s=e.extent)?[s[0][0],s[0][1],s[1][0],s[1][1]]:nWe;const l=this.value=ev.from(n,e.x,e.y).voronoi(s);for(let c=0,r=n.length;c<r;++c){const a=l.cellPolygon(c);n[c][i]=a&&!lWe(a)?sWe(a):null}return t.reflow(e.modified()).modifies(i)}});function sWe(e){const t=e[0][0],i=e[0][1];let n=e.length-1;for(;e[n][0]===t&&e[n][1]===i;--n);return"M"+e.slice(0,n+1).join("L")+"Z"}function lWe(e){return e.length===2&&e[0][0]===e[1][0]&&e[0][1]===e[1][1]}const cWe=Object.freeze(Object.defineProperty({__proto__:null,voronoi:tv},Symbol.toStringTag,{value:"Module"}));var rY=Math.PI/180,qh=64,SZ=2048;function rWe(){var e=[256,256],t,i,n,s,l,c,r,a=NP,u=[],o=Math.random,d={};d.layout=function(){for(var p=b(to()),Z=bWe((e[0]>>5)*e[1]),X=null,J=u.length,V=-1,g=[],I=u.map(k=>({text:t(k),font:i(k),style:s(k),weight:l(k),rotate:c(k),size:~~(n(k)+1e-14),padding:r(k),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:k})).sort((k,N)=>N.size-k.size);++V<J;){var v=I[V];v.x=e[0]*(o()+.5)>>1,v.y=e[1]*(o()+.5)>>1,aWe(p,v,I,V),v.hasText&&h(Z,v,X)&&(g.push(v),X?uWe(X,v):X=[{x:v.x+v.x0,y:v.y+v.y0},{x:v.x+v.x1,y:v.y+v.y1}],v.x-=e[0]>>1,v.y-=e[1]>>1)}return g};function b(p){p.width=p.height=1;var Z=Math.sqrt(p.getContext("2d").getImageData(0,0,1,1).data.length>>2);p.width=(qh<<5)/Z,p.height=SZ/Z;var X=p.getContext("2d");return X.fillStyle=X.strokeStyle="red",X.textAlign="center",{context:X,ratio:Z}}function h(p,Z,X){for(var J=Z.x,V=Z.y,g=Math.hypot(e[0],e[1]),I=a(e),v=o()<.5?1:-1,k=-v,N,C,f;(N=I(k+=v))&&(C=~~N[0],f=~~N[1],!(Math.min(Math.abs(C),Math.abs(f))>=g));)if(Z.x=J+C,Z.y=V+f,!(Z.x+Z.x0<0||Z.y+Z.y0<0||Z.x+Z.x1>e[0]||Z.y+Z.y1>e[1])&&(!X||!oWe(Z,p,e[0]))&&(!X||dWe(Z,X))){for(var w=Z.sprite,x=Z.width>>5,R=e[0]>>5,K=Z.x-(x<<4),B=K&127,_=32-B,j=Z.y1-Z.y0,U=(Z.y+Z.y0)*R+(K>>5),$,te=0;te<j;te++){$=0;for(var E=0;E<=x;E++)p[U+E]|=$<<_|(E<x?($=w[te*x+E])>>>B:0);U+=R}return Z.sprite=null,!0}return!1}return d.words=function(p){return arguments.length?(u=p,d):u},d.size=function(p){return arguments.length?(e=[+p[0],+p[1]],d):e},d.font=function(p){return arguments.length?(i=Po(p),d):i},d.fontStyle=function(p){return arguments.length?(s=Po(p),d):s},d.fontWeight=function(p){return arguments.length?(l=Po(p),d):l},d.rotate=function(p){return arguments.length?(c=Po(p),d):c},d.text=function(p){return arguments.length?(t=Po(p),d):t},d.spiral=function(p){return arguments.length?(a=hWe[p]||p,d):a},d.fontSize=function(p){return arguments.length?(n=Po(p),d):n},d.padding=function(p){return arguments.length?(r=Po(p),d):r},d.random=function(p){return arguments.length?(o=p,d):o},d}function aWe(e,t,i,n){if(!t.sprite){var s=e.context,l=e.ratio;s.clearRect(0,0,(qh<<5)/l,SZ/l);var c=0,r=0,a=0,u=i.length,o,d,b,h,p;for(--n;++n<u;){if(t=i[n],s.save(),s.font=t.style+" "+t.weight+" "+~~((t.size+1)/l)+"px "+t.font,o=s.measureText(t.text+"m").width*l,b=t.size<<1,t.rotate){var Z=Math.sin(t.rotate*rY),X=Math.cos(t.rotate*rY),J=o*X,V=o*Z,g=b*X,I=b*Z;o=Math.max(Math.abs(J+I),Math.abs(J-I))+31>>5<<5,b=~~Math.max(Math.abs(V+g),Math.abs(V-g))}else o=o+31>>5<<5;if(b>a&&(a=b),c+o>=qh<<5&&(c=0,r+=a,a=0),r+b>=SZ)break;s.translate((c+(o>>1))/l,(r+(b>>1))/l),t.rotate&&s.rotate(t.rotate*rY),s.fillText(t.text,0,0),t.padding&&(s.lineWidth=2*t.padding,s.strokeText(t.text,0,0)),s.restore(),t.width=o,t.height=b,t.xoff=c,t.yoff=r,t.x1=o>>1,t.y1=b>>1,t.x0=-t.x1,t.y0=-t.y1,t.hasText=!0,c+=o}for(var v=s.getImageData(0,0,(qh<<5)/l,SZ/l).data,k=[];--n>=0;)if(t=i[n],!!t.hasText){for(o=t.width,d=o>>5,b=t.y1-t.y0,h=0;h<b*d;h++)k[h]=0;if(c=t.xoff,c==null)return;r=t.yoff;var N=0,C=-1;for(p=0;p<b;p++){for(h=0;h<o;h++){var f=d*p+(h>>5),w=v[(r+p)*(qh<<5)+(c+h)<<2]?1<<31-h%32:0;k[f]|=w,N|=w}N?C=p:(t.y0++,b--,p--,r++)}t.y1=t.y0+C,t.sprite=k.slice(0,(t.y1-t.y0)*d)}}}function oWe(e,t,i){i>>=5;for(var n=e.sprite,s=e.width>>5,l=e.x-(s<<4),c=l&127,r=32-c,a=e.y1-e.y0,u=(e.y+e.y0)*i+(l>>5),o,d=0;d<a;d++){o=0;for(var b=0;b<=s;b++)if((o<<r|(b<s?(o=n[d*s+b])>>>c:0))&t[u+b])return!0;u+=i}return!1}function uWe(e,t){var i=e[0],n=e[1];t.x+t.x0<i.x&&(i.x=t.x+t.x0),t.y+t.y0<i.y&&(i.y=t.y+t.y0),t.x+t.x1>n.x&&(n.x=t.x+t.x1),t.y+t.y1>n.y&&(n.y=t.y+t.y1)}function dWe(e,t){return e.x+e.x1>t[0].x&&e.x+e.x0<t[1].x&&e.y+e.y1>t[0].y&&e.y+e.y0<t[1].y}function NP(e){var t=e[0]/e[1];return function(i){return[t*(i*=.1)*Math.cos(i),i*Math.sin(i)]}}function mWe(e){var t=4,i=t*e[0]/e[1],n=0,s=0;return function(l){var c=l<0?-1:1;switch(Math.sqrt(1+4*c*l)-c&3){case 0:n+=i;break;case 1:s+=t;break;case 2:n-=i;break;default:s-=t;break}return[n,s]}}function bWe(e){for(var t=[],i=-1;++i<e;)t[i]=0;return t}function Po(e){return typeof e=="function"?e:function(){return e}}var hWe={archimedean:NP,rectangular:mWe};const RP=["x","y","font","fontSize","fontStyle","fontWeight","angle"],fWe=["text","font","rotate","fontSize","fontStyle","fontWeight"];function iv(e){ue.call(this,rWe(),e)}iv.Definition={type:"Wordcloud",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2},{name:"font",type:"string",expr:!0,default:"sans-serif"},{name:"fontStyle",type:"string",expr:!0,default:"normal"},{name:"fontWeight",type:"string",expr:!0,default:"normal"},{name:"fontSize",type:"number",expr:!0,default:14},{name:"fontSizeRange",type:"number",array:"nullable",default:[10,50]},{name:"rotate",type:"number",expr:!0,default:0},{name:"text",type:"field"},{name:"spiral",type:"string",values:["archimedean","rectangular"]},{name:"padding",type:"number",expr:!0},{name:"as",type:"string",array:!0,length:7,default:RP}]};ge(iv,ue,{transform(e,t){e.size&&!(e.size[0]&&e.size[1])&&me("Wordcloud size dimensions must be non-zero.");function i(p){const Z=e[p];return ct(Z)&&t.modified(Z.fields)}const n=e.modified();if(!(n||t.changed(t.ADD_REM)||fWe.some(i)))return;const s=t.materialize(t.SOURCE).source,l=this.value,c=e.as||RP;let r=e.fontSize||14,a;if(ct(r)?a=e.fontSizeRange:r=In(r),a){const p=r,Z=wt("sqrt")().domain(Qc(s,p)).range(a);r=X=>Z(p(X))}s.forEach(p=>{p[c[0]]=NaN,p[c[1]]=NaN,p[c[3]]=0});const u=l.words(s).text(e.text).size(e.size||[500,500]).padding(e.padding||1).spiral(e.spiral||"archimedean").rotate(e.rotate||0).font(e.font||"sans-serif").fontStyle(e.fontStyle||"normal").fontWeight(e.fontWeight||"normal").fontSize(r).random(ml).layout(),o=l.size(),d=o[0]>>1,b=o[1]>>1,h=u.length;for(let p=0,Z,X;p<h;++p)Z=u[p],X=Z.datum,X[c[0]]=Z.x+d,X[c[1]]=Z.y+b,X[c[2]]=Z.font,X[c[3]]=Z.size,X[c[4]]=Z.style,X[c[5]]=Z.weight,X[c[6]]=Z.rotate;return t.reflow(n).modifies(c)}});const pWe=Object.freeze(Object.defineProperty({__proto__:null,wordcloud:iv},Symbol.toStringTag,{value:"Module"})),yWe=e=>new Uint8Array(e),ZWe=e=>new Uint16Array(e),Jf=e=>new Uint32Array(e);function WWe(){let e=8,t=[],i=Jf(0),n=Ky(0,e),s=Ky(0,e);return{data:()=>t,seen:()=>i=XWe(i,t.length),add(l){for(let c=0,r=t.length,a=l.length,u;c<a;++c)u=l[c],u._index=r++,t.push(u)},remove(l,c){const r=t.length,a=Array(r-l),u=t;let o,d,b;for(d=0;!c[d]&&d<r;++d)a[d]=t[d],u[d]=d;for(b=d;d<r;++d)o=t[d],c[d]?u[d]=-1:(u[d]=b,n[b]=n[d],s[b]=s[d],a[b]=o,o._index=b++),n[d]=0;return t=a,u},size:()=>t.length,curr:()=>n,prev:()=>s,reset:l=>s[l]=n[l],all:()=>e<257?255:e<65537?65535:4294967295,set(l,c){n[l]|=c},clear(l,c){n[l]&=~c},resize(l,c){const r=n.length;(l>r||c>e)&&(e=Math.max(c,e),n=Ky(l,e,n),s=Ky(l,e))}}}function XWe(e,t,i){return e.length>=t?e:(i=i||new e.constructor(t),i.set(e),i)}function Ky(e,t,i){const n=(t<257?yWe:t<65537?ZWe:Jf)(e);return i&&n.set(i),n}function _F(e,t,i){const n=1<<t;return{one:n,zero:~n,range:i.slice(),bisect:e.bisect,index:e.index,size:e.size,onAdd(s,l){const c=this,r=c.bisect(c.range,s.value),a=s.index,u=r[0],o=r[1],d=a.length;let b;for(b=0;b<u;++b)l[a[b]]|=n;for(b=o;b<d;++b)l[a[b]]|=n;return c}}}function OF(){let e=Jf(0),t=[],i=0;function n(r,a,u){if(!a.length)return[];const o=i,d=a.length,b=Jf(d);let h=Array(d),p,Z,X;for(X=0;X<d;++X)h[X]=r(a[X]),b[X]=X;if(h=JWe(h,b),o)p=t,Z=e,t=Array(o+d),e=Jf(o+d),xWe(u,p,Z,o,h,b,d,t,e);else{if(u>0)for(X=0;X<d;++X)b[X]+=u;t=h,e=b}return i=o+d,{index:b,value:h}}function s(r,a){const u=i;let o,d,b;for(d=0;!a[e[d]]&&d<u;++d);for(b=d;d<u;++d)a[o=e[d]]||(e[b]=o,t[b]=t[d],++b);i=u-r}function l(r){for(let a=0,u=i;a<u;++a)e[a]=r[e[a]]}function c(r,a){let u;return a?u=a.length:(a=t,u=i),[Ste(a,r[0],0,u),Nf(a,r[1],0,u)]}return{insert:n,remove:s,bisect:c,reindex:l,index:()=>e,size:()=>i}}function JWe(e,t){return e.sort.call(t,(i,n)=>{const s=e[i],l=e[n];return s<l?-1:s>l?1:0}),Lte(e,t)}function xWe(e,t,i,n,s,l,c,r,a){let u=0,o=0,d;for(d=0;u<n&&o<c;++d)t[u]<s[o]?(r[d]=t[u],a[d]=i[u++]):(r[d]=s[o],a[d]=l[o++]+e);for(;u<n;++u,++d)r[d]=t[u],a[d]=i[u];for(;o<c;++o,++d)r[d]=s[o],a[d]=l[o]+e}function nv(e){ue.call(this,WWe(),e),this._indices=null,this._dims=null}nv.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]};ge(nv,ue,{transform(e,t){if(this._dims){var i=e.modified("fields")||e.fields.some(n=>t.modified(n.fields));return i?this.reinit(e,t):this.eval(e,t)}else return this.init(e,t)},init(e,t){const i=e.fields,n=e.query,s=this._indices={},l=this._dims=[],c=n.length;let r=0,a,u;for(;r<c;++r)a=i[r].fname,u=s[a]||(s[a]=OF()),l.push(_F(u,r,n[r]));return this.eval(e,t)},reinit(e,t){const i=t.materialize().fork(),n=e.fields,s=e.query,l=this._indices,c=this._dims,r=this.value,a=r.curr(),u=r.prev(),o=r.all(),d=i.rem=i.add,b=i.mod,h=s.length,p={};let Z,X,J,V,g,I,v,k,N;if(u.set(a),t.rem.length&&(g=this.remove(e,t,i)),t.add.length&&r.add(t.add),t.mod.length)for(I={},V=t.mod,v=0,k=V.length;v<k;++v)I[V[v]._index]=1;for(v=0;v<h;++v)N=n[v],(!c[v]||e.modified("fields",v)||t.modified(N.fields))&&(J=N.fname,(Z=p[J])||(l[J]=X=OF(),p[J]=Z=X.insert(N,t.source,0)),c[v]=_F(X,v,s[v]).onAdd(Z,a));for(v=0,k=r.data().length;v<k;++v)g[v]||(u[v]!==a[v]?d.push(v):I[v]&&a[v]!==o&&b.push(v));return r.mask=(1<<h)-1,i},eval(e,t){const i=t.materialize().fork(),n=this._dims.length;let s=0;return t.rem.length&&(this.remove(e,t,i),s|=(1<<n)-1),e.modified("query")&&!e.modified("fields")&&(s|=this.update(e,t,i)),t.add.length&&(this.insert(e,t,i),s|=(1<<n)-1),t.mod.length&&(this.modify(t,i),s|=(1<<n)-1),this.value.mask=s,i},insert(e,t,i){const n=t.add,s=this.value,l=this._dims,c=this._indices,r=e.fields,a={},u=i.add,o=s.size()+n.length,d=l.length;let b=s.size(),h,p,Z;s.resize(o,d),s.add(n);const X=s.curr(),J=s.prev(),V=s.all();for(h=0;h<d;++h)p=r[h].fname,Z=a[p]||(a[p]=c[p].insert(r[h],n,b)),l[h].onAdd(Z,X);for(;b<o;++b)J[b]=V,X[b]!==V&&u.push(b)},modify(e,t){const i=t.mod,n=this.value,s=n.curr(),l=n.all(),c=e.mod;let r,a,u;for(r=0,a=c.length;r<a;++r)u=c[r]._index,s[u]!==l&&i.push(u)},remove(e,t,i){const n=this._indices,s=this.value,l=s.curr(),c=s.prev(),r=s.all(),a={},u=i.rem,o=t.rem;let d,b,h,p;for(d=0,b=o.length;d<b;++d)h=o[d]._index,a[h]=1,c[h]=p=l[h],l[h]=r,p!==r&&u.push(h);for(h in n)n[h].remove(b,a);return this.reindex(t,b,a),a},reindex(e,t,i){const n=this._indices,s=this.value;e.runAfter(()=>{const l=s.remove(t,i);for(const c in n)n[c].reindex(l)})},update(e,t,i){const n=this._dims,s=e.query,l=t.stamp,c=n.length;let r=0,a,u;for(i.filters=0,u=0;u<c;++u)e.modified("query",u)&&(a=u,++r);if(r===1)r=n[a].one,this.incrementOne(n[a],s[a],i.add,i.rem);else for(u=0,r=0;u<c;++u)e.modified("query",u)&&(r|=n[u].one,this.incrementAll(n[u],s[u],l,i.add),i.rem=i.add);return r},incrementAll(e,t,i,n){const s=this.value,l=s.seen(),c=s.curr(),r=s.prev(),a=e.index(),u=e.bisect(e.range),o=e.bisect(t),d=o[0],b=o[1],h=u[0],p=u[1],Z=e.one;let X,J,V;if(d<h)for(X=d,J=Math.min(h,b);X<J;++X)V=a[X],l[V]!==i&&(r[V]=c[V],l[V]=i,n.push(V)),c[V]^=Z;else if(d>h)for(X=h,J=Math.min(d,p);X<J;++X)V=a[X],l[V]!==i&&(r[V]=c[V],l[V]=i,n.push(V)),c[V]^=Z;if(b>p)for(X=Math.max(d,p),J=b;X<J;++X)V=a[X],l[V]!==i&&(r[V]=c[V],l[V]=i,n.push(V)),c[V]^=Z;else if(b<p)for(X=Math.max(h,b),J=p;X<J;++X)V=a[X],l[V]!==i&&(r[V]=c[V],l[V]=i,n.push(V)),c[V]^=Z;e.range=t.slice()},incrementOne(e,t,i,n){const s=this.value,l=s.curr(),c=e.index(),r=e.bisect(e.range),a=e.bisect(t),u=a[0],o=a[1],d=r[0],b=r[1],h=e.one;let p,Z,X;if(u<d)for(p=u,Z=Math.min(d,o);p<Z;++p)X=c[p],l[X]^=h,i.push(X);else if(u>d)for(p=d,Z=Math.min(u,b);p<Z;++p)X=c[p],l[X]^=h,n.push(X);if(o>b)for(p=Math.max(u,b),Z=o;p<Z;++p)X=c[p],l[X]^=h,i.push(X);else if(o<b)for(p=Math.max(d,o),Z=b;p<Z;++p)X=c[p],l[X]^=h,n.push(X);e.range=t.slice()}});function sv(e){ue.call(this,null,e)}sv.Definition={type:"ResolveFilter",metadata:{},params:[{name:"ignore",type:"number",required:!0,description:"A bit mask indicating which filters to ignore."},{name:"filter",type:"object",required:!0,description:"Per-tuple filter bitmaps from a CrossFilter transform."}]};ge(sv,ue,{transform(e,t){const i=~(e.ignore||0),n=e.filter,s=n.mask;if((s&i)===0)return t.StopPropagation;const l=t.fork(t.ALL),c=n.data(),r=n.curr(),a=n.prev(),u=o=>r[o]&i?null:c[o];return l.filter(l.MOD,u),s&s-1?(l.filter(l.ADD,o=>{const d=r[o]&i;return!d&&d^a[o]&i?c[o]:null}),l.filter(l.REM,o=>{const d=r[o]&i;return d&&!(d^(d^a[o]&i))?c[o]:null})):(l.filter(l.ADD,u),l.filter(l.REM,o=>(r[o]&i)===s?c[o]:null)),l.filter(l.SOURCE,o=>u(o._index))}});const YWe=Object.freeze(Object.defineProperty({__proto__:null,crossfilter:nv,resolvefilter:sv},Symbol.toStringTag,{value:"Module"})),GWe="RawCode",Lu="Literal",VWe="Property",IWe="Identifier",gWe="ArrayExpression",vWe="BinaryExpression",kP="CallExpression",zWe="ConditionalExpression",wWe="LogicalExpression",HWe="MemberExpression",NWe="ObjectExpression",RWe="UnaryExpression";function nc(e){this.type=e}nc.prototype.visit=function(e){let t,i,n;if(e(this))return 1;for(t=kWe(this),i=0,n=t.length;i<n;++i)if(t[i].visit(e))return 1};function kWe(e){switch(e.type){case gWe:return e.elements;case vWe:case wWe:return[e.left,e.right];case kP:return[e.callee].concat(e.arguments);case zWe:return[e.test,e.consequent,e.alternate];case HWe:return[e.object,e.property];case NWe:return e.properties;case VWe:return[e.key,e.value];case RWe:return[e.argument];case IWe:case Lu:case GWe:default:return[]}}var ar,Se,be,Jn,St,A2=1,a0=2,Cu=3,Io=4,q2=5,rd=6,is=7,o0=8,FWe=9;ar={};ar[A2]="Boolean";ar[a0]="<end>";ar[Cu]="Identifier";ar[Io]="Keyword";ar[q2]="Null";ar[rd]="Numeric";ar[is]="Punctuator";ar[o0]="String";ar[FWe]="RegularExpression";var SWe="ArrayExpression",LWe="BinaryExpression",CWe="CallExpression",TWe="ConditionalExpression",FP="Identifier",MWe="Literal",KWe="LogicalExpression",BWe="MemberExpression",_We="ObjectExpression",OWe="Property",jWe="UnaryExpression",Bi="Unexpected token %0",EWe="Unexpected number",PWe="Unexpected string",UWe="Unexpected identifier",$We="Unexpected reserved word",QWe="Unexpected end of input",hV="Invalid regular expression",aY="Invalid regular expression: missing /",SP="Octal literals are not allowed in strict mode.",DWe="Duplicate data property in object literal not allowed in strict mode",ln="ILLEGAL",qf="Disabled.",AWe=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u
470AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),qWe
vendor: 5,882 bytes, line 47
47=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function
vendor: 63,061 bytes, lines 47-53
47e1(e,t){if(!e)throw new Error("ASSERT: "+t)}function Hr(e){return e>=48&&e<=57}function lv(e){return"0123456789abcdefABCDEF".includes(e)}function xf(e){return"01234567".includes(e)}function eXe(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function ep(e){return e===10||e===13||e===8232||e===8233}function u0(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&AWe.test(String.fromCharCode(e))}function fX(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&qWe.test(String.fromCharCode(e))}const tXe={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function LP(){for(;be<Jn;){const e=Se.charCodeAt(be);if(eXe(e)||ep(e))++be;else break}}function fV(e){var t,i,n,s=0;for(i=e==="u"?4:2,t=0;t<i;++t)be<Jn&&lv(Se[be])?(n=Se[be++],s=s*16+"0123456789abcdef".indexOf(n.toLowerCase())):gt({},Bi,ln);return String.fromCharCode(s)}function iXe(){var e,t,i,n;for(e=Se[be],t=0,e==="}"&>({},Bi,ln);be<Jn&&(e=Se[be++],!!lv(e));)t=t*16+"0123456789abcdef".indexOf(e.toLowerCase());return(t>1114111||e!=="}")&>({},Bi,ln),t<=65535?String.fromCharCode(t):(i=(t-65536>>10)+55296,n=(t-65536&1023)+56320,String.fromCharCode(i,n))}function CP(){var e,t;for(e=Se.charCodeAt(be++),t=String.fromCharCode(e),e===92&&(Se.charCodeAt(be)!==117&>({},Bi,ln),++be,e=fV("u"),(!e||e==="\\"||!u0(e.charCodeAt(0)))&>({},Bi,ln),t=e);be<Jn&&(e=Se.charCodeAt(be),!!fX(e));)++be,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Se.charCodeAt(be)!==117&>({},Bi,ln),++be,e=fV("u"),(!e||e==="\\"||!fX(e.charCodeAt(0)))&>({},Bi,ln),t+=e);return t}function nXe(){var e,t;for(e=be++;be<Jn;){if(t=Se.charCodeAt(be),t===92)return be=e,CP();if(fX(t))++be;else break}return Se.slice(e,be)}function sXe(){var e,t,i;return e=be,t=Se.charCodeAt(be)===92?CP():nXe(),t.length===1?i=Cu:tXe.hasOwnProperty(t)?i=Io:t==="null"?i=q2:t==="true"||t==="false"?i=A2:i=Cu,{type:i,value:t,start:e,end:be}}function oY(){var e=be,t=Se.charCodeAt(be),i,n=Se[be],s,l,c;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++be,{type:is,value:String.fromCharCode(t),start:e,end:be};default:if(i=Se.charCodeAt(be+1),i===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return be+=2,{type:is,value:String.fromCharCode(t)+String.fromCharCode(i),start:e,end:be};case 33:case 61:return be+=2,Se.charCodeAt(be)===61&&++be,{type:is,value:Se.slice(e,be),start:e,end:be}}}if(c=Se.substr(be,4),c===">>>=")return be+=4,{type:is,value:c,start:e,end:be};if(l=c.substr(0,3),l===">>>"||l==="<<="||l===">>=")return be+=3,{type:is,value:l,start:e,end:be};if(s=l.substr(0,2),n===s[1]&&"+-<>&|".includes(n)||s==="=>")return be+=2,{type:is,value:s,start:e,end:be};if(s==="//"&>({},Bi,ln),"<>=!+-*%&|^/".includes(n))return++be,{type:is,value:n,start:e,end:be};gt({},Bi,ln)}function lXe(e){let t="";for(;be<Jn&&lv(Se[be]);)t+=Se[be++];return t.length===0&>({},Bi,ln),u0(Se.charCodeAt(be))&>({},Bi,ln),{type:rd,value:parseInt("0x"+t,16),start:e,end:be}}function cXe(e){let t="0"+Se[be++];for(;be<Jn&&xf(Se[be]);)t+=Se[be++];return(u0(Se.charCodeAt(be))||Hr(Se.charCodeAt(be)))&>({},Bi,ln),{type:rd,value:parseInt(t,8),octal:!0,start:e,end:be}}function jF(){var e,t,i;if(i=Se[be],e1(Hr(i.charCodeAt(0))||i===".","Numeric literal must start with a decimal digit or a decimal point"),t=be,e="",i!=="."){if(e=Se[be++],i=Se[be],e==="0"){if(i==="x"||i==="X")return++be,lXe(t);if(xf(i))return cXe(t);i&&Hr(i.charCodeAt(0))&>({},Bi,ln)}for(;Hr(Se.charCodeAt(be));)e+=Se[be++];i=Se[be]}if(i==="."){for(e+=Se[be++];Hr(Se.charCodeAt(be));)e+=Se[be++];i=Se[be]}if(i==="e"||i==="E")if(e+=Se[be++],i=Se[be],(i==="+"||i==="-")&&(e+=Se[be++]),Hr(Se.charCodeAt(be)))for(;Hr(Se.charCodeAt(be));)e+=Se[be++];else gt({},Bi,ln);return u0(Se.charCodeAt(be))&>({},Bi,ln),{type:rd,value:parseFloat(e),start:t,end:be}}function rXe(){var e="",t,i,n,s,l=!1;for(t=Se[be],e1(t==="'"||t==='"',"String literal must starts with a quote"),i=be,++be;be<Jn;)if(n=Se[be++],n===t){t="";break}else if(n==="\\")if(n=Se[be++],!n||!ep(n.charCodeAt(0)))switch(n){case"u":case"x":Se[be]==="{"?(++be,e+=iXe()):e+=fV(n);break;case"n":e+=` 48`;break;case"r":e+="\r";break;case"t":e+=" ";break;case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:xf(n)?(s="01234567".indexOf(n),s!==0&&(l=!0),be<Jn&&xf(Se[be])&&(l=!0,s=s*8+"01234567".indexOf(Se[be++]),"0123".includes(n)&&be<Jn&&xf(Se[be])&&(s=s*8+"01234567".indexOf(Se[be++]))),e+=String.fromCharCode(s)):e+=n;break}else n==="\r"&&Se[be]===` 49`&&++be;else{if(ep(n.charCodeAt(0)))break;e+=n}return t!==""&>({},Bi,ln),{type:o0,value:e,octal:l,start:i,end:be}}function aXe(e,t){let i=e;t.includes("u")&&(i=i.replace(/\\u\{([0-9a-fA-F]+)\}/g,(n,s)=>{if(parseInt(s,16)<=1114111)return"x";gt({},hV)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(i)}catch{gt({},hV)}try{return new RegExp(e,t)}catch{return null}}function oXe(){var e,t,i,n,s;for(e=Se[be],e1(e==="/","Regular expression literal must start with a slash"),t=Se[be++],i=!1,n=!1;be<Jn;)if(e=Se[be++],t+=e,e==="\\")e=Se[be++],ep(e.charCodeAt(0))&>({},aY),t+=e;else if(ep(e.charCodeAt(0)))gt({},aY);else if(i)e==="]"&&(i=!1);else if(e==="/"){n=!0;break}else e==="["&&(i=!0);return n||gt({},aY),s=t.substr(1,t.length-2),{value:s,literal:t}}function uXe(){var e,t,i;for(t="",i="";be<Jn&&(e=Se[be],!!fX(e.charCodeAt(0)));)++be,e==="\\"&&be<Jn?gt({},Bi,ln):(i+=e,t+=e);return i.search(/[^gimuy]/g)>=0&>({},hV,i),{value:i,literal:t}}function dXe(){var e,t,i,n;return St=null,LP(),e=be,t=oXe(),i=uXe(),n=aXe(t.value,i.value),{literal:t.literal+i.literal,value:n,regex:{pattern:t.value,flags:i.value},start:e,end:be}}function mXe(e){return e.type===Cu||e.type===Io||e.type===A2||e.type===q2}function TP(){if(LP(),be>=Jn)return{type:a0,start:be,end:be};const e=Se.charCodeAt(be);return u0(e)?sXe():e===40||e===41||e===59?oY():e===39||e===34?rXe():e===46?Hr(Se.charCodeAt(be+1))?jF():oY():Hr(e)?jF():oY()}function ls(){const e=St;return be=e.end,St=TP(),be=e.end,e}function MP(){const e=be;St=TP(),be=e}function bXe(e){const t=new nc(SWe);return t.elements=e,t}function EF(e,t,i){const n=new nc(e==="||"||e==="&&"?KWe:LWe);return n.operator=e,n.left=t,n.right=i,n}function hXe(e,t){const i=new nc(CWe);return i.callee=e,i.arguments=t,i}function fXe(e,t,i){const n=new nc(TWe);return n.test=e,n.consequent=t,n.alternate=i,n}function cv(e){const t=new nc(FP);return t.name=e,t}function ef(e){const t=new nc(MWe);return t.value=e.value,t.raw=Se.slice(e.start,e.end),e.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=e.regex),t}function PF(e,t,i){const n=new nc(BWe);return n.computed=e==="[",n.object=t,n.property=i,n.computed||(i.member=!0),n}function pXe(e){const t=new nc(_We);return t.properties=e,t}function UF(e,t,i){const n=new nc(OWe);return n.key=t,n.value=i,n.kind=e,n}function yXe(e,t){const i=new nc(jWe);return i.operator=e,i.argument=t,i.prefix=!0,i}function gt(e,t){var i,n=Array.prototype.slice.call(arguments,2),s=t.replace(/%(\d)/g,(l,c)=>(e1(c<n.length,"Message reference must be in range"),n[c]));throw i=new Error(s),i.index=be,i.description=s,i}function t1(e){e.type===a0&>(e,QWe),e.type===rd&>(e,EWe),e.type===o0&>(e,PWe),e.type===Cu&>(e,UWe),e.type===Io&>(e,$We),gt(e,Bi,e.value)}function xn(e){const t=ls();(t.type!==is||t.value!==e)&&t1(t)}function ei(e){return St.type===is&&St.value===e}function uY(e){return St.type===Io&&St.value===e}function ZXe(){const e=[];for(be=St.start,xn("[");!ei("]");)ei(",")?(ls(),e.push(null)):(e.push(Tu()),ei("]")||xn(","));return ls(),bXe(e)}function $F(){be=St.start;const e=ls();return e.type===o0||e.type===rd?(e.octal&>(e,SP),ef(e)):cv(e.value)}function WXe(){var e,t,i,n;if(be=St.start,e=St,e.type===Cu)return i=$F(),xn(":"),n=Tu(),UF("init",i,n);if(e.type===a0||e.type===is)t1(e);else return t=$F(),xn(":"),n=Tu(),UF("init",t,n)}function XXe(){var e=[],t,i,n,s={},l=String;for(be=St.start,xn("{");!ei("}");)t=WXe(),t.key.type===FP?i=t.key.name:i=l(t.key.value),n="$"+i,Object.prototype.hasOwnProperty.call(s,n)?gt({},DWe):s[n]=!0,e.push(t),ei("}")||xn(",");return xn("}"),pXe(e)}function JXe(){xn("(");const e=rv();return xn(")"),e}const xXe={if:1};function YXe(){var e,t,i;if(ei("("))return JXe();if(ei("["))return ZXe();if(ei("{"))return XXe();if(e=St.type,be=St.start,e===Cu||xXe[St.value])i=cv(ls().value);else if(e===o0||e===rd)St.octal&>(St,SP),i=ef(ls());else{if(e===Io)throw new Error(qf);e===A2?(t=ls(),t.value=t.value==="true",i=ef(t)):e===q2?(t=ls(),t.value=null,i=ef(t)):ei("/")||ei("/=")?(i=ef(dXe()),MP()):t1(ls())}return i}function GXe(){const e=[];if(xn("("),!ei(")"))for(;be<Jn&&(e.push(Tu()),!ei(")"));)xn(",");return xn(")"),e}function VXe(){be=St.start;const e=ls();return mXe(e)||t1(e),cv(e.value)}function IXe(){return xn("."),VXe()}function gXe(){xn("[");const e=rv();return xn("]"),e}function vXe(){var e,t,i;for(e=YXe();;)if(ei("."))i=IXe(),e=PF(".",e,i);else if(ei("("))t=GXe(),e=hXe(e,t);else if(ei("["))i=gXe(),e=PF("[",e,i);else break;return e}function QF(){const e=vXe();if(St.type===is&&(ei("++")||ei("--")))throw new Error(qf);return e}function LZ(){var e,t;if(St.type!==is&&St.type!==Io)t=QF();else{if(ei("++")||ei("--"))throw new Error(qf);if(ei("+")||ei("-")||ei("~")||ei("!"))e=ls(),t=LZ(),t=yXe(e.value,t);else{if(uY("delete")||uY("void")||uY("typeof"))throw new Error(qf);t=QF()}}return t}function DF(e){let t=0;if(e.type!==is&&e.type!==Io)return 0;switch(e.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function zXe(){var e,t,i,n,s,l,c,r,a,u;if(e=St,a=LZ(),n=St,s=DF(n),s===0)return a;for(n.prec=s,ls(),t=[e,St],c=LZ(),l=[a,n,c];(s=DF(St))>0;){for(;l.length>2&&s<=l[l.length-2].prec;)c=l.pop(),r=l.pop().value,a=l.pop(),t.pop(),i=EF(r,a,c),l.push(i);n=ls(),n.prec=s,l.push(n),t.push(St),i=LZ(),l.push(i)}for(u=l.length-1,i=l[u],t.pop();u>1;)t.pop(),i=EF(l[u-1].value,l[u-2],i),u-=2;return i}function Tu(){var e,t,i;return e=zXe(),ei("?")&&(ls(),t=Tu(),xn(":"),i=Tu(),e=fXe(e,t,i)),e}function rv(){const e=Tu();if(ei(","))throw new Error(qf);return e}function KP(e){Se=e,be=0,Jn=Se.length,St=null,MP();const t=rv();if(St.type!==a0)throw new Error("Unexpect token after expression.");return t}var BP={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function _P(e){function t(c,r,a,u){let o=e(r[0]);return a&&(o=a+"("+o+")",a.lastIndexOf("new ",0)===0&&(o="("+o+")")),o+"."+c+(u<0?"":u===0?"()":"("+r.slice(1).map(e).join(",")+")")}function i(c,r,a){return u=>t(c,u,r,a)}const n="new Date",s="String",l="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(c){c.length<3&&me("Missing arguments to clamp function."),c.length>3&&me("Too many arguments to clamp function.");const r=c.map(e);return"Math.max("+r[1]+", Math.min("+r[2]+","+r[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:n,date:i("getDate",n,0),day:i("getDay",n,0),year:i("getFullYear",n,0),month:i("getMonth",n,0),hours:i("getHours",n,0),minutes:i("getMinutes",n,0),seconds:i("getSeconds",n,0),milliseconds:i("getMilliseconds",n,0),time:i("getTime",n,0),timezoneoffset:i("getTimezoneOffset",n,0),utcdate:i("getUTCDate",n,0),utcday:i("getUTCDay",n,0),utcyear:i("getUTCFullYear",n,0),utcmonth:i("getUTCMonth",n,0),utchours:i("getUTCHours",n,0),utcminutes:i("getUTCMinutes",n,0),utcseconds:i("getUTCSeconds",n,0),utcmilliseconds:i("getUTCMilliseconds",n,0),length:i("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:i("toUpperCase",s,0),lower:i("toLowerCase",s,0),substring:i("substring",s),split:i("split",s),trim:i("trim",s,0),btoa:"btoa",atob:"atob",regexp:l,test:i("test",l),if:function(c){c.length<3&&me("Missing arguments to if function."),c.length>3&&me("Too many arguments to if function.");const r=c.map(e);return"("+r[0]+"?"+r[1]+":"+r[2]+")"}}}function wXe(e){const t=e&&e.length-1;return t&&(e[0]==='"'&&e[t]==='"'||e[0]==="'"&&e[t]==="'")?e.slice(1,-1):e}function OP(e){e=e||{};const t=e.allowed?_l(e.allowed):{},i=e.forbidden?_l(e.forbidden):{},n=e.constants||BP,s=(e.functions||_P)(d),l=e.globalvar,c=e.fieldvar,r=ct(l)?l:p=>`${l}["${p}"]`;let a={},u={},o=0;function d(p){if(He(p))return p;const Z=b[p.type];return Z==null&&me("Unsupported type: "+p.type),Z(p)}const b={Literal:p=>p.raw,Identifier:p=>{const Z=p.name;return o>0?Z:Re(i,Z)?me("Illegal identifier: "+Z):Re(n,Z)?n[Z]:Re(t,Z)?Z:(a[Z]=1,r(Z))},MemberExpression:p=>{const Z=!p.computed,X=d(p.object);Z&&(o+=1);const J=d(p.property);return X===c&&(u[wXe(J)]=1),Z&&(o-=1),X+(Z?"."+J:"["+J+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&me("Illegal callee type: "+p.callee.type);const Z=p.callee.name,X=p.arguments,J=Re(s,Z)&&s[Z];return J||me("Unrecognized function: "+Z),ct(J)?J(X):J+"("+X.map(d).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(d).join(",")+"]",BinaryExpression:p=>"("+d(p.left)+" "+p.operator+" "+d(p.right)+")",UnaryExpression:p=>"("+p.operator+d(p.argument)+")",ConditionalExpression:p=>"("+d(p.test)+"?"+d(p.consequent)+":"+d(p.alternate)+")",LogicalExpression:p=>"("+d(p.left)+p.operator+d(p.right)+")",ObjectExpression:p=>{for(const Z of p.properties){const X=Z.key.name;f3.has(X)&&me("Illegal property: "+X)}return"{"+p.properties.map(d).join(",")+"}"},Property:p=>{o+=1;const Z=d(p.key);return o-=1,Z+":"+d(p.value)}};function h(p){const Z={code:d(p),globals:Object.keys(a),fields:Object.keys(u)};return a={},u={},Z}return h.functions=s,h.constants=n,h}const AF=Symbol("vega_selection_getter");function jP(e){return(!e.getter||!e.getter[AF])&&(e.getter=ol(e.field),e.getter[AF]=!0),e.getter}const av="intersect",qF="union",HXe="vlMulti",NXe="vlPoint",eS="or",RXe="and",gc="_vgsid_",tp=ol(gc),kXe="E",FXe="R",SXe="R-E",LXe="R-LE",CXe="R-RE",TXe="E-LT",MXe="E-LTE",KXe="E-GT",BXe="E-GTE",_Xe="E-VALID",OXe="E-ONE",pX="index:unit";function tS(e,t){for(var i=t.fields,n=t.values,s=i.length,l=0,c,r;l<s;++l)if(r=i[l],c=jP(r)(e),qa(c)&&(c=yn(c)),qa(n[l])&&(n[l]=yn(n[l])),fe(n[l])&&qa(n[l][0])&&(n[l]=n[l].map(yn)),r.type===kXe){if(fe(n[l])?!n[l].includes(c):c!==n[l])return!1}else if(r.type===FXe){if(!sm(c,n[l]))return!1}else if(r.type===CXe){if(!sm(c,n[l],!0,!1))return!1}else if(r.type===SXe){if(!sm(c,n[l],!1,!1))return!1}else if(r.type===LXe){if(!sm(c,n[l],!1,!0))return!1}else if(r.type===TXe){if(c>=n[l])return!1}else if(r.type===MXe){if(c>n[l])return!1}else if(r.type===KXe){if(c<=n[l])return!1}else if(r.type===BXe){if(c<n[l])return!1}else if(r.type===_Xe){if(c===null||isNaN(c))return!1}else if(r.type===OXe&&n[l].indexOf(c)===-1)return!1;return!0}function jXe(e,t,i){for(var n=this.context.data[e],s=n?n.values.value:[],l=n?n[pX]&&n[pX].value:void 0,c=i===av,r=s.length,a=0,u,o,d,b,h;a<r;++a)if(u=s[a],l&&c){if(o=o||{},d=o[b=u.unit]||0,d===-1)continue;if(h=tS(t,u),o[b]=h?-1:++d,h&&l.size===1)return!0;if(!h&&d===l.get(b).count)return!1}else if(h=tS(t,u),c^h)return h;return r&&c}const EP=DX(tp),EXe=EP.left,PXe=EP.right;function UXe(e,t,i){const n=this.context.data[e],s=n?n.values.value:[],l=n?n[pX]&&n[pX].value:void 0,c=i===av,r=tp(t),a=EXe(s,r);if(a===s.length||tp(s[a])!==r)return!1;if(l&&c){if(l.size===1)return!0;if(PXe(s,r)-a<l.size)return!1}return!0}function $Xe(e,t){return fe(e)||me("First argument to selectionTuples must be an array."),we(t)||me("Second argument to selectionTuples must be an object."),e.map(i=>lt(t.fields?{values:t.fields.map(n=>jP(n)(i.datum))}:{[gc]:tp(i.datum)},t))}function QXe(e,t,i,n){for(var s=this.context.data[e],l=s?s.values.value:[],c={},r={},a={},u,o,d,b,h,p,Z,X,J,V,g=l.length,I=0,v,k;I<g;++I)if(u=l[I],b=u.unit,o=u.fields,d=u.values,o&&d){for(v=0,k=o.length;v<k;++v)h=o[v],Z=c[h.field]||(c[h.field]={}),X=Z[b]||(Z[b]=[]),a[h.field]=J=h.type.charAt(0),V=dY[`${J}_union`],Z[b]=V(X,Ne(d[v]));i&&(X=r[b]||(r[b]=[]),X.push(Ne(d).reduce((N,C,f)=>(N[o[f].field]=C,N),{})))}else h=gc,p=tp(u),Z=c[h]||(c[h]={}),X=Z[b]||(Z[b]=[]),X.push(p),i&&(X=r[b]||(r[b]=[]),X.push({[gc]:p}));if(t=t||qF,c[gc]?c[gc]=dY[`${gc}_${t}`](...Object.values(c[gc])):Object.keys(c).forEach(N=>{c[N]=Object.keys(c[N]).map(C=>c[N][C]).reduce((C,f)=>C===void 0?f:dY[`${a[N]}_${t}`](C,f))}),l=Object.keys(r),i&&l.length){const N=n?NXe:HXe;c[N]=t===qF?{[eS]:l.reduce((C,f)=>(C.push(...r[f]),C),[])}:{[RXe]:l.map(C=>({[eS]:r[C]}))}}return c}var dY={[`${gc}_union`]:tne,[`${gc}_intersect`]:qie,E_union:function(e,t){if(!e.length)return t;for(var i=0,n=t.length;i<n;++i)e.includes(t[i])||e.push(t[i]);return e},E_intersect:function(e,t){return e.length?e.filter(i=>t.includes(i)):t},R_union:function(e,t){var i=yn(t[0]),n=yn(t[1]);return i>n&&(i=t[1],n=t[0]),e.length?(e[0]>i&&(e[0]=i),e[1]<n&&(e[1]=n),e):[i,n]},R_intersect:function(e,t){var i=yn(t[0]),n=yn(t[1]);return i>n&&(i=t[1],n=t[0]),e.length?n<e[0]||e[1]<i?[]:(e[0]<i&&(e[0]=i),e[1]>n&&(e[1]=n),e):[i,n]}};const DXe=":",AXe="@";function ov(e,t,i,n){t[0].type!==Lu&&me("First argument to selection functions must be a string literal.");const s=t[0].value,l=t.length>=2&&Zt(t).value,c="unit",r=AXe+c,a=DXe+s;l===av&&!Re(n,r)&&(n[r]=i.getData(s).indataRef(i,c)),Re(n,a)||(n[a]=i.getData(s).tuplesRef())}function PP(e){const t=this.context.data[e];return t?t.values.value:[]}function qXe(e,t,i){const n=this.context.data[e]["index:"+t],s=n?n.value.get(i):void 0;return s&&s.count}function e2e(e,t){const i=this.context.dataflow,n=this.context.data[e],s=n.input;return i.pulse(s,i.changeset().remove(ul).insert(t)),1}function t2e(e,t,i){if(e){const n=this.context.dataflow,s=e.mark.source;n.pulse(s,n.changeset().encode(e,t))}return i!==void 0?i:e}const d0=e=>function(t,i){const n=this.context.dataflow.locale();return t===null?"null":n[e](i)(t)},i2e=d0("format"),UP=d0("timeFormat"),n2e=d0("utcFormat"),s2e=d0("timeParse"),l2e=d0("utcParse"),By=new Date(2e3,0,1);function i1(e,t,i){return!Number.isInteger(e)||!Number.isInteger(t)?"":(By.setYear(2e3),By.setMonth(e),By.setDate(t),UP.call(this,By,i))}function c2e(e){return i1.call(this,e,1,"%B")}function r2e(e){return i1.call(this,e,1,"%b")}function a2e(e){return i1.call(this,0,2+e,"%A")}function o2e(e){return i1.call(this,0,2+e,"%a")}const u2e=":",d2e="@",pV="%",$P="$";function uv(e,t,i,n){t[0].type!==Lu&&me("First argument to data functions must be a string literal.");const s=t[0].value,l=u2e+s;if(!Re(l,n))try{n[l]=i.getData(s).tuplesRef()}catch{}}function m2e(e,t,i,n){t[0].type!==Lu&&me("First argument to indata must be a string literal."),t[1].type!==Lu&&me("Second argument to indata must be a string literal.");const s=t[0].value,l=t[1].value,c=d2e+l;Re(c,n)||(n[c]=i.getData(s).indataRef(i,l))}function jn(e,t,i,n){if(t[0].type===Lu)iS(i,n,t[0].value);else for(e in i.scales)iS(i,n,e)}function iS(e,t,i){const n=pV+i;if(!Re(t,n))try{t[n]=e.scaleRef(i)}catch{}}function or(e,t){if(He(e)){const i=t.scales[e];return i&&rk(i.value)?i.value:void 0}else if(ct(e))return rk(e)?e:void 0}function b2e(e,t,i){t.__bandwidth=s=>s&&s.bandwidth?s.bandwidth():0,i._bandwidth=jn,i._range=jn,i._scale=jn;const n=s=>"_["+(s.type===Lu?Ge(pV+s.value):Ge(pV)+"+"+e(s))+"]";return{_bandwidth:s=>`this.__bandwidth(${n(s[0])})`,_range:s=>`${n(s[0])}.range()`,_scale:s=>`${n(s[0])}(${e(s[1])})`}}function dv(e,t){return function(i,n,s){if(i){const l=or(i,(s||this).context);return l&&l.path[e](n)}else return t(n)}}const h2e=dv("area",Zpe),f2e=dv("bounds",xpe),p2e=dv("centroid",vpe);function y2e(e,t){const i=or(e,(t||this).context);return i&&i.scale()}function Z2e(e){const t=this.context.group;let i=!1;if(t)for(;e;){if(e===t){i=!0;break}e=e.mark.group}return i}function mv(e,t,i){try{e[t].apply(e,["EXPRESSION"].concat([].slice.call(i)))}catch(n){e.warn(n)}return i[i.length-1]}function W2e(){return mv(this.context.dataflow,"warn",arguments)}function X2e(){return mv(this.context.dataflow,"info",arguments)}function J2e(){return mv(this.context.dataflow,"debug",arguments)}function mY(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}function yV(e){const t=ro(e),i=mY(t.r),n=mY(t.g),s=mY(t.b);return .2126*i+.7152*n+.0722*s}function x2e(e,t){const i=yV(e),n=yV(t),s=Math.max(i,n),l=Math.min(i,n);return(s+.05)/(l+.05)}function Y2e(){const e=[].slice.call(arguments);return e.unshift({}),lt(...e)}function QP(e,t){return e===t||e!==e&&t!==t?!0:fe(e)?fe(t)&&e.length===t.length?G2e(e,t):!1:we(e)&&we(t)?DP(e,t):!1}function G2e(e,t){for(let i=0,n=e.length;i<n;++i)if(!QP(e[i],t[i]))return!1;return!0}function DP(e,t){for(const i in e)if(!QP(e[i],t[i]))return!1;return!0}function nS(e){return t=>DP(e,t)}function V2e(e,t,i,n,s,l){const c=this.context.dataflow,r=this.context.data[e],a=r.input,u=c.stamp();let o=r.changes,d,b;if(c._trigger===!1||!(a.value.length||t||n))return 0;if((!o||o.stamp<u)&&(r.changes=o=c.changeset(),o.stamp=u,c.runAfter(()=>{r.modified=!0,c.pulse(a,o).run()},!0,1)),i&&(d=i===!0?ul:fe(i)||Y2(i)?i:nS(i),o.remove(d)),t&&o.insert(t),n&&(d=nS(n),a.value.some(d)?o.remove(d):o.insert(n)),s)for(b in l)o.modify(s,b,l[b]);return 1}function I2e(e){const t=e.touches,i=t[0].clientX-t[1].clientX,n=t[0].clientY-t[1].clientY;return Math.hypot(i,n)}function g2e(e){const t=e.touches;return Math.atan2(t[0].clientY-t[1].clientY,t[0].clientX-t[1].clientX)}const sS={};function v2e(e,t){const i=sS[t]||(sS[t]=ol(t));return fe(e)?e.map(i):i(e)}function n1(e){return fe(e)||ArrayBuffer.isView(e)?e:null}function bv(e){return n1(e)||(He(e)?e:null)}function z2e(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return n1(e).join(...i)}function w2e(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return bv(e).indexOf(...i)}function H2e(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return bv(e).lastIndexOf(...i)}function N2e(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return bv(e).slice(...i)}function R2e(e,t,i){return ct(i)&&me("Function argument passed to replace."),!He(t)&&!G3(t)&&me("Please pass a string or RegExp argument to replace."),String(e).replace(t,i)}function k2e(e){return n1(e).slice().reverse()}function F2e(e){return n1(e).slice().sort(Gb)}function S2e(e,t,i){return g5(e||0,t||0,i||0)}function L2e(e,t){const i=or(e,(t||this).context);return i&&i.bandwidth?i.bandwidth():0}function C2e(e,t){const i=or(e,(t||this).context);return i?i.copy():void 0}function T2e(e,t){const i=or(e,(t||this).context);return i?i.domain():[]}function M2e(e,t,i){const n=or(e,(i||this).context);return n?fe(t)?(n.invertRange||n.invert)(t):(n.invert||n.invertExtent)(t):void 0}function K2e(e,t){const i=or(e,(t||this).context);return i&&i.range?i.range():[]}function B2e(e,t,i){const n=or(e,(i||this).context);return n?n(t):void 0}function _2e(e,t,i,n,s){e=or(e,(s||this).context);const l=Kj(t,i);let c=e.domain(),r=c[0],a=Zt(c),u=Vn;return a-r?u=zj(e,r,a):e=(e.interpolator?wt("sequential")().interpolator(e.interpolator()):wt("linear")().interpolate(e.interpolate()).range(e.range())).domain([r=0,a=1]),e.ticks&&(c=e.ticks(+n||15),r!==c[0]&&c.unshift(r),a!==Zt(c)&&c.push(a)),c.forEach(o=>l.stop(u(o),e(o))),l}function O2e(e,t,i){const n=or(e,(i||this).context);return function(s){return n?n.path.context(s)(t):""}}function j2e(e){let t=null;return function(i){return i?jf(i,t=t||Tm(e)):e}}const AP=e=>e.data;function qP(e,t){const i=PP.call(t,e);return i.root&&i.root.lookup||{}}function E2e(e,t,i){const n=qP(e,this),s=n[t],l=n[i];return s&&l?s.path(l).map(AP):void 0}function P2e(e,t){const i=qP(e,this)[t];return i?i.ancestors().map(AP):void 0}const eU=()=>typeof window<"u"&&window||null;function U2e(){const e=eU();return e?e.screen:{}}function $2e(){const e=eU();return e?[e.innerWidth,e.innerHeight]:[void 0,void 0]}function Q2e(){const e=this.context.dataflow,t=e.container&&e.container();return t?[t.clientWidth,t.clientHeight]:[void 0,void 0]}function tU(e,t,i){if(!e)return[];const[n,s]=e,l=new zi().set(n[0],n[1],s[0],s[1]),c=i||this.context.dataflow.scenegraph().root;return CE(c,l,D2e(t))}function D2e(e){let t=null;if(e){const i=Ne(e.marktype),n=Ne(e.markname);t=s=>(!i.length||i.some(l=>s.marktype===l))&&(!n.length||n.some(l=>s.name===l))}return t}function A2e(e,t,i){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5;e=Ne(e);const s=e[e.length-1];return s===void 0||Math.hypot(s[0]-t,s[1]-i)>n?[...e,[t,i]]:e}function q2e(e){return Ne(e).reduce((t,i,n)=>{let[s,l]=i;return t+=n==0?`M ${s},${l} `:n===e.length-1?" Z":`L ${s},${l} `},"")}function e1e(e,t,i){const{x:n,y:s,mark:l}=i,c=new zi().set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for(const[a,u]of t)a<c.x1&&(c.x1=a),a>c.x2&&(c.x2=a),u<c.y1&&(c.y1=u),u>c.y2&&(c.y2=u);return c.translate(n,s),tU([[c.x1,c.y1],[c.x2,c.y2]],e,l).filter(a=>t1e(a.x,a.y,t))}function t1e(e,t,i){let n=0;for(let s=0,l=i.length-1;s<i.length;l=s++){const[c,r]=i[l],[a,u]=i[s];u>t!=r>t&&e<(c-a)*(t-u)/(r-u)+a&&n++}return n&1}const ip={random(){return ml()},cumulativeNormal:v2,cumulativeLogNormal:P3,cumulativeUniform:D3,densityNormal:B3,densityLogNormal:E3,densityUniform:Q3,quantileNormal:z2,quantileLogNormal:U3,quantileUniform:A3,sampleNormal:g2,sampleLogNormal:j3,sampleUniform:$3,isArray:fe,isBoolean:Vo,isDate:qa,isDefined(e){return e!==void 0},isNumber:zt,isObject:we,isRegExp:G3,isString:He,isTuple:Y2,isValid(e){return e!=null&&e===e},toBoolean:I3,toDate(e){return g3(e)},toNumber:yn,toString:v3,indexof:w2e,join:z2e,lastindexof:H2e,replace:R2e,reverse:k2e,sort:F2e,slice:N2e,flush:J_,lerp:Y_,merge:Y2e,pad:I_,peek:Zt,pluck:v2e,span:Mp,inrange:sm,truncate:g_,rgb:ro,lab:Mte,hcl:Tte,hsl:Cte,luminance:yV,contrast:x2e,sequence:Cn,format:i2e,utcFormat:n2e,utcParse:l2e,utcOffset:K_,utcSequence:O_,timeFormat:UP,timeParse:s2e,timeOffset:M_,timeSequence:__,timeUnitSpecifier:z_,monthFormat:c2e,monthAbbrevFormat:r2e,dayFormat:a2e,dayAbbrevFormat:o2e,quarter:y_,utcquarter:Z_,week:H_,utcweek:k_,dayofyear:w_,utcdayofyear:R_,warn:W2e,info:X2e,debug:J2e,extent(e){return Qc(e)},inScope:Z2e,intersect:tU,clampRange:W_,pinchDistance:I2e,pinchAngle:g2e,screen:U2e,containerSize:Q2e,windowSize:$2e,bandspace:S2e,setdata:e2e,pathShape:j2e,panLinear:b_,panLog:h_,panPow:f_,panSymlog:p_,zoomLinear:W3,zoomLog:X3,zoomPow:YW,zoomSymlog:J3,encode:t2e,modify:V2e,lassoAppend:A2e,lassoPath:q2e,intersectLasso:e1e},i1e=["view","item","group","xy","x","y"],n1e="event.vega.",iU="this.",hv={},nU={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:e=>`_[${Ge($P+e)}]`,functions:s1e,constants:BP,visitors:hv},ZV=OP(nU);function s1e(e){const t=_P(e);i1e.forEach(i=>t[i]=n1e+i);for(const i in ip)t[i]=iU+i;return lt(t,b2e(e,ip,hv)),t}function Wi(e,t,i){return arguments.length===1?ip[e]:(ip[e]=t,i&&(hv[e]=i),ZV&&(ZV.functions[e]=iU+e),this)}Wi("bandwidth",L2e,jn);Wi("copy",C2e,jn);Wi("domain",T2e,jn);Wi("range",K2e,jn);Wi("invert",M2e,jn);Wi("scale",B2e,jn);Wi("gradient",_2e,jn);Wi("geoArea",h2e,jn);Wi("geoBounds",f2e,jn);Wi("geoCentroid",p2e,jn);Wi("geoShape",O2e,jn);Wi("geoScale",y2e,jn);Wi("indata",qXe,m2e);Wi("data",PP,uv);Wi("treePath",E2e,uv);Wi("treeAncestors",P2e,uv);Wi("vlSelectionTest",jXe,ov);Wi("vlSelectionIdTest",UXe,ov);Wi("vlSelectionResolve",QXe,ov);Wi("vlSelectionTuples",$Xe);function qc(e,t){const i={};let n;try{e=He(e)?e:Ge(e)+"",n=KP(e)}catch{me("Expression parse error: "+e)}n.visit(l=>{if(l.type!==kP)return;const c=l.callee.name,r=nU.visitors[c];r&&r(c,l.arguments,t,i)});const s=ZV(n);return s.globals.forEach(l=>{const c=$P+l;!Re(i,c)&&t.getSignal(l)&&(i[c]=t.signalRef(l))}),{$expr:lt({code:s.code},t.options.ast?{ast:n}:null),$fields:s.fields,$params:i}}function l1e(e){const t=this,i=e.operators||[];return e.background&&(t.background=e.background),e.eventConfig&&(t.eventConfig=e.eventConfig),e.locale&&(t.locale=e.locale),i.forEach(n=>t.parseOperator(n)),i.forEach(n=>t.parseOperatorParameters(n)),(e.streams||[]).forEach(n=>t.parseStream(n)),(e.updates||[]).forEach(n=>t.parseUpdate(n)),t.resolve()}const c1e=_l(["rule"]),lS=_l(["group","image","rect"]);function r1e(e,t){let i="";return c1e[t]||(e.x2&&(e.x?(lS[t]&&(i+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),i+="o.width=o.x2-o.x;"):i+="o.x=o.x2-(o.width||0);"),e.xc&&(i+="o.x=o.xc-(o.width||0)/2;"),e.y2&&(e.y?(lS[t]&&(i+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),i+="o.height=o.y2-o.y;"):i+="o.y=o.y2-(o.height||0);"),e.yc&&(i+="o.y=o.yc-(o.height||0)/2;")),i}function fv(e){return(e+"").toLowerCase()}function a1e(e){return fv(e)==="operator"}function o1e(e){return fv(e)==="collect"}function Xh(e,t,i){i.endsWith(";")||(i="return("+i+");");const n=Function(...t.concat(i));return e&&e.functions?n.bind(e.functions):n}function u1e(e,t,i,n){return`((u = ${e}) < (v = ${t}) || u == null) && v != null ? ${i} 50 : (u > v || v == null) && u != null ? ${n} 51 : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ${i} 52 : v !== v && u === u ? ${n} : `}var d1e={operator:(e,t)=>Xh(e,["_"],t.code),parameter:(e,t)=>Xh(e,["datum","_"],t.code),event:(e,t)=>Xh(e,["event"],t.code),handler:(e,t)=>{const i=`var datum=event.item&&event.item.datum;return ${t.code};`;return Xh(e,["_","event"],i)},encode:(e,t)=>{const{marktype:i,channels:n}=t;let s="var o=item,datum=o.datum,m=0,$;";for(const l in n){const c="o["+Ge(l)+"]";s+=`$=${n[l].code};if(${c}!==$)${c}=$,m=1;`}return s+=r1e(n,i),s+="return m;",Xh(e,["item","_"],s)},codegen:{get(e){const t=`[${e.map(Ge).join("][")}]`,i=Function("_",`return _${t};`);return i.path=t,i},comparator(e,t){let i;const n=(l,c)=>{const r=t[c];let a,u;return l.path?(a=`a${l.path}`,u=`b${l.path}`):((i=i||{})["f"+c]=l,a=`this.f${c}(a)`,u=`this.f${c}(b)`),u1e(a,u,-r,r)},s=Function("a","b","var u, v; return "+e.map(n).join("")+"0;");return i?s.bind(i):s}}};function m1e(e){const t=this;a1e(e.type)||!e.type?t.operator(e,e.update?t.operatorExpression(e.update):null):t.transform(e,e.type)}function b1e(e){const t=this;if(e.params){const i=t.get(e.id);i||me("Invalid operator id: "+e.id),t.dataflow.connect(i,i.parameters(t.parseParameters(e.params),e.react,e.initonly))}}function h1e(e,t){t=t||{};const i=this;for(const n in e){const s=e[n];t[n]=fe(s)?s.map(l=>cS(l,i,t)):cS(s,i,t)}return t}function cS(e,t,i){if(!e||!we(e))return e;for(let n=0,s=rS.length,l;n<s;++n)if(l=rS[n],Re(e,l.key))return l.parse(e,t,i);return e}var rS=[{key:"$ref",parse:f1e},{key:"$key",parse:y1e},{key:"$expr",parse:p1e},{key:"$field",parse:Z1e},{key:"$encode",parse:X1e},{key:"$compare",parse:W1e},{key:"$context",parse:J1e},{key:"$subflow",parse:x1e},{key:"$tupleid",parse:Y1e}];function f1e(e,t){return t.get(e.$ref)||me("Operator not defined: "+e.$ref)}function p1e(e,t,i){e.$params&&t.parseParameters(e.$params,i);const n="e:"+e.$expr.code;return t.fn[n]||(t.fn[n]=Ws(t.parameterExpression(e.$expr),e.$fields))}function y1e(e,t){const i="k:"+e.$key+"_"+!!e.$flat;return t.fn[i]||(t.fn[i]=V3(e.$key,e.$flat,t.expr.codegen))}function Z1e(e,t){if(!e.$field)return null;const i="f:"+e.$field+"_"+e.$name;return t.fn[i]||(t.fn[i]=ol(e.$field,e.$name,t.expr.codegen))}function W1e(e,t){const i="c:"+e.$compare+"_"+e.$order,n=Ne(e.$compare).map(s=>s&&s.$tupleid?Oe:s);return t.fn[i]||(t.fn[i]=x3(n,e.$order,t.expr.codegen))}function X1e(e,t){const i=e.$encode,n={};for(const s in i){const l=i[s];n[s]=Ws(t.encodeExpression(l.$expr),l.$fields),n[s].output=l.$output}return n}function J1e(e,t){return t}function x1e(e,t){const i=e.$subflow;return function(n,s,l){const c=t.fork().parse(i),r=c.get(i.operators[0].id),a=c.signals.parent;return a&&a.set(l),r.detachSubflow=()=>t.detach(c),r}}function Y1e(){return Oe}function G1e(e){var t=this,i=e.filter!=null?t.eventExpression(e.filter):void 0,n=e.stream!=null?t.get(e.stream):void 0,s;e.source?n=t.events(e.source,e.type,i):e.merge&&(s=e.merge.map(l=>t.get(l)),n=s[0].merge.apply(s[0],s.slice(1))),e.between&&(s=e.between.map(l=>t.get(l)),n=n.between(s[0],s[1])),e.filter&&(n=n.filter(i)),e.throttle!=null&&(n=n.throttle(+e.throttle)),e.debounce!=null&&(n=n.debounce(+e.debounce)),n==null&&me("Invalid stream definition: "+JSON.stringify(e)),e.consume&&n.consume(!0),t.stream(e,n)}function V1e(e){var t=this,i=we(i=e.source)?i.$ref:i,n=t.get(i),s=null,l=e.update,c=void 0;n||me("Source not defined: "+e.source),s=e.target&&e.target.$expr?t.eventExpression(e.target.$expr):t.get(e.target),l&&l.$expr&&(l.$params&&(c=t.parseParameters(l.$params)),l=t.handlerExpression(l.$expr)),t.update(e,n,s,l,c)}const I1e={skip:!0};function g1e(e){var t=this,i={};if(e.signals){var n=i.signals={};Object.keys(t.signals).forEach(l=>{const c=t.signals[l];e.signals(l,c)&&(n[l]=c.value)})}if(e.data){var s=i.data={};Object.keys(t.data).forEach(l=>{const c=t.data[l];e.data(l,c)&&(s[l]=c.input.value)})}return t.subcontext&&e.recurse!==!1&&(i.subcontext=t.subcontext.map(l=>l.getState(e))),i}function v1e(e){var t=this,i=t.dataflow,n=e.data,s=e.signals;Object.keys(s||{}).forEach(l=>{i.update(t.signals[l],s[l],I1e)}),Object.keys(n||{}).forEach(l=>{i.pulse(t.data[l].input,i.changeset().remove(ul).insert(n[l]))}),(e.subcontext||[]).forEach((l,c)=>{const r=t.subcontext[c];r&&r.setState(l)})}function sU(e,t,i,n){return new lU(e,t,i,n)}function lU(e,t,i,n){this.dataflow=e,this.transforms=t,this.events=e.events.bind(e),this.expr=n||d1e,this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},i&&(this.functions=Object.create(i),this.functions.context=this)}function aS(e){this.dataflow=e.dataflow,this.transforms=e.transforms,this.events=e.events,this.expr=e.expr,this.signals=Object.create(e.signals),this.scales=Object.create(e.scales),this.nodes=Object.create(e.nodes),this.data=Object.create(e.data),this.fn=Object.create(e.fn),e.functions&&(this.functions=Object.create(e.functions),this.functions.context=this)}lU.prototype=aS.prototype={fork(){const e=new aS(this);return(this.subcontext||(this.subcontext=[])).push(e),e},detach(e){this.subcontext=this.subcontext.filter(i=>i!==e);const t=Object.keys(e.nodes);for(const i of t)e.nodes[i]._targets=null;for(const i of t)e.nodes[i].detach();e.nodes=null},get(e){return this.nodes[e]},set(e,t){return this.nodes[e]=t},add(e,t){const i=this,n=i.dataflow,s=e.value;if(i.set(e.id,t),o1e(e.type)&&s&&(s.$ingest?n.ingest(t,s.$ingest,s.$format):s.$request?n.preload(t,s.$request,s.$format):n.pulse(t,n.changeset().insert(s))),e.root&&(i.root=t),e.parent){let l=i.get(e.parent.$ref);l?(n.connect(l,[t]),t.targets().add(l)):(i.unresolved=i.unresolved||[]).push(()=>{l=i.get(e.parent.$ref),n.connect(l,[t]),t.targets().add(l)})}if(e.signal&&(i.signals[e.signal]=t),e.scale&&(i.scales[e.scale]=t),e.data)for(const l in e.data){const c=i.data[l]||(i.data[l]={});e.data[l].forEach(r=>c[r]=t)}},resolve(){return(this.unresolved||[]).forEach(e=>e()),delete this.unresolved,this},operator(e,t){this.add(e,this.dataflow.add(e.value,t))},transform(e,t){this.add(e,this.dataflow.add(this.transforms[fv(t)]))},stream(e,t){this.set(e.id,t)},update(e,t,i,n,s){this.dataflow.on(t,i,n,s,e.options)},operatorExpression(e){return this.expr.operator(this,e)},parameterExpression(e){return this.expr.parameter(this,e)},eventExpression(e){return this.expr.event(this,e)},handlerExpression(e){return this.expr.handler(this,e)},encodeExpression(e){return this.expr.encode(this,e)},parse:l1e,parseOperator:m1e,parseOperatorParameters:b1e,parseParameters:h1e,parseStream:G1e,parseUpdate:V1e,getState:g1e,setState:v1e};function z1e(e){const t=e.container();t&&(t.setAttribute("role","graphics-document"),t.setAttribute("aria-roleDescription","visualization"),cU(t,e.description()))}function cU(e,t){e&&(t==null?e.removeAttribute("aria-label"):e.setAttribute("aria-label",t))}function w1e(e){e.add(null,t=>(e._background=t.bg,e._resize=1,t.bg),{bg:e._signals.background})}const bY="default";function H1e(e){const t=e._signals.cursor||(e._signals.cursor=e.add({user:bY,item:null}));e.on(e.events("view","pointermove"),t,(i,n)=>{const s=t.value,l=s?He(s)?s:s.user:bY,c=n.item&&n.item.cursor||null;return s&&l===s.user&&c==s.item?s:{user:l,item:c}}),e.add(null,function(i){let n=i.cursor,s=this.value;return He(n)||(s=n.item,n=n.user),WV(e,n&&n!==bY?n:s||n),s},{cursor:t})}function WV(e,t){const i=e.globalCursor()?typeof document<"u"&&document.body:e.container();if(i)return t==null?i.style.removeProperty("cursor"):i.style.cursor=t}function yX(e,t){var i=e._runtime.data;return Re(i,t)||me("Unrecognized data set: "+t),i[t]}function N1e(e,t){return arguments.length<2?yX(this,e).values.value:s1.call(this,e,ld().remove(ul).insert(t))}function s1(e,t){uO(t)||me("Second argument to changes must be a changeset.");const i=yX(this,e);return i.modified=!0,this.pulse(i.input,t)}function R1e(e,t){return s1.call(this,e,ld().insert(t))}function k1e(e,t){return s1.call(this,e,ld().remove(t))}function rU(e){var t=e.padding();return Math.max(0,e._viewWidth+t.left+t.right)}function aU(e){var t=e.padding();return Math.max(0,e._viewHeight+t.top+t.bottom)}function l1(e){var t=e.padding(),i=e._origin;return[t.left+i[0],t.top+i[1]]}function F1e(e){var t=l1(e),i=rU(e),n=aU(e);e._renderer.background(e.background()),e._renderer.resize(i,n,t),e._handler.origin(t),e._resizeListeners.forEach(s=>{try{s(i,n)}catch(l){e.error(l)}})}function S1e(e,t,i){var n=e._renderer,s=n&&n.canvas(),l,c,r;return s&&(r=l1(e),c=t.changedTouches?t.changedTouches[0]:t,l=P2(c,s),l[0]-=r[0],l[1]-=r[1]),t.dataflow=e,t.item=i,t.vega=L1e(e,i,l),t}function L1e(e,t,i){const n=t?t.mark.marktype==="group"?t:t.mark.group:null;function s(c){var r=n,a;if(c){for(a=t;a;a=a.mark.group)if(a.mark.name===c){r=a;break}}return r&&r.mark&&r.mark.interactive?r:{}}function l(c){if(!c)return i;He(c)&&(c=s(c));const r=i.slice();for(;c;)r[0]-=c.x||0,r[1]-=c.y||0,c=c.mark&&c.mark.group;return r}return{view:In(e),item:In(t||{}),group:s,xy:l,x:c=>l(c)[0],y:c=>l(c)[1]}}const oS="view",C1e="timer",T1e="window",M1e={trap:!1};function K1e(e){const t=lt({defaults:{}},e),i=(n,s)=>{s.forEach(l=>{fe(n[l])&&(n[l]=_l(n[l]))})};return i(t.defaults,["prevent","allow"]),i(t,["view","window","selector"]),t}function oU(e,t,i,n){e._eventListeners.push({type:i,sources:Ne(t),handler:n})}function B1e(e,t){var i=e._eventConfig.defaults,n=i.prevent,s=i.allow;return n===!1||s===!0?!1:n===!0||s===!1?!0:n?n[t]:s?!s[t]:e.preventDefault()}function _y(e,t,i){const n=e._eventConfig&&e._eventConfig[t];return n===!1||we(n)&&!n[i]?(e.warn(`Blocked ${t} ${i} event listener.`),!1):!0}function _1e(e,t,i){var n=this,s=new I2(i),l=function(u,o){n.runAsync(null,()=>{e===oS&&B1e(n,t)&&u.preventDefault(),s.receive(S1e(n,u,o))})},c;if(e===C1e)_y(n,"timer",t)&&n.timer(l,t);else if(e===oS)_y(n,"view",t)&&n.addEventListener(t,l,M1e);else if(e===T1e?_y(n,"window",t)&&typeof window<"u"&&(c=[window]):typeof document<"u"&&_y(n,"selector",t)&&(c=Array.from(document.querySelectorAll(e))),!c)n.warn("Can not resolve event source: "+e);else{for(var r=0,a=c.length;r<a;++r)c[r].addEventListener(t,l);oU(n,c,t,l)}return s}function uS(e){return e.item}function dS(e){return e.item.mark.source}function mS(e){return function(t,i){return i.vega.view().changeset().encode(i.item,e)}}function O1e(e,t){return e=[e||"hover"],t=[t||"update",e[0]],this.on(this.events("view","pointerover",uS),dS,mS(e)),this.on(this.events("view","pointerout",uS),dS,mS(t)),this}function j1e(){var e=this._tooltip,t=this._timers,i=this._handler.handlers(),n=this._eventListeners,s,l,c,r,a;for(s=t.length;--s>=0;)t[s].stop();for(s=n.length;--s>=0;)for(c=n[s],l=c.sources.length;--l>=0;)c.sources[l].removeEventListener(c.type,c.handler);for(e&&e.call(this,this._handler,null,null,null),s=i.length;--s>=0;)a=i[s].type,r=i[s].handler,this._handler.off(a,r);return this}function Fs(e,t,i){const n=document.createElement(e);for(const s in t)n.setAttribute(s,t[s]);return i!=null&&(n.textContent=i),n}const E1e="vega-bind",P1e="vega-bind-name",U1e="vega-bind-radio";function $1e(e,t,i){if(!t)return;const n=i.param;let s=i.state;return s||(s=i.state={elements:null,active:!1,set:null,update:c=>{c!=e.signal(n.signal)&&e.runAsync(null,()=>{s.source=!0,e.signal(n.signal,c)})}},n.debounce&&(s.update=Y3(n.debounce,s.update))),(n.input==null&&n.element?Q1e:A1e)(s,t,n,e),s.active||(e.on(e._signals[n.signal],null,()=>{s.source?s.source=!1:s.set(e.signal(n.signal))}),s.active=!0),s}function Q1e(e,t,i,n){const s=i.event||"input",l=()=>e.update(t.value);n.signal(i.signal,t.value),t.addEventListener(s,l),oU(n,t,s,l),e.set=c=>{t.value=c,t.dispatchEvent(D1e(s))}}function D1e(e){return typeof Event<"u"?new Event(e):{type:e}}function A1e(e,t,i,n){const s=n.signal(i.signal),l=Fs("div",{class:E1e}),c=i.input==="radio"?l:l.appendChild(Fs("label"));c.appendChild(Fs("span",{class:P1e},i.name||i.signal)),t.appendChild(l);let r=q1e;switch(i.input){case"checkbox":r=eJe;break;case"select":r=tJe;break;case"radio":r=iJe;break;case"range":r=nJe;break}r(e,c,i,s)}function q1e(e,t,i,n){const s=Fs("input");for(const l in i)l!=="signal"&&l!=="element"&&s.setAttribute(l==="input"?"type":l,i[l]);s.setAttribute("name",i.signal),s.value=n,t.appendChild(s),s.addEventListener("input",()=>e.update(s.value)),e.elements=[s],e.set=l=>s.value=l}function eJe(e,t,i,n){const s={type:"checkbox",name:i.signal};n&&(s.checked=!0);const l=Fs("input",s);t.appendChild(l),l.addEventListener("change",()=>e.update(l.checked)),e.elements=[l],e.set=c=>l.checked=!!c||null}function tJe(e,t,i,n){const s=Fs("select",{name:i.signal}),l=i.labels||[];i.options.forEach((c,r)=>{const a={value:c};ZX(c,n)&&(a.selected=!0),s.appendChild(Fs("option",a,(l[r]||c)+""))}),t.appendChild(s),s.addEventListener("change",()=>{e.update(i.options[s.selectedIndex])}),e.elements=[s],e.set=c=>{for(let r=0,a=i.options.length;r<a;++r)if(ZX(i.options[r],c)){s.selectedIndex=r;return}}}function iJe(e,t,i,n){const s=Fs("span",{class:U1e}),l=i.labels||[];t.appendChild(s),e.elements=i.options.map((c,r)=>{const a={type:"radio",name:i.signal,value:c};ZX(c,n)&&(a.checked=!0);const u=Fs("input",a);u.addEventListener("change",()=>e.update(c));const o=Fs("label",{},(l[r]||c)+"");return o.prepend(u),s.appendChild(o),u}),e.set=c=>{const r=e.elements,a=r.length;for(let u=0;u<a;++u)ZX(r[u].value,c)&&(r[u].checked=!0)}}function nJe(e,t,i,n){n=n!==void 0?n:(+i.max+ +i.min)/2;const s=i.max!=null?i.max:Math.max(100,+n)||100,l=i.min||Math.min(0,s,+n)||0,c=i.step||Hf(l,s,100),r=Fs("input",{type:"range",name:i.signal,min:l,max:s,step:c});r.value=n;const a=Fs("span",{},+n);t.appendChild(r),t.appendChild(a);const u=()=>{a.textContent=r.value,e.update(+r.value)};r.addEventListener("input",u),r.addEventListener("change",u),e.elements=[r],e.set=o=>{r.value=o,a.textContent=o}}function ZX(e,t){return e===t||e+""==t+""}function uU(e,t,i,n,s,l){return t=t||new n(e.loader()),t.initialize(i,rU(e),aU(e),l1(e),s,l).background(e.background())}function pv(e,t){return t?function(){try{t.apply(this,arguments)}catch(i){e.error(i)}}:null}function sJe(e,t,i,n){const s=new n(e.loader(),pv(e,e.tooltip())).scene(e.scenegraph().root).initialize(i,l1(e),e);return t&&t.handlers().forEach(l=>{s.on(l.type,l.handler)}),s}function lJe(e,t){const i=this,n=i._renderType,s=i._eventConfig.bind,l=U2(n);e=i._el=e?hY(i,e,!0):null,z1e(i),l||i.error("Unrecognized renderer type: "+n);const c=l.handler||i0,r=e?l.renderer:l.headless;return i._renderer=r?uU(i,i._renderer,e,r):null,i._handler=sJe(i,i._handler,e,c),i._redraw=!0,e&&s!=="none"&&(t=t?i._elBind=hY(i,t,!0):e.appendChild(Fs("form",{class:"vega-bindings"})),i._bind.forEach(a=>{a.param.element&&s!=="container"&&(a.element=hY(i,a.param.element,!!a.param.input))}),i._bind.forEach(a=>{$1e(i,a.element||t,a)})),i}function hY(e,t,i){if(typeof t=="string")if(typeof document<"u"){if(t=document.querySelector(t),!t)return e.error("Signal bind element not found: "+t),null}else return e.error("DOM document instance not found."),null;if(t&&i)try{t.textContent=""}catch(n){t=null,e.error(n)}return t}const Jh=e=>+e||0,cJe=e=>({top:e,bottom:e,left:e,right:e});function bS(e){return we(e)?{top:Jh(e.top),bottom:Jh(e.bottom),left:Jh(e.left),right:Jh(e.right)}:cJe(Jh(e))}async function yv(e,t,i,n){const s=U2(t),l=s&&s.headless;return l||me("Unrecognized renderer type: "+t),await e.runAsync(),uU(e,null,null,l,i,n).renderAsync(e._scenegraph.root)}async function rJe(e,t){e!==Ba.Canvas&&e!==Ba.SVG&&e!==Ba.PNG&&me("Unrecognized image type: "+e);const i=await yv(this,e,t);return e===Ba.SVG?aJe(i.svg(),"image/svg+xml"):i.canvas().toDataURL("image/png")}function aJe(e,t){const i=new Blob([e],{type:t});return window.URL.createObjectURL(i)}async function oJe(e,t){return(await yv(this,Ba.Canvas,e,t)).canvas()}async function uJe(e){return(await yv(this,Ba.SVG,e)).svg()}function dJe(e,t,i){return sU(e,Fm,ip,i).parse(t)}function mJe(e){var t=this._runtime.scales;return Re(t,e)||me("Unrecognized scale or projection: "+e),t[e].value}var dU="width",mU="height",Zv="padding",hS={skip:!0};function bU(e,t){var i=e.autosize(),n=e.padding();return t-(i&&i.contains===Zv?n.left+n.right:0)}function hU(e,t){var i=e.autosize(),n=e.padding();return t-(i&&i.contains===Zv?n.top+n.bottom:0)}function bJe(e){var t=e._signals,i=t[dU],n=t[mU],s=t[Zv];function l(){e._autosize=e._resize=1}e._resizeWidth=e.add(null,r=>{e._width=r.size,e._viewWidth=bU(e,r.size),l()},{size:i}),e._resizeHeight=e.add(null,r=>{e._height=r.size,e._viewHeight=hU(e,r.size),l()},{size:n});const c=e.add(null,l,{pad:s});e._resizeWidth.rank=i.rank+1,e._resizeHeight.rank=n.rank+1,c.rank=s.rank+1}function hJe(e,t,i,n,s,l){this.runAfter(c=>{let r=0;c._autosize=0,c.width()!==i&&(r=1,c.signal(dU,i,hS),c._resizeWidth.skip(!0)),c.height()!==n&&(r=1,c.signal(mU,n,hS),c._resizeHeight.skip(!0)),c._viewWidth!==e&&(c._resize=1,c._viewWidth=e),c._viewHeight!==t&&(c._resize=1,c._viewHeight=t),(c._origin[0]!==s[0]||c._origin[1]!==s[1])&&(c._resize=1,c._origin=s),r&&c.run("enter"),l&&c.runAfter(a=>a.resize())},!1,1)}function fJe(e){return this._runtime.getState(e||{data:pJe,signals:yJe,recurse:!0})}function pJe(e,t){return t.modified&&fe(t.input.value)&&!e.startsWith("_:vega:_")}function yJe(e,t){return!(e==="parent"||t instanceof Fm.proxy)}function ZJe(e){return this.runAsync(null,t=>{t._trigger=!1,t._runtime.setState(e)},t=>{t._trigger=!0}),this}function WJe(e,t){function i(n){e({timestamp:Date.now(),elapsed:n})}this._timers.push(lne(i,t))}function XJe(e,t,i,n){const s=e.element();s&&s.setAttribute("title",JJe(n))}function JJe(e){return e==null?"":fe(e)?fU(e):we(e)&&!qa(e)?xJe(e):e+""}function xJe(e){return Object.keys(e).map(t=>{const i=e[t];return t+": "+(fe(i)?fU(i):pU(i))}).join(` 53`)}function fU(e){return"["+e.map(pU).join(", ")+"]"}function pU(e){return fe(e)?"[â¦]":we(e)&&!qa(e)?"{â¦}":e}function YJe(){if(this.renderer()==="canvas"&&this._renderer._canvas){let e=null;const t=()=>{e!=null&&e();const i=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);i.addEventListener("change",t),e=()=>{i.removeEventListener("change",t)},this._renderer._canvas.getContext("2d").pixelRatio=window.devicePixelRatio||1,this._redraw=!0,this._resize=1,this.resize().runAsync()};t()}}function yU(e,t){const i=this;if(t=t||{},Wm.call(i),t.loader&&i.loader(t.loader),t.logger&&i.logger(t.logger),t.logLevel!=null&&i.logLevel(t.logLevel),t.locale||e.locale){const l=lt({},e.locale,t.locale);i.locale(eO(l.number,l.time))}i._el=null,i._elBind=null,i._renderType=t.renderer||Ba.Canvas,i._scenegraph=new dE;const n=i._scenegraph.root;i._renderer=null,i._tooltip=t.tooltip||XJe,i._redraw=!0,i._handler=new i0().scene(n),i._globalCursor=!1,i._preventDefault=!1,i._timers=[],i._eventListeners=[],i._resizeListeners=[],i._eventConfig=K1e(e.eventConfig),i.globalCursor(i._eventConfig.globalCursor);const s=dJe(i,e,t.expr);i._runtime=s,i._signals=s.signals,i._bind=(e.bindings||[]).map(l=>({state:null,param:lt({},l)})),s.root&&s.root.set(n),n.source=s.data.root.input,i.pulse(s.data.root.input,i.changeset().insert(n.items)),i._width=i.width(),i._height=i.height(),i._viewWidth=bU(i,i._width),i._viewHeight=hU(i,i._height),i._origin=[0,0],i._resize=0,i._autosize=1,bJe(i),w1e(i),H1e(i),i.description(e.description),t.hover&&i.hover(),t.container&&i.initialize(t.container,t.bind),t.watchPixelRatio&&i._watchPixelRatio()}function Oy(e,t){return Re(e._signals,t)?e._signals[t]:me("Unrecognized signal name: "+Ge(t))}function ZU(e,t){const i=(e._targets||[]).filter(n=>n._update&&n._update.handler===t);return i.length?i[0]:null}function fS(e,t,i,n){let s=ZU(i,n);return s||(s=pv(e,()=>n(t,i.value)),s.handler=n,e.on(i,null,s)),e}function pS(e,t,i){const n=ZU(t,i);return n&&t._targets.remove(n),e}ge(yU,Wm,{async evaluate(e,t,i){if(await Wm.prototype.evaluate.call(this,e,t),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,F1e(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(n){this.error(n)}return i&&xZ(this,i),this},dirty(e){this._redraw=!0,this._renderer&&this._renderer.dirty(e)},description(e){if(arguments.length){const t=e!=null?e+"":null;return t!==this._desc&&cU(this._el,this._desc=t),this}return this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(e,t,i){const n=Oy(this,e);return arguments.length===1?n.value:this.update(n,t,i)},width(e){return arguments.length?this.signal("width",e):this.signal("width")},height(e){return arguments.length?this.signal("height",e):this.signal("height")},padding(e){return arguments.length?this.signal("padding",bS(e)):bS(this.signal("padding"))},autosize(e){return arguments.length?this.signal("autosize",e):this.signal("autosize")},background(e){return arguments.length?this.signal("background",e):this.signal("background")},renderer(e){return arguments.length?(U2(e)||me("Unrecognized renderer type: "+e),e!==this._renderType&&(this._renderType=e,this._resetRenderer()),this):this._renderType},tooltip(e){return arguments.length?(e!==this._tooltip&&(this._tooltip=e,this._resetRenderer()),this):this._tooltip},loader(e){return arguments.length?(e!==this._loader&&(Wm.prototype.loader.call(this,e),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(Oy(this,"autosize"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:hJe,addEventListener(e,t,i){let n=t;return i&&i.trap===!1||(n=pv(this,t),n.raw=t),this._handler.on(e,n),this},removeEventListener(e,t){for(var i=this._handler.handlers(e),n=i.length,s,l;--n>=0;)if(l=i[n].type,s=i[n].handler,e===l&&(t===s||t===s.raw)){this._handler.off(l,s);break}return this},addResizeListener(e){const t=this._resizeListeners;return t.includes(e)||t.push(e),this},removeResizeListener(e){var t=this._resizeListeners,i=t.indexOf(e);return i>=0&&t.splice(i,1),this},addSignalListener(e,t){return fS(this,e,Oy(this,e),t)},removeSignalListener(e,t){return pS(this,Oy(this,e),t)},addDataListener(e,t){return fS(this,e,yX(this,e).values,t)},removeDataListener(e,t){return pS(this,yX(this,e).values,t)},globalCursor(e){if(arguments.length){if(this._globalCursor!==!!e){const t=WV(this,null);this._globalCursor=!!e,t&&WV(this,t)}return this}else return this._globalCursor},preventDefault(e){return arguments.length?(this._preventDefault=e,this):this._preventDefault},timer:WJe,events:_1e,finalize:j1e,hover:O1e,data:N1e,change:s1,insert:R1e,remove:k1e,scale:mJe,initialize:lJe,toImageURL:rJe,toCanvas:oJe,toSVG:uJe,getState:fJe,setState:ZJe,_watchPixelRatio:YJe});const GJe="view",WX="[",XX="]",WU="{",XU="}",VJe=":",JU=",",IJe="@",gJe=">",vJe=/[[\]{}]/,zJe={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};let xU,YU;function go(e,t,i){return xU=t||GJe,YU=i||zJe,GU(e.trim()).map(XV)}function wJe(e){return YU[e]}function Yf(e,t,i,n,s){const l=e.length;let c=0,r;for(;t<l;++t){if(r=e[t],!c&&r===i)return t;s&&s.indexOf(r)>=0?--c:n&&n.indexOf(r)>=0&&++c}return t}function GU(e){const t=[],i=e.length;let n=0,s=0;for(;s<i;)s=Yf(e,s,JU,WX+WU,XX+XU),t.push(e.substring(n,s).trim()),n=++s;if(t.length===0)throw"Empty event selector: "+e;return t}function XV(e){return e[0]==="["?HJe(e):NJe(e)}function HJe(e){const t=e.length;let i=1,n;if(i=Yf(e,i,XX,WX,XX),i===t)throw"Empty between selector: "+e;if(n=GU(e.substring(1,i)),n.length!==2)throw"Between selector must have two elements: "+e;if(e=e.slice(i+1).trim(),e[0]!==gJe)throw"Expected '>' after between selector: "+e;n=n.map(XV);const s=XV(e.slice(1).trim());return s.between?{between:n,stream:s}:(s.between=n,s)}function NJe(e){const t={source:xU},i=[];let n=[0,0],s=0,l=0,c=e.length,r=0,a,u;if(e[c-1]===XU){if(r=e.lastIndexOf(WU),r>=0){try{n=RJe(e.substring(r+1,c-1))}catch{throw"Invalid throttle specification: "+e}e=e.slice(0,r).trim(),c=e.length}else throw"Unmatched right brace: "+e;r=0}if(!c)throw e;if(e[0]===IJe&&(s=++r),a=Yf(e,r,VJe),a<c&&(i.push(e.substring(l,a).trim()),l=r=++a),r=Yf(e,r,WX),r===c)i.push(e.substring(l,c).trim());else if(i.push(e.substring(l,r).trim()),u=[],l=++r,l===c)throw"Unmatched left bracket: "+e;for(;r<c;){if(r=Yf(e,r,XX),r===c)throw"Unmatched left bracket: "+e;if(u.push(e.substring(l,r).trim()),r<c-1&&e[++r]!==WX)throw"Expected left bracket: "+e;l=++r}if(!(c=i.length)||vJe.test(i[c-1]))throw"Invalid event selector: "+e;return c>1?(t.type=i[1],s?t.markname=i[0].slice(1):wJe(i[0])?t.marktype=i[0]:t.source=i[0]):t.type=i[0],t.type.slice(-1)==="!"&&(t.consume=!0,t.type=t.type.slice(0,-1)),u!=null&&(t.filter=u),n[0]&&(t.throttle=n[0]),n[1]&&(t.debounce=n[1]),t}function RJe(e){const t=e.split(JU);if(!e.length||t.length>2)throw e;return t.map(i=>{const n=+i;if(n!==n)throw e;return n})}function kJe(e){return we(e)?e:{type:e||"pad"}}const xh=e=>+e||0,FJe=e=>({top:e,bottom:e,left:e,right:e});function SJe(e){return we(e)?e.signal?e:{top:xh(e.top),bottom:xh(e.bottom),left:xh(e.left),right:xh(e.right)}:FJe(xh(e))}const _i=e=>we(e)&&!fe(e)?lt({},e):{value:e};function yS(e,t,i,n){return i!=null?(we(i)&&!fe(i)||fe(i)&&i.length&&we(i[0])?e.update[t]=i:e[n||"enter"][t]={value:i},1):0}function un(e,t,i){for(const n in t)yS(e,n,t[n]);for(const n in i)yS(e,n,i[n],"update")}function Nb(e,t,i){for(const n in t)i&&Re(i,n)||(e[n]=lt(e[n]||{},t[n]));return e}function qd(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}const Wv="mark",Xv="frame",Jv="scope",LJe="axis",CJe="axis-domain",TJe="axis-grid",MJe="axis-label",KJe="axis-tick",BJe="axis-title",_Je="legend",OJe="legend-band",jJe="legend-entry",EJe="legend-gradient",VU="legend-label",PJe="legend-symbol",UJe="legend-title",$Je="title",QJe="title-text",DJe="title-subtitle";function AJe(e,t,i,n,s){const l={},c={};let r,a,u,o;a="lineBreak",t==="text"&&s[a]!=null&&!qd(a,e)&&fY(l,a,s[a]),(i=="legend"||String(i).startsWith("axis"))&&(i=null),o=i===Xv?s.group:i===Wv?lt({},s.mark,s[t]):null;for(a in o)u=qd(a,e)||(a==="fill"||a==="stroke")&&(qd("fill",e)||qd("stroke",e)),u||fY(l,a,o[a]);Ne(n).forEach(d=>{const b=s.style&&s.style[d];for(const h in b)qd(h,e)||fY(l,h,b[h])}),e=lt({},e);for(a in l)o=l[a],o.signal?(r=r||{})[a]=o:c[a]=o;return e.enter=lt(c,e.enter),r&&(e.update=lt(r,e.update)),e}function fY(e,t,i){e[t]=i&&i.signal?{signal:i.signal}:{value:i}}const IU=e=>He(e)?Ge(e):e.signal?`(${e.signal})`:gU(e);function c1(e){if(e.gradient!=null)return exe(e);let t=e.signal?`(${e.signal})`:e.color?qJe(e.color):e.field!=null?gU(e.field):e.value!==void 0?Ge(e.value):void 0;return e.scale!=null&&(t=txe(e,t)),t===void 0&&(t=null),e.exponent!=null&&(t=`pow(${t},${CZ(e.exponent)})`),e.mult!=null&&(t+=`*${CZ(e.mult)}`),e.offset!=null&&(t+=`+${CZ(e.offset)}`),e.round&&(t=`round(${t})`),t}const jy=(e,t,i,n)=>`(${e}(${[t,i,n].map(c1).join(",")})+'')`;function qJe(e){return e.c?jy("hcl",e.h,e.c,e.l):e.h||e.s?jy("hsl",e.h,e.s,e.l):e.l||e.a?jy("lab",e.l,e.a,e.b):e.r||e.g||e.b?jy("rgb",e.r,e.g,e.b):null}function exe(e){const t=[e.start,e.stop,e.count].map(i=>i==null?null:Ge(i));for(;t.length&&Zt(t)==null;)t.pop();return t.unshift(IU(e.gradient)),`gradient(${t.join(",")})`}function CZ(e){return we(e)?"("+c1(e)+")":e}function gU(e){return vU(we(e)?e:{datum:e})}function vU(e){let t,i,n;if(e.signal)t="datum",n=e.signal;else if(e.group||e.parent){for(i=Math.max(1,e.level||1),t="item";i-- >0;)t+=".mark.group";e.parent?(n=e.parent,t+=".datum"):n=e.group}else e.datum?(t="datum",n=e.datum):me("Invalid field reference: "+Ge(e));return e.signal||(n=He(n)?lr(n).map(Ge).join("]["):vU(n)),t+"["+n+"]"}function txe(e,t){const i=IU(e.scale);return e.range!=null?t=`lerp(_range(${i}), ${+e.range})`:(t!==void 0&&(t=`_scale(${i}, ${t})`),e.band&&(t=(t?t+"+":"")+`_bandwidth(${i})`+(+e.band==1?"":"*"+CZ(e.band)),e.extra&&(t=`(datum.extra ? _scale(${i}, datum.extra.value) : ${t})`)),t==null&&(t="0")),t}function ixe(e){let t="";return e.forEach(i=>{const n=c1(i);t+=i.test?`(${i.test})?${n}:`:n}),Zt(t)===":"&&(t+="null"),t}function zU(e,t,i,n,s,l){const c={};l=l||{},l.encoders={$encode:c},e=AJe(e,t,i,n,s.config);for(const r in e)c[r]=nxe(e[r],t,l,s);return l}function nxe(e,t,i,n){const s={},l={};for(const c in e)e[c]!=null&&(s[c]=lxe(sxe(e[c]),n,i,l));return{$expr:{marktype:t,channels:s},$fields:Object.keys(l),$output:Object.keys(e)}}function sxe(e){return fe(e)?ixe(e):c1(e)}function lxe(e,t,i,n){const s=qc(e,t);return s.$fields.forEach(l=>n[l]=1),lt(i,s.$params),s.$expr}const cxe="outer",rxe=["value","update","init","react","bind"];function ZS(e,t){me(e+' for "outer" push: '+Ge(t))}function wU(e,t){const i=e.name;if(e.push===cxe)t.signals[i]||ZS("No prior signal definition",i),rxe.forEach(n=>{e[n]!==void 0&&ZS("Invalid property ",n)});else{const n=t.addSignal(i,e.value);e.react===!1&&(n.react=!1),e.bind&&t.addBinding(i,e.bind)}}function JV(e,t,i,n){this.id=-1,this.type=e,this.value=t,this.params=i,n&&(this.parent=n)}function r1(e,t,i,n){return new JV(e,t,i,n)}function JX(e,t){return r1("operator",e,t)}function _e(e){const t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function np(e,t){return t?{$field:e,$name:t}:{$field:e}}const xV=np("key");function WS(e,t){return{$compare:e,$order:t}}function axe(e,t){const i={$key:e};return t&&(i.$flat=!0),i}const oxe="ascending",uxe="descending";function dxe(e){return we(e)?(e.order===uxe?"-":"+")+a1(e.op,e.field):""}function a1(e,t){return(e&&e.signal?"$"+e.signal:e||"")+(e&&t?"_":"")+(t&&t.signal?"$"+t.signal:t||"")}const xv="scope",YV="view";function Si(e){return e&&e.signal}function mxe(e){return e&&e.expr}function TZ(e){if(Si(e))return!0;if(we(e)){for(const t in e)if(TZ(e[t]))return!0}return!1}function vl(e,t){return e??t}function Zu(e){return e&&e.signal||e}const XS="timer";function sp(e,t){return(e.merge?hxe:e.stream?fxe:e.type?pxe:me("Invalid stream specification: "+Ge(e)))(e,t)}function bxe(e){return e===xv?YV:e||YV}function hxe(e,t){const i=e.merge.map(s=>sp(s,t)),n=Yv({merge:i},e,t);return t.addStream(n).id}function fxe(e,t){const i=sp(e.stream,t),n=Yv({stream:i},e,t);return t.addStream(n).id}function pxe(e,t){let i;e.type===XS?(i=t.event(XS,e.throttle),e={between:e.between,filter:e.filter}):i=t.event(bxe(e.source),e.type);const n=Yv({stream:i},e,t);return Object.keys(n).length===1?i:t.addStream(n).id}function Yv(e,t,i){let n=t.between;return n&&(n.length!==2&&me('Stream "between" parameter must have 2 entries: '+Ge(t)),e.between=[sp(n[0],i),sp(n[1],i)]),n=t.filter?[].concat(t.filter):[],(t.marktype||t.markname||t.markrole)&&n.push(yxe(t.marktype,t.markname,t.markrole)),t.source===xv&&n.push("inScope(event.item)"),n.length&&(e.filter=qc("("+n.join(")&&(")+")",i).$expr),(n=t.throttle)!=null&&(e.throttle=+n),(n=t.debounce)!=null&&(e.debounce=+n),t.consume&&(e.consume=!0),e}function yxe(e,t,i){const n="event.item";return n+(e&&e!=="*"?"&&"+n+".mark.marktype==='"+e+"'":"")+(i?"&&"+n+".mark.role==='"+i+"'":"")+(t?"&&"+n+".mark.name==='"+t+"'":"")}const Zxe={code:"_.$value",ast:{type:"Identifier",value:"value"}};function Wxe(e,t,i){const n=e.encode,s={target:i};let l=e.events,c=e.update,r=[];l||me("Signal update missing events specification."),He(l)&&(l=go(l,t.isSubscope()?xv:YV)),l=Ne(l).filter(a=>a.signal||a.scale?(r.push(a),0):1),r.length>1&&(r=[Jxe(r)]),l.length&&r.push(l.length>1?{merge:l}:l[0]),n!=null&&(c&&me("Signal encode and update are mutually exclusive."),c="encode(item(),"+Ge(n)+")"),s.update=He(c)?qc(c,t):c.expr!=null?qc(c.expr,t):c.value!=null?c.value:c.signal!=null?{$expr:Zxe,$params:{$value:t.signalRef(c.signal)}}:me("Invalid signal update specification."),e.force&&(s.options={force:!0}),r.forEach(a=>t.addUpdate(lt(Xxe(a,t),s)))}function Xxe(e,t){return{source:e.signal?t.signalRef(e.signal):e.scale?t.scaleRef(e.scale):sp(e,t)}}function Jxe(e){return{signal:"["+e.map(t=>t.scale?'scale("'+t.scale+'")':t.signal)+"]"}}function xxe(e,t){const i=t.getSignal(e.name);let n=e.update;e.init&&(n?me("Signals can not include both init and update expressions."):(n=e.init,i.initonly=!0)),n&&(n=qc(n,t),i.update=n.$expr,i.params=n.$params),e.on&&e.on.forEach(s=>Wxe(s,t,i.id))}const Ot=e=>(t,i,n)=>r1(e,i,t||void 0,n),HU=Ot("aggregate"),Yxe=Ot("axisticks"),NU=Ot("bound"),sc=Ot("collect"),JS=Ot("compare"),Gxe=Ot("datajoin"),RU=Ot("encode"),Vxe=Ot("expression"),Ixe=Ot("facet"),gxe=Ot("field"),vxe=Ot("key"),zxe=Ot("legendentries"),wxe=Ot("load"),Hxe=Ot("mark"),Nxe=Ot("multiextent"),Rxe=Ot("multivalues"),kxe=Ot("overlap"),Fxe=Ot("params"),kU=Ot("prefacet"),Sxe=Ot("projection"),Lxe=Ot("proxy"),Cxe=Ot("relay"),FU=Ot("render"),Txe=Ot("scale"),ad=Ot("sieve"),Mxe=Ot("sortitems"),SU=Ot("viewlayout"),Kxe=Ot("values");let Bxe=0;const LU={min:"min",max:"max",count:"sum"};function _xe(e,t){const i=e.type||"linear";Yj(i)||me("Unrecognized scale type: "+Ge(i)),t.addScale(e.name,{type:i,domain:void 0})}function Oxe(e,t){const i=t.getScale(e.name).params;let n;i.domain=CU(e.domain,e,t),e.range!=null&&(i.range=MU(e,t,i)),e.interpolate!=null&&eYe(e.interpolate,i),e.nice!=null&&(i.nice=qxe(e.nice,t)),e.bins!=null&&(i.bins=Axe(e.bins,t));for(n in e)Re(i,n)||n==="name"||(i[n]=nl(e[n],t))}function nl(e,t){return we(e)?e.signal?t.signalRef(e.signal):me("Unsupported object: "+Ge(e)):e}function MZ(e,t){return e.signal?t.signalRef(e.signal):e.map(i=>nl(i,t))}function o1(e){me("Can not find data set: "+Ge(e))}function CU(e,t,i){if(!e){(t.domainMin!=null||t.domainMax!=null)&&me("No scale domain defined for domainMin/d
53omainMax to override.");return}return e.signal?i.signalRef(e.signal):(fe(e)?jxe:e.fields?Pxe:Exe)(e,t,i)}function jxe(e,t,i){return e.map(n=>nl(n,i))}function Exe(e,t,i){const n=i.getData(e.data);return n||o1(e.data),Cm(t.type)?n.valuesRef(i,e.field,TU(e.sort,!1)):Ij(t.type)?n.domainRef(i,e.field):n.extentRef(i,e.field)}function Pxe(e,t,i){const n=e.data,s=e.fields.reduce((l,c)=>(c=He(c)?{data:n,field:c}:fe(c)||c.signal?Uxe(c,i):c,l.push(c),l),[]);return(Cm(t.type)?$xe:Ij(t.type)?Qxe:Dxe)(e,i,s)}function Uxe(e,t){const i="_:vega:_"+Bxe++,n=sc({});if(fe(e))n.value={$ingest:e};else if(e.signal){const s="setdata("+Ge(i)+","+e.signal+")";n.params.input=t.signalRef(s)}return t.addDataPipeline(i,[n,ad({})]),{data:i,field:"data"}}function $xe(e,t,i){const n=TU(e.sort,!0);let s,l;const c=i.map(u=>{const o=t.getData(u.data);return o||o1(u.data),o.countsRef(t,u.field,n)}),r={groupby:xV,pulse:c};n&&(s=n.op||"count",l=n.field?a1(s,n.field):"count",r.ops=[LU[s]],r.fields=[t.fieldRef(l)],r.as=[l]),s=t.add(HU(r));const a=t.add(sc({pulse:_e(s)}));return l=t.add(Kxe({field:xV,sort:t.sortRef(n),pulse:_e(a)})),_e(l)}function TU(e,t){return e&&(!e.field&&!e.op?we(e)?e.field="key":e={field:"key"}:!e.field&&e.op!=="count"?me("No field provided for sort aggregate op: "+e.op):t&&e.field&&e.op&&!LU[e.op]&&me("Multiple domain scales can not be sorted using "+e.op)),e}function Qxe(e,t,i){const n=i.map(s=>{const l=t.getData(s.data);return l||o1(s.data),l.domainRef(t,s.field)});return _e(t.add(Rxe({values:n})))}function Dxe(e,t,i){const n=i.map(s=>{const l=t.getData(s.data);return l||o1(s.data),l.extentRef(t,s.field)});return _e(t.add(Nxe({extents:n})))}function Axe(e,t){return e.signal||fe(e)?MZ(e,t):t.objectProperty(e)}function qxe(e,t){return e.signal?t.signalRef(e.signal):we(e)?{interval:nl(e.interval),step:nl(e.step)}:nl(e)}function eYe(e,t){t.interpolate=nl(e.type||e),e.gamma!=null&&(t.interpolateGamma=nl(e.gamma))}function MU(e,t,i){const n=t.config.range;let s=e.range;if(s.signal)return t.signalRef(s.signal);if(He(s)){if(n&&Re(n,s))return e=lt({},e,{range:n[s]}),MU(e,t,i);s==="width"?s=[0,{signal:"width"}]:s==="height"?s=Cm(e.type)?[0,{signal:"height"}]:[{signal:"height"},0]:me("Unrecognized scale range value: "+Ge(s))}else if(s.scheme){i.scheme=fe(s.scheme)?MZ(s.scheme,t):nl(s.scheme,t),s.extent&&(i.schemeExtent=MZ(s.extent,t)),s.count&&(i.schemeCount=nl(s.count,t));return}else if(s.step){i.rangeStep=nl(s.step,t);return}else{if(Cm(e.type)&&!fe(s))return CU(s,e,t);fe(s)||me("Unsupported range type: "+Ge(s))}return s.map(l=>(fe(l)?MZ:nl)(l,t))}function tYe(e,t){const i=t.config.projection||{},n={};for(const s in e)s!=="name"&&(n[s]=GV(e[s],s,t));for(const s in i)n[s]==null&&(n[s]=GV(i[s],s,t));t.addProjection(e.name,n)}function GV(e,t,i){return fe(e)?e.map(n=>GV(n,t,i)):we(e)?e.signal?i.signalRef(e.signal):t==="fit"?e:me("Unsupported parameter object: "+Ge(e)):e}const lc="top",Rb="left",kb="right",po="bottom",KU="center",iYe="vertical",nYe="start",sYe="middle",lYe="end",VV="index",Gv="label",cYe="offset",jm="perc",rYe="perc2",cl="value",m0="guide-label",Vv="guide-title",aYe="group-title",oYe="group-subtitle",xS="symbol",KZ="gradient",IV="discrete",gV="size",uYe="shape",dYe="fill",mYe="stroke",bYe="strokeWidth",hYe="strokeDash",fYe="opacity",Iv=[gV,uYe,dYe,mYe,bYe,hYe,fYe],b0={name:1,style:1,interactive:1},xt={value:0},rl={value:1},u1="group",BU="rect",gv="rule",pYe="symbol",od="text";function lp(e){return e.type=u1,e.interactive=e.interactive||!1,e}function Xs(e,t){const i=(n,s)=>vl(e[n],vl(t[n],s));return i.isVertical=n=>iYe===vl(e.direction,t.direction||(n?t.symbolDirection:t.gradientDirection)),i.gradientLength=()=>vl(e.gradientLength,t.gradientLength||t.gradientWidth),i.gradientThickness=()=>vl(e.gradientThickness,t.gradientThickness||t.gradientHeight),i.entryColumns=()=>vl(e.columns,vl(t.columns,+i.isVertical(!0))),i}function _U(e,t){const i=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return i&&i.signal?i:i?i.value:null}function yYe(e,t,i){const n=t.config.style[i];return n&&n[e]}function d1(e,t,i){return`item.anchor === '${nYe}' ? ${e} : item.anchor === '${lYe}' ? ${t} : ${i}`}const vv=d1(Ge(Rb),Ge(kb),Ge(KU));function ZYe(e){const t=e("tickBand");let i=e("tickOffset"),n,s;return t?t.signal?(n={signal:`(${t.signal}) === 'extent' ? 1 : 0.5`},s={signal:`(${t.signal}) === 'extent'`},we(i)||(i={signal:`(${t.signal}) === 'extent' ? 0 : ${i}`})):t==="extent"?(n=1,s=!0,i=0):(n=.5,s=!1):(n=e("bandPosition"),s=e("tickExtra")),{extra:s,band:n,offset:i}}function OU(e,t){return t?e?we(e)?Object.assign({},e,{offset:OU(e.offset,t)}):{value:e,offset:t}:t:e}function Bs(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=Nb(e.encode,t,b0)):e.interactive=!1,e}function WYe(e,t,i,n){const s=Xs(e,i),l=s.isVertical(),c=s.gradientThickness(),r=s.gradientLength();let a,u,o,d,b;
vendor: 4,161 bytes, line 53
53l?(u=[0,1],o=[0,0],d=c,b=r):(u=[0,0],o=[1,0],d=r,b=c);const h={enter:a={opacity:xt,x:xt,y:xt,width:_i(d),height:_i(b)},update:lt({},a,{opacity:rl,fill:{gradient:t,start:u,stop:o}}),exit:{opacity:xt}};return un(h,{stroke:s("gradientStrokeColor"),strokeWidth:s("gradientStrokeWidth")},{opacity:s("gradientOpacity")}),Bs({type:BU,role:EJe,encode:h},n)}function XYe(e,t,i,n,s){const l=Xs(e,i),c=l.isVertical(),r=l.gradientThickness(),a=l.gradientLength();let u,o,d,b,h="";c?(u="y",d="y2",o="x",b="width",h="1-"):(u="x",d="x2",o="y",b="height");const p={opacity:xt,fill:{scale:t,field:cl}};p[u]={signal:h+"datum."+jm,mult:a},p[o]=xt,p[d]={signal:h+"datum."+rYe,mult:a},p[b]=_i(r);const Z={enter:p,update:lt({},p,{opacity:rl}),exit:{opacity:xt}};return un(Z,{stroke:l("gradientStrokeColor"),strokeWidth:l("gradientStrokeWidth")},{opacity:l("gradientOpacity")}),Bs({type:BU,role:OJe,key:cl,from:s,encode:Z},n)}const JYe=`datum.${jm}<=0?"${Rb}":datum.${jm}>=1?"${kb}":"${KU}"`,xYe=`datum.${jm}<=0?"${po}":datum.${jm}>=1?"${lc}":"${sYe}"`;function YS(e,t,i,n){const s=Xs(e,t),l=s.isVertical(),c=_i(s.gradientThickness()),r=s.gradientLength();let a=s("labelOverlap"),u,o,d,b,h="";const p={enter:u={opacity:xt},update:o={opacity:rl,text:{field:Gv}},exit:{opacity:xt}};return un(p,{fill:s("labelColor"),fillOpacity:s("labelOpacity"),font:s("labelFont"),fontSize:s("labelFontSize"),fontStyle:s("labelFontStyle"),fontWeight:s("labelFontWeight"),limit:vl(e.labelLimit,t.gradientLabelLimit)}),l?(u.align={value:"left"},u.baseline=o.baseline={signal:xYe},d="y",b="x",h="1-"):(u.align=o.align={signal:JYe},u.baseline={value:"top"},d="x",b="y"),u[d]=o[d]={signal:h+"datum."+jm,mult:r},u[b]=o[b]=c,c.offset=vl(e.labelOffset,t.gradientLabelOffset)||0,a=a?{separation:s("labelSeparation"),method:a,order:"datum."+VV}:void 0,Bs({type:od,role:VU,style:m0,key:cl,from:n,encode:p,overlap:a},i)}function YYe(e,t,i,n,s){const l=Xs(e,t),c=i.entries,r=!!(c&&c.interactive),a=c?c.name:void 0,u=l("clipHeight"),o=l("symbolOffset"),d={data:"value"},b=`(${s}) ? datum.${cYe} : datum.${gV}`,h=u?_i(u):{field:gV},p=`datum.${VV}`,Z=`max(1, ${s})`;let X,J,V,g,I;h.mult=.5,X={enter:J={opacity:xt,x:{signal:b,mult:.5,offset:o},y:h},update:V={opacity:rl,x:J.x,y:J.y},exit:{opacity:xt}};let v=null,k=null;e.fill||(v=t.symbolBaseFillColor,k=t.symbolBaseStrokeColor),un(X,{fill:l("symbolFillColor",v),shape:l("symbolType"),size:l("symbolSize"),stroke:l("symbolStrokeColor",k),strokeDash:l("symbolDash"),strokeDashOffset:l("symbolDashOffset"),strokeWidth:l("symbolStrokeWidth")},{opacity:l("symbolOpacity")}),Iv.forEach(w=>{e[w]&&(V[w]=J[w]={scale:e[w],field:cl})});const N=Bs({type:pYe,role:PJe,key:cl,from:d,clip:u?!0:void 0,encode:X},i.symbols),C=_i(o);C.offset=l("labelOffset"),X={enter:J={opacity:xt,x:{signal:b,offset:C},y:h},update:V={opacity:rl,text:{field:Gv},x:J.x,y:J.y},exit:{opacity:xt}},un(X,{align:l("labelAlign"),baseline:l("labelBaseline"),fill:l("labelColor"),fillOpacity:l("labelOpacity"),font:l("labelFont"),fontSize:l("labelFontSize"),fontStyle:l("labelFontStyle"),fontWeight:l("labelFontWeight"),limit:l("labelLimit")});const f=Bs({type:od,role:VU,style:m0,key:cl,from:d,encode:X},i.labels);return X={enter:{noBound:{value:!u},width:xt,height:u?_i(u):xt,opacity:xt},exit:{opacity:xt},update:V={opacity:rl,row:{signal:null},column:{signal:null}}},l.isVertical(!0)?(g=`ceil(item.mark.items.length / ${Z})`,V.row.signal=`${p}%${g}`,V.column.signal=`floor(${p} / ${g})`,I={field:["row",p]}):(V.row.signal=`floor(${p} / ${Z})`,V.column.signal=`${p} % ${Z}`,I={field:p}),V.column.signal=`(${s})?${V.column.signal}:${p}`,n={facet:{data:n,name:"value",groupby:VV}},lp({role:Jv,from:n,encode:Nb(X,c,b0),marks:[N,f],name:a,interactive:r,sort:I})}function GYe(e,t){const i=Xs(e,t);return{align:i("gridAlign"),columns:i.entryColumns(),center:{row:!0,column:!1},padding:{row:i("rowPadding"),column:i("columnPadding")}}}const zv='item.orient === "left"',wv='item.orient === "right"',m1=`(${zv} || ${wv})`,VYe=`datum.vgrad && ${m1}`,IYe=d1('"top"','"bottom"','"middle"'),gYe=d1('"right"','"left"','"center"'),vYe=`datum.vgrad && ${wv} ? (${gYe}) : (${m1} && !(datum.vgrad && ${zv})) ? "left" : ${vv}
53`,zYe=`item._anchor || (${m1} ? "middle" : "start")`,wYe=`${VYe} ? (${zv} ? -90 : 90) : 0`,HYe=`${m1} ? (datum.vgrad ? (${wv} ? "bottom" : "top") : ${IYe}) : "top"`;function NYe(e,t,i,n){const s=Xs(e,t),l={enter:{opacity:xt},update:{opacity:rl,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:xt}};return un(l,{orient:s("titleOrient"),_anchor:s("titleAnchor"),anchor:{signal:zYe},angle:{signal:wYe},align:{signal:vYe},baseline:{signal:HYe},text:e.title,fill:s("titleColor"),fillOpacity:s("titleOpacity"),font:s("titleFont"),fontSize:s("titleFontSize"),fontStyle:s("titleFontStyle"),fontWeight:s("titleFontWeight"),limit:s("titleLimit"),lineHeight:s("titleLineHeight")},{align:s("titleAlign"),baseline:s("titleBaseline")}),Bs({type:od,role:UJe,style:Vv,from:n,encode:l},i)}function RYe(e,t){let i;return we(e)&&(e.signal?i=e.signal:e.path?i="pathShape("+GS(e.path)+")":e.sphere&&(i="geoShape("+GS(e.sphere)+', {type: "Sphere"})')),i?t.signalRef(i):!!e}function GS(e){return we(e)&&e.signal?e.signal:Ge(e)}function jU(e){const t=e.role||"";return t.startsWith("axis")||t.startsWith("legend")||t.startsWith("title")?t:e.type===u1?Jv:t||Wv}function kYe(e){return{marktype:e.type,name:e.name||void 0,role:e.role||jU(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function FYe(e,t){return e&&e.signal?t.signalRef(e.signal):e!==!1}function Hv(e,t){const i=bO(e.type);i||me("Unrecognized transform type: "+Ge(e.type));const n=r1(i.type.toLowerCase(),null,EU(i,e,t));return e.signal&&t.addSignal(e.signal,t.proxy(n)),n.metadata=i.metadata||{},n}function EU(e,t,i){const n={},s=e.params.length;for(let l=0;l<s;++l){const c=e.params[l];n[c.name]=SYe(c,t,i)}return n}function SYe(e,t,i){const n=e.type,s=t[e.name];if(n==="index")return LYe(e,t,i);if(s===void 0){e.required&&me("Missing required "+Ge(t.type)+" parameter: "+Ge(e.name));return}else{if(n==="param")return CYe(e,t,i);if(n==="projection")return i.projectionRef(t[e.name])}return e.array&&!Si(s)?s.map(l=>VS(e,l,i)):VS(e,s,i)}function VS(e,t,i){const n=e.type;if(Si(t))return gS(n)?me("Expression references can not be signals."):pY(n)?i.fieldRef(t):vS(n)?i.compareRef(t):i.signalRef(t.signal);{const s=e.expr||pY(n);return s&&TYe(t)?i.exprRef(t.expr,t.as):s&&MYe(t)?np(t.field,t.as):gS(n)?qc(t,i):KYe(n)?_e(i.getData(t).values):pY(n)?np(t):vS(n)?i.compareRef(t):t}}function LYe(e,t,i){return He(t.from)||me('Lookup "from" parameter must be a string literal.'),i.getData(t.from).lookupRef(i,t.key)}function CYe(e,t,i){const n=t[e.name];return e.array?(fe(n)||me("Expected an array of sub-parameters. Instead: "+Ge(n)),n.map(s=>IS(e,s,i))):IS(e,n,i)}function IS(e,t,i){const n=e.params.length;let s;for(let c=0;c<n;++c){s=e.params[c];for(const r in s.key)if(s.key[r]!==t[r]){s=null;break}if(s)break}s||me("Unsupported parameter: "+Ge(t));const l=lt(EU(s,t,i),s.key);return _e(i.add(Fxe(l)))}const TYe=e=>e&&e.expr,MYe=e=>e&&e.field,KYe=e=>e==="data",gS=e=>e==="expr",pY=e=>e==="field",vS=e=>e==="compare";function BYe(e,t,i){let n,s,l,c,r;return e?(n=e.facet)&&(t||me("Only group marks can be faceted."),n.field!=null?c=r=BZ(n,i):(e.data?r=_e(i.getData(e.data).aggregate):(l=Hv(lt({type:"aggregate",groupby:Ne(n.groupby)},n.aggregate),i),l.params.key=i.keyRef(n.groupby),l.params.pulse=BZ(n,i),c=r=_e(i.add(l))),s=i.keyRef(n.groupby,!0))):c=_e(i.add(sc(null,[{}]))),c||(c=BZ(e,i)),{key:s,pulse:c,parent:r}}function BZ(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:_e(t.getData(e.data).output)}function Mu(e,t,i,n,s){this.scope=e,this.input=t,this.output=i,this.values=n,this.aggregate=s,this.index={}}Mu.fromEntries=function(e,t){const i=t.length,n=t[i-1],s=t[i-2];let l=t[0],c=null,r=1;for(l&&l.type==="load"&&(l=t[1]),e.add(t[0]);r<i;++r)t[r].params.pulse=_e(t[r-1]),e.add(t[r]),t[r].type==="aggregate"&&(c=t[r]);return new Mu(e,l,s,n,c)};function PU(e){return He(e)?e:null}function zS(e,t,i){const n=a1(i.op,i.field);let s;if(t.ops){for(let l=0,c=t.as.length;l<c;++l)if(t.as[l]===n)return}else t.ops=["count"],t.fields=[null],t.as=["count"];i.op&&(t.ops.push((s=i.op.signal)?e.signalRef(s):i.op),t.fields.push(e.fieldRef(i.field)),t.as.push(n))}function Yh(e,t,i,n,s,l,c){const r=t[i]||(t[i]={}),a=dxe(l);let u=PU(s),o,d;if(u!=null&&(e=t.scope,u=u+(a?"|"+a:""),o=r[u]),!o){const b=l?{field:xV,pulse:t.countsRef(e,s,l)}:{field:e.fieldRef(s),pulse:_e(t.output)};a&&(b.sort=e.sortRef(l)),d=e.add(r1(n,void 0,b)),c&&(t.index[s]=d),o=_e(d),u!=null&&(r[u]=o)}return o}Mu.prototype={countsRef(e,t,i){const n=this,s=n.counts||(n.counts={}),l=PU(t);let c,r,a;return l!=null&&(e=n.scope,c=s[l]),c?i&&i.field&&zS(e,c.agg.params,i):(a={groupby:e.fieldRef(t,"key"),pulse:_e(n.output)}
vendor: 33,662 bytes, line 53
53,i&&i.field&&zS(e,a,i),r=e.add(HU(a)),c=e.add(sc({pulse:_e(r)})),c={agg:r,ref:_e(c)},l!=null&&(s[l]=c)),c.ref},tuplesRef(){return _e(this.values)},extentRef(e,t){return Yh(e,this,"extent","extent",t,!1)},domainRef(e,t){return Yh(e,this,"domain","values",t,!1)},valuesRef(e,t,i){return Yh(e,this,"vals","values",t,i||!0)},lookupRef(e,t){return Yh(e,this,"lookup","tupleindex",t,!1)},indataRef(e,t){return Yh(e,this,"indata","tupleindex",t,!0,!0)}};function _Ye(e,t,i){const n=e.from.facet,s=n.name,l=BZ(n,t);let c;n.name||me("Facet must have a name: "+Ge(n)),n.data||me("Facet must reference a data set: "+Ge(n)),n.field?c=t.add(kU({field:t.fieldRef(n.field),pulse:l})):n.groupby?c=t.add(Ixe({key:t.keyRef(n.groupby),group:_e(t.proxy(i.parent)),pulse:l})):me("Facet must specify groupby or field: "+Ge(n));const r=t.fork(),a=r.add(sc()),u=r.add(ad({pulse:_e(a)}));r.addData(s,new Mu(r,a,a,u)),r.addSignal("parent",null),c.params.subflow={$subflow:r.parse(e).toRuntime()}}function OYe(e,t,i){const n=t.add(kU({pulse:i.pulse})),s=t.fork();s.add(ad()),s.addSignal("parent",null),n.params.subflow={$subflow:s.parse(e).toRuntime()}}function UU(e,t,i){const n=e.remove,s=e.insert,l=e.toggle,c=e.modify,r=e.values,a=t.add(JX()),u="if("+e.trigger+',modify("'+i+'",'+[s,n,l,c,r].map(d=>d??"null").join(",")+"),0)",o=qc(u,t);a.update=o.$expr,a.params=o.$params}function b1(e,t){const i=jU(e),n=e.type===u1,s=e.from&&e.from.facet,l=e.overlap;let c=e.layout||i===Jv||i===Xv,r,a,u,o,d,b,h;const p=i===Wv||c||s,Z=BYe(e.from,n,t);a=t.add(Gxe({key:Z.key||(e.key?np(e.key):void 0),pulse:Z.pulse,clean:!n}));const X=_e(a);a=u=t.add(sc({pulse:X})),a=t.add(Hxe({markdef:kYe(e),interactive:FYe(e.interactive,t),clip:RYe(e.clip,t),context:{$context:!0},groups:t.lookup(),parent:t.signals.parent?t.signalRef("parent"):null,index:t.markpath(),pulse:_e(a)}));const J=_e(a);a=o=t.add(RU(zU(e.encode,e.type,i,e.style,t,{mod:!1,pulse:J}))),a.params.parent=t.encode(),e.transform&&e.transform.forEach(k=>{const N=Hv(k,t),C=N.metadata;(C.generates||C.changes)&&me("Mark transforms should not generate new data."),C.nomod||(o.params.mod=!0),N.params.pulse=_e(a),t.add(a=N)}),e.sort&&(a=t.add(Mxe({sort:t.compareRef(e.sort),pulse:_e(a)})));const V=_e(a);(s||c)&&(c=t.add(SU({layout:t.objectProperty(e.layout),legends:t.legends,mark:J,pulse:V})),b=_e(c));const g=t.add(NU({mark:J,pulse:b||V}));h=_e(g),n&&(p&&(r=t.operators,r.pop(),c&&r.pop()),t.pushState(V,b||h,X),s?_Ye(e,t,Z):p?OYe(e,t,Z):t.parse(e),t.popState(),p&&(c&&r.push(c),r.push(g))),l&&(h=jYe(l,h,t));const I=t.add(FU({pulse:h})),v=t.add(ad({pulse:_e(I)},void 0,t.parent()));e.name!=null&&(d=e.name,t.addData(d,new Mu(t,u,I,v)),e.on&&e.on.forEach(k=>{(k.insert||k.remove||k.toggle)&&me("Marks only support modify triggers."),UU(k,t,d)}))}function jYe(e,t,i){const n=e.method,s=e.bound,l=e.separation,c={separation:Si(l)?i.signalRef(l.signal):l,method:Si(n)?i.signalRef(n.signal):n,pulse:t};if(e.order&&(c.sort=i.compareRef({field:e.order})),s){const r=s.tolerance;c.boundTolerance=Si(r)?i.signalRef(r.signal):+r,c.boundScale=i.scaleRef(s.scale),c.boundOrient=s.orient}return _e(i.add(kxe(c)))}function EYe(e,t){const i=t.config.legend,n=e.encode||{},s=Xs(e,i),l=n.legend||{},c=l.name||void 0,r=l.interactive,a=l.style,u={};let o=0,d,b,h;Iv.forEach(g=>e[g]?(u[g]=e[g],o=o||e[g]):0),o||me("Missing valid scale for legend.");const p=PYe(e,t.scaleType(o)),Z={title:e.title!=null,scales:u,type:p,vgrad:p!=="symbol"&&s.isVertical()},X=_e(t.add(sc(null,[Z]))),J={enter:{x:{value:0},y:{value:0}}},V=_e(t.add(zxe(b={type:p,scale:t.scaleRef(o),count:t.objectProperty(s("tickCount")),limit:t.property(s("symbolLimit")),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)})));return p===KZ?(h=[WYe(e,o,i,n.gradient),YS(e,i,n.labels,V)],b.count=b.count||t.signalRef(`max(2,2*floor((${Zu(s.gradientLength())})/100))`)):p===IV?h=[XYe(e,o,i,n.gradient,V),YS(e,i,n.labels,V)]:(d=GYe(e,i),h=[YYe(e,i,n,V,Zu(d.columns))],b.size=QYe(e,t,h[0].marks)),h=[lp({role:jJe,from:X,encode:J,marks:h,layout:d,interactive:r})],Z.title&&h.push(NYe(e,i,n.title,X)),b1(lp({role:_Je,from:X,encode:Nb($Ye(s,e,i),l,b0),marks:h,aria:s("aria"),description:s("description"),zindex:s("zindex"),name:c,interactive:r,style:a}),t)}function PYe(e,t){let i=e.type||xS;return!e.type&&UYe(e)===1&&(e.fill||e.stroke)&&(i=N5(t)?KZ:ZG(t)?IV:xS),i!==KZ?i:ZG(t)?IV:KZ}function UYe(e){return Iv.reduce((t,i)=>t+(e[i]?1:0),0)}function $Ye(e,t,i){const n={enter:{},update:{}};return un(n,{orient:e("orient"),offset:e("offset"),padding:e("padding"),titlePadding:e("titlePadding"),cornerRadius:e("cornerRadius"),fill:e("fillColor"),stroke:e("strokeColor"),strokeWidth:i.strokeWidth,strokeDash:i.strokeDash,x:e("legendX"),y:e("legendY"),format:t.format,formatType:t.formatType}),n}function QYe(e,t,i){const n=Zu(wS("size",e,i)),s=Zu(wS("strokeWidth",e,i)),l=Zu(DYe(i[1].encode,t,m0));return qc(`max(ceil(sqrt(${n})+${s}),${l})`,t)}function wS(e,t,i){return t[e]?`scale("${t[e]}",datum)`:_U(e,i[0].encode)}function DYe(e,t,i){return _U("fontSize",e)||yYe("fontSize",t,i)}const AYe=`item.orient==="${Rb}"?-90:item.orient==="${kb}"?90:0`;function qYe(e,t){e=He(e)?{text:e}:e;const i=Xs(e,t.config.title),n=e.encode||{},s=n.group||{},l=s.name||void 0,c=s.interactive,r=s.style,a=[],u={},o=_e(t.add(sc(null,[u])));return a.push(i9e(e,i,e9e(e),o)),e.subtitle&&a.push(n9e(e,i,n.subtitle,o)),b1(lp({role:$Je,from:o,encode:t9e(i,s),marks:a,aria:i("aria"),description:i("description"),zindex:i("zindex"),name:l,interactive:c,style:r}),t)}function e9e(e){const t=e.encode;return t&&t.title||lt({name:e.name,interactive:e.interactive,style:e.style},t)}function t9e(e,t){const i={enter:{},update:{}};return un(i,{orient:e("orient"),anchor:e("anchor"),align:{signal:vv},angle:{signal:AYe},limit:e("limit"),frame:e("frame"),offset:e("offset")||0,padding:e("subtitlePadding")}),Nb(i,t,b0)}function i9e(e,t,i,n){const s={value:0},l=e.text,c={enter:{opacity:s},update:{opacity:{value:1}},exit:{opacity:s}};return un(c,{text:l,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("color"),font:t("font"),fontSize:t("fontSize"),fontStyle:t("fontStyle"),fontWeight:t("fontWeight"),lineHeight:t("lineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),Bs({type:od,role:QJe,style:aYe,from:n,encode:c},i)}function n9e(e,t,i,n){const s={value:0},l=e.subtitle,c={enter:{opacity:s},update:{opacity:{value:1}},exit:{opacity:s}};return un(c,{text:l,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("subtitleColor"),font:t("subtitleFont"),fontSize:t("subtitleFontSize"),fontStyle:t("subtitleFontStyle"),fontWeight:t("subtitleFontWeight"),lineHeight:t("subtitleLineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),Bs({type:od,role:DJe,style:oYe,from:n,encode:c},i)}function s9e(e,t){const i=[];e.transform&&e.transform.forEach(n=>{i.push(Hv(n,t))}),e.on&&e.on.forEach(n=>{UU(n,t,e.name)}),t.addDataPipeline(e.name,l9e(e,t,i))}function l9e(e,t,i){const n=[];let s=null,l=!1,c=!1,r,a,u,o,d;for(e.values?Si(e.values)||TZ(e.format)?(n.push(HS(t,e)),n.push(s=Uo())):n.push(s=Uo({$ingest:e.values,$format:e.format})):e.url?TZ(e.url)||TZ(e.format)?(n.push(HS(t,e)),n.push(s=Uo())):n.push(s=Uo({$request:e.url,$format:e.format})):e.source&&(s=r=Ne(e.source).map(b=>_e(t.getData(b).output)),n.push(null)),a=0,u=i.length;a<u;++a)o=i[a],d=o.metadata,!s&&!d.source&&n.push(s=Uo()),n.push(o),d.generates&&(c=!0),d.modifies&&!c&&(l=!0),d.source?s=o:d.changes&&(s=null);return r&&(u=r.length-1,n[0]=Cxe({derive:l,pulse:u?r:r[0]}),(l||u)&&n.splice(1,0,Uo())),s||n.push(Uo()),n.push(ad({})),n}function Uo(e){const t=sc({},e);return t.metadata={source:!0},t}function HS(e,t){return wxe({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}const $U=e=>e===po||e===lc,h1=(e,t,i)=>Si(e)?o9e(e.signal,t,i):e===Rb||e===lc?t:i,Oi=(e,t,i)=>Si(e)?r9e(e.signal,t,i):$U(e)?t:i,Ml=(e,t,i)=>Si(e)?a9e(e.signal,t,i):$U(e)?i:t,QU=(e,t,i)=>Si(e)?u9e(e.signal,t,i):e===lc?{value:t}:{value:i},c9e=(e,t,i)=>Si(e)?d9e(e.signal,t,i):e===kb?{value:t}:{value:i},r9e=(e,t,i)=>DU(`${e} === '${lc}' || ${e} === '${po}'`,t,i),a9e=(e,t,i)=>DU(`${e} !== '${lc}' && ${e} !== '${po}'`,t,i),o9e=(e,t,i)=>Nv(`${e} === '${Rb}' || ${e} === '${lc}'`,t,i),u9e=(e,t,i)=>Nv(`${e} === '${lc}'`,t,i),d9e=(e,t,i)=>Nv(`${e} === '${kb}'`,t,i),DU=(e,t,i)=>(t=t!=null?_i(t):t,i=i!=null?_i(i):i,NS(t)&&NS(i)?(t=t?t.signal||Ge(t.value):null,i=i?i.signal||Ge(i.value):null,{signal:`${e} ? (${t}) : (${i})`}):[lt({test:e},t)].concat(i||[])),NS=e=>e==null||Object.keys(e).length===1,Nv=(e,t,i)=>({signal:`${e} ? (${om(t)}) : (${om(i)})`}),m9e=(e,t,i,n,s)=>({signal:(n!=null?`${e} === '${Rb}' ? (${om(n)}) : `:"")+(i!=null?`${e} === '${po}' ? (${om(i)}) : `:"")+(s!=null?`${e} === '${kb}' ? (${om(s)}) : `:"")+(t!=null?`${e} === '${lc}' ? (${om(t)}) : `:"")+"(null)"}),om=e=>Si(e)?e.signal:e==null?null:Ge(e),b9e=(e,t)=>t===0?0:Si(e)?{signal:`(${e.signal}) * ${t}`}:{value:e*t},Jm=(e,t)=>{const i=e.signal;return i&&i.endsWith("(null)")?{signal:i.slice(0,-6)+t.signal}:e};function jd(e,t,i,n){let s;if(t&&Re(t,e))return t[e];if(Re(i,e))return i[e];if(e.startsWith("title")){switch(e){case"titleColor":s="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":s=e[5].toLowerCase()+e.slice(6)}return n[Vv][s]}else if(e.startsWith("label")){switch(e){case"labelColor":s="fill";break;case"labelFont":case"labelFontSize":s=e[5].toLowerCase()+e.slice(6)}return n[m0][s]}return null}function RS(e){const t={};for(const i of e)if(i)for(const n in i)t[n]=1;return Object.keys(t)}function h9e(e,t){var i=t.config,n=i.style,s=i.axis,l=t.scaleType(e.scale)==="band"&&i.axisBand,c=e.orient,r,a,u;if(Si(c)){const d=RS([i.axisX,i.axisY]),b=RS([i.axisTop,i.axisBottom,i.axisLeft,i.axisRight]);r={};for(u of d)r[u]=Oi(c,jd(u,i.axisX,s,n),jd(u,i.axisY,s,n));a={};for(u of b)a[u]=m9e(c.signal,jd(u,i.axisTop,s,n),jd(u,i.axisBottom,s,n),jd(u,i.axisLeft,s,n),jd(u,i.axisRight,s,n))}else r=c===lc||c===po?i.axisX:i.axisY,a=i["axis"+c[0].toUpperCase()+c.slice(1)];return r||a||l?lt({},s,r,a,l):s}function f9e(e,t,i,n){const s=Xs(e,t),l=e.orient;let c,r;const a={enter:c={opacity:xt},update:r={opacity:rl},exit:{opacity:xt}};un(a,{stroke:s("domainColor"),strokeCap:s("domainCap"),strokeDash:s("domainDash"),strokeDashOffset:s("domainDashOffset"),strokeWidth:s("domainWidth"),strokeOpacity:s("domainOpacity")});const u=kS(e,0),o=kS(e,1);return c.x=r.x=Oi(l,u,xt),c.x2=r.x2=Oi(l,o),c.y=r.y=Ml(l,u,xt),c.y2=r.y2=Ml(l,o),Bs({type:gv,role:CJe,from:n,encode:a},i)}function kS(e,t){return{scale:e.scale,range:t}}function p9e(e,t,i,n,s){const l=Xs(e,t),c=e.orient,r=e.gridScale,a=h1(c,1,-1),u=y9e(e.offset,a);let o,d,b;const h={enter:o={opacity:xt},update:b={opacity:rl},exit:d={opacity:xt}};un(h,{stroke:l("gridColor"),strokeCap:l("gridCap"),strokeDash:l("gridDash"),strokeDashOffset:l("gridDashOffset"),strokeOpacity:l("gridOpacity"),strokeWidth:l("gridWidth")});const p={scale:e.scale,field:cl,band:s.band,extra:s.extra,offset:s.offset,round:l("tickRound")},Z=Oi(c,{signal:"height"},{signal:"width"}),X=r?{scale:r,range:0,mult:a,offset:u}:{value:0,offset:u},J=r?{scale:r,range:1,mult:a,offset:u}:lt(Z,{mult:a,offset:u});return o.x=b.x=Oi(c,p,X),o.y=b.y=Ml(c,p,X),o.x2=b.x2=Ml(c,J),o.y2=b.y2=Oi(c,J),d.x=Oi(c,p),d.y=Ml(c,p),Bs({type:gv,role:TJe,key:cl,from:n,encode:h},i)}function y9e(e,t){if(t!==1)if(!we(e))e=Si(t)?{signal:`(${t.signal}) * (${e||0})`}:t*(e||0);else{let i=e=lt({},e);for(;i.mult!=null;)if(we(i.mult))i=i.mult=lt({},i.mult);else return i.mult=Si(t)?{signal:`(${i.mult}) * (${t.signal})`}:i.mult*t,e;i.mult=t}return e}function Z9e(e,t,i,n,s,l){const c=Xs(e,t),r=e.orient,a=h1(r,-1,1);let u,o,d;const b={enter:u={opacity:xt},update:d={opacity:rl},exit:o={opacity:xt}};un(b,{stroke:c("tickColor"),strokeCap:c("tickCap"),strokeDash:c("tickDash"),strokeDashOffset:c("tickDashOffset"),strokeOpacity:c("tickOpacity"),strokeWidth:c("tickWidth")});const h=_i(s);h.mult=a;const p={scale:e.scale,field:cl,band:l.band,extra:l.extra,offset:l.offset,round:c("tickRound")};return d.y=u.y=Oi(r,xt,p),d.y2=u.y2=Oi(r,h),o.x=Oi(r,p),d.x=u.x=Ml(r,xt,p),d.x2=u.x2=Ml(r,h),o.y=Ml(r,p),Bs({type:gv,role:KJe,key:cl,from:n,encode:b},i)}function yY(e,t,i,n,s){return{signal:'flush(range("'+e+'"), scale("'+e+'", datum.value), '+t+","+i+","+n+","+s+")"}}function W9e(e,t,i,n,s,l){const c=Xs(e,t),r=e.orient,a=e.scale,u=h1(r,-1,1),o=Zu(c("labelFlush")),d=Zu(c("labelFlushOffset")),b=c("labelAlign"),h=c("labelBaseline");let p=o===0||!!o,Z;const X=_i(s);X.mult=u,X.offset=_i(c("labelPadding")||0),X.offset.mult=u;const J={scale:a,field:cl,band:.5,offset:OU(l.offset,c("labelOffset"))},V=Oi(r,p?yY(a,o,'"left"','"right"','"center"'):{value:"center"},c9e(r,"left","right")),g=Oi(r,QU(r,"bottom","top"),p?yY(a,o,'"top"','"bottom"','"middle"'):{value:"middle"}),I=yY(a,o,`-(${d})`,d,0);p=p&&d;const v={opacity:xt,x:Oi(r,J,X),y:Ml(r,J,X)},k={enter:v,update:Z={opacity:rl,text:{field:Gv},x:v.x,y:v.y,align:V,baseline:g},exit:{opacity:xt,x:v.x,y:v.y}};un(k,{dx:!b&&p?Oi(r,I):null,dy:!h&&p?Ml(r,I):null}),un(k,{angle:c("labelAngle"),fill:c("labelColor"),fillOpacity:c("labelOpacity"),font:c("labelFont"),fontSize:c("labelFontSize"),fontWeight:c("labelFontWeight"),fontStyle:c("labelFontStyle"),limit:c("labelLimit"),lineHeight:c("labelLineHeight")},{align:b,baseline:h});const N=c("labelBound");let C=c("labelOverlap");return C=C||N?{separation:c("labelSeparation"),method:C,order:"datum.index",bound:N?{scale:a,orient:r,tolerance:N}:null}:void 0,Z.align!==V&&(Z.align=Jm(Z.align,V)),Z.baseline!==g&&(Z.baseline=Jm(Z.baseline,g)),Bs({type:od,role:MJe,style:m0,key:cl,from:n,encode:k,overlap:C},i)}function X9e(e,t,i,n){const s=Xs(e,t),l=e.orient,c=h1(l,-1,1);let r,a;const u={enter:r={opacity:xt,anchor:_i(s("titleAnchor",null)),align:{signal:vv}},update:a=lt({},r,{opacity:rl,text:_i(e.title)}),exit:{opacity:xt}},o={signal:`lerp(range("${e.scale}"), ${d1(0,1,.5)})`};return a.x=Oi(l,o),a.y=Ml(l,o),r.angle=Oi(l,xt,b9e(c,90)),r.baseline=Oi(l,QU(l,po,lc),{value:po}),a.angle=r.angle,a.baseline=r.baseline,un(u,{fill:s("titleColor"),fillOpacity:s("titleOpacity"),font:s("titleFont"),fontSize:s("titleFontSize"),fontStyle:s("titleFontStyle"),fontWeight:s("titleFontWeight"),limit:s("titleLimit"),lineHeight:s("titleLineHeight")},{align:s("titleAlign"),angle:s("titleAngle"),baseline:s("titleBaseline")}),J9e(s,l,u,i),u.update.align=Jm(u.update.align,r.align),u.update.angle=Jm(u.update.angle,r.angle),u.update.baseline=Jm(u.update.baseline,r.baseline),Bs({type:od,role:BJe,style:Vv,from:n,encode:u},i)}function J9e(e,t,i,n){const s=(r,a)=>r!=null?(i.update[a]=Jm(_i(r),i.update[a]),!1):!qd(a,n),l=s(e("titleX"),"x"),c=s(e("titleY"),"y");i.enter.auto=c===l?_i(c):Oi(t,_i(c),_i(l))}function x9e(e,t){const i=h9e(e,t),n=e.encode||{},s=n.axis||{},l=s.name||void 0,c=s.interactive,r=s.style,a=Xs(e,i),u=ZYe(a),o={scale:e.scale,ticks:!!a("ticks"),labels:!!a("labels"),grid:!!a("grid"),domain:!!a("domain"),title:e.title!=null},d=_e(t.add(sc({},[o]))),b=_e(t.add(Yxe({scale:t.scaleRef(e.scale),extra:t.property(u.extra),count:t.objectProperty(e.tickCount),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)}))),h=[];let p;return o.grid&&h.push(p9e(e,i,n.grid,b,u)),o.ticks&&(p=a("tickSize"),h.push(Z9e(e,i,n.ticks,b,p,u))),o.labels&&(p=o.ticks?p:0,h.push(W9e(e,i,n.labels,b,p,u))),o.domain&&h.push(f9e(e,i,n.domain,d)),o.title&&h.push(X9e(e,i,n.title,d)),b1(lp({role:LJe,from:d,encode:Nb(Y9e(a,e),s,b0),marks:h,aria:a("aria"),description:a("description"),zindex:a("zindex"),name:l,interactive:c,style:r}),t)}function Y9e(e,t){const i={enter:{},update:{}};return un(i,{orient:e("orient"),offset:e("offset")||0,position:vl(t.position,0),titlePadding:e("titlePadding"),minExtent:e("minExtent"),maxExtent:e("maxExtent"),range:{signal:`abs(span(range("${t.scale}")))`},translate:e("translate"),format:t.format,formatType:t.formatType}),i}function AU(e,t,i){const n=Ne(e.signals),s=Ne(e.scales);return i||n.forEach(l=>wU(l,t)),Ne(e.projections).forEach(l=>tYe(l,t)),s.forEach(l=>_xe(l,t)),Ne(e.data).forEach(l=>s9e(l,t)),s.forEach(l=>Oxe(l,t)),(i||n).forEach(l=>xxe(l,t)),Ne(e.axes).forEach(l=>x9e(l,t)),Ne(e.marks).forEach(l=>b1(l,t)),Ne(e.legends).forEach(l=>EYe(l,t)),e.title&&qYe(e.title,t),t.parseLambdas(),t}const G9e=e=>Nb({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},e);function V9e(e,t){const i=t.config,n=_e(t.root=t.add(JX())),s=I9e(e,i);s.forEach(u=>wU(u,t)),t.description=e.description||i.description,t.eventConfig=i.events,t.legends=t.objectProperty(i.legend&&i.legend.layout),t.locale=i.locale;const l=t.add(sc()),c=t.add(RU(zU(G9e(e.encode),u1,Xv,e.style,t,{pulse:_e(l)}))),r=t.add(SU({layout:t.objectProperty(e.layout),legends:t.legends,autosize:t.signalRef("autosize"),mark:n,pulse:_e(c)}));t.operators.pop(),t.pushState(_e(c),_e(r),null),AU(e,t,s),t.operators.push(r);let a=t.add(NU({mark:n,pulse:_e(r)}));return a=t.add(FU({pulse:_e(a)})),a=t.add(ad({pulse:_e(a)})),t.addData("root",new Mu(t,l,l,a)),t}function Gh(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function I9e(e,t){const i=c=>vl(e[c],t[c]),n=[Gh("background",i("background")),Gh("autosize",kJe(i("autosize"))),Gh("padding",SJe(i("padding"))),Gh("width",i("width")||0),Gh("height",i("height")||0)],s=n.reduce((c,r)=>(c[r.name]=r,c),{}),l={};return Ne(e.signals).forEach(c=>{Re(s,c.name)?c=lt(s[c.name],c):n.push(c),l[c.name]=c}),Ne(t.signals).forEach(c=>{!Re(l,c.name)&&!Re(s,c.name)&&n.push(c)}),n}function qU(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function FS(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}qU.prototype=FS.prototype={parse(e){return AU(e,this)},fork(){return new FS(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(e){return this.operators.push(e),e.id=this.id(),e.refs&&(e.refs.forEach(t=>{t.$ref=e.id}),e.refs=null),e},proxy(e){const t=e instanceof JV?_e(e):e;return this.add(Lxe({value:t}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;this.root&&(this.root.root=!0);for(e in this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function i(n,s,l){let c,r;n&&(c=n.data||(n.data={}),r=c[s]||(c[s]=[]),r.push(l))}for(e in this.data){t=this.data[e],i(t.input,e,"input"),i(t.output,e,"output"),i(t.values,e,"values");for(const n in t.index)i(t.index[n],e,"index:"+n)}return this},pushState(e,t,i){this._encode.push(_e(this.add(ad({pulse:e})))),this._parent.push(t),this._lookup.push(i?_e(this.proxy(i)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return Zt(this._parent)},encode(){return Zt(this._encode)},lookup(){return Zt(this._lookup)},markpath(){const e=this._markpath;return++e[e.length-1]},fieldRef(e,t){if(He(e))return np(e,t);e.signal||me("Unsupported field reference: "+Ge(e));const i=e.signal;let n=this.field[i];if(!n){const s={name:this.signalRef(i)};t&&(s.as=t),this.field[i]=n=_e(this.add(gxe(s)))}return n},compareRef(e){let t=!1;const i=l=>Si(l)?(t=!0,this.signalRef(l.signal)):mxe(l)?(t=!0,this.exprRef(l.expr)):l,n=Ne(e.field).map(i),s=Ne(e.order).map(i);return t?_e(this.add(JS({fields:n,orders:s}))):WS(n,s)},keyRef(e,t){let i=!1;const n=l=>Si(l)?(i=!0,_e(s[l.signal])):l,s=this.signals;return e=Ne(e).map(n),i?_e(this.add(vxe({fields:e,flat:t}))):axe(e,t)},sortRef(e){if(!e)return e;const t=a1(e.op,e.field),i=e.order||oxe;return i.signal?_e(this.add(JS({fields:t,orders:this.signalRef(i.signal)}))):WS(t,i)},event(e,t){const i=e+":"+t;if(!this.events[i]){const n=this.id();this.streams.push({id:n,source:e,type:t}),this.events[i]=n}return this.events[i]},hasOwnSignal(e){return Re(this.signals,e)},addSignal(e,t){this.hasOwnSignal(e)&&me("Duplicate signal name: "+Ge(e));const i=t instanceof JV?t:this.add(JX(t));return this.signals[e]=i},getSignal(e){return this.signals[e]||me("Unrecognized signal name: "+Ge(e)),this.signals[e]},signalRef(e){return this.signals[e]?_e(this.signals[e]):(Re(this.lambdas,e)||(this.lambdas[e]=this.add(JX(null))),_e(this.lambdas[e]))},parseLambdas(){const e=Object.keys(this.lambdas);for(let t=0,i=e.length;t<i;++t){const n=e[t],s=qc(n,this),l=this.lambdas[n];l.params=s.$params,l.update=s.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return!e||!we(e)?e:this.signalRef(e.signal||Rv(e))},exprRef(e,t){const i={expr:qc(e,this)};return t&&(i.expr.$name=t),_e(this.add(Vxe(i)))},addBinding(e,t){this.bindings||me("Nested signals do not support binding: "+Ge(e)),this.bindings.push(lt({signal:e},t))},addScaleProj(e,t){Re(this.scales,e)&&me("Duplicate scale or projection name: "+Ge(e)),this.scales[e]=this.add(t)},addScale(e,t){this.addScaleProj(e,Txe(t))},addProjection(e,t){this.addScaleProj(e,Sxe(t))},getScale(e){return this.scales[e]||me("Unrecognized scale name: "+Ge(e)),this.scales[e]},scaleRef(e){return _e(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,t){return Re(this.data,e)&&me("Duplicate data set name: "+Ge(e)),this.data[e]=t},getData(e){return this.data[e]||me("Undefined data set name: "+Ge(e)),this.data[e]},addDataPipeline(e,t){return Re(this.data,e)&&me("Duplicate data set name: "+Ge(e)),this.addData(e,Mu.fromEntries(this,t))}};function Rv(e){return(fe(e)?g9e:v9e)(e)}function g9e(e){const t=e.length;let i="[";for(let n=0;n<t;++n){const s=e[n];i+=(n>0?",":"")+(we(s)?s.signal||Rv(s):Ge(s))}return i+"]"}function v9e(e){let t="{",i=0,n,s;for(n in e)s=e[n],t+=(++i>1?",":"")+Ge(n)+":"+(we(s)?s.signal||Rv(s):Ge(s));return t+"}"}function z9e(){const e="sans-serif",n="#4c78a8",s="#000",l="#888",c="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:n},area:{fill:n},image:null,line:{stroke:n,strokeWidth:2},path:{stroke:n},rect:{fill:n},rule:{stroke:s},shape:{stroke:n},symbol:{fill:n,size:64},text:{fill:s,font:e,fontSize:11},trail:{fill:n,size:2},style:{"guide-label":{fill:s,font:e,fontSize:10},"guide-title":{fill:s,font:e,fontSize:11,fontWeight:"bold"},"group-title":{fill:s,font:e,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:s,font:e,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:c},view:{fill:"transparent"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:l,grid:!1,gridWidth:1,gridColor:c,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:l,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:c,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:l,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}function w9e(e,t,i){return we(e)||me("Input Vega specification must be an object."),t=xb(z9e(),t,e.config),V9e(e,new qU(t,i)).toRuntime()}var H9e="5.33.1";lt(Fm,Pde,Sfe,hpe,K0e,gye,kZe,bZe,SZe,cWe,pWe,YWe);const N9e=Object.freeze(Object.defineProperty({__proto__:null,Bounds:zi,CanvasHandler:i0,CanvasRenderer:TW,DATE:ms,DAY:fn,DAYOFYEAR:Dc,Dataflow:Wm,Debug:a_,DisallowedObjectProperties:f3,Error:p3,EventStream:I2,Gradient:Kj,GroupItem:M2,HOURS:Ts,Handler:ng,HybridHandler:NE,HybridRenderer:zG,Info:r_,Item:T2,MILLISECONDS:Ol,MINUTES:Ms,MONTH:Xn,Marks:Ks,MultiPulse:L3,None:c_,Operator:Pt,Parameters:V2,Pulse:eo,QUARTER:ds,RenderType:Ba,Renderer:t0,ResourceLoader:Uj,SECONDS:dl,SVGHandler:WE,SVGRenderer:og,SVGStringRenderer:HE,Scenegraph:dE,TIME_UNITS:z3,Transform:ue,View:yU,WEEK:ki,Warn:y3,YEAR:rn,accessor:Ws,accessorFields:Wn,accessorName:Zi,array:Ne,ascending:Gb,bandwidthNRD:K3,bin:pO,bootstrapCI:yO,boundClip:BE,boundContext:Dp,boundItem:GG,boundMark:rE,boundStroke:la,changeset:ld,clampRange:W_,codegenExpression:OP,compare:x3,constant:In,cumulativeLogNormal:P3,cumulativeNormal:v2,cumulativeUniform:D3,dayofyear:w_,debounce:Y3,defaultLocale:N3,definition:bO,densityLogNormal:E3,densityNormal:B3,densityUniform:Q3,domChild:Ri,domClear:$s,domCreate:Ma,domFind:ig,dotbin:ZO,error:me,expressionFunction:Wi,extend:lt,extent:Qc,extentIndex:X_,falsy:ga,fastmap:Vb,field:ol,flush:J_,font:j2,fontFamily:e0,fontSize:cr,format:JZ,formatLocale:GW,formats:F3,hasOwnProperty:Re,id:Tp,identity:Vn,inferType:iO,inferTypes:nO,ingest:Rt,inherits:ge,inrange:sm,interpolate:R5,interpolateColors:L2,interpolateRange:gj,intersect:CE,intersectBoxLine:lm,intersectPath:K5,intersectPoint:B5,intersectRule:Qj,isArray:fe,isBoolean:Vo,isDate:qa,isFunction:ct,isIterable:x_,isNumber:zt,isObject:we,isRegExp:G3,isString:He,isTuple:Y2,key:V3,lerp:Y_,lineHeight:bo,loader:J2,locale:eO,logger:Z3,lruCache:G_,markup:ag,merge:V_,mergeConfig:xb,multiLineOffset:q5,one:Jb,pad:I_,panLinear:b_,panLog:h_,panPow:f_,panSymlog:p_,parse:w9e,parseExpression:KP,parseSelector:go,path:MI,pathCurves:C5,pathEqual:_E,pathParse:Tm,pathRectangle:Oj,pathRender:jf,pathSymbols:_j,pathTrail:jj,peek:Zt,point:P2,projection:wg,quantileLogNormal:U3,quantileNormal:z2,quantileUniform:A3,quantiles:T3,quantizeInterpolator:vj,quarter:y_,quartiles:M3,get random(){return ml},randomInteger:Due,randomKDE:O3,randomLCG:Que,randomLogNormal:XO,randomMixture:JO,randomNormal:_3,randomUniform:xO,read:cO,regressionConstant:q3,regressionExp:GO,regressionLinear:e5,regressionLoess:gO,regressionLog:YO,regressionPoly:IO,regressionPow:VO,regressionQuad:t5,renderModule:U2,repeat:Lh,resetDefaultLocale:Poe,resetSVGClipId:Pj,resetSVGDefIds:efe,responseType:lO,runtimeContext:sU,sampleCurve:H2,sampleLogNormal:j3,sampleNormal:g2,sampleUniform:$3,scale:wt,sceneEqual:ug,sceneFromJSON:oE,scenePickVisit:HW,sceneToJSON:aE,sceneVisit:jl,sceneZOrder:_5,scheme:k5,serializeXML:gE,setHybridRendererOptions:Qhe,setRandom:Uue,span:Mp,splitAccessPath:lr,stringValue:Ge,textMetrics:ks,timeBin:P_,timeFloor:L_,timeFormatLocale:Bf,timeInterval:Ib,timeOffset:M_,timeSequence:__,timeUnitSpecifier:z_,timeUnits:w3,toBoolean:I3,toDate:g3,toNumber:yn,toSet:_l,toString:v3,transform:hO,transforms:Fm,truncate:g_,truthy:ul,tupleid:Oe,typeParsers:bG,utcFloor:C_,utcInterval:gb,utcOffset:K_,utcSequence:O_,utcdayofyear:R_,utcquarter:Z_,utcweek:k_,version:H9e,visitArray:Ha,week:H_,writeConfig:Yb,zero:Sa,zoomLinear:W3,zoomLog:X3,zoomPow:YW,zoomSymlog:J3},Symbol.toStringTag,{value:"Module"}));function R9e(e,t,i){let n;t.x2&&(t.x?(i&&e.x>e.x2&&(n=e.x,e.x=e.x2,e.x2=n),e.width=e.x2-e.x):e.x=e.x2-(e.width||0)),t.xc&&(e.x=e.xc-(e.width||0)/2),t.y2&&(t.y?(i&&e.y>e.y2&&(n=e.y,e.y=e.y2,e.y2=n),e.height=e.y2-e.y):e.y=e.y2-(e.height||0)),t.yc&&(e.y=e.yc-(e.height||0)/2)}var k9e={NaN:NaN,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,PI:Math.PI,SQRT1_2:Math.SQRT1_2,SQRT2:Math.SQRT2,MIN_VALUE:Number.MIN_VALUE,MAX_VALUE:Number.MAX_VALUE},F9e={"*":(e,t)=>e*t,"+":(e,t)=>e+t,"-":(e,t)=>e-t,"/":(e,t)=>e/t,"%":(e,t)=>e%t,">":(e,t)=>e>t,"<":(e,t)=>e<t,"<=":(e,t)=>e<=t,">=":(e,t)=>e>=t,"==":(e,t)=>e==t,"!=":(e,t)=>e!=t,"===":(e,t)=>e===t,"!==":(e,t)=>e!==t,"&":(e,t)=>e&t,"|":(e,t)=>e|t,"^":(e,t)=>e^t,"<<":(e,t)=>e<<t,">>":(e,t)=>e>>t,">>>":(e,t)=>e>>>t},S9e={"+":e=>+e,"-":e=>-e,"~":e=>~e,"!":e=>!e};const L9e=Array.prototype.slice,$o=(e,t,i)=>{const n=i?i(t[0]):t[0];return n[e].apply(n,L9e.call(t,1))},C9e=(e,t,i,n,s,l,c)=>new Date(e,t||0,i??1,n||0,s||0,l||0,c||0);var T9e={isNaN:Number.isNaN,isFinite:Number.isFinite,abs:Math.abs,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:Math.atan2,ceil:Math.ceil,cos:Math.cos,exp:Math.exp,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,pow:Math.pow,random:Math.random,round:Math.round,sin:Math.sin,sqrt:Math.sqrt,tan:Math.tan,clamp:(e,t,i)=>Math.max(t,Math.min(i,e)),now:Date.now,utc:Date.UTC,datetime:C9e,date:e=>new Date(e).getDate(),day:e=>new Date(e).getDay(),year:e=>new Date(e).getFullYear(),month:e=>new Date(e).getMonth(),hours:e=>new Date(e).getHours(),minutes:e=>new Date(e).getMinutes(),seconds:e=>new Date(e).getSeconds(),milliseconds:e=>new Date(e).getMilliseconds(),time:e=>new Date(e).getTime(),timezoneoffset:e=>new Date(e).getTimezoneOffset(),utcdate:e=>new Date(e).getUTCDate(),utcday:e=>new Date(e).getUTCDay(),utcyear:e=>new Date(e).getUTCFullYear(),utcmonth:e=>new Date(e).getUTCMonth(),utchours:e=>new Date(e).getUTCHours(),utcminutes:e=>new Date(e).getUTCMinutes(),utcseconds:e=>new Date(e).getUTCSeconds(),utcmilliseconds:e=>new Date(e).getUTCMilliseconds(),length:e=>e.length,join:function(){return $o("join",arguments)},indexof:function(){return $o("indexOf",arguments)},lastindexof:function(){return $o("lastIndexOf",arguments)},slice:function(){return $o("slice",arguments)},reverse:e=>e.slice().reverse(),sort:e=>e.slice().sort(Gb),parseFloat,parseInt,upper:e=>String(e).toUpperCase(),lower:e=>String(e).toLowerCase(),substring:function(){return $o("substring",arguments,String)},split:function(){return $o("split",arguments,String)},replace:function(){return $o("replace",arguments,String)},trim:e=>String(e).trim(),btoa:e=>btoa(e),atob:e=>atob(e),regexp:RegExp,test:(e,t)=>RegExp(e).test(t)};const M9e=["view","item","group","xy","x","y"],vV=new Set([Function,eval,setTimeout,setInterval]);typeof setImmediate=="function"&&vV.add(setImmediate);const K9e={Literal:(e,t)=>t.value,Identifier:(e,t)=>{const i=t.name;return e.memberDepth>0?i:i==="datum"?e.datum:i==="event"?e.event:i==="item"?e.item:k9e[i]||e.params["$"+i]},MemberExpression:(e,t)=>{const i=!t.computed,n=e(t.object);i&&(e.memberDepth+=1);const s=e(t.property);if(i&&(e.memberDepth-=1),vV.has(n[s])){console.error(`Prevented interpretation of member "${s}" which could lead to insecure code execution`);return}return n[s]},CallExpression:(e,t)=>{const i=t.arguments;let n=t.callee.name;return n.startsWith("_")&&(n=n.slice(1)),n==="if"?e(i[0])?e(i[1]):e(i[2]):(e.fn[n]||T9e[n]).apply(e.fn,i.map(e))},ArrayExpression:(e,t)=>t.elements.map(e),BinaryExpression:(e,t)=>F9e[t.operator](e(t.left),e(t.right)),UnaryExpression:(e,t)=>S9e[t.operator](e(t.argument)),ConditionalExpression:(e,t)=>e(t.test)?e(t.consequent):e(t.alternate),LogicalExpression:(e,t)=>t.operator==="&&"?e(t.left)&&e(t.right):e(t.left)||e(t.right),ObjectExpression:(e,t)=>t.properties.reduce((i,n)=>{e.memberDepth+=1;const s=e(n.key);e.memberDepth-=1;const l=e(n.value);return f3.has(s)?console.error(`Prevented interpretation of property "${s}" which could lead to insecure code execution`):vV.has(l)?console.error(`Prevented interpretation of method "${l}" which could lead to insecure code execution`):i[s]=l,i},{})};function Vh(e,t,i,n,s,l){const c=r=>K9e[r.type](c,r);return c.memberDepth=0,c.fn=Object.create(t),c.params=i,c.datum=n,c.event=s,c.item=l,M9e.forEach(r=>c.fn[r]=function(){return s.vega[r](...arguments)}),c(e)}var B9e={operator(e,t){const i=t.ast,n=e.functions;return s=>Vh(i,n,s)},parameter(e,t){const i=t.ast,n=e.functions;return(s,l)=>Vh(i,n,l,s)},event(e,t){const i=t.ast,n=e.functions;return s=>Vh(i,n,void 0,void 0,s)},handler(e,t){const i=t.ast,n=e.functions;return(s,l)=>{const c=l.item&&l.item.datum;return Vh(i,n,s,c,l)}},encode(e,t){const{marktype:i,channels:n}=t,s=e.functions,l=i==="group"||i==="image"||i==="rect";return(c,r)=>{const a=c.datum;let u=0,o;for(const d in n)o=Vh(n[d].ast,s,r,a,void 0,c),c[d]!==o&&(c[d]=o,u=1);return i!=="rule"&&R9e(c,n,l),u}}};
vendor: 5,996 bytes, line 53
53const _9e="5.23.0",O9e={version:_9e};function kv(e){return We(e,"or")}function Fv(e){return We(e,"and")}function Sv(e){return We(e,"not")}function _Z(e,t){if(Sv(e))_Z(e.not,t);else if(Fv(e))for(const i of e.and)_Z(i,t);else if(kv(e))for(const i of e.or)_Z(i,t);else t(e)}function xm(e,t){return Sv(e)?{not:xm(e.not,t)}:Fv(e)?{and:e.and.map(i=>xm(i,t))}:kv(e)?{or:e.or.map(i=>xm(i,t))}:t(e)}const Ae=structuredClone;function e$(e){throw new Error(e)}function Em(e,t){const i={};for(const n of t)Re(e,n)&&(i[n]=e[n]);return i}function as(e,t){const i={...e};for(const n of t)delete i[n];return i}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>_t(e)).join(",")})`};function pt(e){if(zt(e))return e;const t=He(e)?e:_t(e);if(t.length<250)return t;let i=0;for(let n=0;n<t.length;n++){const s=t.charCodeAt(n);i=(i<<5)-i+s,i=i&i}return i}function zV(e){return e===!1||e===null}function ht(e,t){return e.includes(t)}function Pm(e,t){let i=0;for(const[n,s]of e.entries())if(t(s,n,i++))return!0;return!1}function Lv(e,t){let i=0;for(const[n,s]of e.entries())if(!t(s,n,i++))return!1;return!0}function t$(e,...t){for(const i of t)j9e(e,i??{});return e}function j9e(e,t){for(const i of Ze(t))Yb(e,i,t[i],!0)}function Fc(e,t){const i=[],n={};let s;for(const l of e)s=t(l),!(s in n)&&(n[s]=1,i.push(l));return i}function E9e(e,t){const i=Ze(e),n=Ze(t);if(i.length!==n.length)return!1;for(const s of i)if(e[s]!==t[s])return!1;return!0}function i$(e,t){if(e.size!==t.size)return!1;for(const i of e)if(!t.has(i))return!1;return!0}function Cv(e,t){for(const i of e)if(t.has(i))return!0;return!1}function wV(e){const t=new Set;for(const i of e){const s=lr(i).map((c,r)=>r===0?c:`[${c}]`),l=s.map((c,r)=>s.slice(0,r+1).join(""));for(const c of l)t.add(c)}return t}function Tv(e,t){return e===void 0||t===void 0?!0:Cv(wV(e),wV(t))}function Bt(e){return Ze(e).length===0}const Ze=Object.keys,an=Object.values,yo=Object.entries;function cp(e){return e===!0||e===!1}function ci(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function Gf(e,t){return Sv(e)?`!(${Gf(e.not,t)})`:Fv(e)?`(${e.and.map(i=>Gf(i,t)).join(") && (")})`:kv(e)?`(${e.or.map(i=>Gf(i,t)).join(") || (")})`:t(e)}function xX(e,t){if(t.length===0)return!0;const i=t.shift();return i in e&&xX(e[i],t)&&delete e[i],Bt(e)}function h0(e){return e.charAt(0).toUpperCase()+e.substr(1)}function Mv(e,t="datum"){const i=lr(e),n=[];for(let s=1;s<=i.length;s++){const l=`[${i.slice(0,s).map(Ge).join("][")}]`;n.push(`${t}${l}`)}return n.join(" && ")}function n$(e,t="datum"){return`${t}[${Ge(lr(e).join("."))}]`}function Ft(e){return`datum['${e.replaceAll("'","\\'")}']`}function P9e(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}function hl(e){return`${lr(e).map(P9e).join("\\.")}`}function Ku(e,t,i){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),i)}function Fb(e){return`${lr(e).join(".")}`}function Um(e){return e?lr(e).length:0}function xi(...e){return e.find(t=>t!==void 0)}let s$=42;function l$(e){const t=++s$;return e?String(e)+t:t}function U9e(){s$=42}function c$(e){return r$(e)?e:`__${e}`}function r$(e){return e.startsWith("__")}function rp(e){if(e!==void 0)return(e%360+360)%360}function f1(e){return zt(e)?!0:!isNaN(e)&&!isNaN(parseFloat(e))}const SS=Object.getPrototypeOf(structuredClone({}));function Hs(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor.name!==t.constructor.name)return!1;let i,n;if(Array.isArray(e)){if(i=e.length,i!=t.length)return!1;for(n=i;n--!==0;)if(!Hs(e[n],t[n]))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const l of e.entries())if(!t.has(l[0]))return!1;for(const l of e.entries())if(!Hs(l[1],t.get(l[0])))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const l of e.entries())if(!t.has(l[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(i=e.length,i!=t.length)return!1;for(n=i;n--!==0;)if(e[n]!==t[n])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&e.valueOf!==SS.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString!==SS.toString)return e.toString()===t.toString();const s=Object.keys(e);if(i=s.length,i!==Object.keys(t).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[n]))return!1;for(n=i;n--!==0;){const l=s[n];if(!Hs(e[l],t[l]))return!1}return!0}return e!==e&&t!==t}function _t(e){const t=[];return function i(n){if(n&&n.toJSON&&typeof n.toJSON=="function"&&(n=n.toJSON()),n===void 0)return;if(typeof n=="number")return isFinite(n)?""+n:"null";if(typeof n!="object")return JSON.stringify(n);let s,l;if(Array.isArray(n)){for(l="[",s=0;s<n.length;s++)s&&(l+=","),l+=i(n[s])||"null";return l+"]"}if(n===null)return"null";if(t.includes(n))throw new TypeError("Converting circular structure to JSON");const c=t.push(n)-1,r=Object.keys(n).sort();for(l="",s=0;s<r.length;s++){const a=r[s],u=i(n[a]);u&&(l&&(l+=","),l+=JSON.stringify(a)+":"+u)}return t.splice(c,1),`{${l}}`}(e)}function We(e,t){return we(e)&&Re(e,t)&&e[t]!==void 0}const Or="row",jr="column",p1="facet",ri="x",$i="y",cc="x2",ur="y2",vo="xOffset",Sb="yOffset",rc="radius",ra="radius2",yl="theta",aa="theta2",ac="latitude",oc="longitude",uc="latitude2",fl="longitude2",zo="time",hs="color",dr="fill",mr="stroke",fs="shape",oa="size",ud="angle",ua="opacity",wo="fillOpacity",Ho="strokeOpacity",No="strokeWidth",Ro="strokeDash",f0="text",$m="order",p0="detail",y1="key",Bu="tooltip",Z1="href",W1="url",X1="description",$9e={x:1,y:1,x2:1,y2:1},a$={theta:1,theta2:1,radius:1,radius2:1};function o$(e){return Re(a$,e)}const Kv={longitude:1,longitude2:1,latitude:1,latitude2:1};function u$(e){switch(e){case ac:return"y";case uc:return"y2";case oc:return"x";case fl:return"x2"}}function d$(e){return Re(Kv,e)}const Q9e=Ze(Kv),Bv={...$9e,...a$,...Kv,xOffset:1,yOffset:1,color:1,fill:1,stroke:1,time:1,op
vendor: 4,481 bytes, line 53
53acity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeDash:1,size:1,angle:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1,url:1,description:1};function Ym(e){return e===hs||e===dr||e===mr}const m$={row:1,column:1,facet:1},sl=Ze(m$),_v={...Bv,...m$},D9e=Ze(_v),{order:TMe,detail:MMe,tooltip:KMe,...A9e}=_v,{row:BMe,column:_Me,facet:OMe,...q9e}=A9e;function eGe(e){return Re(q9e,e)}function b$(e){return Re(_v,e)}const tGe=[cc,ur,uc,fl,aa,ra];function h$(e){return dd(e)!==e}function dd(e){switch(e){case cc:return ri;case ur:return $i;case uc:return ac;case fl:return oc;case aa:return yl;case ra:return rc}return e}function Zo(e){if(o$(e))switch(e){case yl:return"startAngle";case aa:return"endAngle";case rc:return"outerRadius";case ra:return"innerRadius"}return e}function br(e){switch(e){case ri:return cc;case $i:return ur;case ac:return uc;case oc:return fl;case yl:return aa;case rc:return ra}}function ps(e){switch(e){case ri:case cc:return"width";case $i:case ur:return"height"}}function f$(e){switch(e){case ri:return"xOffset";case $i:return"yOffset";case cc:return"x2Offset";case ur:return"y2Offset";case yl:return"thetaOffset";case rc:return"radiusOffset";case aa:return"theta2Offset";case ra:return"radius2Offset"}}function Ov(e){switch(e){case ri:return"xOffset";case $i:return"yOffset"}}function iGe(e){switch(e){case"xOffset":return"x";case"yOffset":return"y"}}const nGe=Ze(Bv),{x:jMe,y:EMe,x2:PMe,y2:UMe,xOffset:$Me,yOffset:QMe,latitude:DMe,longitude:AMe,latitude2:qMe,longitude2:eKe,theta:tKe,theta2:iKe,radius:nKe,radius2:sKe,...jv}=Bv,sGe=Ze(jv),Ev={x:1,y:1},da=Ze(Ev);function Yi(e){return Re(Ev,e)}const Pv={theta:1,radius:1},lGe=Ze(Pv);function J1(e){return e==="width"?ri:$i}const p$={xOffset:1,yOffset:1};function y0(e){return Re(p$,e)}const cGe={time:1};function ZY(e){return e in cGe}const{text:lKe,tooltip:cKe,href:rKe,url:aKe,description:oKe,detail:uKe,key:dKe,order:mKe,...y$}=jv,rGe=Ze(y$);function aGe(e){return Re(jv,e)}function oGe(e){switch(e){case hs:case dr:case mr:case oa:case fs:case ua:case No:case Ro:return!0;case wo:case Ho:case ud:case zo:return!1}}const Z$={...Ev,...Pv,...p$,...y$},Uv=Ze(Z$);function hr(e){return Re(Z$,e)}function uGe(e,t){return mGe(e)[t]}const W$={arc:"always",area:"always",bar:"always",circle:"always",geoshape:"always",image:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},{geoshape:bKe,...dGe}=W$;function mGe(e){switch(e){case hs:case dr:case mr:case X1:case p0:case y1:case Bu:case Z1:case $m:case ua:case wo:case Ho:case No:case p1:case Or:case jr:return W$;case ri:case $i:case vo:case Sb:case ac:case oc:case zo:return dGe;case cc:case ur:case uc:case fl:return{area:"always",bar:"always",image:"always",rect:"always",rule:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case oa:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case Ro:return{line:"always",point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",geoshape:"always"};case fs:return{point:"always",geoshape:"always"};case f0:return{text:"always"};case ud:return{point:"always",square:"always",text:"always"};case W1:return{image:"always"};case yl:return{text:"always",arc:"always"};case rc:return{text:"always",arc:"always"};case aa:case ra:return{arc:"always"}}}function WY(e){switch(e){case ri:case $i:case yl:case rc:case vo:case Sb:case oa:case ud:case No:case ua:case wo:case Ho:case zo:case cc:case ur:case aa:case ra:return;case p1:case Or:case jr:case fs:case Ro:case f0:case Bu:case Z1:case W1:case X1:return"discrete";case hs:case dr:case mr:return"flexible";case ac:case oc:case uc:case fl:case p0:case y1:case $m:return}}const bGe={argmax:1,argmin:1,average:1,count:1,distinct:1,exponential:1,exponentialb:1,product:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1},hGe={count:1,min:1,max:1};function ea(e){return We(e,"argmin")}function ko(e){return We(e,"argmax")}function $v(e){return He(e)&&Re(bGe,e)}const fGe=new Set(["count","valid","missing","distinct"]);function x1(e){return He(e)&&fGe.has(e)}function pGe(e){return He(e)&&ht(["min","max"],e)}const yGe=new Set(["count","sum","distinct","valid","missing"]),ZGe=new Set(["mean","average","median","q1","q3","min","max"]);
53function X$(e){return Vo(e)&&(e=k1(e,void 0)),"bin"+Ze(e).map(t=>Y1(e[t])?ci(`_${t}_${yo(e[t])}`):ci(`_${t}_${e[t]}`)).join("")}function Dt(e){return e===!0||md(e)&&!e.binned}function Ai(e){return e==="binned"||md(e)&&e.binned===!0}function md(e){return we(e)}function Y1(e){return We(e,"param")}function LS(e){switch(e){case Or:case jr:case oa:case hs:case dr:case mr:case No:case ua:case wo:case Ho:case fs:return 6;case Ro:return 4;default:return 10}}function Z0(e){return We(e,"expr")}function qi(e,{level:t}={level:0}){const i=Ze(e||{}),n={};for(const s of i)n[s]=t===0?zs(e[s]):qi(e[s],{level:t-1});return n}function J$(e){const{anchor:t,frame:i,offset:n,orient:s,angle:l,limit:c,color:r,subtitleColor:a,subtitleFont:u,subtitleFontSize:o,subtitleFontStyle:d,subtitleFontWeight:b,subtitleLineHeight:h,subtitlePadding:p,...Z}=e,X={...Z,...r?{fill:r}:{}},J={...t?{anchor:t}:{},...i?{frame:i}:{},...n?{offset:n}:{},...s?{orient:s}:{},...l!==void 0?{angle:l}:{},...c!==void 0?{limit:c}:{}},V={...a?{subtitleColor:a}:{},...u?{subtitleFont:u}:{},...o?{subtitleFontSize:o}:{},...d?{subtitleFontStyle:d}:{},...b?{subtitleFontWeight:b}:{},...h?{subtitleLineHeight:h}:{},...p?{subtitlePadding:p}:{}},g=Em(e,["align","baseline","dx","dy","limit"]);return{titleMarkConfig:X,subtitleMarkConfig:g,nonMarkTitleProperties:J,subtitle:V}}function Fa(e){return He(e)||fe(e)&&He(e[0])}function Ce(e){return We(e,"signal")}function bd(e){return We(e,"step")}function WGe(e){return fe(e)?!1:We(e,"fields")&&!We(e,"data")}function XGe(e){return fe(e)?!1:We(e,"fields")&&We(e,"data")}function Cr(e){return fe(e)?!1:We(e,"field")&&We(e,"data")}const JGe={aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1},xGe=Ze(JGe),YGe={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},HV=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function x$(e){const t=fe(e.condition)?e.condition.map(CS):CS(e.condition);return{...zs(e),condition:t}}function zs(e){if(Z0(e)){const{expr:t,...i}=e;return{signal:t,...i}}return e}function CS(e){if(Z0(e)){const{expr:t,...i}=e;return{signal:t,...i}}return e}function ti(e){if(Z0(e)){const{expr:t,...i}=e;return{signal:t,...i}}return Ce(e)?e:e!==void 0?{value:e}:void 0}function GGe(e){return Ce(e)?e.signal:Ge(e)}function TS(e){return Ce(e)?e.signal:Ge(e.value)}function Fl(e){return Ce(e)?e.signal:e==null?null:Ge(e)}function VGe(e,t,i){for(const n of i){const s=er(n,t.markDef,t.config);s!==void 0&&(e[n]=ti(s))}return e}function Y$(e){return[].concat(e.type,e.style??[])}function Kt(e,t,i,n={}){const{vgChannel:s,ignoreVgConfig:l}=n;return s&&We(t,s)?t[s]:t[e]!==void 0?t[e]:l&&(!s||s===e)?void 0:er(e,t,i,n)}function er(e,t,i,{vgChannel:n}={}){const s=NV(e,t,i.style);return xi(n?s:void 0,s,n?i[t.type][n]:void 0,i[t.type][e],n?i.mark[n]:i.mark[e])}function NV(e,t,i){return G$(e,Y$(t),i)}function G$(e,t,i){t=Ne(t);let n;for(const s of t){const l=i[s];We(l,e)&&(n=l[e])}return n}function V$(e,t){return Ne(e).reduce((i,n)=>(i.field.push(ve(n,t)),i.order.push(n.sort??"ascending"),i),{field:[],order:[]})}function I$(e,t){const i=[...e];return t.forEach(n=>{for(const s of i)if(Hs(s,n))return;i.push(n)}),i}function g$(e,t){return Hs(e,t)||!t?e:e?[...Ne(e),...Ne(t)].join(", "):t}function v$(e,t){const i=e.value,n=t.value;if(i==null||n===null)return{explicit:e.explicit,value:null};if((Fa(i)||Ce(i))&&(Fa(n)||Ce(n)))return{explicit:e.explicit,value:g$(i,n)};if(Fa(i)||Ce(i))return{explicit:e.explicit,value:i};if(Fa(n)||Ce(n))return{explicit:e.explicit,value:n};if(!Fa(i)&&!Ce(i)&&!Fa(n)&&!Ce(n))return{explicit:e.explicit,value:I$(i,n)};throw new Error("It should never reach here")}function Qv(e){return`Invalid specification ${_t(e)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}const IGe='Autosize "fit" only works for single views and layered views.';function MS(e){return`${e=="width"?"Width":"Height"} "container" only works for single views and layered views.`}function KS(e){const t=e=="width"?"Width":"Height",i=e=="width"?"x":"y";return`${t} "container" only works well with autosize "fit" or "fit-${i}".`}function BS(e){return e?`Dropping "fit-${e}" because spec has discrete ${ps(e)}.`:'Dropping "fit" because spec has discrete size.'}function Dv(e){return`Unknown field for ${e}. Cannot calculate view size.`}function _S(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function gGe(e,t){return`Cannot project a selection on encoding channel "${e}" as it uses an aggregate function ("${t}").`}function vGe(e){return`The "nearest" transform is not supported for ${e} marks.`}function z$(e){return`Selection not supported for ${e} yet.`}function zGe(e){return`Cannot find a selection named "${e}".`}const wGe="Scale bindings are currently only supported for scales with unbinned, continuous domains.",HGe="Sequntial scales are deprecated. The available quantitative scale type values are linear, log, pow, sqrt, symlog, time and utc",NGe="Legend bindings are only supported for selections over an individual field or encoding channel.";function RGe(e){return`Lookups can only be performed on selection parameters. "${e}" is a variable parameter.`}function kGe(e){return`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`}const FGe="The same selection must be used to override scale domains in a layered view.",SGe='Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.';function LGe(e){return`Unknown repeated value "${e}".`}function OS(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const CGe="Multiple timer selections in one unit spec are not supported. Ignoring all but the first.",Av="Animation involving facet, layer, or concat is currently unsupported.";function TGe(e){return`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${Ge(e)}.`}function MGe(e,t,i,n){return(e.length?"Multiple ":"No ")+`matching ${Ge(t)} encoding found for selection ${Ge(i.param)}. Using "field": ${Ge(n)}.`}const KGe="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function BGe(e){return`Unrecognized parse "${e}".`}function jS(e,t,i){return`An ancestor parsed field "${e}" as ${i} but a child wants to parse the field as ${t}.`}const _Ge="Attempt to add the same child twice.";
vendor: 16,456 bytes, line 53
53function OGe(e){return`Ignoring an invalid transform: ${_t(e)}.`}const jGe='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function ES(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function EGe(e){const{parentProjection:t,projection:i}=e;return`Layer's shared projection ${_t(t)} is overridden by a child projection ${_t(i)}.`}const PGe="Arc marks uses theta channel rather than angle, replacing angle with theta.";function UGe(e){return`${e}Offset dropped because ${e} is continuous`}function $Ge(e,t,i){return`Channel ${e} is a ${t}. Converted to {value: ${_t(i)}}.`}function w$(e){return`Invalid field type "${e}".`}function QGe(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function DGe(e){return`Invalid aggregation operator "${e}".`}function H$(e,t){const{fill:i,stroke:n}=t;return`Dropping color ${e} as the plot also has ${i&&n?"fill and stroke":i?"fill":"stroke"}.`}function AGe(e){return`Position range does not support relative band size for ${e}.`}function RV(e,t){return`Dropping ${_t(e)} from channel "${t}" since it does not contain any data field, datum, value, or signal.`}const qGe="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function G1(e,t,i){return`${e} dropped as it is incompatible with "${t}".`}function eVe(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function tVe(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function iVe(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function nVe(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`}function XY(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${t==="ordinal"?"order":"magnitude"}.`}function sVe(e){return`The ${e} for range marks cannot be an expression`}function lVe(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`}function cVe(e,t){return`Specified orient "${e}" overridden with "${t}".`}function rVe(e){return`Cannot use the scale property "${e}" with non-color channel.`}function aVe(e){return`Cannot use the relative band size with ${e} scale.`}function oVe(e){return`Using unaggregated domain with raw field has no effect (${_t(e)}).`}function uVe(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function dVe(e){return`Unaggregated domain is currently unsupported for log scale (${_t(e)}).`}function mVe(e){return`Cannot apply size to non-oriented mark "${e}".`}function bVe(e,t,i){return`Channel "${e}" does not work with "${t}" scale. We are using "${i}" scale instead.`}function hVe(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}function N$(e,t,i){return`${i}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function R$(e){return`The step for "${e}" is dropped because the ${e==="width"?"x":"y"} is continuous.`}function fVe(e,t,i,n){return`Conflicting ${t.toString()} property "${e.toString()}" (${_t(i)} and ${_t(n)}). Using ${_t(i)}.`}function pVe(e,t,i,n){return`Conflicting ${t.toString()} property "${e.toString()}" (${_t(i)} and ${_t(n)}). Using the union of the two domains.`}function yVe(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`}function ZVe(e){return`Dropping sort property ${_t(e)} as unioned domains only support boolean or op "count", "min", and "max".`}const PS="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",WVe="Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.",XVe="Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.",JVe="Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.";function xVe(e){return`Cannot stack "${e}" if there is already "${e}2".`}function YVe(e){return`Stack is applied to a non-linear scale (${e}).`}function GVe(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}").`}function YX(e,t){return`Invalid ${e}: ${_t(t)}.`}function VVe(e){return`Dropping day from datetime ${_t(e)} as day cannot be combined with other units.`}function IVe(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function gVe(e,t,i){return`${e} is not usually used with ${t} for ${i}.`}function vVe(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function US(e){return`1D error band does not support ${e}.`}function k$(e){return`Channel ${e} is required for "binned" bin.`}function zVe(e){return`Channel ${e} should not be used with "binned" bin.`}function wVe(e){return`Domain for ${e} is required for threshold scale.`}const F$=Z3(y3);let _u=F$;function HVe(e){return _u=e,_u}function NVe(){return _u=F$,_u}function qv(...e){_u.error(...e)}function Xe(...e){_u.warn(...e)}function RVe(...e){_u.debug(...e)}function hd(e){if(e&&we(e)){for(const t of tz)if(We(e,t))return!0}return!1}const S$=["january","february","march","april","may","june","july","august","september","october","november","december"],kVe=S$.map(e=>e.substr(0,3)),L$=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],FVe=L$.map(e=>e.substr(0,3));function SVe(e){if(f1(e)&&(e=+e),zt(e))return e>4&&Xe(YX("quarter",e)),e-1;throw new Error(YX("quarter",e))}function LVe(e){if(f1(e)&&(e=+e),zt(e))return e-1;{const t=e.toLowerCase(),i=S$.indexOf(t);if(i!==-1)return i;const n=t.substr(0,3),s=kVe.indexOf(n);if(s!==-1)return s;throw new Error(YX("month",e))}}function CVe(e){if(f1(e)&&(e=+e),zt(e))return e%7;{const t=e.toLowerCase(),i=L$.indexOf(t);if(i!==-1)return i;const n=t.substr(0,3),s=FVe.indexOf(n);if(s!==-1)return s;throw new Error(YX("day",e))}}function ez(e,t){const i=[];if(t&&e.day!==void 0&&Ze(e).length>1&&(Xe(VVe(e)),e=Ae(e),delete e.day),e.year!==void 0?i.push(e.year):i.push(2012),e.month!==void 0){const n=t?LVe(e.month):e.month;i.push(n)}else if(e.quarter!==void 0){const n=t?SVe(e.quarter):e.quarter;i.push(zt(n)?n*3:`${n}*3`)}else i.push(0);if(e.date!==void 0)i.push(e.date);else if(e.day!==void 0){const n=t?CVe(e.day):e.day;i.push(zt(n)?n+1:`${n}+1`)}else i.push(1);for(const n of["hours","minutes","seconds","milliseconds"]){const s=e[n];i.push(typeof s>"u"?0:s)}return i}function Ou(e){const i=ez(e,!0).join(", ");return e.utc?`utc(${i})`:`datetime(${i})`}function TVe(e){const i=ez(e,!1).join(", ");return e.utc?`utc(${i})`:`datetime(${i})`}function MVe(e){const t=ez(e,!0);return e.utc?+new Date(Date.UTC(...t)):+new Date(...t)}const C$={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},tz=Ze(C$);function KVe(e){return Re(C$,e)}function fd(e){return we(e)?e.binned:T$(e)}function T$(e){return e&&e.startsWith("binned")}function iz(e){return e.startsWith("utc")}function BVe(e){return e.substring(3)}const _Ve={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function V1(e){return tz.filter(t=>K$(e,t))}function M$(e){const t=V1(e);return t[t.length-1]}function K$(e,t){const i=e.indexOf(t);return!(i<0||i>0&&t==="seconds"&&e.charAt(i-1)==="i"||e.length>i+3&&t==="day"&&e.charAt(i+3)==="o"||i>0&&t==="year"&&e.charAt(i-1)==="f")}function OVe(e,t,{end:i}={end:!1}){const n=Mv(t),s=iz(e)?"utc":"";function l(a){return a==="quarter"?`(${s}quarter(${n})-1)`:`${s}${a}(${n})`}let c;const r={};for(const a of tz)K$(e,a)&&(r[a]=l(a),c=a);return i&&(r[c]+="+1"),TVe(r)}function B$(e){if(!e)return;const t=V1(e);return`timeUnitSpecifier(${_t(t)}, ${_t(_Ve)})`}function jVe(e,t,i){if(!e)return;const n=B$(e);return`${i||iz(e)?"utc":"time"}Format(${t}, ${n})`}function Ei(e){if(!e)return;let t;return He(e)?T$(e)?t={unit:e.substring(6),binned:!0}:t={unit:e}:we(e)&&(t={...e,...e.unit?{unit:e.unit}:{}}),iz(t.unit)&&(t.utc=!0,t.unit=BVe(t.unit)),t}function EVe(e){const{utc:t,...i}=Ei(e);return i.unit?(t?"utc":"")+Ze(i).map(n=>ci(`${n==="unit"?"":`_${n}_`}${i[n]}`)).join(""):(t?"utc":"")+"timeunit"+Ze(i).map(n=>ci(`_${n}_${i[n]}`)).join("")}function _$(e,t=i=>i){const i=Ei(e),n=M$(i.unit);if(n&&n!=="day"){const s={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},{step:l,part:c}=O$(n,i.step),r={...s,[c]:+s[c]+l};return`${t(Ou(r))} - ${t(Ou(s))}`}}const PVe={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function UVe(e){return Re(PVe,e)}function O$(e,t=1){if(UVe(e))return{part:e,step:t};switch(e){case"day":case"dayofyear":return{part:"date",step:t};case"quarter":return{part:"month",step:t*3};case"week":return{part:"date",step:t*7}}}function $Ve(e){return We(e,"param")}function nz(e){return!!(e!=null&&e.field)&&e.equal!==void 0}function sz(e){return!!(e!=null&&e.field)&&e.lt!==void 0}function lz(e){return!!(e!=null&&e.field)&&e.lte!==void 0}function cz(e){return!!(e!=null&&e.field)&&e.gt!==void 0}function rz(e){return!!(e!=null&&e.field)&&e.gte!==void 0}function az(e){if(e!=null&&e.field){if(fe(e.range)&&e.range.length===2)return!0;if(Ce(e.range))return!0}return!1}function oz(e){return!!(e!=null&&e.field)&&(fe(e.oneOf)||fe(e.in))}function QVe(e){return!!(e!=null&&e.field)&&e.valid!==void 0}function j$(e){return oz(e)||nz(e)||az(e)||sz(e)||cz(e)||lz(e)||rz(e)}function Jc(e,t){return F1(e,{timeUnit:t,wrapTime:!0})}function DVe(e,t){return e.map(i=>Jc(i,t))}function E$(e,t=!0){const{field:i}=e,n=Ei(e.timeUnit),{unit:s,binned:l}=n||{},c=ve(e,{expr:"datum"}),r=s?`time(${l?c:OVe(s,i)})`:c;if(nz(e))return`${r}===${Jc(e.equal,s)}`;if(sz(e)){const a=e.lt;return`${r}<${Jc(a,s)}`}else if(cz(e)){const a=e.gt;return`${r}>${Jc(a,s)}`}else if(lz(e)){const a=e.lte;return`${r}<=${Jc(a,s)}`}else if(rz(e)){const a=e.gte;return`${r}>=${Jc(a,s)}`}else{if(oz(e))return`indexof([${DVe(e.oneOf,s).join(",")}], ${r}) !== -1`;if(QVe(e))return I1(r,e.valid);if(az(e)){const{range:a}=qi(e),u=Ce(a)?{signal:`${a.signal}[0]`}:a[0],o=Ce(a)?{signal:`${a.signal}[1]`}:a[1];if(u!==null&&o!==null&&t)return"inrange("+r+", ["+Jc(u,s)+", "+Jc(o,s)+"])";const d=[];return u!==null&&d.push(`${r} >= ${Jc(u,s)}`),o!==null&&d.push(`${r} <= ${Jc(o,s)}`),d.length>0?d.join(" && "):"true"}}throw new Error(`Invalid field predicate: ${_t(e)}`)}function I1(e,t=!0){return t?`isValid(${e}) && isFinite(+${e})`:`!isValid(${e}) || !isFinite(+${e})`}function AVe(e){return j$(e)&&e.timeUnit?{...e,timeUnit:Ei(e.timeUnit)}:e}const W0={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function qVe(e){return e==="quantitative"||e==="temporal"}function P$(e){return e==="ordinal"||e==="nominal"}const ju=W0.quantitative,uz=W0.ordinal,Qm=W0.temporal,dz=W0.nominal,Lb=W0.geojson;function eIe(e){if(e)switch(e=e.toLowerCase(),e){case"q":case ju:return"quantitative";case"t":case Qm:return"temporal";case"o":case uz:return"ordinal";case"n":case dz:return"nominal";case Lb:return"geojson"}}const en={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",TIME:"time",UTC:"utc",POINT:"point",BAND:"band"},kV={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function tIe(e,t){const i=kV[e],n=kV[t];return i===n||i==="ordinal-position"&&n==="time"||n==="ordinal-position"&&i==="time"}const iIe={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function $S(e){return iIe[e]}const U$=new Set(["linear","log","pow","sqrt","symlog"]),$$=new Set([...U$,"time","utc"]);function Q$(e){return U$.has(e)}const D$=new Set(["quantile","quantize","threshold"]),nIe=new Set([...$$,...D$,"sequential","identity"]),sIe=new Set(["ordinal","bin-ordinal","point","band"]);function Ui(e){return sIe.has(e)}function El(e){return nIe.has(e)}function Sc(e){return $$.has(e)}function Dm(e){return D$.has(e)}const lIe={pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,tickBandPaddingInner:.25,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:4,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0,framesPerSecond:2,animationDuration:5};function cIe(e){return!He(e)&&We(e,"name")}function A$(e){return We(e,"param")}function rIe(e){return We(e,"unionWith")}function aIe(e){return we(e)&&"field"in e}const oIe={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:hKe,domain:fKe,range:pKe,rangeMax:yKe,rangeMin:ZKe,scheme:WKe,...uIe}=oIe,dIe=Ze(uIe);function FV(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(e);case"bins":return!["point","band","identity","ordinal"].includes(e);case"round":return Sc(e)||e==="band"||e==="point";case"padding":case"rangeMin":case"rangeMax":return Sc(e)||["point","band"].includes(e);case"paddingOuter":case"align":return["point","band"].includes(e);case"paddingInner":return e==="band";case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return Sc(e);case"nice":return Sc(e)||e==="quantize"||e==="threshold";case"exponent":return e==="pow";case"base":return e==="log";case"constant":return e==="symlog";case"zero":return El(e)&&!ht(["log","time","utc","threshold","quantile"],e)}}function q$(e,t){switch(t){case"interpolate":case"scheme":case"domainMid":return Ym(e)?void 0:rVe(t);case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}function mIe(e,t){return ht([uz,dz],t)?e===void 0||Ui(e):t===Qm?ht([en.TIME,en.UTC,void 0],e):t===ju?Q$(e)||Dm(e)||e===void 0:!0}function bIe(e,t,i=!1){if(!hr(e))return!1;switch(e){case ri:case $i:case vo:case Sb:case yl:case rc:return Sc(t)||t==="band"?!0:t==="point"?!i:!1;case zo:return ht(["linear","band"],t);case oa:case No:case ua:case wo:case Ho:case ud:return Sc(t)||Dm(t)||ht(["band","point","ordinal"],t);case hs:case dr:case mr:return t!=="band";case Ro:case fs:return t==="ordinal"||Dm(t)}}function hIe(e){return we(e)&&"value"in e}const Qn={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},eQ=Qn.arc,g1=Qn.area,v1=Qn.bar,fIe=Qn.image,z1=Qn.line,w1=Qn.point,pIe=Qn.rect,GX=Qn.rule,tQ=Qn.text,mz=Qn.tick,yIe=Qn.trail,bz=Qn.circle,hz=Qn.square,iQ=Qn.geoshape;function Fo(e){return["line","area","trail"].includes(e)}function ap(e){return["rect","bar","image","arc","tick"].includes(e)}const ZIe=new Set(Ze(Qn));function tr(e){return We(e,"type")}const WIe=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],XIe=["fill","fillOpacity"],JIe=[...WIe,...XIe],xIe={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},QS=Ze(xIe),JY=["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],YIe={area:["line","point"],bar:JY,rect:JY,line:["point"],tick:["bandSize","thickness",...JY]}
53,GIe={color:"#4c78a8",invalid:"break-paths-show-path-domains",timeUnitBandSize:1},VIe={mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1},nQ=Ze(VIe);function Eu(e){return We(e,"band")}const IIe={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},gIe=5,fz={binSpacing:0,continuousBandSize:gIe,minBandSize:.25,timeUnitBandPosition:.5},vIe={...fz,binSpacing:1},zIe={...fz,thickness:1};function wIe(e){return tr(e)?e.type:e}function sQ(e,{isPath:t}){return e===void 0||e==="break-paths-show-path-domains"?t?"break-paths-show-domains":"filter":e===null?"show":e}function pz({markDef:e,config:t,scaleChannel:i,scaleType:n,isCountAggregate:s}){var r,a;if(!n||!El(n)||s)return"always-valid";const l=sQ(Kt("invalid",e,t),{isPath:Fo(e.type)});return((a=(r=t.scale)==null?void 0:r.invalid)==null?void 0:a[i])!==void 0?"show":l}function HIe(e){return e==="break-paths-filter-domains"||e==="break-paths-show-domains"}function lQ({scaleName:e,scale:t,mode:i}){const n=`domain('${e}')`;if(!t||!e)return;const s=`${n}[0]`,l=`peek(${n})`,c=t.domainHasZero();return c==="definitely"?{scale:e,value:0}:c==="maybe"?{signal:`scale('${e}', inrange(0, ${n}) ? 0 : ${i==="zeroOrMin"?s:l})`}:{signal:`scale('${e}', ${i==="zeroOrMin"?s:l})`}}function cQ({scaleChannel:e,channelDef:t,scale:i,scaleName:n,markDef:s,config:l}){var o;const c=i==null?void 0:i.get("type"),r=Ul(t),a=x1(r==null?void 0:r.aggregate),u=pz({scaleChannel:e,markDef:s,config:l,scaleType:c,isCountAggregate:a});if(r&&u==="show"){const d=((o=l.scale.invalid)==null?void 0:o[e])??"zero-or-min";return{test:I1(ve(r,{expr:"datum"}),!1),...NIe(d,i,n)}}}function NIe(e,t,i){if(hIe(e)){const{value:n}=e;return Ce(n)?{signal:n.signal}:{value:n}}return lQ({scale:t,scaleName:i,mode:"zeroOrMin"})}function yz(e){const{channel:t,channelDef:i,markDef:n,scale:s,scaleName:l,config:c}=e,r=dd(t),a=Zz(e),u=cQ({scaleChannel:r,channelDef:i,scale:s,scaleName:l,markDef:n,config:c});return u!==void 0?[u,a]:a}function RIe(e){const{datum:t}=e;return hd(t)?Ou(t):`${_t(t)}`}function Wu(e,t,i,n){const s={};if(t&&(s.scale=t),fr(e)){const{datum:l}=e;hd(l)?s.signal=Ou(l):Ce(l)?s.signal=l.signal:Z0(l)?s.signal=l.expr:s.value=l}else s.field=ve(e,i);if(n){const{offset:l,band:c}=n;l&&(s.offset=l),c&&(s.band=c)}return s}function VX({scaleName:e,fieldOrDatumDef:t,fieldOrDatumDef2:i,offset:n,startSuffix:s,endSuffix:l="end",bandPosition:c=.5}){const r=!Ce(c)&&0<c&&c<1?"datum":void 0,a=ve(t,{expr:r,suffix:s}),u=i!==void 0?ve(i,{expr:r}):ve(t,{suffix:l,expr:r}),o={};if(c===0||c===1){o.scale=e;const d=c===0?a:u;o.field=d}else{const d=Ce(c)?`(1-${c.signal}) * ${a} + ${c.signal} * ${u}`:`${1-c} * ${a} + ${c} * ${u}`;o.signal=`scale("${e}", ${d})`}return n&&(o.offset=n),o}function kIe({scaleName:e,fieldDef:t}){const i=ve(t,{expr:"datum"}),n=ve(t,{expr:"datum",suffix:"end"});return`abs(scale("${e}", ${n}) - scale("${e}", ${i}))`}function Zz({channel:e,channelDef:t,channel2Def:i,markDef:n,config:s,scaleName:l,scale:c,stack:r,offset:a,defaultRef:u,bandPosition:o}){if(t){if(tt(t)){const d=c==null?void 0:c.get("type");if(Un(t)){o??(o=Wo({fieldDef:t,fieldDef2:i,markDef:n,config:s}));const{bin:b,timeUnit:h,type:p}=t;if(Dt(b)||o&&h&&p===Qm)return r!=null&&r.impute?Wu(t,l,{binSuffix:"mid"},{offset:a}):o&&!Ui(d)?VX({scaleName:l,fieldOrDatumDef:t,bandPosition:o,offset:a}):Wu(t,l,G0(t,e)?{binSuffix:"range"}:{},{offset:a});if(Ai(b)){if(xe(i))return VX({scaleName:l,fieldOrDatumDef:t,fieldOrDatumDef2:i,bandPosition:o,offset:a});Xe(k$(e===ri?cc:ur))}}return Wu(t,l,Ui(d)?{binSuffix:"range"}:{},{offset:a,band:d==="band"?o??t.bandPosition??.5:void 0})}else if(Pl(t)){const d=t.value,b=a?{offset:a}:{};return{...Vf(e,d),...b}}}return ct(u)&&(u=u()),u&&{...u,...a?{offset:a}:{}}}function Vf(e,t){return ht(["x","x2"],e)&&t==="width"?{field:{group:"width"}}:ht(["y","y2"],e)&&t==="height"?{field:{group:"height"}}:ti(t)}function Pu(e){return e&&e!=="number"&&e!=="time"}function rQ(e,t,i){return`${e}(${t}${i?`, ${_t(i)}`:""})`}const FIe=" â ";function Wz({fieldOrDatumDef:e,format:t,formatType:i,expr:n,normalizeStack:s,config:l}){var a,u;if(Pu(i))return Sl({fieldOrDatumDef:e,format:t,formatType:i,expr:n,config:l});const c=aQ(e,n,s),r=Am(e);
53if(t===void 0&&i===void 0&&l.customFormatTypes){if(r==="quantitative"){if(s&&l.normalizedNumberFormatType)return Sl({fieldOrDatumDef:e,format:l.normalizedNumberFormat,formatType:l.normalizedNumberFormatType,expr:n,config:l});if(l.numberFormatType)return Sl({fieldOrDatumDef:e,format:l.numberFormat,formatType:l.numberFormatType,expr:n,config:l})}if(r==="temporal"&&l.timeFormatType&&xe(e)&&e.timeUnit===void 0)return Sl({fieldOrDatumDef:e,format:l.timeFormat,formatType:l.timeFormatType,expr:n,config:l})}if(eb(e)){const o=LIe({field:c,timeUnit:xe(e)?(a=Ei(e.timeUnit))==null?void 0:a.unit:void 0,format:t,formatType:l.timeFormatType,rawTimeFormat:l.timeFormat,isUTCScale:pd(e)&&((u=e.scale)==null?void 0:u.type)===en.UTC});return o?{signal:o}:void 0}if(t=SV({type:r,specifiedFormat:t,config:l,normalizeStack:s}),xe(e)&&Dt(e.bin)){const o=ve(e,{expr:n,binSuffix:"end"});return{signal:X0(c,o,t,i,l)}}else return t||Am(e)==="quantitative"?{signal:`${dQ(c,t)}`}:{signal:`isValid(${c}) ? ${c} : ""+${c}`}}function aQ(e,t,i){return xe(e)?i?`${ve(e,{expr:t,suffix:"end"})}-${ve(e,{expr:t,suffix:"start"})}`:ve(e,{expr:t}):RIe(e)}function Sl({fieldOrDatumDef:e,format:t,formatType:i,expr:n,normalizeStack:s,config:l,field:c}){if(c??(c=aQ(e,n,s)),c!=="datum.value"&&xe(e)&&Dt(e.bin)){const r=ve(e,{expr:n,binSuffix:"end"});return{signal:X0(c,r,t,i,l)}}return{signal:rQ(i,c,t)}}function oQ(e,t,i,n,s,l){var c;if(!(He(n)&&Pu(n))&&!(i===void 0&&n===void 0&&s.customFormatTypes&&Am(e)==="quantitative"&&(s.normalizedNumberFormatType&&qm(e)&&e.stack==="normalize"||s.numberFormatType))){if(qm(e)&&e.stack==="normalize"&&s.normalizedNumberFormat)return SV({type:"quantitative",config:s,normalizeStack:!0});if(eb(e)){const r=xe(e)?(c=Ei(e.timeUnit))==null?void 0:c.unit:void 0;return r===void 0&&s.customFormatTypes&&s.timeFormatType?void 0:SIe({specifiedFormat:i,timeUnit:r,config:s,omitTimeFormatConfig:l})}return SV({type:t,specifiedFormat:i,config:s})}}function uQ(e,t,i){var n;if(e&&(Ce(e)||e==="number"||e==="time"))return e;if(eb(t)&&i!=="time"&&i!=="utc")return xe(t)&&((n=Ei(t==null?void 0:t.timeUnit))!=null&&n.utc)?"utc":"time"}function SV({type:e,specifiedFormat:t,config:i,normalizeStack:n}){if(He(t))return t;if(e===ju)return n?i.normalizedNumberFormat:i.numberFormat}function SIe({specifiedFormat:e,timeUnit:t,config:i,omitTimeFormatConfig:n}){return e||(t?{signal:B$(t)}:n?void 0:i.timeFormat)}function dQ(e,t){return`format(${e}, "${t||""}")`}function DS(e,t,i,n){return Pu(i)?rQ(i,e,t):dQ(e,(He(t)?t:void 0)??n.numberFormat)}function X0(e,t,i,n,s){if(i===void 0&&n===void 0&&s.customFormatTypes&&s.numberFormatType)return X0(e,t,s.numberFormat,s.numberFormatType,s);const l=DS(e,i,n,s),c=DS(t,i,n,s);return`${I1(e,!1)} ? "null" : ${l} + "${FIe}" + ${c}`}function LIe({field:e,timeUnit:t,format:i,formatType:n,rawTimeFormat:s,isUTCScale:l}){return!t||i?!t&&n?`${n}(${e}, '${i}')`:(i=He(i)?i:s,`${l?"utc":"time"}Format(${e}, '${i}')`):jVe(t,e,l)}const H1="min",CIe={x:1,y:1,color:1,fill:1,stroke:1,strokeWidth:1,size:1,shape:1,fillOpacity:1,strokeOpacity:1,opacity:1,text:1};function AS(e){return Re(CIe,e)}function TIe(e){return We(e,"encoding")}function Er(e){return e&&(e.op==="count"||We(e,"field"))}function mQ(e){return e&&fe(e)}function J0(e){return We(e,"row")||We(e,"column")}function Xz(e){return We(e,"header")}function N1(e){return We(e,"facet")}function MIe(e){return We(e,"param")}function KIe(e){return!He(e)&&We(e,"repeat")}function qS(e){const{field:t,timeUnit:i,bin:n,aggregate:s}=e;return{...i?{timeUnit:i}:{},...n?{bin:n}:{},...s?{aggregate:s}:{},field:t}}function Jz(e){return We(e,"sort")}function Wo({fieldDef:e,fieldDef2:t,markDef:i,config:n}){if(tt(e)&&e.bandPosition!==void 0)return e.bandPosition;if(xe(e)){const{timeUnit:s,bin:l}=e;if(s&&!t)return er("timeUnitBandPosition",i,n);if(Dt(l))return .5}}function bQ({channel:e,fieldDef:t,fieldDef2:i,markDef:n,config:s,scaleType:l,useVlSizeChannel:c}){var u,o,d;const r=ps(e),a=Kt(c?"size":r,n,s,{vgChannel:r});if(a!==void 0)return a;if(xe(t)){const{timeUnit:b,bin:h}=t;if(b&&!i)return{band:er("timeUnitBandSize",n,s)};if(Dt(h)&&!Ui(l))return{band:1}}if(ap(n.type))return l?Ui(l)?((u=s[n.type])==null?void 0:u.discreteBandSize)||{band:1}:(o=s[n.type])==null?void 0:o.continuousBandSize:(d=s[n.type])==null?void 0:d.discreteBandSize}function hQ(e,t,i,n){return Dt(e.bin)||e.timeUnit&&Un(e)&&e.type==="temporal"?Wo({fieldDef:e,fieldDef2:t,markDef:i,config:n})!==void 0:!1}function fQ(e){return We(e,"sort")&&!We(e,"field")}function x0(e){return We(e,"condition")}function R1(e){const t=e==null?void 0:e.condition;return!!t&&!fe(t)&&xe(t)}function Y0(e){const t=e==null?void 0:e.condition;return!!t&&!fe(t)&&tt(t)}function BIe(e){const t=e==null?void 0:e.condition;return!!t&&(fe(t)||Pl(t))}function xe(e){return We(e,"field")||(e==null?void 0:e.aggregate)==="count"}function Am(e){return e==null?void 0:e.type}function fr(e){return We(e,"datum")}function Pa(e){return Un(e)&&!gX(e)||IX(e)}function eL(e){return Un(e)&&e.type==="quantitative"&&!e.bin||IX(e)}function IX(e){return fr(e)&&zt(e.datum)}function tt(e){return xe(e)||fr(e)}function Un(e){return e&&(We(e,"field")||e.aggregate==="count")&&We(e,"type")}function Pl(e){return We(e,"value")}function pd(e){return We(e,"scale")||We(e,"sort")}function qm(e){return We(e,"axis")||We(e,"stack")||We(e,"impute")}function pQ(e){return We(e,"legend")}function yQ(e){return We(e,"format")||We(e,"formatType")}function _Ie(e){return as(e,["legend","axis","header","scale"])}function OIe(e){return We(e,"op")}function ve(e,t={}){let i=e.field;const n=t.prefix;let s=t.suffix,l="";if(EIe(e))i=c$("count");else{let c;if(!t.nofn)if(OIe(e))c=e.op;else{const{bin:r,aggregate:a,timeUnit:u}=e;Dt(r)?(c=X$(r),s=(t.binSuffix??"")+(t.suffix??"")):a?ko(a)?(l=`["${i}"]`,i=`argmax_${a.argmax}`):ea(a)?(l=`["${i}"]`,i=`argmin_${a.argmin}`):c=String(a):u&&!fd(u)&&(c=EVe(u),s=(!["range","mid"].includes(t.binSuffix)&&t.binSuffix||"")+(t.suffix??""))}c&&(i=i?`${c}_${i}`:c)}return s&&(i=`${i}_${s}`),n&&(i=`${n}_${i}
53`),t.forAs?Fb(i):t.expr?n$(i,t.expr)+l:hl(i)+l}function gX(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return xe(e)&&!!e.bin;case"temporal":return!1}throw new Error(w$(e.type))}function jIe(e){var t;return pd(e)&&Dm((t=e.scale)==null?void 0:t.type)}function EIe(e){return e.aggregate==="count"}function PIe(e,t){var c;const{field:i,bin:n,timeUnit:s,aggregate:l}=e;if(l==="count")return t.countTitle;if(Dt(n))return`${i} (binned)`;if(s&&!fd(s)){const r=(c=Ei(s))==null?void 0:c.unit;if(r)return`${i} (${V1(r).join("-")})`}else if(l)return ko(l)?`${i} for max ${l.argmax}`:ea(l)?`${i} for min ${l.argmin}`:`${h0(l)} of ${i}`;return i}function UIe(e){const{aggregate:t,bin:i,timeUnit:n,field:s}=e;if(ko(t))return`${s} for argmax(${t.argmax})`;if(ea(t))return`${s} for argmin(${t.argmin})`;const l=n&&!fd(n)?Ei(n):void 0,c=t||(l==null?void 0:l.unit)||(l==null?void 0:l.maxbins)&&"timeunit"||Dt(i)&&"bin";return c?`${c.toUpperCase()}(${s})`:s}const ZQ=(e,t)=>{switch(t.fieldTitle){case"plain":return e.field;case"functional":return UIe(e);default:return PIe(e,t)}};let WQ=ZQ;function XQ(e){WQ=e}function $Ie(){XQ(ZQ)}function Gm(e,t,{allowDisabling:i,includeDefault:n=!0}){var r;const s=(r=xz(e))==null?void 0:r.title;if(!xe(e))return s??e.title;const l=e,c=n?Yz(l,t):void 0;return i?xi(s,l.title,c):s??l.title??c}function xz(e){if(qm(e)&&e.axis)return e.axis;if(pQ(e)&&e.legend)return e.legend;if(Xz(e)&&e.header)return e.header}function Yz(e,t){return WQ(e,t)}function vX(e){if(yQ(e)){const{format:t,formatType:i}=e;return{format:t,formatType:i}}else{const t=xz(e)??{},{format:i,formatType:n}=t;return{format:i,formatType:n}}}function QIe(e,t){var l;switch(t){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Jz(e)&&fe(e.sort))return"ordinal";const{aggregate:i,bin:n,timeUnit:s}=e;if(s)return"temporal";if(n||i&&!ko(i)&&!ea(i))return"quantitative";if(pd(e)&&((l=e.scale)!=null&&l.type))switch(kV[e.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}function Ul(e){if(xe(e))return e;if(R1(e))return e.condition}function Fi(e){if(tt(e))return e;if(Y0(e))return e.condition}function JQ(e,t,i,n={}){if(He(e)||zt(e)||Vo(e)){const s=He(e)?"string":zt(e)?"number":"boolean";return Xe($Ge(t,s,e)),{value:e}}return tt(e)?zX(e,t,i,n):Y0(e)?{...e,condition:zX(e.condition,t,i,n)}:e}function zX(e,t,i,n){if(yQ(e)){const{format:s,formatType:l,...c}=e;if(Pu(l)&&!i.customFormatTypes)return Xe(ES(t)),zX(c,t,i,n)}else{const s=qm(e)?"axis":pQ(e)?"legend":Xz(e)?"header":null;if(s&&e[s]){const{format:l,formatType:c,...r}=e[s];if(Pu(c)&&!i.customFormatTypes)return Xe(ES(t)),zX({...e,[s]:r},t,i,n)}}return xe(e)?Gz(e,t,n):DIe(e)}function DIe(e){let t=e.type;if(t)return e;const{datum:i}=e;return t=zt(i)?"quantitative":He(i)?"nominal":hd(i)?"temporal":void 0,{...e,type:t}}function Gz(e,t,{compositeMark:i=!1}={}){const{aggregate:n,timeUnit:s,bin:l,field:c}=e,r={...e};if(!i&&n&&!$v(n)&&!ko(n)&&!ea(n)&&(Xe(DGe(n)),delete r.aggregate),s&&(r.timeUnit=Ei(s)),c&&(r.field=`${c}`),Dt(l)&&(r.bin=k1(l,t)),Ai(l)&&!Yi(t)&&Xe(zVe(t)),Un(r)){const{type:a}=r,u=eIe(a);a!==u&&(r.type=u),a!=="quantitative"&&x1(n)&&(Xe(QGe(a,n)),r.type="quantitative")}else if(!h$(t)){const a=QIe(r,t);r.type=a}if(Un(r)){const{compatible:a,warning:u}=AIe(r,t)||{};a===!1&&Xe(u)}if(Jz(r)&&He(r.sort)){const{sort:a}=r;if(AS(a))return{...r,sort:{encoding:a}};const u=a.substring(1);if(a.charAt(0)==="-"&&AS(u))return{...r,sort:{encoding:u,order:"descending"}}}if(Xz(r)){const{header:a}=r;if(a){const{orient:u,...o}=a;if(u)return{...r,header:{...o,labelOrient:a.labelOrient||u,titleOrient:a.titleOrient||u}}}}return r}function k1(e,t){return Vo(e)?{maxbins:LS(t)}:e==="binned"?{binned:!0}:!e.maxbins&&!e.step?{...e,maxbins:LS(t)}:e}const Ed={compatible:!0};function AIe(e,t){const i=e.type;if(i==="geojson"&&t!=="shape")return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case Or:case jr:case p1:return gX(e)?Ed:{compatible:!1,warning:tVe(t)};case ri:case $i:case vo:case Sb:case hs:case dr:case mr:case f0:case p0:case y1:case Bu:case Z1:case W1:case ud:case yl:case rc:case X1:return Ed;case oc:case fl:case ac:case uc:return i!==ju?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:Ed;case ua:case wo:case Ho:case No:case oa:case aa:case ra:case cc:case ur:case zo:return i==="nominal"&&!e.sort?{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`}:Ed;case fs:case Ro:return!gX(e)&&!jIe(e)?{compatible:!1,warning:iVe(t)}:Ed;case $m:return e.type==="nominal"&&!("sort"in e)?{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}:Ed}}function eb(e){const{formatType:t}=vX(e);return t==="time"||!t&&qIe(e)}function qIe(e){return e&&(e.type==="temporal"||xe(e)&&!!e.timeUnit)}function F1(e,{timeUnit:t,type:i,wrapTime:n,undefinedIfExprNotRequired:s}){var a;const l=t&&((a=Ei(t))==null?void 0:a.unit);let c=l||i==="temporal",r;return Z0(e)?r=e.expr:Ce(e)?r=e.signal:hd(e)?(c=!0,r=Ou(e)):(He(e)||zt(e))&&c&&(r=`datetime(${_t(e)})`,KVe(l)&&(zt(e)&&e<1e4||He(e)&&isNaN(Date.parse(e)))&&(r=Ou({[l]:e}))),r?n&&c?`time(${r})`:r:s?void 0:_t(e)}function xQ(e,t){const{type:i}=e;return t.map(n=>{const s=xe(e)&&!fd(e.timeUnit)?e.timeUnit:void 0,l=F1(n,{timeUnit:s,type:i,undefinedIfExprNotRequired:!0});return l!==void 0?{signal:l}:n})}function G0(e,t){return Dt(e.bin)?hr(t)&&["ordinal","nominal"].includes(e.type):(console.warn("Only call this method for binned field defs."),!1)}const tL={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function V0(e){return e==null?void 0:e.condition}const YQ=["domain","grid","labels","ticks","title"],e3e={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},GQ={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},t3e={...GQ,style:1,labelExpr:1,encoding:1};function iL(e){return Re(t3e,e)}const i3e={axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1},VQ=Ze(i3e);function ma(e){return We(e,"mark")}class S1{constructor(t,i){this.name=t,this.run=i}hasMatchingType(t){return ma(t)?wIe(t.mark)===this.name:!1}}function Xu(e,t){const i=e&&e[t];return i?fe(i)?Pm(i,n=>!!n.field):xe(i)||R1(i):!1}function IQ(e,t){const i=e&&e[t];return i?fe(i)?Pm(i,n=>!!n.field):xe(i)||fr(i)||Y0(i):!1}function gQ(e,t){if(Yi(t)){const i=e[t];if((xe(i)||fr(i))&&(P$(i.type)||xe(i)&&i.timeUnit)){const n=Ov(t);return IQ(e,n)}}return!1}function vQ(e){return Pm(D9e,t=>{if(Xu(e,t)){const i=e[t];if(fe(i))return Pm(i,n=>!!n.aggregate);{const n=Ul(i);return n&&!!n.aggregate}}return!1})}function zQ(e,t){const i=[],n=[],s=[],l=[],c={};return Vz(e,(r,a)=>{if(xe(r)){const{field:u,aggregate:o,bin:d,timeUnit:b,...h}=r;if(o||b||d){const p=xz(r),Z=p==null?void 0:p.title;let X=ve(r,{forAs:!0});const J={...Z?[]:{title:Gm(r,t,{allowDisabling:!0})},...h,field:X};if(o){let V;if(ko(o)?(V="argmax",X=ve({op:"argmax",field:o.argmax},{forAs:!0}),J.field=`${X}.${u}`):ea(o)?(V="argmin",X=ve({op:"argmin",field:o.argmin},{forAs:!0}),J.field=`${X}.${u}`):o!=="boxplot"&&o!=="errorbar"&&o!=="errorband"&&(V=o),V){const g={op:V,as:X};u&&(g.field=u),l.push(g)}}else if(i.push(X),Un(r)&&Dt(d)){if(n.push({bin:d,field:u,as:X}),i.push(ve(r,{binSuffix:"end"})),G0(r,a)&&i.push(ve(r,{binSuffix:"range"})),Yi(a)){const V={field:`${X}_end`};c[`${a}2`]=V}J.bin="binned",h$(a)||(J.type=ju)}else if(b&&!fd(b)){s.push({timeUnit:b,field:u,as:X});const V=Un(r)&&r.type!==Qm&&"time";V&&(a===f0||a===Bu?J.formatType=V:aGe(a)?J.legend={formatType:V,...J.legend}:Yi(a)&&(J.axis={formatType:V,...J.axis}))}c[a]=J}else i.push(u),c[a]=e[a]}else c[a]=e[a]}),{bins:n,timeUnits:s,aggregate:l,groupby:i,encoding:c}}function n3e(e,t,i){const n=uGe(t,i);if(n){if(n==="binned"){const s=e[t===cc?ri:$i];return!!(xe(s)&&xe(e[t])&&Ai(s.bin))}}else return!1;return!0}function s3e(e,t,i,n){const s={};for(const l of Ze(e))b$(l)||Xe(eVe(l));for(let l of nGe){if(!e[l])continue;const c=e[l];
vendor: 4,139 bytes, line 53
53if(y0(l)){const r=iGe(l),a=s[r];if(xe(a)&&qVe(a.type)&&xe(c)&&!a.timeUnit){Xe(UGe(r));continue}}if(l==="angle"&&t==="arc"&&!e.theta&&(Xe(PGe),l=yl),!n3e(e,l,t)){Xe(G1(l,t));continue}if(l===oa&&t==="line"){const r=Ul(e[l]);if(r!=null&&r.aggregate){Xe(qGe);continue}}if(l===hs&&(i?"fill"in e:"stroke"in e)){Xe(H$("encoding",{fill:"fill"in e,stroke:"stroke"in e}));continue}if(l===p0||l===$m&&!fe(c)&&!Pl(c)||l===Bu&&fe(c)){if(c){if(l===$m){const r=e[l];if(fQ(r)){s[l]=r;continue}}s[l]=Ne(c).reduce((r,a)=>(xe(a)?r.push(Gz(a,l)):Xe(RV(a,l)),r),[])}}else{if(l===Bu&&c===null)s[l]=null;else if(!xe(c)&&!fr(c)&&!Pl(c)&&!x0(c)&&!Ce(c)){Xe(RV(c,l));continue}s[l]=JQ(c,l,n)}}return s}function L1(e,t){const i={};for(const n of Ze(e)){const s=JQ(e[n],n,t,{compositeMark:!0});i[n]=s}return i}function l3e(e){const t=[];for(const i of Ze(e))if(Xu(e,i)){const n=e[i],s=Ne(n);for(const l of s)xe(l)?t.push(l):R1(l)&&t.push(l.condition)}return t}function Vz(e,t,i){if(e)for(const n of Ze(e)){const s=e[n];if(fe(s))for(const l of s)t.call(i,l,n);else t.call(i,s,n)}}function c3e(e,t,i,n){return e?Ze(e).reduce((s,l)=>{const c=e[l];return fe(c)?c.reduce((r,a)=>t.call(n,r,a,l),s):t.call(n,s,c,l)},i):i}function wQ(e,t){return Ze(t).reduce((i,n)=>{switch(n){case ri:case $i:case Z1:case X1:case W1:case cc:case ur:case vo:case Sb:case yl:case aa:case rc:case ra:case zo:case ac:case oc:case uc:case fl:case f0:case fs:case ud:case Bu:return i;case $m:if(e==="line"||e==="trail")return i;case p0:case y1:{const s=t[n];if(fe(s)||xe(s))for(const l of Ne(s))l.aggregate||i.push(ve(l,{}));return i}case oa:if(e==="trail")return i;case hs:case dr:case mr:case ua:case wo:case Ho:case Ro:case No:{const s=Ul(t[n]);return s&&!s.aggregate&&i.push(ve(s,{})),i}}},[])}function r3e(e){const{tooltip:t,...i}=e;if(!t)return{filteredEncoding:i};let n,s;if(fe(t)){for(const l of t)l.aggregate?(n||(n=[]),n.push(l)):(s||(s=[]),s.push(l));n&&(i.tooltip=n)}else t.aggregate?i.tooltip=t:s=t;return fe(s)&&s.length===1&&(s=s[0]),{customTooltipWithoutAggregatedField:s,filteredEncoding:i}}function LV(e,t,i,n=!0){if("tooltip"in i)return{tooltip:i.tooltip};const s=e.map(({fieldPrefix:c,titlePrefix:r})=>{const a=n?` of ${Iz(t)}`:"";return{field:c+t.field,type:t.type,title:Ce(r)?{signal:`${r}"${escape(a)}"`}:r+a}}),l=l3e(i).map(_Ie);return{tooltip:[...s,...Fc(l,pt)]}}function Iz(e){const{title:t,field:i}=e;return xi(t,i)}function gz(e,t,i,n,s){const{scale:l,axis:c}=i;return({partName:r,mark:a,positionPrefix:u,endPositionPrefix:o=void 0,extraEncoding:d={}})=>{const b=Iz(i);return HQ(e,r,s,{mark:a,encoding:{[t]:{field:`${u}_${i.field}`,type:i.type,...b!==void 0?{title:b}:{},...l!==void 0?{scale:l}:{},...c!==void 0?{axis:c}:{}},...He(o)?{[`${t}2`]:{field:`${o}_${i.field}`}}:{},...n,...d}})}}function HQ(e,t,i,n){const{clip:s,color:l,opacity:c}=e,r=e.type;return e[t]||e[t]===void 0&&i[t]?[{...n,mark:{...i[t],...s?{clip:s}:{},...l?{color:l}:{},...c?{opacity:c}:{},...tr(n.mark)?n.mark:{type:n.mark},style:`${r}-${String(t)}`,...Vo(e[t])?{}:e[t]}}]:[]}function NQ(e,t,i){const{encoding:n}=e,s=t==="vertical"?"y":"x",l=n[s],c=n[`${s}2`],r=n[`${s}Error`],a=n[`${s}Error2`];return{continuousAxisChannelDef:Ey(l,i),continuousAxisChannelDef2:Ey(c,i),continuousAxisChannelDefError:Ey(r,i),continuousAxisChannelDefError2:Ey(a,i),continuousAxis:s}}function Ey(e,t){if(e!=null&&e.aggregate){const{aggregate:i,...n}=e;return i!==t&&Xe(vVe(i,t)),n}else return e}function RQ(e,t){const{mark:i,encoding:n}=e,{x:s,y:l}=n;if(tr(i)&&i.orient)return i.orient;if(Pa(s)){if(Pa(l)){const c=xe(s)&&s.aggregate,r=xe(l)&&l.aggregate;if(!c&&r===t)return"vertical";if(!r&&c===t)return"horizontal";if(c===t&&r===t)throw new Error("Both x and y cannot have aggregate");return eb(l)&&!eb(s)?"horizontal":"vertical"}return"horizontal"}else{if(Pa(l))return"vertical";throw new Error(`Need a valid continuous axis for ${t}s`)}}const wX="boxplot",a3e=["box","median","outliers","rule","ticks"],o3e=new S1(wX,FQ);function kQ(e){return zt(e)?"tukey":e}function FQ(e,{config:t}){e={...e,encoding:L1(e.encoding,t)};const{mark:i,encoding:n,params:s,projection:l,...c}=e,r=tr(i)?i:{type:i};s&&Xe(z$("boxplot"));
vendor: 2,539 bytes, line 53
53const a=r.extent??t.boxplot.extent,u=Kt("size",r,t),o=r.invalid,d=kQ(a),{bins:b,timeUnits:h,transform:p,continuousAxisChannelDef:Z,continuousAxis:X,groupby:J,aggregate:V,encodingWithoutContinuousAxis:g,ticksOrient:I,boxOrient:v,customTooltipWithoutAggregatedField:k}=u3e(e,a,t),N=Fb(Z.field),{color:C,size:f,...w}=g,x=Ke=>gz(r,X,Z,Ke,t.boxplot),R=x(w),K=x(g),B=(we(t.boxplot.box)?t.boxplot.box.color:t.mark.color)||"#4c78a8",_=x({...w,...f?{size:f}:{},color:{condition:{test:`${Ft(`lower_box_${Z.field}`)} >= ${Ft(`upper_box_${Z.field}`)}`,...C||{value:B}}}}),j=LV([{fieldPrefix:d==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:d==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],Z,g),U={type:"tick",color:"black",opacity:1,orient:I,invalid:o,aria:!1},$=d==="min-max"?j:LV([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],Z,g),te=[...R({partName:"rule",mark:{type:"rule",invalid:o,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:$}),...R({partName:"rule",mark:{type:"rule",invalid:o,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:$}),...R({partName:"ticks",mark:U,positionPrefix:"lower_whisker",extraEncoding:$}),...R({partName:"ticks",mark:U,positionPrefix:"upper_whisker",extraEncoding:$})],E=[...d!=="tukey"?te:[],...K({partName:"box",mark:{type:"bar",...u?{size:u}:{},orient:v,invalid:o,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:j}),..._({partName:"median",mark:{type:"tick",invalid:o,...we(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},...u?{size:u}:{},orient:I,aria:!1},positionPrefix:"mid_box",extraEncoding:j})];if(d==="min-max")return{...c,transform:(c.transform??[]).concat(p),layer:E};const ie=Ft(`lower_box_${Z.field}`),ee=Ft(`upper_box_${Z.field}`),A=`(${ee} - ${ie})`,le=`${ie} - ${a} * ${A}`,ne=`${ee} + ${a} * ${A}`,se=Ft(Z.field),oe={joinaggregate:SQ(Z.field),groupby:J},de={transform:[{filter:`(${le} <= ${se}) && (${se} <= ${ne})`},{aggregate:[{op:"min",field:Z.field,as:`lower_whisker_${N}`},{op:"max",field:Z.field,as:`upper_whisker_${N}`},{op:"min",field:`lower_box_${Z.field}`,as:`lower_box_${N}`},{op:"max",field:`upper_box_${Z.field}`,as:`upper_box_${N}`},...V],groupby:J}],layer:te},{tooltip:Je,...Ie}=w,{scale:Ye,axis:Te}
vendor: 16,489 bytes, line 53
53=Z,$e=Iz(Z),Ve=as(Te,["title"]),Me=HQ(r,"outliers",t.boxplot,{transform:[{filter:`(${se} < ${le}) || (${se} > ${ne})`}],mark:"point",encoding:{[X]:{field:Z.field,type:Z.type,...$e!==void 0?{title:$e}:{},...Ye!==void 0?{scale:Ye}:{},...Bt(Ve)?{}:{axis:Ve}},...Ie,...C?{color:C}:{},...k?{tooltip:k}:{}}})[0];let Ee;const ye=[...b,...h,oe];return Me?Ee={transform:ye,layer:[Me,de]}:(Ee=de,Ee.transform.unshift(...ye)),{...c,layer:[Ee,{transform:p,layer:E}]}}function SQ(e){const t=Fb(e);return[{op:"q1",field:e,as:`lower_box_${t}`},{op:"q3",field:e,as:`upper_box_${t}`}]}function u3e(e,t,i){const n=RQ(e,wX),{continuousAxisChannelDef:s,continuousAxis:l}=NQ(e,n,wX),c=s.field,r=Fb(c),a=kQ(t),u=[...SQ(c),{op:"median",field:c,as:`mid_box_${r}`},{op:"min",field:c,as:(a==="min-max"?"lower_whisker_":"min_")+r},{op:"max",field:c,as:(a==="min-max"?"upper_whisker_":"max_")+r}],o=a==="min-max"||a==="tukey"?[]:[{calculate:`${Ft(`upper_box_${r}`)} - ${Ft(`lower_box_${r}`)}`,as:`iqr_${r}`},{calculate:`min(${Ft(`upper_box_${r}`)} + ${Ft(`iqr_${r}`)} * ${t}, ${Ft(`max_${r}`)})`,as:`upper_whisker_${r}`},{calculate:`max(${Ft(`lower_box_${r}`)} - ${Ft(`iqr_${r}`)} * ${t}, ${Ft(`min_${r}`)})`,as:`lower_whisker_${r}`}],{[l]:d,...b}=e.encoding,{customTooltipWithoutAggregatedField:h,filteredEncoding:p}=r3e(b),{bins:Z,timeUnits:X,aggregate:J,groupby:V,encoding:g}=zQ(p,i),I=n==="vertical"?"horizontal":"vertical",v=n,k=[...Z,...X,{aggregate:[...J,...u],groupby:V},...o];return{bins:Z,timeUnits:X,transform:k,groupby:V,aggregate:J,continuousAxisChannelDef:s,continuousAxis:l,encodingWithoutContinuousAxis:g,ticksOrient:I,boxOrient:v,customTooltipWithoutAggregatedField:h}}const vz="errorbar",d3e=["ticks","rule"],m3e=new S1(vz,LQ);function LQ(e,{config:t}){e={...e,encoding:L1(e.encoding,t)};const{transform:i,continuousAxisChannelDef:n,continuousAxis:s,encodingWithoutContinuousAxis:l,ticksOrient:c,markDef:r,outerSpec:a,tooltipEncoding:u}=CQ(e,vz,t);delete l.size;const o=gz(r,s,n,l,t.errorbar),d=r.thickness,b=r.size,h={type:"tick",orient:c,aria:!1,...d!==void 0?{thickness:d}:{},...b!==void 0?{size:b}:{}},p=[...o({partName:"ticks",mark:h,positionPrefix:"lower",extraEncoding:u}),...o({partName:"ticks",mark:h,positionPrefix:"upper",extraEncoding:u}),...o({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...d!==void 0?{size:d}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u})];return{...a,transform:i,...p.length>1?{layer:p}:{...p[0]}}}function b3e(e,t){const{encoding:i}=e;if(h3e(i))return{orient:RQ(e,t),inputType:"raw"};const n=f3e(i),s=p3e(i),l=i.x,c=i.y;if(n){if(s)throw new Error(`${t} cannot be both type aggregated-upper-lower and aggregated-error`);const r=i.x2,a=i.y2;if(tt(r)&&tt(a))throw new Error(`${t} cannot have both x2 and y2`);if(tt(r)){if(Pa(l))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${t}`)}else if(tt(a)){if(Pa(c))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${t}`)}throw new Error("No ranged axis")}else{const r=i.xError,a=i.xError2,u=i.yError,o=i.yError2;if(tt(a)&&!tt(r))throw new Error(`${t} cannot have xError2 without xError`);if(tt(o)&&!tt(u))throw new Error(`${t} cannot have yError2 without yError`);if(tt(r)&&tt(u))throw new Error(`${t} cannot have both xError and yError with both are quantiative`);if(tt(r)){if(Pa(l))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}else if(tt(u)){if(Pa(c))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function h3e(e){return(tt(e.x)||tt(e.y))&&!tt(e.x2)&&!tt(e.y2)&&!tt(e.xError)&&!tt(e.xError2)&&!tt(e.yError)&&!tt(e.yError2)}function f3e(e){return tt(e.x2)||tt(e.y2)}function p3e(e){return tt(e.xError)||tt(e.xError2)||tt(e.yError)||tt(e.yError2)}function CQ(e,t,i){const{mark:n,encoding:s,params:l,projection:c,...r}=e,a=tr(n)?n:{type:n};l&&Xe(z$(t));const{orient:u,inputType:o}=b3e(e,t),{continuousAxisChannelDef:d,continuousAxisChannelDef2:b,continuousAxisChannelDefError:h,continuousAxisChannelDefError2:p,continuousAxis:Z}=NQ(e,u,t),{errorBarSpecificAggregate:X,postAggregateCalculates:J,tooltipSummary:V,tooltipTitleWithFieldName:g}=y3e(a,d,b,h,p,o,t,i),{[Z]:I,[Z==="x"?"x2":"y2"]:v,[Z==="x"?"xError":"yError"]:k,[Z==="x"?"xError2":"yError2"]:N,...C}=s,{bins:f,timeUnits:w,aggregate:x,groupby:R,encoding:K}=zQ(C,i),B=[...x,...X],_=o!=="raw"?[]:R,j=LV(V,d,K,g);return{transform:[...r.transform??[],...f,...w,...B.length===0?[]:[{aggregate:B,groupby:_}],...J],groupby:_,continuousAxisChannelDef:d,continuousAxis:Z,encodingWithoutContinuousAxis:K,ticksOrient:u==="vertical"?"horizontal":"vertical",markDef:a,outerSpec:r,tooltipEncoding:j}}function y3e(e,t,i,n,s,l,c,r){let a=[],u=[];const o=t.field;let d,b=!1;if(l==="raw"){const h=e.center?e.center:e.extent?e.extent==="iqr"?"median":"mean":r.errorbar.center,p=e.extent?e.extent:h==="mean"?"stderr":"iqr";if(h==="median"!=(p==="iqr")&&Xe(gVe(h,p,c)),p==="stderr"||p==="stdev")a=[{op:p,field:o,as:`extent_${o}`},{op:h,field:o,as:`center_${o}`}],u=[{calculate:`${Ft(`center_${o}`)} + ${Ft(`extent_${o}`)}`,as:`upper_${o}`},{calculate:`${Ft(`center_${o}`)} - ${Ft(`extent_${o}`)}`,as:`lower_${o}`}],d=[{fieldPrefix:"center_",titlePrefix:h0(h)},{fieldPrefix:"upper_",titlePrefix:nL(h,p,"+")},{fieldPrefix:"lower_",titlePrefix:nL(h,p,"-")}],b=!0;else{let Z,X,J;p==="ci"?(Z="mean",X="ci0",J="ci1"):(Z="median",X="q1",J="q3"),a=[{op:X,field:o,as:`lower_${o}`},{op:J,field:o,as:`upper_${o}`},{op:Z,field:o,as:`center_${o}`}],d=[{fieldPrefix:"upper_",titlePrefix:Gm({field:o,aggregate:J,type:"quantitative"},r,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:Gm({field:o,aggregate:X,type:"quantitative"},r,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:Gm({field:o,aggregate:Z,type:"quantitative"},r,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&Xe(IVe(e.center,e.extent)),l==="aggregated-upper-lower"?(d=[],u=[{calculate:Ft(i.field),as:`upper_${o}`},{calculate:Ft(o),as:`lower_${o}`}]):l==="aggregated-error"&&(d=[{fieldPrefix:"",titlePrefix:o}],u=[{calculate:`${Ft(o)} + ${Ft(n.field)}`,as:`upper_${o}`}],s?u.push({calculate:`${Ft(o)} + ${Ft(s.field)}`,as:`lower_${o}`}):u.push({calculate:`${Ft(o)} - ${Ft(n.field)}`,as:`lower_${o}`}));for(const h of u)d.push({fieldPrefix:h.as.substring(0,6),titlePrefix:Ku(Ku(h.calculate,"datum['",""),"']","")})}return{postAggregateCalculates:u,errorBarSpecificAggregate:a,tooltipSummary:d,tooltipTitleWithFieldName:b}}function nL(e,t,i){return`${h0(e)} ${i} ${t}`}const zz="errorband",Z3e=["band","borders"],W3e=new S1(zz,TQ);function TQ(e,{config:t}){e={...e,encoding:L1(e.encoding,t)};const{transform:i,continuousAxisChannelDef:n,continuousAxis:s,encodingWithoutContinuousAxis:l,markDef:c,outerSpec:r,tooltipEncoding:a}=CQ(e,zz,t),u=c,o=gz(u,s,n,l,t.errorband),d=e.encoding.x!==void 0&&e.encoding.y!==void 0;let b={type:d?"area":"rect"},h={type:d?"line":"rule"};const p={...u.interpolate?{interpolate:u.interpolate}:{},...u.tension&&u.interpolate?{tension:u.tension}:{}};return d?(b={...b,...p,ariaRoleDescription:"errorband"},h={...h,...p,aria:!1}):u.interpolate?Xe(US("interpolate")):u.tension&&Xe(US("tension")),{...r,transform:i,layer:[...o({partName:"band",mark:b,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:a}),...o({partName:"borders",mark:h,positionPrefix:"lower",extraEncoding:a}),...o({partName:"borders",mark:h,positionPrefix:"upper",extraEncoding:a})]}}const MQ={};function wz(e,t,i){const n=new S1(e,t);MQ[e]={normalizer:n,parts:i}}function X3e(){return Ze(MQ)}wz(wX,FQ,a3e);wz(vz,LQ,d3e);wz(zz,TQ,Z3e);const J3e=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],KQ={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},BQ={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},x3e=Ze(KQ),Y3e=Ze(BQ),G3e={header:1,headerRow:1,headerColumn:1,headerFacet:1},_Q=Ze(G3e),OQ=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],V3e={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},I3e={aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},$l="_vgsid_",g3e={point:{on:"click",fields:[$l],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[pointerdown, window:pointerup] > window:pointermove!",encodings:["x","y"],translate:"[pointerdown, window:pointerup] > window:pointermove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function Hz(e){return e==="legend"||!!(e!=null&&e.legend)}function xY(e){return Hz(e)&&we(e)}function Nz(e){return!!(e!=null&&e.select)}function jQ(e){const t=[];for(const i of e||[]){if(Nz(i))continue;const{expr:n,bind:s,...l}=i;if(s&&n){const c={...l,bind:s,init:n};t.push(c)}else{const c={...l,...n?{update:n}:{},...s?{bind:s}:{}};t.push(c)}}return t}function v3e(e){return C1(e)||kz(e)||Rz(e)}function Rz(e){return We(e,"concat")}function C1(e){return We(e,"vconcat")}function kz(e){return We(e,"hconcat")}function EQ({step:e,offsetIsDiscrete:t}){return t?e.for??"offset":"position"}function ir(e){return We(e,"step")}function sL(e){return We(e,"view")||We(e,"width")||We(e,"height")}const lL=20,z3e={align:1,bounds:1,center:1,columns:1,spacing:1},w3e=Ze(z3e);function H3e(e,t,i){const n=i[t],s={},{spacing:l,columns:c}=n;l!==void 0&&(s.spacing=l),c!==void 0&&(N1(e)&&!J0(e.facet)||Rz(e))&&(s.columns=c),C1(e)&&(s.columns=1);for(const r of w3e)if(e[r]!==void 0)if(r==="spacing"){const a=e[r];s[r]=zt(a)?a:{row:a.row??l,column:a.column??l}}else s[r]=e[r];return s}function CV(e,t){return e[t]??e[t==="width"?"continuousWidth":"continuousHeight"]}function TV(e,t){const i=HX(e,t);return ir(i)?i.step:PQ}function HX(e,t){const i=e[t]??e[t==="width"?"discreteWidth":"discreteHeight"];return xi(i,{step:e.step})}const PQ=20,N3e={continuousWidth:200,continuousHeight:200,step:PQ},R3e={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:N3e,mark:GIe,arc:{},area:{},bar:vIe,circle:{},geoshape:{},image:{},line:{},point:{},rect:fz,rule:{color:"black"},square:{},text:{color:"black"},tick:zIe,trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:lIe,projection:{},legend:V3e,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:g3e,style:{},title:{},facet:{spacing:lL},concat:{spacing:lL},normalizedNumberFormat:".0%"},Gr=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],cL={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},rL={blue:Gr[0],orange:Gr[1],red:Gr[2],teal:Gr[3],green:Gr[4],yellow:Gr[5],purple:Gr[6],pink:Gr[7],brown:Gr[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function k3e(e={}){return{signals:[{name:"color",value:we(e)?{...rL,...e}:rL}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}function F3e(e){return{signals:[{name:"fontSize",value:we(e)?{...cL,...e}:cL}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}function S3e(e){return{text:{font:e},style:{"guide-label":{font:e},"guide-title":{font:e},"group-title":{font:e},"group-subtitle":{font:e}}}}function UQ(e){const t=Ze(e||{}),i={};for(const n of t){const s=e[n];i[n]=V0(s)?x$(s):zs(s)}return i}function L3e(e){const t=Ze(e),i={};for(const n of t)i[n]=UQ(e[n]);return i}const C3e=[...nQ,...VQ,..._Q,"background","padding","legend","lineBreak","scale","style","title","view"];function $Q(e={}){const{color:t,font:i,fontSize:n,selection:s,...l}=e,c=xb({},Ae(R3e),i?S3e(i):{},t?k3e(t):{},n?F3e(n):{},l||{});s&&Yb(c,"selection",s,!0);const r=as(c,C3e);for(const a of["background","lineBreak","padding"])c[a]&&(r[a]=zs(c[a]));for(const a of nQ)c[a]&&(r[a]=qi(c[a]));for(const a of VQ)c[a]&&(r[a]=UQ(c[a]));for(const a of _Q)c[a]&&(r[a]=qi(c[a]));if(c.legend&&(r.legend=qi(c.legend)),c.scale){const{invalid:a,...u}=c.scale,o=qi(a,{level:1});r.scale={...qi(u),...Ze(o).length>0?{invalid:o}:{}}}return c.style&&(r.style=L3e(c.style)),c.title&&(r.title=qi(c.title)),c.view&&(r.view=qi(c.view)),r}const T3e=new Set(["view",...ZIe]),M3e=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],K3e={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],...YIe};function B3e(e){e=Ae(e);for(const t of M3e)delete e[t];if(e.axis)for(const t in e.axis)V0(e.axis[t])&&delete e.axis[t];if(e.legend)for(const t of J3e)delete e.legend[t];if(e.mark){for(const t of QS)delete e.mark[t];e.mark.tooltip&&we(e.mark.tooltip)&&delete e.mark.tooltip}e.params&&(e.signals=(e.signals||[]).concat(jQ(e.params)),delete e.params);for(const t of T3e){for(const n of QS)delete e[t][n];const i=K3e[t];if(i)for(const n of i)delete e[t][n];O3e(e,t)}for(const t of X3e())delete e[t];_3e(e);for(const t in e)we(e[t])&&Bt(e[t])&&delete e[t];return Bt(e)?void 0:e}function _3e(e){const{titleMarkConfig:t,subtitleMarkConfig:i,subtitle:n}=J$(e.title);Bt(t)||(e.style["group-title"]={...e.style["group-title"],...t}),Bt(i)||(e.style["group-subtitle"]={...e.style["group-subtitle"],...i}),Bt(n)?delete e.title:e.title=n}function O3e(e,t,i,n){const s=e[t];t==="view"&&(i="cell");const l={...s,...e.style[i??t]};Bt(l)||(e.style[i??t]=l),delete e[t]}function T1(e){return We(e,"layer")}function j3e(e){return We(e,"repeat")}function E3e(e){return!fe(e.repeat)&&We(e.repeat,"layer")}
vendor: 8,682 bytes, line 53
53class Fz{map(t,i){return N1(t)?this.mapFacet(t,i):j3e(t)?this.mapRepeat(t,i):kz(t)?this.mapHConcat(t,i):C1(t)?this.mapVConcat(t,i):Rz(t)?this.mapConcat(t,i):this.mapLayerOrUnit(t,i)}mapLayerOrUnit(t,i){if(T1(t))return this.mapLayer(t,i);if(ma(t))return this.mapUnit(t,i);throw new Error(Qv(t))}mapLayer(t,i){return{...t,layer:t.layer.map(n=>this.mapLayerOrUnit(n,i))}}mapHConcat(t,i){return{...t,hconcat:t.hconcat.map(n=>this.map(n,i))}}mapVConcat(t,i){return{...t,vconcat:t.vconcat.map(n=>this.map(n,i))}}mapConcat(t,i){const{concat:n,...s}=t;return{...s,concat:n.map(l=>this.map(l,i))}}mapFacet(t,i){return{...t,spec:this.map(t.spec,i)}}mapRepeat(t,i){return{...t,spec:this.map(t.spec,i)}}}const P3e={zero:1,center:1,normalize:1};function U3e(e){return Re(P3e,e)}const $3e=new Set([eQ,v1,g1,GX,w1,bz,hz,z1,tQ,mz]),Q3e=new Set([v1,g1,eQ]);function Pd(e){return xe(e)&&Am(e)==="quantitative"&&!e.bin}function aL(e,t,{orient:i,type:n}){const s=t==="x"?"y":"radius",l=t==="x"&&["bar","area"].includes(n),c=e[t],r=e[s];if(xe(c)&&xe(r))if(Pd(c)&&Pd(r)){if(c.stack)return t;if(r.stack)return s;const a=xe(c)&&!!c.aggregate,u=xe(r)&&!!r.aggregate;if(a!==u)return a?t:s;if(l){if(i==="vertical")return s;if(i==="horizontal")return t}}else{if(Pd(c))return t;if(Pd(r))return s}else{if(Pd(c))return l&&i==="vertical"?void 0:t;if(Pd(r))return l&&i==="horizontal"?void 0:s}}function D3e(e){switch(e){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}function QQ(e,t){var Z,X;const i=tr(e)?e:{type:e},n=i.type;if(!$3e.has(n))return null;const s=aL(t,"x",i)||aL(t,"theta",i);if(!s)return null;const l=t[s],c=xe(l)?ve(l,{}):void 0,r=D3e(s),a=[],u=new Set;if(t[r]){const J=t[r],V=xe(J)?ve(J,{}):void 0;V&&V!==c&&(a.push(r),u.add(V))}const o=r==="x"?"xOffset":"yOffset",d=t[o],b=xe(d)?ve(d,{}):void 0;b&&b!==c&&(a.push(o),u.add(b));const h=sGe.reduce((J,V)=>{if(V!=="tooltip"&&Xu(t,V)){const g=t[V];for(const I of Ne(g)){const v=Ul(I);if(v.aggregate)continue;const k=ve(v,{});(!k||!u.has(k))&&J.push({channel:V,fieldDef:v})}}return J},[]);let p;return l.stack!==void 0?Vo(l.stack)?p=l.stack?"zero":null:p=l.stack:Q3e.has(n)&&(p="zero"),!p||!U3e(p)||vQ(t)&&h.length===0?null:((Z=l==null?void 0:l.scale)!=null&&Z.type&&((X=l==null?void 0:l.scale)==null?void 0:X.type)!==en.LINEAR&&l!=null&&l.stack&&Xe(YVe(l.scale.type)),tt(t[br(s)])?(l.stack!==void 0&&Xe(xVe(s)),null):(xe(l)&&l.aggregate&&!yGe.has(l.aggregate)&&Xe(GVe(l.aggregate)),{groupbyChannels:a,groupbyFields:u,fieldChannel:s,impute:l.impute===null?!1:Fo(n),stackBy:h,offset:p}))}function DQ(e,t,i){const n=qi(e),s=Kt("orient",n,i);if(n.orient=t5e(n.type,t,s),s!==void 0&&s!==n.orient&&Xe(cVe(n.orient,s)),n.type==="bar"&&n.orient){const a=Kt("cornerRadiusEnd",n,i);if(a!==void 0){const u=n.orient==="horizontal"&&t.x2||n.orient==="vertical"&&t.y2?["cornerRadius"]:IIe[n.orient];for(const o of u)n[o]=a;n.cornerRadiusEnd!==void 0&&delete n.cornerRadiusEnd}}const l=Kt("opacity",n,i),c=Kt("fillOpacity",n,i);return l===void 0&&c===void 0&&(n.opacity=q3e(n.type,t)),Kt("cursor",n,i)===void 0&&(n.cursor=A3e(n,t,i)),n}function A3e(e,t,i){return t.href||e.href||Kt("href",e,i)?"pointer":e.cursor}function q3e(e,t){if(ht([w1,mz,bz,hz],e)&&!vQ(t))return .7}function e5e(e,t,{graticule:i}){if(i)return!1;const n=er("filled",e,t),s=e.type;return xi(n,s!==w1&&s!==z1&&s!==GX)}function t5e(e,t,i){switch(e){case w1:case bz:case hz:case tQ:case pIe:case fIe:return}const{x:n,y:s,x2:l,y2:c}=t;switch(e){case v1:if(xe(n)&&(Ai(n.bin)||xe(s)&&s.aggregate&&!n.aggregate))return"vertical";if(xe(s)&&(Ai(s.bin)||xe(n)&&n.aggregate&&!s.aggregate))return"horizontal";if(c||l){if(i)return i;if(!l)return(xe(n)&&n.type===ju&&!Dt(n.bin)||IX(n))&&xe(s)&&Ai(s.bin)?"horizontal":"vertical";if(!c)return(xe(s)&&s.type===ju&&!Dt(s.bin)||IX(s))&&xe(n)&&Ai(n.bin)?"vertical":"horizontal"}case GX:if(l&&!(xe(n)&&Ai(n.bin))&&c&&!(xe(s)&&Ai(s.bin)))return;case g1:if(c)return xe(s)&&Ai(s.bin)?"horizontal":"vertical";if(l)return xe(n)&&Ai(n.bin)?"vertical":"horizontal";if(e===GX){if(n&&!s)return"vertical";if(s&&!n)return"horizontal"}case z1:case mz:{const r=eL(n),a=eL(s);if(i)return i;if(r&&!a)return e!=="tick"?"horizontal":"vertical";if(!r&&a)return e!=="tick"?"vertical":"horizontal";if(r&&a)return"vertical";{const u=Un(n)&&n.type===Qm,o=Un(s)&&s.type===Qm;if(u&&!o)return"vertical";if(!u&&o)return"horizontal"}return}}return"vertical"}function i5e(e){const{point:t,line:i,...n}=e;return Ze(n).length>1?n:n.type}function n5e(e){for(const t of["line","area","rule","trail"])e[t]&&(e={...e,[t]:as(e[t],["point","line"])});return e}function YY(e,t={},i){return e.point==="transparent"?{opacity:0}:e.point?we(e.point)?e.point:{}:e.point!==void 0?null:t.point||i.shape?we(t.point)?t.point:{}:void 0}function oL(e,t={}){return e.line?e.line===!0?{}:e.line:e.line!==void 0?null:t.line?t.line===!0?{}:t.line:void 0}class s5e{constructor(){this.name="path-overlay"}hasMatchingType(t,i){if(ma(t)){const{mark:n,encoding:s}=t,l=tr(n)?n:{type:n};switch(l.type){case"line":case"rule":case"trail":return!!YY(l,i[l.type],s);case"area":return!!YY(l,i[l.type],s)||!!oL(l,i[l.type])}}return!1}run(t,i,n){const{config:s}=i,{params:l,projection:c,mark:r,name:a,encoding:u,...o}=t,d=L1(u,s),b=tr(r)?r:{type:r},h=YY(b,s[b.type],d),p=b.type==="area"&&oL(b,s[b.type]),Z=[{name:a,...l?{params:l}:{},mark:i5e({...b.type==="area"&&b.opacity===void 0&&b.fillOpacity===void 0?{opacity:.7}:{},...b}),encoding:as(d,["shape"])}],X=QQ(DQ(b,d,s),d);let J=d;if(X){const{fieldChannel:V,offset:g}=X;J={...d,[V]:{...d[V],...g?{stack:g}:{}}}}return J=as(J,["y2","x2"]),p&&Z.push({...c?{projection:c}:{},mark:{type:"line",...Em(b,["clip","interpolate","tension","tooltip"]),...p},encoding:J}),h&&Z.push({...c?{projection:c}:{},mark:{type:"point",opacity:1,filled:!0,...Em(b,["clip","tooltip"]),...h},encoding:J}),n({...o,layer:Z},{...i,config:n5e(s)})}}function l5e(e,t){return t?J0(e)?qQ(e,t):AQ(e,t):e}function GY(e,t){return t?qQ(e,t):e}function MV(e,t,i){const n=t[e];if(KIe(n)){if(n.repeat in i)return{...t,[e]:i[n.repeat]};Xe(LGe(n.repeat));return}return t}function AQ(e,t){if(e=MV("field",e,t),e!==void 0){if(e===null)return null;if(Jz(e)&&Er(e.sort)){const i=MV("field",e.sort,t);e={...e,...i?{sort:i}:{}}}return e}}function uL(e,t){if(xe(e))return AQ(e,t);{const i=MV("datum",e,t);return i!==e&&!i.type&&(i.type="nominal"),i}}function dL(e,t){if(tt(e)){const i=uL(e,t);if(i)return i;if(x0(e))return{condition:e.condition}}else{if(Y0(e)){const i=uL(e.condition,t);if(i)return{...e,condition:i};{const{condition:n,...s}=e;return s}}return e}}function qQ(e,t){const i={};for(const n in e)if(We(e,n)){const s=e[n];if(fe(s))i[n]=s.map(l=>dL(l,t)).filter(l=>l);else{const l=dL(s,t);l!==void 0&&(i[n]=l)}}return i}class c5e{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(ma(t)){const{encoding:i,mark:n}=t;if(n==="line"||tr(n)&&n.type==="line")for(const s of tGe){const l=dd(s),c=i[l];if(i[s]&&(xe(c)&&!Ai(c.bin)||fr(c)))return!0}}return!1}run(t,i,n){const{encoding:s,mark:l}=t;return Xe(lVe(!!s.x2,!!s.y2)),n({...t,mark:we(l)?{...l,type:"rule"}:"rule"},i)}}class r5e extends Fz{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[o3e,m3e,W3e,new s5e,new c5e]}map(t,i){if(ma(t)){const n=Xu(t.encoding,Or),s=Xu(t.encoding,jr),l=Xu(t.encoding,p1);if(n||s||l)return this.mapFacetedUnit(t,i)}return super.map(t,i)}mapUnit(t,i){const{parentEncoding:n,parentProjection:s}=i,l=GY(t.encoding,i.repeater),c={...t,...t.name?{name:[i.repeaterPrefix,t.name].filter(a=>a).join("_")}:{},...l?{encoding:l}:{}};if(n||s)return this.mapUnitWithParentEncodingOrProjection(c,i);const r=this.mapLayerOrUnit.bind(this);for(const a of this.nonFacetUnitNormalizers)if(a.hasMatchingType(c,i.config))return a.run(c,i,r);return c}mapRepeat(t,i){return E3e(t)?this.mapLayerRepeat(t,i):this.mapNonLayerRepeat(t,i)}mapLayerRepeat(t,i){const{repeat:n,spec:s,...l}=t,{row:c,column:r,layer:a}=n,{repeater:u={},repeaterPrefix:o=""}=i;return c||r?this.mapRepeat({...t,repeat:{...c?{row:c}:{},...r?{column:r}:{}},spec:{repeat:{layer:a},spec:s}},i):{...l,layer:a.map(d=>{const b={...u,layer:d},h=`${(s.name?`${s.name}_`:"")+o}child__layer_${ci(d)}`,p=this.mapLayerOrUnit(s,{...i,repeater:b,repeaterPrefix:h});return p.name=h,p})}}mapNonLayerRepeat(t,i){const{repeat:n,spec:s,data:l,...c}=t;!fe(n)&&t.columns&&(t=as(t,["columns"]),Xe(OS("repeat")));const r=[],{repeater:a={},repeaterPrefix:u=""}=i,o=!fe(n)&&n.row||[a?a.row:null],d=!fe(n)&&n.column||[a?a.column:null],b=fe(n)&&n||[a?a.repeat:null];for(const p of b)for(const Z of o)for(const X of d){const J={repeat:p,row:Z,column:X,layer:a.layer},V=(s.name?`${s.name}_`:"")+u+"child__"+(fe(n)?`${ci(p)}`:(n.row?`row_${ci(Z)}
53`:"")+(n.column?`column_${ci(X)}`:"")),g=this.map(s,{...i,repeater:J,repeaterPrefix:V});g.name=V,r.push(as(g,["data"]))}const h=fe(n)?t.columns:n.column?n.column.length:1;return{data:s.data??l,align:"all",...c,columns:h,concat:r}}mapFacet(t,i){const{facet:n}=t;return J0(n)&&t.columns&&(t=as(t,["columns"]),Xe(OS("facet"))),super.mapFacet(t,i)}mapUnitWithParentEncodingOrProjection(t,i){const{encoding:n,projection:s}=t,{parentEncoding:l,parentProjection:c,config:r}=i,a=bL({parentProjection:c,projection:s}),u=mL({parentEncoding:l,encoding:GY(n,i.repeater)});return this.mapUnit({...t,...a?{projection:a}:{},...u?{encoding:u}:{}},{config:r})}mapFacetedUnit(t,i){const{row:n,column:s,facet:l,...c}=t.encoding,{mark:r,width:a,projection:u,height:o,view:d,params:b,encoding:h,...p}=t,{facetMapping:Z,layout:X}=this.getFacetMappingAndLayout({row:n,column:s,facet:l},i),J=GY(c,i.repeater);return this.mapFacet({...p,...X,facet:Z,spec:{...a?{width:a}:{},...o?{height:o}:{},...d?{view:d}:{},...u?{projection:u}:{},mark:r,encoding:J,...b?{params:b}:{}}},i)}getFacetMappingAndLayout(t,i){const{row:n,column:s,facet:l}=t;if(n||s){l&&Xe(nVe([...n?[Or]:[],...s?[jr]:[]]));const c={},r={};for(const a of[Or,jr]){const u=t[a];if(u){const{align:o,center:d,spacing:b,columns:h,...p}=u;c[a]=p;for(const Z of["align","center","spacing"])u[Z]!==void 0&&(r[Z]??(r[Z]={}),r[Z][a]=u[Z])}}return{facetMapping:c,layout:r}}else{const{align:c,center:r,spacing:a,columns:u,...o}=l;return{facetMapping:l5e(o,i.repeater),layout:{...c?{align:c}:{},...r?{center:r}:{},...a?{spacing:a}:{},...u?{columns:u}:{}}}}}mapLayer(t,{parentEncoding:i,parentProjection:n,...s}){const{encoding:l,projection:c,...r}=t,a={...s,parentEncoding:mL({parentEncoding:i,encoding:l,layer:!0}),parentProjection:bL({parentProjection:n,projection:c})};return super.mapLayer({...r,...t.name?{name:[a.repeaterPrefix,t.name].filter(u=>u).join("_")}:{}},a)}}function mL({parentEncoding:e,encoding:t={},layer:i}){let n={};if(e){const s=new Set([...Ze(e),...Ze(t)]);for(const l of s){const c=t[l],r=e[l];if(tt(c)){const a={...r,...c};n[l]=a}else Y0(c)?n[l]={...c,condition:{...r,...c.condition}}:c||c===null?n[l]=c:(i||Pl(r)||Ce(r)||tt(r)||fe(r))&&(n[l]=r)}}else n=t;return!n||Bt(n)?void 0:n}function bL(e){const{parentProjection:t,projection:i}=e;return t&&i&&Xe(EGe({parentProjection:t,projection:i})),i??t}function Sz(e){return We(e,"filter")}function a5e(e){return We(e,"stop")}function e7(e){return We(e,"lookup")}function o5e(e){return We(e,"data")}function u5e(e){return We(e,"param")}function d5e(e){return We(e,"pivot")}function m5e(e){return We(e,"density")}function b5e(e){return We(e,"quantile")}function h5e(e){return We(e,"regression")}function f5e(e){return We(e,"loess")}function p5e(e){return We(e,"sample")}function y5e(e){return We(e,"window")}function Z5e(e){return We(e,"joinaggregate")}function W5e(e){return We(e,"flatten")}function X5e(e){return We(e,"calculate")}function t7(e){return We(e,"bin")}function J5e(e){return We(e,"impute")}function x5e(e){return We(e,"timeUnit")}function Y5e(e){return We(e,"aggregate")}function G5e(e){return We(e,"stack")}function V5e(e){return We(e,"fold")}function I5e(e){return We(e,"extent")&&!We(e,"density")&&!We(e,"regression")}function g5e(e){return e.map(t=>Sz(t)?{filter:xm(t.filter,AVe)}:t)}class v5e extends Fz{map(t,i){return i.emptySelections??(i.emptySelections={}),i.selectionPredicates??(i.selectionPredicates={}),t=hL(t,i),super.map(t,i)}mapLayerOrUnit(t,i){if(t=hL(t,i),t.encoding){const n={};for(const[s,l]of yo(t.encoding))n[s]=i7(l,i);t={...t,encoding:n}}return super.mapLayerOrUnit(t,i)}mapUnit(t,i){const{selection:n,...s}=t;return n?{...s,params:yo(n).map(([l,c])=>{const{init:r,bind:a,empty:u,...o}=c;o.type==="single"?(o.type="point",o.toggle=!1):o.type==="multi"&&(o.type="point"),i.emptySelections[l]=u!=="none";for(const d of an(i.selectionPredicates[l]??{}))d.empty=u!=="none";return{name:l,value:r,select:o,bind:a}})}:t}}function hL(e,t){const{transform:i,...n}=e;if(i){const s=i.map(l=>{if(Sz(l))return{filter:KV(l,t)};if(t7(l)&&md(l.bin))return{...l,bin:n7(l.bin)};if(e7(l)){const{selection:c,...r}=l.from;return c?{...l,from:{param:c,...r}}:l}return l});return{...n,transform:s}}return e}function i7(e,t){var n,s;const i=Ae(e);
vendor: 4,092 bytes, line 53
53if(xe(i)&&md(i.bin)&&(i.bin=n7(i.bin)),pd(i)&&((s=(n=i.scale)==null?void 0:n.domain)!=null&&s.selection)){const{selection:l,...c}=i.scale.domain;i.scale.domain={...c,...l?{param:l}:{}}}if(x0(i))if(fe(i.condition))i.condition=i.condition.map(l=>{const{selection:c,param:r,test:a,...u}=l;return r?l:{...u,test:KV(l,t)}});else{const{selection:l,param:c,test:r,...a}=i7(i.condition,t);i.condition=c?i.condition:{...a,test:KV(i.condition,t)}}return i}function n7(e){const t=e.extent;if(t!=null&&t.selection){const{selection:i,...n}=t;return{...e,extent:{...n,param:i}}}return e}function KV(e,t){const i=n=>xm(n,s=>{var l;const c=t.emptySelections[s]??!0,r={param:s,empty:c};return(l=t.selectionPredicates)[s]??(l[s]=[]),t.selectionPredicates[s].push(r),r});return e.selection?i(e.selection):xm(e.test||e.filter,n=>n.selection?i(n.selection):n)}class BV extends Fz{map(t,i){const n=i.selections??[];if(t.params&&!ma(t)){const s=[];for(const l of t.params)Nz(l)?n.push(l):s.push(l);t.params=s}return i.selections=n,super.map(t,i)}mapUnit(t,i){const n=i.selections;if(!n||!n.length)return t;const s=(i.path??[]).concat(t.name),l=[];for(const c of n)if(!c.views||!c.views.length)l.push(c);else for(const r of c.views)(He(r)&&(r===t.name||s.includes(r))||fe(r)&&r.map(a=>s.indexOf(a)).every((a,u,o)=>a!==-1&&(u===0||a>o[u-1])))&&l.push(c);return l.length&&(t.params=l),t}}for(const e of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){const t=BV.prototype[e];BV.prototype[e]=function(i,n){return t.call(this,i,z5e(i,n))}}function z5e(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}function s7(e,t){t===void 0&&(t=$Q(e.config));const i=R5e(e,t),{width:n,height:s}=e,l=k5e(i,{width:n,height:s,autosize:e.autosize},t);return{...i,...l?{autosize:l}:{}}}const w5e=new r5e,H5e=new v5e,N5e=new BV;function R5e(e,t={}){const i={config:t};return N5e.map(w5e.map(H5e.map(e,i),i),i)}function fL(e){return He(e)?{type:e}:e??{}}function k5e(e,t,i){let{width:n,height:s}=t;const l=ma(e)||T1(e),c={};l?n=="container"&&s=="container"?(c.type="fit",c.contains="padding"):n=="container"?(c.type="fit-x",c.contains="padding"):s=="container"&&(c.type="fit-y",c.contains="padding"):(n=="container"&&(Xe(MS("width")),n=void 0),s=="container"&&(Xe(MS("height")),s=void 0));const r={type:"pad",...c,...i?fL(i.autosize):{},...fL(e.autosize)};if(r.type==="fit"&&!l&&(Xe(IGe),r.type="pad"),n=="container"&&!(r.type=="fit"||r.type=="fit-x")&&Xe(KS("width")),s=="container"&&!(r.type=="fit"||r.type=="fit-y")&&Xe(KS("height")),!Hs(r,{type:"pad"}))return r}function F5e(e){return["fit","fit-x","fit-y"].includes(e)}function S5e(e){return e?`fit-${J1(e)}`:"fit"}const L5e=["background","padding"];function pL(e,t){const i={};for(const n of L5e)e&&e[n]!==void 0&&(i[n]=zs(e[n]));return t&&(i.params=e.params),i}class ba{constructor(t={},i={}){this.explicit=t,this.implicit=i}clone(){return new ba(Ae(this.explicit),Ae(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(t){return xi(this.explicit[t],this.implicit[t])}getWithExplicit(t){return this.explicit[t]!==void 0?{explicit:!0,value:this.explicit[t]}:this.implicit[t]!==void 0?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,{value:i,explicit:n}){i!==void 0&&this.set(t,i,n)}set(t,i,n){return delete this[n?"implicit":"explicit"][t],this[n?"explicit":"implicit"][t]=i,this}copyKeyFromSplit(t,{explicit:i,implicit:n}){i[t]!==void 0?this.set(t,i[t],!0):n[t]!==void 0&&this.set(t,n[t],!1)}copyKeyFromObject(t,i){i[t]!==void 0&&this.set(t,i[t],!0)}copyAll(t){for(const i of Ze(t.combine())){const n=t.getWithExplicit(i);this.setWithExplicit(i,n)}}}function Ic(e){return{explicit:!0,value:e}}function Ys(e){return{explicit:!1,value:e}}function l7(e){return(t,i,n,s)=>{const l=e(t.value,i.value);return l>0?t:l<0?i:M1(t,i,n,s)}}function M1(e,t,i,n){return e.explicit&&t.explicit&&Xe(fVe(i,n,e.value,t.value)),e}function Xo(e,t,i,n,s=M1){return e===void 0||e.value===void 0?t:e.explicit&&!t.explicit?e:t.explicit&&!e.explicit?t:Hs(e.value,t.value)?e:s(e,t,i,n)}class C5e extends ba{constructor(t={},i={}
53,n=!1){super(t,i),this.explicit=t,this.implicit=i,this.parseNothing=n}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}function tb(e){return We(e,"url")}function op(e){return We(e,"values")}function c7(e){return We(e,"name")&&!tb(e)&&!op(e)&&!no(e)}function no(e){return e&&(r7(e)||a7(e)||Lz(e))}function r7(e){return We(e,"sequence")}function a7(e){return We(e,"sphere")}function Lz(e){return We(e,"graticule")}var mi;(function(e){e[e.Raw=0]="Raw",e[e.Main=1]="Main",e[e.Row=2]="Row",e[e.Column=3]="Column",e[e.Lookup=4]="Lookup",e[e.PreFilterInvalid=5]="PreFilterInvalid",e[e.PostFilterInvalid=6]="PostFilterInvalid"})(mi||(mi={}));function o7({invalid:e,isPath:t}){switch(sQ(e,{isPath:t})){case"filter":return{marks:"exclude-invalid-values",scales:"exclude-invalid-values"};case"break-paths-show-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"include-invalid-values"};case"break-paths-filter-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"exclude-invalid-values"};case"show":return{marks:"include-invalid-values",scales:"include-invalid-values"}}}function T5e(e){const{marks:t,scales:i}=o7(e);return t===i?mi.Main:i==="include-invalid-values"?mi.PreFilterInvalid:mi.PostFilterInvalid}class Ct{constructor(t,i){this.debugName=i,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,i){if(this._children.includes(t)){Xe(_Ge);return}i!==void 0?this._children.splice(i,0,t):this._children.push(t)}removeChild(t){const i=this._children.indexOf(t);return this._children.splice(i,1),i}remove(){let t=this._parent.removeChild(this);for(const i of this._children)i._parent=this._parent,this._parent.addChild(i,t++)}insertAsParentOf(t){const i=t.parent;i.removeChild(this),this.parent=i,t.parent=this}swapWithParent(){const t=this._parent,i=t.parent;for(const s of this._children)s.parent=t;this._children=[],t.removeChild(this);const n=t.parent.removeChild(t);this._parent=i,i.addChild(this,n),t.parent=this}}class os extends Ct{clone(){const t=new this.constructor;return t.debugName=`clone_${this.debugName}`,t._source=this._source,t._name=`clone_${this._name}`,t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}constructor(t,i,n,s){super(t,i),this.type=n,this.refCounts=s,this._source=this._name=i,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${l$()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function VY(e){return e.as!==void 0}function yL(e){return`${e}_end`}class Oc extends Ct{clone(){return new Oc(null,Ae(this.timeUnits))}constructor(t,i){super(t),this.timeUnits=i}static makeFromEncoding(t,i){const n=i.reduceFieldDef((s,l,c)=>{const{field:r,timeUnit:a}=l;if(a){let u;if(fd(a)){if(di(i)){const{mark:o,markDef:d,config:b}=i,h=Wo({fieldDef:l,markDef:d,config:b});(ap(o)||h)&&(u={timeUnit:Ei(a),field:r})}}else u={as:ve(l,{forAs:!0}),field:r,timeUnit:a};if(di(i)){const{mark:o,markDef:d,config:b}=i,h=Wo({fieldDef:l,markDef:d,config:b});ap(o)&&Yi(c)&&h!==.5&&(u.rectBandPosition=h)}u&&(s[pt(u)]=u)}return s},{});return Bt(n)?null:new Oc(t,n)}static makeFromTransform(t,i){const{timeUnit:n,...s}={...i},l=Ei(n),c={...s,timeUnit:l};return new Oc(t,{[pt(c)]:c})}merge(t){this.timeUnits={...this.timeUnits};for(const i in t.timeUnits)this.timeUnits[i]||(this.timeUnits[i]=t.timeUnits[i]);for(const i of t.children)t.removeChild(i),i.parent=this;t.remove()}removeFormulas(t){const i={};for(const[n,s]of yo(this.timeUnits)){const l=VY(s)?s.as:`${s.field}_end`;t.has(l)||(i[n]=s)}this.timeUnits=i}producedFields(){return new Set(an(this.timeUnits).map(t=>VY(t)?t.as:yL(t.field)))}dependentFields(){return new Set(an(this.timeUnits).map(t=>t.field))}hash(){return`TimeUnit ${pt(this.timeUnits)}`}assemble(){const t=[];for(const i of an(this.timeUnits)){const{rectBandPosition:n}=i,s=Ei(i.timeUnit);if(VY(i)){const{field:l,as:c}=i,{unit:r,utc:a,...u}=s,o=[c,`${c}_end`];t.push({field:hl(l),type:"timeunit",...r?{units:V1(r)}:{},...a?{timezone:"utc"}:{},...u,as:o}
53),t.push(...ZL(o,n,s))}else if(i){const{field:l}=i,c=l.replaceAll("\\.","."),r=u7({timeUnit:s,field:c}),a=yL(c);t.push({type:"formula",expr:r,as:a}),t.push(...ZL([c,a],n,s))}}return t}}const K1="offsetted_rect_start",B1="offsetted_rect_end";function u7({timeUnit:e,field:t,reverse:i}){const{unit:n,utc:s}=e,l=M$(n),{part:c,step:r}=O$(l,e.step);return`${s?"utcOffset":"timeOffset"}('${c}', ${Ft(t)}, ${i?-r:r})`}function ZL([e,t],i,n){if(i!==void 0&&i!==.5){const s=Ft(e),l=Ft(t);return[{type:"formula",expr:WL([u7({timeUnit:n,field:e,reverse:!0}),s],i+.5),as:`${e}_${K1}`},{type:"formula",expr:WL([s,l],i+.5),as:`${e}_${B1}`}]}return[]}function WL([e,t],i){return`${1-i} * ${e} + ${i} * ${t}`}const I0="_tuple_fields";class M5e{constructor(...t){this.items=t,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}const K5e={defined:()=>!0,parse:(e,t,i)=>{const n=t.name,s=t.project??(t.project=new M5e),l={},c={},r=new Set,a=(p,Z)=>{const X=Z==="visual"?p.channel:p.field;let J=ci(`${n}_${X}`);for(let V=1;r.has(J);V++)J=ci(`${n}_${X}_${V}`);return r.add(J),{[Z]:J}},u=t.type,o=e.config.selection[u],d=i.value!==void 0?Ne(i.value):null;let{fields:b,encodings:h}=we(i.select)?i.select:{};if(!b&&!h&&d){for(const p of d)if(we(p))for(const Z of Ze(p))eGe(Z)?(h||(h=[])).push(Z):u==="interval"?(Xe(SGe),h=o.encodings):(b??(b=[])).push(Z)}!b&&!h&&(h=o.encodings,"fields"in o&&(b=o.fields));for(const p of h??[]){const Z=e.fieldDef(p);if(Z){let X=Z.field;if(Z.aggregate){Xe(gGe(p,Z.aggregate));continue}else if(!X){Xe(_S(p));continue}if(Z.timeUnit&&!fd(Z.timeUnit)){X=e.vgField(p);const J={timeUnit:Z.timeUnit,as:X,field:Z.field};c[pt(J)]=J}if(!l[X]){const J=u==="interval"&&hr(p)&&El(e.getScaleComponent(p).get("type"))?"R":Z.bin?"R-RE":"E",V={field:X,channel:p,type:J,index:s.items.length};V.signals={...a(V,"data"),...a(V,"visual")},s.items.push(l[X]=V),s.hasField[X]=l[X],s.hasSelectionId=s.hasSelectionId||X===$l,d$(p)?(V.geoChannel=p,V.channel=u$(p),s.hasChannel[V.channel]=l[X]):s.hasChannel[p]=l[X]}}else Xe(_S(p))}for(const p of b??[]){if(s.hasField[p])continue;const Z={type:"E",field:p,index:s.items.length};Z.signals={...a(Z,"data")},s.items.push(Z),s.hasField[p]=Z,s.hasSelectionId=s.hasSelectionId||p===$l}d&&(t.init=d.map(p=>s.items.map(Z=>we(p)?p[Z.geoChannel||Z.channel]!==void 0?p[Z.geoChannel||Z.channel]:p[Z.field]:p))),Bt(c)||(s.timeUnit=new Oc(null,c))},signals:(e,t,i)=>{const n=t.name+I0;return i.filter(l=>l.name===n).length>0||t.project.hasSelectionId?i:i.concat({name:n,value:t.project.items.map(h7)})}},d7="_curr",OZ="anim_value",em="anim_clock",_V="eased_anim_clock",m7="min_extent",b7="max_range_extent",IY="last_tick_at",gY="is_playing",B5e=1/60*1e3,_5e=(e,t)=>[{name:_V,update:em},{name:`${e}_domain`,init:`domain('${t}')`},{name:m7,init:`extent(${e}_domain)[0]`},{name:b7,init:`extent(range('${t}'))[1]`},{name:OZ,update:`invert('${t}', ${_V})`}],O5e={defined:e=>e.type==="point",topLevelSignals:(e,t,i)=>(jc(t)&&(i=i.concat([{name:em,init:"0",on:[{events:{type:"timer",throttle:B5e},update:`${gY} ? (${em} + (now() - ${IY}) > ${b7} ? 0 : ${em} + (now() - ${IY})) : ${em}`}]},{name:IY,init:"now()",on:[{events:[{signal:em},{signal:gY}],update:"now()"}]},{name:gY,init:"true"}])),i),signals:(e,t,i)=>{const n=t.name,s=n+I0,l=t.project,c="(item().isVoronoi ? datum.datum : datum)",r=an(e.component.selection??{}).reduce((o,d)=>d.type==="interval"?o.concat(d.name+Vm):o,[]).map(o=>`indexof(item().mark.name, '${o}') < 0`).join(" && "),a=`datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0${r?` && ${r}`:""}`;let u=`unit: ${Ju(e)}, `;if(t.project.hasSelectionId)u+=`${$l}: ${c}[${Ge($l)}]`;else if(jc(t))u+=`fields: ${s}, values: [${OZ} ? ${OZ} : ${m7}]`;else{const o=l.items.map(d=>{const b=e.fieldDef(d.channel);return b!=null&&b.bin?`[${c}[${Ge(e.vgField(d.channel,{}))}], ${c}[${Ge(e.vgField(d.channel,{binSuffix:"end"}))}]]`:`${c}[${Ge(d.field)}]`}).join(", ");u+=`fields: ${s}, values: [${o}]`}if(jc(t))return i.concat(_5e(t.name,e.scaleName(zo)),[{name:n+ia,on:[{events:[{signal:_V},{signal:OZ}],update:`{${u}}`,force:!0}]}]);
vendor: 5,038 bytes, line 53
53{const o=t.events;return i.concat([{name:n+ia,on:o?[{events:o,update:`${a} ? {${u}} : null`,force:!0}]:[]}])}}};function h7(e){const{signals:t,hasLegend:i,index:n,...s}=e;return s.field=hl(s.field),s}function Uu(e,t=!0,i=Vn){if(fe(e)){const n=e.map(s=>Uu(s,t,i));return t?`[${n.join(", ")}]`:n}else if(hd(e))return i(t?Ou(e):MVe(e));return t?i(_t(e)):e}function j5e(e,t){for(const i of an(e.component.selection??{})){const n=i.name;let s=`${n}${ia}, ${i.resolve==="global"?"true":`{unit: ${Ju(e)}}`}`;for(const l of O1)l.defined(i)&&(l.signals&&(t=l.signals(e,i,t)),l.modifyExpr&&(s=l.modifyExpr(e,i,s)));t.push({name:n+Zge,on:[{events:{signal:i.name+ia},update:`modify(${Ge(i.name+$u)}, ${s})`}]})}return Cz(t)}function E5e(e,t){if(e.component.selection&&Ze(e.component.selection).length){const i=Ge(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:go("pointermove","scope"),update:`isTuple(facet) ? facet : group(${i}).datum`}]})}return Cz(t)}function P5e(e,t){let i=!1;for(const n of an(e.component.selection??{})){const s=n.name,l=Ge(s+$u);if(t.filter(r=>r.name===s).length===0){const r=n.resolve==="global"?"union":n.resolve,a=n.type==="point"?", true, true)":")";t.push({name:n.name,update:`${H7}(${l}, ${Ge(r)}${a}`})}i=!0;for(const r of O1)r.defined(n)&&r.topLevelSignals&&(t=r.topLevelSignals(e,n,t))}return i&&t.filter(s=>s.name==="unit").length===0&&t.unshift({name:"unit",value:{},on:[{events:"pointermove",update:"isTuple(group()) ? group() : unit"}]}),Cz(t)}function U5e(e,t){const i=[],n=[],s=Ju(e,{escape:!1});for(const l of an(e.component.selection??{})){const c={name:l.name+$u};if(l.project.hasSelectionId&&(c.transform=[{type:"collect",sort:{field:$l}}]),l.init){const a=l.project.items.map(h7);c.values=l.project.hasSelectionId?l.init.map(u=>({unit:s,[$l]:Uu(u,!1)[0]})):l.init.map(u=>({unit:s,fields:a,values:Uu(u,!1)}))}if([...i,...t].filter(a=>a.name===l.name+$u).length||i.push(c),jc(l)&&t.length){const a=e.lookupDataSource(e.getDataName(mi.Main)),u=t.find(d=>d.name===a),o=u.transform.find(d=>d.type==="filter"&&d.expr.includes("vlSelectionTest"));if(o){u.transform=u.transform.filter(b=>b!==o);const d={name:u.name+d7,source:u.name,transform:[o]};n.push(d)}}}return i.concat(t,n)}function f7(e,t){for(const i of an(e.component.selection??{}))for(const n of O1)n.defined(i)&&n.marks&&(t=n.marks(e,i,t));return t}function $5e(e,t){for(const i of e.children)di(i)&&(t=f7(i,t));return t}function Q5e(e,t,i,n){const s=B7(e,t.param,t);return{signal:El(i.get("type"))&&fe(n)&&n[0]>n[1]?`isValid(${s}) && reverse(${s})`:s}}function Cz(e){return e.map(t=>(t.on&&!t.on.length&&delete t.on,t))}const Pr={defined:e=>e.type==="interval"&&e.resolve==="global"&&e.bind&&e.bind==="scales",parse:(e,t)=>{const i=t.scales=[];for(const n of t.project.items){const s=n.channel;if(!hr(s))continue;const l=e.getScaleComponent(s),c=l?l.get("type"):void 0;if(c=="sequential"&&Xe(HGe),!l||!El(c)){Xe(wGe);continue}l.set("selectionExtent",{param:t.name,field:n.field},!0),i.push(n)}},topLevelSignals:(e,t,i)=>{const n=t.scales.filter(c=>i.filter(r=>r.name===c.signals.data).length===0);if(!e.parent||jV(e)||n.length===0)return i;const s=i.find(c=>c.name===t.name);let l=s.update;if(l.includes(H7))s.update=`{${n.map(c=>`${Ge(hl(c.field))}: ${c.signals.data}`).join(", ")}}`;else{for(const c of n){const r=`${Ge(hl(c.field))}: ${c.signals.data}`;l.includes(r)||(l=`${l.substring(0,l.length-1)}, ${r}}`)}s.update=l}return i.concat(n.map(c=>({name:c.signals.data})))},signals:(e,t,i)=>{if(e.parent&&!jV(e))for(const n of t.scales){const s=i.find(l=>l.name===n.signals.data);s.push="outer",delete s.value,delete s.update}return i}};function OV(e,t){return`domain(${Ge(e.scaleName(t))})`}function jV(e){return e.parent&&Bb(e.parent)&&(!e.parent.parent||jV(e.parent.parent))}const Vm="_brush",p7="_scale_trigger",Ih="geo_interval_init_tick",y7="_init",D5e="_center",A5e={defined:e=>e.type==="interval",parse:(e,t,i)=>{var n;if(e.hasProjection){const s={...we(i.select)?i.select:{}};s.fields=[$l],s.encodings||(s.encodings=i.value?Ze(i.value):[oc,ac]),i.select={type:"interval",...s}}if(t.translate&&!Pr.defined(t)){const s=`!event.item || event.item.mark.name !== ${Ge(t.name+Vm)}`;for(const l of t.events){if(!l.between){Xe(`${l} is not an ordered event stream for interval selections.`);continue}const c=Ne((n=l.between[0]).filter??(n.filter=[]));c.includes(s)||c.push(s)}}},signals:(e,t,i)=>{const n=t.name,s=n+ia,l=an(t.project.hasChannel).filter(r=>r.channel===ri||r.channel===$i),c=t.init?t.init[0]:null;if(i.push(...l.reduce((r,a)=>r.concat(q5e(e,t,a,c&&c[a.index])),[])),e.hasProjection){const r=Ge(e.projectionName()),a=e.projectionName()+D5e,{x:u,y:o}=t.project.hasChannel,d=u&&u.signals.visual,b=o&&o.signals.visual,h=u?c&&c[u.index]:`${a}[0]`,p=o?c&&c[o.index]:`${a}[1]`,Z=v=>e.getSizeSignalRef(v).signal,X=`[[${d?d+"[0]":"0"}, ${b?b+"[0]":"0"}],[${d?d+"[1]":Z("width")}, ${b?b+"[1]":Z("height")}]]`;c&&(i.unshift({name:n+y7,init:`[scale(${r}, [${u?h[0]:h}, ${o?p[0]:p}]), scale(${r}, [${u?h[1]:h}, ${o?p[1]:p}])]`}
53),(!u||!o)&&(i.find(k=>k.name===a)||i.unshift({name:a,update:`invert(${r}, [${Z("width")}/2, ${Z("height")}/2])`})));const J=`intersect(${X}, {markname: ${Ge(e.getName("marks"))}}, unit.mark)`,V=`{unit: ${Ju(e)}}`,g=`vlSelectionTuples(${J}, ${V})`,I=l.map(v=>v.signals.visual);return i.concat({name:s,on:[{events:[...I.length?[{signal:I.join(" || ")}]:[],...c?[{signal:Ih}]:[]],update:g}]})}else{if(!Pr.defined(t)){const u=n+p7,o=l.map(d=>{const b=d.channel,{data:h,visual:p}=d.signals,Z=Ge(e.scaleName(b)),X=e.getScaleComponent(b).get("type"),J=El(X)?"+":"";return`(!isArray(${h}) || (${J}invert(${Z}, ${p})[0] === ${J}${h}[0] && ${J}invert(${Z}, ${p})[1] === ${J}${h}[1]))`});o.length&&i.push({name:u,value:{},on:[{events:l.map(d=>({scale:e.scaleName(d.channel)})),update:o.join(" && ")+` ? ${u} : {}`}]})}const r=l.map(u=>u.signals.data),a=`unit: ${Ju(e)}, fields: ${n+I0}, values`;return i.concat({name:s,...c?{init:`{${a}: ${Uu(c)}}`}:{},...r.length?{on:[{events:[{signal:r.join(" || ")}],update:`${r.join(" && ")} ? {${a}: [${r}]} : null`}]}:{}})}},topLevelSignals:(e,t,i)=>(di(e)&&e.hasProjection&&t.init&&(i.filter(s=>s.name===Ih).length||i.unshift({name:Ih,value:null,on:[{events:"timer{1}",update:`${Ih} === null ? {} : ${Ih}`}]})),i),marks:(e,t,i)=>{const n=t.name,{x:s,y:l}=t.project.hasChannel,c=s==null?void 0:s.signals.visual,r=l==null?void 0:l.signals.visual,a=`data(${Ge(t.name+$u)})`;if(Pr.defined(t)||!s&&!l)return i;const u={x:s!==void 0?{signal:`${c}[0]`}:{value:0},y:l!==void 0?{signal:`${r}[0]`}:{value:0},x2:s!==void 0?{signal:`${c}[1]`}:{field:{group:"width"}},y2:l!==void 0?{signal:`${r}[1]`}:{field:{group:"height"}}};if(t.resolve==="global")for(const X of Ze(u))u[X]=[{test:`${a}.length && ${a}[0].unit === ${Ju(e)}`,...u[X]},{value:0}];const{fill:o,fillOpacity:d,cursor:b,...h}=t.mark,p=Ze(h).reduce((X,J)=>(X[J]=[{test:[s!==void 0&&`${c}[0] !== ${c}[1]`,l!==void 0&&`${r}[0] !== ${r}[1]`].filter(V=>V).join(" && "),value:h[J]},{value:null}],X),{}),Z=b??(t.translate?"move":null);return[{name:`${n+Vm}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:o},fillOpacity:{value:d}},update:u}},...i,{name:n+Vm,type:"rect",clip:!0,encode:{enter:{...Z?{cursor:{value:Z}}:{},fill:{value:"transparent"}},update:{...u,...p}}}]}};function q5e(e,t,i,n){const s=!e.hasProjection,l=i.channel,c=i.signals.visual,r=Ge(s?e.scaleName(l):e.projectionName()),a=b=>`scale(${r}, ${b})`,u=e.getSizeSignalRef(l===ri?"width":"height").signal,o=`${l}(unit)`,d=t.events.reduce((b,h)=>[...b,{events:h.between[0],update:`[${o}, ${o}]`},{events:h,update:`[${c}[0], clamp(${o}, 0, ${u})]`}],[]);if(s){const b=i.signals.data,h=Pr.defined(t),p=e.getScaleComponent(l),Z=p?p.get("type"):void 0,X=n?{init:Uu(n,!0,a)}:{value:[]};return d.push({events:{signal:t.name+p7},update:El(Z)?`[${a(`${b}[0]`)}, ${a(`${b}[1]`)}]`:"[0, 0]"}),h?[{name:b,on:[]}]:[{name:c,...X,on:d},{name:b,...n?{init:Uu(n)}:{},on:[{events:{signal:c},update:`${c}[0] === ${c}[1] ? null : invert(${r}, ${c})`}]}]}else{const b=l===ri?0:1,h=t.name+y7,p=n?{init:`[${h}[0][${b}], ${h}[1][${b}]]`}:{value:[]};return[{name:c,...p,on:d}]}}function Cb({model:e,channelDef:t,vgChannel:i,invalidValueRef:n,mainRefFn:s}){const l=x0(t)&&t.condition;let c=[];l&&(c=Ne(l).map(u=>{const o=s(u);if(MIe(u)){const{param:d,empty:b}=u;return{test:K7(e,{param:d,empty:b}),...o}}else return{test:FX(e,u.test),...o}})),n!==void 0&&c.push(n);const r=s(t);return r!==void 0&&c.push(r),c.length>1||c.length===1&&c[0].test?{[i]:c}:c.length===1?{[i]:c[0]}:{}}function Tz(e,t="text"){const i=e.encoding[t];return Cb({model:e,channelDef:i,vgChannel:t,mainRefFn:n=>_1(n,e.config),invalidValueRef:void 0})}function _1(e,t,i="datum"){if(e){if(Pl(e))return ti(e.value);if(tt(e)){const{format:n,formatType:s}=vX(e);return Wz({fieldOrDatumDef:e,format:n,formatType:s,expr:i,config:t})}}}function Z7(e,t={}){const{encoding:i,markDef:n,config:s,stack:l}=e,c=i.tooltip;if(fe(c))return{tooltip:XL({tooltip:c},l,s,t)};{const r=t.reactiveGeom?"datum.datum":"datum";return Cb({model:e,channelDef:c,vgChannel:"tooltip",mainRefFn:u=>{const o=_1(u,s,r);if(o)return o;if(u===null)return;let d=Kt("tooltip",n,s);if(d===!0&&(d={content:"encoding"}),He(d))return{value:d};if(we(d))return Ce(d)?d:d.content==="encoding"?XL(i,l,s,t):{signal:r}},invalidValueRef:void 0})}}function W7(e,t,i,{reactiveGeom:n}={}){const s={...i,...i.tooltipFormat},l=new Set,c=n?"datum.datum":"datum",r=[];function a(o,d){const b=dd(d),h=Un(o)?o:{...o,type:e[b].type},p=h.title||Yz(h,s),Z=Ne(p).join(", ").replaceAll(/"/g,'\\"');let X;if(Yi(d)){const J=d==="x"?"x2":"y2",V=Ul(e[J]);if(Ai(h.bin)&&V){const g=ve(h,{expr:c}),I=ve(V,{expr:c}),{format:v,formatType:k}=vX(h);X=X0(g,I,v,k,s),l.add(J)}}if((Yi(d)||d===yl||d===rc)&&t&&t.fieldChannel===d&&t.offset==="normalize"){const{format:J,formatType:V}=vX(h);X=Wz({fieldOrDatumDef:h,format:J,formatType:V,expr:c,config:s,normalizeStack:!0}).signal}X??(X=_1(h,s,c).signal),r.push({channel:d,key:Z,value:X})}Vz(e,(o,d)=>
53{xe(o)?a(o,d):R1(o)&&a(o.condition,d)});const u={};for(const{channel:o,key:d,value:b}of r)!l.has(o)&&!u[d]&&(u[d]=b);return u}function XL(e,t,i,{reactiveGeom:n}={}){const s=W7(e,t,i,{reactiveGeom:n}),l=yo(s).map(([c,r])=>`"${c}": ${r}`);return l.length>0?{signal:`{${l.join(", ")}}`}:void 0}function ege(e){const{markDef:t,config:i}=e,n=Kt("aria",t,i);return n===!1?{}:{...n?{aria:n}:{},...tge(e),...ige(e)}}function tge(e){const{mark:t,markDef:i,config:n}=e;if(n.aria===!1)return{};const s=Kt("ariaRoleDescription",i,n);return s!=null?{ariaRoleDescription:{value:s}}:Re(YGe,t)?{}:{ariaRoleDescription:{value:t}}}function ige(e){const{encoding:t,markDef:i,config:n,stack:s}=e,l=t.description;if(l)return Cb({model:e,channelDef:l,vgChannel:"description",mainRefFn:a=>_1(a,e.config),invalidValueRef:void 0});const c=Kt("description",i,n);if(c!=null)return{description:ti(c)};if(n.aria===!1)return{};const r=W7(t,s,n);if(!Bt(r))return{description:{signal:yo(r).map(([a,u],o)=>`"${o>0?"; ":""}${a}: " + (${u})`).join(" + ")}}}function nn(e,t,i={}){const{markDef:n,encoding:s,config:l}=t,{vgChannel:c}=i;let{defaultRef:r,defaultValue:a}=i;const u=s[e];r===void 0&&(a??(a=Kt(e,n,l,{vgChannel:c,ignoreVgConfig:!x0(u)})),a!==void 0&&(r=ti(a)));const o={markDef:n,config:l,scaleName:t.scaleName(e),scale:t.getScaleComponent(e)},d=cQ({...o,scaleChannel:e,channelDef:u});return Cb({model:t,channelDef:u,vgChannel:c??e,invalidValueRef:d,mainRefFn:h=>Zz({...o,channel:e,channelDef:h,stack:null,defaultRef:r})})}function X7(e,t={filled:void 0}){const{markDef:i,encoding:n,config:s}=e,{type:l}=i,c=t.filled??Kt("filled",i,s),r=ht(["bar","point","circle","square","geoshape"],l)?"transparent":void 0,a=Kt(c===!0?"color":void 0,i,s,{vgChannel:"fill"})??s.mark[c===!0&&"color"]??r,u=Kt(c===!1?"color":void 0,i,s,{vgChannel:"stroke"})??s.mark[c===!1&&"color"],o=c?"fill":"stroke",d={...a?{fill:ti(a)}:{},...u?{stroke:ti(u)}:{}};return i.color&&(c?i.fill:i.stroke)&&Xe(H$("property",{fill:"fill"in i,stroke:"stroke"in i})),{...d,...nn("color",e,{vgChannel:o,defaultValue:c?a:u}),...nn("fill",e,{defaultValue:n.fill?a:void 0}),...nn("stroke",e,{defaultValue:n.stroke?u:void 0})}}function nge(e){const{encoding:t,mark:i}=e,n=t.order;return!Fo(i)&&Pl(n)?Cb({model:e,channelDef:n,vgChannel:"zindex",mainRefFn:s=>ti(s.value),invalidValueRef:void 0}):{}}function ib({channel:e,markDef:t,encoding:i={},model:n,bandPosition:s}){const l=`${e}Offset`,c=t[l],r=i[l];if((l==="xOffset"||l==="yOffset")&&r)return{offsetType:"encoding",offset:Zz({channel:l,channelDef:r,markDef:t,config:n==null?void 0:n.config,scaleName:n.scaleName(l),scale:n.getScaleComponent(l),stack:null,defaultRef:ti(c),bandPosition:s})};const a=t[l];return a?{offsetType:"visual",offset:a}:{}}function Mn(e,t,{defaultPos:i,vgChannel:n}){const{encoding:s,markDef:l,config:c,stack:r}=t,a=s[e],u=s[br(e)],o=t.scaleName(e),d=t.getScaleComponent(e),{offset:b,offsetType:h}=ib({channel:e,markDef:l,encoding:s,model:t,bandPosition:.5}),p=Mz({model:t,defaultPos:i,channel:e,scaleName:o,scale:d}),Z=!a&&Yi(e)&&(s.latitude||s.longitude)?{field:t.getName(e)}:sge({channel:e,channelDef:a,channel2Def:u,markDef:l,config:c,scaleName:o,scale:d,stack:r,offset:b,defaultRef:p,bandPosition:h==="encoding"?0:void 0});return Z?{[n||e]:Z}:void 0}function sge(e){const{channel:t,channelDef:i,scaleName:n,stack:s,offset:l,markDef:c}=e;if(tt(i)&&s&&t===s.fieldChannel){if(xe(i)){let r=i.bandPosition;if(r===void 0&&c.type==="text"&&(t==="radius"||t==="theta")&&(r=.5),r!==void 0)return VX({scaleName:n,fieldOrDatumDef:i,startSuffix:"start",bandPosition:r,offset:l})}return Wu(i,n,{suffix:"end"},{offset:l})}return yz(e)}function Mz({model:e,defaultPos:t,channel:i,scaleName:n,scale:s}){const{markDef:l,config:c}=e;return()=>{const r=dd(i),a=Zo(i),u=Kt(i,l,c,{vgChannel:a});if(u!==void 0)return Vf(i,u);switch(t){case"zeroOrMin":return JL({scaleName:n,scale:s,mode:"zeroOrMin",mainChannel:r,config:c});case"zeroOrMax":return JL({scaleName:n,scale:s,mode:{zeroOrMax:{widthSignal:e.width.signal,heightSignal:e.height.signal}},mainChannel:r,config:c});case"mid":return{...e[ps(i)],mult:.5}}}}function JL({mainChannel:e,config:t,...i}){const n=lQ(i),{mode:s}=i;if(n)return n;switch(e){case"radius":{if(s==="zeroOrMin")return{value:0};const{widthSignal:l,heightSignal:c}=s.zeroOrMax;return{signal:`min(${l},${c})/2`}}case"theta":return s==="zeroOrMin"?{value:0}:{signal:"2*PI"};case"x":return s==="zeroOrMin"?{value:0}:{field:{group:"width"}};case"y":return s==="zeroOrMin"?{field:{group:"height"}}:{value:0}}}const lge={left:"x",center:"xc",right:"x2"},cge={top:"y",middle:"yc",bottom:"y2"};function J7(e,t,i,n="middle"){if(e==="radius"||e==="theta")return Zo(e);const s=e==="x"?"align":"baseline",l=Kt(s,t,i);let c;return Ce(l)?(Xe(sVe(s)),c=void 0):c=l,e==="x"?lge[c||(n==="top"?"left":"center")]:cge[c||n]}function NX(e,t,{defaultPos:i,defaultPos2:n,range:s}){return s?x7(e,t,{defaultPos:i,defaultPos2:n}):Mn(e,t,{defaultPos:i})}function x7(e,t,{defaultPos:i,defaultPos2:n}){const{markDef:s,config:l}=t,c=br(e),r=ps(e),a=rge(t,n,c),u=a[r]?J7(e,s,l):Zo(e);return{...Mn(e,t,{defaultPos:i,vgChannel:u}),...a}}function rge(e,t,i){const{encoding:n,mark:s,markDef:l,stack:c,config:r}=e,a=dd(i),u=ps(i),o=Zo(i),d=n[a],b=e.scaleName(a),h=e.getScaleComponent(a),{offset:p}=i in n||i in l?ib({channel:i,markDef:l,encoding:n,model:e}):ib({channel:a,markDef:l,encoding:n,model:e});if(!d&&(i==="x2"||i==="y2")&&(n.latitude||n.longitude)){const X=ps(i),J=e.markDef[X];return J!=null?{[X]:{value:J}}
53:{[o]:{field:e.getName(i)}}}const Z=age({channel:i,channelDef:d,channel2Def:n[i],markDef:l,config:r,scaleName:b,scale:h,stack:c,offset:p,defaultRef:void 0});return Z!==void 0?{[o]:Z}:Py(i,l)||Py(i,{[i]:NV(i,l,r.style),[u]:NV(u,l,r.style)})||Py(i,r[s])||Py(i,r.mark)||{[o]:Mz({model:e,defaultPos:t,channel:i,scaleName:b,scale:h})()}}function age({channel:e,channelDef:t,channel2Def:i,markDef:n,config:s,scaleName:l,scale:c,stack:r,offset:a,defaultRef:u}){return tt(t)&&r&&e.charAt(0)===r.fieldChannel.charAt(0)?Wu(t,l,{suffix:"start"},{offset:a}):yz({channel:e,channelDef:i,scaleName:l,scale:c,stack:r,markDef:n,config:s,offset:a,defaultRef:u})}function Py(e,t){const i=ps(e),n=Zo(e);if(t[n]!==void 0)return{[n]:Vf(e,t[n])};if(t[e]!==void 0)return{[n]:Vf(e,t[e])};if(t[i]){const s=t[i];if(Eu(s))Xe(AGe(i));else return{[i]:Vf(e,s)}}}function ta(e,t){const{config:i,encoding:n,markDef:s}=e,l=s.type,c=br(t),r=ps(t),a=n[t],u=n[c],o=e.getScaleComponent(t),d=o?o.get("type"):void 0,b=s.orient,h=n[r]??n.size??Kt("size",s,i,{vgChannel:r}),p=f$(t),Z=l==="bar"&&(t==="x"?b==="vertical":b==="horizontal")||l==="tick"&&(t==="y"?b==="vertical":b==="horizontal");return xe(a)&&(Dt(a.bin)||Ai(a.bin)||a.timeUnit&&!u)&&!(h&&!Eu(h))&&!n[p]&&!Ui(d)?dge({fieldDef:a,fieldDef2:u,channel:t,model:e}):(tt(a)&&Ui(d)||Z)&&!u?uge(a,t,e):x7(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function oge(e,t,i,n,s,l,c){if(Eu(s))if(i){const a=i.get("type");if(a==="band"){let u=`bandwidth('${t}')`;s.band!==1&&(u=`${s.band} * ${u}`);const o=er("minBandSize",{type:c},n);return{signal:o?`max(${Fl(o)}, ${u})`:u}}else s.band!==1&&(Xe(aVe(a)),s=void 0)}else return{mult:s.band,field:{group:e}};else{if(Ce(s))return s;if(s)return{value:s}}if(i){const a=i.get("range");if(bd(a)&&zt(a.step))return{value:a.step-2}}if(!l){const{bandPaddingInner:a,barBandPaddingInner:u,rectBandPaddingInner:o,tickBandPaddingInner:d}=n.scale,b=xi(a,c==="tick"?d:c==="bar"?u:o);if(Ce(b))return{signal:`(1 - (${b.signal})) * ${e}`};if(zt(b))return{signal:`${1-b} * ${e}`}}return{value:TV(n.view,e)-2}}function uge(e,t,i){var f,w;const{markDef:n,encoding:s,config:l,stack:c}=i,r=n.orient,a=i.scaleName(t),u=i.getScaleComponent(t),o=ps(t),d=br(t),b=f$(t),h=i.scaleName(b),p=i.getScaleComponent(Ov(t)),Z=n.type==="tick"||r==="horizontal"&&t==="y"||r==="vertical"&&t==="x";let X;(s.size||n.size)&&(Z?X=nn("size",i,{vgChannel:o,defaultRef:ti(n.size)}):Xe(mVe(n.type)));const J=!!X,V=bQ({channel:t,fieldDef:e,markDef:n,config:l,scaleType:(f=u||p)==null?void 0:f.get("type"),useVlSizeChannel:Z});X=X||{[o]:oge(o,h||a,p||u,l,V,!!e,n.type)};const g=((w=u||p)==null?void 0:w.get("type"))==="band"&&Eu(V)&&!J?"top":"middle",I=J7(t,n,l,g),v=I==="xc"||I==="yc",{offset:k,offsetType:N}=ib({channel:t,markDef:n,encoding:s,model:i,bandPosition:v?.5:0}),C=yz({channel:t,channelDef:e,markDef:n,config:l,scaleName:a,scale:u,stack:c,offset:k,defaultRef:Mz({model:i,defaultPos:"mid",channel:t,scaleName:a,scale:u}),bandPosition:v?N==="encoding"?0:.5:Ce(V)?{signal:`(1-${V})/2`}:Eu(V)?(1-V.band)/2:0});if(o)return{[I]:C,...X};{const x=Zo(d),R=X[o],K=k?{...R,offset:k}:R;return{[I]:C,[x]:fe(C)?[C[0],{...C[1],offset:K}]:{...C,offset:K}}}}function xL(e,t,i,n,s,l,c){if(o$(e))return 0;const r=e==="x"||e==="y2",a=r?-t/2:t/2;if(Ce(i)||Ce(s)||Ce(n)||l){const u=Fl(i),o=Fl(s),d=Fl(n),b=Fl(l),p=l?`(${c} < ${b} ? ${r?"":"-"}0.5 * (${b} - (${c})) : ${a})`:a,Z=d?`${d} + `:"",X=u?`(${u} ? -1 : 1) * `:"",J=o?`(${o} + ${p})`:p;return{signal:Z+X+J}}else return s=s||0,n+(i?-s-a:+s+a)}function dge({fieldDef:e,fieldDef2:t,channel:i,model:n}){var w;const{config:s,markDef:l,encoding:c}=n,r=n.getScaleComponent(i),a=n.scaleName(i),u=r?r.get("type"):void 0,o=r.get("reverse"),d=bQ({channel:i,fieldDef:e,markDef:l,config:s,scaleType:u}),b=(w=n.component.axes[i])==null?void 0:w[0],h=(b==null?void 0:b.get("translate"))??.5,p=Yi(i)?Kt("binSpacing",l,s)??0:0,Z=br(i),X=Zo(i),J=Zo(Z),V=er("minBandSize",l,s),{offset:g}=ib({channel:i,markDef:l,encoding:c,model:n,bandPosition:0}),{offset:I}=ib({channel:Z,markDef:l,encoding:c,model:n,bandPosition:0}),v=kIe({fieldDef:e,scaleName:a}),k=xL(i,p,o,h,g,V,v),N=xL(Z,p,o,h,I??g,V,v),C=Ce(d)?{signal:`(1-${d.signal})/2`}:Eu(d)?(1-d.band)/2:.5,f=Wo({fieldDef:e,fieldDef2:t,markDef:l,config:s});if(Dt(e.bin)||e.timeUnit){const x=e.timeUnit&&f!==.5;return{[J]:YL({fieldDef:e,scaleName:a,bandPosition:C,offset:N,useRectOffsetField:x}),[X]:YL({fieldDef:e,scaleName:a,bandPosition:Ce(C)?{signal:`1-${C.signal}`}:1-C,offset:k,useRectOffsetField:x})}}else if(Ai(e.bin)){const x=Wu(e,a,{},{offset:N});if(xe(t))return{[J]:x,[X]:Wu(t,a,{},{offset:k})};if(md(e.bin)&&e.bin.step)return{[J]:x,[X]:{signal:`scale("${a}", ${ve(e,{expr:"datum"})} + ${e.bin.step})`,offset:k}}}Xe(k$(Z))}function YL({fieldDef:e,scaleName:t,bandPosition:i,offset:n,useRectOffsetField:s}){return VX({scaleName:t,fieldOrDatumDef:e,bandPosition:i,offset:n,...s?{startSuffix:K1,endSuffix:B1}:{}})}const mge=new Set(["aria","width","height"]);function Zl(e,t){const{fill:i=void 0,stroke:n=void 0}=t.color==="include"?X7(e):{};return{...bge(e.markDef,t),...GL("fill",i),...GL("stroke",n),...nn("opacity",e),...nn("fillOpacity",e),...nn("strokeOpacity",e),...nn("strokeWidth",e),...nn("strokeDash",e),...nge(e),...Z7(e),...Tz(e,"href"),...ege(e)}}function GL(e,t){return t?{[e]:t}:{}}function bge(e,t){return xGe.reduce((i,n)=>(!mge.has(n)&&We(e,n)&&t[n]!=="ignore"&&(i[n]=ti(e[n])),i),{})}function Kz(e){const{config:t,markDef:i}=e,n=new Set;if(e.forEachFieldDef((s,l)=>{var u;
53let c;if(!hr(l)||!(c=e.getScaleType(l)))return;const r=x1(s.aggregate),a=pz({scaleChannel:l,markDef:i,config:t,scaleType:c,isCountAggregate:r});if(HIe(a)){const o=e.vgField(l,{expr:"datum",binSuffix:(u=e.stack)!=null&&u.impute?"mid":void 0});o&&n.add(o)}}),n.size>0)return{defined:{signal:[...n].map(l=>I1(l,!0)).join(" && ")}}}function VL(e,t){if(t!==void 0)return{[e]:ti(t)}}const vY="voronoi",Y7={defined:e=>e.type==="point"&&e.nearest,parse:(e,t)=>{if(t.events)for(const i of t.events)i.markname=e.getName(vY)},marks:(e,t,i)=>{const{x:n,y:s}=t.project.hasChannel,l=e.mark;if(Fo(l))return Xe(vGe(l)),i;const c={name:e.getName(vY),type:"path",interactive:!0,from:{data:e.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...Z7(e,{reactiveGeom:!0})}},transform:[{type:"voronoi",x:{expr:n||!s?"datum.datum.x || 0":"0"},y:{expr:s||!n?"datum.datum.y || 0":"0"},size:[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]}]};let r=0,a=!1;return i.forEach((u,o)=>{const d=u.name??"";d===e.component.mark[0].name?r=o:d.includes(vY)&&(a=!0)}),a||i.splice(r+1,0,c),i}},G7={defined:e=>e.type==="point"&&e.resolve==="global"&&e.bind&&e.bind!=="scales"&&!Hz(e.bind),parse:(e,t,i)=>N7(t,i),topLevelSignals:(e,t,i)=>{const n=t.name,s=t.project,l=t.bind,c=t.init&&t.init[0],r=Y7.defined(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return s.items.forEach((a,u)=>{const o=ci(`${n}_${a.field}`);i.filter(b=>b.name===o).length||i.unshift({name:o,...c?{init:Uu(c[u])}:{value:null},on:t.events?[{events:t.events,update:`datum && item().mark.marktype !== 'group' ? ${r}[${Ge(a.field)}] : null`}]:[],bind:l[a.field]??l[a.channel]??l})}),i},signals:(e,t,i)=>{const n=t.name,s=t.project,l=i.find(u=>u.name===n+ia),c=n+I0,r=s.items.map(u=>ci(`${n}_${u.field}`)),a=r.map(u=>`${u} !== null`).join(" && ");return r.length&&(l.update=`${a} ? {fields: ${c}, values: [${r.join(", ")}]} : null`),delete l.value,delete l.on,i}},RX="_toggle",V7={defined:e=>e.type==="point"&&!jc(e)&&!!e.toggle,signals:(e,t,i)=>i.concat({name:t.name+RX,value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const i=t.name+ia,n=t.name+RX;return`${n} ? null : ${i}, `+(t.resolve==="global"?`${n} ? null : true, `:`${n} ? null : {unit: ${Ju(e)}}, `)+`${n} ? ${i} : null`}},hge={defined:e=>e.clear!==void 0&&e.clear!==!1&&!jc(e),parse:(e,t)=>{t.clear&&(t.clear=He(t.clear)?go(t.clear,"view"):t.clear)},topLevelSignals:(e,t,i)=>{if(G7.defined(t))for(const n of t.project.items){const s=i.findIndex(l=>l.name===ci(`${t.name}_${n.field}`));s!==-1&&i[s].on.push({events:t.clear,update:"null"})}return i},signals:(e,t,i)=>{function n(s,l){s!==-1&&i[s].on&&i[s].on.push({events:t.clear,update:l})}if(t.type==="interval")for(const s of t.project.items){const l=i.findIndex(c=>c.name===s.signals.visual);if(n(l,"[0, 0]"),l===-1){const c=i.findIndex(r=>r.name===s.signals.data);n(c,"null")}}else{let s=i.findIndex(l=>l.name===t.name+ia);n(s,"null"),V7.defined(t)&&(s=i.findIndex(l=>l.name===t.name+RX),n(s,"false"))}return i}},I7={defined:e=>{const t=e.resolve==="global"&&e.bind&&Hz(e.bind),i=e.project.items.length===1&&e.project.items[0].field!==$l;return t&&!i&&Xe(NGe),t&&i},parse:(e,t,i)=>{const n=Ae(i);if(n.select=He(n.select)?{type:n.select,toggle:t.toggle}:{...n.select,toggle:t.toggle},N7(t,n),we(i.select)&&(i.select.on||i.select.clear)){const c='event.item && indexof(event.item.mark.role, "legend") < 0';for(const r of t.events)r.filter=Ne(r.filter??[]),r.filter.includes(c)||r.filter.push(c)}const s=xY(t.bind)?t.bind.legend:"click",l=He(s)?go(s,"view"):Ne(s);t.bind={legend:{merge:l}}},topLevelSignals:(e,t,i)=>{const n=t.name,s=xY(t.bind)&&t.bind.legend,l=c=>r=>{const a=Ae(r);return a.markname=c,a};for(const c of t.project.items){if(!c.hasLegend)continue;const r=`${ci(c.field)}_legend`,a=`${n}_${r}`;if(i.filter(o=>o.name===a).length===0){const o=s.merge.map(l(`${r}_symbols`)).concat(s.merge.map(l(`${r}_labels`))).concat(s.merge.map(l(`${r}_entries`)));i.unshift({name:a,...t.init?{}:{value:null},on:[{events:o,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:s.merge,update:`!event.item || !datum ? null : ${a}`,force:!0}]})}}return i},signals:(e,t,i)=>{const n=t.name,s=t.project,l=i.find(b=>b.name===n+ia),c=n+I0,r=s.items.filter(b=>
53b.hasLegend).map(b=>ci(`${n}_${ci(b.field)}_legend`)),u=`${r.map(b=>`${b} !== null`).join(" && ")} ? {fields: ${c}, values: [${r.join(", ")}]} : null`;t.events&&r.length>0?l.on.push({events:r.map(b=>({signal:b})),update:u}):r.length>0&&(l.update=u,delete l.value,delete l.on);const o=i.find(b=>b.name===n+RX),d=xY(t.bind)&&t.bind.legend;return o&&(t.events?o.on.push({...o.on[0],events:d}):o.on[0].events=d),i}};function fge(e,t,i){var s;const n=(s=e.fieldDef(t))==null?void 0:s.field;for(const l of an(e.component.selection??{})){const c=l.project.hasField[n]??l.project.hasChannel[t];if(c&&I7.defined(l)){const r=i.get("selections")??[];r.push(l.name),i.set("selections",r,!1),c.hasLegend=!0}}}const g7="_translate_anchor",v7="_translate_delta",pge={defined:e=>e.type==="interval"&&e.translate,signals:(e,t,i)=>{const n=t.name,s=Pr.defined(t),l=n+g7,{x:c,y:r}=t.project.hasChannel;let a=go(t.translate,"scope");return s||(a=a.map(u=>(u.between[0].markname=n+Vm,u))),i.push({name:l,value:{},on:[{events:a.map(u=>u.between[0]),update:"{x: x(unit), y: y(unit)"+(c!==void 0?`, extent_x: ${s?OV(e,ri):`slice(${c.signals.visual})`}`:"")+(r!==void 0?`, extent_y: ${s?OV(e,$i):`slice(${r.signals.visual})`}`:"")+"}"}]},{name:n+v7,value:{},on:[{events:a,update:`{x: ${l}.x - x(unit), y: ${l}.y - y(unit)}`}]}),c!==void 0&&IL(e,t,c,"width",i),r!==void 0&&IL(e,t,r,"height",i),i}};function IL(e,t,i,n,s){const l=t.name,c=l+g7,r=l+v7,a=i.channel,u=Pr.defined(t),o=s.find(v=>v.name===i.signals[u?"data":"visual"]),d=e.getSizeSignalRef(n).signal,b=e.getScaleComponent(a),h=b&&b.get("type"),p=b&&b.get("reverse"),Z=u?a===ri?p?"":"-":p?"-":"":"",X=`${c}.extent_${a}`,J=`${Z}${r}.${a} / ${u?`${d}`:`span(${X})`}`,V=!u||!b?"panLinear":h==="log"?"panLog":h==="symlog"?"panSymlog":h==="pow"?"panPow":"panLinear",g=u?h==="pow"?`, ${b.get("exponent")??1}`:h==="symlog"?`, ${b.get("constant")??1}`:"":"",I=`${V}(${X}, ${J}${g})`;o.on.push({events:{signal:r},update:u?I:`clampRange(${I}, 0, ${d})`})}const z7="_zoom_anchor",w7="_zoom_delta",yge={defined:e=>e.type==="interval"&&e.zoom,signals:(e,t,i)=>{const n=t.name,s=Pr.defined(t),l=n+w7,{x:c,y:r}=t.project.hasChannel,a=Ge(e.scaleName(ri)),u=Ge(e.scaleName($i));let o=go(t.zoom,"scope");return s||(o=o.map(d=>(d.markname=n+Vm,d))),i.push({name:n+z7,on:[{events:o,update:s?"{"+[a?`x: invert(${a}, x(unit))`:"",u?`y: invert(${u}, y(unit))`:""].filter(d=>d).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:l,on:[{events:o,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),c!==void 0&&gL(e,t,c,"width",i),r!==void 0&&gL(e,t,r,"height",i),i}};function gL(e,t,i,n,s){const l=t.name,c=i.channel,r=Pr.defined(t),a=s.find(V=>V.name===i.signals[r?"data":"visual"]),u=e.getSizeSignalRef(n).signal,o=e.getScaleComponent(c),d=o&&o.get("type"),b=r?OV(e,c):a.name,h=l+w7,p=`${l}${z7}.${c}`,Z=!r||!o?"zoomLinear":d==="log"?"zoomLog":d==="symlog"?"zoomSymlog":d==="pow"?"zoomPow":"zoomLinear",X=r?d==="pow"?`, ${o.get("exponent")??1}`:d==="symlog"?`, ${o.get("constant")??1}`:"":"",J=`${Z}(${b}, ${p}, ${h}${X})`;a.on.push({events:{signal:h},update:r?J:`clampRange(${J}, 0, ${u})`})}const $u="_store",ia="_tuple",Zge="_modify",H7="vlSelectionResolve",O1=[O5e,A5e,K5e,V7,G7,Pr,I7,hge,pge,yge,Y7];function Wge(e){let t=e.parent;for(;t&&!Ss(t);)t=t.parent;return t}function Ju(e,{escape:t}={escape:!0}){let i=t?Ge(e.name):e.name;const n=Wge(e);if(n){const{facet:s}=n;for(const l of sl)s[l]&&(i+=` + '__facet_${l}_' + (facet[${Ge(n.vgField(l))}])`)}return i}function Bz(e){return an(e.component.selection??{}).reduce((t,i)=>t||i.project.hasSelectionId,!1)}function N7(e,t){(He(t.select)||!t.select.on)&&delete e.events,(He(t.select)||!t.select.clear)&&delete e.clear,(He(t.select)||!t.select.toggle)&&delete e.toggle}function jc(e){var t;return(t=e.events)==null?void 0:t.find(i=>"type"in i&&i.type==="timer")}const Xge="RawCode",Jge="Literal",xge="Property",Yge="Identifier",Gge="ArrayExpression",Vge="BinaryExpression",Ige="CallExpression",gge="ConditionalExpression",vge="LogicalExpression",zge="MemberExpression",wge="ObjectExpression",Hge="UnaryExpression";function dc(e){this.type=e}dc.prototype.visit=function(e){let t,i,n;if(e(this))return 1;for(t=Nge(this),i=0,n=t.length;i<n;++i)if(t[i].visit(e))return 1};function Nge(e){switch(e.type){case Gge:return e.elements;case Vge:case vge:return[e.left,e.right];case Ige:return[e.callee].concat(e.arguments);case gge:return[e.test,e.consequent,e.alternate];case zge:return[e.object,e.property];case wge:return e.properties;case xge:return[e.key,e.value];case Hge:return[e.argument];case Yge:case Jge:case Xge:default:return[]}}var pr,Le,he,Yn,Lt,j1=1,g0=2,Qu=3,So=4,E1=5,yd=6,ns=7,v0=8,Rge=9;pr={};pr[j1]="Boolean";pr[g0]="<end>";pr[Qu]="Identifier";pr[So]="Keyword";pr[E1]="Null";pr[yd]="Numeric";pr[ns]="Punctuator";pr[v0]="String";pr[Rge]="RegularExpression";var kge="ArrayExpression",Fge="BinaryExpression",Sge="CallExpression",Lge="ConditionalExpression",R7="Identifier",Cge="Literal",Tge="LogicalExpression",Mge="MemberExpression",Kge="ObjectExpression",Bge="Property",_ge="UnaryExpression",ji="Unexpected token %0",Oge="Unexpected number",jge="Unexpected string",Ege="Unexpected identifier",Pge="Unexpected reserved word",Uge="Unexpected end of input",EV="Invalid regular expression",zY="Invalid regular expression: missing /",k7="Octal literals are not allowed in strict mode.",$ge="Duplicate data property in object literal not allowed in strict mode",cn="ILLEGAL",up="Disabled.",Qge
vendor: 4,932 bytes, line 53
53=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),
53Dge=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC
537\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function P1(e,t){if(!e)throw new Error("ASSERT: "+t)}function Nr(e){return e>=48&&e<=57}function _z(e){return"0123456789abcdefABCDEF".includes(e)}function If(e){return"01234567".includes(e)}function Age(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function dp(e){return e===10||e===13||e===8232||e===8233}function z0(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&Qge.test(String.fromCharCode(e))}function kX(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&Dge.test(String.fromCharCode(e))}const qge={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function F7(){for(;he<Yn;){const e=Le.charCodeAt(he);if(Age(e)||dp(e))++he;else break}}function PV(e){var t,i,n,s=0;for(i=e==="u"?4:2,t=0;t<i;++t)he<Yn&&_z(Le[he])?(n=Le[he++],s=s*16+"0123456789abcdef".indexOf(n.toLowerCase())):vt({},ji,cn);return String.fromCharCode(s)}function eve(){var e,t,i,n;for(e=Le[he],t=0,e==="}"&&vt({},ji,cn);he<Yn&&(e=Le[he++],!!_z(e));)t=t*16+"0123456789abcdef".indexOf(e.toLowerCase());return(t>1114111||e!=="}")&&vt({},ji,cn),t<=65535?String.fromCharCode(t):(i=(t-65536>>10)+55296,n=(t-65536&1023)+56320,String.fromCharCode(i,n))}function S7(){var e,t;for(e=Le.charCodeAt(he++),t=String.fromCharCode(e),e===92&&(Le.charCodeAt(he)!==117&&vt({},ji,cn),++he,e=PV("u"),(!e||e==="\\"||!z0(e.charCodeAt(0)))&&vt({},ji,cn),t=e);he<Yn&&(e=Le.charCodeAt(he),!!kX(e));)++he,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Le.charCodeAt(he)!==117&&vt({},ji,cn),++he,e=PV("u"),(!e||e==="\\"||!kX(e.charCodeAt(0)))&&vt({},ji,cn),t+=e);return t}function tve(){var e,t;for(e=he++;he<Yn;){if(t=Le.charCodeAt(he),t===92)return he=e,S7();if(kX(t))++he;else break}return Le.slice(e,he)}function ive(){var e,t,i;return e=he,t=Le.charCodeAt(he)===92?S7():tve(),t.length===1?i=Qu:qge.hasOwnProperty(t)?i=So:t==="null"?i=E1:t==="true"||t==="false"?i=j1:i=Qu,{type:i,value:t,start:e,end:he}}function wY(){var e=he,t=Le.charCodeAt(he),i,n=Le[he],s,l,c;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++he,{type:ns,value:String.fromCharCode(t),start:e,end:he};default:if(i=Le.charCodeAt(he+1),i===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return he+=2,{type:ns,value:String.fromCharCode(t)+String.fromCharCode(i),start:e,end:he};case 33:case 61:return he+=2,Le.charCodeAt(he)===61&&++he,{type:ns,value:Le.slice(e,he),start:e,end:he}}}if(c=Le.substr(he,4),c===">>>=")return he+=4,{type:ns,value:c,start:e,end:he};if(l=c.substr(0,3),l===">>>"||l==="<<="||l===">>=")return he+=3,{type:ns,value:l,start:e,end:he};if(s=l.substr(0,2),n===s[1]&&"+-<>&|".includes(n)||s==="=>")return he+=2,{type:ns,value:s,start:e,end:he};if(s==="//"&&vt({},ji,cn),"<>=!+-*%&|^/".includes(n))return++he,{type:ns,value:n,start:e,end:he};vt({},ji,cn)}function nve(e){let t="";for(;he<Yn&&_z(Le[he]);)t+=Le[he++];return t.length===0&&vt({},ji,cn),z0(Le.charCodeAt(he))&&vt({},ji,cn),{type:yd,value:parseInt("0x"+t,16),start:e,end:he}}function sve(e){let t="0"+Le[he++];for(;he<Yn&&If(Le[he]);)t+=Le[he++];return(z0(Le.charCodeAt(he))||Nr(Le.charCodeAt(he)))&&vt({},ji,cn),{type:yd,value:parseInt(t,8),octal:!0,start:e,end:he}}function vL(){var e,t,i;if(i=Le[he],P1(Nr(i.charCodeAt(0))||i===".","Numeric literal must start with a decimal digit or a decimal point"),t=he,e="",i!=="."){if(e=Le[he++],i=Le[he],e==="0"){if(i==="x"||i==="X")return++he,nve(t);if(If(i))return sve(t);i&&Nr(i.charCodeAt(0))&&vt({},ji,cn)}for(;Nr(Le.charCodeAt(he));)e+=Le[he++];i=Le[he]}if(i==="."){for(e+=Le[he++];Nr(Le.charCodeAt(he));)e+=Le[he++];i=Le[he]}if(i==="e"||i==="E")if(e+=Le[he++],i=Le[he],(i==="+"||i==="-")&&(e+=Le[he++]),Nr(Le.charCodeAt(he)))for(;Nr(Le.charCodeAt(he));)e+=Le[he++];else vt({},ji,cn);return z0(Le.charCodeAt(he))&&vt({},ji,cn),{type:yd,value:parseFloat(e),start:t,end:he}}function lve(){var e="",t,i,n,s,l=!1;for(t=Le[he],P1(t==="'"||t==='"',"String literal must starts with a quote"),i=he,++he;he<Yn;)if(n=Le[he++],n===t){t="";break}else if(n==="\\")if(n=Le[he++],!n||!dp(n.charCodeAt(0)))switch(n){case"u":case"x":Le[he]==="{"?(++he,e+=eve()):e+=PV(n);break;case"n":e+=` 54`;break;case"r":e+="\r";break;case"t":e+=" ";break;case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:If(n)?(s="01234567".indexOf(n),s!==0&&(l=!0),he<Yn&&If(Le[he])&&(l=!0,s=s*8+"01234567".indexOf(Le[he++]),"0123".includes(n)&&he<Yn&&If(Le[he])&&(s=s*8+"01234567".indexOf(Le[he++]))),e+=String.fromCharCode(s)):e+=n;break}else n==="\r"&&Le[he]===` 55`&&++he;else{if(dp(n.charCodeAt(0)))break;e+=n}return t!==""&&vt({},ji,cn),{type:v0,value:e,octal:l,start:i,end:he}}function cve(e,t){let i=e;t.includes("u")&&(i=i.replace(/\\u\{([0-9a-fA-F]+)\}/g,(n,s)=>{if(parseInt(s,16)<=1114111)return"x";vt({},EV)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(i)}catch{vt({},EV)}try{return new RegExp(e,t)}catch{return null}}function rve(){var e,t,i,n,s;for(e=Le[he],P1(e==="/","Regular expression literal must start with a slash"),t=Le[he++],i=!1,n=!1;he<Yn;
55)if(e=Le[he++],t+=e,e==="\\")e=Le[he++],dp(e.charCodeAt(0))&&vt({},zY),t+=e;else if(dp(e.charCodeAt(0)))vt({},zY);else if(i)e==="]"&&(i=!1);else if(e==="/"){n=!0;break}else e==="["&&(i=!0);return n||vt({},zY),s=t.substr(1,t.length-2),{value:s,literal:t}}function ave(){var e,t,i;for(t="",i="";he<Yn&&(e=Le[he],!!kX(e.charCodeAt(0)));)++he,e==="\\"&&he<Yn?vt({},ji,cn):(i+=e,t+=e);return i.search(/[^gimuy]/g)>=0&&vt({},EV,i),{value:i,literal:t}}function ove(){var e,t,i,n;return Lt=null,F7(),e=he,t=rve(),i=ave(),n=cve(t.value,i.value),{literal:t.literal+i.literal,value:n,regex:{pattern:t.value,flags:i.value},start:e,end:he}}function uve(e){return e.type===Qu||e.type===So||e.type===j1||e.type===E1}function L7(){if(F7(),he>=Yn)return{type:g0,start:he,end:he};const e=Le.charCodeAt(he);return z0(e)?ive():e===40||e===41||e===59?wY():e===39||e===34?lve():e===46?Nr(Le.charCodeAt(he+1))?vL():wY():Nr(e)?vL():wY()}function cs(){const e=Lt;return he=e.end,Lt=L7(),he=e.end,e}function C7(){const e=he;Lt=L7(),he=e}function dve(e){const t=new dc(kge);return t.elements=e,t}function zL(e,t,i){const n=new dc(e==="||"||e==="&&"?Tge:Fge);return n.operator=e,n.left=t,n.right=i,n}function mve(e,t){const i=new dc(Sge);return i.callee=e,i.arguments=t,i}function bve(e,t,i){const n=new dc(Lge);return n.test=e,n.consequent=t,n.alternate=i,n}function Oz(e){const t=new dc(R7);return t.name=e,t}function tf(e){const t=new dc(Cge);return t.value=e.value,t.raw=Le.slice(e.start,e.end),e.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=e.regex),t}function wL(e,t,i){const n=new dc(Mge);return n.computed=e==="[",n.object=t,n.property=i,n.computed||(i.member=!0),n}function hve(e){const t=new dc(Kge);return t.properties=e,t}function HL(e,t,i){const n=new dc(Bge);return n.key=t,n.value=i,n.kind=e,n}function fve(e,t){const i=new dc(_ge);return i.operator=e,i.argument=t,i.prefix=!0,i}function vt(e,t){var i,n=Array.prototype.slice.call(arguments,2),s=t.replace(/%(\d)/g,(l,c)=>(P1(c<n.length,"Message reference must be in range"),n[c]));throw i=new Error(s),i.index=he,i.description=s,i}function U1(e){e.type===g0&&vt(e,Uge),e.type===yd&&vt(e,Oge),e.type===v0&&vt(e,jge),e.type===Qu&&vt(e,Ege),e.type===So&&vt(e,Pge),vt(e,ji,e.value)}function Gn(e){const t=cs();(t.type!==ns||t.value!==e)&&U1(t)}function ii(e){return Lt.type===ns&&Lt.value===e}function HY(e){return Lt.type===So&&Lt.value===e}function pve(){const e=[];for(he=Lt.start,Gn("[");!ii("]");)ii(",")?(cs(),e.push(null)):(e.push(Du()),ii("]")||Gn(","));return cs(),dve(e)}function NL(){he=Lt.start;const e=cs();return e.type===v0||e.type===yd?(e.octal&&vt(e,k7),tf(e)):Oz(e.value)}function yve(){var e,t,i,n;if(he=Lt.start,e=Lt,e.type===Qu)return i=NL(),Gn(":"),n=Du(),HL("init",i,n);if(e.type===g0||e.type===ns)U1(e);else return t=NL(),Gn(":"),n=Du(),HL("init",t,n)}function Zve(){var e=[],t,i,n,s={},l=String;for(he=Lt.start,Gn("{");!ii("}");)t=yve(),t.key.type===R7?i=t.key.name:i=l(t.key.value),n="$"+i,Object.prototype.hasOwnProperty.call(s,n)?vt({},$ge):s[n]=!0,e.push(t),ii("}")||Gn(",");return Gn("}"),hve(e)}function Wve(){Gn("(");const e=jz();return Gn(")"),e}const Xve={if:1};function Jve(){var e,t,i;if(ii("("))return Wve();if(ii("["))return pve();if(ii("{"))return Zve();if(e=Lt.type,he=Lt.start,e===Qu||Xve[Lt.value])i=Oz(cs().value);else if(e===v0||e===yd)Lt.octal&&vt(Lt,k7),i=tf(cs());else{if(e===So)throw new Error(up);e===j1?(t=cs(),t.value=t.value==="true",i=tf(t)):e===E1?(t=cs(),t.value=null,i=tf(t)):ii("/")||ii("/=")?(i=tf(ove()),C7()):U1(cs())}return i}function xve(){const e=[];if(Gn("("),!ii(")"))for(;he<Yn&&(e.push(Du()),!ii(")"));)Gn(",");return Gn(")"),e}function Yve(){he=Lt.start;const e=cs();return uve(e)||U1(e),Oz(e.value)}function Gve(){return Gn("."),Yve()}function Vve(){Gn("[");const e=jz();return Gn("]"),e}function Ive(){var e,t,i;for(e=Jve();;)if(ii("."))i=Gve(),e=wL(".",e,i);else if(ii("("))t=xve(),e=mve(e,t);else if(ii("["))i=Vve(),e=wL("[",e,i);else break;return e}function RL(){const e=Ive();if(Lt.type===ns&&(ii("++")||ii("--")))throw new Error(up);return e}function jZ(){var e,t;if(Lt.type!==ns&&Lt.type!==So)t=RL();else{if(ii("++")||ii("--"))throw new Error(up);if(ii("+")||ii("-")||ii("~")||ii("!"))e=cs(),t=jZ(),t=fve(e.value,t);else{if(HY("delete")||HY("void")||HY("typeof"))throw new Error(up);t=RL()}}return t}function kL(e){let t=0;if(e.type!==ns&&e.type!==So)return 0;switch(e.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function gve(){var e,t,i,n,s,l,c,r,a,u;if(e=Lt,a=jZ(),n=Lt,s=kL(n),s===0)return a;for(n.prec=s,cs(),t=[e,Lt],c=jZ(),l=[a,n,c];(s=kL(Lt))>0;){for(;l.length>2&&s<=l[l.length-2].prec;)c=l.pop(),r=l.pop().value,a=l.pop(),t.pop(),i=zL(r,a,c),l.push(i);n=cs(),n.prec=s,l.push(n),t.push(Lt),i=jZ(),l.push(i)}for(u=l.length-1,i=l[u],t.pop();u>1;)t.pop(),i=zL(l[u-1].value,l[u-2],i),u-=2;return i}function Du(){var e,t,i;return e=gve(),ii("?")&&(cs(),t=Du(),Gn(":"),i=Du(),e=bve(e,t,i)),e}function jz(){const e=Du();if(ii(","))throw new Error(up);return e}function vve(e){Le=e,he=0,Yn=Le.length,Lt=null,C7();const t=jz();if(Lt.type!==g0)throw new Error("Unexpect token after expression.");return t}function UV(e){const t=[];return e.type==="Identifier"?[e.name]:e.type==="Literal"?[e.value]:(e.type==="MemberExpression"&&(t.push(...UV(e.object)),t.push(...UV(e.property))),t)}function T7(e){return e.object.type==="MemberExpression"?T7(e.object):e.object.name==="datum"}function M7(e){const t=vve(e),i=new Set;return t.visit(n=>{n.type==="MemberExpression"&&T7(n)&&i.add(UV(n).slice(1).join("."))}),i}class Tb extends Ct{clone(){return new Tb(null,this.model,Ae(this.filter))}constructor(t,i,n){super(t),this.model=i,this.filter=n,this.expr=FX(this.model,this.filter,this),this._dependentFields=M7(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function zve(e,t){const i={},n=e.config.selection;if(!t||!t.length)return i;let s=0;for(const l of t){const c=ci(l.name),r=l.select,a=He(r)?r:r.type,u=we(r)?Ae(r):{type:a},o=n[a];for(const h in o)h==="fields"||h==="encodings"||(h==="mark"&&(u.mark={...o.mark,...u.mark}
vendor: 5,924 bytes, line 55
55),(u[h]===void 0||u[h]===!0)&&(u[h]=Ae(o[h]??u[h])));const d=i[c]={...u,name:c,type:a,init:l.value,bind:l.bind,events:He(u.on)?go(u.on,"scope"):Ne(Ae(u.on))};if(jc(d)&&(s++,s>1)){delete i[c];continue}const b=Ae(l);for(const h of O1)h.defined(d)&&h.parse&&h.parse(e,d,b)}return s>1&&Xe(CGe),i}function K7(e,t,i,n="datum"){const s=He(t)?t:t.param,l=ci(s),c=Ge(l+$u);let r;try{r=e.getSelectionComponent(l,s)}catch{return`!!${l}`}if(r.project.timeUnit){const b=i??e.component.data.raw,h=r.project.timeUnit.clone();b.parent?h.insertAsParentOf(b):b.parent=h}const a=r.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",u=r.resolve==="global"?")":`, ${Ge(r.resolve)})`,o=`${a}${c}, ${n}${u}`,d=`length(data(${c}))`;return t.empty===!1?`${d} && ${o}`:`!${d} || ${o}`}function B7(e,t,i){const n=ci(t),s=i.encoding;let l=i.field,c;try{c=e.getSelectionComponent(n,t)}catch{return n}if(!s&&!l)l=c.project.items[0].field,c.project.items.length>1&&Xe(TGe(l));else if(s&&!l){const r=c.project.items.filter(a=>a.channel===s);!r.length||r.length>1?(l=c.project.items[0].field,Xe(MGe(r,s,i,l))):l=r[0].field}return`${c.name}[${Ge(hl(l))}]`}function wve(e,t){for(const[i,n]of yo(e.component.selection??{})){const s=e.getName(`lookup_${i}`);e.component.data.outputNodes[s]=n.materialized=new os(new Tb(t,e,{param:i}),s,mi.Lookup,e.component.data.outputNodeRefCounts)}}function FX(e,t,i){return Gf(t,n=>He(n)?n:$Ve(n)?K7(e,n,i):E$(n))}function Hve(e,t){if(e)return fe(e)&&!Fa(e)?e.map(i=>Yz(i,t)).join(", "):e}function NY(e,t,i,n){var s,l;e.encode??(e.encode={}),(s=e.encode)[t]??(s[t]={}),(l=e.encode[t]).update??(l.update={}),e.encode[t].update[i]=n}function nf(e,t,i,n={header:!1}){var d,b;const{disable:s,orient:l,scale:c,labelExpr:r,title:a,zindex:u,...o}=e.combine();if(!s){for(const h in o){const p=h,Z=e3e[p],X=o[p];if(Z&&Z!==t&&Z!=="both")delete o[p];else if(V0(X)){const{condition:J,...V}=X,g=Ne(J),I=tL[p];if(I){const{vgProp:v,part:k}=I,N=[...g.map(C=>{const{test:f,...w}=C;return{test:FX(null,f),...w}}),V];NY(o,k,v,N),delete o[p]}else if(I===null){const v={signal:g.map(k=>{const{test:N,...C}=k;return`${FX(null,N)} ? ${TS(C)} : `}).join("")+TS(V)};o[p]=v}}else if(Ce(X)){const J=tL[p];if(J){const{vgProp:V,part:g}=J;NY(o,g,V,X),delete o[p]}}ht(["labelAlign","labelBaseline"],p)&&o[p]===null&&delete o[p]}if(t==="grid"){if(!o.grid)return;if(o.encode){const{grid:h}=o.encode;o.encode={...h?{grid:h}:{}},Bt(o.encode)&&delete o.encode}return{scale:c,orient:l,...o,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:xi(u,0)}}else{if(!n.header&&e.mainExtracted)return;if(r!==void 0){let p=r;(b=(d=o.encode)==null?void 0:d.labels)!=null&&b.update&&Ce(o.encode.labels.update.text)&&(p=Ku(r,"datum.label",o.encode.labels.update.text.signal)),NY(o,"labels","text",{signal:p})}if(o.labelAlign===null&&delete o.labelAlign,o.encode){for(const p of YQ)e.hasAxisPart(p)||delete o.encode[p];Bt(o.encode)&&delete o.encode}const h=Hve(a,i);return{scale:c,orient:l,grid:!1,...h?{title:h}:{},...o,...i.aria===!1?{aria:!1}:{},zindex:xi(u,0)}}}}function _7(e){const{axes:t}=e.component,i=[];for(const n of da)if(t[n]){for(const s of t[n])if(!s.get("disable")&&!s.get("gridScale")){const l=n==="x"?"height":"width",c=e.getSizeSignalRef(l).signal;l!==c&&i.push({name:l,update:c})}}return i}function Nve(e,t){const{x:i=[],y:n=[]}=e;return[...i.map(s=>nf(s,"grid",t)),...n.map(s=>nf(s,"grid",t)),...i.map(s=>nf(s,"main",t)),...n.map(s=>nf(s,"main",t))].filter(s=>s)}function FL(e,t,i,n){return Object.assign.apply(null,[{},...e.map(s=>{if(s==="axisOrient"){const l=i==="x"?"bottom":"left",c=t[i==="x"?"axisBottom":"axisLeft"]||{},r=t[i==="x"?"axisTop":"axisRight"]||{},a=new Set([...Ze(c),...Ze(r)]),u={};for(const o of a.values())u[o]={signal:`${n.signal} === "${l}" ? ${Fl(c[o])} : ${Fl(r[o])}`};return u}return t[s]})])}function Rve(e,t,i,n){const s=t==="band"?["axisDiscrete","axisBand"]:t==="point"?["axisDiscrete","axisPoint"]:Q$(t)?["axisQuantitative"]:t==="time"||t==="utc"?["axisTemporal"]:[],l=e==="x"?"axisX":"axisY",c=Ce(i)?"axisOrient":`axis${h0(i)}`,r=[...s,...s.map(u=>l+u.substr(4))],a=["axis",c,l];return{vlOnlyAxisConfig:FL(r,n,e,i),vgAxisConfig:FL(a,n,e,i),axisConfigStyle:kve([...a,...r],n)}}function kve(e,t){var n;const i=[{}];for(const s of e){let l=(n=t[s])==null?void 0:n.style;if(l){l=Ne(l);for(const c of l)i.push(t.style[c])}}return Object.assign.apply(null,i)}function $V(e,t,i,n={}){var l;const s=G$(e,i,t);if(s!==void 0)return{configFrom:"style",configValue:s};for(const c of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(((l=n[c])==null?void 0:l[e])!==void 0)return{configFrom:c,configValue:n[c][e]};return{}}const SL={scale:({model:e,channel:t})=>e.scaleName(t),format:({format:e})=>e,formatType:({formatType:e})=>e,grid:({fieldOrDatumDef:e,axis:t,scaleType:i})=>t.grid??Fve(i,e),gridScale:({model:e,channel:t})=>Sve(e,t),labelAlign:({axis:e,labelAngle:t,orient:i,channel:n})=>e.labelAlign||j7(t,i,n),labelAngle:({labelAngle:e})=>e,labelBaseline:({axis:e,labelAngle:t,orient:i,channel:n})=>e.labelBaseline||O7(t,i,n),labelFlush:({axis:e,fieldOrDatumDef:t,channel:i})=>e.labelFlush??Cve(t.type,i),labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:i})=>e.labelOverlap??Tve(t.type,i,xe(t)&&!!t.timeUnit,xe(t)?t.sort:void 0),orient:({orient:e})=>e,tickCount:({channel:e,model:t,axis:i,fieldOrDatumDef:n,scaleType:s})=>{const l=e==="x"?"width":e==="y"?"height":void 0,c=l?t.getSizeSignalRef(l):void 0;return i.tickCount??Kve({fieldOrDatumDef:n,scaleType:s,size:c,values:i.values})},tickMinStep:Bve,title:({axis:e,model:t,channel:i})=>{if(e.title!==void 0)return e.title;const n=E7(t,i);if(n!==void 0)return n;const s=t.typedFieldDef(i),l=i==="x"?"x2":"y2",c=t.fieldDef(l);return I$(s?[qS(s)]:[],xe(c)?[qS(c)]:[])},values:({axis:e,fieldOrDatumDef:t})=>_ve(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:i})=>e.zindex??Ove(i,t)};function Fve(e,t){return!Ui(e)&&xe(t)&&!Dt(t==null?void 0:t.bin)&&
vendor: 8,707 bytes, line 55
55!Ai(t==null?void 0:t.bin)}function Sve(e,t){const i=t==="x"?"y":"x";if(e.getScaleComponent(i))return e.scaleName(i)}function Lve(e,t,i,n,s){const l=t==null?void 0:t.labelAngle;if(l!==void 0)return Ce(l)?l:rp(l);{const{configValue:c}=$V("labelAngle",n,t==null?void 0:t.style,s);return c!==void 0?rp(c):i===ri&&ht([dz,uz],e.type)&&!(xe(e)&&e.timeUnit)?270:void 0}}function QV(e){return`(((${e.signal} % 360) + 360) % 360)`}function O7(e,t,i,n){if(e!==void 0)if(i==="x"){if(Ce(e)){const s=QV(e),l=Ce(t)?`(${t.signal} === "top")`:t==="top";return{signal:`(45 < ${s} && ${s} < 135) || (225 < ${s} && ${s} < 315) ? "middle" :(${s} <= 45 || 315 <= ${s}) === ${l} ? "bottom" : "top"`}}if(45<e&&e<135||225<e&&e<315)return"middle";if(Ce(t)){const s=e<=45||315<=e?"===":"!==";return{signal:`${t.signal} ${s} "top" ? "bottom" : "top"`}}return(e<=45||315<=e)==(t==="top")?"bottom":"top"}else{if(Ce(e)){const s=QV(e),l=Ce(t)?`(${t.signal} === "left")`:t==="left";return{signal:`${s} <= 45 || 315 <= ${s} || (135 <= ${s} && ${s} <= 225) ? ${n?'"middle"':"null"} : (45 <= ${s} && ${s} <= 135) === ${l} ? "top" : "bottom"`}}if(e<=45||315<=e||135<=e&&e<=225)return n?"middle":null;if(Ce(t)){const s=45<=e&&e<=135?"===":"!==";return{signal:`${t.signal} ${s} "left" ? "top" : "bottom"`}}return(45<=e&&e<=135)==(t==="left")?"top":"bottom"}}function j7(e,t,i){if(e===void 0)return;const n=i==="x",s=n?0:90,l=n?"bottom":"left";if(Ce(e)){const c=QV(e),r=Ce(t)?`(${t.signal} === "${l}")`:t===l;return{signal:`(${s?`(${c} + 90)`:c} % 180 === 0) ? ${n?null:'"center"'} :(${s} < ${c} && ${c} < ${180+s}) === ${r} ? "left" : "right"`}}if((e+s)%180===0)return n?null:"center";if(Ce(t)){const c=s<e&&e<180+s?"===":"!==";return{signal:`${`${t.signal} ${c} "${l}"`} ? "left" : "right"`}}return(s<e&&e<180+s)==(t===l)?"left":"right"}function Cve(e,t){if(t==="x"&&ht(["quantitative","temporal"],e))return!0}function Tve(e,t,i,n){if(i&&!we(n)||e!=="nominal"&&e!=="ordinal")return t==="log"||t==="symlog"?"greedy":!0}function Mve(e){return e==="x"?"bottom":"left"}function Kve({fieldOrDatumDef:e,scaleType:t,size:i,values:n}){var s;if(!n&&!Ui(t)&&t!=="log"){if(xe(e)){if(Dt(e.bin))return{signal:`ceil(${i.signal}/10)`};if(e.timeUnit&&ht(["month","hours","day","quarter"],(s=Ei(e.timeUnit))==null?void 0:s.unit))return}return{signal:`ceil(${i.signal}/40)`}}}function Bve({format:e,fieldOrDatumDef:t}){if(e==="d")return 1;if(xe(t)){const{timeUnit:i}=t;if(i){const n=_$(i);if(n)return{signal:n}}}}function E7(e,t){const i=t==="x"?"x2":"y2",n=e.fieldDef(t),s=e.fieldDef(i),l=n?n.title:void 0,c=s?s.title:void 0;if(l&&c)return g$(l,c);if(l)return l;if(c)return c;if(l!==void 0)return l;if(c!==void 0)return c}function _ve(e,t){const i=e.values;if(fe(i))return xQ(t,i);if(Ce(i))return i}function Ove(e,t){return e==="rect"&&gX(t)?1:0}class nb extends Ct{clone(){return new nb(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this._dependentFields=M7(this.transform.calculate)}static parseAllForSortIndex(t,i){return i.forEachFieldDef((n,s)=>{if(pd(n)&&mQ(n.sort)){const{field:l,timeUnit:c}=n,r=n.sort,a=r.map((u,o)=>`${E$({field:l,timeUnit:c,equal:u})} ? ${o} : `).join("")+r.length;t=new nb(t,{calculate:a,as:sb(n,s,{forAs:!0})})}}),t}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${pt(this.transform)}`}}function sb(e,t,i){return ve(e,{prefix:t,suffix:"sort_index",...i})}function $1(e,t){return ht(["top","bottom"],t)?"column":ht(["left","right"],t)||e==="row"?"row":"column"}function lb(e,t,i,n){const s=n==="row"?i.headerRow:n==="column"?i.headerColumn:i.headerFacet;return xi((t||{})[e],s[e],i.header[e])}function Q1(e,t,i,n){const s={};for(const l of e){const c=lb(l,t||{},i,n);c!==void 0&&(s[l]=c)}return s}const Ez=["row","column"],Pz=["header","footer"];function jve(e,t){const i=e.component.layoutHeaders[t].title,n=e.config?e.config:void 0,s=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:void 0,{titleAnchor:l,titleAngle:c,titleOrient:r}=Q1(["titleAnchor","titleAngle","titleOrient"],s.header,n,t),a=$1(t,r),u=rp(c);return{name:`${t}-title`,type:"group",role:`${a}-title`,title:{text:i,...t==="row"?{orient:"left"}:{},style:"guide-title",...U7(u,a),...P7(a,u,l),...$7(n,s,t,x3e,KQ)}}}function P7(e,t,i="middle"){switch(i){case"start":return{align:"left"};case"end":return{align:"right"}}const n=j7(t,e==="row"?"left":"top",e==="row"?"y":"x");return n?{align:n}:{}}function U7(e,t){const i=O7(e,t==="row"?"left":"top",t==="row"?"y":"x",!0);return i?{baseline:i}:{}}function Eve(e,t){const i=e.component.layoutHeaders[t],n=[];for(const s of Pz)if(i[s])for(const l of i[s]){const c=Uve(e,t,s,i,l);c!=null&&n.push(c)}return n}function Pve(e,t){const{sort:i}=e;return Er(i)?{field:ve(i,{expr:"datum"}),order:i.order??"ascending"}:fe(i)?{field:sb(e,t,{expr:"datum"}),order:"ascending"}:{field:ve(e,{expr:"datum"}),order:i??"ascending"}}function DV(e,t,i){const{format:n,formatType:s,labelAngle:l,labelAnchor:c,labelOrient:r,labelExpr:a}=Q1(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],e.header,i,t),u=Wz({fieldOrDatumDef:e,format:n,formatType:s,expr:"parent",config:i}).signal,o=$1(t,r);return{text:{signal:a?Ku(Ku(a,"datum.label",u),"datum.value",ve(e,{expr:"parent"})):u},...t==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...U7(l,o),...P7(o,l,c),...$7(i,e,t,Y3e,BQ)}}function Uve(e,t,i,n,s){if(s){let l=null;const{facetFieldDef:c}=n,r=e.config?e.config:void 0;if(c&&s.labels){const{labelOrient:d}=Q1(["labelOrient"],c.header,r,t);(t==="row"&&!ht(["top","bottom"],d)||t==="column"&&!ht(["left","right"],d))&&(l=DV(c,t,r))}const a=Ss(e)&&!J0(e.facet),u=s.axes,o=(u==null?void 0:u.length)>0;if(l||o){const d=t==="row"?"height":"width";return{name:e.getName(`${t}_${i}`),type:"group",role:`${t}-${i}`,...n.facetFieldDef?{from:{data:e.getName(`${t}_domain`)},sort:Pve(c,t)}:{},...o&&a?{from:{data:e.getName(`facet_domain_${t}`)}}:{},...l?{title:l}:{},...s.sizeSignal?{encode:{update:{[d]:s.sizeSignal}}}:{},...o?{axes:u}:{}}}}return null}const $ve={column:{start:0,end:1},row:{start:1,end:0}};function Qve(e,t){return $ve[t][e]}function Dve(e,t){const i={};for(const n of sl){const s=e[n];if(s!=null&&s.facetFieldDef){const{titleAnchor:l,titleOrient:c}=Q1(["titleAnchor","titleOrient"],s.facetFieldDef.header,t,n),r=$1(n,c),a=Qve(l,r);a!==void 0&&(i[r]=a)}}return Bt(i)?void 0:i}function $7(e,t,i,n,s){const l={};for(const c of n){if(!s[c])continue;const r=lb(c,t==null?void 0:t.header,e,i);r!==void 0&&(l[s[c]]=r)}return l}function Uz(e){return[...Uy(e,"width"),...Uy(e,"height"),...Uy(e,"childWidth"),...Uy(e,"childHeight")]}function Uy(e,t){const i=t==="width"?"x":"y",n=e.component.layoutSize.get(t);if(!n||n==="merged")return[];const s=e.getSizeSignalRef(t).signal;if(n==="step"){const l=e.getScaleComponent(i);if(l){const c=l.get("type"),r=l.get("range");if(Ui(c)&&bd(r)){const a=e.scaleName(i);return Ss(e.parent)&&e.parent.component.resolve.scale[i]==="independent"?[LL(a,r)]:[LL(a,r),{name:s,update:Q7(a,l,`domain('${a}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}else if(n=="container"){const l=s.endsWith("width"),c=l?"containerSize()[0]":"containerSize()[1]",r=CV(e.config.view,l?"width":"height"),a=`isFinite(${c}) ? ${c} : ${r}`;return[{name:s,init:a,on:[{update:a,events:"window:resize"}]}]}else return[{name:s,value:n}]}function LL(e,t){const i=`${e}_step`;return Ce(t.step)?{name:i,update:t.step.signal}:{name:i,value:t.step}}function Q7(e,t,i){const n=t.get("type"),s=t.get("padding"),l=xi(t.get("paddingOuter"),s);let c=t.get("paddingInner");return c=n==="band"?c!==void 0?c:s:1,`bandspace(${i}, ${Fl(c)}, ${Fl(l)}) * ${e}_step`}function D7(e){return e==="childWidth"?"width":e==="childHeight"?"height":e}function A7(e,t){return Ze(e).reduce((i,n)=>({...i,...Cb({model:t,channelDef:e[n],vgChannel:n,mainRefFn:s=>ti(s.value),invalidValueRef:void 0})}),{})}function q7(e,t){if(Ss(t))return e==="theta"?"independent":"shared";if(Bb(t))return"shared";if(tw(t))return Yi(e)||e==="theta"||e==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function $z(e,t){const i=e.scale[t],n=Yi(t)?"axis":"legend";return i==="independent"?(e[n][t]==="shared"&&Xe(yVe(t)),"independent"):e[n][t]||"shared"}const Ave={...I3e,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},eD=Ze(Ave);class qve extends ba{}const CL={symbols:eze,gradient:tze,labels:ize,entries:nze};function eze(e,{fieldOrDatumDef:t,model:i,channel:n,legendCmpt:s,legendT
vendor: 5,712 bytes, line 55
55ype:l}){if(l!=="symbol")return;const{markDef:c,encoding:r,config:a,mark:u}=i,o=c.filled&&u!=="trail";let d={...VGe({},i,JIe),...X7(i,{filled:o})};const b=s.get("symbolOpacity")??a.legend.symbolOpacity,h=s.get("symbolFillColor")??a.legend.symbolFillColor,p=s.get("symbolStrokeColor")??a.legend.symbolStrokeColor,Z=b===void 0?tD(r.opacity)??c.opacity:void 0;if(d.fill){if(n==="fill"||o&&n===hs)delete d.fill;else if(We(d.fill,"field"))h?delete d.fill:(d.fill=ti(a.legend.symbolBaseFillColor??"black"),d.fillOpacity=ti(Z??1));else if(fe(d.fill)){const X=AV(r.fill??r.color)??c.fill??(o&&c.color);X&&(d.fill=ti(X))}}if(d.stroke){if(n==="stroke"||!o&&n===hs)delete d.stroke;else if(We(d.stroke,"field")||p)delete d.stroke;else if(fe(d.stroke)){const X=xi(AV(r.stroke||r.color),c.stroke,o?c.color:void 0);X&&(d.stroke={value:X})}}if(n!==ua){const X=xe(t)&&nD(i,s,t);X?d.opacity=[{test:X,...ti(Z??1)},ti(a.legend.unselectedOpacity)]:Z&&(d.opacity=ti(Z))}return d={...d,...e},Bt(d)?void 0:d}function tze(e,{model:t,legendType:i,legendCmpt:n}){if(i!=="gradient")return;const{config:s,markDef:l,encoding:c}=t;let r={};const u=(n.get("gradientOpacity")??s.legend.gradientOpacity)===void 0?tD(c.opacity)||l.opacity:void 0;return u&&(r.opacity=ti(u)),r={...r,...e},Bt(r)?void 0:r}function ize(e,{fieldOrDatumDef:t,model:i,channel:n,legendCmpt:s}){const l=i.legend(n)||{},c=i.config,r=xe(t)?nD(i,s,t):void 0,a=r?[{test:r,value:1},{value:c.legend.unselectedOpacity}]:void 0,{format:u,formatType:o}=l;let d;Pu(o)?d=Sl({fieldOrDatumDef:t,field:"datum.value",format:u,formatType:o,config:c}):u===void 0&&o===void 0&&c.customFormatTypes&&(t.type==="quantitative"&&c.numberFormatType?d=Sl({fieldOrDatumDef:t,field:"datum.value",format:c.numberFormat,formatType:c.numberFormatType,config:c}):t.type==="temporal"&&c.timeFormatType&&xe(t)&&t.timeUnit===void 0&&(d=Sl({fieldOrDatumDef:t,field:"datum.value",format:c.timeFormat,formatType:c.timeFormatType,config:c})));const b={...a?{opacity:a}:{},...d?{text:d}:{},...e};return Bt(b)?void 0:b}function nze(e,{legendCmpt:t}){const i=t.get("selections");return i!=null&&i.length?{...e,fill:{value:"transparent"}}:e}function tD(e){return iD(e,(t,i)=>Math.max(t,i.value))}function AV(e){return iD(e,(t,i)=>xi(t,i.value))}function iD(e,t){if(BIe(e))return Ne(e.condition).reduce(t,e.value);if(Pl(e))return e.value}function nD(e,t,i){const n=t.get("selections");if(!(n!=null&&n.length))return;const s=Ge(i.field);return n.map(l=>`(!length(data(${Ge(ci(l)+$u)})) || (${l}[${s}] && indexof(${l}[${s}], datum.value) >= 0))`).join(" || ")}const TL={direction:({direction:e})=>e,format:({fieldOrDatumDef:e,legend:t,config:i})=>{const{format:n,formatType:s}=t;return oQ(e,e.type,n,s,i,!1)},formatType:({legend:e,fieldOrDatumDef:t,scaleType:i})=>{const{formatType:n}=e;return uQ(n,t,i)},gradientLength:e=>{const{legend:t,legendConfig:i}=e;return t.gradientLength??i.gradientLength??uze(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:i})=>e.labelOverlap??t.labelOverlap??dze(i),symbolType:({legend:e,markDef:t,channel:i,encoding:n})=>e.symbolType??lze(t.type,i,n.shape,t.shape),title:({fieldOrDatumDef:e,config:t})=>Gm(e,t,{allowDisabling:!0}),type:({legendType:e,scaleType:t,channel:i})=>{if(Ym(i)&&Sc(t)){if(e==="gradient")return}else if(e==="symbol")return;return e},values:({fieldOrDatumDef:e,legend:t})=>sze(t,e)};function sze(e,t){const i=e.values;if(fe(i))return xQ(t,i);if(Ce(i))return i}function lze(e,t,i,n){if(t!=="shape"){const s=AV(i)??n;if(s)return s}switch(e){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}function cze(e){const{legend:t}=e;return xi(t.type,rze(e))}function rze({channel:e,timeUnit:t,scaleType:i}){if(Ym(e)){if(ht(["quarter","month","day"],t))return"symbol";if(Sc(i))return"gradient"}return"symbol"}function aze({legendConfig:e,legendType:t,orient:i,legend:n}){return n.direction??e[t?"gradientDirection":"symbolDirection"]??oze(i,t)}function oze(e,t){switch(e){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return t==="gradient"?"horizontal":void 0}}function uze({legendConfig:e,model:t,direction:i,orient:n,scaleType:s}){const{gradientHorizontalMaxLength:l,gradientHorizontalMinLength:c,gradientVerticalMaxLength:r,gradientVerticalMinLength:a}=e;if(Sc(s))return i==="horizontal"?n==="top"||n==="bottom"?ML(t,"width",c,l):c:ML(t,"height",a,r)}function ML(e,t,i,n){return{signal:`clamp(${e.getSizeSignalRef(t).signal}, ${i}, ${n})`}}function dze(e){if(ht(["quantile","threshold","log","symlog"],e))return"greedy"}function sD(e){const t=di(e)?mze(e):pze(e);return e.component.legends=t,t}function mze(e){const{encoding:t}=e,i={};for(const n of[hs,...OQ]){const s=Fi(t[n]);!s||!e.getScaleComponent(n)||n===fs&&xe(s)&&s.type===Lb||(i[n]=fze(e,n))}return i}function bze(e,t){const i=e.scaleName(t);if(e.mark==="trail"){if(t==="color")return{stroke:i};if(t==="size")return{strokeWidth:i}}return t==="color"?e.markDef.filled?{fill:i}:{stroke:i}:{[t]:i}}function hze(e,t,i,n){switch(t){case"disable":return i!==void 0;case"values":return!!(i!=null&&i.values);case"title":if(t==="title"&&e===(n==null?void 0:n.title))return!0}return e===(i||{})[t]}function fze(e,t){var I;let i=e.legend(t);const{markDef:n,encoding:s,config:l}=e,c=l.legend,r=new qve({},bze(e,t));fge(e,t,r);const a=i!==void 0?!i:c.disable;if(r.set("disable",a,i!==void 0),a)return r;i=i||{};const u=e.getScaleComponent(t).get("type"),o=Fi(s[t]),d=xe(o)?(I=Ei(o.timeUnit))==null?void 0:I.unit:void 0,b=i.orient||l.legend.orient||"right",h=cze({legend:i,channel:t,timeUnit:d,scaleType:u}
55),p=aze({legend:i,legendType:h,orient:b,legendConfig:c}),Z={legend:i,channel:t,model:e,markDef:n,encoding:s,fieldOrDatumDef:o,legendConfig:c,config:l,scaleType:u,orient:b,legendType:h,direction:p};for(const v of eD){if(h==="gradient"&&v.startsWith("symbol")||h==="symbol"&&v.startsWith("gradient"))continue;const k=v in TL?TL[v](Z):i[v];if(k!==void 0){const N=hze(k,v,i,e.fieldDef(t));(N||l.legend[v]===void 0)&&r.set(v,k,N)}}const X=(i==null?void 0:i.encoding)??{},J=r.get("selections"),V={},g={fieldOrDatumDef:o,model:e,channel:t,legendCmpt:r,legendType:h};for(const v of["labels","legend","title","symbols","gradient","entries"]){const k=A7(X[v]??{},e),N=v in CL?CL[v](k,g):k;N!==void 0&&!Bt(N)&&(V[v]={...J!=null&&J.length&&xe(o)?{name:`${ci(o.field)}_legend_${v}`}:{},...J!=null&&J.length?{interactive:!!J}:{},update:N})}return Bt(V)||r.set("encode",V,!!(i!=null&&i.encoding)),r}function pze(e){const{legends:t,resolve:i}=e.component;for(const n of e.children){sD(n);for(const s of Ze(n.component.legends))i.legend[s]=$z(e.component.resolve,s),i.legend[s]==="shared"&&(t[s]=lD(t[s],n.component.legends[s]),t[s]||(i.legend[s]="independent",delete t[s]))}for(const n of Ze(t))for(const s of e.children)s.component.legends[n]&&i.legend[n]==="shared"&&delete s.component.legends[n];return t}function lD(e,t){var l,c,r,a;if(!e)return t.clone();const i=e.getWithExplicit("orient"),n=t.getWithExplicit("orient");if(i.explicit&&n.explicit&&i.value!==n.value)return;let s=!1;for(const u of eD){const o=Xo(e.getWithExplicit(u),t.getWithExplicit(u),u,"legend",(d,b)=>{switch(u){case"symbolType":return yze(d,b);case"title":return v$(d,b);case"type":return s=!0,Ys("symbol")}return M1(d,b,u,"legend")});e.setWithExplicit(u,o)}return s&&((c=(l=e.implicit)==null?void 0:l.encode)!=null&&c.gradient&&xX(e.implicit,["encode","gradient"]),(a=(r=e.explicit)==null?void 0:r.encode)!=null&&a.gradient&&xX(e.explicit,["encode","gradient"])),e}function yze(e,t){return t.value==="circle"?t:e}function Zze(e,t,i,n){var s,l;e.encode??(e.encode={}),(s=e.encode)[t]??(s[t]={}),(l=e.encode[t]).update??(l.update={}),e.encode[t].update[i]=n}function cD(e){const t=e.component.legends,i={};for(const s of Ze(t)){const l=e.getScaleComponent(s),c=_t(l.get("domains"));if(i[c])for(const r of i[c])lD(r,t[s])||i[c].push(t[s]);else i[c]=[t[s].clone()]}return an(i).flat().map(s=>Wze(s,e.config)).filter(s=>s!==void 0)}function Wze(e,t){var c,r,a;const{disable:i,labelExpr:n,selections:s,...l}=e.combine();if(!i){if(t.aria===!1&&l.aria==null&&(l.aria=!1),(c=l.encode)!=null&&c.symbols){const u=l.encode.symbols.update;u.fill&&u.fill.value!=="transparent"&&!u.stroke&&!l.stroke&&(u.stroke={value:"transparent"});for(const o of OQ)l[o]&&delete u[o]}if(l.title||delete l.title,n!==void 0){let u=n;(a=(r=l.encode)==null?void 0:r.labels)!=null&&a.update&&Ce(l.encode.labels.update.text)&&(u=Ku(n,"datum.label",l.encode.labels.update.text.signal)),Zze(l,"labels","text",{signal:u})}return l}}function Xze(e){return Bb(e)||tw(e)?Jze(e):rD(e)}function Jze(e){return e.children.reduce((t,i)=>t.concat(i.assembleProjections()),rD(e))}function rD(e){const t=e.component.projection;if(!t||t.merged)return[];const i=t.combine(),{name:n}=i;if(t.data){const s={signal:`[${t.size.map(c=>c.signal).join(", ")}]`},l=t.data.reduce((c,r)=>{const a=Ce(r)?r.signal:`data('${e.lookupDataSource(r)}')`;return ht(c,a)||c.push(a),c},[]);if(l.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:n,size:s,fit:{signal:l.length>1?`[${l.join(", ")}]`:l[0]},...i}]}else return[{name:n,translate:{signal:"[width / 2, height / 2]"},...i}]}const xze=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class aD extends ba{constructor(t,i,n,s){super({...i},{name:t}),this.specifiedProjection=i,this.size=n,this.data=s,this.merged=!1}get isFit(){return!!this.data}}function oD(e){e.component.projection=di(e)?Yze(e):Ize(e)}function Yze(e){if(e.hasProjection){const t=qi(e.specifiedProjection),i=!(t&&(t.scale!=null||t.translate!=null)),n=i?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,s=i?Gze(e):void 0,l=new aD(e.projectionName(!0),{...qi(e.config.projection),...t},n,s);return l.get("type")||l.set("type","equalEarth",!1),l}}function Gze(e){const t=[],{encoding:i}=e;for(const n of[[oc,ac],[fl,uc]])(Fi(i[n[0]])||Fi(i[n[1]]))&&t.pu
vendor: 6,021 bytes, line 55
55sh({signal:e.getName(`geojson_${t.length}`)});return e.channelHasField(fs)&&e.typedFieldDef(fs).type===Lb&&t.push({signal:e.getName(`geojson_${t.length}`)}),t.length===0&&t.push(e.requestDataName(mi.Main)),t}function Vze(e,t){const i=Lv(xze,s=>!!(!Re(e.explicit,s)&&!Re(t.explicit,s)||Re(e.explicit,s)&&Re(t.explicit,s)&&Hs(e.get(s),t.get(s))));if(Hs(e.size,t.size)){if(i)return e;if(Hs(e.explicit,{}))return t;if(Hs(t.explicit,{}))return e}return null}function Ize(e){if(e.children.length===0)return;let t;for(const n of e.children)oD(n);const i=Lv(e.children,n=>{const s=n.component.projection;if(s)if(t){const l=Vze(t,s);return l&&(t=l),!!l}else return t=s,!0;else return!0});if(t&&i){const n=e.projectionName(!0),s=new aD(n,t.specifiedProjection,t.size,Ae(t.data));for(const l of e.children){const c=l.component.projection;c&&(c.isFit&&s.data.push(...l.component.projection.data),l.renameProjection(c.get("name"),n),c.merged=!0)}return s}}function gze(e,t,i,n){if(G0(t,i)){const s=di(e)?e.axis(i)??e.legend(i)??{}:{},l=ve(t,{expr:"datum"}),c=ve(t,{expr:"datum",binSuffix:"end"});return{formulaAs:ve(t,{binSuffix:"range",forAs:!0}),formula:X0(l,c,s.format,s.formatType,n)}}return{}}function uD(e,t){return`${X$(e)}_${t}`}function vze(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}function Qz(e,t,i){const n=k1(i,void 0)??{},s=uD(n,t);return e.getName(`${s}_bins`)}function zze(e){return"as"in e}function KL(e,t,i){let n,s;zze(e)?n=He(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]]:n=[ve(e,{forAs:!0}),ve(e,{binSuffix:"end",forAs:!0})];const l={...k1(t,void 0)},c=uD(l,e.field),{signal:r,extentSignal:a}=vze(i,c);if(Y1(l.extent)){const o=l.extent;s=B7(i,o.param,o),delete l.extent}const u={bin:l,field:e.field,as:[n],...r?{signal:r}:{},...a?{extentSignal:a}:{},...s?{span:s}:{}};return{key:c,binComponent:u}}class Ec extends Ct{clone(){return new Ec(null,Ae(this.bins))}constructor(t,i){super(t),this.bins=i}static makeFromEncoding(t,i){const n=i.reduceFieldDef((s,l,c)=>{if(Un(l)&&Dt(l.bin)){const{key:r,binComponent:a}=KL(l,l.bin,i);s[r]={...a,...s[r],...gze(i,l,c,i.config)}}return s},{});return Bt(n)?null:new Ec(t,n)}static makeFromTransform(t,i,n){const{key:s,binComponent:l}=KL(i,i.bin,n);return new Ec(t,{[s]:l})}merge(t,i){for(const n of Ze(t.bins))n in this.bins?(i(t.bins[n].signal,this.bins[n].signal),this.bins[n].as=Fc([...this.bins[n].as,...t.bins[n].as],pt)):this.bins[n]=t.bins[n];for(const n of t.children)t.removeChild(n),n.parent=this;t.remove()}producedFields(){return new Set(an(this.bins).map(t=>t.as).flat(2))}dependentFields(){return new Set(an(this.bins).map(t=>t.field))}hash(){return`Bin ${pt(this.bins)}`}assemble(){return an(this.bins).flatMap(t=>{const i=[],[n,...s]=t.as,{extent:l,...c}=t.bin,r={type:"bin",field:hl(t.field),as:n,signal:t.signal,...Y1(l)?{extent:null}:{extent:l},...t.span?{span:{signal:`span(${t.span})`}}:{},...c};!l&&t.extentSignal&&(i.push({type:"extent",field:hl(t.field),signal:t.extentSignal}),r.extent={signal:t.extentSignal}),i.push(r);for(const a of s)for(let u=0;u<2;u++)i.push({type:"formula",expr:ve({field:n[u]},{expr:"datum"}),as:a[u]});return t.formula&&i.push({type:"formula",expr:t.formula,as:t.formulaAs}),i})}}function wze(e,t,i,n){var l;const s=di(n)?n.encoding[br(t)]:void 0;if(Un(i)&&di(n)&&hQ(i,s,n.markDef,n.config)){e.add(ve(i,{})),e.add(ve(i,{suffix:"end"}));const{mark:c,markDef:r,config:a}=n,u=Wo({fieldDef:i,markDef:r,config:a});ap(c)&&u!==.5&&Yi(t)&&(e.add(ve(i,{suffix:K1})),e.add(ve(i,{suffix:B1}))),i.bin&&G0(i,t)&&e.add(ve(i,{binSuffix:"range"}))}else if(d$(t)){const c=u$(t);e.add(n.getName(c))}else e.add(ve(i));return pd(i)&&aIe((l=i.scale)==null?void 0:l.range)&&e.add(i.scale.range.field),e}function Hze(e,t){for(const i of Ze(t)){const n=t[i];for(const s of Ze(n))i in e?e[i][s]=new Set([...e[i][s]??[],...n[s]]):e[i]={[s]:n[s]}}}class Kl extends Ct{clone(){return new Kl(null,new Set(this.dimensions),Ae(this.measures))}constructor(t,i,n){super(t),this.dimensions=i,this.measures=n}get groupBy(){return this.dimensions}static makeFromEncoding(t,i){let n=!1;i.forEachFieldDef(c=>{c.aggregate&&(n=!0)});const s={},l=new Set;return!n||(i.forEachFieldDef((c,r)=>{const{aggregate:a,field:u}=c;if(a)if(a==="count")s["*"]??(s["*"]={}),s["*"].count=new Set([ve(c,{forAs:!0})]);else{if(ea(a)||ko(a)){const o=ea(a)?"argmin":"argmax",d=a[o];s[d]??(s[d]={}),s[d][o]=new Set([ve({op:o,field:d},{forAs:!0})])}else s[u]??(s[u]={}),s[u][a]=new Set([ve(c,{forAs:!0})]);hr(r)&&i.scaleDomain(r)==="unaggregated"&&(s[u]??(s[u]={}),s[u].min=new Set([ve({field:u,aggregate:"min"},{forAs:!0})]),s[u].max=new Set([ve({field:u,aggregate:"max"},{forAs:!0})]))}else wze(l,r,c,i)}),l.size+Ze(s).length===0)?null:new Kl(t,l,s)}static makeFromTransform(t,i){var n;const s=new Set,l={};for(const c of i.aggregate){const{op:r,field:a,as:u}=c;r&&(r==="count"?(l["*"]??(l["*"]={}),l["*"].count=new Set([u||ve(c,{forAs:!0})])):(l[a]??(l[a]={}),(n=l[a])[r]??(n[r]=new Set),l[a][r].add(u||ve(c,{forAs:!0}))))}for(const c of i.groupby??[])s.add(c);return s.size+Ze(l).length===0?null:new Kl(t,s,l)}merge(t){return i$(this.dimensions,t.dimensions)?(Hze(this.measures,t.measures),!0):(RVe("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...Ze(this.measures)])}producedFields(){const t=new Set;for(const i of Ze(this.measures))for(const n of Ze(this.measures[i])){const s=this.measures[i][n];s.size===0?t.add(`${n}_${i}`):s.forEach(t.add,t)}return t}hash(){return`Aggregate ${pt({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const t=[],i=[],n=[];for(const l of Ze(this.measures))for(const c of Ze(this.measures[l]))for(const r of this.measures[l][c])n.push(r),t.push(c),i.push(l==="*"?null:hl(l));return{type:"aggregate",groupby:[...this.dimensions].map(hl),ops:t,fields:i,as:n}}}class Mb extends Ct{constructor(t,i,n,s){super(t),this.model=i,this.name=n,this.data=s;for(const l of sl){const c=i.facet[l];
vendor: 11,972 bytes, line 55
55if(c){const{bin:r,sort:a}=c;this[l]={name:i.getName(`${l}_domain`),fields:[ve(c),...Dt(r)?[ve(c,{binSuffix:"end"})]:[]],...Er(a)?{sortField:a}:fe(a)?{sortIndexField:sb(c,l)}:{}}}}this.childModel=i.child}hash(){let t="Facet";for(const i of sl)this[i]&&(t+=` ${i.charAt(0)}:${pt(this[i])}`);return t}get fields(){var i;const t=[];for(const n of sl)(i=this[n])!=null&&i.fields&&t.push(...this[n].fields);return t}dependentFields(){const t=new Set(this.fields);for(const i of sl)this[i]&&(this[i].sortField&&t.add(this[i].sortField.field),this[i].sortIndexField&&t.add(this[i].sortIndexField));return t}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const i of da){const n=this.childModel.component.scales[i];if(n&&!n.merged){const s=n.get("type"),l=n.get("range");if(Ui(s)&&bd(l)){const c=D1(this.childModel,i),r=ew(c);r?t[i]=r:Xe(Dv(i))}}}return t}assembleRowColumnHeaderData(t,i,n){const s={row:"y",column:"x",facet:void 0}[t],l=[],c=[],r=[];s&&n&&n[s]&&(i?(l.push(`distinct_${n[s]}`),c.push("max")):(l.push(n[s]),c.push("distinct")),r.push(`distinct_${n[s]}`));const{sortField:a,sortIndexField:u}=this[t];if(a){const{op:o=H1,field:d}=a;l.push(d),c.push(o),r.push(ve(a,{forAs:!0}))}else u&&(l.push(u),c.push("max"),r.push(u));return{name:this[t].name,source:i??this.data,transform:[{type:"aggregate",groupby:this[t].fields,...l.length?{fields:l,ops:c,as:r}:{}}]}}assembleFacetHeaderData(t){var a;const{columns:i}=this.model.layout,{layoutHeaders:n}=this.model.component,s=[],l={};for(const u of Ez){for(const o of Pz){const d=(n[u]&&n[u][o])??[];for(const b of d)if(((a=b.axes)==null?void 0:a.length)>0){l[u]=!0;break}}if(l[u]){const o=`length(data("${this.facet.name}"))`,d=u==="row"?i?{signal:`ceil(${o} / ${i})`}:1:i?{signal:`min(${o}, ${i})`}:{signal:o};s.push({name:`${this.facet.name}_${u}`,transform:[{type:"sequence",start:0,stop:d}]})}}const{row:c,column:r}=l;return(c||r)&&s.unshift(this.assembleRowColumnHeaderData("facet",null,t)),s}assemble(){const t=[];let i=null;const n=this.getChildIndependentFieldsWithStep(),{column:s,row:l,facet:c}=this;if(s&&l&&(n.x||n.y)){i=`cross_${this.column.name}_${this.row.name}`;const r=[].concat(n.x??[],n.y??[]),a=r.map(()=>"distinct");t.push({name:i,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:r,ops:a}]})}for(const r of[jr,Or])this[r]&&t.push(this.assembleRowColumnHeaderData(r,i,n));if(c){const r=this.assembleFacetHeaderData(n);r&&t.push(...r)}return t}}function BL(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Nze(e,t){const i=Mv(e);if(t==="number")return`toNumber(${i})`;if(t==="boolean")return`toBoolean(${i})`;if(t==="string")return`toString(${i})`;if(t==="date")return`toDate(${i})`;if(t==="flatten")return i;if(t.startsWith("date:")){const n=BL(t.slice(5,t.length));return`timeParse(${i},'${n}')`}else if(t.startsWith("utc:")){const n=BL(t.slice(4,t.length));return`utcParse(${i},'${n}')`}else return Xe(BGe(t)),null}function Rze(e){const t={};return _Z(e.filter,i=>{if(j$(i)){let n=null;nz(i)?n=zs(i.equal):lz(i)?n=zs(i.lte):sz(i)?n=zs(i.lt):cz(i)?n=zs(i.gt):rz(i)?n=zs(i.gte):az(i)?n=i.range[0]:oz(i)&&(n=(i.oneOf??i.in)[0]),n&&(hd(n)?t[i.field]="date":zt(n)?t[i.field]="number":He(n)&&(t[i.field]="string")),i.timeUnit&&(t[i.field]="date")}}),t}function kze(e){const t={};function i(n){eb(n)?t[n.field]="date":n.type==="quantitative"&&pGe(n.aggregate)?t[n.field]="number":Um(n.field)>1?n.field in t||(t[n.field]="flatten"):pd(n)&&Er(n.sort)&&Um(n.sort.field)>1&&(n.sort.field in t||(t[n.sort.field]="flatten"))}if((di(e)||Ss(e))&&e.forEachFieldDef((n,s)=>{if(Un(n))i(n);else{const l=dd(s),c=e.fieldDef(l);i({...n,type:c.type})}}),di(e)){const{mark:n,markDef:s,encoding:l}=e;if(Fo(n)&&!e.encoding.order){const c=s.orient==="horizontal"?"y":"x",r=l[c];xe(r)&&r.type==="quantitative"&&!(r.field in t)&&(t[r.field]="number")}}return t}function Fze(e){const t={};if(di(e)&&e.component.selection)for(const i of Ze(e.component.selection)){const n=e.component.selection[i];for(const s of n.project.items)!s.channel&&Um(s.field)>1&&(t[s.field]="flatten")}return t}class Zn extends Ct{clone(){return new Zn(null,Ae(this._parse))}constructor(t,i){super(t),this._parse=i}hash(){return`Parse ${pt(this._parse)}`}static makeExplicit(t,i,n){var c;let s={};const l=i.data;return!no(l)&&((c=l==null?void 0:l.format)!=null&&c.parse)&&(s=l.format.parse),this.makeWithAncestors(t,s,{},n)}static makeWithAncestors(t,i,n,s){for(const r of Ze(n)){const a=s.getWithExplicit(r);a.value!==void 0&&(a.explicit||a.value===n[r]||a.value==="derived"||n[r]==="flatten"?delete n[r]:Xe(jS(r,n[r],a.value)))}for(const r of Ze(i)){const a=s.get(r);a!==void 0&&(a===i[r]?delete i[r]:Xe(jS(r,i[r],a)))}const l=new ba(i,n);s.copyAll(l);const c={};for(const r of Ze(l.combine())){const a=l.get(r);a!==null&&(c[r]=a)}return Ze(c).length===0||s.parseNothing?null:new Zn(t,c)}get parse(){return this._parse}merge(t){this._parse={...this._parse,...t.parse},t.remove()}assembleFormatParse(){const t={};for(const i of Ze(this._parse)){const n=this._parse[i];Um(i)===1&&(t[i]=n)}return t}producedFields(){return new Set(Ze(this._parse))}dependentFields(){return new Set(Ze(this._parse))}assembleTransforms(t=!1){return Ze(this._parse).filter(i=>t?Um(i)>1:!0).map(i=>{const n=Nze(i,this._parse[i]);return n?{type:"formula",expr:n,as:Fb(i)}:null}).filter(i=>i!==null)}}class Jo extends Ct{clone(){return new Jo(null)}constructor(t){super(t)}dependentFields(){return new Set}producedFields(){return new Set([$l])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:$l}}}class w0 extends Ct{clone(){return new w0(null,this.params)}constructor(t,i){super(t),this.params=i}dependentFields(){return new Set}producedFields(){}hash(){return`Graticule ${pt(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class H0 extends Ct{clone(){return new H0(null,this.params)}constructor(t,i){super(t),this.params=i}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??"data"])}hash(){return`Hash ${pt(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class Au extends Ct{constructor(t){super(null),t??(t={name:"source"});let i;if(no(t)||(i=t.format?{...as(t.format,["parse"])}:{}),op(t))this._data={values:t.values};else if(tb(t)){if(this._data={url:t.url},!i.type){let n=/(?:\.([^.]+))?$/.exec(t.url)[1];ht(["json","csv","tsv","dsv","topojson"],n)||(n="json"),i.type=n}}else a7(t)?this._data={values:[{type:"Sphere"}]}:(c7(t)||no(t))&&(this._data={});this._generator=no(t),t.name&&(this._name=t.name),i&&!Bt(i)&&(this._data.format=i)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}var _L=function(e,t,i,n,s){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?s.call(e,i):s?s.value=i:t.set(e,i),i},Sze=function(e,t,i,n){if(i==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?n:i==="a"?n.call(e):n?n.value:t.get(e)},sf;function Dz(e){return e instanceof Au||e instanceof w0||e instanceof H0}class Az{constructor(){sf.set(this,void 0),_L(this,sf,!1,"f")}setModified(){_L(this,sf,!0,"f")}get modifiedFlag(){return Sze(this,sf,"f")}}sf=new WeakMap;class Zd extends Az{getNodeDepths(t,i,n){n.set(t,i);for(const s of t.children)this.getNodeDepths(s,i+1,n);return n}optimize(t){const n=[...this.getNodeDepths(t,0,new Map).entries()].sort((s,l)=>l[1]-s[1]);for(const s of n)this.run(s[0]);return this.modifiedFlag}}class qz extends Az{optimize(t){this.run(t);for(const i of t.children)this.optimize(i);return this.modifiedFlag}}class Lze extends qz{mergeNodes(t,i){const n=i.shift();for(const s of i)t.removeChild(s),s.parent=n,s.remove()}run(t){const i=t.children.map(s=>s.hash()),n={};for(let s=0;s<i.length;s++)n[i[s]]===void 0?n[i[s]]=[t.children[s]]:n[i[s]].push(t.children[s]);for(const s of Ze(n))n[s].length>1&&(this.setModified(),this.mergeNodes(t,n[s]))}}class Cze extends qz{constructor(t){super(),this.requiresSelectionId=t&&Bz(t)}run(t){t instanceof Jo&&(this.requiresSelectionId&&(Dz(t.parent)||t.parent instanceof Kl||t.parent instanceof Zn)||(this.setModified(),t.remove()))}}class Tze extends Az{optimize(t){return this.run(t,new Set),this.modifiedFlag}run(t,i){let n=new Set;t instanceof Oc&&(n=t.producedFields(),Cv(n,i)&&(this.setModified(),t.removeFormulas(i),t.producedFields.length===0&&t.remove()));for(const s of t.children)this.run(s,new Set([...i,...n]))}}class Mze extends qz{constructor(){super()}run(t){t instanceof os&&!t.isRequired()&&(this.setModified(),t.remove())}}class Kze extends Zd{run(t){if(!Dz(t)&&!(t.numChildren()>1)){for(const i of t.children)if(i instanceof Zn)if(t instanceof Zn)this.setModified(),t.merge(i);else{if(Tv(t.producedFields(),i.dependentFields()))continue;this.setModified(),i.swapWithParent()}}}}class Bze extends Zd{run(t){const i=[...t.children],n=t.children.filter(s=>s instanceof Zn);if(t.numChildren()>1&&n.length>=1){const s={},l=new Set;for(const c of n){const r=c.parse;for(const a of Ze(r))a in s?s[a]!==r[a]&&l.add(a):s[a]=r[a]}for(const c of l)delete s[c];if(!Bt(s)){this.setModified();const c=new Zn(t,s);for(const r of i){if(r instanceof Zn)for(const a of Ze(s))delete r.parse[a];t.removeChild(r),r.parent=c,r instanceof Zn&&Ze(r.parse).length===0&&r.remove()}}}}}class _ze extends Zd{run(t){t instanceof os||t.numChildren()>0||t instanceof Mb||t instanceof Au||(this.setModified(),t.remove())}}class Oze extends Zd{run(t){const i=t.children.filter(s=>s instanceof Oc),n=i.pop();for(const s of i)this.setModified(),n.merge(s)}}class jze extends Zd{run(t){const i=t.children.filter(s=>s instanceof Kl),n={};for(const s of i){const l=pt(s.groupBy);l in n||(n[l]=[]),n[l].push(s)}for(const s of Ze(n)){const l=n[s];if(l.length>1){const c=l.pop();for(const r of l)c.merge(r)&&(t.removeChild(r),r.parent=c,r.remove(),this.setModified())}}}}class Eze extends Zd{constructor(t){super(),this.model=t}run(t){const i=!(Dz(t)||t instanceof Tb||t instanceof Zn||t instanceof Jo),n=[],s=[];for(const l of t.children)l instanceof Ec&&(i&&!Tv(t.producedFields(),l.dependentFields())?n.push(l):s.push(l));if(n.length>0){const l=n.pop();for(const c of n)l.merge(c,this.model.renameSignal.bind(this.model));this.setModified(),t instanceof Ec?t.merge(l,this.model.renameSignal.bind(this.model)):l.swapWithParent()}if(s.length>1){const l=s.pop();for(const c of s)l.merge(c,this.model.renameSignal.bind(this.model));this.setModified()}}}class Pze extends Zd{run(t){const i=[...t.children];if(!Pm(i,c=>c instanceof os)||t.numChildren()<=1)return;const s=[];let l;for(const c of i)if(c instanceof os){let r=c;for(;r.numChildren()===1;){const[a]=r.children;if(a instanceof os)r=a;else break}s.push(...r.children),l?(t.removeChild(c),c.parent=l.parent,l.parent.removeChild(l),l.parent=r,this.setModified()):l=r}else s.push(c);if(s.length){this.setModified();for(const c of s)c.parent.removeChild(c),c.parent=l}}}class Wd extends Ct{clone(){return new Wd(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i}addDimensions(t){this.transform.groupby=Fc(this.transform.groupby.concat(t),i=>i)}dependentFields(){const t=new Set;
55return this.transform.groupby&&this.transform.groupby.forEach(t.add,t),this.transform.joinaggregate.map(i=>i.field).filter(i=>i!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){return t.as??ve(t)}hash(){return`JoinAggregateTransform ${pt(this.transform)}`}assemble(){const t=[],i=[],n=[];for(const l of this.transform.joinaggregate)i.push(l.op),n.push(this.getDefaultName(l)),t.push(l.field===void 0?null:l.field);const s=this.transform.groupby;return{type:"joinaggregate",as:n,ops:i,fields:t,...s!==void 0?{groupby:s}:{}}}}class cb extends Ct{clone(){return new cb(null,{...this.filter})}constructor(t,i){super(t),this.filter=i}static make(t,i,n){const{config:s,markDef:l}=i,{marks:c,scales:r}=n;if(c==="include-invalid-values"&&r==="include-invalid-values")return null;const a=i.reduceFieldDef((u,o,d)=>{const b=hr(d)&&i.getScaleComponent(d);if(b){const h=b.get("type"),{aggregate:p}=o,Z=pz({scaleChannel:d,markDef:l,config:s,scaleType:h,isCountAggregate:x1(p)});Z!=="show"&&Z!=="always-valid"&&(u[o.field]=o)}return u},{});return Ze(a).length?new cb(t,a):null}dependentFields(){return new Set(Ze(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${pt(this.filter)}`}assemble(){const t=Ze(this.filter).reduce((i,n)=>{const s=this.filter[n],l=ve(s,{expr:"datum"});return s!==null&&(s.type==="temporal"?i.push(`(isDate(${l}) || (${qV(l)}))`):s.type==="quantitative"&&i.push(qV(l))),i},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}function qV(e){return`isValid(${e}) && isFinite(+${e})`}function Uze(e){return e.stack.stackBy.reduce((t,i)=>{const n=i.fieldDef,s=ve(n);return s&&t.push(s),t},[])}function $ze(e){return fe(e)&&e.every(t=>He(t))&&e.length>1}class Ur extends Ct{clone(){return new Ur(null,Ae(this._stack))}constructor(t,i){super(t),this._stack=i}static makeFromTransform(t,i){const{stack:n,groupby:s,as:l,offset:c="zero"}=i,r=[],a=[];if(i.sort!==void 0)for(const d of i.sort)r.push(d.field),a.push(xi(d.order,"ascending"));const u={field:r,order:a};let o;return $ze(l)?o=l:He(l)?o=[l,`${l}_end`]:o=[`${i.stack}_start`,`${i.stack}_end`],new Ur(t,{dimensionFieldDefs:[],stackField:n,groupby:s,offset:c,sort:u,facetby:[],as:o})}static makeFromEncoding(t,i){const n=i.stack,{encoding:s}=i;if(!n)return null;const{groupbyChannels:l,fieldChannel:c,offset:r,impute:a}=n,u=l.map(h=>{const p=s[h];return Ul(p)}).filter(h=>!!h),o=Uze(i),d=i.encoding.order;let b;if(fe(d)||xe(d))b=V$(d);
vendor: 6,209 bytes, line 55
55else{const h=fQ(d)?d.sort:c==="y"?"descending":"ascending";b=o.reduce((p,Z)=>(p.field.includes(Z)||(p.field.push(Z),p.order.push(h)),p),{field:[],order:[]})}return new Ur(t,{dimensionFieldDefs:u,stackField:i.vgField(c),facetby:[],stackby:o,sort:b,offset:r,impute:a,as:[i.vgField(c,{suffix:"start",forAs:!0}),i.vgField(c,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;return t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add,t),this._stack.facetby.forEach(t.add,t),this._stack.sort.field.forEach(t.add,t),t}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${pt(this._stack)}`}getGroupbyFields(){const{dimensionFieldDefs:t,impute:i,groupby:n}=this._stack;return t.length>0?t.map(s=>s.bin?i?[ve(s,{binSuffix:"mid"})]:[ve(s,{}),ve(s,{binSuffix:"end"})]:[ve(s)]).flat():n??[]}assemble(){const t=[],{facetby:i,dimensionFieldDefs:n,stackField:s,stackby:l,sort:c,offset:r,impute:a,as:u}=this._stack;if(a)for(const o of n){const{bandPosition:d=.5,bin:b}=o;if(b){const h=ve(o,{expr:"datum"}),p=ve(o,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:`${qV(h)} ? ${d}*${h}+${1-d}*${p} : ${h}`,as:ve(o,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:s,groupby:[...l,...i],key:ve(o,{binSuffix:"mid"}),method:"value",value:0})}return t.push({type:"stack",groupby:[...this.getGroupbyFields(),...i],field:s,sort:c,as:u,offset:r}),t}}class Kb extends Ct{clone(){return new Kb(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i}addDimensions(t){this.transform.groupby=Fc(this.transform.groupby.concat(t),i=>i)}dependentFields(){const t=new Set;return(this.transform.groupby??[]).forEach(t.add,t),(this.transform.sort??[]).forEach(i=>t.add(i.field)),this.transform.window.map(i=>i.field).filter(i=>i!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){return t.as??ve(t)}hash(){return`WindowTransform ${pt(this.transform)}`}assemble(){const t=[],i=[],n=[],s=[];for(const d of this.transform.window)i.push(d.op),n.push(this.getDefaultName(d)),s.push(d.param===void 0?null:d.param),t.push(d.field===void 0?null:d.field);const l=this.transform.frame,c=this.transform.groupby;if(l&&l[0]===null&&l[1]===null&&i.every(d=>$v(d)))return{type:"joinaggregate",as:n,ops:i,fields:t,...c!==void 0?{groupby:c}:{}};const r=[],a=[];if(this.transform.sort!==void 0)for(const d of this.transform.sort)r.push(d.field),a.push(d.order??"ascending");const u={field:r,order:a},o=this.transform.ignorePeers;return{type:"window",params:s,as:n,ops:i,fields:t,sort:u,...o!==void 0?{ignorePeers:o}:{},...c!==void 0?{groupby:c}:{},...l!==void 0?{frame:l}:{}}}}function Qze(e){function t(i){if(!(i instanceof Mb)){const n=i.clone();if(n instanceof os){const s=tI+n.getSource();n.setSource(s),e.model.component.data.outputNodes[s]=n}else(n instanceof Kl||n instanceof Ur||n instanceof Kb||n instanceof Wd)&&n.addDimensions(e.fields);for(const s of i.children.flatMap(t))s.parent=n;return[n]}return i.children.flatMap(t)}return t}function eI(e){if(e instanceof Mb)if(e.numChildren()===1&&!(e.children[0]instanceof os)){const t=e.children[0];(t instanceof Kl||t instanceof Ur||t instanceof Kb||t instanceof Wd)&&t.addDimensions(e.fields),t.swapWithParent(),eI(e)}else{const t=e.model.component.data.main;dD(t);const i=Qze(e),n=e.children.map(i).flat();for(const s of n)s.parent=t}else e.children.map(eI)}function dD(e){if(e instanceof os&&e.type===mi.Main&&e.numChildren()===1){const t=e.children[0];t instanceof Mb||(t.swapWithParent(),dD(e))}}const tI="scale_",$y=5;function iI(e){for(const t of e){for(const i of t.children)if(i.parent!==t)return!1;if(!iI(t.children))return!1}return!0}function Yl(e,t){let i=!1;for(const n of t)i=e.optimize(n)||i;return i}function OL(e,t,i){let n=e.sources,s=!1;return s=Yl(new Mze,n)||s,s=Yl(new Cze(t),n)||s,n=n.filter(l=>l.numChildren()>0),s=Yl(new _ze,n)||s,n=n.filter(l=>l.numChildren()>0),i||(s=Yl(new Kze,n)||s,s=Yl(new Eze(t),n)||s,s=Yl(new Tze,n)||s,s=Yl(new Bze,n)||s,s=Yl(new jze,n)||s,s=Yl(new Oze,n)||s,s=Yl(new Lze,n)||s,s=Yl(new Pze,n)||s),e.sources=n,s}function Dze(e,t){iI(e.sources);let i=0,n=0;for(let s=0;s<$y&&OL(e,t,!0);s++)i++;e.sources.map(eI);for(let s=0;s<$y&&OL(e,t,!1);s++)n++;iI(e.sources),Math.max(i,n)===$y&&Xe(`Maximum optimization runs(${$y}) reached.`)}class Ki{constructor(t){Object.defineProperty(this,"signal",{enumerable:!0,get:t})}static fromName(t,i){return new Ki(()=>t(i))}}function mD(e){di(e)?Aze(e):qze(e)}function Aze(e){const t=e.component.scales;for(const i of Ze(t)){const n=twe(e,i);if(t[i].setWithExplicit("domains",n),nwe(e,i),e.component.data.isFaceted){let l=e;for(;!Ss(l)&&l.parent;)l=l.parent;if(l.component.resolve.scale[i]==="shared")for(const r of n.value)Cr(r)&&(r.data=tI+r.data.replace(tI,""))}}}function qze(e){for(const i of e.children)mD(i);const t=e.component.scales;for(const i of Ze(t)){let n,s=null;for(const l of e.children){const c=l.component.scales[i];if(c){n===void 0?n=c.getWithExplicit("domains"):n=Xo(n,c.getWithExplicit("domains"),"domains","scale",nI);const r=c.get("selectionExtent");s&&r&&s.param!==r.param&&Xe(FGe),s=r}}t[i].setWithExplicit("domains",n),s&&t[i].set("selectionExtent",s,!0)}}function ewe(e,t,i,n){if(e==="unaggregated"){const{valid:s,reason:l}=jL(t,i);if(!s){Xe(l);return}}else if(e===void 0&&n.useUnaggregatedDomain){const{valid:s}=jL(t,i);if(s)return"unaggregated"}return e}function twe(e,t){const i=e.getScaleComponent(t).get("type"),{encoding:n}=e,s=ewe(e.scaleDomain(t),e.typedFieldDef(t),i,e.config.scale);return s!==e.scaleDomain(t)&&(e.specifiedScales[t]={...e.specifiedScales[t],domain:s}),t==="x"&&Fi(n.x2)?Fi(n.x)?Xo(za(i,s,e,"x"),za(i,s,e,"x2"),"domain","scale",nI):za(i,s,e,"x2"):t==="y"&&Fi(n.y2)?Fi(n.y)?Xo(za(i,s,e,"y"),za(i,s,e,"y2"),"domain","scale",nI):za(i,s,e,"y2"):za(i,s,e,t)}function iwe(e,t,i){return e.map(n=>({signal:`{data: ${F1(n,{timeUnit:i,type:t})}}`}))}function RY(e,t,i){var s;const n=(s=Ei(i))==null?void 0:s.unit;return t==="temporal"||n?iwe(e,t,n):[e]}function za(e,t,i,n){const{encoding:s,markDef:l,mark:c,config:r,stack:a}=i,u=Fi(s[n]),{type:o}
55=u,d=u.timeUnit,b=T5e({invalid:er("invalid",l,r),isPath:Fo(c)});if(rIe(t)){const Z=za(e,void 0,i,n),X=RY(t.unionWith,o,d);return Ic([...X,...Z.value])}else{if(Ce(t))return Ic([t]);if(t&&t!=="unaggregated"&&!A$(t))return Ic(RY(t,o,d))}if(a&&n===a.fieldChannel){if(a.offset==="normalize")return Ys([[0,1]]);const Z=i.requestDataName(b);return Ys([{data:Z,field:i.vgField(n,{suffix:"start"})},{data:Z,field:i.vgField(n,{suffix:"end"})}])}const h=hr(n)&&xe(u)?swe(i,n,e):void 0;if(fr(u)){const Z=RY([u.datum],o,d);return Ys(Z)}const p=u;if(t==="unaggregated"){const{field:Z}=u;return Ys([{data:i.requestDataName(b),field:ve({field:Z,aggregate:"min"})},{data:i.requestDataName(b),field:ve({field:Z,aggregate:"max"})}])}else if(Dt(p.bin)){if(Ui(e))return Ys(e==="bin-ordinal"?[]:[{data:cp(h)?i.requestDataName(b):i.requestDataName(mi.Raw),field:i.vgField(n,G0(p,n)?{binSuffix:"range"}:{}),sort:h===!0||!we(h)?{field:i.vgField(n,{}),op:"min"}:h}]);{const{bin:Z}=p;if(Dt(Z)){const X=Qz(i,p.field,Z);return Ys([new Ki(()=>{const J=i.getSignalName(X);return`[${J}.start, ${J}.stop]`})])}else return Ys([{data:i.requestDataName(b),field:i.vgField(n,{})}])}}else if(p.timeUnit&&ht(["time","utc"],e)){const Z=s[br(n)];if(hQ(p,Z,l,r)){const X=i.requestDataName(b),J=Wo({fieldDef:p,fieldDef2:Z,markDef:l,config:r}),V=ap(c)&&J!==.5&&Yi(n);return Ys([{data:X,field:i.vgField(n,V?{suffix:K1}:{})},{data:X,field:i.vgField(n,{suffix:V?B1:"end"})}])}}return Ys(h?[{data:cp(h)?i.requestDataName(b):i.requestDataName(mi.Raw),field:i.vgField(n),sort:h}]:[{data:i.requestDataName(b),field:i.vgField(n)}])}function kY(e,t){const{op:i,field:n,order:s}=e;return{op:i??(t?"sum":H1),...n?{field:hl(n)}:{},...s?{order:s}:{}}}function nwe(e,t){var r;const i=e.component.scales[t],n=e.specifiedScales[t].domain,s=(r=e.fieldDef(t))==null?void 0:r.bin,l=A$(n)?n:void 0,c=md(s)&&Y1(s.extent)?s.extent:void 0;(l||c)&&i.set("selectionExtent",l??c,!0)}function swe(e,t,i){if(!Ui(i))return;const n=e.fieldDef(t),s=n.sort;if(mQ(s))return{op:"min",field:sb(n,t),order:"ascending"};const{stack:l}=e,c=l?new Set([...l.groupbyFields,...l.stackBy.map(r=>r.fieldDef.field)]):void 0;if(Er(s)){const r=l&&!c.has(s.field);return kY(s,r)}else if(TIe(s)){const{encoding:r,order:a}=s,u=e.fieldDef(r),{aggregate:o,field:d}=u,b=l&&!c.has(d);if(ea(o)||ko(o))return kY({field:ve(u),order:a},b);if($v(o)||!o)return kY({op:o,field:d,order:a},b)}else{if(s==="descending")return{op:"min",field:e.vgField(t),order:"descending"};if(ht(["ascending",void 0],s))return!0}}function jL(e,t){const{aggregate:i,type:n}=e;return i?He(i)&&!ZGe.has(i)?{valid:!1,reason:uVe(i)}:n==="quantitative"&&t==="log"?{valid:!1,reason:dVe(e)}:{valid:!0}:{valid:!1,reason:oVe(e)}}function nI(e,t,i,n){return e.explicit&&t.explicit&&Xe(pVe(i,n,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function lwe(e){const t=Fc(e.map(c=>{if(Cr(c)){const{sort:r,...a}=c;return a}return c}),pt),i=Fc(e.map(c=>{if(Cr(c)){const r=c.sort;return r!==void 0&&!cp(r)&&("op"in r&&r.op==="count"&&delete r.field,r.order==="ascending"&&delete r.order),r}}).filter(c=>c!==void 0),pt);if(t.length===0)return;if(t.length===1){const c=e[0];if(Cr(c)&&i.length>0){let r=i[0];if(i.length>1){Xe(PS);const a=i.filter(u=>we(u)&&"op"in u&&u.op!=="min");i.every(u=>we(u)&&"op"in u)&&a.length===1?r=a[0]:r=!0}else if(we(r)&&"field"in r){const a=r.field;c.field===a&&(r=r.order?{order:r.order}:!0)}return{...c,sort:r}}return c}const n=Fc(i.map(c=>cp(c)||!("op"in c)||He(c.op)&&Re(hGe,c.op)?c:(Xe(ZVe(c)),!0)),pt);let s;n.length===1?s=n[0]:n.length>1&&(Xe(PS),s=!0);const l=Fc(e.map(c=>Cr(c)?c.data:null),c=>c);return l.length===1&&l[0]!==null?{data:l[0],fields:t.map(r=>r.field),...s?{sort:s}:{}}:{fields:t,...s?{sort:s}:{}}}function ew(e){if(Cr(e)&&He(e.field))return e.field;if(WGe(e)){let t;for(const i of e.fields)if(Cr(i)&&He(i.field)){if(!t)t=i.field;else if(t!==i.field)return Xe(WVe),t}return Xe(XVe),t}else if(XGe(e)){Xe(JVe);const t=e.fields[0];return He(t)?t:void 0}}function D1(e,t){const n=e.component.scales[t].get("domains").map(s=>(Cr(s)&&(s.data=e.lookupDataSource(s.data)),s));return lwe(n)}function bD(e){return Bb(e)||tw(e)?e.children.reduce((t,i)=>t.concat(bD(i)),EL(e)):EL(e)}function EL(e){return Ze(e.component.scales).reduce((t,i)=>{const n=e.component.scales[i];if(n.merged)return t;const s=n.combine(),{name:l,type:c,selectionExtent:r,domains:a,range:u,reverse:o,...d}=s,b=cwe(s.range,l,i,e),h=D1(e,i),p=r?Q5e(e,r,n,h):null;return t.push({name:l,type:c,...h?{domain:h}:{},...p?{domainRaw:p}:{},range:b,...o!==void 0?{reverse:o}:{},...d}),t},[])}function cwe(e,t,i,n){if(Yi(i)){if(bd(e))return{step:{signal:`${t}_step`}}}else if(we(e)&&Cr(e))return{...e,data:n.lookupDataSource(e.data)};return e}class hD extends ba{constructor(t,i){super({},{name:t}),this.merged=!1,this.setWithExplicit("type",i)}domainHasZero(){const t=this.get("type");if(ht([en.LOG,en.TIME,en.UTC],t))return"definitely-not";const i=this.get("zero");if(i===!0||i===void 0&&ht([en.LINEAR,en.SQRT,en.POW],t))return"definitely";const n=this.get("domains");if(n.length>0){let s=!1,l=!1,c=!1;for(const r of n){if(fe(r)){const a=r[0],u=r[r.length-1];if(zt(a)&&zt(u))if(a<=0&&u>=0){s=!0;continue}else{l=!0;continue}}c=!0}if(s)return"definitely";if(l&&!c)return"definitely-not"}return"maybe"}}const rwe=["range","scheme"];function awe(e){const t=e.component.scales;for(const i of Uv){const n=t[i];if(!n)continue;const s=owe(i,e);n.setWithExplicit("range",s)}}function PL(e,t){const i=e.fieldDef(t);if(i!=null&&i.bin){const{bin:n,field:s}=i,l=ps(t),c=e.getName(l);
vendor: 34,015 bytes, line 55
55if(we(n)&&n.binned&&n.step!==void 0)return new Ki(()=>{const r=e.scaleName(t),a=`(domain("${r}")[1] - domain("${r}")[0]) / ${n.step}`;return`${e.getSignalName(c)} / (${a})`});if(Dt(n)){const r=Qz(e,s,n);return new Ki(()=>{const a=e.getSignalName(r),u=`(${a}.stop - ${a}.start) / ${a}.step`;return`${e.getSignalName(c)} / (${u})`})}}}function owe(e,t){const i=t.specifiedScales[e],{size:n}=t,l=t.getScaleComponent(e).get("type");for(const d of rwe)if(i[d]!==void 0){const b=FV(l,d),h=q$(e,d);if(!b)Xe(N$(l,d,e));else if(h)Xe(h);else switch(d){case"range":{const p=i.range;if(fe(p)){if(Yi(e))return Ic(p.map(Z=>{if(Z==="width"||Z==="height"){const X=t.getName(Z),J=t.getSignalName.bind(t);return Ki.fromName(J,X)}return Z}))}else if(we(p))return Ic({data:t.requestDataName(mi.Main),field:p.field,sort:{op:"min",field:t.vgField(e)}});return Ic(p)}case"scheme":return Ic(uwe(i[d]))}}const c=e===ri||e==="xOffset"?"width":"height",r=n[c];if(ir(r)){if(Yi(e))if(Ui(l)){const d=pD(r,t,e);if(d)return Ic({step:d})}else Xe(R$(c));else if(y0(e)){const d=e===vo?"x":"y";if(t.getScaleComponent(d).get("type")==="band"){const p=yD(r,l);if(p)return Ic(p)}}}const{rangeMin:a,rangeMax:u}=i,o=dwe(e,t);return(a!==void 0||u!==void 0)&&FV(l,"rangeMin")&&fe(o)&&o.length===2?Ic([a??o[0],u??o[1]]):Ys(o)}function uwe(e){return cIe(e)?{scheme:e.name,...as(e,["name"])}:{scheme:e}}function fD(e,t,i,{center:n}={}){const s=ps(e),l=t.getName(s),c=t.getSignalName.bind(t);return e===$i&&El(i)?n?[Ki.fromName(r=>`${c(r)}/2`,l),Ki.fromName(r=>`-${c(r)}/2`,l)]:[Ki.fromName(c,l),0]:n?[Ki.fromName(r=>`-${c(r)}/2`,l),Ki.fromName(r=>`${c(r)}/2`,l)]:[0,Ki.fromName(c,l)]}function dwe(e,t){const{size:i,config:n,mark:s,encoding:l}=t,{type:c}=Fi(l[e]),a=t.getScaleComponent(e).get("type"),{domain:u,domainMid:o}=t.specifiedScales[e];switch(e){case ri:case $i:{if(ht(["point","band"],a)){const d=ZD(e,i,n.view);if(ir(d))return{step:pD(d,t,e)}}return fD(e,t,a)}case vo:case Sb:return mwe(e,t,a);case oa:{const d=fwe(s,n),b=pwe(s,i,t,n);return Dm(a)?hwe(d,b,bwe(a,n,u,e)):[d,b]}case yl:return[0,Math.PI*2];case ud:return[0,360];case rc:return[0,new Ki(()=>{const d=t.getSignalName(Ss(t.parent)?"child_width":"width"),b=t.getSignalName(Ss(t.parent)?"child_height":"height");return`min(${d},${b})/2`})];case zo:return{step:1e3/n.scale.framesPerSecond};case No:return[n.scale.minStrokeWidth,n.scale.maxStrokeWidth];case Ro:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case fs:return"symbol";case hs:case dr:case mr:return a==="ordinal"?c==="nominal"?"category":"ordinal":o!==void 0?"diverging":s==="rect"||s==="geoshape"?"heatmap":"ramp";case ua:case wo:case Ho:return[n.scale.minOpacity,n.scale.maxOpacity]}}function pD(e,t,i){const{encoding:n}=t,s=t.getScaleComponent(i),l=Ov(i),c=n[l];if(EQ({step:e,offsetIsDiscrete:tt(c)&&P$(c.type)})==="offset"&&IQ(n,l)){const a=t.getScaleComponent(l);let o=`domain('${t.scaleName(l)}').length`;if(a.get("type")==="band"){const b=a.get("paddingInner")??a.get("padding")??0,h=a.get("paddingOuter")??a.get("padding")??0;o=`bandspace(${o}, ${b}, ${h})`}const d=s.get("paddingInner")??s.get("padding");return{signal:`${e.step} * ${o} / (1-${GGe(d)})`}}else return e.step}function yD(e,t){if(EQ({step:e,offsetIsDiscrete:Ui(t)})==="offset")return{step:e.step}}function mwe(e,t,i){const n=e===vo?"x":"y",s=t.getScaleComponent(n);if(!s)return fD(n,t,i,{center:!0});const l=s.get("type"),c=t.scaleName(n),{markDef:r,config:a}=t;if(l==="band"){const u=ZD(n,t.size,t.config.view);if(ir(u)){const o=yD(u,i);if(o)return o}return[0,{signal:`bandwidth('${c}')`}]}else{const u=t.encoding[n];if(xe(u)&&u.timeUnit){const o=_$(u.timeUnit,p=>`scale('${c}', ${p})`),d=t.config.scale.bandWithNestedOffsetPaddingInner,b=Wo({fieldDef:u,markDef:r,config:a})-.5,h=b!==0?` + ${b}`:"";if(d){const p=Ce(d)?`${d.signal}/2`+h:`${d/2+b}`,Z=Ce(d)?`(1 - ${d.signal}/2)`+h:`${1-d/2+b}`;return[{signal:`${p} * (${o})`},{signal:`${Z} * (${o})`}]}return[0,{signal:o}]}return e$(`Cannot use ${e} scale if ${n} scale is not discrete.`)}}function ZD(e,t,i){const n=e===ri?"width":"height",s=t[n];return s||HX(i,n)}function bwe(e,t,i,n){switch(e){case"quantile":return t.scale.quantileCount;case"quantize":return t.scale.quantizeCount;case"threshold":return i!==void 0&&fe(i)?i.length+1:(Xe(wVe(n)),3)}}function hwe(e,t,i){const n=()=>{const s=Fl(t),l=Fl(e),c=`(${s} - ${l}) / (${i} - 1)`;return`sequence(${l}, ${s} + ${c}, ${c})`};return Ce(t)?new Ki(n):{signal:n()}}function fwe(e,t){switch(e){case"bar":case"tick":return t.scale.minBandSize;case"line":case"trail":case"rule":return t.scale.minStrokeWidth;case"text":return t.scale.minFontSize;case"point":case"square":case"circle":return t.scale.minSize}throw new Error(G1("size",e))}const UL=.95;function pwe(e,t,i,n){const s={x:PL(i,"x"),y:PL(i,"y")};switch(e){case"bar":case"tick":{if(n.scale.maxBandSize!==void 0)return n.scale.maxBandSize;const l=$L(t,s,n.view);return zt(l)?l-1:new Ki(()=>`${l.signal} - 1`)}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const l=$L(t,s,n.view);return zt(l)?Math.pow(UL*l,2):new Ki(()=>`pow(${UL} * ${l.signal}, 2)`)}}throw new Error(G1("size",e))}function $L(e,t,i){const n=ir(e.width)?e.width.step:TV(i,"width"),s=ir(e.height)?e.height.step:TV(i,"height");return t.x||t.y?new Ki(()=>`min(${[t.x?t.x.signal:n,t.y?t.y.signal:s].join(", ")})`):Math.min(n,s)}function WD(e,t){di(e)?ywe(e,t):JD(e,t)}function ywe(e,t){const i=e.component.scales,{config:n,encoding:s,markDef:l,specifiedScales:c}=e;for(const r of Ze(i)){const a=c[r],u=i[r],o=e.getScaleComponent(r),d=Fi(s[r]),b=a[t],h=o.get("type"),p=o.get("padding"),Z=o.get("paddingInner"),X=FV(h,t),J=q$(r,t);if(b!==void 0&&(X?J&&Xe(J):Xe(N$(h,t,r))),X&&J===void 0)if(b!==void 0){const V=d.timeUnit,g=d.type;switch(t){case"domainMax":case"domainMin":hd(a[t])||g==="temporal"||V?u.set(t,{signal:F1(a[t],{type:g,timeUnit:V})},!0):u.set(t,a[t],!0);break;default:u.copyKeyFromObject(t,a)}}else{const V=We(QL,t)?QL[t]({model:e,channel:r,fieldOrDatumDef:d,scaleType:h,scalePadding:p,scalePaddingInner:Z,domain:a.domain,domainMin:a.domainMin,domainMax:a.domainMax,markDef:l,config:n,hasNestedOffsetScale:gQ(s,r),hasSecondaryRangeChannel:!!s[br(r)]}):n.scale[t];V!==void 0&&u.set(t,V,!1)}}}const QL={bins:({model:e,fieldOrDatumDef:t})=>xe(t)?Zwe(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>Wwe(e,t.type),nice:({scaleType:e,channel:t,domain:i,domainMin:n,domainMax:s,fieldOrDatumDef:l})=>Xwe(e,t,i,n,s,l),padding:({channel:e,scaleType:t,fieldOrDatumDef:i,markDef:n,config:s})=>Jwe(e,t,s.scale,i,n,s.bar),paddingInner:({scalePadding:e,channel:t,markDef:i,scaleType:n,config:s,hasNestedOffsetScale:l})=>xwe(e,t,i.type,n,s.scale,l),paddingOuter:({scalePadding:e,channel:t,scaleType:i,scalePaddingInner:n,config:s,hasNestedOffsetScale:l})=>Ywe(e,t,i,n,s.scale,l),reverse:({fieldOrDatumDef:e,scaleType:t,channel:i,config:n})=>{const s=xe(e)?e.sort:void 0;return Gwe(t,s,i,n.scale)},zero:({channel:e,fieldOrDatumDef:t,domain:i,markDef:n,scaleType:s,config:l,hasSecondaryRangeChannel:c})=>Vwe(e,t,i,n,s,l.scale,c)};function XD(e){di(e)?awe(e):JD(e,"range")}function JD(e,t){const i=e.component.scales;for(const n of e.children)t==="range"?XD(n):WD(n,t);for(const n of Ze(i)){let s;for(const l of e.children){const c=l.component.scales[n];if(c){const r=c.getWithExplicit(t);s=Xo(s,r,t,"scale",l7((a,u)=>{switch(t){case"range":return a.step&&u.step?a.step-u.step:0}return 0}))}}i[n].setWithExplicit(t,s)}}function Zwe(e,t){const i=t.bin;if(Dt(i)){const n=Qz(e,t.field,i);return new Ki(()=>e.getSignalName(n))}else if(Ai(i)&&md(i)&&i.step!==void 0)return{step:i.step}}function Wwe(e,t){if(ht([hs,dr,mr],e)&&t!=="nominal")return"hcl"}function Xwe(e,t,i,n,s,l){var c;if(!((c=Ul(l))!=null&&c.bin||fe(i)||s!=null||n!=null||ht([en.TIME,en.UTC],e)))return Yi(t)?!0:void 0}function Jwe(e,t,i,n,s,l){if(Yi(e)){if(Sc(t)){if(i.continuousPadding!==void 0)return i.continuousPadding;const{type:c,orient:r}=s;if(c==="bar"&&!(xe(n)&&(n.bin||n.timeUnit))&&(r==="vertical"&&e==="x"||r==="horizontal"&&e==="y"))return l.continuousBandSize}if(t===en.POINT)return i.pointPadding}}function xwe(e,t,i,n,s,l=!1){if(e===void 0){if(Yi(t)){const{bandPaddingInner:c,barBandPaddingInner:r,rectBandPaddingInner:a,tickBandPaddingInner:u,bandWithNestedOffsetPaddingInner:o}=s;return l?o:xi(c,i==="bar"?r:i==="tick"?u:a)}else if(y0(t)&&n===en.BAND)return s.offsetBandPaddingInner}}function Ywe(e,t,i,n,s,l=!1){if(e===void 0){if(Yi(t)){const{bandPaddingOuter:c,bandWithNestedOffsetPaddingOuter:r}=s;if(l)return r;if(i===en.BAND)return xi(c,Ce(n)?{signal:`${n.signal}/2`}:n/2)}else if(y0(t)){if(i===en.POINT)return .5;if(i===en.BAND)return s.offsetBandPaddingOuter}}}function Gwe(e,t,i,n){if(i==="x"&&n.xReverse!==void 0)return El(e)&&t==="descending"?Ce(n.xReverse)?{signal:`!${n.xReverse.signal}`}:!n.xReverse:n.xReverse;if(El(e)&&t==="descending")return!0}function Vwe(e,t,i,n,s,l,c){if(!!i&&i!=="unaggregated"&&El(s)){if(fe(i)){const a=i[0],u=i[i.length-1];if(zt(a)&&a<=0&&zt(u)&&u>=0)return!0}return!1}if(e==="size"&&t.type==="quantitative"&&!Dm(s))return!0;if(!(xe(t)&&t.bin)&&ht([...da,...lGe],e)){const{orient:a,type:u}=n;return ht(["bar","area","line","trail"],u)&&(a==="horizontal"&&e==="y"||a==="vertical"&&e==="x")?!1:ht(["bar","area"],u)&&!c?!0:l==null?void 0:l.zero}return!1}function Iwe(e,t,i,n,s=!1){const l=gwe(t,i,n,s),{type:c}=e;return hr(t)?c!==void 0?bIe(t,c)?xe(i)&&!mIe(c,i.type)?(Xe(hVe(c,l)),l):c:(Xe(bVe(t,c,l)),l):l:null}function gwe(e,t,i,n){var s;switch(t.type){case"nominal":case"ordinal":{if(Ym(e)||WY(e)==="discrete")return e==="shape"&&t.type==="ordinal"&&Xe(XY(e,"ordinal")),"ordinal";if(ZY(e))return"band";if(Yi(e)||y0(e)){if(ht(["rect","bar","image","rule","tick"],i.type)||n)return"band"}else if(i.type==="arc"&&e in Pv)return"band";const l=i[ps(e)];return Eu(l)||qm(t)&&((s=t.axis)!=null&&s.tickBand)?"band":"point"}case"temporal":return Ym(e)?"time":WY(e)==="discrete"?(Xe(XY(e,"temporal")),"ordinal"):xe(t)&&t.timeUnit&&Ei(t.timeUnit).utc?"utc":ZY(e)?"band":"time";case"quantitative":return Ym(e)?xe(t)&&Dt(t.bin)?"bin-ordinal":"linear":WY(e)==="discrete"?(Xe(XY(e,"quantitative")),"ordinal"):ZY(e)?"band":"linear";case"geojson":return}throw new Error(w$(t.type))}function vwe(e,{ignoreRange:t}={}){xD(e),mD(e);for(const i of dIe)WD(e,i);t||XD(e)}function xD(e){di(e)?e.component.scales=zwe(e):e.component.scales=Hwe(e)}function zwe(e){const{encoding:t,mark:i,markDef:n}=e,s={};for(const l of Uv){const c=Fi(t[l]);if(c&&i===iQ&&l===fs&&c.type===Lb)continue;let r=c&&c.scale;if(c&&r!==null&&r!==!1){r??(r={});const a=gQ(t,l),u=Iwe(r,l,c,n,a);s[l]=new hD(e.scaleName(`${l}`,!0),{value:u,explicit:r.type===u})}}return s}const wwe=l7((e,t)=>$S(e)-$S(t));function Hwe(e){var t;const i=e.component.scales={},n={},s=e.component.resolve;for(const l of e.children){xD(l);for(const c of Ze(l.component.scales))if((t=s.scale)[c]??(t[c]=q7(c,e)),s.scale[c]==="shared"){const r=n[c],a=l.component.scales[c].getWithExplicit("type");r?tIe(r.value,a.value)?n[c]=Xo(r,a,"type","scale",wwe):(s.scale[c]="independent",delete n[c]):n[c]=a}}for(const l of Ze(n)){const c=e.scaleName(l,!0),r=n[l];i[l]=new hD(c,r);for(const a of e.children){const u=a.component.scales[l];u&&(a.renameScale(u.get("name"),c),u.merged=!0)}}return i}class FY{constructor(){this.nameMap={}}rename(t,i){this.nameMap[t]=i}has(t){return this.nameMap[t]!==void 0}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function di(e){return(e==null?void 0:e.type)==="unit"}function Ss(e){return(e==null?void 0:e.type)==="facet"}function tw(e){return(e==null?void 0:e.type)==="concat"}function Bb(e){return(e==null?void 0:e.type)==="layer"}class iw{constructor(t,i,n,s,l,c,r){this.type=i,this.parent=n,this.config=l,this.parent=n,this.config=l,this.view=qi(r),this.name=t.name??s,this.title=Fa(t.title)?{text:t.title}:t.title?qi(t.title):void 0,this.scaleNameMap=n?n.scaleNameMap:new FY,this.projectionNameMap=n?n.projectionNameMap:new FY,this.signalNameMap=n?n.signalNameMap:new FY,this.data=t.data,this.description=t.description,this.transforms=g5e(t.transform??[]),this.layout=i==="layer"||i==="unit"?{}:H3e(t,i,l),this.component={data:{sources:n?n.component.data.sources:[],outputNodes:n?n.component.data.outputNodes:{},outputNodeRefCounts:n?n.component.data.outputNodeRefCounts:{},isFaceted:N1(t)||(n==null?void 0:n.component.data.isFaceted)&&t.data===void 0},layoutSize:new ba,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...c?Ae(c):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){vwe(this)}parseProjection(){oD(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){sD(this)}assembleEncodeFromView(t){const{style:i,...n}=t,s={};for(const l of Ze(n)){const c=n[l];c!==void 0&&(s[l]=ti(c))}return s}assembleGroupEncodeEntry(t){let i={};return this.view&&(i=this.assembleEncodeFromView(this.view)),!t&&(this.description&&(i.description=ti(this.description)),this.type==="unit"||this.type==="layer")?{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...i}:Bt(i)?void 0:i}assembleLayout(){if(!this.layout)return;const{spacing:t,...i}=this.layout,{component:n,config:s}=this,l=Dve(n.layoutHeaders,s);return{padding:t,...this.assembleDefaultLayout(),...i,...l?{titleBand:l}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let i=[];for(const n of sl)t[n].title&&i.push(jve(this,n));for(const n of Ez)i=i.concat(Eve(this,n));return i}assembleAxes(){return Nve(this.component.axes,this.config)}assembleLegends(){return cD(this)}assembleProjections(){return Xze(this)}assembleTitle(){const{encoding:t,...i}=this.title??{},n={...J$(this.config.title).nonMarkTitleProperties,...i,...t?{encode:{update:t}}:{}};if(n.text)return ht(["unit","layer"],this.type)?ht(["middle",void 0],n.anchor)&&(n.frame??(n.frame="group")):n.anchor??(n.anchor="start"),Bt(n)?void 0:n}assembleGroup(t=[]){const i={};t=t.concat(this.assembleSignals()),t.length>0&&(i.signals=t);const n=this.assembleLayout();n&&(i.layout=n),i.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const s=!this.parent||Ss(this.parent)?bD(this):[];s.length>0&&(i.scales=s);const l=this.assembleAxes();l.length>0&&(i.axes=l);const c=this.assembleLegends();return c.length>0&&(i.legends=c),i}getName(t){return ci((this.name?`${this.name}_`:"")+t)}getDataName(t){return this.getName(mi[t].toLowerCase())}requestDataName(t){const i=this.getDataName(t),n=this.component.data.outputNodeRefCounts;return n[i]=(n[i]||0)+1,i}getSizeSignalRef(t){if(Ss(this.parent)){const i=D7(t),n=J1(i),s=this.component.scales[n];if(s&&!s.merged){const l=s.get("type"),c=s.get("range");if(Ui(l)&&bd(c)){const r=s.get("name"),a=D1(this,n),u=ew(a);if(u){const o=ve({aggregate:"distinct",field:u},{expr:"datum"});return{signal:Q7(r,s,o)}}else return Xe(Dv(n)),null}}}return{signal:this.signalNameMap.get(this.getName(t))}}lookupDataSource(t){const i=this.component.data.outputNodes[t];return i?i.getSource():t}getSignalName(t){return this.signalNameMap.get(t)}renameSignal(t,i){this.signalNameMap.rename(t,i)}renameScale(t,i){this.scaleNameMap.rename(t,i)}renameProjection(t,i){this.projectionNameMap.rename(t,i)}scaleName(t,i){if(i)return this.getName(t);if(b$(t)&&hr(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t)))return this.scaleNameMap.get(this.getName(t))}projectionName(t){if(t)return this.getName("projection");if(this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection")))return this.projectionNameMap.get(this.getName("projection"))}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const i=this.component.scales[t];return i&&!i.merged?i:this.parent?this.parent.getScaleComponent(t):void 0}getScaleType(t){const i=this.getScaleComponent(t);return i?i.get("type"):void 0}getSelectionComponent(t,i){let n=this.component.selection[t];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(t,i)),!n)throw new Error(zGe(i));return n}hasAxisOrientSignalRef(){var t,i;return((t=this.component.axes.x)==null?void 0:t.some(n=>n.hasOrientSignalRef()))||((i=this.component.axes.y)==null?void 0:i.some(n=>n.hasOrientSignalRef()))}}class YD extends iw{vgField(t,i={}){const n=this.fieldDef(t);if(n)return ve(n,i)}reduceFieldDef(t,i){return c3e(this.getMapping(),(n,s,l)=>{const c=Ul(s);return c?t(n,c,l):n},i)}forEachFieldDef(t,i){Vz(this.getMapping(),(n,s)=>{const l=Ul(n);l&&t(l,s)},i)}}class A1 extends Ct{clone(){return new A1(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const n=this.transform.as??[void 0,void 0];this.transform.as=[n[0]??"value",n[1]??"density"];const s=this.transform.resolve??"shared";this.transform.resolve=s}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${pt(this.transform)}`}assemble(){const{density:t,...i}=this.transform,n={type:"kde",field:t,...i};return n.resolve=this.transform.resolve,n}}class q1 extends Ct{clone(){return new q1(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${pt(this.transform)}`}assemble(){const{extent:t,param:i}=this.transform;return{type:"extent",field:t,signal:i}}}class eJ extends Ct{clone(){return new eJ(this.parent,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const{flatten:n,as:s=[]}=this.transform;this.transform.as=n.map((l,c)=>s[c]??l)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${pt(this.transform)}`}assemble(){const{flatten:t,as:i}=this.transform;return{type:"flatten",fields:t,as:i}}}class tJ extends Ct{clone(){return new tJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const n=this.transform.as??[void 0,void 0];this.transform.as=[n[0]??"key",n[1]??"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${pt(this.transform)}`}assemble(){const{fold:t,as:i}=this.transform;return{type:"fold",fields:t,as:i}}}class Im extends Ct{clone(){return new Im(null,Ae(this.fields),this.geojson,this.signal)}static parseAll(t,i){if(i.component.projection&&!i.component.projection.isFit)return t;let n=0;for(const s of[[oc,ac],[fl,uc]]){const l=s.map(c=>{const r=Fi(i.encoding[c]);return xe(r)?r.field:fr(r)?{expr:`${r.datum}`}:Pl(r)?{expr:`${r.value}`}:void 0});(l[0]||l[1])&&(t=new Im(t,l,null,i.getName(`geojson_${n++}`)))}if(i.channelHasField(fs)){const s=i.typedFieldDef(fs);s.type===Lb&&(t=new Im(t,null,s.field,i.getName(`geojson_${n++}`)))}return t}constructor(t,i,n,s){super(t),this.fields=i,this.geojson=n,this.signal=s}dependentFields(){const t=(this.fields??[]).filter(He);return new Set([...this.geojson?[this.geojson]:[],...t])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${pt(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class mp extends Ct{clone(){return new mp(null,this.projection,Ae(this.fields),Ae(this.as))}constructor(t,i,n,s){super(t),this.projection=i,this.fields=n,this.as=s}static parseAll(t,i){if(!i.projectionName())return t;for(const n of[[oc,ac],[fl,uc]]){const s=n.map(c=>{const r=Fi(i.encoding[c]);return xe(r)?r.field:fr(r)?{expr:`${r.datum}`}:Pl(r)?{expr:`${r.value}`}:void 0}),l=n[0]===fl?"2":"";(s[0]||s[1])&&(t=new mp(t,i.projectionName(),s,[i.getName(`x${l}`),i.getName(`y${l}`)]))}return t}dependentFields(){return new Set(this.fields.filter(He))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${pt(this.fields)} ${pt(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class xu extends Ct{clone(){return new xu(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:i=0,stop:n,step:s}=t;return{signal:`sequence(${[i,n,...s?[s]:[]].join(",")})`}}static makeFromTransform(t,i){return new xu(t,i)}static makeFromEncoding(t,i){const n=i.encoding,s=n.x,l=n.y;if(xe(s)&&xe(l)){const c=s.impute?s:l.impute?l:void 0;if(c===void 0)return;const r=s.impute?l:l.impute?s:void 0,{method:a,value:u,frame:o,keyvals:d}=c.impute,b=wQ(i.mark,n);return new xu(t,{impute:c.field,key:r.field,...a?{method:a}:{},...u!==void 0?{value:u}:{},...o?{frame:o}:{},...d!==void 0?{keyvals:d}:{},...b.length?{groupby:b}:{}})}return null}hash(){return`Impute ${pt(this.transform)}`}assemble(){const{impute:t,key:i,keyvals:n,method:s,groupby:l,value:c,frame:r=[null,null]}=this.transform,a={type:"impute",field:t,key:i,...n?{keyvals:a5e(n)?this.processSequence(n):n}:{},method:"value",...l?{groupby:l}:{},value:!s||s==="value"?c:null};if(s&&s!=="value"){const u={type:"window",as:[`imputed_${t}_value`],ops:[s],fields:[t],frame:r,ignorePeers:!1,...l?{groupby:l}:{}},o={type:"formula",expr:`datum.${t} === null ? datum.imputed_${t}_value : datum.${t}`,as:t};return[a,u,o]}else return[a]}}class iJ extends Ct{clone(){return new iJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const n=this.transform.as??[void 0,void 0];this.transform.as=[n[0]??i.on,n[1]??i.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${pt(this.transform)}`}assemble(){const{loess:t,on:i,...n}=this.transform;return{type:"loess",x:i,y:t,...n}}}class bp extends Ct{clone(){return new bp(null,Ae(this.transform),this.secondary)}constructor(t,i,n){super(t),this.transform=i,this.secondary=n}static make(t,i,n,s){const l=i.component.data.sources,{from:c}=n;let r=null;if(o5e(c)){let a=ID(c.data,l);a||(a=new Au(c.data),l.push(a));const u=i.getName(`lookup_${s}`);r=new os(a,u,mi.Lookup,i.component.data.outputNodeRefCounts),i.component.data.outputNodes[u]=r}else if(u5e(c)){const a=c.param;n={as:a,...n};let u;try{u=i.getSelectionComponent(ci(a),a)}catch{throw new Error(RGe(a))}if(r=u.materialized,!r)throw new Error(kGe(a))}return new bp(t,n,r.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?Ne(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${pt({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:Ne(this.transform.as)}:{}};else{let i=this.transform.as;He(i)||(Xe(jGe),i="_lookup"),t={as:[i]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...t,...this.transform.default?{default:this.transform.default}:{}}}}class nJ extends Ct{clone(){return new nJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const n=this.transform.as??[void 0,void 0];this.transform.as=[n[0]??"prob",n[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${pt(this.transform)}`}assemble(){const{quantile:t,...i}=this.transform;return{type:"quantile",field:t,...i}}}class sJ extends Ct{clone(){return new sJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i,this.transform=Ae(i);const n=this.transform.as??[void 0,void 0];this.transform.as=[n[0]??i.on,n[1]??i.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${pt(this.transform)}`}assemble(){const{regression:t,on:i,...n}=this.transform;return{type:"regression",x:i,y:t,...n}}}class lJ extends Ct{clone(){return new lJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i}addDimensions(t){this.transform.groupby=Fc((this.transform.groupby??[]).concat(t),i=>i)}producedFields(){}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${pt(this.transform)}`}assemble(){const{pivot:t,value:i,groupby:n,limit:s,op:l}=this.transform;return{type:"pivot",field:t,value:i,...s!==void 0?{limit:s}:{},...l!==void 0?{op:l}:{},...n!==void 0?{groupby:n}:{}}}}class cJ extends Ct{clone(){return new cJ(null,Ae(this.transform))}constructor(t,i){super(t),this.transform=i}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${pt(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function GD(e){let t=0;function i(n,s){if(n instanceof Au&&!n.isGenerator&&!tb(n.data)&&(e.push(s),s={name:null,source:s.name,transform:[]}),n instanceof Zn&&(n.parent instanceof Au&&!s.source?(s.format={...s.format,parse:n.assembleFormatParse()},s.transform.push(...n.assembleTransforms(!0))):s.transform.push(...n.assembleTransforms())),n instanceof Mb){s.name||(s.name=`data_${t++}`),!s.source||s.transform.length>0?(e.push(s),n.data=s.name):n.data=s.source,e.push(...n.assemble());return}switch((n instanceof w0||n instanceof H0||n instanceof cb||n instanceof Tb||n instanceof nb||n instanceof mp||n instanceof Kl||n instanceof bp||n instanceof Kb||n instanceof Wd||n instanceof tJ||n instanceof eJ||n instanceof A1||n instanceof iJ||n instanceof nJ||n instanceof sJ||n instanceof Jo||n instanceof cJ||n instanceof lJ||n instanceof q1)&&s.transform.push(n.assemble()),(n instanceof Ec||n instanceof Oc||n instanceof xu||n instanceof Ur||n instanceof Im)&&s.transform.push(...n.assemble()),n instanceof os&&(s.source&&s.transform.length===0?n.setSource(s.source):n.parent instanceof os?n.setSource(s.name):(s.name||(s.name=`data_${t++}`),n.setSource(s.name),n.numChildren()===1&&(e.push(s),s={name:null,source:s.name,transform:[]}))),n.numChildren()){case 0:n instanceof os&&(!s.source||s.transform.length>0)&&e.push(s);break;case 1:i(n.children[0],s);break;default:{s.name||(s.name=`data_${t++}`);let l=s.name;!s.source||s.transform.length>0?e.push(s):l=s.source;for(const c of n.children)i(c,{name:null,source:l,transform:[]});break}}}return i}function Nwe(e){const t=[],i=GD(t);for(const n of e.children)i(n,{source:e.name,name:null,transform:[]});return t}function Rwe(e,t){const i=[],n=GD(i);let s=0;for(const c of e.sources){c.hasName()||(c.dataName=`source_${s++}`);const r=c.assemble();n(c,r)}for(const c of i)c.transform.length===0&&delete c.transform;let l=0;for(const[c,r]of i.entries())(r.transform??[]).length===0&&!r.source&&i.splice(l++,0,i.splice(c,1)[0]);for(const c of i)for(const r of c.transform??[])r.type==="lookup"&&(r.from=e.outputNodes[r.from].getSource());for(const c of i)c.name in t&&(c.values=t[c.name]);return i}function kwe(e){return e==="top"||e==="left"||Ce(e)?"header":"footer"}function Fwe(e){for(const t of sl)Swe(e,t);DL(e,"x"),DL(e,"y")}function Swe(e,t){var c;const{facet:i,config:n,child:s,component:l}=e;if(e.channelHasField(t)){const r=i[t],a=lb("title",null,n,t);let u=Gm(r,n,{allowDisabling:!0,includeDefault:a===void 0||!!a});s.component.layoutHeaders[t].title&&(u=fe(u)?u.join(", "):u,u+=` / ${s.component.layoutHeaders[t].title}`,s.component.layoutHeaders[t].title=null);const o=lb("labelOrient",r.header,n,t),d=r.header!==null?xi((c=r.header)==null?void 0:c.labels,n.header.labels,!0):!1,b=ht(["bottom","right"],o)?"footer":"header";l.layoutHeaders[t]={title:r.header!==null?u:null,facetFieldDef:r,[b]:t==="facet"?[]:[VD(e,t,d)]}}}function VD(e,t,i){const n=t==="row"?"height":"width";return{labels:i,sizeSignal:e.child.component.layoutSize.get(n)?e.child.getSizeSignalRef(n):void 0,axes:[]}}function DL(e,t){const{child:i}=e;if(i.component.axes[t]){const{layoutHeaders:n,resolve:s}=e.component;if(s.axis[t]=$z(s,t),s.axis[t]==="shared"){const l=t==="x"?"column":"row",c=n[l];for(const r of i.component.axes[t]){const a=kwe(r.get("orient"));c[a]??(c[a]=[VD(e,l,!1)]);const u=nf(r,"main",e.config,{header:!0});u&&c[a][0].axes.push(u),r.mainExtracted=!0}}}}function Lwe(e){nw(e),SX(e,"width"),SX(e,"height")}function Cwe(e){nw(e);const t=e.layout.columns===1?"width":"childWidth",i=e.layout.columns===void 0?"height":"childHeight";SX(e,t),SX(e,i)}function nw(e){for(const t of e.children)t.parseLayoutSize()}function SX(e,t){const i=D7(t),n=J1(i),s=e.component.resolve,l=e.component.layoutSize;let c;for(const r of e.children){const a=r.component.layoutSize.getWithExplicit(i),u=s.scale[n]??q7(n,e);if(u==="independent"&&a.value==="step"){c=void 0;break}if(c){if(u==="independent"&&c.value!==a.value){c=void 0;break}c=Xo(c,a,i,"")}else c=a}if(c){for(const r of e.children)e.renameSignal(r.getName(i),e.getName(t)),r.component.layoutSize.set(i,"merged",!1);l.setWithExplicit(t,c)}else l.setWithExplicit(t,{explicit:!1,value:void 0})}function Twe(e){const{size:t,component:i}=e;for(const n of da){const s=ps(n);if(t[s]){const l=t[s];i.layoutSize.set(s,ir(l)?"step":l,!0)}else{const l=Mwe(e,s);i.layoutSize.set(s,l,!1)}}}function Mwe(e,t){const i=t==="width"?"x":"y",n=e.config,s=e.getScaleComponent(i);if(s){const l=s.get("type"),c=s.get("range");if(Ui(l)){const r=HX(n.view,t);return bd(c)||ir(r)?"step":r}else return CV(n.view,t)}else{if(e.hasProjection||e.mark==="arc")return CV(n.view,t);{const l=HX(n.view,t);return ir(l)?l.step:l}}}function sI(e,t,i){return ve(t,{suffix:`by_${ve(e)}`,...i})}class gf extends YD{constructor(t,i,n,s){super(t,"facet",i,n,s,t.resolve),this.child=aw(t.spec,this,this.getName("child"),void 0,s),this.children=[this.child],this.facet=this.initFacet(t.facet)}initFacet(t){if(!J0(t))return{facet:this.initFacetFieldDef(t,"facet")};const i=Ze(t),n={};for(const s of i){if(![Or,jr].includes(s)){Xe(G1(s,"facet"));break}const l=t[s];if(l.field===void 0){Xe(RV(l,s));break}n[s]=this.initFacetFieldDef(l,s)}return n}initFacetFieldDef(t,i){const n=Gz(t,i);return n.header?n.header=qi(n.header):n.header===null&&(n.header=null),n}channelHasField(t){return We(this.facet,t)}fieldDef(t){return this.facet[t]}parseData(){this.component.data=rJ(this),this.child.parseData()}parseLayoutSize(){nw(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection,Object.values(this.component.selection).some(t=>jc(t))&&qv(Av)}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),Fwe(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const i of sl)for(const n of Pz){const s=this.component.layoutHeaders[i],l=s[n],{facetFieldDef:c}=s;if(c){const r=lb("titleOrient",c.header,this.config,i);if(["right","bottom"].includes(r)){const a=$1(i,r);t.titleAnchor??(t.titleAnchor={}),t.titleAnchor[a]="end"}}if(l!=null&&l[0]){const r=i==="row"?"height":"width",a=n==="header"?"headerBand":"footerBand";i!=="facet"&&!this.child.component.layoutSize.get(r)&&(t[a]??(t[a]={}),t[a][i]=.5),s.title&&(t.offset??(t.offset={}),t.offset[i==="row"?"rowTitle":"columnTitle"]=10)}}return t}assembleDefaultLayout(){const{column:t,row:i}=this.facet,n=t?this.columnDistinctSignal():i?1:void 0;let s="all";return(!i&&this.component.resolve.scale.x==="independent"||!t&&this.component.resolve.scale.y==="independent")&&(s="none"),{...this.getHeaderLayoutMixins(),...n?{columns:n}:{},bounds:"full",align:s}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof gf))return{signal:`length(data('${this.getName("column_domain")}'))`}}assembleGroupStyle(){}assembleGroup(t){return this.parent&&this.parent instanceof gf?{...this.channelHasField("column")?{encode:{update:{columns:{field:ve(this.facet.column,{prefix:"distinct"})}}}}:{},...super.assembleGroup(t)}:super.assembleGroup(t)}getCardinalityAggregateForChild(){const t=[],i=[],n=[];if(this.child instanceof gf){if(this.child.channelHasField("column")){const s=ve(this.child.facet.column);t.push(s),i.push("distinct"),n.push(`distinct_${s}`)}}else for(const s of da){const l=this.child.component.scales[s];if(l&&!l.merged){const c=l.get("type"),r=l.get("range");if(Ui(c)&&bd(r)){const a=D1(this.child,s),u=ew(a);u?(t.push(u),i.push("distinct"),n.push(`distinct_${u}`)):Xe(Dv(s))}}}return{fields:t,ops:i,as:n}}assembleFacet(){const{name:t,data:i}=this.component.data.facetRoot,{row:n,column:s}=this.facet,{fields:l,ops:c,as:r}=this.getCardinalityAggregateForChild(),a=[];for(const o of sl){const d=this.facet[o];if(d){a.push(ve(d));const{bin:b,sort:h}=d;if(Dt(b)&&a.push(ve(d,{binSuffix:"end"})),Er(h)){const{field:p,op:Z=H1}=h,X=sI(d,h);
vendor: 1,160 bytes, line 55
55n&&s?(l.push(X),c.push("max"),r.push(X)):(l.push(p),c.push(Z),r.push(X))}else if(fe(h)){const p=sb(d,o);l.push(p),c.push("max"),r.push(p)}}}const u=!!n&&!!s;return{name:t,data:i,groupby:a,...u||l.length>0?{aggregate:{...u?{cross:u}:{},...l.length?{fields:l,ops:c,as:r}:{}}}:{}}}facetSortFields(t){const{facet:i}=this,n=i[t];return n?Er(n.sort)?[sI(n,n.sort,{expr:"datum"})]:fe(n.sort)?[sb(n,t,{expr:"datum"})]:[ve(n,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:i}=this,n=i[t];if(n){const{sort:s}=n;return[(Er(s)?s.order:!fe(s)&&s)||"ascending"]}return[]}assembleLabelTitle(){var s;const{facet:t,config:i}=this;if(t.facet)return DV(t.facet,"facet",i);const n={row:["top","bottom"],column:["left","right"]};for(const l of Ez)if(t[l]){const c=lb("labelOrient",(s=t[l])==null?void 0:s.header,i,l);if(n[l].includes(c))return DV(t[l],l,i)}}assembleMarks(){const{child:t}=this,i=this.component.data.facetRoot,n=Nwe(i),s=t.assembleGroupEncodeEntry(!1),l=this.assembleLabelTitle()||t.assembleTitle(),c=t.assembleGroupStyle();return[{name:this.getName("cell"),type:"group",...l?{title:l}:{},...c?{style:c}:{},from:{facet:this.assembleFacet()},sort:{field:sl.map(a=>
55this.facetSortFields(a)).flat(),order:sl.map(a=>this.facetSortOrder(a)).flat()},...n.length>0?{data:n}:{},...s?{encode:{update:s}}:{},...t.assembleGroup(E5e(this,[]))}]}getMapping(){return this.facet}}function Kwe(e,t){const{row:i,column:n}=t;if(i&&n){let s=null;for(const l of[i,n])if(Er(l.sort)){const{field:c,op:r=H1}=l.sort;e=s=new Wd(e,{joinaggregate:[{op:r,field:c,as:sI(l,l.sort,{forAs:!0})}],groupby:[ve(l)]})}return s}return null}function ID(e,t){var i,n,s,l;for(const c of t){const r=c.data;if(e.name&&c.hasName()&&e.name!==c.dataName)continue;const a=(i=e.format)==null?void 0:i.mesh,u=(n=r.format)==null?void 0:n.feature;if(a&&u)continue;const o=(s=e.format)==null?void 0:s.feature;if((o||u)&&o!==u)continue;const d=(l=r.format)==null?void 0:l.mesh;if(!((a||d)&&a!==d)){if(op(e)&&op(r)){if(Hs(e.values,r.values))return c}else if(tb(e)&&tb(r)){if(e.url===r.url)return c}else if(c7(e)&&e.name===c.dataName)return c}}return null}function Bwe(e,t){if(e.data||!e.parent){if(e.data===null){const n=new Au({values:[]});return t.push(n),n}const i=ID(e.data,t);if(i)return no(e.data)||(i.data.format=t$({},e.data.format,i.data.format)),!i.hasName()&&e.data.name&&(i.dataName=e.data.name),i;{const n=new Au(e.data);return t.push(n),n}}else return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}function _we(e,t,i){let n=0;for(const s of t.transforms){let l,c;if(X5e(s))c=e=new nb(e,s),l="derived";else if(Sz(s)){const r=Rze(s);c=e=Zn.makeWithAncestors(e,{},r,i)??e,e=new Tb(e,t,s.filter)}else if(t7(s))c=e=Ec.makeFromTransform(e,s,t),l="number";else if(x5e(s))l="date",i.getWithExplicit(s.field).value===void 0&&(e=new Zn(e,{[s.field]:l}),i.set(s.field,l,!1)),c=e=Oc.makeFromTransform(e,s);else if(Y5e(s))c=e=Kl.makeFromTransform(e,s),l="number",Bz(t)&&(e=new Jo(e));else if(e7(s))c=e=bp.make(e,t,s,n++),l="derived";else if(y5e(s))c=e=new Kb(e,s),l="number";else if(Z5e(s))c=e=new Wd(e,s),l="number";else if(G5e(s))c=e=Ur.makeFromTransform(e,s),l="derived";else if(V5e(s))c=e=new tJ(e,s),l="derived";else if(I5e(s))c=e=new q1(e,s),l="derived";else if(W5e(s))c=e=new eJ(e,s),l="derived";else if(d5e(s))c=e=new lJ(e,s),l="derived";else if(p5e(s))e=new cJ(e,s);else if(J5e(s))c=e=xu.makeFromTransform(e,s),l="derived";else if(m5e(s))c=e=new A1(e,s),l="derived";else if(b5e(s))c=e=new nJ(e,s),l="derived";else if(h5e(s))c=e=new sJ(e,s),l="derived";else if(f5e(s))c=e=new iJ(e,s),l="derived";else{Xe(OGe(s));continue}if(c&&l!==void 0)for(const r of c.producedFields()??[])i.set(r,l,!1)}return e}function rJ(e){var X;let t=Bwe(e,e.component.data.sources);const{outputNodes:i,outputNodeRefCounts:n}=e.component.data,s=e.data,c=!(s&&(no(s)||tb(s)||op(s)))&&e.parent?e.parent.component.data.ancestorParse.clone():new C5e;no(s)?(r7(s)?t=new H0(t,s.sequence):Lz(s)&&(t=new w0(t,s.graticule)),c.parseNothing=!0):((X=s==null?void 0:s.format)==null?void 0:X.parse)===null&&(c.parseNothing=!0),t=Zn.makeExplicit(t,e,c)??t,t=new Jo(t);const r=e.parent&&Bb(e.parent);(di(e)||Ss(e))&&r&&(t=Ec.makeFromEncoding(t,e)??t),e.transforms.length>0&&(t=_we(t,e,c));const a=Fze(e),u=kze(e);t=Zn.makeWithAncestors(t,{},{...a,...u},c)??t,di(e)&&(t=Im.parseAll(t,e),t=mp.parseAll(t,e)),(di(e)||Ss(e))&&(r||(t=Ec.makeFromEncoding(t,e)??t),t=Oc.makeFromEncoding(t,e)??t,t=nb.parseAllForSortIndex(t,e));const o=t=Qy(mi.Raw,e,t);if(di(e)){const J=Kl.makeFromEncoding(t,e);J&&(t=J,Bz(e)&&(t=new Jo(t))),t=xu.makeFromEncoding(t,e)??t,t=Ur.makeFromEncoding(t,e)??t}let d,b;if(di(e)){const{markDef:J,mark:V,config:g}=e,I=Kt("invalid",J,g),{marks:v,scales:k}=b=o7({invalid:I,isPath:Fo(V)});v!==k&&k==="include-invalid-values"&&(d=t=Qy(mi.PreFilterInvalid,e,t)),v==="exclude-invalid-values"&&(t=cb.make(t,e,b)??t)}const h=t=Qy(mi.Main,e,t);let p;if(di(e)&&b){const{marks:J,scales:V}=b;J==="include-invalid-values"&&V==="exclude-invalid-values"&&(t=cb.make(t,e,b)??t,p=t=Qy(mi.PostFilterInvalid,e,t))}di(e)&&wve(e,h);let Z=null;if(Ss(e)){const J=e.getName("facet");t=Kwe(t,e.facet)??t,Z=new Mb(t,e,J,h.getSource()),i[J]=Z}return{...e.component.data,outputNodes:i,outputNodeRefCounts:n,raw:o,main:h,facetRoot:Z,ancestorParse:c,preFilterInvalid:d,postFilterInvalid:p}}function Qy(e,t,i){const{outputNodes:n,outputNodeRefCounts:s}=t.component.data,l=t.getDataName(e),c=new os(i,l,e,s);return n[l]=c,c}class Owe extends iw{constructor(t,i,n,s){var l,c,r,a;super(t,"concat",i,n,s,t.resolve),(((c=(l=t.resolve)==null?void 0:l.axis)==null?void 0:c.x)==="shared"||((a=(r=t.resolve)==null?void 0:r.axis)==null?void 0:a.y)==="shared")&&Xe(KGe),this.children=this.getChildren(t).map((u,o)=>aw(u,this,this.getName(`concat_${o}`),void 0,s))}parseData(){this.component.data=rJ(this);for(const t of this.children)t.parseData()}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const i of Ze(t.component.selection))this.component.selection[i]=t.component.selection[i]}Object.values(this.component.selection).some(t=>jc(t))&&qv(Av)}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}getChildren(t){return C1(t)?t.vconcat:kz(t)?t.hconcat:t.concat}parseLayoutSize(){Cwe(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(t){return this.children.reduce((i,n)=>n.assembleSelectionTopLevelSignals(i),t)}
vendor: 6,305 bytes, line 55
55assembleSignals(){return this.children.forEach(t=>t.assembleSignals()),[]}assembleLayoutSignals(){const t=Uz(this);for(const i of this.children)t.push(...i.assembleLayoutSignals());return t}assembleSelectionData(t){return this.children.reduce((i,n)=>n.assembleSelectionData(i),t)}assembleMarks(){return this.children.map(t=>{const i=t.assembleTitle(),n=t.assembleGroupStyle(),s=t.assembleGroupEncodeEntry(!1);return{type:"group",name:t.getName("group"),...i?{title:i}:{},...n?{style:n}:{},...s?{encode:{update:s}}:{},...t.assembleGroup()}})}assembleGroupStyle(){}assembleDefaultLayout(){const t=this.layout.columns;return{...t!=null?{columns:t}:{},bounds:"full",align:"each"}}}function jwe(e){return e===!1||e===null}const Ewe={disable:1,gridScale:1,scale:1,...GQ,labelExpr:1,encode:1},gD=Ze(Ewe);class sw extends ba{constructor(t={},i={},n=!1){super(),this.explicit=t,this.implicit=i,this.mainExtracted=n}clone(){return new sw(Ae(this.explicit),Ae(this.implicit),this.mainExtracted)}hasAxisPart(t){return t==="axis"?!0:t==="grid"||t==="title"?!!this.get(t):!jwe(this.get(t))}hasOrientSignalRef(){return Ce(this.explicit.orient)}}function Pwe(e,t,i){const{encoding:n,config:s}=e,l=Fi(n[t])??Fi(n[br(t)]),c=e.axis(t)||{},{format:r,formatType:a}=c;if(Pu(a))return{text:Sl({fieldOrDatumDef:l,field:"datum.value",format:r,formatType:a,config:s}),...i};if(r===void 0&&a===void 0&&s.customFormatTypes){if(Am(l)==="quantitative"){if(qm(l)&&l.stack==="normalize"&&s.normalizedNumberFormatType)return{text:Sl({fieldOrDatumDef:l,field:"datum.value",format:s.normalizedNumberFormat,formatType:s.normalizedNumberFormatType,config:s}),...i};if(s.numberFormatType)return{text:Sl({fieldOrDatumDef:l,field:"datum.value",format:s.numberFormat,formatType:s.numberFormatType,config:s}),...i}}if(Am(l)==="temporal"&&s.timeFormatType&&xe(l)&&!l.timeUnit)return{text:Sl({fieldOrDatumDef:l,field:"datum.value",format:s.timeFormat,formatType:s.timeFormatType,config:s}),...i}}return i}function Uwe(e){return da.reduce((t,i)=>(e.component.scales[i]&&(t[i]=[tHe(i,e)]),t),{})}const $we={bottom:"top",top:"bottom",left:"right",right:"left"};function Qwe(e){const{axes:t,resolve:i}=e.component,n={top:0,bottom:0,right:0,left:0};for(const s of e.children){s.parseAxesAndHeaders();for(const l of Ze(s.component.axes))i.axis[l]=$z(e.component.resolve,l),i.axis[l]==="shared"&&(t[l]=Dwe(t[l],s.component.axes[l]),t[l]||(i.axis[l]="independent",delete t[l]))}for(const s of da){for(const l of e.children)if(l.component.axes[s]){if(i.axis[s]==="independent"){t[s]=(t[s]??[]).concat(l.component.axes[s]);for(const c of l.component.axes[s]){const{value:r,explicit:a}=c.getWithExplicit("orient");if(!Ce(r)){if(n[r]>0&&!a){const u=$we[r];n[r]>n[u]&&c.set("orient",u,!1)}n[r]++}}}delete l.component.axes[s]}if(i.axis[s]==="independent"&&t[s]&&t[s].length>1)for(const[l,c]of(t[s]||[]).entries())l>0&&c.get("grid")&&!c.explicit.grid&&(c.implicit.grid=!1)}}function Dwe(e,t){if(e){if(e.length!==t.length)return;const i=e.length;for(let n=0;n<i;n++){const s=e[n],l=t[n];if(!!s!=!!l)return;if(s&&l){const c=s.getWithExplicit("orient"),r=l.getWithExplicit("orient");if(c.explicit&&r.explicit&&c.value!==r.value)return;e[n]=Awe(s,l)}}}else return t.map(i=>i.clone());return e}function Awe(e,t){for(const i of gD){const n=Xo(e.getWithExplicit(i),t.getWithExplicit(i),i,"axis",(s,l)=>{switch(i){case"title":return v$(s,l);case"gridScale":return{explicit:s.explicit,value:xi(s.value,l.value)}}return M1(s,l,i,"axis")});e.setWithExplicit(i,n)}return e}function qwe(e,t,i,n,s){if(t==="disable")return i!==void 0;switch(i=i||{},t){case"titleAngle":case"labelAngle":return e===(Ce(i.labelAngle)?i.labelAngle:rp(i.labelAngle));case"values":return!!i.values;case"encode":return!!i.encoding||!!i.labelAngle;case"title":if(e===E7(n,s))return!0}return e===i[t]}const eHe=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function tHe(e,t){var J,V;let i=t.axis(e);const n=new sw,s=Fi(t.encoding[e]),{mark:l,config:c}=t,r=(i==null?void 0:i.orient)||((J=c[e==="x"?"axisX":"axisY"])==null?void 0:J.orient)||((V=c.axis)==null?void 0:V.orient)||Mve(e),a=t.getScaleComponent(e).get("type"),u=Rve(e,a,r,t.config),o=i!==void 0?!i:$V("disable",c.style,i==null?void 0:i.style,u).configValue;if(n.set("disable",o,i!==void 0),o)return n;i=i||{};const d=Lve(s,i,e,c.style,u),b=uQ(i.formatType,s,a),h=oQ(s,s.type,i.format,i.formatType,c,!0),p={fieldOrDatumDef:s,axis:i,channel:e,model:t,scaleType:a,orient:r,labelAngle:d,format:h,formatType:b,mark:l,config:c};for(const g of gD){const I=g in SL?SL[g](p):iL(g)?i[g]:void 0,v=I!==void 0,k=qwe(I,g,i,t,e);if(v&&k)n.set(g,I,k);else{const{configValue:N=void 0,configFrom:C=void 0}=iL(g)&&g!=="values"?$V(g,c.style,i.style,u):{},f=N!==void 0;v&&!f?n.set(g,I,k):(C!=="vgAxisConfig"||eHe.has(g)&&f||V0(N)||Ce(N))&&n.set(g,N,!1)}}const Z=i.encoding??{},X=YQ.reduce((g,I)=>{if(!n.hasAxisPart(I))return g;const v=A7(Z[I]??{},t),k=I==="labels"?Pwe(t,e,v):v;return k!==void 0&&!Bt(k)&&(g[I]={update:k}),g},{});return Bt(X)||n.set("encode",X,!!i.encoding||i.labelAngle!==void 0),n}function iHe({encoding:e,size:t}){for(const i of da){const n=ps(i);ir(t[n])&&Pa(e[i])&&(delete t[n],Xe(R$(n)))}return t}const nHe={vgMark:"arc",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...Mn("x",e,{defaultPos:"mid"}),...Mn("y",e,{defaultPos:"mid"}),...ta(e,"radius"),...ta(e,"theta")})},sHe={vgMark:"area",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...NX("x",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="horizontal"}),...NX("y",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="vertical"}),...Kz(e)})},lHe={vgMark:"rect",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ta(e,"x"),...ta(e,"y")})},cHe={vgMark:"shape",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:e=>{const{encoding:t}=e,i=t.shape;return[{type:"geoshape",projection:e.projectionName(),...i&&xe(i)&&i.type===Lb?{field:ve(i,{expr:"datum"})}:{}}
vendor: 4,180 bytes, line 55
55]}},rHe={vgMark:"image",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...ta(e,"x"),...ta(e,"y"),...Tz(e,"url")})},aHe={vgMark:"line",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...Mn("x",e,{defaultPos:"mid"}),...Mn("y",e,{defaultPos:"mid"}),...nn("size",e,{vgChannel:"strokeWidth"}),...Kz(e)})},oHe={vgMark:"trail",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...Mn("x",e,{defaultPos:"mid"}),...Mn("y",e,{defaultPos:"mid"}),...nn("size",e),...Kz(e)})};function lw(e,t){const{config:i}=e;return{...Zl(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...Mn("x",e,{defaultPos:"mid"}),...Mn("y",e,{defaultPos:"mid"}),...nn("size",e),...nn("angle",e),...uHe(e,i,t)}}function uHe(e,t,i){return i?{shape:{value:i}}:nn("shape",e)}const dHe={vgMark:"symbol",encodeEntry:e=>lw(e)},mHe={vgMark:"symbol",encodeEntry:e=>lw(e,"circle")},bHe={vgMark:"symbol",encodeEntry:e=>lw(e,"square")},hHe={vgMark:"rect",encodeEntry:e=>({...Zl(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ta(e,"x"),...ta(e,"y")})},fHe={vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,i=t.orient;return!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude?{}:{...Zl(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...NX("x",e,{defaultPos:i==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:i!=="vertical"}),...NX("y",e,{defaultPos:i==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:i!=="horizontal"}),...nn("size",e,{vgChannel:"strokeWidth"})}}},pHe={vgMark:"text",encodeEntry:e=>{const{config:t,encoding:i}=e;return{...Zl(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...Mn("x",e,{defaultPos:"mid"}),...Mn("y",e,{defaultPos:"mid"}),...Tz(e),...nn("size",e,{vgChannel:"fontSize"}),...nn("angle",e),...VL("align",yHe(e.markDef,i,t)),...VL("baseline",ZHe(e.markDef,i,t)),...Mn("radius",e,{defaultPos:null}),...Mn("theta",e,{defaultPos:null})}}};function yHe(e,t,i){if(Kt("align",e,i)===void 0)return"center"}function ZHe(e,t,i){if(Kt("baseline",e,i)===void 0)return"middle"}const WHe={vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:i}=e,n=i.orient,s=n==="horizontal"?"x":"y",l=n==="horizontal"?"y":"x",c=n==="horizontal"?"height":"width";return{...Zl(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ta(e,s),...Mn(l,e,{defaultPos:"mid",vgChannel:l==="y"?"yc":"xc"}),[c]:ti(Kt("thickness",i,t))}}},Dy={arc:nHe,area:sHe,bar:lHe,circle:mHe,geoshape:cHe,image:rHe,line:aHe,point:dHe,rect:hHe,rule:fHe,square:bHe,text:pHe,tick:WHe,trail:oHe};function XHe(e){if(ht([z1,g1,yIe],e.mark)){const t=wQ(e.mark,e.encoding);if(t.length>0)return JHe(e,t)}else if(e.mark===v1){const t=HV.some(i=>Kt(i,e.markDef,e.config));if(e.stack&&!e.fieldDef("size")&&t)return xHe(e)}return cw(e)}const AL="faceted_path_";function JHe(e,t){return[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:AL+e.requestDataName(mi.Main),data:e.requestDataName(mi.Main),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:cw(e,{fromPrefix:AL})}]}const qL="stack_group_";function xHe(e){var u;const[t]=cw(e,{fromPrefix:qL}),i=e.scaleName(e.stack.fieldChannel),n=(o={})=>e.vgField(e.stack.fieldChannel,o),s=(o,d)=>{const b=[n({prefix:"min",suffix:"start",expr:d}),n({prefix:"max",suffix:"start",expr:d}),n({prefix:"min",suffix:"end",expr:d}),n({prefix:"max",suffix:"end",expr:d})];return`${o}(${b.map(h=>`scale('${i}',${h})`).join(",")})`};let l,c;e.stack.fieldChannel==="x"?(l={...Em(t.encode.update,["y","yc","y2","height",...HV]),x:{signal:s("min","datum")},x2:{signal:s("max","datum")},clip:{value:!0}},c={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},t.encode.update={...as(t.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}
vendor: 5,521 bytes, line 55
55):(l={...Em(t.encode.update,["x","xc","x2","width"]),y:{signal:s("min","datum")},y2:{signal:s("max","datum")},clip:{value:!0}},c={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},t.encode.update={...as(t.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(const o of HV){const d=er(o,e.markDef,e.config);t.encode.update[o]?(l[o]=t.encode.update[o],delete t.encode.update[o]):d&&(l[o]=ti(d)),d&&(t.encode.update[o]={value:0})}const r=[];if(((u=e.stack.groupbyChannels)==null?void 0:u.length)>0)for(const o of e.stack.groupbyChannels){const d=e.fieldDef(o),b=ve(d);b&&r.push(b),(d!=null&&d.bin||d!=null&&d.timeUnit)&&r.push(ve(d,{binSuffix:"end"}))}return l=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((o,d)=>{if(t.encode.update[d])return{...o,[d]:t.encode.update[d]};{const b=er(d,e.markDef,e.config);return b!==void 0?{...o,[d]:ti(b)}:o}},l),l.stroke&&(l.strokeForeground={value:!0},l.strokeOffset={value:0}),[{type:"group",from:{facet:{data:e.requestDataName(mi.Main),name:qL+e.requestDataName(mi.Main),groupby:r,aggregate:{fields:[n({suffix:"start"}),n({suffix:"start"}),n({suffix:"end"}),n({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:l},marks:[{type:"group",encode:{update:c},marks:[t]}]}]}function YHe(e){const{encoding:t,stack:i,mark:n,markDef:s,config:l}=e,c=t.order;if(!(!fe(c)&&Pl(c)&&zV(c.value)||!c&&zV(Kt("order",s,l)))){if((fe(c)||xe(c))&&!i)return V$(c,{expr:"datum"});if(Fo(n)){const r=s.orient==="horizontal"?"y":"x",a=t[r];if(xe(a))return{field:r}}}}function cw(e,t={fromPrefix:""}){const{mark:i,markDef:n,encoding:s,config:l}=e,c=xi(n.clip,GHe(e),VHe(e)),r=Y$(n),a=s.key,u=YHe(e),o=IHe(e),d=Kt("aria",n,l),b=Dy[i].postEncodingTransform?Dy[i].postEncodingTransform(e):null;return[{name:e.getName("marks"),type:Dy[i].vgMark,...c?{clip:c}:{},...r?{style:r}:{},...a?{key:a.field}:{},...u?{sort:u}:{},...o||{},...d===!1?{aria:d}:{},from:{data:t.fromPrefix+e.requestDataName(mi.Main)},encode:{update:Dy[i].encodeEntry(e)},...b?{transform:b}:{}}]}function GHe(e){const t=e.getScaleComponent("x"),i=e.getScaleComponent("y");return t!=null&&t.get("selectionExtent")||i!=null&&i.get("selectionExtent")?!0:void 0}function VHe(e){const t=e.component.projection;return t&&!t.isFit?!0:void 0}function IHe(e){if(!e.component.selection)return null;const t=Ze(e.component.selection).length;let i=t,n=e.parent;for(;n&&i===0;)i=Ze(n.component.selection).length,n=n.parent;return i?{interactive:t>0||e.mark==="geoshape"||!!e.encoding.tooltip||!!e.markDef.tooltip}:null}class vD extends YD{constructor(t,i,n,s={},l){super(t,"unit",i,n,l,void 0,sL(t)?t.view:void 0),this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[],this.correctDataNames=u=>{var o,d,b;return(o=u.from)!=null&&o.data&&(u.from.data=this.lookupDataSource(u.from.data),"time"in this.encoding&&(u.from.data=u.from.data+d7)),(b=(d=u.from)==null?void 0:d.facet)!=null&&b.data&&(u.from.facet.data=this.lookupDataSource(u.from.facet.data)),u};const c=tr(t.mark)?{...t.mark}:{type:t.mark},r=c.type;c.filled===void 0&&(c.filled=e5e(c,l,{graticule:t.data&&Lz(t.data)}));const a=this.encoding=s3e(t.encoding||{},r,c.filled,l);this.markDef=DQ(c,a,l),this.size=iHe({encoding:a,size:sL(t)?{...s,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}}:s}),this.stack=QQ(this.markDef,a),this.specifiedScales=this.initScales(r,a),this.specifiedAxes=this.initAxes(a),this.specifiedLegends=this.initLegends(a),this.specifiedProjection=t.projection,this.selection=(t.params??[]).filter(u=>Nz(u))}get hasProjection(){const{encoding:t}=this,i=this.mark===iQ,n=t&&Q9e.some(s=>tt(t[s]));return i||n}scaleDomain(t){const i=this.specifiedScales[t];return i?i.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,i){return Uv.reduce((n,s)=>{const l=Fi(i[s]);return l&&(n[s]=this.initScale(l.scale??{})),n},{})}initScale(t){const{domain:i,range:n}=t,s=qi(t);return fe(i)&&(s.domain=i.map(zs)),fe(n)&&(s.range=n.map(zs)),s}initAxes(t){return da.reduce((i,n)=>{const s=t[n];if(tt(s)||n===ri&&tt(t.x2)||n===$i&&tt(t.y2)){const l=tt(s)?s.axis:void 0;i[n]=l&&this.initAxis({...l})}return i},{})}initAxis(t){const i=Ze(t),n={};for(const s of i){const l=t[s];n[s]=V0(l)?x$(l):zs(l)}return n}initLegends(t){return rGe.reduce((i,n)=>{const s=Fi(t[n]);if(s&&oGe(n)){const l=s.legend;i[n]=l&&qi(l)}return i},{})}parseData(){this.component.data=rJ(this)}parseLayoutSize(){Twe(this)}parseSelections(){this.component.selection=zve(this,this.selection)}parseMarkGroup(){this.component.mark=XHe(this)}parseAxesAndHeaders(){this.component.axes=Uwe(this)}assembleSelectionTopLevelSignals(t){return P5e(this,t)}assembleSignals(){return[..._7(this),...j5e(this,[])]}assembleSelectionData(t){return U5e(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return Uz(this)}assembleMarks(){let t=this.component.mark??[];return(!this.parent||!Bb(this.parent))&&(t=f7(this,t)),t.map(this.correctDataNames)}assembleGroupStyle(){const{style:t}=this.view||{};return t!==void 0?t:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return Xu(this.encoding,t)}fieldDef(t){const i=this.encoding[t];return Ul(i)}typedFieldDef(t){const i=this.fieldDef(t);return Un(i)?i:null}}class rw extends iw{constructor(t,i,n,s,l){super(t,"layer",i,n,l,t.resolve,t.view
vendor: 5,009 bytes, line 55
55);const c={...s,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}};this.children=t.layer.map((r,a)=>{if(T1(r))return new rw(r,this,this.getName(`layer_${a}`),c,l);if(ma(r))return new vD(r,this,this.getName(`layer_${a}`),c,l);throw new Error(Qv(r))})}parseData(){this.component.data=rJ(this);for(const t of this.children)t.parseData()}parseLayoutSize(){Lwe(this)}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const i of Ze(t.component.selection))this.component.selection[i]=t.component.selection[i]}Object.values(this.component.selection).some(t=>jc(t))&&qv(Av)}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){Qwe(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((i,n)=>n.assembleSelectionTopLevelSignals(i),t)}assembleSignals(){return this.children.reduce((t,i)=>t.concat(i.assembleSignals()),_7(this))}assembleLayoutSignals(){return this.children.reduce((t,i)=>t.concat(i.assembleLayoutSignals()),Uz(this))}assembleSelectionData(t){return this.children.reduce((i,n)=>n.assembleSelectionData(i),t)}assembleGroupStyle(){const t=new Set;for(const n of this.children)for(const s of Ne(n.assembleGroupStyle()))t.add(s);const i=Array.from(t);return i.length>1?i:i.length===1?i[0]:void 0}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const i of this.children)if(t=i.assembleTitle(),t)return t}assembleLayout(){return null}assembleMarks(){return $5e(this,this.children.flatMap(t=>t.assembleMarks()))}assembleLegends(){return this.children.reduce((t,i)=>t.concat(i.assembleLegends()),cD(this))}}function aw(e,t,i,n,s){if(N1(e))return new gf(e,t,i,s);if(T1(e))return new rw(e,t,i,n,s);if(ma(e))return new vD(e,t,i,n,s);if(v3e(e))return new Owe(e,t,i,s);throw new Error(Qv(e))}function gHe(e,t={}){t.logger&&HVe(t.logger),t.fieldTitle&&XQ(t.fieldTitle);try{const i=$Q(xb(t.config,e.config)),n=s7(e,i),s=aw(n,null,"",void 0,i);return s.parse(),Dze(s.component.data,s),{spec:zHe(s,vHe(e,n.autosize,i,s),e.datasets,e.usermeta),normalized:n}}finally{t.logger&&NVe(),t.fieldTitle&&$Ie()}}function vHe(e,t,i,n){const s=n.component.layoutSize.get("width"),l=n.component.layoutSize.get("height");if(t===void 0?(t={type:"pad"},n.hasAxisOrientSignalRef()&&(t.resize=!0)):He(t)&&(t={type:t}),s&&l&&F5e(t.type)){if(s==="step"&&l==="step")Xe(BS()),t.type="pad";else if(s==="step"||l==="step"){const c=s==="step"?"width":"height";Xe(BS(J1(c)));const r=c==="width"?"height":"width";t.type=S5e(r)}}return{...Ze(t).length===1&&t.type?t.type==="pad"?{}:{autosize:t.type}:{autosize:t},...pL(i,!1),...pL(e,!0)}}function zHe(e,t,i={},n){const s=e.config?B3e(e.config):void 0,l=Rwe(e.component.data,i),c=e.assembleSelectionData(l),r=e.assembleProjections(),a=e.assembleTitle(),u=e.assembleGroupStyle(),o=e.assembleGroupEncodeEntry(!0);let d=e.assembleLayoutSignals();d=d.filter(p=>(p.name==="width"||p.name==="height")&&p.value!==void 0?(t[p.name]=+p.value,!1):!0);const{params:b,...h}=t;return{$schema:"https://vega.github.io/schema/vega/v5.json",...e.description?{description:e.description}:{},...h,...a?{title:a}:{},...u?{style:u}:{},...o?{encode:{update:o}}:{},data:c,...r.length>0?{projections:r}:{},...e.assembleGroup([...d,...e.assembleSelectionTopLevelSignals([]),...jQ(b)]),...s?{config:s}:{},...n?{usermeta:n}:{}}}const wHe=O9e.version,HHe=Object.freeze(Object.defineProperty({__proto__:null,accessPathDepth:Um,accessPathWithDatum:Mv,accessWithDatumToUnescapedPath:Ft,compile:gHe,contains:ht,deepEqual:Hs,deleteNestedProperty:xX,duplicate:Ae,entries:yo,every:Lv,fieldIntersection:Tv,flatAccessWithDatum:n$,getFirstDefined:xi,hasIntersection:Cv,hasProperty:We,hash:pt,internalField:c$,isBoolean:cp,isEmpty:Bt,isEqual:E9e,isInternalField:r$,isNullOrFalse:zV,isNumeric:f1,keys:Ze,logicalExpr:Gf,mergeDeep:t$,never:e$,normalize:s7,normalizeAngle:rp,omit:as,pick:Em,prefixGenerator:wV,removePathFromField:Fb,replaceAll:Ku,replacePathInField:hl,resetIdCounter:U9e,setEqual:i$,some:Pm,stringify:_t,titleCase:h0,unique:Fc,uniqueId:l$,vals:an,varName:ci,version:wHe},Symbol.toStringTag,{value:"Module"}));function zD(e){const[t,i]=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(e).slice(1,3);return{library:t,version:i}}var NHe="2.15.0",RHe={version:NHe};const Ud="#fff",eC="#888",kHe={background:"#333",view:{stroke:eC},title:{color:Ud,subtitleColor:Ud},style:{"guide-label":{fill:Ud},"guide-title":{fill:Ud}},axis:{domainColor:Ud,gridColor:eC,tickColor:Ud}},Qo="#4572a7",FHe={background:"#fff",arc:{fill:Qo},area:{fill:Qo},line:{stroke:Qo,strokeWidth:2},path:{stroke:Qo},rect:{fill:Qo},shape:{stroke:Qo},symbol:{fill:Qo,strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}}
vendor: 8,778 bytes, line 55
55,Do="#30a2da",SY="#cbcbcb",SHe="#999",LHe="#333",tC="#f0f0f0",iC="#333",CHe={arc:{fill:Do},area:{fill:Do},axis:{domainColor:SY,grid:!0,gridColor:SY,gridWidth:1,labelColor:SHe,labelFontSize:10,titleColor:LHe,tickColor:SY,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisBand:{grid:!1},background:tC,group:{fill:tC},legend:{labelColor:iC,labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:iC,titleFontSize:14,titlePadding:10},line:{stroke:Do,strokeWidth:2},path:{stroke:Do,strokeWidth:.5},rect:{fill:Do},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},point:{filled:!0,shape:"circle"},shape:{stroke:Do},bar:{binSpacing:2,fill:Do,stroke:null},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},Ao="#000",THe={group:{fill:"#e5e5e5"},arc:{fill:Ao},area:{fill:Ao},line:{stroke:Ao},path:{stroke:Ao},rect:{fill:Ao},shape:{stroke:Ao},symbol:{fill:Ao,size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},MHe=22,KHe="normal",nC="Benton Gothic, sans-serif",sC=11.5,BHe="normal",qo="#82c6df",LY="Benton Gothic Bold, sans-serif",lC="normal",cC=13,gh={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"]},_He={background:"#ffffff",title:{anchor:"start",color:"#000000",font:LY,fontSize:MHe,fontWeight:KHe},arc:{fill:qo},area:{fill:qo},line:{stroke:qo,strokeWidth:2},path:{stroke:qo},rect:{fill:qo},shape:{stroke:qo},symbol:{fill:qo,size:30},axis:{labelFont:nC,labelFontSize:sC,labelFontWeight:BHe,titleFont:LY,titleFontSize:cC,titleFontWeight:lC},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:nC,labelFontSize:sC,symbolType:"square",titleFont:LY,titleFontSize:cC,titleFontWeight:lC},range:{category:gh["category-6"],diverging:gh["fireandice-6"],heatmap:gh["fire-7"],ordinal:gh["fire-7"],ramp:gh["fire-7"]}},eu="#ab5787",Ay="#979797",OHe={background:"#f9f9f9",arc:{fill:eu},area:{fill:eu},line:{stroke:eu},path:{stroke:eu},rect:{fill:eu},shape:{stroke:eu},symbol:{fill:eu,size:30},axis:{domainColor:Ay,domainWidth:.5,gridWidth:.2,labelColor:Ay,tickColor:Ay,tickWidth:.2,titleColor:Ay},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},tu="#3e5c69",jHe={background:"#fff",arc:{fill:tu},area:{fill:tu},line:{stroke:tu},path:{stroke:tu},rect:{fill:tu},shape:{stroke:tu},symbol:{fill:tu},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},Us="#1696d2",rC="#000000",EHe="#FFFFFF",qy="Lato",CY="Lato",PHe="Lato",UHe="#DEDDDD",$He=18,vh={"shades-blue":["#CFE8F3","#A2D4EC","#73BFE2","#46ABDB","#1696D2","#12719E","#0A4C6A","#062635"],"six-groups-cat-1":["#1696d2","#ec008b","#fdbf11","#000000","#d2d2d2","#55b748"],"six-groups-seq":["#cfe8f3","#a2d4ec","#73bfe2","#46abdb","#1696d2","#12719e"],"diverging-colors":["#ca5800","#fdbf11","#fdd870","#fff2cf","#cfe8f3","#73bfe2","#1696d2","#0a4c6a"]},QHe={background:EHe,title:{anchor:"start",fontSize:$He,font:qy},axisX:{domain:!0,domainColor:rC,domainWidth:1,grid:!1,labelFontSize:12,labelFont:CY,labelAngle:0,tickColor:rC,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:qy},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:UHe,gridWidth:1,labelFontSize:12,labelFont:CY,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:qy,titleAngle:0,titleY:-10,titleX:18},legend:{labelFontSize:12,labelFont:CY,symbolSize:100,titleFontSize:12,titlePadding:10,titleFont:qy,orient:"right",offset:10},view:{stroke:"transparent"},range:{category:vh["six-groups-cat-1"],diverging:vh["diverging-colors"],heatmap:vh["diverging-colors"],ordinal:vh["six-groups-seq"],ramp:vh["shades-blue"]},area:{fill:Us},rect:{fill:Us},line:{color:Us,stroke:Us,strokeWidth:5},trail:{color:Us,stroke:Us,strokeWidth:0,size:1},path:{stroke:Us,strokeWidth:.5},point:{filled:!0},text:{font:PHe,color:Us,fontSize:11,align:"center",fontWeight:400,size:11},style:{bar:{fill:Us,stroke:null}},arc:{fill:Us},shape:{stroke:Us},symbol:{fill:Us,size:30}},iu="#3366CC",aC="#ccc",eZ="Arial, sans-serif",DHe={arc:{fill:iu},area:{fill:iu},path:{stroke:iu},rect:{fill:iu},shape:{stroke:iu},symbol:{stroke:iu},circle:{fill:iu},background:"#fff",padding:{top:10,right:10,bottom:10,left:10},style:{"guide-label":{font:eZ,fontSize:12},"guide-title":{font:eZ,fontSize:12},"group-title":{font:eZ,fontSize:12}},title:{font:eZ,fontSize:14,fontWeight:"bold",dy:-3,anchor:"start"},axis:{gridColor:aC,tickColor:aC,domain:!1,grid:!0},range:{category:["#4285F4","#DB4437","#F4B400","#0F9D58","#AB47BC","#00ACC1","#FF7043","#9E9D24","#5C6BC0","#F06292","#00796B","#C2185B"],heatmap:["#c6dafc","#5e97f6","#2a56c6"]}},ow=e=>e*(1/3+1),oC=ow(9),uC=ow(10),dC=ow(12),zh="Segoe UI",mC="wf_standard-font, helvetica, arial, sans-serif",bC="#252423",wh="#605E5C",hC="transparent",AHe="#C8C6C4",Vl="#118DFF",qHe="#12239E",eNe="#E66C37",tNe="#6B007B",iNe="#E044A7",nNe="#744EC2",sNe="#D9B300",lNe="#D64550",wD=Vl,HD="#DEEFFF",fC=[HD,wD],cNe=[HD,"#c7e4ff","#b0d9ff","#9aceff","#83c3ff","#6cb9ff","#55aeff","#3fa3ff","#2898ff",wD],rNe={view:{stroke:hC},background:hC,font:zh,header:{titleFont:mC,titleFontSize:dC,titleColor:bC,labelFont:zh,labelFontSize:uC,labelColor:wh},axis:{ticks:!1,grid:!1,domain:!1,labelColor:wh,labelFontSize:oC,titleFont:mC,titleColor:bC,titleFontSize:dC,titleFontWeight:"normal"},axisQuantitative:{tickCount:3,grid:!0,gridColor:AHe,gridDash:[1,5],labelFlush:!1},axisBand:{tickExtra:!0},axisX:{labelPadding:5},axisY:{labelPadding:10},bar:{fill:Vl},line:{stroke:Vl,strokeWidth:3,strokeCap:"round",strokeJoin:"round"},text:{font:zh,fontSize:oC,fill:wh},arc:{fill:Vl},area:{fill:Vl,line:!0,opacity:.6},path:{stroke:Vl},rect:{fill:Vl},point:{fill:Vl,filled:!0,size:75},shape:{stroke:Vl},symbol:{fill:Vl,strokeWidth:1.5,size:50},legend:{titleFont:zh,titleFontWeight:"bold",titleColor:wh,labelFont:zh,labelFontSize:uC,labelColor:wh,symbolType:"circle",symbolSize:75},range:{category:[Vl,qHe,eNe,tNe,iNe,nNe,sNe,lNe],diverging:fC,heatmap:fC,ordinal:cNe}},TY='IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,".sfnstext-regular",sans-serif',aNe='IBM Plex Sans Condensed, system-ui, -apple-system, BlinkMacSystemFont, ".SFNSText-Regular", sans-serif',MY=400,tZ={textPrimary:{g90:"#f4f4f4",g100:"#f4f4f4",white:"#161616",g10:"#161616"},textSecondary:{g90:"#c6c6c6",g100:"#c6c6c6",white:"#525252",g10:"#525252"},layerAccent01:{white:"#e0e0e0",g10:"#e0e0e0",g90:"#525252",g100:"#393939"},gridBg:{white:"#ffffff",g10:"#ffffff",g90:"#161616",g100:"#161616"}},oNe=["#8a3ffc","#33b1ff","#007d79","#ff7eb6","#fa4d56","#fff1f1","#6fdc8c","#4589ff","#d12771","#d2a106","#08bdba","#bae6ff","#ba4e00","#d4bbff"],uNe=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"];function aJ({theme:e,background:t}){const i=["white","g10"].includes(e)?"light":"dark",n=tZ.gridBg[e],s=tZ.textPrimary[e],l=tZ.textSecondary[e],c=i==="dark"?oNe:uNe,r=i==="dark"?"#d4bbff":"#6929c4";return{background:t,arc:{fill:r},area:{fill:r},path:{stroke:r},rect:{fill:r},shape:{stroke:r},symbol:{stroke:r},circle:{fill:r},view:{fill:n,stroke:n},group:{fill:n},title:{color:s,anchor:"start",dy:-15,fontSize:16,font:TY,fontWeight:600},axis:{labelColor:l,labelFontSize:12,labelFont:aNe,labelFontWeight:MY,titleColor:s,titleFontWeight:600,titleFontSize:12,grid:!0,gridColor:tZ.layerAccent01[e],labelAngle:0},axisX:{titlePadding:10},axisY:{titlePadding:2.5},style:{"guide-label":{font:TY,fill:l,fontWeight:MY},"guide-title":{font:TY,fill:l,fontWeight:MY}},range:{category:c,diverging:["#750e13","#a2191f","#da1e28","#fa4d56","#ff8389","#ffb3b8","#ffd
557d9","#fff1f1","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d"],heatmap:["#f6f2ff","#e8daff","#d4bbff","#be95ff","#a56eff","#8a3ffc","#6929c4","#491d8b","#31135e","#1c0f30"]}}}const dNe=aJ({theme:"white",background:"#ffffff"}),mNe=aJ({theme:"g10",background:"#f4f4f4"}),bNe=aJ({theme:"g90",background:"#262626"}),hNe=aJ({theme:"g100",background:"#161616"}),fNe=RHe.version,pNe=Object.freeze(Object.defineProperty({__proto__:null,carbong10:mNe,carbong100:hNe,carbong90:bNe,carbonwhite:dNe,dark:kHe,excel:FHe,fivethirtyeight:CHe,ggplot2:THe,googlecharts:DHe,latimes:_He,powerbi:rNe,quartz:OHe,urbaninstitute:QHe,version:fNe,vox:jHe},Symbol.toStringTag,{value:"Module"}));function yNe(e,t,i,n){if(fe(e))return`[${e.map(s=>t(He(s)?s:pC(s,i))).join(", ")}]`;if(we(e)){let s="";const{title:l,image:c,...r}=e;l&&(s+=`<h2>${t(l)}</h2>`),c&&(s+=`<img src="${new URL(t(c),n||location.href).href}">`);const a=Object.keys(r);if(a.length>0){s+="<table>";for(const u of a){let o=r[u];o!==void 0&&(we(o)&&(o=pC(o,i)),s+=`<tr><td class="key">${t(u)}</td><td class="value">${t(o)}</td></tr>`)}s+="</table>"}return s||"{}"}return t(e)}function ZNe(e){const t=[];return function(i,n){if(typeof n!="object"||n===null)return n;const s=t.indexOf(this)+1;return t.length=s,t.length>e?"[Object]":t.indexOf(n)>=0?"[Circular]":(t.push(n),n)}}function pC(e,t){return JSON.stringify(e,ZNe(t))}var WNe=`#vg-tooltip-element { 56 visibility: hidden; 57 padding: 8px; 58 position: fixed; 59 z-index: 1000; 60 font-family: sans-serif; 61 font-size: 11px; 62 border-radius: 3px; 63 box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); 64 /* The default theme is the light theme. */ 65 background-color: rgba(255, 255, 255, 0.95); 66 border: 1px solid #d9d9d9; 67 color: black; 68} 69#vg-tooltip-element.visible { 70 visibility: visible; 71} 72#vg-tooltip-element h2 { 73 margin-top: 0; 74 margin-bottom: 10px; 75 font-size: 13px; 76} 77#vg-tooltip-element table { 78 border-spacing: 0; 79} 80#vg-tooltip-element table tr { 81 border: none; 82} 83#vg-tooltip-element table tr td { 84 overflow: hidden; 85 text-overflow: ellipsis; 86 padding-top: 2px; 87 padding-bottom: 2px; 88} 89#vg-tooltip-element table tr td.key { 90 color: #808080; 91 max-width: 150px; 92 text-align: right; 93 padding-right: 4px; 94} 95#vg-tooltip-element table tr td.value { 96 display: block; 97 max-width: 300px; 98 max-height: 7em; 99 text-align: left; 100} 101#vg-tooltip-element.dark-theme { 102 background-color: rgba(32, 32, 32, 0.9); 103 border: 1px solid #f5f5f5; 104 color: white; 105} 106#vg-tooltip-element.dark-theme td.key { 107 color: #bfbfbf; 108} 109`;const ND="vg-tooltip-element",XNe={offsetX:10,offsetY:10,id:ND,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:JNe,maxDepth:2,formatTooltip:yNe,baseURL:"",anchor:"cursor",position:["top","bottom","left","right","top-left","top-right","bottom-left","bottom-right"]};function JNe(e){return String(e).replace(/&/g,"&").replace(/</g,"<")}function xNe(e){if(!/^[A-Za-z]+[-:.\w]*$/.test(e))throw new Error("Invalid HTML ID");return WNe.toString().replace(ND,e)}function RD(e,t,{offsetX:i,offsetY:n}){const s=kD({x1:e.clientX,x2:e.clientX,y1:e.clientY,y2:e.clientY},t,i,n),l=["bottom-right","bottom-left","top-right","top-left"];for(const c of l)if(FD(s[c],t))return s[c];return s["top-left"]}function YNe(e,t,i,n,s){const{position:l,offsetX:c,offsetY:r}=s,a=e._el.getBoundingClientRect(),u=e._origin,o=GNe(a,u,i),d=kD(o,n,c,r),b=Array.isArray(l)?l:[l];for(const h of b)if(FD(d[h],n)&&!VNe(t,d[h],n))return d[h];return RD(t,n,s)}function GNe(e,t,i){const n=i.isVoronoi?i.datum.bounds:i.bounds;let s=e.left+t[0]+n.x1,l=e.top+t[1]+n.y1,c=i;for(;c.mark.group;)c=c.mark.group,s+=c.x??0,l+=c.y??0;const r=n.x2-n.x1,a=n.y2-n.y1;return{x1:s,x2:s+r,y1:l,y2:l+a}}function kD(e,t,i,n){const s=(e.x1+e.x2)/2,l=(e.y1+e.y2)/2,c=e.x1-t.width-i,r=s-t.width/2,a=e.x2+i,u=e.y1-t.height-n,o=l-t.height/2,d=e.y2+n;return{top:{x:r,y:u},bottom:{x:r,y:d},left:{x:c,y:o},right:{x:a,y:o},"top-left":{x:c,y:u},"top-right":{x:a,y:u},"bottom-left":{x:c,y:d},"bottom-right":{x:a,y:d}}}function FD(e,t){return e.x>=0&&e.y>=0&&e.x+t.width<=window.innerWidth&&e.y+t.height<=window.innerHeight}function VNe(e,t,i){return e.clientX>=t.x&&e.clientX<=t.x+i.width&&e.clientY>
vendor: 10,585 bytes, lines 109-118
109=t.y&&e.clientY<=t.y+i.height}class INe{constructor(t){this.options={...XNe,...t};const i=this.options.id;if(this.el=null,this.call=this.tooltipHandler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const n=document.createElement("style");n.setAttribute("id",this.options.styleId),n.innerHTML=xNe(i);const s=document.head;s.childNodes.length>0?s.insertBefore(n,s.childNodes[0]):s.appendChild(n)}}tooltipHandler(t,i,n,s){if(this.el=document.getElementById(this.options.id),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip"),(document.fullscreenElement??document.body).appendChild(this.el)),s==null||s===""){this.el.classList.remove("visible",`${this.options.theme}-theme`);return}this.el.innerHTML=this.options.formatTooltip(s,this.options.sanitize,this.options.maxDepth,this.options.baseURL),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:l,y:c}=this.options.anchor==="mark"?YNe(t,i,n,this.el.getBoundingClientRect(),this.options):RD(i,this.el.getBoundingClientRect(),this.options);this.el.style.top=`${c}px`,this.el.style.left=`${l}px`}}var KY={};/*! 110 * https://github.com/Starcounter-Jack/JSON-Patch 111 * (c) 2017-2022 Joachim Wester 112 * MIT licensed 113 */var gNe=function(){var e=function(t,i){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,s){n.__proto__=s}||function(n,s){for(var l in s)s.hasOwnProperty(l)&&(n[l]=s[l])},e(t,i)};return function(t,i){e(t,i);function n(){this.constructor=t}t.prototype=i===null?Object.create(i):(n.prototype=i.prototype,new n)}}(),vNe=Object.prototype.hasOwnProperty;function lI(e,t){return vNe.call(e,t)}function cI(e){if(Array.isArray(e)){for(var t=new Array(e.length),i=0;i<t.length;i++)t[i]=""+i;return t}if(Object.keys)return Object.keys(e);var n=[];for(var s in e)lI(e,s)&&n.push(s);return n}function Ns(e){switch(typeof e){case"object":return JSON.parse(JSON.stringify(e));case"undefined":return null;default:return e}}function rI(e){for(var t=0,i=e.length,n;t<i;){if(n=e.charCodeAt(t),n>=48&&n<=57){t++;continue}return!1}return!0}function cu(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function SD(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function aI(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,i=e.length;t<i;t++)if(aI(e[t]))return!0}else if(typeof e=="object"){for(var n=cI(e),s=n.length,l=0;l<s;l++)if(aI(e[n[l]]))return!0}}return!1}function yC(e,t){var i=[e];for(var n in t){var s=typeof t[n]=="object"?JSON.stringify(t[n],null,2):t[n];typeof s<"u"&&i.push(n+": "+s)}return i.join(` 114`)}var LD=function(e){gNe(t,e);function t(i,n,s,l,c){var r=this.constructor,a=e.call(this,yC(i,{name:n,index:s,operation:l,tree:c}))||this;return a.name=n,a.index=s,a.operation=l,a.tree=c,Object.setPrototypeOf(a,r.prototype),a.message=yC(i,{name:n,index:s,operation:l,tree:c}),a}return t}(Error),fi=LD,zNe=Ns,um={add:function(e,t,i){return e[t]=this.value,{newDocument:i}},remove:function(e,t,i){var n=e[t];return delete e[t],{newDocument:i,removed:n}},replace:function(e,t,i){var n=e[t];return e[t]=this.value,{newDocument:i,removed:n}},move:function(e,t,i){var n=LX(i,this.path);n&&(n=Ns(n));var s=Yu(i,{op:"remove",path:this.from}).removed;return Yu(i,{op:"add",path:this.path,value:s}),{newDocument:i,removed:n}},copy:function(e,t,i){var n=LX(i,this.from);return Yu(i,{op:"add",path:this.path,value:Ns(n)}),{newDocument:i}},test:function(e,t,i){return{newDocument:i,test:hp(e[t],this.value)}},_get:function(e,t,i){return this.value=e[t],{newDocument:i}}},wNe={add:function(e,t,i){return rI(t)?e.splice(t,0,this.value):e[t]=this.value,{newDocument:i,index:t}},remove:function(e,t,i){var n=e.splice(t,1);return{newDocument:i,removed:n[0]}},replace:function(e,t,i){var n=e[t];return e[t]=this.value,{newDocument:i,removed:n}},move:um.move,copy:um.copy,test:um.test,_get:um._get};function LX(e,t){if(t=="")return e;var i={op:"_get",path:t};return Yu(e,i),i.value}function Yu(e,t,i,n,s,l){if(i===void 0&&(i=!1),n===void 0&&(n=!0),s===void 0&&(s=!0),l===void 0&&(l=0),i&&(typeof i=="function"?i(t,0,e,t.path):CX(t,0)),t.path===""){var c={newDocument:e};if(t.op==="add")return c.newDocument=t.value,c;if(t.op==="replace")return c.newDocument=t.value,c.removed=e,c;if(t.op==="move"||t.op==="copy")return c.newDocument=LX(e,t.from),t.op==="move"&&(c.removed=e),c;if(t.op==="test"){if(c.test=hp(e,t.value),c.test===!1)throw new fi("Test operation failed","TEST_OPERATION_FAILED",l,t,e);return c.newDocument=e,c}else{if(t.op==="remove")return c.removed=e,c.newDocument=null,c;if(t.op==="_get")return t.value=e,c;if(i)throw new fi("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",l,t,e);return c}}else{n||(e=Ns(e));var r=t.path||"",a=r.split("/"),u=e,o=1,d=a.length,b=void 0,h=void 0,p=void 0;for(typeof i=="function"?p=i:p=CX;;){if(h=a[o],h&&h.indexOf("~")!=-1&&(h=SD(h)),s&&(h=="__proto__"||h=="prototype"&&o>0&&a[o-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(i&&b===void 0&&(u[h]===void 0?b=a.slice(0,o).join("/"):o==d-1&&(b=t.path),b!==void 0&&p(t,0,e,b)),o++,Array.isArray(u)){if(h==="-")h=u.length;else{if(i&&!rI(h))throw new fi("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",l,t,e);rI(h)&&(h=~~h)}if(o>=d){if(i&&t.op==="add"&&h>u.length)throw new fi("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",l,t,e);var c=wNe[t.op].call(t,u,h,e);if(c.test===!1)throw new fi("Test operation failed","TEST_OPERATION_FAILED",l,t,e);return c}}else if(o>=d){var c=um[t.op].call(t,u,h,e);if(c.test===!1)throw new fi("Test operation failed","TEST_OPERATION_FAILED",l,t,e);return c}if(u=u[h],i&&o<d&&(!u||typeof u!="object"))throw new fi("Cannot perform operation at the desired path","OPERATION_PATH_UNRESOLVABLE",l,t,e)}}}function oJ(e,t,i,n,s){if(n===void 0&&(n=!0),s===void 0&&(s=!0),i&&!Array.isArray(t))throw new fi("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");n||(e=Ns(e));for(var l=new Array(t.length),c=0,r=t.length;c<r;c++)l[c]=Yu(e,t[c],i,!0,s,c),e=l[c].newDocument;return l.newDocument=e,l}function HNe(e,t,i){var n=Yu(e,t);if(n.test===!1)throw new fi("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return n.newDocument}function CX(e,t,i,n){if(typeof e!="object"||e===null||Array.isArray(e))throw new fi("Operation is not an object","OPERATION_NOT_AN_OBJECT",t,e,i);if(um[e.op]){if(typeof e.path!="string")throw new fi("Operation `path` property is not a string","OPERATION_PATH_INVALID",t,e,i);if(e.path.indexOf("/")!==0&&e.path.length>0)throw new fi('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,i);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new fi("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,i);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new fi("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,i);if((e.op==="add"||e.op==="replace"||e.op==="test")&&aI(e.value))throw new fi("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,i);if(i){if(e.op=="add"){var s=e.path.split("/").length,l=n.split("/").length;if(s!==l+1&&s!==l)throw new fi("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,i)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new fi("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,i)}else if(e.op==="move"||e.op==="copy"){var c={op:"_get",path:e.from,value:void 0},r=CD([c],i);if(r&&r.name==="OPERATION_PATH_UNRESOLVABLE")throw new fi("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,i)}}}else throw new fi("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,i)}function CD(e,t,i){try{if(!Array.isArray(e))throw new fi("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)oJ(Ns(t),Ns(e),i||!0);else{i=i||CX;for(var n=0;n<e.length;n++)i(e[n],n,t,void 0)}}catch(s){if(s instanceof fi)return s;throw s}}function hp(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){var i=Array.isArray(e),n=Array.isArray(t),s,l,c;if(i&&n){if(l=e.length,l!=t.length)return!1;for(s=l;s--!==0;)if(!hp(e[s],t[s]))return!1;return!0}if(i!=n)return!1;var r=Object.keys(e);if(l=r.length,l!==Object.keys(t).length)return!1;for(s=l;s--!==0;)if(!t.hasOwnProperty(r[s]))return!1;for(s=l;s--!==0;)if(c=r[s],!hp(e[c],t[c]))return!1;return!0}return e!==e&&t!==t}var NNe=Object.freeze({__proto__:null,JsonPatchError:fi,_areEquals:hp,applyOperation:Yu,applyPatch:oJ,applyReducer:HNe,deepClone:zNe,getValueByPointer:LX,validate:CD,validator:CX});/*! 115 * https://github.com/Starcounter-Jack/JSON-Patch 116 * (c) 2017-2021 Joachim Wester 117 * MIT license 118 */var uw=new WeakMap,RNe=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),kNe=function(){function e(t,i){this.callback=t,this.observer=i}return e}();function FNe(e){return uw.get(e)}function SNe(e,t){return e.observers.get(t)}function LNe(e,t){e.observers.delete(t.callback)}function CNe(e,t){t.unobserve()}function TNe(e,t){var i=[],n,s=FNe(e);if(!s)s=new RNe(e),uw.set(e,s);else{var l=SNe(s,t);n=l&&l.observer}if(n)return n;if(n={},s.value=Ns(e),t){n.callback=t,n.next=null;var c=function(){oI(n)},r=function(){clearTimeout(n.next),n.next=setTimeout(c)};typeof window<"u"&&(window.addEventListener("mouseup",r),window.addEventListener("keyup",r),window.addEventListener("mousedown",r),window.addEventListener("keydown",r),window.addEventListener("change",r))}return n.patches=i,n.object=e,n.unobserve=function(){oI(n),clearTimeout(n.next),LNe(s,n),typeof window<"u"&&(window.removeEventListener("mouseup",r),window.removeEventListener("keyup",r),window.removeEventListener("mousedown",r),window.removeEventListener("keydown",r),window.removeEventListener("change",r))},s.observers.set(t,new kNe(t,n)),n}
118function oI(e,t){t===void 0&&(t=!1);var i=uw.get(e.object);dw(i.value,e.object,e.patches,"",t),e.patches.length&&oJ(i.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function dw(e,t,i,n,s){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var l=cI(t),c=cI(e),r=!1,a=c.length-1;a>=0;a--){var u=c[a],o=e[u];if(lI(t,u)&&!(t[u]===void 0&&o!==void 0&&Array.isArray(t)===!1)){var d=t[u];typeof o=="object"&&o!=null&&typeof d=="object"&&d!=null&&Array.isArray(o)===Array.isArray(d)?dw(o,d,i,n+"/"+cu(u),s):o!==d&&(s&&i.push({op:"test",path:n+"/"+cu(u),value:Ns(o)}),i.push({op:"replace",path:n+"/"+cu(u),value:Ns(d)}))}else Array.isArray(e)===Array.isArray(t)?(s&&i.push({op:"test",path:n+"/"+cu(u),value:Ns(o)}),i.push({op:"remove",path:n+"/"+cu(u)}),r=!0):(s&&i.push({op:"test",path:n,value:e}),i.push({op:"replace",path:n,value:t}))}if(!(!r&&l.length==c.length))for(var a=0;a<l.length;a++){var u=l[a];!lI(e,u)&&t[u]!==void 0&&i.push({op:"add",path:n+"/"+cu(u),value:Ns(t[u])})}}}function MNe(e,t,i){i===void 0&&(i=!1);var n=[];return dw(e,t,n,"",i),n}var KNe=Object.freeze({__proto__:null,compare:MNe,generate:oI,observe:TNe,unobserve:CNe});Object.assign({},NNe,KNe,{JsonPatchError:LD,deepClone:Ns,escapePathComponent:cu,unescapePathComponent:SD});function BNe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var BY,ZC;function _Ne(){if(ZC)return BY;ZC=1;class e{constructor(){this.max=1e3,this.map=new Map}get(i){const n=this.map.get(i);if(n!==void 0)return this.map.delete(i),this.map.set(i,n),n}delete(i){return this.map.delete(i)}set(i,n){if(!this.delete(i)&&n!==void 0){if(this.map.size>=this.max){const l=this.map.keys().next().value;this.delete(l)}this.map.set(i,n)}return this}}return BY=e,BY}var _Y,WC;function mw(){if(WC)return _Y;WC=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return _Y=n=>n?typeof n!="object"?e:n:t,_Y}var iZ={exports:{}},OY,XC;function bw(){if(XC)return OY;XC=1;const e="2.0.0",t=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,s=t-6;return OY={MAX_LENGTH:t,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:s,MAX_SAFE_INTEGER:i,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},OY}var jY,JC;function uJ(){return JC||(JC=1,jY=typeof process=="object"&&KY&&KY.NODE_DEBUG&&/\bsemver\b/i.test(KY.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{}),jY}var xC;function hw(){return xC||(xC=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:i,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:s}=bw(),l=uJ();t=e.exports={};const c=t.re=[],r=t.safeRe=[],a=t.src=[],u=t.t={};let o=0;const d="[a-zA-Z0-9-]",b=[["\\s",1],["\\d",s],[d,n]],h=Z=>{for(const[X,J]of b)Z=Z.split(`${X}*`).join(`${X}{0,${J}}`).split(`${X}+`).join(`${X}{1,${J}}`);return Z},p=(Z,X,J)=>{const V=h(X),g=o++;l(Z,g,X),u[Z]=g,a[g]=X,c[g]=new RegExp(X,J?"g":void 0),r[g]=new RegExp(V,J?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),p("MAINVERSION",`(${a[u.NUMERICIDENTIFIER]})\\.(${a[u.NUMERICIDENTIFIER]})\\.(${a[u.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${a[u.NUMERICIDENTIFIERLOOSE]})\\.(${a[u.NUMERICIDENTIFIERLOOSE]})\\.(${a[u.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${a[u.NUMERICIDENTIFIER]}|${a[u.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${a[u.NUMERICIDENTIFIERLOOSE]}|${a[u.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${a[u.PRERELEASEIDENTIFIER]}(?:\\.${a[u.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${a[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[u.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${d}+`),p("BUILD",`(?:\\+(${a[u.BUILDIDENTIFIER]}(?:\\.${a[u.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${a[u.MAINVERSION]}${a[u.PRERELEASE]}?${a[u.BUILD]}?`),p("FULL",`^${a[u.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${a[u.MAINVERSIONLOOSE]}${a[u.PRERELEASELOOSE]}?${a[u.BUILD]}?`),p("LOOSE",`^${a[u.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${a[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${a[u.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${a[u.XRANGEIDENTIFIER]})(?:\\.(${a[u.XRANGEIDENTIFIER]})(?:\\.(${a[u.XRANGEIDENTIFIER]})(?:${a[u.PRERELEASE]})?${a[u.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${a[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[u.XRANGEIDENTIFIERLOOSE]})(?:${a[u.PRERELEASELOOSE]})?${a[u.BUILD]}?)?)?`),p("XRANGE",`^${a[u.GTLT]}\\s*${a[u.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${a[u.GTLT]}\\s*${a[u.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?`),p("COERCE",`${a[u.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",a[u.COERCEPLAIN]+`(?:${a[u.PRERELEASE]})?(?:${a[u.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",a[u.COERCE],!0),p("COERCERTLFULL",a[u.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${a[u.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",p("TILDE",`^${a[u.LONETILDE]}${a[u.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${a[u.LONETILDE]}${a[u.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${a[u.LONECARET]}
118\\s+`,!0),t.caretTrimReplace="$1^",p("CARET",`^${a[u.LONECARET]}${a[u.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${a[u.LONECARET]}${a[u.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${a[u.GTLT]}\\s*(${a[u.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${a[u.GTLT]}\\s*(${a[u.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${a[u.GTLT]}\\s*(${a[u.LOOSEPLAIN]}|${a[u.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${a[u.XRANGEPLAIN]})\\s+-\\s+(${a[u.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${a[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[u.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(iZ,iZ.exports)),iZ.exports}var EY,YC;function ONe(){if(YC)return EY;YC=1;const e=/^[0-9]+$/,t=(n,s)=>{const l=e.test(n),c=e.test(s);return l&&c&&(n=+n,s=+s),n===s?0:l&&!c?-1:c&&!l?1:n<s?-1:1};return EY={compareIdentifiers:t,rcompareIdentifiers:(n,s)=>t(s,n)},EY}var PY,GC;function fw(){if(GC)return PY;GC=1;const e=uJ(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:i}=bw(),{safeRe:n,t:s}=hw(),l=mw(),{compareIdentifiers:c}=ONe();class r{constructor(u,o){if(o=l(o),u instanceof r){if(u.loose===!!o.loose&&u.includePrerelease===!!o.includePrerelease)return u;u=u.version}else if(typeof u!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof u}".`);if(u.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",u,o),this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease;const d=u.trim().match(o.loose?n[s.LOOSE]:n[s.FULL]);if(!d)throw new TypeError(`Invalid Version: ${u}`);if(this.raw=u,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(b=>{if(/^[0-9]+$/.test(b)){const h=+b;if(h>=0&&h<i)return h}return b}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(u){if(e("SemVer.compare",this.version,this.options,u),!(u instanceof r)){if(typeof u=="string"&&u===this.version)return 0;u=new r(u,this.options)}return u.version===this.version?0:this.compareMain(u)||this.comparePre(u)}compareMain(u){return u instanceof r||(u=new r(u,this.options)),c(this.major,u.major)||c(this.minor,u.minor)||c(this.patch,u.patch)}comparePre(u){if(u instanceof r||(u=new r(u,this.options)),this.prerelease.length&&!u.prerelease.length)return-1;if(!this.prerelease.length&&u.prerelease.length)return 1;if(!this.prerelease.length&&!u.prerelease.length)return 0;let o=0;do{const d=this.prerelease[o],b=u.prerelease[o];if(e("prerelease compare",o,d,b),d===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(d===void 0)return-1;if(d===b)continue;return c(d,b)}while(++o)}compareBuild(u){u instanceof r||(u=new r(u,this.options));let o=0;do{const d=this.build[o],b=u.build[o];if(e("build compare",o,d,b),d===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(d===void 0)return-1;if(d===b)continue;return c(d,b)}while(++o)}inc(u,o,d){switch(u){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",o,d);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",o,d);break;case"prepatch":this.prerelease.length=0,this.inc("patch",o,d),this.inc("pre",o,d);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",o,d),this.inc("pre",o,d);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const b=Number(d)?1:0;if(!o&&d===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[b];else{let h=this.prerelease.length;for(;--h>=0;)typeof this.prerelease[h]=="number"&&(this.prerelease[h]++,h=-2);if(h===-1){if(o===this.prerelease.join(".")&&d===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(b)}}if(o){let h=[o,b];d===!1&&(h=[o]),c(this.prerelease[0],o)===0?isNaN(this.prerelease[1])&&(this.prerelease=h):this.prerelease=h}break}
vendor: 4,648 bytes, line 118
118default:throw new Error(`invalid increment argument: ${u}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return PY=r,PY}var UY,VC;function _b(){if(VC)return UY;VC=1;const e=fw();return UY=(i,n,s)=>new e(i,s).compare(new e(n,s)),UY}var $Y,IC;function jNe(){if(IC)return $Y;IC=1;const e=_b();return $Y=(i,n,s)=>e(i,n,s)===0,$Y}var QY,gC;function ENe(){if(gC)return QY;gC=1;const e=_b();return QY=(i,n,s)=>e(i,n,s)!==0,QY}var DY,vC;function PNe(){if(vC)return DY;vC=1;const e=_b();return DY=(i,n,s)=>e(i,n,s)>0,DY}var AY,zC;function UNe(){if(zC)return AY;zC=1;const e=_b();return AY=(i,n,s)=>e(i,n,s)>=0,AY}var qY,wC;function $Ne(){if(wC)return qY;wC=1;const e=_b();return qY=(i,n,s)=>e(i,n,s)<0,qY}var e9,HC;function QNe(){if(HC)return e9;HC=1;const e=_b();return e9=(i,n,s)=>e(i,n,s)<=0,e9}var t9,NC;function DNe(){if(NC)return t9;NC=1;const e=jNe(),t=ENe(),i=PNe(),n=UNe(),s=$Ne(),l=QNe();return t9=(r,a,u,o)=>{switch(a){case"===":return typeof r=="object"&&(r=r.version),typeof u=="object"&&(u=u.version),r===u;case"!==":return typeof r=="object"&&(r=r.version),typeof u=="object"&&(u=u.version),r!==u;case"":case"=":case"==":return e(r,u,o);case"!=":return t(r,u,o);case">":return i(r,u,o);case">=":return n(r,u,o);case"<":return s(r,u,o);case"<=":return l(r,u,o);default:throw new TypeError(`Invalid operator: ${a}`)}},t9}var i9,RC;function ANe(){if(RC)return i9;RC=1;const e=Symbol("SemVer ANY");class t{static get ANY(){return e}constructor(o,d){if(d=i(d),o instanceof t){if(o.loose===!!d.loose)return o;o=o.value}o=o.trim().split(/\s+/).join(" "),c("comparator",o,d),this.options=d,this.loose=!!d.loose,this.parse(o),this.semver===e?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(o){const d=this.options.loose?n[s.COMPARATORLOOSE]:n[s.COMPARATOR],b=o.match(d);if(!b)throw new TypeError(`Invalid comparator: ${o}`);this.operator=b[1]!==void 0?b[1]:"",this.operator==="="&&(this.operator=""),b[2]?this.semver=new r(b[2],this.options.loose):this.semver=e}toString(){return this.value}test(o){if(c("Comparator.test",o,this.options.loose),this.semver===e||o===e)return!0;if(typeof o=="string")try{o=new r(o,this.options)}catch{return!1}return l(o,this.operator,this.semver,this.options)}intersects(o,d){if(!(o instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new a(o.value,d).test(this.value):o.operator===""?o.value===""?!0:new a(this.value,d).test(o.semver):(d=i(d),d.includePrerelease&&(this.value==="<0.0.0-0"||o.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||o.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&o.operator.startsWith(">")||this.operator.startsWith("<")&&o.operator.startsWith("<")||this.semver.version===o.semver.version&&this.operator.includes("=")&&o.operator.includes("=")||l(this.semver,"<",o.semver,d)&&this.operator.startsWith(">")&&o.operator.startsWith("<")||l(this.semver,">",o.semver,d)&&this.operator.startsWith("<")&&o.operator.startsWith(">")))}}i9=t;const i=mw(),{safeRe:n,t:s}=hw(),l=DNe(),c=uJ(),r=fw(),a=TD();return i9}var n9,kC;function TD(){if(kC)return n9;kC=1;const e=/\s+/g;class t{constructor(_,j){if(j=s(j),_ instanceof t)return _.loose===!!j.loose&&_.includePrerelease===!!j.includePrerelease?_:new t(_.raw,j);if(_ instanceof l)return this.raw=_.value,this.set=[[_]],this.formatted=void 0,this;if(this.options=j,this.loose=!!j.loose,this.includePrerelease=!!j.includePrerelease,this.raw=_.trim().replace(e," "),this.set=this.raw.split("||").map(U=>this.parseRange(U.trim())).filter(U=>U.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const U=this.set[0];if(this.set=this.set.filter($=>!Z($[0])),this.set.length===0)this.set=[U];else if(this.set.length>1){for(const $ of this.set)if($.length===1&&X($[0])){this.set=[$];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let _=0;_<this.set.length;_++){_>0&&(this.formatted+="||");const j=this.set[_];for(let U=0;U<j.length;U++)U>0&&(this.formatted+=" "),this.formatted+=j[U].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(_){const U=((this.options.includePrerelease&&h)|(this.options.loose&&p))+":"+_,$=n.get(U);if($)return $;const te=this.options.loose,E=te?a[u.HYPHENRANGELOOSE]:a[u.HYPHENRANGE];_=_.replace(E,R(this.options.includePrerelease)),c("hyphen replace",_),_=_.replace(a[u.COMPARATORTRIM],o),c("comparator trim",_),_=_.replace(a[u.TILDETRIM],d),c("tilde trim",_),_=_.replace(a[u.CARETTRIM],b),c("c
118aret trim",_);let ie=_.split(" ").map(ne=>V(ne,this.options)).join(" ").split(/\s+/).map(ne=>x(ne,this.options));te&&(ie=ie.filter(ne=>(c("loose invalid filter",ne,this.options),!!ne.match(a[u.COMPARATORLOOSE])))),c("range list",ie);const ee=new Map,A=ie.map(ne=>new l(ne,this.options));for(const ne of A){if(Z(ne))return[ne];ee.set(ne.value,ne)}ee.size>1&&ee.has("")&&ee.delete("");const le=[...ee.values()];return n.set(U,le),le}intersects(_,j){if(!(_ instanceof t))throw new TypeError("a Range is required");return this.set.some(U=>J(U,j)&&_.set.some($=>J($,j)&&U.every(te=>$.every(E=>te.intersects(E,j)))))}test(_){if(!_)return!1;if(typeof _=="string")try{_=new r(_,this.options)}catch{return!1}for(let j=0;j<this.set.length;j++)if(K(this.set[j],_,this.options))return!0;return!1}}n9=t;const i=_Ne(),n=new i,s=mw(),l=ANe(),c=uJ(),r=fw(),{safeRe:a,t:u,comparatorTrimReplace:o,tildeTrimReplace:d,caretTrimReplace:b}=hw(),{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:p}=bw(),Z=B=>B.value==="<0.0.0-0",X=B=>B.value==="",J=(B,_)=>{let j=!0;const U=B.slice();let $=U.pop();for(;j&&U.length;)j=U.every(te=>$.intersects(te,_)),$=U.pop();return j},V=(B,_)=>(c("comp",B,_),B=k(B,_),c("caret",B),B=I(B,_),c("tildes",B),B=C(B,_),c("xrange",B),B=w(B,_),c("stars",B),B),g=B=>!B||B.toLowerCase()==="x"||B==="*",I=(B,_)=>B.trim().split(/\s+/).map(j=>v(j,_)).join(" "),v=(B,_)=>{const j=_.loose?a[u.TILDELOOSE]:a[u.TILDE];return B.replace(j,(U,$,te,E,ie)=>{c("tilde",B,U,$,te,E,ie);let ee;return g($)?ee="":g(te)?ee=`>=${$}.0.0 <${+$+1}.0.0-0`:g(E)?ee=`>=${$}.${te}.0 <${$}.${+te+1}.0-0`:ie?(c("replaceTilde pr",ie),ee=`>=${$}.${te}.${E}-${ie} <${$}.${+te+1}.0-0`):ee=`>=${$}.${te}.${E} <${$}.${+te+1}.0-0`,c("tilde return",ee),ee})},k=(B,_)=>B.trim().split(/\s+/).map(j=>N(j,_)).join(" "),N=(B,_)=>{c("caret",B,_);const j=_.loose?a[u.CARETLOOSE]:a[u.CARET],U=_.includePrerelease?"-0":"";return B.replace(j,($,te,E,ie,ee)=>{c("caret",B,$,te,E,ie,ee);let A;return g(te)?A="":g(E)?A=`>=${te}.0.0${U} <${+te+1}.0.0-0`:g(ie)?te==="0"?A=`>=${te}.${E}.0${U} <${te}.${+E+1}.0-0`:A=`>=${te}.${E}.0${U} <${+te+1}.0.0-0`:ee?(c("replaceCaret pr",ee),te==="0"?E==="0"?A=`>=${te}.${E}.${ie}-${ee} <${te}.${E}.${+ie+1}-0`:A=`>=${te}.${E}.${ie}-${ee} <${te}.${+E+1}.0-0`:A=`>=${te}.${E}.${ie}-${ee} <${+te+1}.0.0-0`):(c("no pr"),te==="0"?E==="0"?A=`>=${te}.${E}.${ie}${U} <${te}.${E}.${+ie+1}-0`:A=`>=${te}.${E}.${ie}${U} <${te}.${+E+1}.0-0`:A=`>=${te}.${E}.${ie} <${+te+1}.0.0-0`),c("caret return",A),A})},C=(B,_)=>(c("replaceXRanges",B,_),B.split(/\s+/).map(j=>f(j,_)).join(" ")),f=(B,_)=>{B=B.trim();const j=_.loose?a[u.XRANGELOOSE]:a[u.XRANGE];return B.replace(j,(U,$,te,E,ie,ee)=>{c("xRange",B,U,$,te,E,ie,ee);const A=g(te),le=A||g(E),ne=le||g(ie),se=ne;return $==="="&&se&&($=""),ee=_.includePrerelease?"-0":"",A?$===">"||$==="<"?U="<0.0.0-0":U="*":$&&se?(le&&(E=0),ie=0,$===">"?($=">=",le?(te=+te+1,E=0,ie=0):(E=+E+1,ie=0)):$==="<="&&($="<",le?te=+te+1:E=+E+1),$==="<"&&(ee="-0"),U=`${$+te}.${E}.${ie}${ee}`):le?U=`>=${te}.0.0${ee} <${+te+1}.0.0-0`:ne&&(U=`>=${te}.${E}.0${ee} <${te}.${+E+1}.0-0`),c("xRange return",U),U})},w=(B,_)=>(c("replaceStars",B,_),B.trim().replace(a[u.STAR],"")),x=(B,_)=>(c("replaceGTE0",B,_),B.trim().replace(a[_.includePrerelease?u.GTE0PRE:u.GTE0],"")),R=B=>(_,j,U,$,te,E,ie,ee,A,le,ne,se)=>(g(U)?j="":g($)?j=`>=${U}.0.0${B?"-0":""}`:g(te)?j=`>=${U}.${$}.0${B?"-0":""}`:E?j=`>=${j}`:j=`>=${j}${B?"-0":""}`,g(A)?ee="":g(le)?ee=`<${+A+1}.0.0-0`:g(ne)?ee=`<${A}.${+le+1}.0-0`:se?ee=`<=${A}.${le}.${ne}-${se}`:B?ee=`<${A}.${le}.${+ne+1}-0`:ee=`<=${ee}`,`${j} ${ee}`.trim()),K=(B,_,j)=>{for(let U=0;U<B.length;U++)if(!B[U].test(_))return!1;if(_.prerelease.length&&!j.includePrerelease){for(let U=0;U<B.length;U++)if(c(B[U].semver),B[U].semver!==l.ANY&&B[U].semver.prerelease.length>0){const $=B[U].semver;if($.major===_.major&&$.minor===_.minor&&$.patch===_.patch)return!0}return!1}return!0};return n9}var s9,FC;function qNe(){if(FC)return s9;FC=1;const e=TD();return s9=(i,n,s)=>{try{n=new e(n,s)}catch{return!1}return n.test(i)},s9}var eRe=qNe(),MD=BNe(eRe);function tRe(e,t,i){const n=e.open(t),s=250,{origin:l}=new URL(t);let c=40;function r(u){u.source===n&&(c=0,e.removeEventListener("message",r,!1))}e.addEventListener("message",r,!1);function a(){c<=0||(n.postMessage(i,l),setTimeout(a,s),c-=1)}setTimeout(a,s)}var iRe=`.vega-embed { 119 position: relative; 120 display: inline-block; 121 box-sizing: border-box; 122} 123.vega-embed.has-actions { 124 padding-right: 38px; 125} 126.vega-embed details:not([open]) > :not(summary) { 127 display: none !important; 128} 129.vega-embed summary { 130 list-style: none; 131 position: absolute; 132 top: 0; 133 right: 0; 134 padding: 6px; 135 z-index: 1000; 136 background: white; 137 box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); 138 color: #1b1e23; 139 border: 1px solid #aaa; 140 border-radius: 999px; 141 opacity: 0.2; 142 transition: opacity 0.4s ease-in; 143 cursor: pointer; 144 line-height: 0px; 145} 146.vega-embed summary::-webkit-details-marker { 147 display: none; 148} 149.vega-embed summary:active { 150 box-shadow: #aaa 0px 0px 0px 1px inset; 151} 152.vega-embed summary svg { 153 width: 14px; 154 height: 14px; 155} 156.vega-embed details[open] summary { 157 opacity: 0.7; 158} 159.vega-embed:hover summary, .vega-embed:focus-within summary { 160 opacity: 1 !important; 161 transition: opacity 0.2s ease; 162} 163.vega-embed .vega-actions { 164 position: absolute; 165 z-index: 1001; 166 top: 35px; 167 right: -9px; 168 display: flex; 169 flex-direction: column; 170 padding-bottom: 8px; 171 padding-top: 8px; 172 border-radius: 4px; 173 box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2); 174 border: 1px solid #d9d9d9; 175 background: white; 176 animation-duration: 0.15s; 177 animation-name: scale-in; 178 animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); 179 text-align: left; 180} 181.vega-embed .vega-actions a { 182 padding: 8px 16px; 183 font-family: sans-serif; 184 font-size: 14px; 185 font-weight: 600; 186 white-space: nowrap; 187 color: #434a56; 188 text-decoration: none; 189} 190.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus { 191 background-color: #f7f7f9; 192 color: black; 193} 194.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {
195 content: ""; 196 display: inline-block; 197 position: absolute; 198} 199.vega-embed .vega-actions::before { 200 left: auto; 201 right: 14px; 202 top: -16px; 203 border: 8px solid rgba(0, 0, 0, 0); 204 border-bottom-color: #d9d9d9; 205} 206.vega-embed .vega-actions::after { 207 left: auto; 208 right: 15px; 209 top: -14px; 210 border: 7px solid rgba(0, 0, 0, 0); 211 border-bottom-color: #fff; 212} 213.vega-embed .chart-wrapper.fit-x { 214 width: 100%; 215} 216.vega-embed .chart-wrapper.fit-y { 217 height: 100%; 218} 219 220.vega-embed-wrapper { 221 max-width: 100%; 222 overflow: auto; 223 padding-right: 14px; 224} 225 226@keyframes scale-in { 227 from { 228 opacity: 0; 229 transform: scale(0.6); 230 } 231 to { 232 opacity: 1; 233 transform: scale(1); 234 } 235} 236`;function KD(e,...t){for(const i of t)nRe(e,i);return e}function nRe(e,t){for(const i of Object.keys(t))Yb(e,i,t[i],!0)}const Yc=N9e;let fp=HHe;const nZ=typeof window<"u"?window:void 0;var AT;fp===void 0&&((AT=nZ==null?void 0:nZ.vl)!=null&&AT.compile)&&(fp=nZ.vl);const sRe={export:{svg:!0,png:!0},source:!0,compiled:!0,editor:!0},lRe={CLICK_TO_VIEW_ACTIONS:"Click to view actions",COMPILED_ACTION:"View Compiled Vega",EDITOR_ACTION:"Open in Vega Editor",PNG_ACTION:"Save as PNG",SOURCE_ACTION:"View Source",SVG_ACTION:"Save as SVG"},lf={vega:"Vega","vega-lite":"Vega-Lite"},TX={vega:Yc.version,"vega-lite":fp?fp.version:"not available"},cRe={vega:e=>e,"vega-lite":(e,t)=>fp.compile(e,{config:t}).spec},rRe=` 237<svg viewBox="0 0 16 16" fill="currentColor" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"> 238 <circle r="2" cy="8" cx="2"></circle> 239 <circle r="2" cy="8" cx="8"></circle> 240 <circle r="2" cy="8" cx="14"></circle> 241</svg>`,aRe="chart-wrapper";function oRe(e){return typeof e=="function"}function SC(e,t,i,n){const s=`<html><head>${t}</head><body><pre><code class="json">`,l=`</code></pre>${i}</body></html>`,c=window.open("");c.document.write(s+e+l),c.document.title=`${lf[n]} JSON Source`}function uRe(e,t){if(e.$schema){const i=zD(e.$schema);t&&t!==i.library&&console.warn(`The given visualization spec is written in ${lf[i.library]}, but mode argument sets ${lf[t]??t}.`);const n=i.library;return MD(TX[n],`^${i.version.slice(1)}`)||console.warn(`The input spec uses ${lf[n]} ${i.version}, but the current version of ${lf[n]} is v${TX[n]}.`),n}return"mark"in e||"encoding"in e||"layer"in e||"hconcat"in e||"vconcat"in e||"facet"in e||"repeat"in e?"vega-lite":"marks"in e||"signals"in e||"scales"in e||"axes"in e?"vega":t??"vega"}function BD(e){return!!(e&&"load"in e)}function LC(e){return BD(e)?e:Yc.loader(e)}function dRe(e){var i;const t=((i=e.usermeta)==null?void 0:i.embedOptions)??{};return He(t.defaultStyle)&&(t.defaultStyle=!1),t}async function CC(e,t,i={}){let n,s;He(t)?(s=LC(i.loader),n=JSON.parse(await s.load(t))):n=t;const l=dRe(n),c=l.loader;(!s||c)&&(s=LC(i.loader??c));const r=await TC(l,s),a=await TC(i,s),u={...KD(a,r),config:xb(a.config??{},r.config??{})};return await bRe(e,n,u,s)}async function TC(e,t){const i=He(e.config)?JSON.parse(await t.load(e.config)):e.config??{},n=He(e.patch)?JSON.parse(await t.load(e.patch)):e.patch;return{...e,...n?{patch:n}:{},...i?{config:i}:{}}}function mRe(e){const t=e.getRootNode?e.getRootNode():document;return t instanceof ShadowRoot?{root:t,rootContainer:t}:{root:document,rootContainer:document.head??document.body}}async function bRe(e,t,i={},n){const s=i.theme?xb(pNe[i.theme],i.config??{}):i.config,l=Vo(i.actions)?i.actions:KD({},sRe,i.actions??{}),c={...lRe,...i.i18n},r=i.renderer??"canvas",a=i.logLevel??Yc.Warn,u=i.downloadFileName??"visualization",o=typeof e=="string"?document.querySelector(e):e;if(!o)throw new Error(`${e} does not exist`);if(i.defaultStyle!==!1){const v="vega-embed-style",{root:k,rootContainer:N}=mRe(o);if(!k.getElementById(v)){const C=document.createElement("style");C.id=v,C.innerHTML=i.defaultStyle===void 0||i.defaultStyle===!0?iRe.toString():i.defaultStyle,N.appendChild(C)}}const d=uRe(t,i.mode);let b=cRe[d](t,s);if(d==="vega-lite"&&b.$schema){const v=zD(b.$schema);MD(TX.vega,`^${v.version.slice(1)}
241`)||console.warn(`The compiled spec uses Vega ${v.version}, but current version is v${TX.vega}.`)}o.classList.add("vega-embed"),l&&o.classList.add("has-actions"),o.innerHTML="";let h=o;if(l){const v=document.createElement("div");v.classList.add(aRe),o.appendChild(v),h=v}const p=i.patch;if(p&&(b=p instanceof Function?p(b):oJ(b,p,!0,!1).newDocument),i.formatLocale&&Yc.formatLocale(i.formatLocale),i.timeFormatLocale&&Yc.timeFormatLocale(i.timeFormatLocale),i.expressionFunctions)for(const v in i.expressionFunctions){const k=i.expressionFunctions[v];"fn"in k?Yc.expressionFunction(v,k.fn,k.visitor):k instanceof Function&&Yc.expressionFunction(v,k)}const{ast:Z}=i,X=Yc.parse(b,d==="vega-lite"?{}:s,{ast:Z}),J=new(i.viewClass||Yc.View)(X,{loader:n,logLevel:a,renderer:r,...Z?{expr:Yc.expressionInterpreter??i.expr??B9e}:{}});if(J.addSignalListener("autosize",(v,k)=>{const{type:N}=k;N=="fit-x"?(h.classList.add("fit-x"),h.classList.remove("fit-y")):N=="fit-y"?(h.classList.remove("fit-x"),h.classList.add("fit-y")):N=="fit"?h.classList.add("fit-x","fit-y"):h.classList.remove("fit-x","fit-y")}),i.tooltip!==!1){const{loader:v,tooltip:k}=i,N=v&&!BD(v)?v==null?void 0:v.baseURL:void 0,C=oRe(k)?k:new INe({baseURL:N,...k===!0?{}:k}).call;J.tooltip(C)}let{hover:V}=i;if(V===void 0&&(V=d==="vega"),V){const{hoverSet:v,updateSet:k}=typeof V=="boolean"?{}:V;J.hover(v,k)}i&&(i.width!=null&&J.width(i.width),i.height!=null&&J.height(i.height),i.padding!=null&&J.padding(i.padding)),await J.initialize(h,i.bind).runAsync();let g;if(l!==!1){let v=o;if(i.defaultStyle!==!1||i.forceActionsMenu){const N=document.createElement("details");N.title=c.CLICK_TO_VIEW_ACTIONS,o.append(N),v=N;const C=document.createElement("summary");C.innerHTML=rRe,N.append(C),g=f=>{N.contains(f.target)||N.removeAttribute("open")},document.addEventListener("click",g)}const k=document.createElement("div");if(v.append(k),k.classList.add("vega-actions"),l===!0||l.export!==!1){for(const N of["svg","png"])if(l===!0||l.export===!0||l.export[N]){const C=c[`${N.toUpperCase()}_ACTION`],f=document.createElement("a"),w=we(i.scaleFactor)?i.scaleFactor[N]:i.scaleFactor;f.text=C,f.href="#",f.target="_blank",f.download=`${u}.${N}`,f.addEventListener("mousedown",async function(x){x.preventDefault();const R=await J.toImageURL(N,w);this.href=R}),k.append(f)}}if(l===!0||l.source!==!1){const N=document.createElement("a");N.text=c.SOURCE_ACTION,N.href="#",N.addEventListener("click",function(C){SC(Vx(t),i.sourceHeader??"",i.sourceFooter??"",d),C.preventDefault()}),k.append(N)}if(d==="vega-lite"&&(l===!0||l.compiled!==!1)){const N=document.createElement("a");N.text=c.COMPILED_ACTION,N.href="#",N.addEventListener("click",function(C){SC(Vx(b),i.sourceHeader??"",i.sourceFooter??"","vega"),C.preventDefault()}),k.append(N)}if(l===!0||l.editor!==!1){const N=i.editorUrl??"https://vega.github.io/editor/",C=document.createElement("a");C.text=c.EDITOR_ACTION,C.href="#",C.addEventListener("click",function(f){tRe(window,N,{config:s,mode:p?"vega":d,renderer:r,spec:Vx(p?b:t)}),f.preventDefault()}),k.append(C)}}function I(){g&&document.removeEventListener("click",g),J.finalize()}return{view:J,spec:t,vgSpec:b,finalize:I,embedOptions:i}}function Pi(e){return typeof e=="function"}function _D(e){var t=function(n){Error.call(n),n.stack=new Error().stack},i=e(t);return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}var l9=_D(function(e){return function(i){e(this),this.message=i?i.length+` errors occurred during unsubscription: 242`+i.map(function(n,s){return s+1+") "+n.toString()}).join(` 243 `):"",this.name="UnsubscriptionError",this.errors=i}});function MX(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var N0=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,i,n,s,l;if(!this.closed){this.closed=!0;var c=this._parentage;if(c)if(this._parentage=null,Array.isArray(c))try{for(var r=eW(c),a=r.next();!a.done;a=r.next()){var u=a.value;u.remove(this)}}catch(Z){t={error:Z}}finally{try{a&&!a.done&&(i=r.return)&&i.call(r)}finally{if(t)throw t.error}}else c.remove(this);var o=this.initialTeardown;
vendor: 13,390 bytes, line 243
243if(Pi(o))try{o()}catch(Z){l=Z instanceof l9?Z.errors:[Z]}var d=this._finalizers;if(d){this._finalizers=null;try{for(var b=eW(d),h=b.next();!h.done;h=b.next()){var p=h.value;try{MC(p)}catch(Z){l=l??[],Z instanceof l9?l=vm(vm([],zm(l)),zm(Z.errors)):l.push(Z)}}}catch(Z){n={error:Z}}finally{try{h&&!h.done&&(s=b.return)&&s.call(b)}finally{if(n)throw n.error}}}if(l)throw new l9(l)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)MC(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(i=this._finalizers)!==null&&i!==void 0?i:[]).push(t)}},e.prototype._hasParent=function(t){var i=this._parentage;return i===t||Array.isArray(i)&&i.includes(t)},e.prototype._addParent=function(t){var i=this._parentage;this._parentage=Array.isArray(i)?(i.push(t),i):i?[i,t]:t},e.prototype._removeParent=function(t){var i=this._parentage;i===t?this._parentage=null:Array.isArray(i)&&MX(i,t)},e.prototype.remove=function(t){var i=this._finalizers;i&&MX(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}(),OD=N0.EMPTY;function jD(e){return e instanceof N0||e&&"closed"in e&&Pi(e.remove)&&Pi(e.add)&&Pi(e.unsubscribe)}function MC(e){Pi(e)?e():e.unsubscribe()}var hRe={Promise:void 0},fRe={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return setTimeout.apply(void 0,vm([e,t],zm(i)))},clearTimeout:function(e){return clearTimeout(e)},delegate:void 0};function ED(e){fRe.setTimeout(function(){throw e})}function uI(){}function EZ(e){e()}var pw=function(e){Yo(t,e);function t(i){var n=e.call(this)||this;return n.isStopped=!1,i?(n.destination=i,jD(i)&&i.add(n)):n.destination=ZRe,n}return t.create=function(i,n,s){return new dI(i,n,s)},t.prototype.next=function(i){this.isStopped||this._next(i)},t.prototype.error=function(i){this.isStopped||(this.isStopped=!0,this._error(i))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(i){this.destination.next(i)},t.prototype._error=function(i){try{this.destination.error(i)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(N0),pRe=function(){function e(t){this.partialObserver=t}return e.prototype.next=function(t){var i=this.partialObserver;if(i.next)try{i.next(t)}catch(n){sZ(n)}},e.prototype.error=function(t){var i=this.partialObserver;if(i.error)try{i.error(t)}catch(n){sZ(n)}else sZ(t)},e.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(i){sZ(i)}},e}(),dI=function(e){Yo(t,e);function t(i,n,s){var l=e.call(this)||this,c;return Pi(i)||!i?c={next:i??void 0,error:n??void 0,complete:s??void 0}:c=i,l.destination=new pRe(c),l}return t}(pw);function sZ(e){ED(e)}function yRe(e){throw e}var ZRe={closed:!0,next:uI,error:yRe,complete:uI},yw=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function PD(e){return e}function WRe(e){return e.length===0?PD:e.length===1?e[0]:function(i){return e.reduce(function(n,s){return s(n)},i)}}var na=function(){function e(t){t&&(this._subscribe=t)}return e.prototype.lift=function(t){var i=new e;return i.source=this,i.operator=t,i},e.prototype.subscribe=function(t,i,n){var s=this,l=JRe(t)?t:new dI(t,i,n);return EZ(function(){var c=s,r=c.operator,a=c.source;l.add(r?r.call(l,a):a?s._subscribe(l):s._trySubscribe(l))}),l},e.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(i){t.error(i)}},e.prototype.forEach=function(t,i){var n=this;return i=KC(i),new i(function(s,l){var c=new dI({next:function(r){try{t(r)}catch(a){l(a),c.unsubscribe()}},error:l,complete:s});n.subscribe(c)})},e.prototype._subscribe=function(t){var i;return(i=this.source)===null||i===void 0?void 0:i.subscribe(t)},e.prototype[yw]=function(){return this},e.prototype.pipe=function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return WRe(t)(this)},e.prototype.toPromise=function(t){var i=this;return t=KC(t),new t(function(n,s){var l;i.subscribe(function(c){return l=c},function(c){return s(c)},function(){return n(l)})})},e.create=function(t){return new e(t)},e}();function KC(e){var t;return(t=e??hRe.Promise)!==null&&t!==void 0?t:Promise}function XRe(e){return e&&Pi(e.next)&&Pi(e.error)&&Pi(e.complete)}function JRe(e){return e&&e instanceof pw||XRe(e)&&jD(e)}function xRe(e){return Pi(e==null?void 0:e.lift)}function Zw(e){return function(t){if(xRe(t))return t.lift(function(i){try{return e(i,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function pp(e,t,i,n,s){return new YRe(e,t,i,n,s)}var YRe=function(e){Yo(t,e);function t(i,n,s,l,c,r){var a=e.call(this,i)||this;return a.onFinalize=c,a.shouldUnsubscribe=r,a._next=n?function(u){try{n(u)}catch(o){i.error(o)}}:e.prototype._next,a._error=l?function(u){try{l(u)}catch(o){i.error(o)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=s?function(){try{s()}catch(u){i.error(u)}finally{this.unsubscribe()}}:e.prototype._complete,a}return t.prototype.unsubscribe=function(){var i;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((i=this.onFinalize)===null||i===void 0||i.call(this))}},t}(pw),GRe=_D(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),Ob=function(e){Yo(t,e);function t(){var i=e.call(this)||this;return i.closed=!1,i.currentObservers=null,i.observers=[],i.isStopped=!1,i.hasError=!1,i.thrownError=null,i}return t.prototype.lift=function(i){var n=new BC(this,this);return n.operator=i,n},t.prototype._throwIfClosed=function(){if(this.closed)throw new GRe},t.prototype.next=function(i){var n=this;EZ(function(){var s,l;if(n._throwIfClosed(),!n.isStopped){n.currentObservers||(n.currentObservers=Array.from(n.observers));try{for(var c=eW(n.currentObservers),r=c.next();!r.done;r=c.next()){var a=r.value;a.next(i)}}catch(u){s={error:u}}finally{try{r&&!r.done&&(l=c.return)&&l.call(c)}finally{if(s)throw s.error}}}})},t.prototype.error=function(i){var n=this;EZ(function(){if(n._throwIfClosed(),!n.isStopped){n.hasError=n.isStopped=!0,n.thrownError=i;for(var s=n.observers;s.length;)s.shift().error(i)}})},t.prototype.complete=function(){var i=this;EZ(function(){if(i._throwIfClosed(),!i.isStopped){i.isStopped=!0;for(var n=i.observers;n.length;)n.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var i;return((i=this.observers)===null||i===void 0?void 0:i.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(i){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,i)},t.prototype._subscribe=function(i){return this._throwIfClosed(),this._checkFinalizedStatuses(i),this._innerSubscribe(i)},t.prototype._innerSubscribe=function(i){var n=this,s=this,l=s.hasError,c=s.isStopped,r=s.observers;return l||c?OD:(this.currentObservers=null,r.push(i),new N0(function(){n.currentObservers=null,MX(r,i)}))},t.prototype._checkFinalizedStatuses=function(i){var n=this,s=n.hasError,l=n.thrownError,c=n.isStopped;s?i.error(l):c&&i.complete()},t.prototype.asObservable=function(){var i=new na;return i.source=this,i},t.create=function(i,n){return new BC(i,n)},t}(na),BC=function(e){Yo(t,e);function t(i,n){var s=e.call(this)||this;return s.destination=i,s.source=n,s}return t.prototype.next=function(i){var n,s;(s=(n=this.destination)===null||n===void 0?void 0:n.next)===null||s===void 0||s.call(n,i)},t.prototype.error=function(i){var n,s;(s=(n=this.destination)===null||n===void 0?void 0:n.error)===null||s===void 0||s.call(n,i)},t.prototype.complete=function(){var i,n;(n=(i=this.destination)===null||i===void 0?void 0:i.complete)===null||n===void 0||n.call(i)},t.prototype._subscribe=function(i){var n,s;return(s=(n=this.source)===null||n===void 0?void 0:n.subscribe(i))!==null&&s!==void 0?s:OD},t}(Ob),VRe={now:function(){return Date.now()}},IRe=function(e){Yo(t,e);function t(i,n){return e.call(this)||this}return t.prototype.schedule=function(i,n){return this},t}(N0),_C={setInterval:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return setInterval.apply(void 0,vm([e,t],zm(i)))},clearInterval:function(e){return clearInterval(e)},delegate:void 0},gRe=function(e){Yo(t,e);function t(i,n){var s=e.call(this,i,n)||this;return s.scheduler=i,s.work=n,s.pending=!1,s}return t.prototype.schedule=function(i,n){var s;if(n===void 0&&(n=0),this.closed)return this;this.state=i;var l=this.id,c=this.scheduler;return l!=null&&(this.id=this.recycleAsyncId(c,l,n)),this.pending=!0,this.delay=n,this.id=(s=this.id)!==null&&s!==void 0?s:this.requestAsyncId(c,this.id,n),this},t.prototype.requestAsyncId=function(i,n,s){return s===void 0&&(s=0),_C.setInterval(i.flush.bind(i,this),s)},t.prototype.recycleAsyncId=function(i,n,s){if(s===void 0&&(s=0),s!=null&&this.delay===s&&this.pending===!1)return n;n!=null&&_C.clearInterval(n)},t.prototype.execute=function(i,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var s=this._execute(i,n);if(s)return s;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(i,n){var s=!1,l;try{this.work(i)}catch(c){s=!0,l=c||new Error("Scheduled action threw falsy error")}if(s)return this.unsubscribe(),l},t.prototype.unsubscribe=function(){if(!this.closed){var i=this,n=i.id,s=i.scheduler,l=s.actions;this.work=this.state=this.scheduler=null,this.pending=!1,MX(l,this),n!=null&&(this.id=this.recycleAsyncId(s,n,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(IRe),OC=function(){function e(t,i){i===void 0&&(i=e.now),this.schedulerActionCtor=t,this.now=i}return e.prototype.schedule=function(t,i,n){return i===void 0&&(i=0),new this.schedulerActionCtor(this,t).schedule(n,i)},e.now=VRe.now,e}(),vRe=function(e){Yo(t,e);function t(i,n){n===void 0&&(n=OC.now);var s=e.call(this,i,n)||this;return s.actions=[],s._active=!1,s}return t.prototype.flush=function(i){var n=this.actions;if(this._active){n.push(i);return}var s;this._active=!0;do if(s=i.execute(i.state,i.delay))break;while(i=n.shift());if(this._active=!1,s){for(;i=n.shift();)i.unsubscribe();throw s}},t}(OC),UD=new vRe(gRe),zRe=UD;function wRe(e){return e&&Pi(e.schedule)}function HRe(e){return e[e.length-1]}function NRe(e){return Pi(HRe(e))?e.pop():void 0}var RRe=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function kRe(e){return Pi(e==null?void 0:e.then)}function FRe(e){return Pi(e[yw])}function SRe(e){return Symbol.asyncIterator&&Pi(e==null?void 0:e[Symbol.asyncIterator])}function LRe(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function CRe(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var TRe=CRe();function MRe(e){return Pi(e==null?void 0:e[TRe])}function KRe(e){return Kte(this,arguments,function(){var i,n,s,l;return HM(this,function(c){switch(c.label){case 0:i=e.getReader(),c.label=1;case 1:c.trys.push([1,,9,10]),c.label=2;case 2:return[4,sx(i.read())];case 3:return n=c.sent(),s=n.value,l=n.done,l?[4,sx(void 0)]:[3,5];case 4:return[2,c.sent()];case 5:return[4,sx(s)];case 6:return[4,c.sent()];case 7:return c.sent(),[3,2];case 8:return[3,10];case 9:return i.releaseLock(),[7];case 10:return[2]}})})}function BRe(e){return Pi(e==null?void 0:e.getReader)}function $D(e){if(e instanceof na)return e;if(e!=null){if(FRe(e))return _Re(e);if(RRe(e))return ORe(e);if(kRe(e))return jRe(e);if(SRe(e))return QD(e);if(MRe(e))return ERe(e);if(BRe(e))return PRe(e)}throw LRe(e)}function _Re(e){return new na(function(t){var i=e[yw]();if(Pi(i.subscribe))return i.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ORe(e){return new na(function(t){for(var i=0;i<e.length&&!t.closed;i++)t.next(e[i]);t.complete()})}function jRe(e){return new na(function(t){e.then(function(i){t.closed||(t.next(i),t.complete())},function(i){return t.error(i)}).then(null,ED)})}function ERe(e){return new na(function(t){var i,n;try{for(var s=eW(e),l=s.next();!l.done;l=s.next()){var c=l.value;if(t.next(c),t.closed)return}}catch(r){i={error:r}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}t.complete()})}function QD(e){return new na(function(t){URe(e,t).catch(function(i){return t.error(i)})})}function PRe(e){return QD(KRe(e))}function URe(e,t){var i,n,s,l;return Bte(this,void 0,void 0,function(){var c,r;return HM(this,function(a){switch(a.label){case 0:a.trys.push([0,5,6,11]),i=_te(e),a.label=1;case 1:return[4,i.next()];case 2:if(n=a.sent(),!!n.done)return[3,4];if(c=n.value,t.next(c),t.closed)return[2];a.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return r=a.sent(),s={error:r},[3,11];case 6:return a.trys.push([6,,9,10]),n&&!n.done&&(l=i.return)?[4,l.call(i)]:[3,8];case 7:a.sent(),a.label=8;case 8:return[3,10];case 9:if(s)throw s.error;return[7];
243case 10:return[7];case 11:return t.complete(),[2]}})})}function $Re(e){return e instanceof Date&&!isNaN(e)}function QRe(e,t,i){e===void 0&&(e=0),i===void 0&&(i=zRe);var n=-1;return t!=null&&(wRe(t)?i=t:n=t),new na(function(s){var l=$Re(e)?+e-i.now():e;l<0&&(l=0);var c=0;return i.schedule(function(){s.closed||(s.next(c++),0<=n?this.schedule(void 0,n):s.complete())},l)})}function DRe(e,t){return Zw(function(i,n){var s=0;i.subscribe(pp(n,function(l){return e.call(t,l,s++)&&n.next(l)}))})}function ARe(e,t){return Zw(function(i,n){var s=t??{},l=s.leading,c=l===void 0?!0:l,r=s.trailing,a=r===void 0?!1:r,u=!1,o=null,d=null,b=!1,h=function(){d==null||d.unsubscribe(),d=null,a&&(X(),b&&n.complete())},p=function(){d=null,b&&n.complete()},Z=function(J){return d=$D(e(J)).subscribe(pp(n,h,p))},X=function(){if(u){u=!1;var J=o;o=null,n.next(J),!b&&Z(J)}};i.subscribe(pp(n,function(J){u=!0,o=J,!(d&&!d.closed)&&(c?X():Z(J))},function(){b=!0,!(a&&u&&d&&!d.closed)&&n.complete()}))})}function qRe(e,t,i){t===void 0&&(t=UD);var n=QRe(e,t);return ARe(function(){return n},i)}function eke(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var i=NRe(e);return Zw(function(n,s){for(var l=e.length,c=new Array(l),r=e.map(function(){return!1}),a=!1,u=function(d){$D(e[d]).subscribe(pp(s,function(b){c[d]=b,!a&&!r[d]&&(r[d]=!0,(a=r.every(PD))&&(r=null))},uI))},o=0;o<l;o++)u(o);n.subscribe(pp(s,function(d){if(a){var b=vm([d],zm(c));s.next(i?i.apply(void 0,vm([],zm(b))):b)}}))})}const tke=(e,t,i,n,s)=>{const l={getSVGData(){return Promise.all(t.current.map(r=>{if(!r.view)throw new Error("View is not available");return r.view.toSVG()}))},async getCanvasData(){return(await Promise.all(t.current.map(a=>{if(!a.view)throw new Error("View is not available");return a.view.toCanvas(2)}))).map(a=>a.toDataURL("image/png",1))},async downloadSVG(r=`gw chart ${Date.now()%1e6}`.padStart(6,"0")){const a=await Promise.all(t.current.map(o=>{if(!o.view)throw new Error("View is not available");return o.view.toSVG()})),u=[];for(let o=0;o<a.length;o+=1){const d=a[o],b=new File([d],`${r}${a.length>1?`_${o+1}`:""}.svg`),h=URL.createObjectURL(b),p=document.createElement("a");p.download=b.name,p.href=h,p.click(),requestAnimationFrame(()=>{URL.revokeObjectURL(h)})}return u},async downloadPNG(r=`gw chart ${Date.now()%1e6}`.padStart(6,"0")){const u=(await Promise.all(t.current.map(d=>{if(!d.view)throw new Error("View is not available");return d.view.toCanvas(2)}))).map(d=>d.toDataURL("image/png",1)),o=[];for(let d=0;d<u.length;d+=1){const b=u[d],h=document.createElement("a");h.download=`${r}${u.length>1?`_${d+1}`:""}.png`,h.href=b.replace(/^data:image\/[^;]/,"data:application/octet-stream"),h.click()}return o}};Q.useImperativeHandle(i,()=>l);const c=Lp();Q.useEffect(()=>{const r=c.current;r&&(Promise.all(n.current).then(()=>{if(c.current){const a=c.current;if(a.renderStatus!=="rendering")return;setTimeout(()=>{a.renderStatus==="rendering"&&a.updateRenderStatus("idle")},0)}}).catch(()=>{if(c.current){if(c.current.renderStatus!=="rendering")return;c.current.updateRenderStatus("error")}}),r.exportChart=async(a="svg")=>{if(r.renderStatus==="error")return console.error("exportChart failed because error occurred when rendering chart."),{mode:a,title:"",nCols:0,nRows:0,charts:[],chartType:"vega",container(){return null}};if(r.renderStatus!=="idle"){let o=null;const d=new Promise((b,h)=>{o=r.onRenderStatusChange(p=>{p==="error"?h(new Error("Error occurred when rendering chart")):p==="idle"&&b()}),setTimeout(()=>h(new Error("Timeout")),1e4)});try{await d}catch(b){return console.error("exportChart failed:",`${b}`),{mode:a,title:"",nCols:0,nRows:0,charts:[],chartType:"vega",container(){return null}}}finally{o==null||o()}}const u={mode:a,title:e||"untitled",nCols:t.current.map(o=>o.x).reduce((o,d)=>Math.max(o,d),0)+1,nRows:t.current.map(o=>o.y).reduce((o,d)=>Math.max(o,d),0)+1,charts:t.current.map(o=>({rowIndex:o.y,colIndex:o.x,width:o.w,height:o.h,canvasWidth:o.innerWidth,canvasHeight:o.innerHeight,data:"",canvas(){const d=o.canvas;return d instanceof HTMLCanvasElement||d instanceof SVGSVGElement?d:null}})),container(){return s.current},chartType:"vega"};if(a==="data-url"){const o=await l.getCanvasData();if(o)for(let d=0;d<o.length;d+=1)u.charts[d].data=o[d]}else if(a==="svg"){const o=await l.getSVGData();if(o)for(let d=0;d<o.length;d+=1)u.charts[d].data=o[d]}return u},r.exportChartList=async function*(u="svg"){const o=r.chartCount,d=new Array(o).fill(0).map((h,p)=>p),b=r.chartIndex;for await(const h of d){r.openChart(h),await new Promise(Z=>setTimeout(Z,0));const p=await r.exportChart(u);yield{mode:u,total:o,index:h,data:p,hasNext:h<o-1}}r.openChart(b)})}),Q.useEffect(()=>()=>{c.current&&(c.current.updateRenderStatus("idle"),c.current.exportChart=
243async(r="svg")=>({mode:r,title:"",nCols:0,nRows:0,charts:[],chartType:"vega",container(){return null}}),c.current.exportChartList=async function*(a="svg"){yield{mode:a,total:1,completed:0,index:0,data:{mode:a,title:"",nCols:0,nRows:0,charts:[],chartType:"vega",container(){return null}},hasNext:!1}})},[])};function jC(e){switch(e){case"zh-CN":return{dateTime:"%x %A %X",date:"%Yå¹´%-mæ%-dæ¥",time:"%H:%M:%S",periods:["ä¸å","ä¸å"],days:["æææ¥","ææä¸","ææäº","ææä¸","ææå","ææäº","ææå "],shortDays:["卿¥","å¨ä¸","å¨äº","å¨ä¸","å¨å","å¨äº","å¨å "],months:["䏿","äºæ","䏿","åæ","äºæ","å æ","䏿","å «æ","乿","åæ","å䏿","åäºæ"],shortMonths:["䏿","äºæ","䏿","åæ","äºæ","å æ","䏿","å «æ","乿","åæ","å䏿","åäºæ"]};case"en-US":default:return{dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}}}/*! 244 * canvas-size 245 * v1.2.6 246 * https://github.com/jhildenbiddle/canvas-size 247 * (c) 2015-2023 John Hildenbiddle <http://hildenbiddle.com> 248 * MIT license 249 */function ike(e,t){var i=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(i!=null){var n,s,l,c,r=[],a=!0,u=!1;try{if(l=(i=i.call(e)).next,t===0){if(Object(i)!==i)return;a=!1}else for(;!(a=(n=l.call(i)).done)&&(r.push(n.value),r.length!==t);a=!0);}catch(o){u=!0,s=o}finally{try{if(!a&&i.return!=null&&(c=i.return(),Object(c)!==c))return}finally{if(u)throw s}}return r}}function EC(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),i.push.apply(i,n)}return i}function Gs(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?EC(Object(i),!0).forEach(function(n){nke(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):EC(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function nke(e,t,i){return t=mke(t),t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function ske(e,t){if(e==null)return{};var i={},n=Object.keys(e),s,l;for(l=0;l<n.length;l++)s=n[l],!(t.indexOf(s)>=0)&&(i[s]=e[s]);return i}function lke(e,t){if(e==null)return{};var i=ske(e,t),n,s;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(s=0;s<l.length;s++)n=l[s],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function PC(e,t){return rke(e)||ike(e,t)||DD(e,t)||uke()}function lZ(e){return cke(e)||ake(e)||DD(e)||oke()}function cke(e){if(Array.isArray(e))return mI(e)}function rke(e){if(Array.isArray(e))return e}function ake(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function DD(e,t){if(e){if(typeof e=="string")return mI(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);if(i==="Object"&&e.constructor&&(i=e.constructor.name),i==="Map"||i==="Set")return Array.from(e);if(i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return mI(e,t)}}function mI(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function oke(){throw new TypeError(`Invalid attempt to spread non-iterable instance. 250In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function uke(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. 251In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dke(e,t){if(typeof e!="object"||e===null)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var n=i.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function mke(e){var t=dke(e,"string");return typeof t=="symbol"?t:String(t)}function vf(e){var t=e.sizes.shift(),i=Math.max(Math.ceil(t[0]),1),n=Math.max(Math.ceil(t[1]),1),s=[i-1,n-1,1,1],l=Date.now(),c=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,r,a;c?(r=new OffscreenCanvas(1,1),a=new OffscreenCanvas(i,n)):(r=document.createElement("canvas"),r.width=1,r.height=1,a=document.createElement("canvas"),a.width=i,a.height=n);var u=r.getContext("2d"),o=a.getContext("2d");o&&(o.fillRect.apply(o,s),u.drawImage(a,i-1,n-1,1,1,0,0,1,1));var d=u&&u.getImageData(0,0,1,1).data[3]!==0,b=Date.now()-l;
251return[r,a].forEach(function(h){h.height=0,h.width=0}),c?(postMessage({width:i,height:n,benchmark:b,isTestPass:d}),!d&&e.sizes.length&&vf(e)):d?e.onSuccess(i,n,b):(e.onError(i,n,b),e.sizes.length&&vf(e)),d}var c9={area:[16384,14188,11402,11180,10836,8192,4096,1],height:[8388607,65535,32767,16384,8192,4096,1],width:[4194303,65535,32767,16384,8192,4096,1]},bke=["onError","onSuccess"],dm={max:null,min:1,sizes:[],step:1024,usePromise:!1,useWorker:!1,onError:Function.prototype,onSuccess:Function.prototype},Hh={};function r9(e){var t=e.width===e.height,i=e.height===1,n=e.width===1,s=[];if(!e.width||!e.height)e.sizes.forEach(function(o){var d=t||i?o:1,b=t||n?o:1;s.push([d,b])});else for(var l=e.min||dm.min,c=e.step||dm.step,r=Math.max(e.width,e.height);r>=l;){var a=t||i?r:1,u=t||n?r:1;s.push([a,u]),r-=c}return s}function cZ(e){var t=window&&"HTMLCanvasElement"in window,i=window&&"OffscreenCanvas"in window,n=Date.now(),s=e.onError,l=e.onSuccess,c=lke(e,bke),r=null;if(!t)return!1;if(e.useWorker&&i){var a=` 252 var canvasTest = `.concat(vf.toString(),`; 253 onmessage = function(e) { 254 canvasTest(e.data); 255 }; 256 `),u=new Blob([a],{type:"application/javascript"}),o=URL.createObjectURL(u);r=new Worker(o),URL.revokeObjectURL(o),r.onmessage=function(d){var b=d.data,h=b.width,p=b.height,Z=b.benchmark,X=b.isTestPass;X?(Hh[n].onSuccess(h,p,Z),delete Hh[n]):Hh[n].onError(h,p,Z)}}if(e.usePromise)return new Promise(function(d,b){var h=Gs(Gs({},e),{},{onError:function(J,V,g){var I;if(e.sizes.length===0)I=!0;else{var v=e.sizes.slice(-1),k=PC(v,1),N=PC(k[0],2),C=N[0],f=N[1];I=J===C&&V===f}s(J,V,g),I&&b({width:J,height:V,benchmark:g})},onSuccess:function(J,V,g){l(J,V,g),d({width:J,height:V,benchmark:g})}});if(r){var p=h.onError,Z=h.onSuccess;Hh[n]={onError:p,onSuccess:Z},r.postMessage(c)}else vf(h)});if(r)Hh[n]={onError:s,onSuccess:l},r.postMessage(c);else return vf(e)}var bI={maxArea:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=r9({width:t.max,height:t.max,min:t.min,step:t.step,sizes:lZ(c9.area)}),n=Gs(Gs(Gs({},dm),t),{},{sizes:i});return cZ(n)},maxHeight:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=r9({width:1,height:t.max,min:t.min,step:t.step,sizes:lZ(c9.height)}),n=Gs(Gs(Gs({},dm),t),{},{sizes:i});return cZ(n)},maxWidth:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=r9({width:t.max,height:1,min:t.min,step:t.step,sizes:lZ(c9.width)}),n=Gs(Gs(Gs({},dm),t),{},{sizes:i});return cZ(n)},test:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=Gs(Gs({},dm),t);return i.sizes=lZ(i.sizes),i.width&&i.height&&(i.sizes=[[i.width,i.height]]),cZ(i)}};const cf={canvasExceedSize:500},AD=re.createContext({reportError:()=>{}}),qD=()=>re.useContext(AD);AD.Provider;const hke=(e,t,i,n)=>{switch(t){case"debounce":return jte(e,i,n);case"throttle":return Ote(e,i,n);default:return e}},fke=e=>{const t=Q.useRef(e);return Q.useEffect(()=>{t.current=e}),Q.useMemo(()=>(...i)=>{var n;return(n=t.current)===null||n===void 0?void 0:n.call(t,...i)},[])},pke=e=>{const[t,i]=Q.useState((e==null?void 0:e.current)||null);return e&&setTimeout(()=>{e.current!==t&&i(e.current)},0),{refProxy:Q.useMemo(()=>new Proxy(s=>{s!==t&&i(s)},{get(s,l){return l==="current"?t:s[l]},set(s,l,c){return l==="current"?i(c):s[l]=c,!0}}),[t]),refElement:t,setRefElement:i}},yke=(e,t)=>{var i,n;const s=(i=e.borderBoxSize)===null||i===void 0?void 0:i[0],l=(n=e.contentBoxSize)===null||n===void 0?void 0:n[0];return t==="border-box"&&s?{width:s.inlineSize,height:s.blockSize}:t==="content-box"&&l?{width:l.inlineSize,height:l.blockSize}:{width:e.contentRect.width,height:e.contentRect.height}};function eA({skipOnMount:e=!1,refreshMode:t,refreshRate:i=1e3,refreshOptions:n,handleWidth:s=!0,handleHeight:l=!0,targetRef:c,observerOptions:r,onResize:a,disableRerender:u=!1}={}){const o=Q.useRef(e),d=fke(a),[b,h]=Q.useState({width:void 0,height:void 0}),p=Q.useRef({width:void 0,height:void 0}),{refProxy:Z,refElement:X}=pke(c),{box:J}=r||{},V=Q.useCallback(I=>{if(!s&&!l)return;if(o.current){o.current=!1;return}const v=(k,N)=>s&&k.width!==N.width||l&&k.height!==N.height;I.forEach(k=>{const N=yke(k,J);
256u?v(p.current,N)&&(p.current.width=N.width,p.current.height=N.height,d==null||d({width:N.width,height:N.height,entry:k})):h(C=>v(C,N)?(d==null||d({width:N.width,height:N.height,entry:k}),N):C)})},[s,l,o,J,u]),g=Q.useCallback(hke(V,t,i,n),[V,t,i,n]);return Q.useEffect(()=>{let I;if(X)try{I=new window.ResizeObserver(g),I.observe(X,r)}catch(v){console.warn("ResizeObserver not supported or failed to initialize:",v)}else(b.width||b.height)&&(d==null||d({width:null,height:null,entry:null}),p.current.width=void 0,p.current.height=void 0,u||h({width:void 0,height:void 0}));return()=>{var v,k,N;(v=I==null?void 0:I.disconnect)===null||v===void 0||v.call(I),(N=(k=g).cancel)===null||N===void 0||N.call(k)}},[g,X]),Object.assign({ref:Z},u?p.current:b)}Wi("formatBin",(e,t)=>{const i=t?qu(t):r=>r;if(!Array.isArray(e))return i(e);const[n,s]=e,l=s-n;if(l===0)return`[${i(n)},${i(s)}]`;const c=Math.max(-Math.round(Math.log10(l))+2,0);return`[${i(Number(n.toFixed(c)))},${i(Number(s.toFixed(c)))}]`});const Zke=SM.div` 257 display: grid; 258 grid-template-columns: repeat(${e=>e.$colSize}, auto); 259 grid-template-rows: repeat(${e=>e.$rowSize}, 1fr); 260`;function UC(e){if(e instanceof HTMLCanvasElement)return{width:parseInt(e.style.width||`${e.width}`),height:parseInt(e.style.height||`${e.height}`),renderWidth:e.width,renderHeight:e.height};if(e instanceof SVGSVGElement){const t=e.width.baseVal.value,i=e.height.baseVal.value;return{width:t,height:i,renderWidth:0,renderHeight:0}}}const $C="geom",hI=new Ob,fI=new Ob,Wke=fI.pipe(eke(hI),DRe(([e,t])=>Object.keys(e).length>0)),QC="__gw_brush__",DC="__gw_point__",$d=e=>Math.max(e,1),Xke=Q.forwardRef(function(t,i){const{name:n,dataSource:s=[],rows:l=[],columns:c=[],defaultAggregate:r=!0,stack:a="stack",geomType:u,color:o,opacity:d,size:b,theta:h,radius:p,shape:Z,text:X,onGeomClick:J,showActions:V,interactiveScale:g,layoutMode:I,width:v,height:k,details:N=[],vegaConfig:C,locale:f="en-US",useSvg:w,scales:x,scale:R,displayOffset:K}=t,[B,_]=Q.useState([]),j=Q.useContext(Rp),U=Q.useMemo(()=>{const Fe=x??{};if(R)for(const nt of Object.keys(R))Fe[nt]={...Fe[nt]??{},...R[nt]};return Fe},[x,R]);Q.useEffect(()=>{const Fe=Wke.subscribe(([nt,Qe])=>{J&&J(nt,Qe)});return()=>{Fe.unsubscribe()}},[J]);const $=Q.useMemo(()=>l.filter(Fe=>r||Fe.aggName!=="expr"),[l,r]),te=Q.useMemo(()=>c.filter(Fe=>r||Fe.aggName!=="expr"),[c,r]),E=Q.useMemo(()=>$.filter(Fe=>
260Fe.analyticType==="dimension"),[$]),ie=Q.useMemo(()=>te.filter(Fe=>Fe.analyticType==="dimension"),[te]),ee=Q.useMemo(()=>$.filter(Fe=>Fe.analyticType==="measure"),[$]),A=Q.useMemo(()=>te.filter(Fe=>Fe.analyticType==="measure"),[te]),le=Q.useMemo(()=>ee.length===0?E.slice(-1):ee,[E,ee]),ne=Q.useMemo(()=>A.length===0?ie.slice(-1):A,[ie,A]),{reportError:se}=qD(),[oe,de]=Q.useState(-1);Q.useEffect(()=>{de(-1),_(Fe=>{const nt=Math.max(1,$d(le.length)*$d(ne.length));return nt===Fe.length?Fe:new Array(nt).fill(null).map((ft,Gt)=>Fe[Gt]||re.createRef())})},[le,ne]);const Je=Q.useRef([]),Ie=Q.useRef([]),{width:Ye,height:Te,ref:$e}=eA(),Ve=()=>I==="auto"?{width:0,height:0}:I==="full"&&Ye&&Te?{width:Ye,height:Te}:{width:v,height:k},{width:Me,height:Ee}=Ve(),ye=Q.useMemo(()=>n_({columns:te,dataSource:s,defaultAggregated:r,geomType:u,height:Ee,interactiveScale:g,layoutMode:I,mediaTheme:j,rows:$,stack:a,width:Me,scales:U,color:o,details:N,opacity:d,radius:p,shape:Z,size:b,text:X,theta:h,vegaConfig:C,displayOffset:K}),[te,s,r,u,g,I,j,$,a,U,o,N,d,p,Z,b,X,h,K,Me,Ee]);Q.useEffect(()=>{var Fe;if((Fe=t.onReportSpec)==null||Fe.call(t,JSON.stringify(ye.map(nt=>({...nt,data:void 0})),void 0,4)),Je.current=[],Ie.current=[],le.length<=1&&ne.length<=1){if(B.length>0&&B[0].current){const nt=CC(B[0].current,ye[0],{renderer:w?"svg":"canvas",mode:"vega-lite",actions:V,timeFormatLocale:jC(f),config:C,tooltip:{theme:j}}).then(Qe=>{const ft=Qe.view.container(),Gt=(ft==null?void 0:ft.querySelector("canvas"))??(ft==null?void 0:ft.querySelector("svg"))??null,$t=Gt?UC(Gt):null;if(E9(()=>{I!=="auto"||w||$t&&bI.test({width:$t.renderWidth||1,height:$t.renderHeight||1})||se(Gt?"canvas exceed max size":"canvas not found",cf.canvasExceedSize)}),I!=="auto"&&$t){const ut={width:Math.max($t.width-(Ye||v),0),height:Math.max($t.height-(Te||k),0)};if(Qe.view.width()===0)try{Qe.view.signal("child_width",ye[0].width-ut.width/Math.round((Ye||v)/ye[0].width)),Qe.view.signal("child_height",ye[0].height-ut.height/Math.round((Te||k)/ye[0].height))}catch{}else Qe.view.width(ye[0].width-ut.width),Qe.view.height(ye[0].height-ut.height);Qe.view.runAsync()}Je.current=[{w:(ft==null?void 0:ft.clientWidth)??Qe.view.width(),h:(ft==null?void 0:ft.clientHeight)??Qe.view.height(),innerWidth:(Gt==null?void 0:Gt.clientWidth)??Qe.view.width(),innerHeight:(Gt==null?void 0:Gt.clientHeight)??Qe.view.height(),x:0,y:0,view:Qe.view,canvas:Gt}];try{Qe.view.addEventListener("click",ut=>{hI.next(ut)}),u!=="boxplot"&&Qe.view.addSignalListener($C,(ut,Ht)=>{fI.next(Ht)})}catch(ut){console.warn(ut)}});Ie.current=[nt]}}else{let nt=0;Je.current=new Array(le.length*ne.length);const Qe=new Ob,ft=Qe.pipe(qRe(s.length/64*le.length*ne.length,void 0,{leading:!1,trailing:!0})),Gt=[],$t=ut=>{Gt.push(ft.subscribe(ut))};for(let ut=0;ut<$d(le.length);ut++)for(let Ht=0;Ht<$d(ne.length);Ht++,nt++){const si=nt,Tt=ut*$d(ne.length)+Ht<B.length?B[ut*$d(ne.length)+Ht].current:null,Nt=ye[nt];if(Tt){const Gi=nt,bc=CC(Tt,Nt,{renderer:w?"svg":"canvas",mode:"vega-lite",actions:V,timeFormatLocale:jC(f),config:C,tooltip:{theme:j}}).then(kt=>{var xs;const bi=kt.view.container(),Mt=(bi==null?void 0:bi.querySelector("canvas"))??(bi==null?void 0:bi.querySelector("svg"))??null,ai=Mt?UC(Mt):null;if(E9(()=>{I!=="auto"||w||ai&&bI.test({width:ai.renderWidth||1,height:ai.renderHeight||1})||se(Mt?"canvas exceed max size":"canvas not found",cf.canvasExceedSize)}),I!=="auto"&&ai){const qt={width:Math.max(ai.width-(Ye||v)/ne.length,0),height:Math.max(ai.height-(Te||k)/le.length,0)};kt.view.width()===0?kt.view.signal("child_width")!==void 0&&(kt.view.signal("child_width",ye[0].width-qt.width/Math.round((Ye||v)/ne.length/ye[0].width)),kt.view.signal("child_height",ye[0].height-qt.height/Math.round((Te||k)/le.length/ye[0].height))):(kt.view.width(ye[0].width-qt.width),kt.view.height(ye[0].height-qt.height)),kt.view.runAsync()}Je.current[Gi]={w:(bi==null?void 0:bi.clientWidth)??kt.view.width(),h:(bi==null?void 0:bi.clientHeight)??kt.view.height(),innerWidth:(Mt==null?void 0:Mt.clientWidth)??kt.view.width(),innerHeight:(Mt==null?void 0:Mt.clientHeight)??kt.view.height(),x:
260Ht,y:ut,view:kt.view,canvas:Mt};const ya=(((xs=kt.vgSpec.data)==null?void 0:xs.map(qt=>qt.name))??[]).filter(qt=>[QC,DC].map(gn=>`${gn}_store`).includes(qt)).map(qt=>qt.replace(/_store$/,""));try{for(const qt of ya){let gn=!1;kt.view.addSignalListener(qt,An=>{var Qb;if(gn){gn=!1;return}if([QC,DC].includes(An)){const Mo=(Qb=kt.view.getState().data)==null?void 0:Qb[`${An}_store`];(!Mo||Array.isArray(Mo)&&Mo.length===0)&&de(-1),Qe.next({signal:An,source:si,data:Mo??null})}}),$t(An=>{An.source===si||!An.data||(gn=!0,kt.view.setState({data:{[`${An.signal}_store`]:An.data}}))})}}catch(qt){console.warn("Crossing filter failed",qt)}try{kt.view.addEventListener("mouseover",()=>{si!==oe&&de(si)}),kt.view.addEventListener("click",qt=>{hI.next(qt)}),u!=="boxplot"&&kt.view.addSignalListener($C,(qt,gn)=>{fI.next(gn)})}catch(qt){console.warn(qt)}});Ie.current.push(bc)}}return()=>{var ut;Gt.forEach(Ht=>Ht.unsubscribe()),(ut=t.onReportSpec)==null||ut.call(t,"")}}return()=>{var nt;Je.current=[],Ie.current=[],(nt=t.onReportSpec)==null||nt.call(t,"")}},[ye,B,V,C,w,f]);const Ke=Q.useRef(null);return tke(n,Je,i,Ie,Ke),re.createElement("div",{className:I==="auto"?"w-fit h-fit relative":"w-full h-full relative",style:{overflow:I==="auto"?"visible":"hidden"}},re.createElement("div",{ref:$e,className:"inset-0 absolute"}),re.createElement(Zke,{style:{...I==="auto"?{}:{width:"100%",height:"100%"}},$rowSize:Math.max(le.length,1),$colSize:Math.max(ne.length,1),ref:Ke},B.map((Fe,nt)=>re.createElement("div",{key:nt,ref:Fe,className:I==="auto"?"":"overflow-hidden"}))))});function xo(e){return e!=null&&!Number.isNaN(e)}function Ql(e,t){return+xo(t)-+xo(e)||ll(e,t)}function KX(e,t){return+xo(t)-+xo(e)||e2(e,t)}function Ww(e){return e!=null&&`${e}`!=""}function tA(e){return isFinite(e)?e:NaN}function dJ(e){return e>0&&isFinite(e)?e:NaN}function Xw(e){return e<0&&isFinite(e)?e:NaN}function Jke(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return t;const i=e.getUTCHours(),n=e.getUTCMinutes(),s=e.getUTCSeconds(),l=e.getUTCMilliseconds();return`${xke(e.getUTCFullYear())}-${Rr(e.getUTCMonth()+1,2)}-${Rr(e.getUTCDate(),2)}${i||n||s||l?`T${Rr(i,2)}:${Rr(n,2)}${s||l?`:${Rr(s,2)}${l?`.${Rr(l,3)}`:""}`:""}Z`:""}`}function xke(e){return e<0?`-${Rr(-e,6)}`:e>9999?`+${Rr(e,6)}`:Rr(e,4)}function Rr(e,t){return`${e}`.padStart(t,"0")}const Yke=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function iA(e,t){return Yke.test(e+="")?new Date(e):t}function rb(e){if(e==null)return;const t=e[0],i=e[e.length-1];return e2(t,i)}const mm=1e3,Ua=mm*60,$a=Ua*60,nr=$a*24,Gc=nr*7,Gu=nr*30,wa=nr*365,a9=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",mm],["5 seconds",5*mm],["15 seconds",15*mm],["30 seconds",30*mm],["minute",Ua],["5 minutes",5*Ua],["15 minutes",15*Ua],["30 minutes",30*Ua],["hour",$a],["3 hours",3*$a],["6 hours",6*$a],["12 hours",12*$a],["day",nr],["2 days",2*nr],["week",Gc],["2 weeks",2*Gc],["month",Gu],["3 months",3*Gu],["6 months",6*Gu],["year",wa],["2 years",2*wa],["5 years",5*wa],["10 years",10*wa],["20 years",20*wa],["50 years",50*wa],["100 years",100*wa]],Jw=new Map([["second",mm],["minute",Ua],["hour",$a],["day",nr],["monday",Gc],["tuesday",Gc],["wednesday",Gc],["thursday",Gc],["friday",Gc],["saturday",Gc],["sunday",Gc],["week",Gc],["month",Gu],["year",wa]]),nA=new Map([["second",fb],["minute",RI],["hour",kI],["day",pm],["monday",Ete],["tuesday",Pte],["wednesday",Ute],["thursday",$te],["friday",Qte],["saturday",Dte],["sunday",QZ],["week",QZ],["month",DZ],["year",FI]]),xw=new Map([["second",fb],["minute",SI],["hour",LI],["day",NM],["monday",Ate],["tuesday",qte],["wednesday",eie],["thursday",tie],["friday",iie],["saturday",nie],["sunday",AZ],["week",AZ],["month",qZ],["year",CI]]),R0=Symbol("intervalDuration"),mJ=Symbol("intervalType");for(const[e,t]of nA)t[R0]=Jw.get(e),t[mJ]="time";for(const[e,t]of xw)t[R0]=Jw.get(e),t[mJ]="utc";const rf=[["year",CI,"utc"],["month",qZ,"utc"],["day",NM,"utc",6*Gu],["hour",LI,"utc",3*nr],["minute",SI,"utc",6*$a],["second",fb,"utc",30*Ua]],PZ=[["year",FI,"time"],["month",DZ,"time"],["day",pm,"time",6*Gu],["hour",kI,"time",3*nr],["minute",RI,"time",6*$a],["second",fb,"time",30*Ua]],Gke=[rf[0],PZ[0],rf[1],PZ[1],rf[2],PZ[2],...rf.slice(3)];function sA(e){let t=`${e}`.toLowerCase();
260t.endsWith("s")&&(t=t.slice(0,-1));let i=1;const n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),i=+n[1]),t){case"quarter":t="month",i*=3;break;case"half":t="month",i*=6;break}let s=xw.get(t);if(!s)throw new Error(`unknown interval: ${e}`);if(i>1&&!s.every)throw new Error(`non-periodic interval: ${t}`);return[t,i]}function lA(e){return cA(sA(e),"time")}function Yw(e){return cA(sA(e),"utc")}function cA([e,t],i){let n=(i==="time"?nA:xw).get(e);return t>1&&(n=n.every(t),n[R0]=Jw.get(e)*t,n[mJ]=i),n}function AC(e,t){if(!(t>1))return;const i=e[R0];if(!a9.some(([,s])=>s===i)||i%nr===0&&nr<i&&i<Gu)return;const[n]=a9[DX(([,s])=>Math.log(s)).center(a9,Math.log(i*t))];return(e[mJ]==="time"?lA:Yw)(n)}function qC(e,t,i){const n=t==="time"?NI:AX;if(i==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");const s=Vke(i);switch(e){case"millisecond":return Qd(n(".%L"),n(":%M:%S"),s);case"second":return Qd(n(":%S"),n("%-I:%M"),s);case"minute":return Qd(n("%-I:%M"),n("%p"),s);case"hour":return Qd(n("%-I %p"),n("%b %-d"),s);case"day":return Qd(n("%-d"),n("%b"),s);case"month":return Qd(n("%b"),n("%Y"),s);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function Vke(e){return e==="left"||e==="right"?(t,i)=>` 261${t} 262${i}`:e==="top"?(t,i)=>`${i} 263${t}`:(t,i)=>`${t} 264${i}`}function Ike(e){return e==="time"?PZ:e==="utc"?rf:Gke}function gke(e,t,i){const n=_n(Die(t,(s,l)=>Math.abs(l-s)));if(n<1e3)return qC("millisecond","utc",i);for(const[s,l,c,r]of Ike(e)){if(n>r||s==="hour"&&!n)break;if(t.every(a=>l.floor(a)>=a))return qC(s,c,i)}}function Qd(e,t,i){return(n,s,l)=>{const c=e(n,s),r=t(n,s),a=s-rb(l);return s!==a&&l[a]!==void 0&&r===t(l[a],a)?c:i(c,r)}}const Gw=Object.getPrototypeOf(Uint8Array),vke=Object.prototype.toString;function Xd(e){return e instanceof Array||e instanceof Gw}function rA(e){return e instanceof Gw&&!zke(e)}function aA(e){return(e==null?void 0:e.prototype)instanceof Gw&&!wke(e)}function zke(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function wke(e){return e===BigInt64Array||e===BigUint64Array}const oA=Symbol("reindex");function ni(e,t,i){const n=typeof t;return n==="string"?GA(e)?Vw(e.getChild(t),i):eT(e,uA(t),i):n==="function"?eT(e,t,i):n==="number"||t instanceof Date||n==="boolean"?wi(e,Tr(t),i):typeof(t==null?void 0:t.transform)=="function"?pI(t.transform(e),i):Hke(pI(t,i),e==null?void 0:e[oA])}function Hke(e,t){return e!=null&&t?pJ(e,t):e}function eT(e,t,i){return wi(e,aA(i)?(n,s)=>Iw(t(n,s)):t,i)}function pI(e,t){return t===void 0?Jd(e):VA(e)?Vw(e,t):e instanceof t?e:t.from(e,aA(t)&&!rA(e)?Iw:void 0)}function Vw(e,t){return e==null?e:(t===void 0||t===Array)&&$ke(e.type)?mA(tT(e)):pI(tT(e),t)}function tT(e){return e.nullCount?e.toJSON():e.toArray()}const UZ=[null],uA=e=>t=>{var n;const i=t[e];return i===void 0&&t.type==="Feature"?(n=t.properties)==null?void 0:n[e]:i},Dl={transform:fa},jt={transform:e=>e}
264,Nke=()=>1,Rke=()=>!0,pn=e=>e==null?e:`${e}`,vi=e=>e==null?e:+e,dA=e=>e?e[0]:void 0,yI=e=>e?e[1]:void 0,Tr=e=>()=>e;function kke(e){const t=+`${e}`.slice(1)/100;return(i,n)=>Pc(i,t,n)}function ab(e){return rA(e)?e:wi(e,Iw,Float64Array)}function Iw(e){return e==null?NaN:Number(e)}function mA(e){return wi(e,bA)}function bA(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?iA(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function Al(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:yJ(e)?[void 0,e]:[e,void 0]}function Kn(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function hA(e,t,i){if(e!=null)return mc(e,t,i)}function mc(e,t,i){const n=`${e}`.toLowerCase();if(!i.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function ob(e){return GA(e)?e:Jd(e)}function Jd(e){if(e==null||Xd(e))return e;if(VA(e))return Vw(e);if(fA(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function fA(e){switch(e==null?void 0:e.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function wi(e,t,i=Array){return e==null?e:e instanceof i?e.map(t):i.from(e,t)}function yp(e,t=Array){return e instanceof t?e.slice():t.from(e)}function pA({x:e,x1:t,x2:i}){return e!==void 0||t!==void 0||i!==void 0}function yA({y:e,y1:t,y2:i}){return e!==void 0||t!==void 0||i!==void 0}function bJ(e){return pA(e)||yA(e)||e.interval!==void 0}function ha(e){return(e==null?void 0:e.toString)===vke}function ZI(e){return ha(e)&&(e.type!==void 0||e.domain!==void 0)}function hJ(e){return ha(e)&&typeof e.transform!="function"}function ub(e){return hJ(e)&&e.value===void 0&&e.channel===void 0}function ZA(e,t,i,n=jt){return t===void 0&&i===void 0?(t=0,i=e===void 0?n:e):t===void 0?t=e===void 0?0:e:i===void 0&&(i=e===void 0?0:e),[t,i]}function gw(e,t){return e===void 0&&t===void 0?[dA,yI]:[e,t]}function fJ({z:e,fill:t,stroke:i}={}){return e===void 0&&([e]=Al(t)),e===void 0&&([e]=Al(i)),e}function Zp(e){return Xd(e)?e.length:e==null?void 0:e.numRows}function fa(e){const t=Zp(e),i=new Uint32Array(t);for(let n=0;n<t;++n)i[n]=n;return i}function pJ(e,t){return Xd(e)?wi(t,i=>e[i],e.constructor):wi(t,i=>e.at(i))}function Fke(e){return e.length===1?(t,i)=>e(pJ(i,t)):e}function Ske(e,t,i){return e.subarray?e.subarray(t,i):e.slice(t,i)}function Mr(e){return e!==null&&typeof e=="object"?e.valueOf():e}function WA(e,t){if(t[e]!==void 0)return t[e];switch(e){case"x1":case"x2":e="x";break;case"y1":case"y2":e="y";break}return t[e]}function Wp(e){let t;return[{transform:()=>t,label:xd(e)},i=>t=i]}function ts(e){return e==null?[e]:Wp(e)}function xd(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function BX(e,t){return{transform(i){const n=e.transform(i),s=t.transform(i);return ys(n)||ys(s)?wi(n,(l,c)=>new Date((+n[c]+ +s[c])/2)):wi(n,(l,c)=>(+n[c]+ +s[c])/2,Float64Array)},label:e.label}}function _X(e,t){const i=XA(t==null?void 0:t.interval,t==null?void 0:t.type);return i?wi(e,i):e}function XA(e,t){const i=vw(e,t);return i&&(n=>xo(n)?i.floor(n):n)}function vw(e,t){if(e!=null){if(typeof e=="number")return Lke(e);if(typeof e=="string")return(t==="time"?lA:Yw)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function Lke(e){e=+e,0<e&&e<1&&Number.isInteger(1/e)&&(e=-1/e);const t=Math.abs(e);return e<0?{floor:i=>Math.floor(i*t)/t,offset:(i,n=1)=>(i*t+Math.floor(n))/t,range:(i,n)=>Cn(Math.ceil(i*t),n*t).map(s=>s/t)}:{floor:i=>Math.floor(i/t)*t,offset:(i,n=1)=>i+t*Math.floor(n),range:(i,n)=>Cn(Math.ceil(i/t),n/t).map(s=>s*t)}}function jb(e,t){if(e=vw(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function Cke(e,t){if(e=jb(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function Tke(e){return bm(e)&&typeof(e==null?void 0:e.floor)=="function"&&e.floor()instanceof Date}function bm(e){return typeof(e==null?void 0:e.range)=="function"}function k0(e){return e===void 0||hJ(e)?e:{value:e}}function Mke(e){return e==null?null:{transform:t=>ni(t,e,Float64Array),label:xd(e)}}function Lo(e){return e&&typeof e[Symbol.iterator]=="function"}function JA(e){for(const t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function iT(e){for(const t of e){if(t==null)continue;const i=typeof t;
264return i==="string"||i==="boolean"}}function ys(e){for(const t of e)if(t!=null)return t instanceof Date}function Kke(e){for(const t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&iA(t)}function Bke(e){for(const t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function _ke(e){for(const t of e)if(t!=null)return typeof t=="number"}function o9(e,t){let i;for(const n of e)if(n!=null){if(!t(n))return!1;i=!0}return i}const Oke=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function yJ(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||Oke.has(e))}function jke(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function rs(e){return e==null||Xp(e)}function Xp(e){return/^\s*none\s*$/i.test(e)}function Eke(e){return/^\s*round\s*$/i.test(e)}function WI(e,t){return hA(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function ZJ(e="middle"){return WI(e,"frameAnchor")}function Pke(e={},...t){let i=e;for(const n of t)for(const s in n)if(i[s]===void 0){const l=n[s];i===e?i={...i,[s]:l}:i[s]=l}return i}function Uke(e){console.warn("named iterables are deprecated; please use an object instead");const t=new Set;return Object.fromEntries(Array.from(e,i=>{const{name:n}=i;if(n==null)throw new Error("missing name");const s=`${n}`;if(s==="__proto__")throw new Error(`illegal name: ${s}`);if(t.has(s))throw new Error(`duplicate name: ${s}`);return t.add(s),[n,i]}))}function xA(e){return Lo(e)?Uke(e):e}function YA(e){return e===!0?e="frame":e===!1?e=null:!fA(e)&&e!=null&&(e=mc(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function GA(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function VA(e){return e&&typeof e.toArray=="function"&&e.type}function $ke(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}const Lc=Symbol("position"),pa=Symbol("color"),F0=Symbol("radius"),S0=Symbol("length"),L0=Symbol("opacity"),WJ=Symbol("symbol"),IA=Symbol("projection"),yi=new Map([["x",Lc],["y",Lc],["fx",Lc],["fy",Lc],["r",F0],["color",pa],["opacity",L0],["symbol",WJ],["length",S0],["projection",IA]]);function Qke(e){return e===Lc||e===IA}function Dke(e){return e===Lc||e===F0||e===S0||e===L0}const Ake=Math.sqrt(3),qke=2/Ake,eFe={draw(e,t){const i=Math.sqrt(t/Math.PI),n=i*qke,s=n/2;e.moveTo(0,n),e.lineTo(i,s),e.lineTo(i,-s),e.lineTo(0,-n),e.lineTo(-i,-s),e.lineTo(-i,s),e.closePath()}},zw=new Map([["asterisk",sie],["circle",I9],["cross",lie],["diamond",cie],["diamond2",rie],["hexagon",eFe],["plus",aie],["square",oie],["square2",uie],["star",die],["t
264imes",mie],["triangle",bie],["triangle2",hie],["wye",fie]]);function ww(e){return e&&typeof e.draw=="function"}function tFe(e){return ww(e)?!0:typeof e!="string"?!1:zw.has(e.toLowerCase())}function Hw(e){if(e==null||ww(e))return e;const t=zw.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function iFe(e){if(e==null||ww(e))return[void 0,e];if(typeof e=="string"){const t=zw.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function Eb({filter:e,sort:t,reverse:i,transform:n,initializer:s,...l}={},c){if(n===void 0&&(e!=null&&(n=gA(e)),t!=null&&!ub(t)&&(n=u9(n,Nw(t))),i&&(n=u9(n,vA))),c!=null&&s!=null)throw new Error("transforms cannot be applied after initializers");return{...l,...(t===null||ub(t))&&{sort:t},transform:u9(n,c)}}function db({filter:e,sort:t,reverse:i,initializer:n,...s}={},l){return n===void 0&&(e!=null&&(n=gA(e)),t!=null&&!ub(t)&&(n=d9(n,Nw(t))),i&&(n=d9(n,vA))),{...s,...(t===null||ub(t))&&{sort:t},initializer:d9(n,l)}}function u9(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(i,n,s){return{data:i,facets:n}=e.call(this,i,n,s),t.call(this,ob(i),n,s)}}function d9(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(i,n,s,...l){let c,r,a,u,o,d;return{data:r=i,facets:a=n,channels:c}=e.call(this,i,n,s,...l),{data:o=r,facets:d=a,channels:u}=t.call(this,r,a,{...s,...c},...l),{data:o,facets:d,channels:{...c,...u}}}}function nFe(e,t){return(e.initializer!=null?db:Eb)(e,t)}function gA(e){return(t,i)=>{const n=ni(t,e);return{data:t,facets:i.map(s=>s.filter(l=>n[l]))}}}function vA(e,t){return{data:e,facets:t.map(i=>i.slice().reverse())}}function sFe(e,{sort:t,...i}={}){return{...(hJ(e)&&e.channel!==void 0?db:nFe)(i,Nw(e)),sort:ub(t)?t:null}}function Nw(e){return(typeof e=="function"&&e.length!==1?lFe:cFe)(e)}function lFe(e){return(t,i)=>{const n=Xd(t)?(s,l)=>e(t[s],t[l]):(s,l)=>e(t.get(s),t.get(l));return{data:t,facets:i.map(s=>s.slice().sort(n))}}}function cFe(e){let t,i;({channel:t,value:e,order:i}={...k0(e)});const n=t==null?void 0:t.startsWith("-");if(n&&(t=t.slice(1)),i===void 0&&(i=n?KX:Ql),typeof i!="function")switch(`${i}`.toLowerCase()){case"ascending":i=Ql;break;case"descending":i=KX;break;default:throw new Error(`invalid order: ${i}`)}return(s,l,c)=>{let r;if(t===void 0)r=ni(s,e);else{if(c===void 0)throw new Error("channel sort requires an initializer");if(r=c[t],!r)return{};r=r.value}const a=(u,o)=>i(r[u],r[o]);return{data:s,facets:l.map(u=>u.slice().sort(a))}}}function zA(e,t){return Rw(null,null,e,t)}function rFe(e={y:"count"},t={}){const{x:i=jt}=t;if(i==null)throw new Error("missing channel: x");return Rw(i,null,e,t)}function aFe(e={x:"count"},t={}){const{y:i=jt}=t;if(i==null)throw new Error("missing channel: y");return Rw(null,i,e,t)}function Rw(e,t,{data:i=Sw,filter:n,sort:s,reverse:l,...c}={},r={}){c=dFe(c,r),i=RA(i,jt),s=s==null?void 0:HA("sort",s,r),n=n==null?void 0:NA("filter",n,r);const[a,u]=ts(e),[o,d]=ts(t),{z:b,fill:h,stroke:p,x1:Z,x2:X,y1:J,y2:V,...g}=r,[I,v]=ts(b),[k]=Al(h),[N]=Al(p),[C,f]=ts(k),[w,x]=ts(N);return{..."z"in r&&{z:I||b},..."fill"in r&&{fill:C||h},..."stroke"in r&&{stroke:w||p},...Eb(g,(R,K,B)=>{const _=_X(ni(R,e),B==null?void 0:B.x),j=_X(ni(R,t),B==null?void 0:B.y),U=ni(R,b),$=ni(R,k),te=ni(R,N),E=kA(c,{z:U,fill:$,stroke:te}),ie=[],ee=[],A=_&&u([]),le=j&&d([]),ne=U&&v([]),se=$&&f([]),oe=te&&x([]);let de=0;for(const Je of c)Je.initialize(R);s&&s.initialize(R),n&&n.initialize(R);for(const Je of K){const Ie=[];for(const Ye of c)Ye.scope("facet",Je);s&&s.scope("facet",Je),n&&n.scope("facet",Je);for(const[Ye,Te]of zf(Je,E))for(const[$e,Ve]of zf(Te,j))for(const[Me,Ee]of zf(Ve,_)){const ye={data:R};if(_&&(ye.x=Me),j&&(ye.y=$e),E&&(ye.z=Ye),!(n&&!n.reduce(Ee,ye))){Ie.push(de++),ee.push(i.reduceIndex(Ee,R,ye)),_&&A.push(Me),j&&le.push($e),U&&ne.push(E===U?Ye:U[Ee[0]]),$&&se.push(E===$?Ye:$[Ee[0]]),te&&oe.push(E===te?Ye:te[Ee[0]]);for(const Ke of c)Ke.reduce(Ee,ye);s&&s.reduce(Ee,ye)}}ie.push(Ie)}return FA(ie,s,l),{data:ee,facets:ie}}),...!hm(c,"x")&&(a?{x:a}:{x1:Z,x2:X}),...!hm(c,"y")&&(o?{y:o}:{y1:J,y2:V}),...Object.fromEntries(c.map(({name:R,output:K})=>[R,K]))}}function hm(e,...t){for(const{name:i}of e)if(t.includes(i))return!0;return!1}function wA(e,t,i=kw){const n=Object.entries(e);return t.title!=null&&e.title===void 0&&n.push(["title",fFe]),t.href!=null&&e.href===void 0&&n.push(["href",Lw]),n.filter(([,s])=>s!==void 0).map(([s,l])=>l===null?oFe(s):i(s,l,t))}function kw(e,t,i,n=Fw){let s;ha(t)&&"reduce"in t&&(s=t.scale,t=t.reduce);const l=n(e,t,i),[c,r]=Wp(l.label);let a;return{name:e,output:s===void 0?c:{value:c,scale:s},initialize(u){l.initialize(u),a=r([])},scope(u,o){l.scope(u,o)},reduce(u,o){a.push(l.reduce(u,o))}}}function oFe(e){return{name:e,initialize(){},scope(){},reduce(){}}}function Fw(e,t,i,n=XJ){const s=WA(e,i),l=n(t,s);let c,r;return{label:xd(l===OX?null:s,l.label),initialize(a){c=s===void 0?a:ni(a,s),l.scope==="data"&&(r=l.reduceIndex(fa(a),c))},scope(a,u){l.scope===a&&(r=l.reduceIndex(u,c))},reduce(a,u){return l.scope==null?l.reduceIndex(a,c,u):l.reduceIndex(a,c,r,u)}}}function zf(e,t){return t?Vp(e,i=>t[i]):[[,e]]}function XJ(e,t,i=uFe){if(e==null)return i(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&ha(e))return bFe(e);if(typeof e=="function")return hFe(e);if(/^p\d{2}$/i.test(e))return vr(kke(e));switch(`${e}`.toLowerCase()){case"first":return Lw;case"last":return pFe;case"identity":return Sw;case"count":return OX;case"distinct":return yFe;case"sum":return t==null?OX:ZFe;case"proportion":return sT(t,"data");case"proportion-facet":return sT(t,"facet");case"deviation":return vr(BI);case"min":return vr($r);case"min-index":return vr(Pie);case"max":return vr(_n);case"max-index":return vr(Eie);case"mean":return nT(UM);case"median":return nT(Rf);case"variance":return vr(jM);case"mode":return vr(Qie)}return i(e)}function uFe(e){throw new Error(`invalid reduce: ${e}`)}function dFe(e,t){return wA(e,t,HA)}function HA(e,t,i){return kw(e,t,i,NA)}function NA(e,t,i){return Fw(e,t,i,RA)}function RA(e,t){return XJ(e,t,mFe)}function mFe(e){switch(`${e}`.toLowerCase()){case"x":return WFe;case"y":return XFe;case"z":return SA}throw new Error(`invalid group reduce: ${e}`)}function kA(e,t){for(const i in t){const n=t[i];if(n!==void 0&&!e.some(s=>s.name===i))return n}}function FA(e,t,i){if(t){const n=t.output.transform(),s=(l,c)=>Ql(n[l],n[c]);e.forEach(l=>l.sort(s))}i&&e.forEach(n=>n.reverse())}function bFe(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function hFe(e){return{reduceIndex(t,i,n){return e(pJ(i,t),n)}}}function vr(e){return{reduceIndex(t,i){return e(t,n=>i[n])}}}function nT(e){return{reduceIndex(t,i){const n=e(t,s=>i[s]);return ys(i)?new Date(n):n}}}const Sw={reduceIndex(e,t){return pJ(t,e)}},Lw={reduceIndex(e,t){return t[e[0]]}},fFe={reduceIndex(e,t){const n=$Z(ym(e,l=>l.length,l=>t[l]),yI),s=n.slice(-5).reverse();if(s.length<n.length){const l=n.slice(0,-4);
264s[4]=[`⦠${l.length.toLocaleString("en-US")} more`,Uc(l,yI)]}return s.map(([l,c])=>`${l} (${c.toLocaleString("en-US")})`).join(` 265`)}},pFe={reduceIndex(e,t){return t[e[e.length-1]]}},OX={label:"Frequency",reduceIndex(e){return e.length}},yFe={label:"Distinct",reduceIndex(e,t){const i=new co;for(const n of e)i.add(t[n]);return i.size}},ZFe=vr(Uc);function sT(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(i,n,s=1)=>i.length/s}:{scope:t,reduceIndex:(i,n,s=1)=>Uc(i,l=>n[l])/s}}const WFe={reduceIndex(e,t,{x:i}){return i}},XFe={reduceIndex(e,t,{y:i}){return i}},SA={reduceIndex(e,t,{z:i}){return i}};function Jp(e,{scale:t,type:i,value:n,filter:s,hint:l,label:c=xd(n)},r){return l===void 0&&typeof(n==null?void 0:n.transform)=="function"&&(l=n.hint),LA(r,{scale:t,type:i,value:ni(e,n),label:c,filter:s,hint:l})}function JFe(e,t){return Object.fromEntries(Object.entries(e).map(([i,n])=>[i,Jp(t,n,i)]))}function xFe(e,t){const i=Object.fromEntries(Object.entries(e).map(([n,{scale:s,value:l}])=>{const c=s==null?null:t[s];return[n,c==null?l:wi(l,c)]}));return i.channels=e,i}function LA(e,t){const{scale:i,value:n}=t;if(i===!0||i==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=i!==!0&&o9(n,yJ)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=i!==!0&&o9(n,jke)?null:"opacity",t.defaultScale="opacity";break;case"symbol":i!==!0&&o9(n,tFe)?(t.scale=null,t.value=wi(n,Hw)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=yi.has(e)?e:null;break}else if(i===!1)t.scale=null;else if(i!=null&&!yi.has(i))throw new Error(`unknown scale: ${i}`);return t}function YFe(e,t,i,n,s){const{order:l,reverse:c,reduce:r=!0,limit:a}=s;for(const u in s){if(!yi.has(u))continue;let{value:o,order:d=l,reverse:b=c,reduce:h=r,limit:p=a}=k0(s[u]);const Z=o==null?void 0:o.startsWith("-");if(Z&&(o=o.slice(1)),d=d===void 0?Z!==(o==="width"||o==="height")?TA:CA:IFe(d),h==null||h===!1)continue;const X=u==="fx"||u==="fy"?VFe(t,n[u]):GFe(i,u);if(!X)throw new Error(`missing channel for scale: ${u}`);const J=X.value,[V=0,g=1/0]=Lo(p)?p:p<0?[p]:[0,p];if(o==null)X.domain=()=>{let I=Array.from(new co(J));return b&&(I=I.reverse()),(V!==0||g!==1/0)&&(I=I.slice(V,g)),I};else{const I=o==="data"?e:o==="height"?lT(i,"y1","y2"):o==="width"?lT(i,"x1","x2"):XI(i,o,o==="y"?"y2":o==="x"?"x2":void 0),v=XJ(h===!0?"max":h,I);X.domain=()=>{let k=Oie(fa(J),N=>v.reduceIndex(N,I),N=>J[N]);return d&&k.sort(d),b&&k.reverse(),(V!==0||g!==1/0)&&(k=k.slice(V,g)),k.map(dA)}}}}function GFe(e,t){for(const i in e){const n=e[i];if(n.scale===t)return n}}function VFe(e,t){const i=e.original;if(i===e)return t;const n=t.value,s=t.value=[];for(let l=0;l<i.length;++l){const c=n[i[l][0]];for(const r of e[l])s[r]=c}return t}function lT(e,t,i){const n=XI(e,t),s=XI(e,i);return wi(s,(l,c)=>Math.abs(l-n[c]),Float64Array)}function XI(e,t,i){let n=e[t];if(!n&&i!==void 0&&(n=e[i]),n)return n.value;throw new Error(`missing channel: ${t}`)}function IFe(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return CA;case"descending":return TA}throw new Error(`invalid order: ${e}`)}function CA([e,t],[i,n]){return Ql(t,n)||Ql(e,i)}function TA([e,t],[i,n]){return KX(t,n)||Ql(e,i)}function cT(e,t){let i=e[t];if(i){for(;i.source;)i=i.source;return i.source===null?null:i}}const MA=new Map([["accent",i4],["category10",t4],["dark2",n4],["observable10",s4],["paired",l4],["pastel1",c4],["pastel2",r4],["set1",a4],["set2",o4],["set3",u4],["tableau10",gie]]);function gFe(e){return e!=null&&MA.has(`${e}`.toLowerCase())}const rT=new Map([...MA,["brbg",Vr(d4,m4)],["prgn",Vr(b4,h4)],["piyg",Vr(f4,p4)],["puor",Vr(y4,Z4)],["rdbu",Vr(fG,IW)],["rdgy",Vr(W4,X4)],["rdylbu",Vr(pG,gW)],["rdylgn",Vr(J4,x4)],["spectral",Vr(Y4,G4)],["burd",aT(fG,IW)],["buylrd",aT(pG,gW)],["blues",Ti($4,Q4)],["greens",Ti(D4,A4)],["greys",Ti(q4,ej)],["oranges",Ti(lj,cj)],["purples",Ti(tj,ij)],["reds",Ti(nj,sj)],["turbo",Ir(bj)],["viridis",Ir(hj)],["magma",Ir(fj)],["inferno",Ir(pj)],["plasma",Ir(yj)],["cividis",Ir(rj)],["cubehelix",Ir(aj)],["warm",Ir(oj)],["cool",Ir(uj)],["bugn",Ti(V4,I4)],["bupu",Ti(g4,v4)],["gnbu",Ti(z4,w4)],["orrd",Ti(H4,N4)],["pubu",Ti(F4,S4)],["pubugn",Ti(R4,k4)],["purd",Ti(L4,C4)],["rdpu",Ti(T4,M4)],["ylgn",Ti(_4,O4)],["ylgnbu",Ti(K4,B4)],["ylorbr",Ti(j4,E4)],["ylorrd",Ti(P4,U4)],["rainbow",oT(dj)],["sinebow",oT(mj)]]);function Ti(e,t){return({length:i})=>i===1?[e[3][1]]:i===2?[e[3][1],e[3][2]]:(i=Math.max(3,Math.floor(i)),i>
2659?al(t,i):e[i])}function Vr(e,t){return({length:i})=>i===2?[e[3][0],e[3][2]]:(i=Math.max(3,Math.floor(i)),i>11?al(t,i):e[i])}function aT(e,t){return({length:i})=>i===2?[e[3][2],e[3][0]]:(i=Math.max(3,Math.floor(i)),i>11?al(n=>t(1-n),i):e[i].slice().reverse())}function Ir(e){return({length:t})=>al(e,Math.max(2,Math.floor(t)))}function oT(e){return({length:t})=>al(e,Math.floor(t)+1).slice(0,-1)}function KA(e){const t=`${e}`.toLowerCase();if(!rT.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return rT.get(t)}function JJ(e,t){const i=KA(e),n=typeof i=="function"?i({length:t}):i;return n.length!==t?n.slice(0,t):n}function vFe(e,t="greys"){const i=new Set,[n,s]=JJ(t,2);for(const l of e)if(l!=null)if(l===!0)i.add(s);else if(l===!1)i.add(n);else return;return[...i]}const uT=new Map([["brbg",m4],["prgn",h4],["piyg",p4],["puor",Z4],["rdbu",IW],["rdgy",X4],["rdylbu",gW],["rdylgn",x4],["spectral",G4],["burd",e=>IW(1-e)],["buylrd",e=>gW(1-e)],["blues",Q4],["greens",A4],["greys",ej],["purples",ij],["reds",sj],["oranges",cj],["turbo",bj],["viridis",hj],["magma",fj],["inferno",pj],["plasma",yj],["cividis",rj],["cubehelix",aj],["warm",oj],["cool",uj],["bugn",I4],["bupu",v4],["gnbu",w4],["orrd",N4],["pubugn",k4],["pubu",S4],["purd",C4],["rdpu",M4],["ylgnbu",B4],["ylgn",O4],["ylorbr",E4],["ylorrd",U4],["rainbow",dj],["sinebow",mj]]);function Cw(e){const t=`${e}`.toLowerCase();if(!uT.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return uT.get(t)}const zFe=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function wFe(e){return e!=null&&zFe.has(`${e}`.toLowerCase())}const BA=e=>t=>e(1-t),m9=[0,1],dT=new Map([["number",hb],["rgb",UX],["hsl",iM],["hcl",tM],["lab",nM]]);function _A(e){const t=`${e}`.toLowerCase();if(!dT.has(t))throw new Error(`unknown interpolator: ${t}`);return dT.get(t)}function C0(e,t,i,{type:n,nice:s,clamp:l,zero:c,domain:r=jA(e,i),unknown:a,round:u,scheme:o,interval:d,range:b=yi.get(e)===F0?KFe(i,r):yi.get(e)===S0?BFe(i,r):yi.get(e)===L0?m9:void 0,interpolate:h=yi.get(e)===pa?o==null&&b!==void 0?UX:Cw(o!==void 0?o:n==="cyclical"?"rainbow":"turbo"):u?HI:hb,reverse:p}){if(r=mT(r),d=jb(d,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof h!="function"&&(h=_A(h)),p=!!p,b!==void 0){const Z=r.length,X=(b=mT(b)).length;if(Z!==X){if(h.length===1)throw new Error("invalid piecewise interpolator");h=Gp(h,b),b=void 0}}if(h.length===1?(p&&(h=BA(h),p=!1),b===void 0&&(b=Float64Array.from(r,(Z,X)=>X/(r.length-1)),b.length===2&&(b=m9)),t.interpolate((b===m9?Tr:Mw)(h))):t.interpolate(h),c){const[Z,X]=qs(r);(Z>0||X<0)&&(r=yp(r),(rb(r)||1)===Math.sign(Z)?r[0]=0:r[r.length-1]=0)}return p&&(r=iW(r)),t.domain(r).unknown(a),s&&(t.nice(HFe(s,n)),r=t.domain()),b!==void 0&&t.range(b),l&&t.clamp(l),{type:n,domain:r,range:b,scale:t,interpolate:h,interval:d}}function mT(e){return e=Jd(e),e.length>=2?e:[e[0],e[0]]}function HFe(e,t){return e===!0?void 0:typeof e=="number"?e:Cke(e,t)}function NFe(e,t,i){return C0(e,$X(),t,i)}function RFe(e,t,i){return OA(e,t,{...i,exponent:.5})}function OA(e,t,{exponent:i=1,...n}){return C0(e,aM().exponent(i),t,{...n,type:"pow"})}function kFe(e,t,{base:i=10,domain:n=_Fe(t),...s}){return C0(e,rM().base(i),t,{...s,domain:n})}function FFe(e,t,{constant:i=1,...n}){return C0(e,oM().constant(i),t,n)}function SFe(e,t,{range:i,quantiles:n=i===void 0?5:(i=[...i]).length,n:s=n,scheme:l="rdylbu",domain:c=OFe(t),unknown:r,interpolate:a,reverse:u}){return i===void 0&&(i=a!==void 0?al(a,s):yi.get(e)===pa?JJ(l,s):void 0),c.length>0&&(c=yM(c,i===void 0?{length:s}:i).quantiles()),Tw(e,t,{domain:c,range:i,reverse:u,unknown:r})}function LFe(e,t,{range:i,n=i===void 0?5:(i=[...i]).length,scheme:s="rdylbu",domain:l=jA(e,t),unknown:c,interpolate:r,reverse:a}){const[u,o]=qs(l);let d;return i===void 0?(d=RM(u,o,n),d[0]<=u&&d.splice(0,1),d[d.length-1]>=o&&d.pop(),n=d.length+1,i=r!==void 0?al(r,n):yi.get(e)===pa?JJ(s,n):void 0):(d=al(hb(u,o),n+1).slice(1,-1),u instanceof Date&&(d=d.map(b=>new Date(b)))),rb(Jd(l))<0&&d.reverse(),Tw(e,t,{domain:d,range:i,reverse:a,unknown:c})}function Tw(e,t,{domain:i=[0],unknown:n,scheme:s="rdylbu",interpolate:l,range:c=l!==void 0?al(l,i.length+1):yi.get(e)===pa?JJ(s,i.length+1):void 0,reverse:r}){i=Jd(i);const a=rb(i);if(!isNaN(a)&&!CFe(i,a))throw new Error(`the ${e} scale has a non-monotonic domain`);return r&&(c=iW(c)),{type:"threshold",scale:ZM(a<0?iW(i):i,c===void 0?[]:c).unknown(n),domain:i,range:c}}function CFe(e,t){for(let i=1,n=e.length,s=e[0];i<n;++i){const l=e2(s,s=e[i]);if(l!==0&&l!==t)return!1}return!0}function TFe(e){return{type:"identity",scale:Dke(yi.get(e))?cM():t=>t}}function xp(e,t=tA){return e.length?[$r(e,({value:i})=>i===void 0?i:$r(i,t)),_n(e,({value:i})=>i===void 0?i:_n(i,t))]:[0,1]}function jA(e,t){const i=yi.get(e);return(i===F0||i===L0||i===S0?MFe:xp)(t)}function MFe(e){return[0,e.length?_n(e,({value:t})=>t===void 0?t:_n(t,tA)):1]}
265function KFe(e,t){const i=e.find(({radius:c})=>c!==void 0);if(i!==void 0)return[0,i.radius];const n=Pc(e,.5,({value:c})=>c===void 0?NaN:Pc(c,.25,dJ)),s=t.map(c=>3*Math.sqrt(c/n)),l=30/_n(s);return l<1?s.map(c=>c*l):s}function BFe(e,t){const i=Rf(e,({value:l})=>l===void 0?NaN:Rf(l,Math.abs)),n=t.map(l=>12*l/i),s=60/_n(n);return s<1?n.map(l=>l*s):n}function _Fe(e){for(const{value:t}of e)if(t!==void 0)for(let i of t){if(i>0)return xp(e,dJ);if(i<0)return xp(e,Xw)}return[1,10]}function OFe(e){const t=[];for(const{value:i}of e)if(i!==void 0)for(const n of i)t.push(n);return t}function Mw(e){return(t,i)=>n=>e(t+n*(i-t))}let JI=0,xI;function jFe(){const e=JI;return JI=0,xI=void 0,e}function so(e){e!==xI&&(xI=e,console.warn(e),++JI)}function xJ(e,t,i,n,{type:s,nice:l,clamp:c,domain:r=xp(n),unknown:a,pivot:u=0,scheme:o,range:d,symmetric:b=!0,interpolate:h=yi.get(e)===pa?o==null&&d!==void 0?UX:Cw(o!==void 0?o:"rdbu"):hb,reverse:p}){u=+u,r=Jd(r);let[Z,X]=r;if(r.length>2&&so(`Warning: the diverging ${e} scale domain contains extra elements.`),e2(Z,X)<0&&([Z,X]=[X,Z],p=!p),Z=Math.min(Z,u),X=Math.max(X,u),typeof h!="function"&&(h=_A(h)),d!==void 0&&(h=h.length===1?Mw(h)(...d):Gp(h,d)),p&&(h=BA(h)),b){const J=i.apply(u),V=J-i.apply(Z),g=i.apply(X)-J;V<g?Z=i.invert(J-g):V>g&&(X=i.invert(J+V))}return t.domain([Z,u,X]).unknown(a).interpolator(h),c&&t.clamp(c),l&&t.nice(l),{type:s,domain:[Z,X],pivot:u,interpolate:h,scale:t}}function EFe(e,t,i){return xJ(e,bM(),QFe,t,i)}function PFe(e,t,i){return EA(e,t,{...i,exponent:.5})}function EA(e,t,{exponent:i=1,...n}){return xJ(e,fM().exponent(i=+i),qFe(i),t,{...n,type:"diverging-pow"})}function UFe(e,t,{base:i=10,pivot:n=1,domain:s=xp(t,n<0?Xw:dJ),...l}){return xJ(e,hM().base(i=+i),DFe,t,{domain:s,pivot:n,...l})}function $Fe(e,t,{constant:i=1,...n}){return xJ(e,pM().constant(i=+i),eSe(i),t,n)}const QFe={apply(e){return e},invert(e){return e}},DFe={apply:Math.log,invert:Math.exp},AFe={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function qFe(e){return e===.5?AFe:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function eSe(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function PA(e,t,i,n){return C0(e,t,i,n)}function tSe(e,t,i){return PA(e,uM(),t,i)}function iSe(e,t,i){return PA(e,dM(),t,i)}const T0=Symbol("ordinal");function UA(e,t,i,{type:n,interval:s,domain:l,range:c,reverse:r,hint:a}){return s=jb(s,n),l===void 0&&(l=QA(i,s,e)),(n==="categorical"||n===T0)&&(n="ordinal"),r&&(l=iW(l)),l=t.domain(l).domain(),c!==void 0&&(typeof c=="function"&&(c=c(l)),t.range(c)),{type:n,domain:l,range:c,scale:t,hint:a,interval:s}}function nSe(e,t,{type:i,interval:n,domain:s,range:l,scheme:c,unknown:r,...a}){n=jb(n,i),s===void 0&&(s=QA(t,n,e));let u;if(yi.get(e)===WJ)u=cSe(t),l=l===void 0?rSe(u):wi(l,Hw);else if(yi.get(e)===pa&&(l===void 0&&(i==="ordinal"||i===T0)&&(l=vFe(s,c),l!==void 0&&(c=void 0)),c===void 0&&l===void 0&&(c=i==="ordinal"?"turbo":"observable10"),c!==void 0))if(l!==void 0){const o=Cw(c),d=l[0],b=l[1]-l[0];l=({length:h})=>al(p=>o(d+b*p),h)}else l=KA(c);if(r===wM)throw new Error(`implicit unknown on ${e} scale is not supported`);return UA(e,QX().unknown(r),t,{...a,type:i,domain:s,range:l,hint:u})}function sSe(e,t,{align:i=.5,padding:n=.5,...s}){return $A(pie().align(i).padding(n),t,s,e)}function lSe(e,t,{align:i=.5,padding:n=.1,paddingInner:s=n,paddingOuter:l=e==="fx"||e==="fy"?0:n,...c}){return $A(kM().align(i).paddingInner(s).paddingOuter(l),t,c,e)}function $A(e,t,i,n){let{round:s}=i;return s!==void 0&&e.round(s=!!s),e=UA(n,e,t,i),e.round=s,e}function QA(e,t,i){const n=new co;for(const{value:s,domain:l}of e){if(l!==void 0)return l();if(s!==void 0)for(const c of s)n.add(c)}if(t!==void 0){const[s,l]=qs(n).map(t.floor,t);return t.range(s,t.offset(l))}if(n.size>1e4&&yi.get(i)===Lc)throw new Error(`implicit ordinal domain of ${i} scale has more than 10,000 values`);return $Z(n,Ql)}function bT(e,t){let i;for(const{hint:n}of e){const s=n==null?void 0:n[t];if(s!==void 0){if(i===void 0)i=s;else if(i!==s)return}}return i}function cSe(e){return{fill:bT(e,"fill"),stroke:bT(e,"stroke")}}function rSe(e){return rs(e.fill)?yie:Zie}function YI(e,{label:t,inset:i=0,insetTop:n=i,insetRight:s=i,insetBottom:l=i,insetLeft:c=i,round:r,nice:a,clamp:u,zero:o,al
265ign:d,padding:b,projection:h,facet:{label:p=t}={},...Z}={}){const X={};for(const[J,V]of e){const g=Z[J],I=mSe(J,V,{round:yi.get(J)===Lc?r:void 0,nice:a,clamp:u,zero:o,align:d,padding:b,projection:h,...g});if(I){let{label:v=J==="fx"||J==="fy"?p:t,percent:k,transform:N,inset:C,insetTop:f=C!==void 0?C:J==="y"?n:0,insetRight:w=C!==void 0?C:J==="x"?s:0,insetBottom:x=C!==void 0?C:J==="y"?l:0,insetLeft:R=C!==void 0?C:J==="x"?c:0}=g||{};if(N==null)N=void 0;else if(typeof N!="function")throw new Error("invalid scale transform; not a function");I.percent=!!k,I.label=v===void 0?oSe(V,I):v,I.transform=N,J==="x"||J==="fx"?(I.insetLeft=+R,I.insetRight=+w):(J==="y"||J==="fy")&&(I.insetTop=+f,I.insetBottom=+x),X[J]=I}}return X}function hT(e){const t={},i={scales:t};for(const[n,s]of Object.entries(e)){const{scale:l,type:c,interval:r,label:a}=s;t[n]=ySe(s),i[n]=l,l.type=c,r!=null&&(l.interval=r),a!=null&&(l.label=a)}return i}function aSe(e,t){const{x:i,y:n,fx:s,fy:l}=e,c=s||l?Kw(t):t;s&&fT(s,c),l&&pT(l,c);const r=s||l?DA(e,t):t;i&&fT(i,r),n&&pT(n,r)}function oSe(e=[],t){let i;for(const{label:n}of e)if(n!==void 0){if(i===void 0)i=n;else if(i!==n)return}if(i!==void 0)return!Yd(t)&&t.percent&&(i=`${i} (%)`),{inferred:!0,toString:()=>i}}function uSe(e){return Math.sign(rb(e.domain()))*Math.sign(rb(e.range()))}function Kw(e){const{marginTop:t,marginRight:i,marginBottom:n,marginLeft:s,width:l,height:c,facet:{marginTop:r,marginRight:a,marginBottom:u,marginLeft:o}}=e;return{marginTop:Math.max(t,r),marginRight:Math.max(i,a),marginBottom:Math.max(n,u),marginLeft:Math.max(s,o),width:l,height:c}}function DA({fx:e,fy:t},i){const{marginTop:n,marginRight:s,marginBottom:l,marginLeft:c,width:r,height:a}=Kw(i);return{marginTop:n,marginRight:s,marginBottom:l,marginLeft:c,width:e?e.scale.bandwidth()+c+s:r,height:t?t.scale.bandwidth()+n+l:a,facet:{width:r,height:a}}}function fT(e,t){if(e.range===void 0){const{insetLeft:i,insetRight:n}=e,{width:s,marginLeft:l=0,marginRight:c=0}=t,r=l+i,a=s-c-n;e.range=[r,Math.max(r,a)],Yd(e)||(e.range=qA(e)),e.scale.range(e.range)}AA(e)}function pT(e,t){if(e.range===void 0){const{insetTop:i,insetBottom:n}=e,{height:s,marginTop:l=0,marginBottom:c=0}=t,r=l+i,a=s-c-n;e.range=[Math.max(r,a),r],Yd(e)?e.range.reverse():e.range=qA(e),e.scale.range(e.range)}AA(e)}function AA(e){e.round===void 0&&hSe(e)&&dSe(e)<=30&&e.scale.round(!0)}function dSe({scale:e}){const t=e.domain().length,[i,n]=e.range(),s=e.paddingInner?e.paddingInner():1,l=e.paddingOuter?e.paddingOuter():e.padding(),c=t-s,r=Math.abs(n-i)/Math.max(1,c+l*2);return(r-Math.floor(r))*c}function qA(e){const t=e.scale.domain().length+e8(e);if(!(t>2))return e.range;const[i,n]=e.range;return Array.from({length:t},(s,l)=>i+l/(t-1)*(n-i))}function mSe(e,t=[],i={}){const n=bSe(e,t,i);if(i.type===void 0&&i.domain===void 0&&i.range===void 0&&i.interval==null&&e!=="fx"&&e!=="fy"&&Yd({type:n})){const s=t.map(({value:l})=>l).filter(l=>l!==void 0);s.some(ys)?so(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${Dd(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${Dd(n)}".`):s.some(Kke)?so(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${Dd(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${Dd(n)}".`):s.some(Bke)&&so(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${Dd(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${Dd(n)}".`)}switch(i.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":i=rZ(t,i,ab);break;case"identity":switch(yi.get(e)){case Lc:i=rZ(t,i,ab);break;case WJ:i=rZ(t,i,fSe);break}break;case"utc":case"time":i=rZ(t,i,mA);break}switch(n){case"diverging":return EFe(e,t,i);case"diverging-sqrt":return PFe(e,t,i);case"diverging-pow":return EA(e,t,i);case"diverging-log":return UFe(e,t,i);case"diverging-symlog":return $Fe(e,t,i);case"categorical":case"ordinal":case T0:return nSe(e,t,i);case"cyclical":case"sequential":case"linear":return NFe(e,t,i);case"sqrt":return RFe(e,t,i);case"threshold":return Tw(e,t,i);case"quantile":return SFe(e,t,i);case"quantize":return LFe(e,t,i);case"pow":return OA(e,t,i);case"log":return kFe(e,t,i);case"symlog":return FFe(e,t,i);case"utc":return iSe(e,t,i);case"time":return tSe(e,t,i);case"point":return sSe(e,t,i);case"band":return lSe(e,t,i);case"identity":return TFe(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function Dd(e){return typeof e=="symbol"?e.description:e}function yT(e){return typeof e=="string"?`${e}`.toLowerCase():e}const ZT={toString:()=>"projection"};function bSe(e,t,{type:i,domain:n,range:s,scheme:l,pivot:c,projection:r}){var o;if(i=yT(i),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&r!=null&&(i=ZT);for(const d of t){const b=yT(d.type);if(b!==void 0){if(i===void 0)i=b;else if(i!==b)throw new Error(`scale incompatible with channel: ${i} !== ${b}`)}}if(i===ZT)return;if(i!==void 0)return i;if(n===void 0&&!t.some(({value:d})=>d!==void 0))return;const a=yi.get(e);if(a===F0)return"sqrt";if(a===L0||a===S0)return"linear";if(a===WJ)return"ordinal";const u=(o=n??s)==null?void 0:o.length;if(u<2||u>2)return b9(a);if(n!==void 0){if(iT(n))return b9(a);if(ys(n))return"utc"}else{const d=t.map(({value:b})=>b).filter(b=>b!==void 0);if(d.some(iT))return b9(a);if(d.some(ys))return"utc"}if(a===pa){if(c!=null||wFe(l))return"diverging";if(gFe(l))return"categorical"}return"linear"}function b9(e){switch(e){case Lc:return"point";case pa:return T0;default:return"ordinal"}}function Yd({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===T0}function e8({type:e}){return e==="threshold"}function hSe({type:e}){return e==="point"||e==="band"}function sr(e){if(e===void 0)return!0;const t=e.domain(),i=e(t[0]);for(let n=1,s=t.length;n<s;++n)if(e(t[n])-i)return!1;return!0}function rZ(e,{domain:t,...i},n){var s;for(const l of e)l.value!==void 0&&(t===void 0&&(t=(s=l.value)==null?void 0:s.domain),l.value=n(l.value));return{domain:t===void 0?t:n(t),...i}}function fSe(e){return wi(e,Hw)}function pSe(e){return t=>{if(!yi.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function ySe({scale:e,type:t,domain:i,range:n,interpolate:s,interval:l,transform:c,percent:r,pivot:a}){if(t==="identity")return{type:"identity",apply:o=>o,invert:o=>o};const u=e.unknown?e.unknown():void 0;return{type:t,domain:yp(i),...n!==void 0&&{range:yp(n)},...c!==void 0&&{transform:c},...r&&{percent:r},...u!==void 0&&{unknown:u},...l!==void 0&&{interval:l},...s!==void 0&&{interpolate:s},...e.clamp&&{clamp:e.clamp()},...a!==void 0&&{pivot:a,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:o=>e(o),...e.invert&&{invert:o=>e.invert(o)}}}function ZSe(e,t){const{fx:i,fy:n}=YI(e,t),s=i==null?void 0:i.scale.domain(),l=n==null?void 0:n.scale.domain();return s&&l?Bie(s,l).map(([c,r],a)=>({x:c,y:r,i:a})):s?s.map((c,r)=>({x:c,i:r})):l?l.map((c,r)=>({y:c,i:r})):void 0}function WSe(e,{x:t,y:i}){return t&&(t=GI(t)),i&&(i=GI(i)),e.filter(t&&i?n=>t.has(n.x)&&i.has(n.y):t?n=>t.has(n.x):n=>i.has(n.y)).sort(t&&i?(n,s)=>t.get(n.x)-t.get(s.x)||i.get(n.y)-i.get(s.y):t?(n,s)=>t.get(n.x)-t.get(s.x):(n,s)=>i.get(n.y)-i.get(s.y))}function Bw(e,{fx:t,fy:i}){const n=fa(e),s=t==null?void 0:t.value,l=i==null?void 0:i.value;return t&&i?ym(n,c=>
265(c.fx=s[c[0]],c.fy=l[c[0]],c),c=>s[c],c=>l[c]):t?ym(n,c=>(c.fx=s[c[0]],c),c=>s[c]):ym(n,c=>(c.fy=l[c[0]],c),c=>l[c])}function XSe(e,t,{marginTop:i,marginLeft:n}){const s=e?({x:c})=>e(c)-n:()=>0,l=t?({y:c})=>t(c)-i:()=>0;return function(c){this.tagName==="svg"?(this.setAttribute("x",s(c)),this.setAttribute("y",l(c))):this.setAttribute("transform",`translate(${s(c)},${l(c)})`)}}function JSe(e){const t=[],i=new Uint32Array(Uc(e,n=>n.length));for(const n of e){let s=0;for(const l of e)n!==l&&(i.set(l,s),s+=l.length);t.push(i.slice(0,s))}return t}const xSe=new Map([["top",h9],["right",y9],["bottom",f9],["left",p9],["top-left",aZ(h9,p9)],["top-right",aZ(h9,y9)],["bottom-left",aZ(f9,p9)],["bottom-right",aZ(f9,y9)],["top-empty",VSe],["right-empty",vSe],["bottom-empty",ISe],["left-empty",gSe],["empty",zSe]]);function YSe(e){if(e==null)return null;const t=xSe.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}const WT=new WeakMap;function GI(e){let t=WT.get(e);return t||WT.set(e,t=new Yp(wi(e,(i,n)=>[i,n]))),t}function Co(e,t){return GI(e).get(t)}function GSe(e,t,i){return t=Mr(t),i=Mr(i),e.find(n=>Object.is(Mr(n.x),t)&&Object.is(Mr(n.y),i))}function YJ(e,t,i){var n;return(n=GSe(e,t,i))==null?void 0:n.empty}function h9(e,{y:t},{y:i}){return t?Co(t,i)===0:!0}function f9(e,{y:t},{y:i}){return t?Co(t,i)===t.length-1:!0}function p9(e,{x:t},{x:i}){return t?Co(t,i)===0:!0}function y9(e,{x:t},{x:i}){return t?Co(t,i)===t.length-1:!0}function VSe(e,{y:t},{x:i,y:n,empty:s}){if(s)return!1;if(!t)return;const l=Co(t,n);if(l>0)return YJ(e,i,t[l-1])}function ISe(e,{y:t},{x:i,y:n,empty:s}){if(s)return!1;if(!t)return;const l=Co(t,n);if(l<t.length-1)return YJ(e,i,t[l+1])}function gSe(e,{x:t},{x:i,y:n,empty:s}){if(s)return!1;if(!t)return;const l=Co(t,i);if(l>0)return YJ(e,t[l-1],n)}function vSe(e,{x:t},{x:i,y:n,empty:s}){if(s)return!1;if(!t)return;const l=Co(t,i);if(l<t.length-1)return YJ(e,t[l+1],n)}function zSe(e,t,{empty:i}){return i}function aZ(e,t){return function(){return e.apply(null,arguments)&&t.apply(null,arguments)}}function Z9(e,{channels:{fx:t,fy:i},groups:n}){return t&&i?e.map(({x:s,y:l})=>{var c;return((c=n.get(s))==null?void 0:c.get(l))??[]}):t?e.map(({x:s})=>n.get(s)??[]):e.map(({y:s})=>n.get(s)??[])}const t8=Math.PI,gr=2*t8,W9=.618;function wSe({projection:e,inset:t=0,insetTop:i=t,insetRight:n=t,insetBottom:s=t,insetLeft:l=t}={},c){if(e==null)return;if(typeof e.stream=="function")return e;let r,a,u="frame";if(ha(e)){let v;if({type:e,domain:a,inset:v,insetTop:i=v!==void 0?v:i,insetRight:n=v!==void 0?v:n,insetBottom:s=v!==void 0?v:s,insetLeft:l=v!==void 0?v:l,clip:u=u,...r}=e,e==null)return}typeof e!="function"&&({type:e}=VI(e));const{width:o,height:d,marginLeft:b,marginRight:h,marginTop:p,marginBottom:Z}=c,X=o-b-h-l-n,J=d-p-Z-i-s;if(e=e==null?void 0:e({width:X,height:J,clip:u,...r}),e==null)return;u=HSe(u,b,p,o-h,d-Z);let V=b+l,g=p+i,I;if(a!=null){const[[v,k],[N,C]]=s0(e).bounds(a),f=Math.min(X/(N-v),J/(C-k));f>0?(V-=(f*(v+N)-X)/2,g-=(f*(k+C)-J)/2,I=aX({point(w,x){this.stream.point(w*f+V,x*f+g)}})):so("Warning: the projection could not be fit to the specified domain; using the default scale.")}return I??(I=V===0&&g===0?i8():aX({point(v,k){this.stream.point(v+V,k+g)}})),{stream:v=>e.stream(I.stream(u(v)))}}function VI(e){switch(`${e}`.toLowerCase()){case"albers-usa":return Il(U6,.7463,.4673);case"albers":return oZ(zg,.7463,.4673);case"azimuthal-equal-area":return Il(D6,4,4);case"azimuthal-equidistant":return Il(q6,gr,gr);case"conic-conformal":return oZ(iP,gr,gr);case"conic-equal-area":return oZ(Df,6.1702,2.9781);case"conic-equidistant":return oZ(sP,7.312,3.6282);case"equal-earth":return Il(cP,5.4133,2.6347);case"equirectangular":return Il(nP,gr,t8);case"gnomonic":return Il(aP,3.4641,3.4641);case"identity":return{type:i8};case"reflect-y":return{type:NSe};case"mercator":return Il(eP,gr,gr);case"orthographic":return Il(dP,2,2);case"stereographic":return Il(bP,2,2);case"transverse-mercator":return Il(fP,gr,gr);default:throw new Error(`unknown projection type: ${e}`)}}function HSe(e,t,i,n,s){if(e===!1||e==null||typeof e=="number")return l=>l;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return Yg(t,i,n,s);default:throw new Error(`unknown projection clip type: ${e}`)}}function Il(e,t,i){return{type:({width:n,height:s,rotate:l,precision:c=.15,clip:r})=>{var u,o,d;const a=e();return c!=null&&((u=a.precision)==null||u.call(a,c)),l!=null&&((o=a.rotate)==null||o.call(a,l)),typeof r=="number"&&((d=a.clipAngle)==null||d.call(a,r)),n!=null&&(a.scale(Math.min(n/t,s/i)),a.translate([n/2,s/2])),a},aspectRatio:i/t}}function oZ(e,t,i){const{type:n,aspectRatio:s}=Il(e,t,i);return{type:l=>{const{parallels:c,domain:r,width:a,height:u}=l,o=n(l);return c!=null&&(o.parallels(c),r===void 0&&a!=null&&o.fitSize([a,u],{type:"Sphere"})),o},aspectRatio:s}}
265const i8=Tr({stream:e=>e}),NSe=Tr(aX({point(e,t){this.stream.point(e,-t)}}));function RSe(e,t,i,n){const s=i[e],l=i[t],c=s.length,r=i[e]=new Float64Array(c).fill(NaN),a=i[t]=new Float64Array(c).fill(NaN);let u;const o=n.stream({point(d,b){r[u]=d,a[u]=b}});for(u=0;u<c;++u)o.point(s[u],l[u])}function kSe({projection:e}={}){return e==null?!1:typeof e.stream=="function"?!0:(ha(e)&&(e=e.type),e!=null)}function FSe(e){if(typeof(e==null?void 0:e.stream)=="function")return W9;if(ha(e)){let t,i;if({domain:t,type:e,...i}=e,t!=null&&e!=null){const n=typeof e=="string"?VI(e).type:e,[[s,l],[c,r]]=s0(n({...i,width:100,height:100})).bounds(t),a=(r-l)/(c-s);return a&&isFinite(a)?a<.2?.2:a>5?5:a:W9}}if(e!=null){if(typeof e!="function"){const{aspectRatio:t}=VI(e);if(t)return t}return W9}}function SSe(e){const t=[],i=[],n={scale:"x",value:t},s={scale:"y",value:i},l={point(c,r){t.push(c),i.push(r)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(const c of e.value)wc(c,l);return[n,s]}function LSe({x:e,y:t}){if(e||t)return e??(e=i=>i),t??(t=i=>i),aX({point(i,n){this.stream.point(e(i),t(n))}})}function _w(e={}){const{document:t=typeof window<"u"?window.document:void 0,clip:i}=e;return{document:t,clip:YA(i)}}function Hi(e,{document:t}){return fu(FM(e).call(t.documentElement))}const II=Symbol("unset");function Ow(e){return(e.length===1?CSe:TSe)(e)}function CSe(e){let t,i=II;return n=>(Object.is(i,n)||(i=n,t=e(n)),t)}function TSe(e){let t,i;return(...n)=>(((i==null?void 0:i.length)!==n.length||i.some((s,l)=>!Object.is(s,n[l])))&&(i=n,t=e(...n)),t)}const MSe=Ow(e=>new Intl.NumberFormat(e));Ow((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}}));Ow((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function KSe(e="en-US"){const t=MSe(e);return i=>i!=null&&!isNaN(i)?t.format(i):void 0}function BSe(e){return Jke(e,"Invalid Date")}function _Se(e="en-US"){const t=KSe(e);return i=>(i instanceof Date?BSe:typeof i=="number"?t:pn)(i)}const mb=_Se(),Bn=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5;let OSe=0;function n8(){return`plot-clip-${++OSe}`}function jSe(e,{title:t,href:i,ariaLabel:n,ariaDescription:s,ariaHidden:l,target:c,fill:r,fillOpacity:a,stroke:u,strokeWidth:o,strokeOpacity:d,strokeLinejoin:b,strokeLinecap:h,strokeMiterlimit:p,strokeDasharray:Z,strokeDashoffset:X,opacity:J,mixBlendMode:V,imageFilter:g,paintOrder:I,pointerEvents:v,shapeRendering:k,channels:N},{ariaLabel:C,fill:f="currentColor",fillOpacity:w,stroke:x="none",strokeOpacity:R,strokeWidth:K,strokeLinecap:B,strokeLinejoin:_,strokeMiterlimit:j,paintOrder:U}){f===null&&(r=null,a=null),x===null&&(u=null,d=null),rs(f)?!rs(x)&&(!rs(r)||N!=null&&N.fill)&&(x="none"):rs(x)&&(!rs(u)||N!=null&&N.stroke)&&(f="none");const[$,te]=Al(r,f),[E,ie]=Kn(a,w),[ee,A]=Al(u,x),[le,ne]=Kn(d,R),[se,oe]=Kn(J);Xp(A)||(o===void 0&&(o=K),h===void 0&&(h=B),b===void 0&&(b=_),p===void 0&&!Eke(b)&&(p=j),!Xp(te)&&I===void 0&&(I=U));const[de,Je]=Kn(o);return f!==null&&(e.fill=Di(te,"currentColor"),e.fillOpacity=Nh(ie,1)),x!==null&&(e.stroke=Di(A,"none"),e.strokeWidth=Nh(Je,1),e.strokeOpacity=Nh(ne,1),e.strokeLinejoin=Di(b,"miter"),e.strokeLinecap=Di(h,"butt"),e.strokeMiterlimit=Nh(p,4),e.strokeDasharray=Di(Z,"none"),e.strokeDashoffset=Di(X,"0")),e.target=pn(c),e.ariaLabel=pn(C),e.ariaDescription=pn(s),e.ariaHidden=pn(l),e.opacity=Nh(oe,1),e.mixBlendMode=Di(V,"normal"),e.imageFilter=Di(g,"none"),e.paintOrder=Di(I,"normal"),e.pointerEvents=Di(v,"auto"),e.shapeRendering=Di(k,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:i,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:$,scale:"auto",optional:!0},fillOpacity:{value:E,scale:"auto",optional:!0},stroke:{value:ee,scale:"auto",optional:!0},strokeOpacity:{value:le,scale:"auto",optional:!0},strokeWidth:{value:de,optional:!0},opacity:{value:se,scale:"auto",optional:!0}}}function ESe(e,t){t&&e.filter(i=>Ww(t[i])).append("title").call(USe,t)}function PSe(e,t){t&&e.filter(([i])=>Ww(t[i])).append("title").call($Se,t)}function USe(e,t){t&&e.text(i=>mb(t[i]))}function $Se(e,t){t&&e.text(([i])=>mb(t[i]))}function ql(e,{target:t,tip:i},{ariaLabel:n,title:s,fill:l,fillOpacity:c,stroke:r,strokeOpacity:a,strokeWidth:u,opacity:o,href:d}){n&&et(e,"aria-label",b=>n[b]),l&&et(e,"fill",b=>l[b]),c&&et(e,"fill-opacity",b=>c[b]),r&&et(e,"stroke",b=>r[b]),a&&et(e,"stroke-opacity",b=>a[b]),u&&et(e,"stroke-width",b=>u[b]),o&&et(e,"opacity",b=>o[b]),d&&c8(e,b=>d[b],t),i||ESe(e,s)}function s8(e,{target:t,tip:i},{ariaLabel:n,title:s,fill:l,fillOpacity:c,stroke:r,strokeOpacity:a,strokeWidth:u,opacity:o,href:d}){n&&et(e,"aria-label",([b])=>n[b]),l&&et(e,"fill",([b])=>l[b]),c&&et(e,"fill-opacity",([b])=>c[b]),r&&et(e,"stroke",([b])=>r[b]),a&&et(e,"stroke-opacity",([b])=>a[b]),u&&et(e,"stroke-width",([b])=>u[b]),o&&et(e,"opacity",([b])=>o[b]),d&&c8(e,([b])=>d[b],t),i||PSe(e,s)}function QSe({ariaLabel:e,title:t,fill:i,fillOpacity:n,stroke:s,strokeOpacity:l,strokeWidth:c,opacity:r,href:a},{tip:u}){return[e,u?void 0:t,i,n,s,l,c,r,a].filter(o=>o!==void 0)}function DSe(e,t,i){const n=Vp(e,s=>t[s]);return i===void 0&&n.size>1+e.length>>1&&so("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*l8(e,t,i,n){const{z:s}=i,{z:l}=n,c=QSe(n,i),r=[...t,...c];for(const a of l?DSe(e,l,s):[e]){let u,o;e:for(const d of a){for(const b of r)if(!xo(b[d])){o&&o.push(-1);continue e}if(u===void 0){o&&(yield o),u=c.map(b=>Mr(b[d])),o=[d];continue}o.push(d);for(let b=0;b<c.length;++b)if(Mr(c[b][d])!==u[b]){yield o,u=c.map(p=>Mr(p[d])),o=[d];continue e}}o&&(yield o)}}function ASe(e,t,i,n){let s;const{clip:l=n.clip}=t;l==="frame"?(e=Hi("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),s=eLe(n,i)):l&&(s=iLe(l,n)),et(e,"aria-label",t.ariaLabel),et(e,"aria-description",t.ariaDescription),et(e,"aria-hidden",t.ariaHidden),et(e,"clip-path",s)}function qSe(e){const t=new WeakMap;return(i,n)=>{let s=t.get(i);if(!s){const l=n8();fu(i.ownerSVGElement).append("clipPath").attr("id",l).call(e,i,n),t.set(i,s=`url(#${l})`)}return s}}const eLe=qSe((e,t,i)=>{const{width:n,height:s,marginLeft:l,marginRight:c,marginTop:r,marginBottom:a}=i;e.append("rect").attr("x",l).attr("y",r).attr("width",n-c-l).attr("height",s-r-a)}),XT=new WeakMap,tLe={type:"Sphere"};function iLe(e,t){let i,n;if((i=XT.get(t))||XT.set(t,i=new WeakMap),e.type==="Sphere"&&(e=tLe),!(n=i.get(e))){const s=n8();fu(t.ownerSVGElement).append("clipPath").attr("id",s).append("path").attr("d",t.path()(e)),i.set(e,n=`url(#${s})`)}return n}function Wl(e,t,i,n){ASe(e,t,i,n),et(e,"class",t.className),et(e,"fill",t.fill),et(e,"fill-opacity",t.fillOpacity),et(e,"stroke",t.stroke),et(e,"stroke-width",t.strokeWidth),et(e,"stroke-opacity",t.strokeOpacity),et(e,"stroke-linejoin",t.strokeLinejoin),et(e,"stroke-linecap",t.strokeLinecap),et(e,"stroke-miterlimit",t.strokeMiterlimit),et(e,"stroke-dasharray",t.strokeDasharray),et(e,"stroke-dashoffset",t.strokeDashoffset),et(e,"shape-rendering",t.shapeRendering),et(e,"filter",t.imageFilter),et(e,"paint-order",t.paintOrder);const{pointerEvents:s=n.pointerSticky===!1?"none":void 0}=t;et(e,"pointer-events",s)}function Zs(e,t){nLe(e,"mix-blend-mode",t.mixBlendMode),et(e,"opacity",t.opacity)}function c8(e,t,i){e.each(function(n){const s=t(n);if(s!=null){const l=this.ownerDocument.createElementNS(tW.svg,"a");l.setAttribute("fill","inherit"),l.setAttributeNS(tW.xlink,"href",s),i!=null&&l.setAttribute("target",i),this.parentNode.insertBefore(l,this).appendChild(this)}})}function et(e,t,i){i!=null&&e.attr(t,i)}function nLe(e,t,i){i!=null&&e.style(t,i)}function Js(e,t,{x:i,y:n},s=Bn,l=Bn){s+=t.dx,l+=t.dy,i!=null&&i.bandwidth&&(s+=i.bandwidth()/2),n!=null&&n.bandwidth&&(l+=n.bandwidth()/2),(s||l)&&e.attr("transform",`translate(${s},${l})`)}function Di(e,t){if((e=pn(e))!==t)return e}function Nh(e,t){if((e=vi(e))!==t)return e}const sLe=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function jw(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}
265`,!sLe.test(e))throw new Error(`invalid class name: ${e}`);return e}function Ew(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(const i of e)Object.assign(i.style,t)}function M0({frameAnchor:e},{width:t,height:i,marginTop:n,marginRight:s,marginBottom:l,marginLeft:c}){return[/left$/.test(e)?c:/right$/.test(e)?t-s:(c+t-s)/2,/^top/.test(e)?n:/^bottom/.test(e)?i-l:(n+i-l)/2]}class Dn{constructor(t,i={},n={},s){const{facet:l="auto",facetAnchor:c,fx:r,fy:a,sort:u,dx:o=0,dy:d=0,margin:b=0,marginTop:h=b,marginRight:p=b,marginBottom:Z=b,marginLeft:X=b,className:J,clip:V=s==null?void 0:s.clip,channels:g,tip:I,render:v}=n;if(this.data=t,this.sort=ub(u)?u:null,this.initializer=db(n).initializer,this.transform=this.initializer?n.transform:Eb(n).transform,l===null||l===!1?this.facet=null:(this.facet=mc(l===!0?"include":l,"facet",["auto","include","exclude","super"]),this.fx=t===UZ&&typeof r=="string"?[r]:r,this.fy=t===UZ&&typeof a=="string"?[a]:a),this.facetAnchor=YSe(c),i=xA(i),g!==void 0&&(i={...lLe(g),...i}),s!==void 0&&(i={...jSe(this,n,s),...i}),this.channels=Object.fromEntries(Object.entries(i).map(([k,N])=>{if(hJ(N.value)){const{value:C,label:f=N.label,scale:w=N.scale}=N.value;N={...N,label:f,scale:w,value:C}}if(t===UZ&&typeof N.value=="string"){const{value:C}=N;N={...N,value:[C]}}return[k,N]}).filter(([k,{value:N,optional:C}])=>{if(N!=null)return!0;if(C)return!1;throw new Error(`missing channel value: ${k}`)})),this.dx=+o,this.dy=+d,this.marginTop=+h,this.marginRight=+p,this.marginBottom=+Z,this.marginLeft=+X,this.clip=YA(V),this.tip=cLe(I),this.className=pn(J),this.facet==="super"){if(r||a)throw new Error("super-faceting cannot use fx or fy");for(const k in this.channels){const{scale:N}=i[k];if(!(N!=="x"&&N!=="y"))throw new Error("super-faceting cannot use x or y")}}v!=null&&(this.render=r8(v,this.render))}initialize(t,i,n){let s=ob(this.data);t===void 0&&s!=null&&(t=[fa(s)]);const l=t;this.transform!=null&&({facets:t,data:s}=this.transform(s,t,n),s=ob(s)),t!==void 0&&(t.original=l);const c=JFe(this.channels,s);return this.sort!=null&&YFe(s,t,c,i,this.sort),{data:s,facets:t,channels:c}}filter(t,i,n){for(const s in i){const{filter:l=xo}=i[s];if(l!==null){const c=n[s];t=t.filter(r=>l(c[r]))}}return t}project(t,i,n){for(const s in t)if(t[s].scale==="x"&&/^x|x$/.test(s)){const l=s.replace(/^x|x$/,"y");l in t&&t[l].scale==="y"&&RSe(s,l,i,n.projection)}}scale(t,i,n){const s=xFe(t,i);return n.projection&&this.project(t,s,n),s}}function GJ(...e){return e.plot=Dn.prototype.plot,e}function r8(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(i,n,s,l,c,r){return e.call(this,i,n,s,l,c,(a,u,o,d,b)=>t.call(this,a,u,o,d,b,r))}}function lLe(e){return Object.fromEntries(Object.entries(xA(e)).map(([t,i])=>(i=typeof i=="string"?{value:i,label:t}:k0(i),i.filter===void 0&&i.scale==null&&(i={...i,filter:null}),[t,i])))}function cLe(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?mc(e,"tip",["x","y","xy"]):e}function Pb(e,t){return(e==null?void 0:e.tip)===!0?{...e,tip:t}:ha(e==null?void 0:e.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function rLe(e,t,i={}){let n=.5-Bn,s=.5+Bn,l=.5+Bn,c=.5-Bn;for(const{marginTop:Z,marginRight:X,marginBottom:J,marginLeft:V}of t)Z>n&&(n=Z),X>s&&(s=X),J>l&&(l=J),V>c&&(c=V);let{margin:r,marginTop:a=r!==void 0?r:n,marginRight:u=r!==void 0?r:s,marginBottom:o=r!==void 0?r:l,marginLeft:d=r!==void 0?r:c}=i;a=+a,u=+u,o=+o,d=+d;let{width:b=640,height:h=aLe(e,i,{width:b,marginTopDefault:n,marginRightDefault:s,marginBottomDefault:l,marginLeftDefault:c})+Math.max(0,a-n+o-l)}=i;b=+b,h=+h;const p={width:b,height:h,marginTop:a,marginRight:u,marginBottom:o,marginLeft:d};if(e.fx||e.fy){let{margin:Z,marginTop:X=Z!==void 0?Z:a,marginRight:J=Z!==void 0?Z:u,marginBottom:V=Z!==void 0?Z:o,marginLeft:g=Z!==void 0?Z:d}=i.facet??{};X=+X,J=+J,V=+V,g=+g,p.facet={marginTop:X,marginRight:J,marginBottom:V,marginLeft:g}}return p}function aLe({x:e,y:t,fy:i,fx:n},{projection:s,aspectRatio:l},{width:c,marginTopDefault:r,marginRightDefault:a,marginBottomDefault:u,marginLeftDefault:o}){const d=i&&i.scale.domain().length||1,b=FSe(s);if(b){const p=n?n.scale.domain().length:1,Z=(1.1*d-.1)/(1.1*p-.1)*b,X=Math.max(.1,Math.min(10,Z));return Math.round((c-o-a)*X+r+u)}const h=t?Yd(t)?t.scale.domain().length||1:Math.max(7,17/d):1;if(l!=null){if(l=+l,!(isFinite(l)&&l>0))throw new Error(`invalid aspectRatio: ${l}`);const p=JT("y",t)/(JT("x",e)*l),Z=n?n.scale.bandwidth():1,X=i?i.scale.bandwidth():1,J=Z*(c-o-a)-e.insetLeft-e.insetRight;return(p*J+t.insetTop+t.insetBottom)/X+r+u}return!!(t||i)*Math.max(1,Math.min(60,h*d))*20+!!n*30+60}function JT(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);const{type:i,domain:n}=t;let s;switch(i){case"linear":case"utc":case"time":s=Number;break;case"pow":{const r=t.scale.exponent();s=a=>Math.pow(a,r);break}case"log":s=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${i}`)}const[l,c]=qs(n);return Math.abs(s(c)-s(l))}const xT=new WeakMap;function Pw(e,t,{x:i,y:n,px:s,py:l,maxRadius:c=40,channels:r,render:a,...u}={}){return c=+c,s!=null&&(i??(i=null),r={...r,px:{value:s,scale:"x"}}),l!=null&&(n??(n=null),r={...r,py:{value:l,scale:"y"}}),{x:i,y:n,channels:r,...u,render:r8(function(o,d,b,h,p,Z){p={...p,pointerSticky:!1};const X=p.ownerSVGElement,{data:J}=p.getMarkState(this);let V=xT.get(X);V||xT.set(X,V={sticky:!1,roots:[],renders:[]});let g=V.renders.push(A)-1;const{x:I,y:v,fx:k,fy:N}=d;let C=k?k(o.fx)-h.marginLeft:0,f=N?N(o.fy)-h.marginTop:0;I!=null&&I.bandwidth&&(C+=I.bandwidth()/2),v!=null&&v.bandwidth&&(f+=v.bandwidth()/2);const w=o.fi!=null;let x;if(w){let oe=V.facetStates;oe||(V.facetStates=oe=new Map),x=oe.get(this),x||oe.set(this,x=new Map)}const[R,K]=M0(this,h),{px:B,py:_}=b,j=B?oe=>B[oe]:a8(b,R),U=_?oe=>_[oe]:o8(b,K);let $,te,E,ie;function ee(oe,de){if(w)if(ie&&(ie=cancelAnimationFrame(ie)),oe==null)x.delete(o.fi);else{x.set(o.fi,de),ie=requestAnimationFrame(()=>{ie=null;for(const[Je,Ie]of x)if(Ie<de||Ie===de&&Je<o.fi){oe=null;break}A(oe)});return}A(oe)}function A(oe){if($===oe&&E===V.sticky)return;$=oe,E=p.pointerSticky=V.sticky;const de=$==null?[]:[$];w&&(de.fx=o.fx,de.fy=o.fy,de.fi=o.fi);const Je=Z(de,d,b,h,p);if(te){if(w){const Ie=te.parentNode,Ye=te.getAttribute("transform"),Te=Je.getAttribute("transform");Ye?Je.setAttribute("transform",Ye):Je.removeAttribute("transform"),Te?Ie.setAttribute("transform",Te):Ie.removeAttribute("transform"),Je.removeAttribute("aria-label"),Je.removeAttribute("aria-description"),Je.removeAttribute("aria-hidden")}te.replaceWith(Je)}if(V.roots[g]=te=Je,!($==null&&(x==null?void 0:x.size)>1)){const Ie=$==null?null:Xd(J)?J[$]:J.get($);p.dispatchValue(Ie)}return Je}function le(oe){if(V.sticky||oe.pointerType==="mouse"&&oe.buttons===1)return;let[de,Je]=Wie(oe);de-=C,Je-=f;const Ie=de<h.marginLeft||de>h.width-h.marginRight?1:e,Ye=Je<h.marginTop||Je>h.height-h.marginBottom?1:t;let Te=null,$e=c*c;for(const Ve of o){const Me=Ie*(j(Ve)-de),Ee=Ye*(U(Ve)-Je),ye=Me*Me+Ee*Ee;ye<=$e&&(Te=Ve,$e=ye)}if(Te!=null&&(e!==1||t!==1)){const Ve=j(Te)-de,Me=U(Te)-Je;$e=Ve*Ve+Me*Me}ee(Te,$e)}function ne(oe){oe.pointerType==="mouse"&&$!=null&&(V.sticky&&V.roots.some(de=>de==null?void 0:de.contains(oe.target))||(V.sticky?(V.sticky=!1,V.renders.forEac
265h(de=>de(null))):(V.sticky=!0,A($)),oe.stopImmediatePropagation()))}function se(oe){oe.pointerType==="mouse"&&(V.sticky||ee(null))}return X.addEventListener("pointerenter",le),X.addEventListener("pointermove",le),X.addEventListener("pointerdown",ne),X.addEventListener("pointerleave",se),A(null)},a)}}function oLe(e){return Pw(1,1,e)}function uLe(e){return Pw(1,.01,e)}function YT(e){return Pw(.01,1,e)}function a8({x1:e,x2:t,x:i=e},n){return e&&t?s=>(e[s]+t[s])/2:i?s=>i[s]:()=>n}function o8({y1:e,y2:t,y:i=e},n){return e&&t?s=>(e[s]+t[s])/2:i?s=>i[s]:()=>n}function u8(e){return Yd(e)&&e.interval===void 0?void 0:"tabular-nums"}function dLe(e,t){let{label:i=e.label,tickSize:n=6,width:s=240,height:l=44+n,marginTop:c=18,marginRight:r=0,marginBottom:a=16+n,marginLeft:u=0,style:o,ticks:d=(s-u-r)/64,tickFormat:b,fontVariant:h=u8(e),round:p=!0,opacity:Z,className:X}=t;const J=_w(t);X=jw(X),Z=Kn(Z)[1],b===null&&(b=()=>null);const V=Hi("svg",J).attr("class",`${X}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",s).attr("height",l).attr("viewBox",`0 0 ${s} ${l}`).call(R=>R.append("style").text(`:where(.${X}-ramp) { 266 display: block; 267 height: auto; 268 height: intrinsic; 269 max-width: 100%; 270 overflow: visible; 271} 272:where(.${X}-ramp text) { 273 white-space: pre; 274}`)).call(Ew,o);let g=R=>R.selectAll(".tick line").attr("y1",c+a-l),I;const v=p?(R,K)=>R.rangeRound(K):(R,K)=>R.range(K),{type:k,domain:N,range:C,interpolate:f,scale:w,pivot:x}=e;if(f){const R=C===void 0?f:Gp(f.length===1?Mw(f):f,C);I=v(w.copy(),al(hb(u,s-r),Math.min(N.length+(x!==void 0),C===void 0?1/0:C.length)));const K=256,B=J.document.createElement("canvas");B.width=K,B.height=1;const _=B.getContext("2d");for(let j=0,U=K-1;j<K;++j)_.fillStyle=R(j/U),_.fillRect(j,0,1,1);V.append("image").attr("opacity",Z).attr("x",u).attr("y",c).attr("width",s-u-r).attr("height",l-c-a).attr("preserveAspectRatio","none").attr("xlink:href",B.toDataURL())}else if(k==="threshold"){const R=N,K=b===void 0?B=>B:typeof b=="string"?qu(b):b;I=v($X().domain([-1,C.length-1]),[u,s-r]),V.append("g").attr("fill-opacity",Z).selectAll().data(C).enter().append("rect").attr("x",(B,_)=>I(_-1)).attr("y",c).attr("width",(B,_)=>I(_)-I(_-1)).attr("height",l-c-a).attr("fill",B=>B),d=wi(R,(B,_)=>_),b=B=>K(R[B],B)}else I=v(kM().domain(N),[u,s-r]),V.append("g").attr("fill-opacity",Z).selectAll().data(N).enter().append("rect").attr("x",I).attr("y",c).attr("width",Math.max(0,I.bandwidth()-1)).attr("height",l-c-a).attr("fill",w),g=()=>{};return V.append("g").attr("transform",`translate(0,${l-a})`).call(Lie(I).ticks(Array.isArray(d)?null:d,typeof b=="string"?b:void 0).tickFormat(typeof b=="function"?b:void 0).tickSize(n).tickValues(Array.isArray(d)?d:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",Di(h,"normal")).call(g).call(R=>R.select(".domain").remove()),i!==void 0&&V.append("text").attr("x",u).attr("y",c-6).attr("fill","currentColor").attr("font-weight","bold").text(i),V.node()}const d8=Math.PI/180;function VJ(e,{marker:t,markerStart:i=t,markerMid:n=t,markerEnd:s=t}={}){e.markerStart=X9(i),e.markerMid=X9(n),e.markerEnd=X9(s)}function X9(e){if(e==null||e===!1)return null;if(e===!0)return VT;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return GT("auto");case"arrow-reverse":return GT("auto-start-reverse");case"dot":return mLe;case"circle":case"circle-fill":return VT;case"circle-stroke":return bLe;case"tick":return J9("auto");case"tick-x":return J9(90);case"tick-y":return J9(0)}throw new Error(`invalid marker: ${e}`)}function GT(e){return(t,i)=>Hi("svg:marker",i).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function mLe(e,t){return Hi("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(i=>i.append("circle").attr("r",2.5)).node()}function VT(e,t){return Hi("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(i=>i.append("circle").attr("r",3)).node()}function bLe(e,t){return Hi("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(i=>i.append("circle").attr("r",3)).node()}function J9(e){return(t,i)=>Hi("svg:marker",i).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}let hLe=0;function Uw(e,t,{stroke:i},n){return b8(e,t,i&&(s=>i[s]),null,n)}function fLe(e,t,{stroke:i,z:n},s){return b8(e,t,i&&(([l])=>i[l]),n,s)}const gI=1,m8=2;function pLe(e,t){const i=new Uint8Array(t.length),n=e.data().filter(l=>l.length>1),s=n.length;
274for(let l=0,c=II;l<s;++l){const r=n[l];if(r.length>1){const a=r[0];c!==(c=Mr(t[a]))&&(i[a]|=gI)}}for(let l=s-1,c=II;l>=0;--l){const r=n[l];if(r.length>1){const a=r[0];c!==(c=Mr(t[a]))&&(i[a]|=m8)}}return([l])=>i[l]}function b8(e,{markerStart:t,markerMid:i,markerEnd:n,stroke:s},l=()=>s,c,r){if(!t&&!i&&!n)return;const a=new Map,u=c&&pLe(e,c);function o(d,b,h){return function(p){if(h&&!h(p))return;const Z=l(p);let X=a.get(b);X||a.set(b,X=new Map);let J=X.get(Z);if(!J){const V=this.parentNode.insertBefore(b(Z,r),this),g=`plot-marker-${++hLe}`;V.setAttribute("id",g),X.set(Z,J=`url(#${g})`)}this.setAttribute(d,J)}}t&&e.each(o("marker-start",t,u&&(d=>u(d)&gI))),i&&u&&e.each(o("marker-start",i,d=>!(u(d)&gI))),i&&e.each(o("marker-mid",i)),n&&e.each(o("marker-end",n,u&&(d=>u(d)&m8)))}function IJ({inset:e,insetLeft:t,insetRight:i,...n}={}){return[t,i]=h8(e,t,i),{inset:e,insetLeft:t,insetRight:i,...n}}function gJ({inset:e,insetTop:t,insetBottom:i,...n}={}){return[t,i]=h8(e,t,i),{inset:e,insetTop:t,insetBottom:i,...n}}function h8(e,t,i){return e===void 0&&t===void 0&&i===void 0?Bn?[1,0]:[.5,.5]:[t,i]}function f8(e,{interval:t}){return e={...k0(e)},e.interval=vw(e.interval===void 0?t:e.interval),e}function vJ(e,t,i,n){const{[e]:s,[`${e}1`]:l,[`${e}2`]:c}=i,{value:r,interval:a}=f8(s,i);if(r==null||a==null&&!n)return i;const u=xd(s);if(a==null){let h;const p={transform:Z=>h||(h=ni(Z,r)),label:u};return{...i,[e]:void 0,[`${e}1`]:l===void 0?p:l,[`${e}2`]:c===void 0&&!(l===c&&n)?p:c}}let o,d;function b(h){return d!==void 0&&h===o?d:d=wi(ni(o=h,r),p=>a.floor(p))}return t({...i,[e]:void 0,[`${e}1`]:l===void 0?{transform:b,label:u}:l,[`${e}2`]:c===void 0?{transform:h=>b(h).map(p=>a.offset(p)),label:u}:c})}function p8(e,t,i){const{[e]:n}=i,{value:s,interval:l}=f8(n,i);return s==null||l==null?i:t({...i,[e]:{label:xd(n),transform:c=>{const r=wi(ni(c,s),u=>l.floor(u)),a=r.map(u=>l.offset(u));return r.map(ys(r)?(u,o)=>u==null||isNaN(u=+u)||(o=a[o],o==null)||isNaN(o=+o)?void 0:new Date((u+o)/2):(u,o)=>u==null||(o=a[o],o==null)?NaN:(+u+ +o)/2)}}})}function yLe(e={}){return vJ("x",IJ,e,!0)}function ZLe(e={}){return vJ("y",gJ,e,!0)}function y8(e={}){return vJ("x",IJ,e)}function Z8(e={}){return vJ("y",gJ,e)}function WLe(e={}){return p8("x",IJ,e)}function XLe(e={}){return p8("y",gJ,e)}const W8={ariaLabel:"rule",fill:null,stroke:"currentColor"};class JLe extends Dn{constructor(t,i={}){const{x:n,y1:s,y2:l,inset:c=0,insetTop:r=c,insetBottom:a=c}=i;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:s,scale:"y",optional:!0},y2:{value:l,scale:"y",optional:!0}},Pb(i,"x"),W8),this.insetTop=vi(r),this.insetBottom=vi(a),VJ(this,i)}render(t,i,n,s,l){const{x:c,y:r}=i,{x:a,y1:u,y2:o}=n,{width:d,height:b,marginTop:h,marginRight:p,marginLeft:Z,marginBottom:X}=s,{insetTop:J,insetBottom:V}=this;return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,{x:a&&c},Bn,0).call(g=>g.selectAll().data(t).enter().append("line").call(Zs,this).attr("x1",a?I=>a[I]:(Z+d-p)/2).attr("x2",a?I=>a[I]:(Z+d-p)/2).attr("y1",u&&!sr(r)?I=>u[I]+J:h+J).attr("y2",o&&!sr(r)?r.bandwidth?I=>o[I]+r.bandwidth()-V:I=>o[I]-V:b-X-V).call(ql,this,n).call(Uw,this,n,l)).node()}}class xLe extends Dn{constructor(t,i={}){const{x1:n,x2:s,y:l,inset:c=0,insetRight:r=c,insetLeft:a=c}=i;super(t,{y:{value:l,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:s,scale:"x",optional:!0}},Pb(i,"y"),W8),this.insetRight=vi(r),this.insetLeft=vi(a),VJ(this,i)}render(t,i,n,s,l){const{x:c,y:r}=i,{y:a,x1:u,x2:o}=n,{width:d,height:b,marginTop:h,marginRight:p,marginLeft:Z,marginBottom:X}=s,{insetLeft:J,insetRight:V}=this;return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,{y:a&&r},0,Bn).call(g=>g.selectAll().data(t).enter().append("line").call(Zs,this).attr("x1",u&&!sr(c)?I=>u[I]+J:Z+J).attr("x2",o&&!sr(c)?c.bandwidth?I=>o[I]+c.bandwidth()-V:I=>o[I]-V:d-p-V).attr("y1",a?I=>a[I]:(h+b-X)/2).attr("y2",a?I=>a[I]:(h+b-X)/2).call(ql,this,n).call(Uw,this,n,l)).node()}}function $w(e,t){let{x:i=jt,y:n,y1:s,y2:l,...c}=Z8(t);return[s,l]=X8(n,s,l),new JLe(e,{...c,x:i,y1:s,y2:l})}function Qw(e,t){let{y:i=jt,x:n,x1:s,x2:l,...c}=y8(t);return[s,l]=X8(n,s,l),new xLe(e,{...c,y:i,x1:s,x2:l})}function X8(e,t,i){if(e==null){if(t===void 0){if(i!==void 0)return[0,i]}else if(i===void 0)return[0,t]}else{if(t===void 0)return i===void 0?[0,e]:[e,i];if(i===void 0)return[e,t]}return[t,i]}function Dw(e,...t){let i=t.length;for(let n=0,s=!0;n<i;++n)typeof t[n]!="function"&&(s&&(e=e.slice(),s=!1),e.splice(n,2,e[n]+t[n]+e[n+1]),t.splice(n,1),--n,--i);return n=>{let s=e[0];for(let l=0;l<i;++l)s+=t[l](n)+e[l+1];return s}}const YLe={ariaLabel:"text",strokeLinejoin:"round",strokeWidth:3,paintOrder:"stroke"},J8="Â";class Aw extends Dn{constructor(t,i={}){const{x:n,y:s,text:l=Lo(t)&&JA(t)?jt:Dl,frameAnchor:c,textAnchor:r=/right$/i.test(c)?"end":/left$/i.test(c)?"start":"middle",lineAnchor:a=/^top/i.test(c)?"top":/^bottom/i.test(c)?"bottom":"middle",lineHeight:u=1,lineWidth:o=1/0,textOverflow:d,monospace:b,fontFamily:h=b?"ui-monospace, monospace":void 0,fontSize:p,fontStyle:Z,fontVariant:X,fontWeight:J,rotate:V}
274=i,[g,I]=Kn(V,0),[v,k]=zLe(p);if(super(t,{x:{value:n,scale:"x",optional:!0},y:{value:s,scale:"y",optional:!0},fontSize:{value:v,optional:!0},rotate:{value:Mke(g),optional:!0},text:{value:l,filter:Ww,optional:!0}},i,YLe),this.rotate=I,this.textAnchor=Di(r,"middle"),this.lineAnchor=mc(a,"lineAnchor",["top","middle","bottom"]),this.lineHeight=+u,this.lineWidth=+o,this.textOverflow=x8(d),this.monospace=!!b,this.fontFamily=pn(h),this.fontSize=k,this.fontStyle=pn(Z),this.fontVariant=pn(X),this.fontWeight=pn(J),this.frameAnchor=ZJ(c),!(this.lineWidth>=0))throw new Error(`invalid lineWidth: ${o}`);this.splitLines=G8(this),this.clipLine=V8(this)}render(t,i,n,s,l){const{x:c,y:r}=i,{x:a,y:u,rotate:o,text:d,title:b,fontSize:h}=n,{rotate:p}=this,[Z,X]=M0(this,s);return Hi("svg:g",l).call(Wl,this,s,l).call(Y8,this,d,s).call(Js,this,{x:a&&c,y:u&&r}).call(J=>J.selectAll().data(t).enter().append("text").call(Zs,this).call(GLe,this,d,b).attr("transform",Dw`translate(${a?V=>a[V]:Z},${u?V=>u[V]:X})${o?V=>` rotate(${o[V]})`:p?` rotate(${p})`:""}`).call(et,"font-size",h&&(V=>h[V])).call(ql,this,n)).node()}}function x8(e){return e==null?null:mc(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function GLe(e,t,i,n){if(!i)return;const{lineAnchor:s,lineHeight:l,textOverflow:c,splitLines:r,clipLine:a}=t;e.each(function(u){const o=r(mb(i[u])??"").map(a),d=o.length,b=s==="top"?.71:s==="bottom"?1-d:(164-d*100)/200;if(d>1){let h=0;for(let p=0;p<d;++p){if(++h,!o[p])continue;const Z=this.ownerDocument.createElementNS(tW.svg,"tspan");Z.setAttribute("x",0),p===h-1?Z.setAttribute("y",`${(b+p)*l}em`):Z.setAttribute("dy",`${h*l}em`),Z.textContent=o[p],this.appendChild(Z),h=0}}else b&&this.setAttribute("y",`${b*l}em`),this.textContent=o[0];if(c&&!n&&o[0]!==i[u]){const h=this.ownerDocument.createElementNS(tW.svg,"title");h.textContent=i[u],this.appendChild(h)}})}function qw(e,{x:t,y:i,...n}={}){return n.frameAnchor===void 0&&([t,i]=gw(t,i)),new Aw(e,{...n,x:t,y:i})}function VLe(e,{x:t=jt,...i}={}){return new Aw(e,XLe({...i,x:t}))}function ILe(e,{y:t=jt,...i}={}){return new Aw(e,WLe({...i,y:t}))}function Y8(e,t,i){et(e,"text-anchor",t.textAnchor),et(e,"font-family",t.fontFamily),et(e,"font-size",t.fontSize),et(e,"font-style",t.fontStyle),et(e,"font-variant",t.fontVariant===void 0?gLe(i):t.fontVariant),et(e,"font-weight",t.fontWeight)}function gLe(e){return e&&(_ke(e)||ys(e))?"tabular-nums":void 0}const vLe=new Set(["inherit","initial","revert","unset","xx-small","x-small","small","medium","large","x-large","xx-large","xxx-large","larger","smaller"]);function zLe(e){return e==null||typeof e=="number"?[void 0,e]:typeof e!="string"?[e,void 0]:(e=e.trim().toLowerCase(),vLe.has(e)||/^[+-]?\d*\.?\d+(e[+-]?\d+)?(\w*|%)$/.test(e)?[void 0,e]:[e,void 0])}function wLe(e,t,i){const n=[];let s,l=0;for(const[c,r,a]of HLe(e)){if(s===void 0&&(s=c),l>s&&i(e,s,r)>t&&(n.push(e.slice(s,l)+(e[l-1]===J8?"-":"")),s=c),a){n.push(e.slice(s,r)),s=void 0;continue}l=r}return n}function*HLe(e){let t=0,i=0;const n=e.length;for(;i<n;){let s=1;switch(e[i]){case J8:case"-":++i,yield[t,i,!1],t=i;break;case" ":for(yield[t,i,!1];e[++i]===" ";);t=i;break;case"\r":e[i+1]===` 275`&&++s;case` 276`:yield[t,i,!0],i+=s,t=i;break;default:++i;break}}yield[t,i,!0]}const IT={a:56,b:63,c:57,d:63,e:58,f:37,g:62,h:60,i:26,j:26,k:55,l:26,m:88,n:60,o:60,p:62,q:62,r:39,s:54,t:38,u:60,v:55,w:79,x:54,y:55,z:55,A:69,B:67,C:73,D:74,E:61,F:58,G:76,H:75,I:28,J:55,K:67,L:58,M:89,N:75,O:78,P:65,Q:78,R:67,S:65,T:65,U:75,V:69,W:98,X:69,Y:67,Z:67,0:64,1:48,2:62,3:64,4:66,5:63,6:65,7:58,8:65,9:65," ":29,"!":32,'"':49,"'":31,"(":39,")":39,",":31,"-":48,".":31,"/":32,":":31,";":31,"?":52,"â":31,"â":31,"â":47,"â":47,"â¦":82};function eH(e,t=0,i=e.length){let n=0;for(let s=t;s<i;s=Ub(e,s))n+=IT[e[s]]??(g8(e,s)?120:IT.e);return n}function tH(e,t=0,i=e.length){let n=0;for(let s=t;s<i;s=Ub(e,s))n+=g8(e,s)?126:63;return n}function G8({monospace:e,lineWidth:t,textOverflow:i}){if(i!=null||t==1/0)return l=>l.split(/\r\n?|\n/g);const n=e?tH:eH,s=t*100;return l=>wLe(l,s,n)}function V8({monospace:e,lineWidth:t,textOverflow:i}){if(i==null||t==1/0)return l=>l;const n=e?tH:eH,s=t*100;switch(i){case"clip-start":return l=>vT(l,s,n,"");case"clip-end":return l=>gT(l,s,n,"");case"ellipsis-start":return l=>vT(l,s,n,gm);case"ellipsis-middle":return l=>NLe(l,s,n,gm);case"ellipsis-end":return l=>gT(l,s,n,gm)}}const gm="â¦";function bb(e,t,i,n){const s=[];let l=0;for(let c=0,r=0,a=e.length;c<a;c=r){r=Ub(e,c);const u=i(e,c,r);if(l+u>t){for(l+=n;l>t&&c>0;)r=c,c=s.pop(),l-=i(e,c,r);return[c,t-l]}l+=u,s.push(c)}return[-1,0]}function gT(e,t,i,n){e=e.trim();const s=i(n),[l]=bb(e,t,i,s);return l<0?e:e.slice(0,l).trimEnd()+n}function NLe(e,t,i,n){e=e.trim();const s=i(e);if(s<=t)return e;const l=i(n)/2,[c,r]=bb(e,t/2,i,l),[a]=bb(e,s-t/2-r+l,i,-l);return a<0?n:e.slice(0,c).trimEnd()+n+e.slice(Ub(e,a)).trimStart()}function vT(e,t,i,n){e=e.trim();const s=i(e);if(s<=t)return e;const l=i(n),[c]=bb(e,s-t+l,i,-l);return c<0?n:n+e.slice(Ub(e,c)).trimStart()}const vI=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,zT=new RegExp("\\p{Extended_Pictographic}","uy");function Ub(e,t){return t+=RLe(e,t)?2:1,FLe(e,t)&&(t=vI.lastIndex),
276kLe(e,t)?Ub(e,t+1):t}function I8(e,t){return e.charCodeAt(t)<128}function RLe(e,t){const i=e.charCodeAt(t);if(i>=55296&&i<56320){const n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function kLe(e,t){return e.charCodeAt(t)===8205}function FLe(e,t){return I8(e,t)?!1:(vI.lastIndex=t,vI.test(e))}function g8(e,t){return I8(e,t)?!1:(zT.lastIndex=t,zT.test(e))}const SLe={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},v8=3.5,LLe=v8*5,z8={draw(e,t,i){const n=t*i/LLe;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},CLe={draw(e,t,i){e.moveTo(-i,0),e.lineTo(0,-t),e.lineTo(i,0)}},TLe=new Map([["arrow",z8],["spike",CLe]]);function MLe(e){return e&&typeof e.draw=="function"}function KLe(e){if(MLe(e))return e;const t=TLe.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}class w8 extends Dn{constructor(t,i={}){const{x:n,y:s,r:l=v8,length:c,rotate:r,shape:a=z8,anchor:u="middle",frameAnchor:o}=i,[d,b]=Kn(c,12),[h,p]=Kn(r,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:s,scale:"y",optional:!0},length:{value:d,scale:"length",optional:!0},rotate:{value:h,optional:!0}},i,SLe),this.r=+l,this.length=b,this.rotate=p,this.shape=KLe(a),this.anchor=mc(u,"anchor",["start","middle","end"]),this.frameAnchor=ZJ(o)}render(t,i,n,s,l){const{x:c,y:r}=i,{x:a,y:u,length:o,rotate:d}=n,{length:b,rotate:h,anchor:p,shape:Z,r:X}=this,[J,V]=M0(this,s);return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,{x:a&&c,y:u&&r}).call(g=>g.selectAll().data(t).enter().append("path").call(Zs,this).attr("transform",Dw`translate(${a?I=>a[I]:J},${u?I=>u[I]:V})${d?I=>` rotate(${d[I]})`:h?` rotate(${h})`:""}${p==="start"?"":p==="end"?o?I=>` translate(0,${o[I]})`:` translate(0,${b})`:o?I=>` translate(0,${o[I]/2})`:` translate(0,${b/2})`}`).attr("d",o?I=>{const v=mu();return Z.draw(v,o[I],X),v}:(()=>{const I=mu();return Z.draw(I,b,X),I})()).call(ql,this,n)).node()}}function BLe(e,t={}){const{x:i=jt,...n}=t;return new w8(e,{...n,x:i})}function _Le(e,t={}){const{y:i=jt,...n}=t;return new w8(e,{...n,y:i})}function To(e,t){return arguments.length<2&&!Lo(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function zJ({anchor:e}={},t){return e===void 0?t[0]:mc(e,"anchor",t)}function H8(e){return zJ(e,["left","right"])}function N8(e){return zJ(e,["right","left"])}function R8(e){return zJ(e,["bottom","top"])}function k8(e){return zJ(e,["top","bottom"])}function F8(){const[e,t]=To(...arguments);return L8("y",H8(t),e,t)}function OLe(){const[e,t]=To(...arguments);return L8("fy",N8(t),e,t)}function S8(){const[e,t]=To(...arguments);return C8("x",R8(t),e,t)}function jLe(){const[e,t]=To(...arguments);return C8("fx",k8(t),e,t)}function L8(e,t,i,{color:n="currentColor",opacity:s=1,stroke:l=n,strokeOpacity:c=s,strokeWidth:r=1,fill:a=n,fillOpacity:u=s,textAnchor:o,textStroke:d,textStrokeOpacity:b,textStrokeWidth:h,tickSize:p=e==="y"?6:0,tickPadding:Z,tickRotate:X,x:J,margin:V,marginTop:g=V===void 0?20:V,marginRight:I=V===void 0?t==="right"?40:0:V,marginBottom:v=V===void 0?20:V,marginLeft:k=V===void 0?t==="left"?40:0:V,label:N,labelAnchor:C,labelArrow:f,labelOffset:w,ariaLabel:x=`${e}-axis`,...R}){return p=vi(p),Z=vi(Z),X=vi(X),C!==void 0&&(C=mc(C,"labelAnchor",["center","top","bottom"])),f=E8(f),GJ(p&&!rs(l)?ELe(e,t,i,{stroke:l,strokeOpacity:c,strokeWidth:r,tickSize:p,tickPadding:Z,tickRotate:X,x:J,ariaLabel:x,...R}):null,rs(a)?null:ULe(e,t,i,{fill:a,fillOpacity:u,stroke:d,strokeOpacity:b,strokeWidth:h,textAnchor:o,tickSize:p,tickPadding:Z,tickRotate:X,x:J,marginTop:g,marginRight:I,marginBottom:v,marginLeft:k,ariaLabel:x,...R}),!rs(a)&&N!==null?qw([],B8({fill:a,fillOpacity:u,...R},function(K,B,_,j,U){const $=j[e],{marginTop:te,marginRight:E,marginBottom:ie,marginLeft:ee}=e==="y"&&U.inset||U,A=C??($.bandwidth?"center":"top"),le=w??(t==="right"?E:ee)-3;return A==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=A,this.frameAnchor=`${A}-${t}`,this.rotate=0),this.dy=A==="top"?3-te:A==="bottom"?ie-3:0,this.dx=t==="right"?le:-le,this.ariaLabel=`${x} label`,{facets:[[0]],channels:{text:{value:[j8(e,$,{anchor:t,label:N,labelAnchor:A,labelArrow:f})]}}}})):null)}function C8(e,t,i,{color:n="currentColor",opacity:s=1,stroke:l=n,strokeOpacity:c=s,strokeWidth:r=1,fill:a=n,fillOpacity:u=s,textAnchor:o,textStroke:d,textStrokeOpacity:b,textStrokeWidth:h,tickSize:p=e==="x"?6:0,tickPadding:Z,tickRotate:X,y:J,margin:V,marginTop:g=V===void 0?t==="top"?30:0:V,marginRight:I=V===void 0?20:V,marginBottom:v=V===void 0?t==="bottom"?30:0:V,marginLeft:k=V===void 0?20:V,label:N,labelAnchor:C,labelArrow:f,labelOffset:w,ariaLabel:x=`${e}-axis`,...R}){return p=vi(p),Z=vi(Z),X=vi(X),C!==void 0&&(C=mc(C,"labelAnchor",["center","left","right"])),f=E8(f),GJ(p&&!rs(l)?PLe(e,t,i,{stroke:l,strokeOpacity:c,strokeWidth:r,tickSize:p,tickPadding:Z,tickRotate:X,y:J,ariaLabel:x,...R}):null,rs(a)?null:$Le(e,t,i,{fill:a,fillOpacity:u,stroke:d,strokeOpacity:b,strokeWidth:h,textAnchor:o,tickSize:p,tickPadding:Z,tickRotate:X,y:J,marginTop:g,marginRight:I,marginBottom:v,marginLeft:k,ariaLabel:x,...R}),!rs(a)&&N!==null?qw([],B8({fill:a,fillOpacity:u,...R},function(K,B,_,j,U){const $=j[e],{marginTop:te,marginRight:E,marginBottom:ie,marginLeft:ee}=e==="x"&&U.inset||U,A=C??($.bandwidth?"center":"right"),le=w??(t==="top"?te:ie)-3;return A==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${A}`,this.textAnchor=A==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-le:le,this.dx=A==="right"?E-3:A==="left"?3-ee:0,this.ariaLabel=`${x} label`,{facets:[[0]],channels:{text:{value:[j8(e,$,{anchor:t,label:N,labelAnchor:A,labelArrow:f})]}}}})):null)}function ELe(e,t,i,{strokeWidth:n=1,strokeLinecap:s=null,strokeLinejoin:l=null,facetAnchor:c=t+(e==="y"?"-empty":""),frameAnchor:r=t,tickSize:a,inset:u=0,insetLeft:o=u,insetRight:d=u,dx:b=0,y:h=e==="y"?void 0:null,ariaLabel:p,...Z}){return $b(_Le,e,i,{ariaLabel:`${p} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:s,strokeLinejoin:l,facetAnchor:c,frameAnchor:r,y:h,...Z,dx:t==="left"?+b-Bn+ +o:+b+Bn-d,anchor:"start",length:a,shape:t==="left"?nCe:sCe})}function PLe(e,t,i,{strokeWidth:n=1,strokeLinecap:s=null,strokeLinejoin:l=null,facetAnchor:c=t+(e==="x"?"-empty":""),frameAnchor:r=t,tickSize:a,inset:u=0,insetTop:o=u,insetBottom:d=u,dy:b=0,x:h=e==="x"?void 0:null,ariaLabel:p,...Z}){return $b(BLe,e,i,{ariaLabel:`${p} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:l,strokeLinecap:s,facetAnchor:c,frameAnchor:r,x:h,...Z,dy:t==="bottom"?+b-Bn-d:+b+Bn+ +o,anchor:"start",length:a,shape:t==="bottom"?tCe:iCe})}function ULe(e,t,i,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:l,tickRotate:c=0,tickPadding:r=Math.max(3,9-l)+(Math.abs(c)>60?4*Math.cos(c*d8):0),text:a,textAnchor:u=Math.abs(c)>60?"middle":t==="left"?"end":"start",lineAnchor:o=c>60?"top":c<-60?"bottom":"middle",fontVariant:d,inset:b=0,insetLeft:h=b,insetRight:p=b,dx:Z=0,ariaLabel:X,y:J=e==="y"?void 0:null,...V}){return $b(ILe,e,i,{ariaLabel:`${X} tick label`},{facetAnchor:n,frameAnchor:s,text:a,textAnchor:u,lineAnchor:o,fontVariant:d,rotate:c,y:J,...V,dx:t==="left"?+Z-l-r+ +h:+Z+ +l+ +r-p},function(g,I,v,k,N){d===void 0&&(this.fontVariant=O8(g)),a===void 0&&(N.text=_8(g,I,v,k,t))})}function $Le(e,t,i,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:l,tickRotate:c=0,tickPadding:r=Math.max(3,9-l)+(Math.abs(c)>=10?4*Math.cos(c*d8):0),text:a,textAnchor:u=Math.abs(c)>=10?c<0^t==="bottom"?"start":"end":"middle",lineAnchor:o=Math.abs(c)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:d,inset:b=0,insetTop:h=b,insetBottom:p=b,dy:Z=0,x:X=e==="x"?void 0:null,ariaLabel:J,...V}){return $b(VLe,e,i,{ariaLabel:`${J} tick label`},{facetAnchor:n,frameAnchor:s,text:a===void 0?null:a,textAnchor:u,lineAnchor:o,fontVariant:d,rotate:c,x:X,...V,dy:t==="bottom"?+Z+ +l+ +r-p:+Z-l-r+ +h},function(g,I,v,k,N){d===void 0&&(this.fontVariant=O8(g)),a===void 0&&(N.text=_8(g,I,v,k,t))})}function QLe(){const[e,t]=To(...arguments);return T8("y",H8(t),e,t)}function DLe(){const[e,t]=To(...arguments);return T8("fy",N8(t),e,t)}function ALe(){const[e,t]=To(...arguments);return M8("x",R8(t),e,t)}function qLe(){const[e,t]=To(...arguments);return M8("fx",k8(t),e,t)}function T8(e,t,i,{y:n=e==="y"?void 0:null,x:s=null,x1:l=t==="left"?s:null,x2:c=t==="right"?s:null,ariaLabel:r=`${e}-grid`,ariaHidden:a=!0,...u}){return $b(Qw,e,i,{ariaLabel:r,ariaHidden:a},{y:n,x1:l,x2:c,...K8(u)})}function M8(e,t,i,{x:n=e==="x"?void 0:null,y:s=null,y1:l=t==="top"?s:null,y2:c=t==="bottom"?s:null,ariaLabel:r=`${e}-grid`,ariaHidden:a=!0,...u}){return $b($w,e,i,{ariaLabel:r,ariaHidden:a},{x:n,y1:l,y2:c,...K8(u)})}function K8({color:e="currentColor",opacity:t=.1,stroke:i=e,strokeOpacity:n=t,strokeWidth:s=1,...l}){return{stroke:i,strokeOpacity:n,strokeWidth:s,...l}}function B8({fill:e,fillOpacity:t,fontFamily:i,fontSize:n,fontStyle:s,fontVariant:l,fontWeight:c,monospace:r,pointerEvents:a,shapeRendering:u,clip:o=!1},d){return[,e]=Al(e),[,t]=Kn(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:i,fontSize:n,fontStyle:s,fontVariant:l,fontWeight:c,monospace:r,pointerEvents:a,shapeRendering:u,clip:o,initializer:d}}function $b(e,t,i,n,s,l){let c;function r(o,d,b,h,p,Z){const X=o==null&&(t==="fx"||t==="fy"),{[t]:J}=h;if(!J)throw new Error(`missing scale: ${t}`);const V=J.domain();let{interval:g,ticks:I,tickFormat:v,tickSpacing:k=t==="x"?80:35}=s;
276if(typeof I=="string"&&P8(J)&&(g=I,I=void 0),I===void 0&&(I=jb(g,J.type)??eCe(J,k)),o==null){if(Lo(I))o=Jd(I);else if(bm(I))o=x9(I,...qs(V));else if(J.interval){let C=J.interval;if(J.ticks){const[f,w]=qs(V),x=(w-f)/C[R0];C=AC(C,x/I)??C,o=x9(C,f,w)}else{o=V;const f=o.length;C=AC(C,f/I)??C,C!==J.interval&&(o=x9(C,...qs(o)))}if(C===J.interval){const f=Math.round(o.length/I);f>1&&(o=o.filter((w,x)=>x%f===0))}}else J.ticks?o=J.ticks(I):o=V;if(!J.ticks&&o.length&&o!==V){const C=new co(V);o=o.filter(f=>C.has(f)),o.length||so(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?d=[fa(o)]:c[t]={scale:t,value:jt}}l==null||l.call(this,J,o,I,v,c);const N=Object.fromEntries(Object.entries(c).map(([C,f])=>[C,{...f,value:ni(o,f.value)}]));return X&&(d=Z.filterFacets(o,N)),{data:o,facets:d,channels:N}}const a=db(s).initializer,u=e(i,db({...s,initializer:r},a));return i==null?(c=u.channels,u.channels={}):c={},n!==void 0&&Object.assign(u,n),u.clip===void 0&&(u.clip=!1),u}function eCe(e,t){const[i,n]=qs(e.range());return(n-i)/t}function _8(e,t,i,n,s){return{value:iH(e,t,i,n,s)}}function iH(e,t,i,n,s){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&ys(t)?gke(e.type,t,s)??mb:e.tickFormat?e.tickFormat(typeof i=="number"?i:null,n):typeof n=="string"&&e.domain().length>0?(ys(e.domain())?AX:qu)(n):n===void 0?mb:Tr(n)}function x9(e,t,i){return e.range(t,e.offset(e.floor(i)))}const tCe={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},iCe={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},nCe={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},sCe={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function O8(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function j8(e,t,{anchor:i,label:n=t.label,labelAnchor:s,labelArrow:l}={}){if(!(n==null||n.inferred&&P8(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),l==="auto"&&(l=(!t.bandwidth||t.interval)&&!/[ââââ]/.test(n)),!l)return n;if(l===!0){const c=uSe(t);c&&(l=/x$/.test(e)||s==="center"?/x$/.test(e)===c<0?"left":"right":c<0?"up":"down")}switch(l){case"left":return`â ${n}`;case"right":return`${n} â`;case"up":return i==="right"?`${n} â`:`â ${n}`;case"down":return i==="right"?`${n} â`:`â ${n}`}return n}}function E8(e="auto"){return rs(e)?!1:typeof e=="boolean"?e:mc(e,"labelArrow",["auto","up","right","down","left"])}function P8(e){return ys(e.domain())}function wT(e,t){if(t==null)return t;const i=e(t);if(!i)throw new Error(`scale not found: ${t}`);return i}function lCe(e,{opacity:t,...i}={}){if(!Yd(e)&&!e8(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return U8(e,i,(n,s,l,c)=>n.append("svg").attr("width",l).attr("height",c).attr("fill",s.scale).attr("fill-opacity",Kn(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function cCe(e,{fill:t=(u=>(u=e.hint)==null?void 0:u.fill)()!==void 0?e.hint.fill:"none",fillOpacity:i=1,stroke:n=(o=>(o=e.hint)==null?void 0:o.stroke)()!==void 0?e.hint.stroke:rs(t)?"currentColor":"none",strokeOpacity:s=1,strokeWidth:l=1.5,r:c=4.5,...r}={},a){const[d,b]=Al(t),[h,p]=Al(n),Z=wT(a,d),X=wT(a,h),J=c*c*Math.PI;return i=Kn(i)[1],s=Kn(s)[1],l=Kn(l)[1],U8(e,r,(V,g,I,v)=>V.append("svg").attr("viewBox","-8 -8 16 16").attr("width",I).attr("height",v).attr("fill",d==="color"?k=>Z.scale(k):b).attr("fill-opacity",i).attr("stroke",h==="color"?k=>X.scale(k):p).attr("stroke-opacity",s).attr("stroke-width",l).append("path").attr("d",k=>{const N=mu();return e.scale(k).draw(N,J),N}))}function U8(e,t={},i){let{columns:n,tickFormat:s,fontVariant:l=u8(e),swatchSize:c=15,swatchWidth:r=c,swatchHeight:a=c,marginLeft:u=0,className:o,style:d,width:b}=t;const h=_w(t);o=jw(o),s=iH(e.scale,e.domain,void 0,s);const p=Hi("div",h).attr("class",`${o}-swatches ${o}-swatches-${n!=null?"columns":"wrap"}`);let Z;return n!=null?(Z=`:where(.${o}-swatches-columns .${o}-swatch) { 277 display: flex; 278 align-items: center; 279 break-inside: avoid; 280 padding-bottom: 1px; 281} 282:where(.${o}-swatches-columns .${o}-swatch::before) { 283 flex-shrink: 0; 284} 285:where(.${o}-swatches-columns .${o}-swatch-label) { 286 white-space: nowrap; 287 overflow: hidden; 288 text-overflow: ellipsis; 289}`,p.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${o}-swatch`).call(i,e,r,a).call(X=>X.append("div").attr("class",`${o}-swatch-label`).attr("title",s).text(s))):(Z=`:where(.${o}
289-swatches-wrap) { 290 display: flex; 291 align-items: center; 292 min-height: 33px; 293 flex-wrap: wrap; 294} 295:where(.${o}-swatches-wrap .${o}-swatch) { 296 display: inline-flex; 297 align-items: center; 298 margin-right: 1em; 299}`,p.selectAll().data(e.domain).enter().append("span").attr("class",`${o}-swatch`).call(i,e,r,a).append(function(){return this.ownerDocument.createTextNode(s.apply(this,arguments))})),p.call(X=>X.insert("style","*").text(`:where(.${o}-swatches) { 300 font-family: system-ui, sans-serif; 301 font-size: 10px; 302 margin-bottom: 0.5em; 303} 304:where(.${o}-swatch > svg) { 305 margin-right: 0.5em; 306 overflow: visible; 307} 308${Z}`)).style("margin-left",u?`${+u}px`:null).style("width",b===void 0?null:`${+b}px`).style("font-variant",Di(l,"normal")).call(Ew,d).node()}const zI=new Map([["symbol",cCe],["color",Q8],["opacity",aCe]]);function rCe(e,t,i={}){return(n,s)=>{if(!zI.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return zI.get(n)(e[n],$8(t,i[n],s),l=>e[l])}}function $8({className:e,...t},{label:i,ticks:n,tickFormat:s}={},l){return Pke(l,{className:e,...t},{label:i,ticks:n,tickFormat:s})}function Q8(e,{legend:t=!0,...i}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return lCe(e,i);case"ramp":return dLe(e,i);default:throw new Error(`unknown legend type: ${t}`)}}function aCe({type:e,interpolate:t,...i},{legend:n=!0,color:s=ro(0,0,0),...l}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return Q8({type:e,...i,interpolate:oCe(s)},{legend:n,...l})}function oCe(e){const{r:t,g:i,b:n}=ro(e)||ro(0,0,0);return s=>`rgba(${t},${i},${n},${s})`}function uCe(e,t,i){const n=[];for(const[s,l]of zI){const c=i[s];if(c!=null&&c.legend&&s in e){const r=l(e[s],$8(t,e[s],c),a=>e[a]);r!=null&&n.push(r)}}return n}function nH(e={},t="x"){return pA(e)?e:{...e,[t]:jt}}function sH(e={},t="y"){return yA(e)?e:{...e,[t]:jt}}function dCe(e,t){if(t.length===1)return{data:e,facets:t};const i=Zp(e),n=new Uint8Array(i);let s=0;for(const r of t)for(const a of r)n[a]&&++s,n[a]=1;if(s===0)return{data:e,facets:t};e=yp(e);const l=e[oA]=new Uint32Array(i+s);t=t.map(r=>yp(r,Uint32Array));let c=i;n.fill(0);for(const r of t)for(let a=0,u=r.length;a<u;++a){const o=r[a];n[o]?(r[a]=c,e[c]=e[o],l[c]=o,++c):l[o]=o,n[o]=1}return{data:e,facets:t}}function D8(e={},t={}){arguments.length===1&&([e,t]=q8(e));const{y1:i,y:n=i,x:s,...l}=t,[c,r,a,u]=eq(n,s,"y","x",e,l);return{...c,y1:i,y:r,x1:a,x2:u,x:BX(a,u)}}function A8(e={},t={}){arguments.length===1&&([e,t]=q8(e));const{x1:i,x:n=i,y:s,...l}=t,[c,r,a,u]=eq(n,s,"x","y",e,l);return{...c,x1:i,x:r,y1:a,y2:u,y:BX(a,u)}}function lH({x:e,x1:t,x2:i,...n}={}){return n=Pb(n,"y"),t===void 0&&i===void 0?D8({x:e,...n}):([t,i]=ZA(e,t,i),{...n,x1:t,x2:i})}function cH({y:e,y1:t,y2:i,...n}={}){return n=Pb(n,"x"),t===void 0&&i===void 0?A8({y:e,...n}):([t,i]=ZA(e,t,i),{...n,y1:t,y2:i})}function q8(e){const{offset:t,order:i,reverse:n,...s}=e;return[{offset:t,order:i,reverse:n},s]}const mCe={length:!0};
308function eq(e,t=Nke,i,n,{offset:s,order:l,reverse:c},r){if(t===null)throw new Error(`stack requires ${n}`);const a=fJ(r),[u,o]=ts(e),[d,b]=Wp(t),[h,p]=Wp(t);return d.hint=h.hint=mCe,s=bCe(s),l=pCe(l,s,n),[Eb(r,(Z,X,J)=>{({data:Z,facets:X}=dCe(Z,X));const V=e==null?void 0:o(_X(ni(Z,e),J==null?void 0:J[i])),g=ni(Z,t,Float64Array),I=ni(Z,a),v=l&&l(Z,V,g,I),k=Zp(Z),N=b(new Float64Array(k)),C=p(new Float64Array(k)),f=[];for(const w of X){const x=V?Array.from(Vp(w,R=>V[R]).values()):[w];if(v)for(const R of x)R.sort(v);for(const R of x){let K=0,B=0;c&&R.reverse();for(const _ of R){const j=g[_];j<0?K=C[_]=(N[_]=K)+j:j>0?B=C[_]=(N[_]=B)+j:C[_]=N[_]=B}}f.push(x)}return s&&s(f,N,C,I),{data:Z,facets:X}}),u,d,h]}function bCe(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return hCe;case"center":case"silhouette":return fCe;case"wiggle":return iq}throw new Error(`unknown offset: ${e}`)}}function tq(e,t){let i=0,n=0;for(const s of e){const l=t[s];l<i&&(i=l),l>n&&(n=l)}return[i,n]}function hCe(e,t,i){for(const n of e)for(const s of n){const[l,c]=tq(s,i);for(const r of s){const a=1/(c-l||1);t[r]=a*(t[r]-l),i[r]=a*(i[r]-l)}}}function fCe(e,t,i){for(const n of e){for(const s of n){const[l,c]=tq(s,i);for(const r of s){const a=(c+l)/2;t[r]-=a,i[r]-=a}}nq(n,t,i)}sq(e,t,i)}function iq(e,t,i,n){for(const s of e){const l=new Yp;let c=0;for(const r of s){let a=-1;const u=r.map(h=>Math.abs(i[h]-t[h])),o=r.map(h=>{a=n?n[h]:++a;const p=i[h]-t[h],Z=l.has(a)?p-l.get(a):0;return l.set(a,p),Z}),d=[0,..._ie(o)];for(const h of r)t[h]+=c,i[h]+=c;const b=Uc(u);b&&(c-=Uc(u,(h,p)=>(o[p]/2+d[p])*h)/b)}nq(s,t,i)}sq(e,t,i)}function nq(e,t,i){const n=$r(e,s=>$r(s,l=>t[l]));for(const s of e)for(const l of s)t[l]-=n,i[l]-=n}function sq(e,t,i){const n=e.length;if(n===1)return;const s=e.map(r=>r.flat()),l=s.map(r=>($r(r,a=>t[a])+_n(r,a=>i[a]))/2),c=$r(l);for(let r=0;r<n;r++){const a=c-l[r];for(const u of s[r])t[u]+=a,i[u]+=a}}function pCe(e,t,i){if(e===void 0&&t===iq)return HT(Ql);if(e!=null){if(typeof e=="string"){const n=e.startsWith("-"),s=n?KX:Ql;switch((n?e.slice(1):e).toLowerCase()){case"value":case i:return yCe(s);case"z":return ZCe(s);case"sum":return WCe(s);case"appearance":return XCe(s);case"inside-out":return HT(s)}return NT(uA(e))}if(typeof e=="function")return(e.length===1?NT:JCe)(e);if(Xd(e))return xCe(e);throw new Error(`invalid order: ${e}`)}}function yCe(e){return(t,i,n)=>(s,l)=>e(n[s],n[l])}function ZCe(e){return(t,i,n,s)=>(l,c)=>e(s[l],s[c])}function WCe(e){return wJ(e,(t,i,n,s)=>OI(fa(t),l=>Uc(l,c=>n[c]),l=>s[l]))}function XCe(e){return wJ(e,(t,i,n,s)=>OI(fa(t),l=>i[EM(l,c=>n[c])],l=>s[l]))}function HT(e){return wJ(e,(t,i,n,s)=>{const l=fa(t),c=OI(l,d=>i[EM(d,b=>n[b])],d=>s[d]),r=ym(l,d=>Uc(d,b=>n[b]),d=>s[d]),a=[],u=[];let o=0;for(const d of c)o<0?(o+=r.get(d),a.push(d)):(o-=r.get(d),u.push(d));return u.reverse().concat(a)})}function NT(e){return t=>{const i=ni(t,e);return(n,s)=>Ql(i[n],i[s])}}function JCe(e){return t=>Xd(t)?(i,n)=>e(t[i],t[n]):(i,n)=>e(t.get(i),t.get(n))}function xCe(e){return wJ(Ql,()=>e)}function wJ(e,t){return(i,n,s,l)=>{if(!l)throw new Error("missing channel: z");const c=new Yp(t(i,n,s,l).map((r,a)=>[r,a]));return(r,a)=>e(c.get(l[r]),c.get(l[a]))}}const YCe={ariaLabel:"rect"};class lq extends Dn{constructor(t,i={}){const{x1:n,y1:s,x2:l,y2:c}=i;super(t,{x1:{value:n,scale:"x",type:n!=null&&l==null?"band":void 0,optional:!0},y1:{value:s,scale:"y",type:s!=null&&c==null?"band":void 0,optional:!0},x2:{value:l,scale:"x",optional:!0},y2:{value:c,scale:"y",optional:!0}},i,YCe),rH(this,i),aH(this,i)}render(t,i,n,s,l){const{x:c,y:r}=i;let{x1:a,y1:u,x2:o,y2:d}=n;const{marginTop:b,marginRight:h,marginBottom:p,marginLeft:Z,width:X,height:J}=s,{projection:V}=l,{insetTop:g,insetRight:I,insetBottom:v,insetLeft:k}=this,{rx:N,ry:C,rx1y1:f,rx1y2:w,rx2y1:x,rx2y2:R}=this;(a||o)&&!V&&sr(c)&&(a=o=null),(u||d)&&!V&&sr(r)&&(u=d=null);const K=c!=null&&c.bandwidth?c.bandwidth():0,B=r!=null&&r.bandwidth?r.bandwidth():0;return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,{},0,0).call(_=>_.selectAll().data(t).enter().call(f||w||x||R?j=>j.append("path").call(Zs,this).call(oH,a&&o?U=>a[U]+(o[U]<a[U]?-I:k):a?U=>a[U]+k:Z+k,u&&d?U=>u[U]+(d[U]<u[U]?-v:g):u?U=>u[U]+g:b+g,a&&o?U=>o[U]-(o[U]<a[U]?-k:I):a?U=>a[U]+K-I:X-h-I,u&&d?U=>d[U]-(d[U]<u[U]?-g:v):u?U=>u[U]+B-v:J-p-v,this).call(ql,this,n):j=>j.append("rect").call(Zs,this).attr("x",a?o?U=>Math.min(a[U],o[U])+k:U=>a[U]+k:Z+k).attr("y",u?d?U=>Math.min(u[U],d[U])+g:U=>u[U]+g:b+g).attr("width",a?o?U=>Math.max(0,Math.abs(o[U]-a[U])+K-k-I):K-k-I:X-h-Z-I-k).attr("height",u?d?U=>
308Math.max(0,Math.abs(u[U]-d[U])+B-g-v):B-g-v:J-b-p-g-v).call(et,"rx",N).call(et,"ry",C).call(ql,this,n))).node()}}function rH(e,{inset:t=0,insetTop:i=t,insetRight:n=t,insetBottom:s=t,insetLeft:l=t}={}){e.insetTop=vi(i),e.insetRight=vi(n),e.insetBottom=vi(s),e.insetLeft=vi(l)}function aH(e,{r:t,rx:i,ry:n,rx1:s=t,ry1:l=t,rx2:c=t,ry2:r=t,rx1y1:a=s!==void 0?+s:l!==void 0?+l:0,rx1y2:u=s!==void 0?+s:r!==void 0?+r:0,rx2y1:o=c!==void 0?+c:l!==void 0?+l:0,rx2y2:d=c!==void 0?+c:r!==void 0?+r:0}={}){a||u||o||d?(e.rx1y1=a,e.rx1y2=u,e.rx2y1=o,e.rx2y2=d):(e.rx=Di(i,"auto"),e.ry=Di(n,"auto"))}function oH(e,t,i,n,s,l){const{rx1y1:c,rx1y2:r,rx2y1:a,rx2y2:u}=l;typeof t!="function"&&(t=Tr(t)),typeof i!="function"&&(i=Tr(i)),typeof n!="function"&&(n=Tr(n)),typeof s!="function"&&(s=Tr(s));const o=Math.max(Math.abs(c+a),Math.abs(r+u)),d=Math.max(Math.abs(c+r),Math.abs(a+u));e.attr("d",b=>{const h=t(b),p=i(b),Z=n(b),X=s(b),J=h>Z,V=p>X,g=J?Z:h,I=J?h:Z,v=V?X:p,k=V?p:X,N=Math.min(1,(I-g)/o,(k-v)/d),C=N*(J?V?u:a:V?r:c),f=N*(J?V?r:c:V?u:a),w=N*(J?V?c:r:V?a:u),x=N*(J?V?a:u:V?c:r);return`M${g},${v+dZ(C,x)}A${C},${C} 0 0 ${C<0?0:1} ${g+uZ(C,x)},${v}H${I-uZ(f,w)}A${f},${f} 0 0 ${f<0?0:1} ${I},${v+dZ(f,w)}V${k-dZ(w,f)}A${w},${w} 0 0 ${w<0?0:1} ${I-uZ(w,f)},${k}H${g+uZ(x,C)}A${x},${x} 0 0 ${x<0?0:1} ${g},${k-dZ(x,C)}Z`})}function uZ(e,t){return t<0?e:Math.abs(e)}function dZ(e,t){return t<0?Math.abs(e):e}function GCe(e,t={}){return bJ(t)||(t={...t,y:Dl,x2:jt,interval:1}),new lq(e,lH(ZLe(nH(t))))}function VCe(e,t={}){return bJ(t)||(t={...t,x:Dl,y2:jt,interval:1}),new lq(e,cH(yLe(sH(t))))}const ICe={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},gCe={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1};class vCe extends Dn{constructor(t={}){const{anchor:i=null}=t;super(UZ,void 0,t,i==null?ICe:gCe),this.anchor=hA(i,"anchor",["top","right","bottom","left"]),rH(this,t),i||aH(this,t)}render(t,i,n,s,l){const{marginTop:c,marginRight:r,marginBottom:a,marginLeft:u,width:o,height:d}=s,{anchor:b,insetTop:h,insetRight:p,insetBottom:Z,insetLeft:X}=this,{rx:J,ry:V,rx1y1:g,rx1y2:I,rx2y1:v,rx2y2:k}=this,N=u+X,C=o-r-p,f=c+h,w=d-a-Z;return Hi(b?"svg:line":g||I||v||k?"svg:path":"svg:rect",l).datum(0).call(Wl,this,s,l).call(Zs,this).call(ql,this,n).call(Js,this,{}).call(b==="left"?x=>x.attr("x1",N).attr("x2",N).attr("y1",f).attr("y2",w):b==="right"?x=>x.attr("x1",C).attr("x2",C).attr("y1",f).attr("y2",w):b==="top"?x=>x.attr("x1",N).attr("x2",C).attr("y1",f).attr("y2",f):b==="bottom"?x=>x.attr("x1",N).attr("x2",C).attr("y1",w).attr("y2",w):g||I||v||k?x=>x.call(oH,N,f,C,w,this):x=>x.attr("x",N).attr("y",f).attr("width",C-N).attr("height",w-f).attr("rx",J).attr("ry",V)).node()}}function zCe(e){return new vCe(e)}const Y9={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},wCe=new Set(["geometry","href","src","ariaLabel","scales"]);class HCe extends Dn{constructor(t,i={}){i.tip&&(i={...i,tip:!1}),i.title===void 0&&Lo(t)&&JA(t)&&(i={...i,title:jt});const{x:n,y:s,x1:l,x2:c,y1:r,y2:a,anchor:u,preferredAnchor:o="bottom",monospace:d,fontFamily:b=d?"ui-monospace, monospace":void 0,fontSize:h,fontStyle:p,fontVariant:Z,fontWeight:X,lineHeight:J=1,lineWidth:V=20,frameAnchor:g,format:I,textAnchor:v="start",textOverflow:k,textPadding:N=8,title:C,pointerSize:f=12,pathFilter:w="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=i;super(t,{x:{value:l!=null&&c!=null?null:n,scale:"x",optional:!0},y:{value:r!=null&&a!=null?null:s,scale:"y",optional:!0},x1:{value:l,scale:"x",optional:c==null},y1:{value:r,scale:"y",optional:a==null},x2:{value:c,scale:"x",optional:l==null},y2:{value:a,scale:"y",optional:r==null},title:{value:C,optional:!0}},i,Y9),this.anchor=WI(u,"anchor"),this.preferredAnchor=WI(o,"preferredAnchor"),this.frameAnchor=ZJ(g),this.textAnchor=Di(v,"middle"),this.textPadding=+N,this.pointerSize=+f,this.pathFilter=pn(w),this.lineHeight=+J,this.lineWidth=+V,this.textOverflow=x8(k),this.monospace=!!d,this.fontFamily=pn(b),this.fontSize=vi(h),this.fontStyle=pn(p),this.fontVariant=pn(Z),this.fontWeight=pn(X);for(const x in Y9)x in this.channels&&(this[x]=Y9[x]);this.splitLines=G8(this),this.clipLine=V8(this),this.format=typeof I=="str
308ing"||typeof I=="function"?{title:I}:{...I}}render(t,i,n,s,l){const c=this,{x:r,y:a,fx:u,fy:o}=i,{ownerSVGElement:d,document:b}=l,{anchor:h,monospace:p,lineHeight:Z,lineWidth:X}=this,{textPadding:J,pointerSize:V,pathFilter:g}=this,{marginTop:I,marginLeft:v}=s,{x1:k,y1:N,x2:C,y2:f,x:w=k??C,y:x=N??f}=n,R=u?u(t.fx)-v:0,K=o?o(t.fy)-I:0,[B,_]=M0(this,s),j=a8(n,B),U=o8(n,_),$=p?tH:eH,te=$(gm);let E,ie;"title"in n?(E=RT.call(this,{title:n.channels.title},i),ie=SCe):(E=RT.call(this,n.channels,i),ie=LCe);const ee=Hi("svg:g",l).call(Wl,this,s,l).call(Y8,this).call(Js,this,{x:w&&r,y:x&&a}).call(ne=>ne.selectAll().data(t).enter().append("g").attr("transform",se=>`translate(${Math.round(j(se))},${Math.round(U(se))})`).call(Zs,this).call(se=>se.append("path").attr("filter",g)).call(se=>se.append("text").each(function(oe){const de=fu(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");const Je=ie.call(c,oe,t,E,i,n);if(typeof Je=="string")for(const Ie of c.splitLines(Je))A(de,{value:c.clipLine(Ie)});else{const Ie=new Set;for(const Ye of Je){const{label:Te=""}=Ye;Te&&Ie.has(Te)||(Ie.add(Te),A(de,Ye))}}})));function A(ne,{label:se,value:oe,color:de,opacity:Je}){se??(se=""),oe??(oe="");const Ie=de!=null||Je!=null;let Ye,Te=X*100;const[$e]=bb(se,Te,$,te);if($e>=0)se=se.slice(0,$e).trimEnd()+gm,Ye=oe.trim(),oe="";else{(se||!oe&&!Ie)&&(oe=" "+oe);const[Me]=bb(oe,Te-$(se),$,te);Me>=0&&(Ye=oe.trim(),oe=oe.slice(0,Me).trimEnd()+gm)}const Ve=ne.append("tspan").attr("x",0).attr("dy",`${Z}em`).text("â");se&&Ve.append("tspan").attr("font-weight","bold").text(se),oe&&Ve.append(()=>b.createTextNode(oe)),Ie&&Ve.append("tspan").text(" â ").attr("fill",de).attr("fill-opacity",Je).style("user-select","none"),Ye&&Ve.append("title").text(Ye)}function le(){const{width:ne,height:se}=s.facet??s;ee.selectChildren().each(function(oe){let{x:de,width:Je,height:Ie}=this.getBBox();Je=Math.round(Je),Ie=Math.round(Ie);let Ye=h;if(Ye===void 0){const Ve=j(oe)+R,Me=U(oe)+K,Ee=Ve+Je+V+J*2<ne,ye=Ve-Je-V-J*2>0,Ke=Me+Ie+V+J*2<se,Fe=Me-Ie-V-J*2>0;Ye=Ee&&ye?Ke&&Fe?c.preferredAnchor:Fe?"bottom":"top":Ke&&Fe?Ee?"left":"right":(Ee||ye)&&(Ke||Fe)?`${Fe?"bottom":"top"}-${Ee?"left":"right"}`:c.preferredAnchor}const Te=this.firstChild,$e=this.lastChild;if(Te.setAttribute("d",FCe(Ye,V,J,Je,Ie)),de)for(const Ve of $e.childNodes)Ve.setAttribute("x",-de);$e.setAttribute("y",`${+RCe(Ye,$e.childNodes.length,Z).toFixed(6)}em`),$e.setAttribute("transform",`translate(${kCe(Ye,V,J,Je,Ie)})`)}),ee.attr("visibility",null)}return t.length&&(ee.attr("visibility","hidden"),d.isConnected?Promise.resolve().then(le):typeof requestAnimationFrame<"u"&&requestAnimationFrame(le)),ee.node()}}function NCe(e,{x:t,y:i,...n}={}){return n.frameAnchor===void 0&&([t,i]=gw(t,i)),new HCe(e,{...n,x:t,y:i})}function RCe(e,t,i){return/^top(?:-|$)/.test(e)?.94-i:-.29-t*i}function kCe(e,t,i,n,s){switch(e){case"middle":return[-n/2,s/2];case"top-left":return[i,t+i];case"top":return[-n/2,t/2+i];case"top-right":return[-n-i,t+i];case"right":return[-t/2-n-i,s/2];case"bottom-left":return[i,-t-i];case"bottom":return[-n/2,-t/2-i];case"bottom-right":return[-n-i,-t-i];case"left":return[i+t/2,s/2]}}function FCe(e,t,i,n,s){const l=n+i*2,c=s+i*2;switch(e){case"middle":return`M${-l/2},${-c/2}h${l}v${c}h${-l}z`;case"top-left":return`M0,0l${t},${t}h${l-t}v${c}h${-l}z`;case"top":return`M0,0l${t/2},${t/2}h${(l-t)/2}v${c}h${-l}v${-c}h${(l-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-l}v${c}h${l}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-c/2}h${-l}v${c}h${l}v${t/2-c/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${l-t}v${-c}h${-l}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(l-t)/2}v${-c}h${-l}v${c}h${(l-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-l}v${-c}h${l}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-c/2}h${l}v${c}h${-l}v${t/2-c/2}z`}}function RT(e,t){var s,l;const i={};let n=this.format;n=kT(n,e,"x"),n=kT(n,e,"y"),this.format=n;for(const c in n){const r=n[c];if(!(r===null||r===!1))if(c==="fx"||c==="fy")i[c]=!0;else{const a=cT(e,c);a&&(i[c]=a)}}for(const c in e){if(c in i||c in n||wCe.has(c)||(c==="x"||c==="y")&&e.geometry)continue;const r=cT(e,c);if(r){if(r.scale==null&&r.defaultScale==="color")continue;i[c]=r}}this.facet&&(t.fx&&!("fx"in n)&&(i.fx=!0),t.fy&&!("fy"in n)&&(i.fy=!0));for(const c in i){const r=this.format[c];if(typeof r=="string"){const a=((s=i[c])==null?void 0:s.value)??((l=t[c])==null?void 0:l.domain())??[];this.format[c]=(ys(a)?AX:qu)(r)}else if(r===void 0||r===!0){const a=t[c];this.format[c]=a!=null&&a.bandwidth?iH(a,a.domain()):mb}}return i}function kT(e,t,i){if(!(i in e))return e;const n=`${i}1`,s=`${i}2`;if((n in e||!(n in t))&&(s in e||!(s in t)))return e;const l=Object.entries(e),c=e[i];return l.splice(l.findIndex(([r])=>r===i)+1,0,[n,c],[s,c]),Object.fromEntries(l)}function SCe(e,t,{title:i}){return this.format.title(i.value[e],e)}function*LCe(e,t,i,n,s){for(const l in i){if(l==="fx"||l==="fy"){yield{label:jX(n,i,l),value:this.format[l](t[l],e)};continue}if(l==="x1"&&"x2"in i||l==="y1"&&"y2"in i)continue;const c=i[l];if(l==="x2"&&"x1"in i)yield{label:ST(n,i,"x"),value:FT(this.format.x2,i.x1,c,e)};else if(l==="y2"&&"y1"in i)yield{label:ST(n,i,"y"),value:FT(this.format.y2,i.y1,c,e)};else{const r=c.value[e],a=c.scale;if(!xo(r)&&a==null)continue;yield{label:jX(n,i,l),value:this.format[l](r,e),color:a==="color"?s[l][e]:null,opacity:a==="opacity"?s[l][e]:null}}}}function FT(e,t,i,n){var s;return(s=i.hint)!=null&&s.length?`${e(i.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}â${e(i.value[n],n)}`}function ST(e,t,i){const n=jX(e,t,`${i}1`,i),s=jX(e,t,`${i}2`,i);return n===s?n:`${n}â${s}`}function jX(e,t,i,n=i){const s=t[i],l=e[(s==null?void 0:s.scale)??i];return String((l==null?void 0:l.label)??(s==null?void 0:s.label)??n)}function cq(e={}){var te;const{facet:t,style:i,title:n,subtitle:s,caption:l,ariaLabel:c,ariaDescription:r}=e,a=jw(e.className),u=e.marks===void 0?[]:CT(e.marks);u.push(...OCe(u));const o=BCe(t,e),d=new Map;for(const E of u){const ie=TT(E,o,e);ie&&d.set(E,ie)}const b=new Map;o&&Rh(b,[o],e),Rh(b,d,e);const h=CT(jCe(u,b,e));for(const E of h){const ie=TT(E,o,e);ie&&d.set(E,ie)}u.unshift(...h);let p=ZSe(b,e);if(p!==void 0){const E=o?Z9(p,o):void 0;for(const ee of u){if(ee.facet===null||ee.facet==="super")continue;const A=d.get(ee);A!==void 0&&(A.facetsIndex=ee.fx!=null||ee.fy!=null?Z9(p,A):E)}const ie=new Set;for(const{facetsIndex:ee}of d.values())ee==null||ee.forEach((A,le)=>{(A==null?void 0:A.length)>0&&ie.add(le)});p.forEach(0<ie.size&&ie.size<p.length?(ee,A)=>ee.empty=!ie.has(A):ee=>ee.empty=!1);for(const ee of u)if(ee.facet==="exclude"){const A=d.get(ee);A!==void 0&&(A.facetsIndex=JSe(A.facetsIndex))}}for(const E of yi.keys())ZI(e[E])&&E!=="fx"&&E!=="fy"&&b.set(E,[]);const Z=new Map;for(const E of u){if(Z.has(E))throw new Error("duplicate mark; each mark must be unique");const{facetsIndex:ie,channels:ee}=d.get(E)??{},{data:A,facets:le,channels:ne}=E.initialize(ie,ee,e);uH(ne,e),Z.set(E,{data:A,facets:le,channels:ne})}const X=YI(Rh(b,Z,e),e),J=rLe(X,u,e);aSe(X,J);const V=hT(X),{fx:g,fy:I}=V,v=g||I?DA(X,J):J,k=g||I?ACe(V,J):J,N=_w(e),C=N.document,f=FM("svg").call(C.documentElement);let w=f;N.ownerSVGElement=f,N.className=a,N.projection=wSe(e,v),N.path=function(){return s0(this.projection??LSe(V))},N.filterFacets=(E,ie)=>Z9(p,{channels:ie,groups:Bw(E,ie)}),N.getMarkState=E=>{const ie=Z.get(E),ee=d.get(E);return{...ie,channels:{...ie.channels,...ee==null?void 0:ee.channels}}},N.dispatchValue=E=>{w.value!==E&&(w.value=E,w.dispatchEvent(new N.document.defaultView.Event("input",{bubbles:!0})))};const x=new Set;for(const[E,ie]of Z)if(E.initializer!=null){const ee=E.facet==="super"?k:v,A=E.initializer(ie.data,ie.facets,ie.channels,V,ee,N);if(A.data!==void 0&&(ie.data=A.data),A.facets!==void 0&&(ie.facets=A.facets),A.channels!==void 0){const{fx:le,fy:ne,...se}=A.channels;KCe(se),Object.assign(ie.channels,se);for(const oe of Object.values(se)){const{scale:de}=oe;de!=null&&!Qke(yi.get(de))&&(rq(oe,e),x.add(de))}(le!=null||ne!=null)&&d.set(E,!0)}}if(x.size){const E=new Map;Rh(E,Z,e,le=>x.has(le)),Rh(b,Z,e,le=>x.has(le));const ie=DCe(YI(E,e),X),{scales:ee,...A}=hT(ie);Object.assign(X,ie),Object.assign(V,A),Object.assign(V.scales,ee)}let R,K;p!==void 0&&(R={x:g==null?void 0:g.domain(),y:I==null?void 0:I.domain()},p=WSe(p,R),K=XSe(g,I,J));for(const[E,ie]of Z)ie.values=E.scale(ie.channels,V,N);const{width:B,height:_}=J;fu(f).attr("class",a).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",B).attr("height",_).attr("viewBox",`0 0 ${B} ${_}`).attr("aria-label",c).attr("aria-description",r).call(E=>E.append("style").text(`:where(.${a}) { 309 --plot-background: white; 310 display: block; 311 height: auto; 312 height: intrinsic; 313 max-width: 100%; 314} 315:where(.${a} text), 316:where(.${a} tspan) { 317 white-space: pre; 318}`)).call(Ew,i);for(const E of u){const{channels:ie,values:ee,facets:A}=Z.get(E);if(p===void 0||E.facet==="super"){let le=null;if(A&&(le=A[0],le=E.filter(le,ie,ee),le.length===0))continue;const ne=E.render(le,V,ee,k,N);if(ne==null)continue;f.appendChild(ne)}else{let le;
318for(const ne of p){if(!(((te=E.facetAnchor)==null?void 0:te.call(E,p,R,ne))??!ne.empty))continue;let se=null;if(A){const de=d.has(E);if(se=A[de?ne.i:0],se=E.filter(se,ie,ee),se.length===0)continue;!de&&se===A[0]&&(se=Ske(se)),se.fx=ne.x,se.fy=ne.y,se.fi=ne.i}const oe=E.render(se,V,ee,v,N);if(oe!=null){(le??(le=fu(f).append("g"))).append(()=>oe).datum(ne);for(const de of["aria-label","aria-description","aria-hidden","transform"])oe.hasAttribute(de)&&(le.attr(de,oe.getAttribute(de)),oe.removeAttribute(de))}}le==null||le.selectChildren().each(K)}}const j=uCe(X,N,e),{figure:U=n!=null||s!=null||l!=null||j.length>0}=e;U&&(w=C.createElement("figure"),w.className=`${a}-figure`,w.style.maxWidth="initial",n!=null&&w.append(LT(C,n,"h2")),s!=null&&w.append(LT(C,s,"h3")),w.append(...j,f),l!=null&&w.append(CCe(C,l)),"value"in f&&(w.value=f.value,delete f.value)),w.scale=pSe(V.scales),w.legend=rCe(X,N,e);const $=jFe();return $>0&&fu(f).append("text").attr("x",B).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("â ï¸").append("title").text(`${$.toLocaleString("en-US")} warning${$===1?"":"s"}. Please check the console.`),w}function LT(e,t,i){if(t.ownerDocument)return t;const n=e.createElement(i);return n.append(t),n}function CCe(e,t){const i=e.createElement("figcaption");return i.append(t),i}function CT(e){return e.flat(1/0).filter(t=>t!=null).map(TCe)}function TCe(e){return typeof e.render=="function"?e:new MCe(e)}class MCe extends Dn{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}}function uH(e,t){for(const i in e)rq(e[i],t);return e}function rq(e,t){const{scale:i,transform:n=!0}=e;if(i==null||!n)return;const{type:s,percent:l,interval:c,transform:r=l?a=>a==null?NaN:a*100:XA(c,s)}=t[i]??{};r!=null&&(e.value=wi(e.value,r),e.transform=!1)}function KCe(e){for(const t in e)LA(t,e[t])}function Rh(e,t,i,n=Rke){var s,l;for(const{channels:c}of t.values())for(const r in c){const a=c[r],{scale:u}=a;if(u!=null&&n(u))if(u==="projection"){if(!kSe(i)){const o=((s=i.x)==null?void 0:s.domain)===void 0,d=((l=i.y)==null?void 0:l.domain)===void 0;if(o||d){const[b,h]=SSe(a);o&&G9(e,"x",b),d&&G9(e,"y",h)}}}else G9(e,u,a)}return e}function G9(e,t,i){const n=e.get(t);n!==void 0?n.push(i):e.set(t,[i])}function BCe(e,t){if(e==null)return;const{x:i,y:n}=e;if(i==null&&n==null)return;const s=ob(e.data);if(s==null)throw new Error("missing facet data");const l={};i!=null&&(l.fx=Jp(s,{value:i,scale:"fx"})),n!=null&&(l.fy=Jp(s,{value:n,scale:"fy"})),uH(l,t);const c=Bw(s,l);return{channels:l,groups:c,data:e.data}}function TT(e,t,i){if(e.facet===null||e.facet==="super")return;const{fx:n,fy:s}=e;if(n!=null||s!=null){const a=ob(e.data??n??s);if(a===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(a===null)return;const u={};return n!=null&&(u.fx=Jp(a,{value:n,scale:"fx"})),s!=null&&(u.fy=Jp(a,{value:s,scale:"fy"})),uH(u,i),{channels:u,groups:Bw(a,u)}}if(t===void 0)return;const{channels:l,groups:c,data:r}=t;if(e.facet!=="auto"||e.data===r)return{channels:l,groups:c};r.length>0&&(c.size>1||c.size===1&&l.fx&&l.fy&&[...c][0][1].size>1)&&Zp(ob(e.data))===Zp(r)&&so(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isnât faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function _Ce(e,t={}){return db({...t,x:null,y:null},(i,n,s,l,c,r)=>r.getMarkState(e))}function OCe(e){const t=[];for(const i of e){let n=i.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:s,preferredAnchor:l}=n;s=/^x$/i.test(s)?uLe:/^y$/i.test(s)?YT:oLe,n=s(_Ce(i,n)),n.title=null,l===void 0&&(n.preferredAnchor=s===YT?"left":"bottom");const c=NCe(i.data,n);c.facet=i.facet,c.facetAnchor=i.facetAnchor,t.push(c)}}return t}function jCe(e,t,i){let{projection:n,x:s={},y:l={},fx:c={},fy:r={},axis:a,grid:u,facet:o={},facet:{axis:d=a,grid:b}=o,x:{axis:h=a,grid:p=h===null?null:u}=s,y:{axis:Z=a,grid:X=Z===null?null:u}=l,fx:{axis:J=d,grid:V=J===null?null:b}=c,fy:{axis:g=d,grid:I=g===null?null:b}=r}=i;(n||!ZI(s)&&!MT("x",e))&&(h=p=null),(n||!ZI(l)&&!MT("y",e))&&(Z=X=null),t.has("fx")||(J=V=null),t.has("fy")||(g=I=null),h===void 0&&(h=!hZ(e,"x")),Z===void 0&&(Z=!hZ(e,"y")),J===void 0&&(J=!hZ(e,"fx")),g===void 0&&(g=!hZ(e,"fy")),h===!0&&(h="bottom"),Z===!0&&(Z="left"),J===!0&&(J=h==="top"||h===null?"bottom":"top"),g===!0&&(g=Z==="right"||Z===null?"left":"right");const v=[];return bZ(v,I,DLe,r),mZ(v,g,OLe,"right","left",o,r),bZ(v,V,qLe,c),mZ(v,J,jLe,"top","bottom",o,c),bZ(v,X,QLe,l),mZ(v,Z,F8,"left","right",i,l),bZ(v,p,ALe,s),mZ(v,h,S8,"bottom","top",i,s),v}function mZ(e,t,i,n,s,l,c){if(!t)return;const r=ECe(t);c=PCe(r?n:t,l,c);const{line:a}=c;(i===F8||i===S8)&&a&&!Xp(a)&&e.push(zCe(UCe(c))),e.push(i(c)),r&&e.push(i({...c,anchor:s,label:null}))}function bZ(e,t,i,n){!t||Xp(t)||e.push(i($Ce(t,n)))}function ECe(e){return/^\s*both\s*$/i.test(e)}function PCe(e,t,{line:i=t.line,ticks:n,tickSize:s,tickSpacing:l,tickPadding:c,tickFormat:r,tickRotate:a,fontVariant:u,ariaLabel:o,ariaDescription:d,label:b=t.label,labelAnchor:h,labelArrow:p=t.labelArrow,labelOffset:Z}){return{anchor:e,line:i,ticks:n,tickSize:s,tickSpacing:l,tickPadding:c,tickFormat:r,tickRotate:a,fontVariant:u,ariaLabel:o,ariaDescription:d,label:b,labelAnchor:h,labelArrow:p,labelOffset:Z}}function UCe(e){const{anchor:t,line:i}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:i===!0?void 0:i}}function $Ce(e,{stroke:t=yJ(e)?e:void 0,ticks:i=QCe(e)?e:void 0,tickSpacing:n,ariaLabel:s,ariaDescription:l}){return{stroke:t,ticks:i,tickSpacing:n,ariaLabel:s,ariaDescription:l}}function QCe(e){switch(typeof e){case"number":return!0;case"string":return!yJ(e)}
318return Lo(e)||typeof(e==null?void 0:e.range)=="function"}function hZ(e,t){const i=`${t}-axis `;return e.some(n=>{var s;return(s=n.ariaLabel)==null?void 0:s.startsWith(i)})}function MT(e,t){for(const i of t)for(const n in i.channels){const{scale:s}=i.channels[n];if(s===e||s==="projection")return!0}return!1}function DCe(e,t){for(const i in e){const n=e[i],s=t[i];n.label===void 0&&s&&(n.label=s.label)}return e}function ACe({fx:e,fy:t},i){const{marginTop:n,marginRight:s,marginBottom:l,marginLeft:c,width:r,height:a}=Kw(i),u=e&&KT(e),o=t&&KT(t);return{marginTop:t?o[0]:n,marginRight:e?r-u[1]:s,marginBottom:t?a-o[1]:l,marginLeft:e?u[0]:c,inset:{marginTop:i.marginTop,marginRight:i.marginRight,marginBottom:i.marginBottom,marginLeft:i.marginLeft},width:r,height:a}}function KT(e){const t=e.domain();if(t.length===0)return[0,e.bandwidth()];let i=e(t[0]),n=e(t[t.length-1]);return n<i&&([i,n]=[n,i]),[i,n+e.bandwidth()]}const qCe=new Map([["basis",vM],["basis-closed",gM],["basis-open",IM],["bundle",_M],["bump-x",Xie],["bump-y",Jie],["cardinal",BM],["cardinal-closed",MM],["cardinal-open",KM],["catmull-rom",TM],["catmull-rom-closed",CM],["catmull-rom-open",LM],["linear",qX],["linear-closed",VM],["monotone-x",YM],["monotone-y",GM],["natural",xM],["step",JM],["step-after",XM],["step-before",WM]]);function aq(e=qX,t){if(typeof e=="function")return e;const i=qCe.get(`${e}`.toLowerCase());if(!i)throw new Error(`unknown curve: ${e}`);if(t!==void 0){if("beta"in i)return i.beta(t);if("tension"in i)return i.tension(t);if("alpha"in i)return i.alpha(t)}return i}function eTe(e=EX,t){return typeof e!="function"&&`${e}`.toLowerCase()==="auto"?EX:aq(e,t)}function EX(e){return qX(e)}function tTe(e={y:"count"},t={}){[e,t]=bq(e,t);const{x:i,y:n}=t;return mq(hq(i,t,jt),null,null,n,e,IJ(t))}function iTe(e={x:"count"},t={}){[e,t]=bq(e,t);const{x:i,y:n}=t;return mq(null,hq(n,t,jt),i,null,e,gJ(t))}function oq(e,t,i={}){if((i==null?void 0:i.interval)==null)return i;const{reduce:n=Lw}=i,s={filter:null};return i[t]!=null&&(s[t]=n),i[`${t}1`]!=null&&(s[`${t}1`]=n),i[`${t}2`]!=null&&(s[`${t}2`]=n),e(s,i)}function uq(e={}){return oq(tTe,"y",Pb(e,"x"))}function dq(e={}){return oq(iTe,"x",Pb(e,"y"))}function mq(e,t,i,n,{data:s=Sw,filter:l=OX,sort:c,reverse:r,...a}={},u={}){e=BT(e),t=BT(t),a=sTe(a,u),s=yq(s,jt),c=c==null?void 0:fq("sort",c,u),l=l==null?void 0:pq("filter",l,u),i!=null&&hm(a,"x","x1","x2")&&(i=null),n!=null&&hm(a,"y","y1","y2")&&(n=null);const[o,d]=ts(e),[b,h]=ts(e),[p,Z]=ts(t),[X,J]=ts(t),[V,g]=i!=null?[i,"x"]:n!=null?[n,"y"]:[],[I,v]=ts(V),{x:k,y:N,z:C,fill:f,stroke:w,x1:x,x2:R,y1:K,y2:B,domain:_,cumulative:j,thresholds:U,interval:$,...te}=u,[E,ie]=ts(C),[ee]=Al(f),[A]=Al(w),[le,ne]=ts(ee),[se,oe]=ts(A);return{..."z"in u&&{z:E||C},..."fill"in u&&{fill:le||f},..."stroke"in u&&{stroke:se||w},...Eb(te,(de,Je,Ie)=>{const Ye=_X(ni(de,V),Ie==null?void 0:Ie[g]),Te=ni(de,C),$e=ni(de,ee),Ve=ni(de,A),Me=kA(a,{z:Te,fill:$e,stroke:Ve}),Ee=[],ye=[],Ke=Ye&&v([]),Fe=Te&&ie([]),nt=$e&&ne([]),Qe=Ve&&oe([]),ft=e&&d([]),Gt=e&&h([]),$t=t&&Z([]),ut=t&&J([]),Ht=rTe(e,t,de);let si=0;for(const Tt of a)Tt.initialize(de);c&&c.initialize(de),l&&l.initialize(de);for(const Tt of Je){const Nt=[];for(const Gi of a)Gi.scope("facet",Tt);c&&c.scope("facet",Tt),l&&l.scope("facet",Tt);for(const[Gi,bc]of zf(Tt,Me))for(const[kt,bi]of zf(bc,Ye))for(const[Mt,ai]of Ht(bi))if(Me&&(ai.z=Gi),!(l&&!l.reduce(Mt,ai))){Nt.push(si++),ye.push(s.reduceIndex(Mt,de,ai)),Ye&&Ke.push(kt),Te&&Fe.push(Me===Te?Gi:Te[(Mt.length>0?Mt:bi)[0]]),$e&&nt.push(Me===$e?Gi:$e[(Mt.length>0?Mt:bi)[0]]),Ve&&Qe.push(Me===Ve?Gi:Ve[(Mt.length>0?Mt:bi)[0]]),ft&&(ft.push(ai.x1),Gt.push(ai.x2)),$t&&($t.push(ai.y1),ut.push(ai.y2));for(const ya of a)ya.reduce(Mt,ai);c&&c.reduce(Mt,ai)}Ee.push(Nt)}return FA(Ee,c,r),{data:ye,facets:Ee}}),...!hm(a,"x")&&(o?{x1:o,x2:b,x:BX(o,b)}:{x:k,x1:x,x2:R}),...!hm(a,"y")&&(p?{y1:p,y2:X,y:BX(p,X)}:{y:N,y1:K,y2:B}),...I&&{[g]:I},...Object.fromEntries(a.map(({name:de,output:Je})=>[de,Je]))}}function bq({cumulative:e,domain:t,thresholds:i,interval:n,...s},l){return[s,{cumulative:e,domain:t,thresholds:i,interval:n,...l}]}function hq(e,{cumulative:t,domain:i,thresholds:n,interval:s},l){return e={...k0(e)},e.domain===void 0&&(e.domain=i),e.cumulative===void 0&&(e.cumulative=t),e.thresholds===void 0&&(e.thresholds=n),e.interval===void 0&&(e.interval=s),e.value===void 0&&(e.value=l),e.thresholds=nTe(e.thresholds,e.interval),e}function BT(e){if(e==null)return;const{value:t,cumulative:i,domain:n=qs,thresholds:s}=e,l=c=>{let r=ni(c,t),a;if(ys(r)||cTe(s)){r=wi(r,bA,Float64Array);let[o,d]=typeof n=="function"?n(r):n,b=typeof s=="function"&&!bm(s)?s(r,o,d):s;typeof b=="number"&&(b=xie(o,d,b)),bm(b)&&(n===qs&&(o=b.floor(o),d=b.offset(b.floor(d))),b=b.range(o,b.offset(d))),a=b}else{r=ab(r);let[o,d]=typeof n=="function"?n(r):n,b=typeof s=="function"&&!bm(s)?s(r,o,d):s;if(typeof b=="number")if(n===qs){let h=Yie(o,d,b);if(isFinite(h))if(h>0){let p=Math.round(o/h),Z=Math.round(d/h);p*h<=o||--p,Z*h>d||++Z;let X=Z-p+1;b=new Float64Array(X);for(let J=0;J<X;++J)b[J]=(p+J)*h}else if(h<0){h=-h;let p=Math.round(o*h),Z=Math.round(d*h);p/h<=o||--p,Z/h>d||++Z;let X=Z-p+1;b=new Float64Array(X);for(let J=0;J<X;++J)b[J]=(p+J)/h}else b=[o];else b=[o]}else b=RM(o,d,b);else bm(b)&&(n===qs&&(o=b.floor(o),d=b.offset(b.floor(d))),b=b.range(o,b.offset(d)));a=b}const u=[];
318if(a.length===1)u.push([a[0],a[0]]);else for(let o=1;o<a.length;++o)u.push([a[o-1],a[o]]);return u.bin=(i<0?oTe:i>0?aTe:dH)(u,a,r),u};return l.label=xd(t),l}function nTe(e,t,i=_T){if(e===void 0)return t===void 0?i:jb(t);if(typeof e=="string"){switch(e.toLowerCase()){case"freedman-diaconis":return Uie;case"scott":return PM;case"sturges":return jie;case"auto":return _T}return Yw(e)}return e}function sTe(e,t){return wA(e,t,fq)}function fq(e,t,i){return kw(e,t,i,pq)}function pq(e,t,i){return Fw(e,t,i,yq)}function yq(e,t){return XJ(e,t,lTe)}function lTe(e){switch(`${e}`.toLowerCase()){case"x":return uTe;case"x1":return mTe;case"x2":return bTe;case"y":return dTe;case"y1":return hTe;case"y2":return fTe;case"z":return SA}throw new Error(`invalid bin reduce: ${e}`)}function _T(e,t,i){return Math.min(200,PM(e,t,i))}function cTe(e){return Tke(e)||Lo(e)&&ys(e)}function rTe(e,t,i){const n=e==null?void 0:e(i),s=t==null?void 0:t(i);return n&&s?function*(l){const c=n.bin(l);for(const[r,[a,u]]of n.entries()){const o=s.bin(c[r]);for(const[d,[b,h]]of s.entries())yield[o[d],{data:i,x1:a,y1:b,x2:u,y2:h}]}}:n?function*(l){const c=n.bin(l);for(const[r,[a,u]]of n.entries())yield[c[r],{data:i,x1:a,x2:u}]}:function*(l){const c=s.bin(l);for(const[r,[a,u]]of s.entries())yield[c[r],{data:i,y1:a,y2:u}]}}function dH(e,t,i){return t=ab(t),n=>{var l;const s=e.map(()=>[]);for(const c of n)(l=s[Nf(t,i[c])-1])==null||l.push(c);return s}}function aTe(e,t,i){const n=dH(e,t,i);return s=>{const l=n(s);for(let c=1,r=l.length;c<r;++c){const a=l[c-1],u=l[c];for(const o of a)u.push(o)}return l}}function oTe(e,t,i){const n=dH(e,t,i);return s=>{const l=n(s);for(let c=l.length-2;c>=0;--c){const r=l[c+1],a=l[c];for(const u of r)a.push(u)}return l}}function Zq(e,t){const i=(+e+ +t)/2;return e instanceof Date?new Date(i):i}const uTe={reduceIndex(e,t,{x1:i,x2:n}){return Zq(i,n)}},dTe={reduceIndex(e,t,{y1:i,y2:n}){return Zq(i,n)}},mTe={reduceIndex(e,t,{x1:i}){return i}},bTe={reduceIndex(e,t,{x2:i}){return i}},hTe={reduceIndex(e,t,{y1:i}){return i}},fTe={reduceIndex(e,t,{y2:i}){return i}},pTe={ariaLabel:"area",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1};class Wq extends Dn{constructor(t,i={}){const{x1:n,y1:s,x2:l,y2:c,z:r,curve:a,tension:u}=i;super(t,{x1:{value:n,scale:"x"},y1:{value:s,scale:"y"},x2:{value:l,scale:"x",optional:!0},y2:{value:c,scale:"y",optional:!0},z:{value:fJ(i),optional:!0}},i,pTe),this.z=r,this.curve=aq(a,u)}filter(t){return t}render(t,i,n,s,l){const{x1:c,y1:r,x2:a=c,y2:u=r}=n;return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,i,0,0).call(o=>o.selectAll().data(l8(t,[c,r,a,u],this,n)).enter().append("path").call(Zs,this).call(s8,this,n).attr("d",TI().curve(this.curve).defined(d=>d>=0).x0(d=>c[d]).y0(d=>r[d]).x1(d=>a[d]).y1(d=>u[d]))).node()}}function yTe(e,t){const{y:i=Dl,...n}=dq(t);return new Wq(e,lH(nH({...n,y1:i,y2:void 0},i===Dl?"x2":"x")))}function ZTe(e,t){const{x:i=Dl,...n}=uq(t);return new Wq(e,cH(sH({...n,x1:i,x2:void 0},i===Dl?"y2":"y")))}const WTe={ariaLabel:"bar"};class Xq extends Dn{constructor(t,i,n={},s=WTe){super(t,i,n,s),rH(this,n),aH(this,n)}render(t,i,n,s,l){const{rx:c,ry:r,rx1y1:a,rx1y2:u,rx2y1:o,rx2y2:d}=this,b=this._x(i,n,s),h=this._y(i,n,s),p=this._width(i,n,s),Z=this._height(i,n,s);return Hi("svg:g",l).call(Wl,this,s,l).call(this._transform,this,i).call(X=>X.selectAll().data(t).enter().call(a||u||o||d?J=>J.append("path").call(Zs,this).call(oH,b,h,OT(b,p),OT(h,Z),this).call(ql,this,n):J=>J.append("rect").call(Zs,this).attr("x",b).attr("width",p).attr("y",h).attr("height",Z).call(et,"rx",c).call(et,"ry",r).call(ql,this,n))).node()}_x(t,{x:i},{marginLeft:n}){const{insetLeft:s}=this;return i?l=>i[l]+s:n+s}_y(t,{y:i},{marginTop:n}){const{insetTop:s}=this;return i?l=>i[l]+s:n+s}_width({x:t},{x:i},{marginRight:n,marginLeft:s,width:l}){const{insetLeft:c,insetRight:r}=this,a=i&&t?t.bandwidth():l-n-s;return Math.max(0,a-c-r)}_height({y:t},{y:i},{marginTop:n,marginBottom:s,height:l}){const{insetTop:c,insetBottom:r}=this,a=i&&t?t.bandwidth():l-n-s;return Math.max(0,a-c-r)}}function OT(e,t){return typeof e=="function"&&typeof t=="function"?i=>e(i)+t(i):typeof e=="function"?i=>e(i)+t:typeof t=="function"?i=>e+t(i):e+t}class XTe extends Xq{constructor(t,i={},n){const{x1:s,x2:l,y:c}=i;super(t,{x1:{value:s,scale:"x"},x2:{value:l,scale:"x"},y:{value:c,scale:"y",type:"band",optional:!0}},i,n)}_transform(t,i,{x:n}){t.call(Js,i,{x:n},0,0)}_x({x:t},{x1:i,x2:n},{marginLeft:s}){const{insetLeft:l}=this;return sr(t)?s+l:c=>Math.min(i[c],n[c])+l}_width({x:t},{x1:i,x2:n},{marginRight:s,marginLeft:l,width:c}){const{insetLeft:r,insetRight:a}=this;return sr(t)?c-s-l-r-a:u=>Math.max(0,Math.abs(n[u]-i[u])-r-a)}}class JTe extends Xq{constructor(t,i={},n){const{x:s,y1:l,y2:c}=i;super(t,{y1:{value:l,scale:"y"},y2:{value:c,scale:"y"},x:{value:s,scale:"x",type:"band",optional:!0}},i,n)}_transform(t,i,{y:n}){t.call(Js,i,{y:n},0,0)}_y({y:t},{y1:i,y2:n},{marginTop:s}){const{insetTop:l}=this;return sr(t)?s+l:c=>Math.min(i[c],n[c])+l}_height({y:t},{y1:i,y2:n},{marginTop:s,marginBottom:l,height:c}){const{insetTop:r,insetBottom:a}=this;return sr(t)?c-s-l-r-a:u=>Math.max(0,Math.abs(n[u]-i[u])-r-a)}}function Jq(e,t={}){return bJ(t)||(t={...t,y:Dl,x2:jt}),new XTe(e,lH(y8(nH(t))))}function xq(e,t={}){return bJ(t)||(t={...t,x:Dl,y2:jt}),new JTe(e,cH(Z8(sH(t))))}const xTe={ariaLabel:"dot",fill:"none",stroke:"currentColor",strokeWidth:1.5};function YTe(e){return e.sort===void 0&&e.reverse===void 0?sFe({channel:"-r"},e):e}class GTe extends Dn{constructor(t,i={}){const{x:n,y:s,r:l,rotate:c,symbol:r=I9,frameAnchor:a}=i,[u,o]=Kn(c,0),[d,b]=iFe(r),[h,p]=Kn(l,d==null?3:4.5);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:s,scale:"y",optional:!0},r:{value:h,scale:"r",filter:dJ,optional:!0},rotate:{value:u,optional:!0},symbol:{value:d,scale:"auto",optional:!0}},YTe(i),xTe),this.r=p,this.rotate=o,this.symbol=b,this.frameAnchor=ZJ(a);const{channels:Z}=this,{symbol:X}=Z;if(X){const{fill:J,stroke:V}=Z;X.hint={fill:J?J.value===X.value?"color":"currentColor":this.fill??"currentColor",stroke:V?V.value===X.value?"color":"currentColor":this.stroke??"none"}}}render(t,i,n,s,l){const{x:c,y:r}=i,{x:a,y:u,r:o,rotate:d,symbol:b}=n,{r:h,rotate:p,symbol:Z}=this,[X,J]=M0(this,s),V=Z===I9,g=o?void 0:h*h*Math.PI;return Xw(h)&&(t=[]),Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,{x:a&&c,y:u&&r}).call(I=>I.selectAll().data(t).enter().append(V?"circle":"path").call(Zs,this).call(V?v=>{v.attr("cx",a?k=>a[k]:X).attr("cy",u?k=>u[k]:J).attr("r",o?k=>o[k]:h)}:v=>{v.attr("transform",Dw`translate(${a?k=>a[k]:X},${u?k=>u[k]:J})${d?k=>` rotate(${d[k]})`:p?` rotate(${p})`:""}`).attr("d",o&&b?k=>{const N=mu();return b[k].draw(N,o[k]*o[k]*Math.PI),N}:o?k=>{const N=mu();return Z.draw(N,o[k]*o[k]*Math.PI),N}:b?k=>{const N=mu();return b[k].draw(N,g),N}:(()=>{const k=mu();return Z.draw(k,g),k})())}).call(ql,this,n)).node()}}function fm(e,{x:t,y:i,...n}={}){return n.frameAnchor===void 0&&([t,i]=gw(t,i)),new GTe(e,{...n,x:t,y:i})}const VTe={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1};class Yq extends Dn{constructor(t,i={}){const{x:n,y:s,z:l,curve:c,tension:r}=i;super(t,{x:{value:n,scale:"x"},y:{value:s,scale:"y"},z:{value:fJ(i),optional:!0}},i,VTe),this.z=l,this.curve=eTe(c,r),VJ(this,i)}filter(t){return t}project(t,i,n){this.curve!==EX&&super.project(t,i,n)}render(t,i,n,s,l){const{x:c,y:r}=n,{curve:a}=this;return Hi("svg:g",l).call(Wl,this,s,l).call(Js,this,i).call(u=>u.selectAll().data(l8(t,[c,r],this,n)).enter().append("path").call(Zs,this).call(s8,this,n).call(fLe,this,n,l).attr("d",a===EX&&l.projection?ITe(l.path(),c,r):zM().curve(a).defined(o=>o>=0).x(o=>c[o]).y(o=>r[o]))).node()}}function ITe(e,t,i){return t=ab(t),i=ab(i),n=>{let s=[];const l=[s];for(const c of n)c===-1?(s=[],l.push(s)):s.push([t[c],i[c]]);return e({type:"MultiLineString",coordinates:l})}}function gTe(e,{x:t=jt,y:i=Dl,...n}={}){return new Yq(e,dq({...n,x:t,y:i}))}function vTe(e,{x:t=Dl,y:i=jt,...n}={}
318){return new Yq(e,uq({...n,x:t,y:i}))}function Gq(e={},t={}){const i=fJ(t),n=Object.entries(e).map(([s,l])=>{const c=WA(s,t);if(c==null)throw new Error(`missing channel: ${s}`);const[r,a]=Wp(c);return{key:s,input:c,output:r,setOutput:a,map:zTe(l)}});return{...Eb(t,(s,l)=>{const c=ni(s,i),r=n.map(({input:u})=>ni(s,u)),a=n.map(({setOutput:u})=>u(new Array(s.length)));for(const u of l)for(const o of c?Vp(u,d=>c[d]).values():[u])n.forEach(({map:d},b)=>d.mapIndex(o,r[b],a[b]));return{data:s,facets:l}}),...Object.fromEntries(n.map(({key:s,output:l})=>[s,l]))}}function zTe(e){if(e==null)throw new Error("missing map");if(typeof e.mapIndex=="function")return e;if(typeof e.map=="function"&&ha(e))return wTe(e);if(typeof e=="function")return V9(Fke(e));switch(`${e}`.toLowerCase()){case"cumsum":return NTe;case"rank":return V9((t,i)=>QM(t,n=>i[n]));case"quantile":return V9((t,i)=>HTe(t,n=>i[n]))}throw new Error(`invalid map: ${e}`)}function wTe(e){return console.warn("deprecated map interface; implement mapIndex instead."),{mapIndex:e.map.bind(e)}}function HTe(e,t){const i=i2(e,t)-1;return QM(e,t).map(n=>n/i)}function V9(e){return{mapIndex(t,i,n){const s=e(t,i);if(s.length!==t.length)throw new Error("map function returned a mismatched length");for(let l=0,c=t.length;l<c;++l)n[t[l]]=s[l]}}}const NTe={mapIndex(e,t,i){let n=0;for(const s of e)i[s]=n+=t[s]}},RTe={ariaLabel:"tick",fill:null,stroke:"currentColor"};class Vq extends Dn{constructor(t,i,n){super(t,i,n,RTe),VJ(this,n)}render(t,i,n,s,l){return Hi("svg:g",l).call(Wl,this,s,l).call(this._transform,this,i).call(c=>c.selectAll().data(t).enter().append("line").call(Zs,this).attr("x1",this._x1(i,n,s)).attr("x2",this._x2(i,n,s)).attr("y1",this._y1(i,n,s)).attr("y2",this._y2(i,n,s)).call(ql,this,n).call(Uw,this,n,l)).node()}}class kTe extends Vq{constructor(t,i={}){const{x:n,y:s,inset:l=0,insetTop:c=l,insetBottom:r=l}=i;super(t,{x:{value:n,scale:"x"},y:{value:s,scale:"y",type:"band",optional:!0}},i),this.insetTop=vi(c),this.insetBottom=vi(r)}_transform(t,i,{x:n}){t.call(Js,i,{x:n},Bn,0)}_x1(t,{x:i}){return n=>i[n]}_x2(t,{x:i}){return n=>i[n]}_y1({y:t},{y:i},{marginTop:n}){const{insetTop:s}=this;return i&&t?l=>i[l]+s:n+s}_y2({y:t},{y:i},{height:n,marginBottom:s}){const{insetBottom:l}=this;return i&&t?c=>i[c]+t.bandwidth()-l:n-s-l}}class FTe extends Vq{constructor(t,i={}){const{x:n,y:s,inset:l=0,insetRight:c=l,insetLeft:r=l}=i;super(t,{y:{value:s,scale:"y"},x:{value:n,scale:"x",type:"band",optional:!0}},i),this.insetRight=vi(c),this.insetLeft=vi(r)}_transform(t,i,{y:n}){t.call(Js,i,{y:n},0,Bn)}_x1({x:t},{x:i},{marginLeft:n}){const{insetLeft:s}=this;return i&&t?l=>i[l]+s:n+s}_x2({x:t},{x:i},{width:n,marginRight:s}){const{insetRight:l}=this;return i&&t?c=>i[c]+t.bandwidth()-l:n-s-l}_y1(t,{y:i}){return n=>i[n]}_y2(t,{y:i}){return n=>i[n]}}function Iq(e,{x:t=jt,...i}={}){return new kTe(e,{...i,x:t})}function gq(e,{y:t=jt,...i}={}){return new FTe(e,{...i,y:t})}function STe(e,{x:t=jt,y:i=null,r:n,fill:s="#ccc",fillOpacity:l,stroke:c="currentColor",strokeOpacity:r,strokeWidth:a=2,sort:u,...o}={}){const d=i!=null?aFe:zA;return GJ(Qw(e,d({x1:mH,x2:bH},{x:t,y:i,stroke:c,strokeOpacity:r,...o})),Jq(e,d({x1:"p25",x2:"p75"},{x:t,y:i,fill:s,fillOpacity:l,...o})),Iq(e,d({x:"p50"},{x:t,y:i,stroke:c,strokeOpacity:r,strokeWidth:a,sort:u,...o})),fm(e,Gq({x:vq},{x:t,y:i,z:i,r:n,stroke:c,strokeOpacity:r,...o})))}function LTe(e,{y:t=jt,x:i=null,r:n,fill:s="#ccc",fillOpacity:l,stroke:c="currentColor",strokeOpacity:r,strokeWidth:a=2,sort:u,...o}={}){const d=i!=null?rFe:zA;return GJ($w(e,d({y1:mH,y2:bH},{x:i,y:t,stroke:c,strokeOpacity:r,...o})),xq(e,d({y1:"p25",y2:"p75"},{x:i,y:t,fill:s,fillOpacity:l,...o})),gq(e,d({y:"p50"},{x:i,y:t,stroke:c,strokeOpacity:r,strokeWidth:a,sort:u,...o})),fm(e,Gq({y:vq},{x:i,y:t,z:i,r:n,stroke:c,strokeOpacity:r,...o})))}function vq(e){const t=mH(e),i=bH(e);return e.map(n=>n<t||n>i?n:NaN)}function mH(e){const t=zq(e)*2.5-wq(e)*1.5;return $r(e,i=>i>=t?i:NaN)}function bH(e){const t=wq(e)*2.5-zq(e)*1.5;return _n(e,i=>i<=t?i:NaN)}function zq(e){return Pc(e,.25)}function wq(e){return Pc(e,.75)}Dn.prototype.plot=function({marks:e=[],...t}={}){return cq({...t,marks:[...e,this]})};
318function CTe(e){var w,x,R,K,B,_,j,U,$,te,E,ie,ee,A,le,ne,se,oe,de,Je,Ie,Ye,Te,$e,Ve,Me,Ee;const t=((w=e==null?void 0:e.data)==null?void 0:w.values)||[];let i=e.mark;typeof i=="object"&&i.type&&(i=i.type),console.log({encoding:e.encoding,markType:i});const n=e.encoding||{},s=((x=n.x)==null?void 0:x.field)||null,l=((R=n.y)==null?void 0:R.field)||null,c=((K=n.column)==null?void 0:K.field)||null,r=((B=n.row)==null?void 0:B.field)||null,a=((_=n.color)==null?void 0:_.field)||null,u=((j=n.size)==null?void 0:j.field)||null,o=((U=n.shape)==null?void 0:U.field)||null,d=(($=n.opacity)==null?void 0:$.field)||null,b=((te=n.opacity)==null?void 0:te.value)??null,h=n.tooltip;console.log({xField:s,yField:l,xFacetField:c,yFacetField:r,colorField:a,sizeField:u,shapeField:o,opacityField:d,opacityValue:b,tooltipEnc:h});const p=(ye,Ke)=>{var Gt,$t,ut,Ht,si,Tt,Nt,Gi;const Fe=((Gt=Ke.x)==null?void 0:Gt.type)==="quantitative",nt=(($t=Ke.y)==null?void 0:$t.type)==="quantitative";(ut=Ke.x)==null||ut.type,(Ht=Ke.y)==null||Ht.type;const Qe={bar:{X:Jq,Y:xq},area:{X:yTe,Y:ZTe},line:{X:gTe,Y:vTe},tick:{X:Iq,Y:gq},rect:{X:GCe,Y:VCe},rule:{X:$w,Y:Qw},boxplot:{X:STe,Y:LTe}};return Qe[ye]?Fe&&!nt?(console.log(`Using X-direction mark for ${ye}: X is quantitative (${(si=Ke.x)==null?void 0:si.type}), Y is ${(Tt=Ke.y)==null?void 0:Tt.type}`),{markFunction:Qe[ye].X,stackAxis:"X"}):nt&&!Fe?(console.log(`Using Y-direction mark for ${ye}: Y is quantitative (${(Nt=Ke.y)==null?void 0:Nt.type}), X is ${(Gi=Ke.x)==null?void 0:Gi.type}`),{markFunction:Qe[ye].Y,stackAxis:"Y"}):Fe&&nt?(console.log(`Both axes quantitative for ${ye}, defaulting to Y-direction`),{markFunction:Qe[ye].Y,stackAxis:"Y"}):(console.log(`Neither axis quantitative for ${ye}, defaulting to Y-direction`),{markFunction:Qe[ye].Y,stackAxis:"Y"}):{markFunction:{point:fm,circle:fm,dot:fm,text:qw}[ye]||fm,stackAxis:"Y"}},Z=(ye,Ke,Fe)=>{const{xField:nt,yField:Qe,colorField:ft,sizeField:Gt,shapeField:$t,opacityField:ut,opacityValue:Ht,xFacetField:si,yFacetField:Tt}=Fe,Nt={x:nt||void 0,y:Qe||void 0,fx:si||void 0,fy:Tt||void 0};switch(ut?Nt.opacity=ut:Ht!=null&&(Nt.opacity=Ht),ye){case"bar":case"area":case"rect":case"boxplot":Nt.fill=ft||void 0;break;case"line":case"tick":case"rule":Nt.stroke=ft||void 0;break;case"point":Nt.stroke=ft||void 0,Nt.fill="none",Nt.r=Gt||void 0,Nt.symbol=$t||void 0;break;case"circle":case"dot":Nt.fill=ft||void 0,Nt.stroke=void 0,Nt.r=Gt||void 0,Nt.symbol=$t||void 0;break;case"text":Nt.text=Qe||nt||void 0,Nt.fill=ft||void 0;break}return Nt},X=(ye,Ke)=>{if(!V||!a)return Ke;const Fe={};return ye==="normalize"?Fe.offset="normalize":ye==="center"&&(Fe.offset="center"),console.log("Stack options for mark:",{stackMode:ye,stackOptions:Fe}),Fe},J=(ye,Ke,Fe,nt)=>{if(!V||!a)return ye(Ke,Fe);const Qe=[...Ke].sort((ut,Ht)=>{var Nt,Gi;let si=0,Tt=nt==="X"?l:s;return Tt&&((nt==="X"?(Nt=n.y)==null?void 0:Nt.type:(Gi=n.x)==null?void 0:Gi.type)==="temporal"?si=new Date(ut[Tt]).getTime()-new Date(Ht[Tt]).getTime():ut[Tt]<Ht[Tt]?si=-1:ut[Tt]>Ht[Tt]?si=1:si=0),si!==0?si:a&&ut[a]<Ht[a]?-1:1}),ft=X(g,Fe),Gt=nt==="X"?D8:A8,$t={...Fe,z:a||void 0};return console.log(`Applying ${nt}-direction stacking:`,{stackFunction:Gt.name,stackOptions:ft,dataLength:Qe.length,primaryField:nt==="X"?l:s,colorField:a}),ye(Qe,Gt(ft,$t))};let V=!1,g=null;if(((E=n.x)==null?void 0:E.stack)!==null&&((ie=n.x)==null?void 0:ie.stack)!==!1&&((ee=n.x)==null?void 0:ee.type)==="quantitative"&&(V=!0,g=n.x.stack),((A=n.y)==null?void 0:A.stack)!==null&&((le=n.y)==null?void 0:le.stack)!==!1&&((ne=n.y)==null?void 0:ne.type)==="quantitative"&&(V=!0,g=n.y.stack),((se=n.theta)==null?void 0:se.stack)!==null&&((oe=n.theta)==null?void 0:oe.stack)!==!1&&((de=n.theta)==null?void 0:de.type)==="quantitative"&&(V=!0,g=n.theta.stack),((Je=n.radius)==null?void 0:Je.stack)!==null&&((Ie=n.radius)==null?void 0:Ie.stack)!==!1&&((Ye=n.radius)==null?void 0:Ye.type)==="quantitative"&&(V=!0,g=n.radius.stack),Array.isArray(e.transform))for(const ye of e.transform)ye.stack&&(V=!0);let k=((ye,Ke,Fe,nt)=>{var Ht,si,Tt,Nt,Gi,bc;const{colorField:Qe}=nt,{markFunction:ft,stackAxis:Gt}=p(ye,Fe),$t=Z(ye,Fe,nt),ut=V||Qe&&["bar","area"].includes(ye)&&V!==!1;if(console.log(`Creating ${ye} mark:`,{markFunction:ft.name,stackAxis:Gt,shouldStack:ut,stacked:V,stackMode:g,colorField:Qe,hasColorField:!!Qe,isStackableMarkType:["bar","area"].includes(ye),xType:(Ht=Fe.x)==null?void 0:Ht.type,yType:(si=Fe.y)==null?void 0:si.type}),ut&&Qe)return J(ft,Ke,$t,Gt);if(Qe&&["line","area"].includes(ye)){let kt=Ke;if(ye==="line"){const Mt=((Tt=Fe.x)==null?void 0:Tt.type)==="quantitative",ai=((Nt=Fe.y)==null?void 0:Nt.type)==="temporal",ya=((Gi=Fe.x)==null?void 0:Gi.type)==="temporal";if((bc=Fe.y)==null||bc.type,kt=[...Ke].sort((xs,qt)=>{let gn=null;if(ya?gn=s:ai&&(gn=l),gn){const An=new Date(xs[gn]).getTime()-new Date(qt[gn]).getTime();if(An!==0)return An}return Qe&&xs[Qe]<qt[Qe]?-1:1}),console.log("Sorted line chart data:",{temporalField:ya?s:l,xIsQuantitative:Mt,yIsTemporal:ai,originalLength:Ke.length,sortedLength:kt.length,sampleData:kt.slice(0,3)}),Mt&&ai){console.log('Special case: X quantitative, Y temporal - using curve: "linear" for better connection');const xs={...$t,z:Qe||void 0,curve:"linear"};return ft(kt,xs)}}const bi={...$t,z:Qe||void 0};return ft(kt,bi)}else return ft(Ke,$t)})(i,t,n,{xField:s,yField:l,colorField:a,sizeField:u,shapeField:o,opacityField:d,opacityValue:b,xFacetField:c,yFacetField:r}),N;h&&(Array.isArray(h)?N=ye=>h.map(Ke=>`${Ke.field}: ${ye[Ke.field]}`).join(", "):h.field&&(N=ye=>`${h.field}: ${ye[h.field]}`)),N&&(k.title=N);const C=ye=>{const Ke=n[ye],Fe=n[ye==="x"?"y":"x"];return i==="bar"&&(Ke==null?void 0:Ke.type)==="temporal"&&(Fe==null?void 0:Fe.type)==="quantitative"||i==="tick"&&(Ke==null?void 0:Ke.type)==="temporal"};return{marks:[k],x:{label:((Te=n.x)==null?void 0:Te.title)||void 0,type:(($e=n.x)==null?void 0:$e.type)==="temporal"?C("x")?"band":"utc":void 0},y:{label:((Ve=n.y)==null?void 0:Ve.title)||void 0,type:((Me=n.y)==null?void 0:Me.type)==="temporal"?C("y")?"band":"utc":void 0},color:{label:((Ee=n.color)==null?void 0:Ee.title)||void 0,legend:a?!0:void 0}}}function TTe({rows:e,columns:t,color:i,opacity:n,size:s,shape:l,theta:c,radius:r,text:a,details:u=[],interactiveScale:o,dataSource:d,layoutMode:b,width:h,height:p,defaultAggregated:Z,geomType:X,stack:J,scales:V,mediaTheme:g,vegaConfig:I,displayOffset:v}){const k=n_({rows:e,columns:t,color:i,opacity:n,size:s,shape:l,theta:c,radius:r,text:a,details:u,interactiveScale:o,dataSource:d,layoutMode:b,width:h,height:p,defaultAggregated:Z,geomType:X,stack:J,scales:V,mediaTheme:g,vegaConfig:I,displayOffset:v});console.log({vlSpecs:k});const N=k.map(C=>CTe(C));return console.log({plotSpecs:N}),N}const MTe=SM.div` 319 display: grid; 320 grid-template-columns: repeat(${e=>e.$colSize}, auto); 321 grid-template-rows: repeat(${e=>e.$rowSize}, 1fr); 322`,KTe=new Ob;new Ob;const BTe=Q.forwardRef(function(t,i){const{name:n,rows:s=[],columns:l=[],dataSource:c=[],defaultAggregate:r=!0,stack:a="stack",geomType:u,color:o,opacity:d,size:b,theta:h,radius:p,shape:Z,text:X,onGeomClick:J,showActions:V,interactiveScale:g,layoutMode:I,width:v,height:k,details:N=[],locale:C="en-US",useSvg:f,scales:w,scale:x,displayOffset:R,vegaConfig:K,onReportSpec:B}=t,_=Q.useContext(Rp),{reportError:j}=qD(),U=Q.useMemo(()=>s.filter(Ve=>r||Ve.aggName!=="expr"),[s,r]),$=Q.useMemo(()=>l.filter(Ve=>r||Ve.aggName!=="expr"),[l,r]),te=Q.useMemo(()=>U.filter(Ve=>Ve.analyticType==="dimension"),[U]),E=Q.useMemo(()=>$.filter(Ve=>Ve.analyticType==="dimension"),[$]),ie=Q.useMemo(()=>U.filter(Ve=>Ve.analyticType==="measure"),[U]),ee=Q.useMemo(()=>$.filter(Ve=>Ve.analyticType==="measure"),[$]),A=Q.useMemo(()=>ie.length===0?te.slice(-1):ie,[te,ie]),le=Q.useMemo(()=>ee.length===0?E.slice(-1):ee,[E,ee]),[ne,se]=Q.useState([]),oe=Q.useRef(null);Q.useEffect(()=>{const Ve=Math.max(1,A.length*le.length);se(Me=>Ve===Me.length?Me:new Array(Ve).fill(null).map((Ee,ye)=>Me[ye]||re.createRef()))},[A,le]);const{width:de,height:Je,ref:Ie}=eA(),Ye=Q.useMemo(()=>I==="auto"?{w:0,h:0}:I==="full"&&de&&Je?{w:de,h:Je}:{w:v,h:k},[I,v,k,de,Je]),Te=Q.useMemo(()=>{let Ve=[];if(A.length===0&&le.length===0)return[];const Me=A.length*le.length;return console.log({count:Me,rowRepeatFields:A,colRepeatFields:le}),Ve=TTe({columns:$,dataSource:c,defaultAggregated:r,geomType:u,height:Ye.h??300,interactiveScale:g,layoutMode:I,mediaTheme:_,rows:U,stack:a,width:Ye.w??400,scales:w,color:o,details:N,opacity:d,radius:p,shape:Z,size:b,text:X,theta:h,vegaConfig:K,displayOffset:R}),console.log({specsArr:Ve}),Ve},[t,A,le]);Q.useEffect(()=>(B&&B(JSON.stringify(Te,null,2)),()=>{B==null||B("")}),[Te]);const $e=Q.useRef([]);return Q.useEffect(()=>($e.current.forEach(Ve=>{Ve.canvas&&Ve.canvas.parentNode&&Ve.canvas.parentNode.removeChild(Ve.canvas)}),$e.current=[],Te.forEach((Ve,Me)=>{var Ke;const Ee=(Ke=ne[Me])==null?void 0:Ke.current;if(!Ee)return;Ee.innerHTML="";const ye=cq({...Ve,width:I==="auto"?void 0:(Ye.w??400)/Math.max(1,le.length),height:I==="auto"?void 0:(Ye.h??300)/Math.max(1,A.length)});Ee.appendChild(ye),$e.current.push({w:ye.clientWidth,h:ye.clientHeight,x:Me%Math.max(1,le.length),y:Math.floor(Me/Math.max(1,le.length)),view:null,canvas:ye,innerWidth:ye.clientWidth,innerHeight:ye.clientHeight}),ye.addEventListener("pointerdown",Fe=>{KTe.next(Fe),J==null||J(null,Fe)}),E9(()=>{I!=="auto"||f||bI.test({width:ye.clientWidth||1,height:ye.clientHeight||1})||j("canvas exceed max size",cf.canvasExceedSize)})}),()=>{$e.current.forEach(Ve=>{Ve.canvas&&Ve.canvas.parentNode&&Ve.canvas.parentNode.removeChild(Ve.canvas)}),$e.current=[]}
322),[Te,ne,Ye]),re.useImperativeHandle(i,()=>({getSVGData:async()=>{const Ve=[];return $e.current.forEach(Me=>{var Ee,ye;if(Me.canvas instanceof SVGSVGElement)Ve.push(Me.canvas.outerHTML);else if((ye=(Ee=Me.canvas)==null?void 0:Ee.querySelector)!=null&&ye.call(Ee,"svg")){const Ke=Me.canvas.querySelector("svg");Ke&&Ve.push(Ke.outerHTML)}}),Ve},getCanvasData:async()=>{const Ve=[];return $e.current.forEach(Me=>{var ye,Ke;const Ee=(Ke=(ye=Me.canvas)==null?void 0:ye.querySelector)==null?void 0:Ke.call(ye,"canvas");Ee&&Ve.push(Ee.toDataURL())}),Ve},downloadSVG:async Ve=>{var Ee;return await((Ee=i.current)==null?void 0:Ee.getSVGData())},downloadPNG:async Ve=>{var Ee;return await((Ee=i.current)==null?void 0:Ee.getCanvasData())}}),[]),re.createElement("div",{className:I==="auto"?"w-fit h-fit relative":"w-full h-full relative",style:{overflow:I==="auto"?"visible":"hidden"}},re.createElement("div",{ref:Ie,className:"inset-0 absolute"}),re.createElement(MTe,{style:{...I==="auto"?{}:{width:"100%",height:"100%"}},$rowSize:Math.max(A.length,1),$colSize:Math.max(le.length,1),ref:oe},ne.map((Ve,Me)=>re.createElement("div",{key:Me,ref:Ve,className:I==="auto"?"":"overflow-hidden"}))))}),_Te=Q.forwardRef(function({name:e,layout:t,data:i,draggableFieldState:n,visualConfig:s,onGeomClick:l,onChartResize:c,locale:r,onReportSpec:a,vizThemeConfig:u,scales:o,disableCollapse:d},b){const{geoms:h,defaultAggregated:p,coordSystem:Z,timezoneDisplayOffset:X}=s,{interactiveScale:J,stack:V,showActions:g,size:I,format:v,background:k,zeroScale:N,resolve:C,useSvg:f,primaryColor:w,colorPalette:x,scale:R}=t,K=n.rows,B=n.columns,_=n.color,j=n.opacity,U=n.shape,$=n.theta,te=n.radius,E=n.size,ie=n.details,ee=n.text,A=v,le=h[0]==="table",ne=I.mode==="fixed"&&!!c,se=Q.useContext(Rp),oe=Q.useContext(tB),de=ere({vizThemeConfig:u,mediaTheme:se,primaryColor:w,colorPalette:x}),Je=Q.useMemo(()=>{const Ye={...de,background:Ble(oe[se].background),customFormatTypes:!0};return A.normalizedNumberFormat&&A.normalizedNumberFormat.length>0&&(Ye.normalizedNumberFormat=A.normalizedNumberFormat),A.numberFormat&&A.numberFormat.length>0&&(Ye.numberFormat=A.numberFormat),A.timeFormat&&A.timeFormat.length>0&&(Ye.timeFormat=A.timeFormat),Ye.scale||(Ye.scale={}),Ye.scale.zero=!!N,Ye.resolve=C,k&&(Ye.background=k),Ye},[de,se,N,C,k,A.normalizedNumberFormat,A.numberFormat,A.timeFormat]);if(le)return re.createElement(poe,{data:i,draggableFieldState:n,visualConfig:s,layout:t,vizThemeConfig:u,disableCollapse:d});const Ie=Z==="geographic";return re.createElement(Jae,{className:ne?"border-primary border-2 max-h-screen max-w-[100vw]":"max-h-screen max-w-[100vw]",style:{padding:"12px"},onResizeStop:(Ye,Te,$e,Ve)=>{c==null||c(I.width+Ve.width,I.height+Ve.height)},enable:ne?void 0:{top:!1,right:!1,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},size:I.mode==="fixed"?{width:I.width+"px",height:I.height+"px"}:I.mode==="full"?{width:"100%",height:"100%"}:Ie?{width:mae+"px",height:kB+"px"}:{width:"auto",height:"auto"}},Ie&&re.createElement(FB,{name:e,data:i,draggableFieldState:n,visualConfig:s,visualLayout:t,vegaConfig:Je,scales:o,scale:R}),!Ie&&(!t.renderer||t.renderer==="vega-lite")&&re.createElement(Xke,{name:e,vegaConfig:Je,layoutMode:I.mode,interactiveScale:J,geomType:h[0],defaultAggregate:p,stack:V,dataSource:i,rows:K,columns:B,color:_[0],theta:$[0],radius:te[0],shape:U[0],opacity:j[0],size:E[0],details:ie,text:ee[0],showActions:g,width:I.width-12*4,height:I.height-12*4,ref:b,onGeomClick:l,locale:r,useSvg:f,scales:o,scale:R,onReportSpec:a,displayOffset:X}),!Ie&&t.renderer==="observable-plot"&&re.createElement(BTe,{name:e,vegaConfig:Je,layoutMode:I.mode,interactiveScale:J,geomType:h[0],defaultAggregate:p,stack:V,dataSource:i,rows:K,columns:B,color:_[0],theta:$[0],radius:te[0],shape:U[0],opacity:j[0],size:E[0],details:ie,text:ee[0],showActions:g,width:I.width-12*4,height:I.height-12*4,ref:b,onGeomClick:l,locale:r,useSvg:f,scales:o,scale:R,onReportSpec:a,displayOffset:X}))}),OTe=e=>{const{allFields:t,viewDimensions:i,viewMeasures:n,filters:s,defaultAggregated:l,sort:c,limit:r,computationFunction:a,folds:u,timezoneDisplayOffset:o}=e,[d,b]=Q.useState(!1),h=Q.useRef(0),p=Q.useMemo(()=>$B(s,t,i,n,l,c,u,r>0?r:void 0,o),[s,t,i,n,l,c,u,r]),[Z,X]=Q.useState([]),[J,V]=Q.useState([]),g=Lp();Q.useEffect(()=>{var k;const v=++h.current;(k=g.current)==null||k.updateRenderStatus("computing"),b(!0),QB(a,p,r>0?r:void 0).then(N=>PB(N,l,t,n,i,u)).then(N=>{var C;v===h.current&&((C=g.current)==null||C.updateRenderStatus("rendering"),lo.unstable_batchedUpdates(()=>{b(!1),X(N),V(p)}))}).catch(N=>{var C;v===h.current&&((C=g.current)==null||C.updateRenderStatus("error"),console.error(N),lo.unstable_batchedUpdates(()=>{b(!1),X([]),V([])}))})},[a,p]);const I=Q.useMemo(()=>({workflow:J}),[J]);return Q.useMemo(()=>
322({viewData:Z,loading:d,parsed:I}),[Z,d])},jTe=async(e,t,i,n)=>{let s=e;for await(const l of t)switch(l.type){case"filter":{s=await Nae(s,l.filters.map(c=>({fid:c.fid,rule:c.rule})).filter(Boolean));break}case"transform":{s=await Rae(s,l.transform);break}case"view":{for await(const c of l.query)s=await kae(s,c);break}case"sort":{s=await Sae(s,l.by,l.sort);break}default:{console.warn(new Error(`Unknown step type: ${l.type}`));break}}return s.slice(i??0,n&&n>0?(i??0)+n:void 0)},ETe=e=>t=>jTe(e,t.workflow,t.offset,t.limit);function PTe(e){return function(t){let i=t.children;return Object.keys(e).forEach(n=>{const s=e[n];i=re.createElement(s.Provider,{value:t[n]},i)}),i}}const UTe=PTe({ComputationContext:s_,themeContext:Rp,vegaThemeContext:Ole,portalContainerContext:jle});function $Te(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function QTe(e="media"){const[t,i]=Q.useState(e==="media"?$Te():e);return Q.useEffect(()=>{var n;if(e==="media"){const s=(n=window.matchMedia)==null?void 0:n.call(window,"(prefers-color-scheme: dark)"),l=c=>{i(c.matches?"dark":"light")};return s==null||s.addEventListener("change",l),()=>{s==null||s.removeEventListener("change",l)}}else i(e)},[e]),t}const DTe=Q.forwardRef(function(t,i){const{name:n,className:s,themeKey:l,uiTheme:c,colorConfig:r,vizThemeConfig:a,appearance:u,dark:o,visualState:d,visualConfig:b,visualLayout:h,overrideSize:p,locale:Z,type:X,themeConfig:J,channelScales:V,scales:g,disableCollapse:I}=t,v=Q.useMemo(()=>t.type==="remote"?t.computation:ETe(t.rawData),[X,X==="remote"?t.computation:t.rawData]),k=h??b,N=Q.useMemo(()=>({...k,...p?{size:p}:{}}),[k,p]),C=N.size.mode,f=j9(d),w=b.limit??-1,x=(b==null?void 0:b.defaultAggregated)??!1,[R,K]=Q.useState([]),{allFields:B,viewDimensions:_,viewMeasures:j,filters:U}=Q.useMemo(()=>{const de=[],Je=[],{dimensions:Ie,measures:Ye,filters:Te,...$e}=d,Ve=[...Ie,...Ye],Me=Object.keys($e);for(const Ee of Me)for(const ye of $e[Ee])ye.analyticType==="dimension"?de.push(ye):ye.analyticType==="measure"&&Je.push(ye);return{allFields:Ve,viewDimensions:de,viewMeasures:Je,filters:Te}},[d]),{viewData:$,loading:te}=OTe({allFields:B,viewDimensions:_,viewMeasures:j,filters:U,defaultAggregated:x,sort:f,folds:b.folds,limit:w,computationFunction:v,timezoneDisplayOffset:b.timezoneDisplayOffset}),E=Q.useRef({data:$});E.current={data:$},Q.useEffect(()=>{te===!1&&lo.unstable_batchedUpdates(()=>{K(E.current.data)})},[te]);const{coordSystem:ie="generic"}=b,ee=ie==="geographic",A=QTe(u??o),[le,ne]=Q.useState(a??J??l),[se,oe]=Q.useState(null);return re.createElement(Ple,{style:C==="full"?{width:"100%",height:"100%"}:void 0,className:s,uiTheme:c??r},re.createElement(UTe,{ComputationContext:v,themeContext:A,vegaThemeContext:{vizThemeConfig:le,setVizThemeConfig:ne},portalContainerContext:se},te&&re.createElement(i_,null),re.createElement("div",{className:`App relative ${A==="dark"?"dark":""}`,style:C==="full"?{width:"100%",height:"100%"}:void 0},ee&&re.createElement("div",{className:"max-w-full",style:{height:kB,flexGrow:1}},re.createElement(FB,{data:$,draggableFieldState:d,visualConfig:b,visualLayout:N})),ee||re.createElement(_Te,{name:n,data:R,ref:i,draggableFieldState:d,visualConfig:b,layout:N,locale:Z??"en-US",scales:g??V,vizThemeConfig:le,disableCollapse:I}),re.createElement("div",{ref:oe}))))}),ATe=hle(Lre(DTe)),qTe=new Set(["column","row","color","opacity","shape","size","details","theta","x","y","facet","order","radius"]),eMe=e=>qTe.has(e),tMe=new Set(["sum","count","max","min","mean","median","variance","stdev"]),iMe=e=>!!e&&tMe.has(e),wf={fid:"gw_count_fid",name:"Row count",analyticType:"measure",semanticType:"quantitative",aggName:"sum",computed:!0,expression:{op:"one",params:[],as:"gw_count_fid"}},nMe=e=>e==="zero"||e===!0?"stack":e===null?"none":e;function jT(e){let t="none";if(typeof e=="string"?t=e:e&&e instanceof Object&&(t=e.order??"ascending"),t!=="none"){const i=["x","y","color","size","opacity"];if(t.startsWith("-")||t==="descending")return"descending";if(i.indexOf(t)>-1||t==="ascending")return"ascending"}}const sMe={row:"facetY",facet:"facetY",column:"facetX",x:"column",y:"row",opacity:"opacity",size:"size",shape:"shape",radiu
322s:"radius",theta:"theta",details:"details",text:"text",color:"color"},ET=new Set(["theta","x","y"]);function lMe(e){const t=`gw_${KB(4)}`;return{fid:t,name:`bin(${e.name})`,semanticType:"ordinal",analyticType:"dimension",computed:!0,expression:{op:"bin",as:t,params:[{type:"field",value:e.fid}]}}}function cMe(e,t,i){switch(e){case"order":return{sort:jT(t.sort)};default:const n=ET.has(e),s=i.get(t.field)??wf,l=t.bin?lMe(s):s,c=l===wf?"count":iMe(t.aggregate)&&n?t.aggregate:void 0;let r;return l===wf||c?r="measure":l.analyticType==="measure"&&ET.has(e)?r="auto":r="dimension",{dimension:l,binDimension:t.bin?l:void 0,dimensionType:sMe[e],analyticType:r,aggregate:c,stack:nMe(t.stack),sort:t.sort?jT(t.sort):void 0}}}const Ad=e=>Object.keys(e).map(t=>({name:t,value:e[t]}));function kh(e){function t(i){switch(i){case"interval":case"bar":return"bar";case"line":return"line";case"boxplot":return"boxplot";case"area":return"area";case"point":return"point";case"arc":return"arc";case"circle":return"circle";case"heatmap":return"circle";case"rect":return"rect";case"tick":default:return"tick"}}return t(typeof e=="string"?e:e.type)}const PT=e=>{switch(e){case"==":case"===":case"equal":case"oneOf":return"one of";case"!=":case"!==":return"not in";case">":case">=":case"<":case"<=":case"lt":case"lte":case"gt":case"gte":case"range":return"range"}return"one of"};function UT(e,t){const i=new Set,n=[];return e.forEach(s=>{const l=t(s);i.has(l)||(i.add(l),n.push(s))}),n}function rMe(e,t,i,n){let s="tick";const l=[];e.facet&&l.push(...Ad(e.facet)),e.encoding&&l.push(...Ad(e.encoding)),e.mark&&(s=kh(e.mark)),e.spec&&(s=kh(e.spec.mark),e.spec.encoding&&l.push(...Ad(e.spec.encoding))),e.concat&&e.concat.forEach(I=>{s=kh(I.mark),I.encoding&&l.push(...Ad(I.encoding))}),e.hconcat&&e.hconcat.forEach(I=>{s=kh(I.mark),I.encoding&&l.push(...Ad(I.encoding))}),e.vconcat&&e.vconcat.forEach(I=>{s=kh(I.mark),I.encoding&&l.push(...Ad(I.encoding))});const c={},r=new Map,a=new Map;t.forEach(I=>{a.set(I.name,I)});const u=(I,v,k)=>{const N=`${I}|${PT(v)}`;r.has(N)||r.set(N,{field:I,rule:PT(v),value:[]}),v.startsWith(">")||v.startsWith("gt")?r.get(N).value=[k,r.get(N).value[1]??null]:v.startsWith("<")||v.startsWith("lt")?r.get(N).value=[r.get(N).value[0]??null,k]:v==="range"?r.get(N).value=k:v==="oneOf"?r.get(N).value.push(...k):r.get(N).value.push(k)};e.transform&&e.transform.forEach(I=>{if(I.fold&&(c.folds=I.fold.map(v=>{var k;return((k=a.get(v))==null?void 0:k.fid)??v})),I.filter&&(typeof I.filter=="string"&&I.filter.split(/[\&\&|\|\|]/g).forEach(k=>{const N=/datum(\.[A-z_]+|\[['"][A-z\s_]+['"]\])\s*((\!=|==|>|<)=?)\s*(.*)/.exec(k);if(N){const C=/(?:\.|\[["'])([A-z\s_]*)(?:["']\])?/.exec(N[1]),f=/["'](.*)["']/.exec(N[4]);if(!C||!f)return;const w=N[2];u(C[1],w,f[1])}}),typeof I.filter=="object"))if(I.filter.field==="rank")I.filter.lte?c.limit=I.filter.lte:I.filter.lt&&(c.limit=Math.floor(I.filter.lt),c.limit==I.filter.lt&&(c.limit-=1));else{const v=Object.keys(I.filter).find(k=>["equal","oneOf","lt","lte","gt","gte","range"].includes(k));v&&u(I.filter.field,v,I.filter[v])}});const o=Array.from(r.values()).map(({field:I,rule:v,value:k})=>({fid:I,rule:{type:v,value:k}})),d=l.flatMap(({name:I,value:v})=>eMe(I)?[cMe(I,v,a)]:[]),b=d.reduce((I,v)=>I||!!v.aggregate,!1),h=d.reduce((I,v)=>v.sort??I,"none"),p=d.reduce((I,v)=>v.stack??I,["bar","area","arc"].includes(s)?"stack":"none"),Z=d.reduce((I,v)=>v.binDimension&&!I.has(v.binDimension.name)?I.set(v.binDimension.name,v.binDimension):I,new Map),X=d.flatMap(I=>{if(I.dimension&&I.dimensionType){if(I.binDimension)return[{name:I.dimensionType,value:Z.get(I.binDimension.name)??I.binDimension}];const v=I.analyticType==="auto"?b?"dimension":"measure":I.analyticType;return[{name:I.dimensionType,value:{...I.dimension,analyticType:v,...I.aggregate?{aggName:I.aggregate}:{},...h&&h!=="none"&&(I.dimensionType==="column"||I.dimensionType==="row")&&v==="dimension"?{sort:h}:{}}}]}return[]}),J=I=>v=>v.name===I,V=I=>I.value,g=I=>UT(I,v=>v.fid);return mf({visId:i,name:n,encodings:{dimensions:t.filter(I=>I.analyticType==="dimension").concat(...Z.values()),measures:t.filter(I=>I.analyticType==="measure"&&I.fid!==wf.fid).concat(wf),columns:g(X.filter(J("facetX")).concat(X.filter(J("column"))).map(V)),rows:g(X.filter(J("facetY")).concat(X.filter(J("row"))).map(V)),details:g(X.filter(J("details")).map(V)),opacity:g(X.filter(J("opacity")).map(V)),radius:g(X.filter(J("radius")).map(V)),shape:g(X.filter(J("shape")).map(V)),size:g(X.filter(J("size")).map(V)),text:g(X.filter(J("text")).map(V)),theta:g(X.filter(J("theta")).map(V)),color:g(X.filter(J("color")).map(V)),filters:UT(o.map(I=>({...a.get(I.fid),rule:I.rule})),I=>{var v;return`${I.fid}_${(v=I.rule)==null?void 0:v.type}`})},layout:{stack:p},config:{defaultAggregated:b,geoms:[s],...c}})}const aMe=new Set(["sum","count","max","min","mean","median","variance","stdev","distinctCount"]),Hq={x:"columns",y:"rows",color:"color",opacity:"opacity",size:"size",shape:"shape",text:"text",details:"details",theta:"theta",radius:"radius",longitude:"longitude",latitude:"latitude",geoId:"geoId"},oMe=Object.keys(Hq);function uMe(e){let t=5381;for(let i=0;i<e.length;i++)t=(t*33^e.charCodeAt(i))>>>0;return t.toString(36)}function Nq(e){return`gw_t_${uMe(e)}`}function $T(e,t){const i=Array.from({length:e.length+1},(n,s)=>[s,...new Array(t.length).fill(0)]);for(let n=0;n<=t.length;n++)i[0][n]=n;for(let n=1;n<=e.length;n++)for(let s=1;s<=t.length;s++)i[n][s]=Math.min(i[n-1][s]+1,i[n][s-1]+1,i[n-1][s-1]+(e[n-1]===t[s-1]?0:1));return i[e.length][t.length]}function dMe(e){const t=/^([a-zA-Z]+)\((.*)\)$/.exec(e);return t&&aMe.has(t[1])?{field:t[2],aggregate:t[1]}:{field:e}}class mMe{constructor(){ly(this,"byName",new Map);ly(this,"byFid",new Map);ly(this,"names",[])}add(t){if(typeof t.name=="string"){const i=this.byName.get(t.name);i?i.push(t):(this.byName.set(t.name,[t]),this.names.push(t.name))}
322this.byFid.has(t.fid)||this.byFid.set(t.fid,t)}hasFid(t){return this.byFid.has(t)}resolveExact(t){const i=this.byName.get(t);if(i){if(i.length>1)throw new Error(`Field name '${t}' is ambiguous between fids [${i.map(n=>n.fid).join(", ")}]; reference it with a 'fid:' prefix.`);return i[0]}return this.byFid.get(t)??null}resolve(t,i){if(t.startsWith("fid:")){const r=this.byFid.get(t.slice(4));if(!r)throw new Error(`Unknown field id '${t.slice(4)}' (from '${t}'). ${this.candidateHint(t.slice(4))}`);return r}const n=this.byName.get(t);if(n){if(n.length>1)throw new Error(`Field name '${t}' is ambiguous between fids [${n.map(r=>r.fid).join(", ")}]; reference it with a 'fid:' prefix.`);return n[0]}const s=this.byFid.get(t);if(s)return s;const l=t.toLowerCase(),c=this.names.filter(r=>r.toLowerCase()===l);if(c.length===1)return i(`Field '${t}' matched '${c[0]}' case-insensitively.`),this.byName.get(c[0])[0];throw c.length>1?new Error(`Field '${t}' matches multiple fields case-insensitively [${c.join(", ")}]; use the exact name.`):new Error(`Unknown field '${t}'. ${this.candidateHint(t)}`)}candidateHint(t){return`Nearest candidates: [${[...this.names].sort((n,s)=>$T(t,n)-$T(t,s)).slice(0,3).join(", ")}] among ${this.names.length} fields.`}}function bMe(e,t,i,n){const s=[],l=new Map;for(const c of e){if([c.expr!==void 0,c.bin!==void 0,c.log!==void 0].filter(Boolean).length!==1)throw new Error(`Computed field '${c.name}' must define exactly one of expr / bin / log.`);const a=JSON.stringify([c.expr,c.bin,c.log,c.analyticType]),u=l.get(c.name);if(u!==void 0){if(u!==a)throw new Error(`Computed field '${c.name}' is defined twice with different definitions.`);continue}l.set(c.name,a);const o=Nq(c.name);if(t.hasFid(o))throw new Error(`Computed field '${c.name}' hashes to fid '${o}', which is already taken by another field; rename the computed field.`);let d;if(c.expr!==void 0){let b;try{b=y2(c.expr)}catch(X){throw new Error(`Computed field '${c.name}' has an invalid expression '${c.expr}': ${X instanceof Error?X.message:X}`)}const[h,p]=BB(b,i.concat(s)),Z=c.analyticType??(h==="quantitative"?"measure":"dimension");d={analyticType:Z,fid:o,name:c.name,semanticType:h,computed:!0,aggName:p?"expr":Z==="dimension"?void 0:"sum",expression:{op:"expr",as:o,params:[{type:"sql",value:c.expr}]}}}else if(c.bin){const b=t.resolve(c.bin.field,n),h=c.bin.count??10;d={fid:o,name:c.name,semanticType:"ordinal",analyticType:c.analyticType??"dimension",computed:!0,expression:{op:"bin",as:o,params:[{type:"field",value:b.fid}],num:h}}}else{const b=t.resolve(c.log.field,n),h=c.log.base??10,p=h===10?"log10":h===2?"log2":"log";d={fid:o,name:c.name,semanticType:"quantitative",analyticType:c.analyticType??b.analyticType,aggName:"sum",computed:!0,expression:{op:p,as:o,params:[{type:"field",value:b.fid}],num:h}}}t.add(d),s.push(d)}return s}function QT(e,t,i){if(e.startsWith("fid:"))return{base:t.resolve(e,i)};const n=dMe(e);if(n.aggregate===void 0)return{base:t.resolve(e,i)};const s=t.resolveExact(e);if(s)return i(`'${e}' resolved to a field literally named '${e}', not as the ${n.aggregate} shorthand.`),{base:s};if(n.field===""){if(n.aggregate!=="count")throw new Error(`Aggregate shorthand '${e}' needs a field, e.g. '${n.aggregate}(Sales)'.`);return{base:t.resolve(`fid:${Nm}`,i)}}return{base:t.resolve(n.field,i),aggregate:n.aggregate}}function hMe(e,t,i,n){e.semanticType!=="temporal"&&n(`timeUnit '${t}' applied to non-temporal field '${e.name}' (${e.semanticType}); existing drill semantics parse values as dates.`);const s=`${t}(${e.name})`,l=Nq(s);return{fid:l,name:s,semanticType:"temporal",analyticType:e.analyticType,aggName:i??"sum",computed:!0,timeUnit:t,expression:{op:"dateTimeDrill",as:l,params:[{type:"field",value:e.fid},{type:"value",value:t},...e.offset!=null?[{type:"offset",value:e.offset}]:[]]}}}function fMe(e,t,i,n){let s,l={};if(typeof e=="string"){const r=QT(e,t,i);s=r.base,l.aggregate=r.aggregate}else{if(e.aggregate==="expr")throw new Error(`Aggregate 'expr' is not allowed on a field reference ('${e.field}'); use an inline computed field instead.`);const r=QT(e.field,t,i);if(r.aggregate!==void 0&&e.aggregate!==void 0)throw new Error(`'${e.field}' already carries a shorthand aggregate; do not set 'aggregate' as well.`);s=r.base;const a=e.sort==="none"?void 0:e.sort;l={aggregate:e.aggregate??r.aggregate,sort:a,timeUnit:e.timeUnit}}if(l.timeUnit){const r=hMe(s,l.timeUnit,l.aggregate,i);
322if(t.hasFid(r.fid))throw new Error(`Drill field '${r.name}' hashes to fid '${r.fid}', which is already taken by another field; rename the conflicting field.`);n==null||n(r);const a={...r};return l.sort&&(a.sort=l.sort),a}const c={...s};return l.aggregate&&(c.analyticType==="dimension"&&i(`Aggregate '${l.aggregate}' on dimension '${c.name}' follows existing semantics (ignored unless the field acts as a measure).`),c.aggName=l.aggregate),l.sort&&(c.sort=l.sort),c}function pMe(e){if("oneOf"in e)return{type:"one of",value:e.oneOf};if("notIn"in e)return{type:"not in",value:e.notIn};if("range"in e)return{type:"range",value:e.range};if("timeRange"in e)return{type:"temporal range",value:e.timeRange};throw new Error(`Filter on '${e.field}' must define one of oneOf / notIn / range / timeRange.`)}function yMe(e,t,i=n=>console.warn(`[terse] ${n}`)){var h,p,Z,X;const n=jB(t,e.name||"Chart"),s=new mMe;for(const J of[...n.encodings.dimensions,...n.encodings.measures])s.add(J);const l=[...n.encodings.dimensions,...n.encodings.measures],c=bMe(e.computed??[],s,l,i),r=(J,V)=>J.name<V.name?-1:J.name>V.name?1:0,a=[...c].sort(r),u={dimensions:n.encodings.dimensions.concat(a.filter(J=>J.analyticType==="dimension")),measures:n.encodings.measures.concat(a.filter(J=>J.analyticType==="measure"))},o=new Map,d=J=>{o.has(J.fid)||o.set(J.fid,J)};for(const J of oMe){const V=e[J];if(V===void 0)continue;const g=Array.isArray(V)?V:[V];u[Hq[J]]=g.map(I=>fMe(I,s,i,d))}if(o.size>0){const J=[...o.values()];u.dimensions=u.dimensions.concat(J.filter(V=>V.analyticType==="dimension")),u.measures=u.measures.concat(J.filter(V=>V.analyticType==="measure"))}if(e.filters&&(u.filters=e.filters.map(J=>({...s.resolve(J.field,i),rule:pMe(J)}))),e.sort){const J=u.rows??[],V=[...J].reverse().find(g=>g.analyticType==="measure");V?u.rows=J.map(g=>g===V?{...g,sort:e.sort}:g):i("'sort' knob ignored: no measure on y.")}const b=(J,V)=>i(`Both '${J}' and canonical '${V}' are set; the canonical value wins.`);return e.mark!==void 0&&((h=e.config)==null?void 0:h.geoms)!==void 0&&b("mark","config.geoms"),e.aggregate!==void 0&&((
322p=e.config)==null?void 0:p.defaultAggregated)!==void 0&&b("aggregate","config.defaultAggregated"),e.limit!==void 0&&((Z=e.config)==null?void 0:Z.limit)!==void 0&&b("limit","config.limit"),e.stack!==void 0&&((X=e.layout)==null?void 0:X.stack)!==void 0&&b("stack","layout.stack"),{visId:n.visId,name:e.name||"Chart",encodings:u,config:{defaultAggregated:e.aggregate??!0,geoms:[e.mark??"auto"],...e.limit!==void 0?{limit:e.limit}:{},...e.config},layout:{...e.stack!==void 0?{stack:e.stack}:{},...e.layout}}}function DT(e){const t=[],i=[],n=s=>{for(const l of s.params)if(l.type==="field")t.push(l.value);else if(l.type==="expression")n(l.value);else if(l.type==="sql")try{i.push(..._B(l.value))}catch{}else l.type==="map"?t.push(l.value.x,l.value.y):l.type==="newmap"&&l.value.facets.flatMap(c=>c.dimensions).forEach(c=>t.push(c.fid))};return n(e),{fids:t,sqlRefs:i}}function ZMe(e,t){const i=[],n=t!==void 0,s=new Set;for(const h of e)s.has(h.fid)&&i.push({type:"duplicate-fid",fid:h.fid}),s.add(h.fid);const l=new Set(s);for(const h of t??[])l.add(h.fid);const c=new Map;for(const h of e)c.set((h.name??h.fid).toLowerCase(),h.fid);const r=h=>c.get(h.toLowerCase())??(l.has(h)?h:void 0),a=e.filter(h=>h.expression),u=new Map;for(const h of a){const{fids:p,sqlRefs:Z}=DT(h.expression),X=[];for(const J of p)l.has(J)?X.push(J):n&&i.push({type:"missing-field",fid:h.fid,missing:J});for(const J of Z){const V=r(J);V===void 0?n&&i.push({type:"missing-field",fid:h.fid,missing:J}):X.push(V)}u.set(h.fid,X.filter(J=>J!==h.fid))}for(const h of a){const{fids:p,sqlRefs:Z}=DT(h.expression),X=Z.some(J=>r(J)===h.fid);(p.includes(h.fid)||X)&&i.push({type:"cyclic-dependency",cycle:[h.fid,h.fid]})}const o=new Map,d=[],b=h=>{const p=o.get(h);if(p!=="done"){if(p==="visiting"){const Z=d.indexOf(h);i.push({type:"cyclic-dependency",cycle:[...d.slice(Z),h]});return}o.set(h,"visiting"),d.push(h);for(const Z of u.get(h)??[])u.has(Z)&&b(Z);d.pop(),o.set(h,"done")}};for(const h of u.keys())b(h);return i}function WMe(e,t){const i=ZMe(e,t);if(i.length===0)return;const n=i.map(s=>{switch(s.type){case"missing-field":return`computed field '${s.fid}' references unknown field '${s.missing}'`;case"cyclic-dependency":return`cyclic computed-field dependency: ${s.cycle.join(" -> ")}`;case"duplicate-fid":return`duplicate fid '${s.fid}' in the field pools`}});throw new Error(`Invalid field set for workflow computation: 323- ${n.join(` 324- `)}`)}const XMe=["encoding","spec","layer","concat","hconcat","vconcat"],JMe=["x","y","color","opacity","size","shape","text","details","theta","radius","longitude","latitude","geoId","computed","filters"],xMe=["showTableSummary","stack","showActions","interactiveScale","sorted","zeroScale","size","format","geoKey","resolve","scaleIncludeUnmatchedChoropleth","background","colorPalette","primaryColor","scale","geojson","geoUrl","useSvg"];function YMe(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("normalize() expects a single spec object; got "+(Array.isArray(e)?"an array":String(e)));const t=e;return typeof t.$schema=="string"&&t.$schema.includes("vega.github.io")?"vega-lite":t.$schema===moe?"terse":XMe.some(i=>i in t)?"vega-lite":JMe.some(i=>i in t)&&!("encodings"in t)?"terse":"mark"in t?"vega-lite":"layout"in t?"chart":t.config&&typeof t.config=="object"&&xMe.some(i=>i in t.config)?"vis-spec":"partial-chart"}function GMe(e,t=[]){const i=YMe(e);let n;switch(i){case"vega-lite":{const r=e,a=jB(t,""),u=[...a.encodings.dimensions,...a.encodings.measures],o=typeof r.title=="string"?r.title:"Chart";n=rMe(r,u,XW(),o);break}case"terse":n=mf(yMe(e,t));break;case"chart":case"vis-spec":n=ioe(e);break;case"partial-chart":default:n=mf(e);break}const s=mf(n);WMe([...s.encodings.dimensions,...s.encodings.measures],t.length>0?t:void 0);const l=s.config.geoms[0]??"auto",c={...s.encodings,...nG(l,s.encodings),...sG(s.encodings)};return{...s,encodings:c,$schema:doe}}function XKe({rows:e,spec:t,errorLabel:i}){const n=Iie([],e);let s;try{s=GMe(t,n)}catch{return du.jsx("div",{className:"flex h-full items-center justify-center text-sm text-destructive",children:i})}return du.jsx(ATe,{rawData:e,visualState:s.encodings,visualConfig:s.config,visualLayout:s.layout,className:"h-full min-h-[420px] w-full"})}export{XKe as default}; 325//# sourceMappingURL=GraphicWalkerCanvas-C38BNYR1.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.