@asgardeo/auth-spa 0.2.18 → 0.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -2
- package/README.md +12 -5
- package/babel.config.js +1 -2
- package/dist/asgardeo-spa.production.esm.js +100 -42
- package/dist/asgardeo-spa.production.esm.js.map +1 -1
- package/dist/asgardeo-spa.production.js +101 -43
- package/dist/asgardeo-spa.production.js.map +1 -1
- package/dist/asgardeo-spa.production.min.js +1 -1
- package/dist/asgardeo-spa.production.min.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.esm.js +98 -40
- package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.js +98 -40
- package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
- package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
- package/dist/src/client.d.ts +4 -3
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +13 -4
- package/dist/src/client.js.map +1 -1
- package/dist/src/clients/main-thread-client.d.ts.map +1 -1
- package/dist/src/clients/main-thread-client.js +41 -25
- package/dist/src/clients/main-thread-client.js.map +1 -1
- package/dist/src/clients/web-worker-client.d.ts +1 -1
- package/dist/src/clients/web-worker-client.d.ts.map +1 -1
- package/dist/src/clients/web-worker-client.js +55 -30
- package/dist/src/clients/web-worker-client.js.map +1 -1
- package/dist/src/constants/errors.d.ts +19 -0
- package/dist/src/constants/errors.d.ts.map +1 -0
- package/dist/src/constants/errors.js +19 -0
- package/dist/src/constants/errors.js.map +1 -0
- package/dist/src/constants/hooks.d.ts +2 -1
- package/dist/src/constants/hooks.d.ts.map +1 -1
- package/dist/src/constants/hooks.js +1 -0
- package/dist/src/constants/hooks.js.map +1 -1
- package/dist/src/constants/index.d.ts +1 -0
- package/dist/src/constants/index.d.ts.map +1 -1
- package/dist/src/constants/index.js +1 -0
- package/dist/src/constants/index.js.map +1 -1
- package/dist/src/constants/parameters.d.ts +1 -0
- package/dist/src/constants/parameters.d.ts.map +1 -1
- package/dist/src/constants/parameters.js +1 -0
- package/dist/src/constants/parameters.js.map +1 -1
- package/dist/src/helpers/session-management-helper.d.ts +1 -1
- package/dist/src/helpers/session-management-helper.d.ts.map +1 -1
- package/dist/src/helpers/session-management-helper.js +33 -43
- package/dist/src/helpers/session-management-helper.js.map +1 -1
- package/dist/src/index-polyfill.d.ts +0 -1
- package/dist/src/index-polyfill.d.ts.map +1 -1
- package/dist/src/index-polyfill.js +0 -1
- package/dist/src/index-polyfill.js.map +1 -1
- package/dist/src/models/client.d.ts +3 -3
- package/dist/src/models/client.d.ts.map +1 -1
- package/dist/src/models/http-client.d.ts +1 -1
- package/dist/src/models/http-client.d.ts.map +1 -1
- package/dist/src/models/index.d.ts +1 -0
- package/dist/src/models/index.d.ts.map +1 -1
- package/dist/src/models/index.js +1 -0
- package/dist/src/models/index.js.map +1 -1
- package/dist/src/models/message.d.ts +1 -0
- package/dist/src/models/message.d.ts.map +1 -1
- package/dist/src/models/request-custom-grant.d.ts +25 -0
- package/dist/src/models/request-custom-grant.d.ts.map +1 -0
- package/dist/src/models/request-custom-grant.js +19 -0
- package/dist/src/models/request-custom-grant.js.map +1 -0
- package/dist/src/models/session-management-helper.d.ts +2 -1
- package/dist/src/models/session-management-helper.d.ts.map +1 -1
- package/dist/src/models/sign-out-error.d.ts +22 -0
- package/dist/src/models/sign-out-error.d.ts.map +1 -0
- package/dist/src/models/sign-out-error.js +19 -0
- package/dist/src/models/sign-out-error.js.map +1 -0
- package/dist/src/models/web-worker.d.ts +3 -3
- package/dist/src/models/web-worker.d.ts.map +1 -1
- package/dist/src/models/web-worker.js.map +1 -1
- package/dist/src/public-api.d.ts +1 -1
- package/dist/src/public-api.d.ts.map +1 -1
- package/dist/src/public-api.js +1 -1
- package/dist/src/public-api.js.map +1 -1
- package/dist/src/utils/crypto-utils.d.ts +35 -0
- package/dist/src/utils/crypto-utils.d.ts.map +1 -0
- package/dist/src/utils/crypto-utils.js +58 -0
- package/dist/src/utils/crypto-utils.js.map +1 -0
- package/dist/src/utils/spa-utils.d.ts +5 -3
- package/dist/src/utils/spa-utils.d.ts.map +1 -1
- package/dist/src/utils/spa-utils.js +26 -10
- package/dist/src/utils/spa-utils.js.map +1 -1
- package/dist/src/worker/client.worker.js +2 -2
- package/dist/src/worker/client.worker.js.map +1 -1
- package/dist/src/worker/worker-core.d.ts.map +1 -1
- package/dist/src/worker/worker-core.js +15 -13
- package/dist/src/worker/worker-core.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -30
- package/rollup.config.js +3 -5
- package/src/client.ts +23 -17
- package/src/clients/main-thread-client.ts +52 -21
- package/src/clients/web-worker-client.ts +67 -26
- package/src/constants/errors.ts +19 -0
- package/src/constants/hooks.ts +2 -1
- package/src/constants/index.ts +1 -0
- package/src/constants/parameters.ts +1 -0
- package/src/helpers/session-management-helper.ts +31 -40
- package/src/index-polyfill.ts +0 -1
- package/src/models/client.ts +3 -2
- package/src/models/http-client.ts +3 -2
- package/src/models/index.ts +1 -0
- package/src/models/message.ts +1 -0
- package/src/models/request-custom-grant.ts +26 -0
- package/src/models/session-management-helper.ts +3 -2
- package/src/models/sign-out-error.ts +22 -0
- package/src/models/web-worker.ts +8 -2
- package/src/public-api.ts +2 -1
- package/src/utils/crypto-utils.ts +78 -0
- package/src/utils/spa-utils.ts +33 -10
- package/src/worker/client.worker.ts +1 -1
- package/src/worker/worker-core.ts +17 -12
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var AsgardeoAuth=function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function r(t,e,n){return n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},t(n,n.exports),n.exports}var i,c,l=r((function(t){function e(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=e=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),o=n(l),a=function(t){return t&&t.Math==Math&&t},u=a("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||a("object"==("undefined"==typeof window?"undefined":o(window))&&window)||a("object"==("undefined"==typeof self?"undefined":o(self))&&self)||a("object"==o(e)&&e)||function(){return this}()||Function("return this")(),d=function(t){try{return!!t()}catch(t){return!0}},s=!d((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),m=Function.prototype.call,h=m.bind?m.bind(m):function(){return m.apply(m,arguments)},b={}.propertyIsEnumerable,Z=Object.getOwnPropertyDescriptor,p=Z&&!b.call({1:2},1)?function(t){var e=Z(this,t);return!!e&&e.enumerable}:b,y={f:p},X=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},f=Function.prototype,G=f.bind,I=f.call,V=G&&G.bind(I),W=G?function(t){return t&&V(I,t)}:function(t){return t&&function(){return I.apply(t,arguments)}},v=W({}.toString),g=W("".slice),S=function(t){return g(v(t),8,-1)},Y=u.Object,R=W("".split),L=d((function(){return!Y("z").propertyIsEnumerable(0)}))?function(t){return"String"==S(t)?R(t,""):Y(t)}:Y,x=u.TypeError,K=function(t){if(null==t)throw x("Can't call method on "+t);return t},J=function(t){return L(K(t))},H=function(t){return"function"==typeof t},N=function(t){return"object"==o(t)?null!==t:H(t)},C=function(t){return H(t)?t:void 0},k=function(t,e){return arguments.length<2?C(u[t]):u[t]&&u[t][e]},U=W({}.isPrototypeOf),w=k("navigator","userAgent")||"",T=u.process,F=u.Deno,j=T&&T.versions||F&&F.version,z=j&&j.v8;z&&(c=(i=z.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1])),!c&&w&&(!(i=w.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=w.match(/Chrome\/(\d+)/))&&(c=+i[1]);var P=c,M=!!Object.getOwnPropertySymbols&&!d((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&P&&P<41})),B=M&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Q=u.Object,D=B?function(t){return"symbol"==o(t)}:function(t){var e=k("Symbol");return H(e)&&U(e.prototype,Q(t))},E=u.String,O=function(t){try{return E(t)}catch(t){return"Object"}},A=u.TypeError,_=function(t){if(H(t))return t;throw A(O(t)+" is not a function")},q=function(t,e){var n=t[e];return null==n?void 0:_(n)},$=u.TypeError,tt=function(t,e){var n,r;if("string"===e&&H(n=t.toString)&&!N(r=h(n,t)))return r;if(H(n=t.valueOf)&&!N(r=h(n,t)))return r;if("string"!==e&&H(n=t.toString)&&!N(r=h(n,t)))return r;throw $("Can't convert object to primitive value")},et=Object.defineProperty,nt=function(t,e){try{et(u,t,{value:e,configurable:!0,writable:!0})}catch(n){u[t]=e}return e},rt="__core-js_shared__",it=u[rt]||nt(rt,{}),ct=r((function(t){(t.exports=function(t,e){return it[t]||(it[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.19.3",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),lt=u.Object,ot=function(t){return lt(K(t))},at=W({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(ot(t),e)},dt=0,st=Math.random(),mt=W(1..toString),ht=function(t){return"Symbol("+(void 0===t?"":t)+")_"+mt(++dt+st,36)},bt=ct("wks"),Zt=u.Symbol,pt=Zt&&Zt.for,yt=B?Zt:Zt&&Zt.withoutSetter||ht,Xt=function(t){if(!ut(bt,t)||!M&&"string"!=typeof bt[t]){var e="Symbol."+t;M&&ut(Zt,t)?bt[t]=Zt[t]:bt[t]=B&&pt?pt(e):yt(e)}return bt[t]},ft=u.TypeError,Gt=Xt("toPrimitive"),It=function(t,e){if(!N(t)||D(t))return t;var n,r=q(t,Gt);if(r){if(void 0===e&&(e="default"),n=h(r,t,e),!N(n)||D(n))return n;throw ft("Can't convert object to primitive value")}return void 0===e&&(e="number"),tt(t,e)},Vt=function(t){var e=It(t,"string");return D(e)?e:e+""},Wt=u.document,vt=N(Wt)&&N(Wt.createElement),gt=function(t){return vt?Wt.createElement(t):{}},St=!s&&!d((function(){return 7!=Object.defineProperty(gt("div"),"a",{get:function(){return 7}}).a})),Yt=Object.getOwnPropertyDescriptor,Rt=s?Yt:function(t,e){if(t=J(t),e=Vt(e),St)try{return Yt(t,e)}catch(t){}if(ut(t,e))return X(!h(y.f,t,e),t[e])},Lt={f:Rt},xt=u.String,Kt=u.TypeError,Jt=function(t){if(N(t))return t;throw Kt(xt(t)+" is not an object")},Ht=u.TypeError,Nt=Object.defineProperty,Ct=s?Nt:function(t,e,n){if(Jt(t),e=Vt(e),Jt(n),St)try{return Nt(t,e,n)}catch(t){}if("get"in n||"set"in n)throw Ht("Accessors not supported");return"value"in n&&(t[e]=n.value),t},kt={f:Ct},Ut=s?function(t,e,n){return kt.f(t,e,X(1,n))}:function(t,e,n){return t[e]=n,t},wt=W(Function.toString);H(it.inspectSource)||(it.inspectSource=function(t){return wt(t)});var Tt,Ft,jt,zt=it.inspectSource,Pt=u.WeakMap,Mt=H(Pt)&&/native code/.test(zt(Pt)),Bt=ct("keys"),Qt=function(t){return Bt[t]||(Bt[t]=ht(t))},Dt={},Et="Object already initialized",Ot=u.TypeError,At=u.WeakMap;if(Mt||it.state){var _t=it.state||(it.state=new At),qt=W(_t.get),$t=W(_t.has),te=W(_t.set);Tt=function(t,e){if($t(_t,t))throw new Ot(Et);return e.facade=t,te(_t,t,e),e},Ft=function(t){return qt(_t,t)||{}},jt=function(t){return $t(_t,t)}}else{var ee=Qt("state");Dt[ee]=!0,Tt=function(t,e){if(ut(t,ee))throw new Ot(Et);return e.facade=t,Ut(t,ee,e),e},Ft=function(t){return ut(t,ee)?t[ee]:{}},jt=function(t){return ut(t,ee)}}var ne={set:Tt,get:Ft,has:jt,enforce:function(t){return jt(t)?Ft(t):Tt(t,{})},getterFor:function(t){return function(e){var n;if(!N(e)||(n=Ft(e)).type!==t)throw Ot("Incompatible receiver, "+t+" required");return n}}},re=Function.prototype,ie=s&&Object.getOwnPropertyDescriptor,ce=ut(re,"name"),le={EXISTS:ce,PROPER:ce&&"something"===function(){}.name,CONFIGURABLE:ce&&(!s||s&&ie(re,"name").configurable)},oe=r((function(t){var e=le.CONFIGURABLE,n=ne.get,r=ne.enforce,i=String(String).split("String");(t.exports=function(t,n,c,l){var o,a=!!l&&!!l.unsafe,d=!!l&&!!l.enumerable,s=!!l&&!!l.noTargetGet,m=l&&void 0!==l.name?l.name:n;H(c)&&("Symbol("===String(m).slice(0,7)&&(m="["+String(m).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ut(c,"name")||e&&c.name!==m)&&Ut(c,"name",m),(o=r(c)).source||(o.source=i.join("string"==typeof m?m:""))),t!==u?(a?!s&&t[n]&&(d=!0):delete t[n],d?t[n]=c:Ut(t,n,c)):d?t[n]=c:nt(n,c)})(Function.prototype,"toString",(function(){return H(this)&&n(this).source||zt(this)}))})),ae=Math.ceil,ue=Math.floor,de=function(t){var e=+t;return e!=e||0===e?0:(e>0?ue:ae)(e)},se=Math.max,me=Math.min,he=function(t,e){var n=de(t);return n<0?se(n+e,0):me(n,e)},be=Math.min,Ze=function(t){return t>0?be(de(t),9007199254740991):0},pe=function(t){return Ze(t.length)},ye=function(t){return function(e,n,r){var i,c=J(e),l=pe(c),o=he(r,l);if(t&&n!=n){for(;l>o;)if((i=c[o++])!=i)return!0}else for(;l>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Xe={includes:ye(!0),indexOf:ye(!1)},fe=Xe.indexOf,Ge=W([].push),Ie=function(t,e){var n,r=J(t),i=0,c=[];for(n in r)!ut(Dt,n)&&ut(r,n)&&Ge(c,n);for(;e.length>i;)ut(r,n=e[i++])&&(~fe(c,n)||Ge(c,n));return c},Ve=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],We=Ve.concat("length","prototype"),ve=Object.getOwnPropertyNames||function(t){return Ie(t,We)},ge={f:ve},Se={f:Object.getOwnPropertySymbols},Ye=W([].concat),Re=k("Reflect","ownKeys")||function(t){var e=ge.f(Jt(t)),n=Se.f;return n?Ye(e,n(t)):e},Le=function(t,e){for(var n=Re(e),r=kt.f,i=Lt.f,c=0;c<n.length;c++){var l=n[c];ut(t,l)||r(t,l,i(e,l))}},xe=/#|\.prototype\./,Ke=function(t,e){var n=He[Je(t)];return n==Ce||n!=Ne&&(H(e)?d(e):!!e)},Je=Ke.normalize=function(t){return String(t).replace(xe,".").toLowerCase()},He=Ke.data={},Ne=Ke.NATIVE="N",Ce=Ke.POLYFILL="P",ke=Ke,Ue=Lt.f,we=function(t,e){var n,r,i,c,l,a=t.target,d=t.global,s=t.stat;if(n=d?u:s?u[a]||nt(a,{}):(u[a]||{}).prototype)for(r in e){if(c=e[r],i=t.noTargetGet?(l=Ue(n,r))&&l.value:n[r],!ke(d?r:a+(s?".":"#")+r,t.forced)&&void 0!==i){if(o(c)==o(i))continue;Le(c,i)}(t.sham||i&&i.sham)&&Ut(c,"sham",!0),oe(n,r,c,t)}},Te=Function.prototype,Fe=Te.apply,je=Te.bind,ze=Te.call,Pe="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(je?ze.bind(Fe):function(){return ze.apply(Fe,arguments)}),Me=Array.isArray||function(t){return"Array"==S(t)},Be={};Be[Xt("toStringTag")]="z";var Qe,De="[object z]"===String(Be),Ee=Xt("toStringTag"),Oe=u.Object,Ae="Arguments"==S(function(){return arguments}()),_e=De?S:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Oe(t),Ee))?n:Ae?S(e):"Object"==(r=S(e))&&H(e.callee)?"Arguments":r},qe=u.String,$e=function(t){if("Symbol"===_e(t))throw TypeError("Cannot convert a Symbol value to a string");return qe(t)},tn=Object.keys||function(t){return Ie(t,Ve)},en=s?Object.defineProperties:function(t,e){Jt(t);for(var n,r=J(e),i=tn(e),c=i.length,l=0;c>l;)kt.f(t,n=i[l++],r[n]);return t},nn=k("document","documentElement"),rn=Qt("IE_PROTO"),cn=function(){},ln=function(t){return"<script>"+t+"</"+"script>"},on=function(t){t.write(ln("")),t.close();var e=t.parentWindow.Object;return t=null,e},an=function(){try{Qe=new ActiveXObject("htmlfile")}catch(t){}var t,e;an="undefined"!=typeof document?document.domain&&Qe?on(Qe):((e=gt("iframe")).style.display="none",nn.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(ln("document.F=Object")),t.close(),t.F):on(Qe);for(var n=Ve.length;n--;)delete an.prototype[Ve[n]];return an()};Dt[rn]=!0;var un=Object.create||function(t,e){var n;return null!==t?(cn.prototype=Jt(t),n=new cn,cn.prototype=null,n[rn]=t):n=an(),void 0===e?n:en(n,e)},dn=function(t,e,n){var r=Vt(e);r in t?kt.f(t,r,X(0,n)):t[r]=n},sn=u.Array,mn=Math.max,hn=function(t,e,n){for(var r=pe(t),i=he(e,r),c=he(void 0===n?r:n,r),l=sn(mn(c-i,0)),o=0;i<c;i++,o++)dn(l,o,t[i]);return l.length=o,l},bn=ge.f,Zn="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],pn={f:function(t){return Zn&&"Window"==S(t)?function(t){try{return bn(t)}catch(t){return hn(Zn)}}(t):bn(J(t))}},yn=W([].slice),Xn={f:Xt},fn=u,Gn=kt.f,In=function(t){var e=fn.Symbol||(fn.Symbol={});ut(e,t)||Gn(e,t,{value:Xn.f(t)})},Vn=kt.f,Wn=Xt("toStringTag"),vn=function(t,e,n){t&&!ut(t=n?t:t.prototype,Wn)&&Vn(t,Wn,{configurable:!0,value:e})},gn=W(W.bind),Sn=function(t,e){return _(t),void 0===e?t:gn?gn(t,e):function(){return t.apply(e,arguments)}},Yn=function(){},Rn=[],Ln=k("Reflect","construct"),xn=/^\s*(?:class|function)\b/,Kn=W(xn.exec),Jn=!xn.exec(Yn),Hn=function(t){if(!H(t))return!1;try{return Ln(Yn,Rn,t),!0}catch(t){return!1}},Nn=!Ln||d((function(){var t;return Hn(Hn.call)||!Hn(Object)||!Hn((function(){t=!0}))||t}))?function(t){if(!H(t))return!1;switch(_e(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return Jn||!!Kn(xn,zt(t))}:Hn,Cn=Xt("species"),kn=u.Array,Un=function(t,e){return new(function(t){var e;return Me(t)&&(e=t.constructor,(Nn(e)&&(e===kn||Me(e.prototype))||N(e)&&null===(e=e[Cn]))&&(e=void 0)),void 0===e?kn:e}(t))(0===e?0:e)},wn=W([].push),Tn=function(t){var e=1==t,n=2==t,r=3==t,i=4==t,c=6==t,l=7==t,o=5==t||c;return function(a,u,d,s){for(var m,h,b=ot(a),Z=L(b),p=Sn(u,d),y=pe(Z),X=0,f=s||Un,G=e?f(a,y):n||l?f(a,0):void 0;y>X;X++)if((o||X in Z)&&(h=p(m=Z[X],X,b),t))if(e)G[X]=h;else if(h)switch(t){case 3:return!0;case 5:return m;case 6:return X;case 2:wn(G,m)}else switch(t){case 4:return!1;case 7:wn(G,m)}return c?-1:r||i?i:G}},Fn={forEach:Tn(0),map:Tn(1),filter:Tn(2),some:Tn(3),every:Tn(4),find:Tn(5),findIndex:Tn(6),filterReject:Tn(7)},jn=Fn.forEach,zn=Qt("hidden"),Pn="Symbol",Mn=Xt("toPrimitive"),Bn=ne.set,Qn=ne.getterFor(Pn),Dn=Object.prototype,En=u.Symbol,On=En&&En.prototype,An=u.TypeError,_n=u.QObject,qn=k("JSON","stringify"),$n=Lt.f,tr=kt.f,er=pn.f,nr=y.f,rr=W([].push),ir=ct("symbols"),cr=ct("op-symbols"),lr=ct("string-to-symbol-registry"),or=ct("symbol-to-string-registry"),ar=ct("wks"),ur=!_n||!_n.prototype||!_n.prototype.findChild,dr=s&&d((function(){return 7!=un(tr({},"a",{get:function(){return tr(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=$n(Dn,e);r&&delete Dn[e],tr(t,e,n),r&&t!==Dn&&tr(Dn,e,r)}:tr,sr=function(t,e){var n=ir[t]=un(On);return Bn(n,{type:Pn,tag:t,description:e}),s||(n.description=e),n},mr=function(t,e,n){t===Dn&&mr(cr,e,n),Jt(t);var r=Vt(e);return Jt(n),ut(ir,r)?(n.enumerable?(ut(t,zn)&&t[zn][r]&&(t[zn][r]=!1),n=un(n,{enumerable:X(0,!1)})):(ut(t,zn)||tr(t,zn,X(1,{})),t[zn][r]=!0),dr(t,r,n)):tr(t,r,n)},hr=function(t,e){Jt(t);var n=J(e),r=tn(n).concat(yr(n));return jn(r,(function(e){s&&!h(br,n,e)||mr(t,e,n[e])})),t},br=function(t){var e=Vt(t),n=h(nr,this,e);return!(this===Dn&&ut(ir,e)&&!ut(cr,e))&&(!(n||!ut(this,e)||!ut(ir,e)||ut(this,zn)&&this[zn][e])||n)},Zr=function(t,e){var n=J(t),r=Vt(e);if(n!==Dn||!ut(ir,r)||ut(cr,r)){var i=$n(n,r);return!i||!ut(ir,r)||ut(n,zn)&&n[zn][r]||(i.enumerable=!0),i}},pr=function(t){var e=er(J(t)),n=[];return jn(e,(function(t){ut(ir,t)||ut(Dt,t)||rr(n,t)})),n},yr=function(t){var e=t===Dn,n=er(e?cr:J(t)),r=[];return jn(n,(function(t){!ut(ir,t)||e&&!ut(Dn,t)||rr(r,ir[t])})),r};if(M||(En=function(){if(U(On,this))throw An("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?$e(arguments[0]):void 0,e=ht(t),n=function t(n){this===Dn&&h(t,cr,n),ut(this,zn)&&ut(this[zn],e)&&(this[zn][e]=!1),dr(this,e,X(1,n))};return s&&ur&&dr(Dn,e,{configurable:!0,set:n}),sr(e,t)},On=En.prototype,oe(On,"toString",(function(){return Qn(this).tag})),oe(En,"withoutSetter",(function(t){return sr(ht(t),t)})),y.f=br,kt.f=mr,Lt.f=Zr,ge.f=pn.f=pr,Se.f=yr,Xn.f=function(t){return sr(Xt(t),t)},s&&(tr(On,"description",{configurable:!0,get:function(){return Qn(this).description}}),oe(Dn,"propertyIsEnumerable",br,{unsafe:!0}))),we({global:!0,wrap:!0,forced:!M,sham:!M},{Symbol:En}),jn(tn(ar),(function(t){In(t)})),we({target:Pn,stat:!0,forced:!M},{for:function(t){var e=$e(t);if(ut(lr,e))return lr[e];var n=En(e);return lr[e]=n,or[n]=e,n},keyFor:function(t){if(!D(t))throw An(t+" is not a symbol");if(ut(or,t))return or[t]},useSetter:function(){ur=!0},useSimple:function(){ur=!1}}),we({target:"Object",stat:!0,forced:!M,sham:!s},{create:function(t,e){return void 0===e?un(t):hr(un(t),e)},defineProperty:mr,defineProperties:hr,getOwnPropertyDescriptor:Zr}),we({target:"Object",stat:!0,forced:!M},{getOwnPropertyNames:pr,getOwnPropertySymbols:yr}),we({target:"Object",stat:!0,forced:d((function(){Se.f(1)}))},{getOwnPropertySymbols:function(t){return Se.f(ot(t))}}),qn){var Xr=!M||d((function(){var t=En();return"[null]"!=qn([t])||"{}"!=qn({a:t})||"{}"!=qn(Object(t))}));we({target:"JSON",stat:!0,forced:Xr},{stringify:function(t,e,n){var r=yn(arguments),i=e;if((N(e)||void 0!==t)&&!D(t))return Me(e)||(e=function(t,e){if(H(i)&&(e=h(i,this,t,e)),!D(e))return e}),r[1]=e,Pe(qn,null,r)}})}if(!On[Mn]){var fr=On.valueOf;oe(On,Mn,(function(t){return h(fr,this)}))}vn(En,Pn),Dt[zn]=!0;var Gr=kt.f,Ir=u.Symbol,Vr=Ir&&Ir.prototype;if(s&&H(Ir)&&(!("description"in Vr)||void 0!==Ir().description)){var Wr={},vr=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:$e(arguments[0]),e=U(Vr,this)?new Ir(t):void 0===t?Ir():Ir(t);return""===t&&(Wr[e]=!0),e};Le(vr,Ir),vr.prototype=Vr,Vr.constructor=vr;var gr="Symbol(test)"==String(Ir("test")),Sr=W(Vr.toString),Yr=W(Vr.valueOf),Rr=/^Symbol\((.*)\)[^)]+$/,Lr=W("".replace),xr=W("".slice);Gr(Vr,"description",{configurable:!0,get:function(){var t=Yr(this),e=Sr(t);if(ut(Wr,t))return"";var n=gr?xr(e,7,-1):Lr(e,Rr,"$1");return""===n?void 0:n}}),we({global:!0,forced:!0},{Symbol:vr})}In("asyncIterator"),In("hasInstance"),In("isConcatSpreadable"),In("iterator"),In("match"),In("matchAll"),In("replace"),In("search"),In("species"),In("split"),In("toPrimitive"),In("toStringTag"),In("unscopables");var Kr=Xt("species"),Jr=function(t){return P>=51||!d((function(){var e=[];return(e.constructor={})[Kr]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Hr=Xt("isConcatSpreadable"),Nr=9007199254740991,Cr="Maximum allowed index exceeded",kr=u.TypeError,Ur=P>=51||!d((function(){var t=[];return t[Hr]=!1,t.concat()[0]!==t})),wr=Jr("concat"),Tr=function(t){if(!N(t))return!1;var e=t[Hr];return void 0!==e?!!e:Me(t)};we({target:"Array",proto:!0,forced:!Ur||!wr},{concat:function(t){var e,n,r,i,c,l=ot(this),o=Un(l,0),a=0;for(e=-1,r=arguments.length;e<r;e++)if(Tr(c=-1===e?l:arguments[e])){if(a+(i=pe(c))>Nr)throw kr(Cr);for(n=0;n<i;n++,a++)n in c&&dn(o,a,c[n])}else{if(a>=Nr)throw kr(Cr);dn(o,a++,c)}return o.length=a,o}});var Fr=Math.min,jr=[].copyWithin||function(t,e){var n=ot(this),r=pe(n),i=he(t,r),c=he(e,r),l=arguments.length>2?arguments[2]:void 0,o=Fr((void 0===l?r:he(l,r))-c,r-i),a=1;for(c<i&&i<c+o&&(a=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:delete n[i],i+=a,c+=a;return n},zr=Xt("unscopables"),Pr=Array.prototype;null==Pr[zr]&&kt.f(Pr,zr,{configurable:!0,value:un(null)});var Mr=function(t){Pr[zr][t]=!0};we({target:"Array",proto:!0},{copyWithin:jr}),Mr("copyWithin");var Br=function(t){for(var e=ot(this),n=pe(e),r=arguments.length,i=he(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,l=void 0===c?n:he(c,n);l>i;)e[i++]=t;return e};we({target:"Array",proto:!0},{fill:Br}),Mr("fill");var Qr=Fn.filter,Dr=Jr("filter");we({target:"Array",proto:!0,forced:!Dr},{filter:function(t){return Qr(this,t,arguments.length>1?arguments[1]:void 0)}});var Er=Fn.find,Or="find",Ar=!0;Or in[]&&Array(1).find((function(){Ar=!1})),we({target:"Array",proto:!0,forced:Ar},{find:function(t){return Er(this,t,arguments.length>1?arguments[1]:void 0)}}),Mr(Or);var _r=Fn.findIndex,qr="findIndex",$r=!0;qr in[]&&Array(1).findIndex((function(){$r=!1})),we({target:"Array",proto:!0,forced:$r},{findIndex:function(t){return _r(this,t,arguments.length>1?arguments[1]:void 0)}}),Mr(qr);var ti=u.TypeError,ei=function t(e,n,r,i,c,l,o,a){for(var u,d=c,s=0,m=!!o&&Sn(o,a);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],l>0&&Me(u))d=t(e,n,u,pe(u),d,l-1)-1;else{if(d>=9007199254740991)throw ti("Exceed the acceptable array length");e[d]=u}d++}s++}return d};we({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=ot(this),n=pe(e),r=Un(e,0);return r.length=ei(r,e,e,n,0,void 0===t?1:de(t)),r}}),we({target:"Array",proto:!0},{flatMap:function(t){var e,n=ot(this),r=pe(n);return _(t),(e=Un(n,0)).length=ei(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var ni=function(t,e,n){var r,i;Jt(t);try{if(!(r=q(t,"return"))){if("throw"===e)throw n;return n}r=h(r,t)}catch(t){i=!0,r=t}if("throw"===e)throw n;if(i)throw r;return Jt(r),n},ri=function(t,e,n,r){try{return r?e(Jt(n)[0],n[1]):e(n)}catch(e){ni(t,"throw",e)}},ii={},ci=Xt("iterator"),li=Array.prototype,oi=function(t){return void 0!==t&&(ii.Array===t||li[ci]===t)},ai=Xt("iterator"),ui=function(t){if(null!=t)return q(t,ai)||q(t,"@@iterator")||ii[_e(t)]},di=u.TypeError,si=function(t,e){var n=arguments.length<2?ui(t):e;if(_(n))return Jt(h(n,t));throw di(O(t)+" is not iterable")},mi=u.Array,hi=function(t){var e=ot(t),n=Nn(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Sn(i,r>2?arguments[2]:void 0));var l,o,a,u,d,s,m=ui(e),b=0;if(!m||this==mi&&oi(m))for(l=pe(e),o=n?new this(l):mi(l);l>b;b++)s=c?i(e[b],b):e[b],dn(o,b,s);else for(d=(u=si(e,m)).next,o=n?new this:[];!(a=h(d,u)).done;b++)s=c?ri(u,i,[a.value,b],!0):a.value,dn(o,b,s);return o.length=b,o},bi=Xt("iterator"),Zi=!1;try{var pi=0,yi={next:function(){return{done:!!pi++}},return:function(){Zi=!0}};yi[bi]=function(){return this},Array.from(yi,(function(){throw 2}))}catch(t){}var Xi=function(t,e){if(!e&&!Zi)return!1;var n=!1;try{var r={};r[bi]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},fi=!Xi((function(t){Array.from(t)}));we({target:"Array",stat:!0,forced:fi},{from:hi});var Gi=Xe.includes;we({target:"Array",proto:!0},{includes:function(t){return Gi(this,t,arguments.length>1?arguments[1]:void 0)}}),Mr("includes");var Ii=function(t,e){var n=[][t];return!!n&&d((function(){n.call(null,e||function(){throw 1},1)}))},Vi=Xe.indexOf,Wi=W([].indexOf),vi=!!Wi&&1/Wi([1],1,-0)<0,gi=Ii("indexOf");we({target:"Array",proto:!0,forced:vi||!gi},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return vi?Wi(this,t,e)||0:Vi(this,t,e)}});var Si,Yi,Ri,Li=!d((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),xi=Qt("IE_PROTO"),Ki=u.Object,Ji=Ki.prototype,Hi=Li?Ki.getPrototypeOf:function(t){var e=ot(t);if(ut(e,xi))return e[xi];var n=e.constructor;return H(n)&&e instanceof n?n.prototype:e instanceof Ki?Ji:null},Ni=Xt("iterator"),Ci=!1;[].keys&&("next"in(Ri=[].keys())?(Yi=Hi(Hi(Ri)))!==Object.prototype&&(Si=Yi):Ci=!0);var ki=null==Si||d((function(){var t={};return Si[Ni].call(t)!==t}));ki&&(Si={}),H(Si[Ni])||oe(Si,Ni,(function(){return this}));var Ui={IteratorPrototype:Si,BUGGY_SAFARI_ITERATORS:Ci},wi=Ui.IteratorPrototype,Ti=function(){return this},Fi=function(t,e,n,r){var i=e+" Iterator";return t.prototype=un(wi,{next:X(+!r,n)}),vn(t,i,!1),ii[i]=Ti,t},ji=u.String,zi=u.TypeError,Pi=function(t){if("object"==o(t)||H(t))return t;throw zi("Can't set "+ji(t)+" as a prototype")},Mi=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=W(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return Jt(n),Pi(r),e?t(n,r):n.__proto__=r,n}}():void 0),Bi=le.PROPER,Qi=le.CONFIGURABLE,Di=Ui.IteratorPrototype,Ei=Ui.BUGGY_SAFARI_ITERATORS,Oi=Xt("iterator"),Ai="keys",_i="values",qi="entries",$i=function(){return this},tc=function(t,e,n,r,i,c,l){Fi(n,e,r);var o,a,u,d=function(t){if(t===i&&p)return p;if(!Ei&&t in b)return b[t];switch(t){case Ai:case _i:case qi:return function(){return new n(this,t)}}return function(){return new n(this)}},s=e+" Iterator",m=!1,b=t.prototype,Z=b[Oi]||b["@@iterator"]||i&&b[i],p=!Ei&&Z||d(i),y="Array"==e&&b.entries||Z;if(y&&(o=Hi(y.call(new t)))!==Object.prototype&&o.next&&(Hi(o)!==Di&&(Mi?Mi(o,Di):H(o[Oi])||oe(o,Oi,$i)),vn(o,s,!0)),Bi&&i==_i&&Z&&Z.name!==_i&&(Qi?Ut(b,"name",_i):(m=!0,p=function(){return h(Z,this)})),i)if(a={values:d(_i),keys:c?p:d(Ai),entries:d(qi)},l)for(u in a)(Ei||m||!(u in b))&&oe(b,u,a[u]);else we({target:e,proto:!0,forced:Ei||m},a);return b[Oi]!==p&&oe(b,Oi,p,{name:i}),ii[e]=p,a},ec="Array Iterator",nc=ne.set,rc=ne.getterFor(ec),ic=tc(Array,"Array",(function(t,e){nc(this,{type:ec,target:J(t),index:0,kind:e})}),(function(){var t=rc(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values");ii.Arguments=ii.Array,Mr("keys"),Mr("values"),Mr("entries");var cc=W([].join),lc=L!=Object,oc=Ii("join",",");we({target:"Array",proto:!0,forced:lc||!oc},{join:function(t){return cc(J(this),void 0===t?",":t)}});var ac=Math.min,uc=[].lastIndexOf,dc=!!uc&&1/[1].lastIndexOf(1,-0)<0,sc=Ii("lastIndexOf"),mc=dc||!sc?function(t){if(dc)return Pe(uc,this,arguments)||0;var e=J(this),n=pe(e),r=n-1;for(arguments.length>1&&(r=ac(r,de(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}:uc;we({target:"Array",proto:!0,forced:mc!==[].lastIndexOf},{lastIndexOf:mc});var hc=Fn.map,bc=Jr("map");we({target:"Array",proto:!0,forced:!bc},{map:function(t){return hc(this,t,arguments.length>1?arguments[1]:void 0)}});var Zc=u.Array,pc=d((function(){function t(){}return!(Zc.of.call(t)instanceof t)}));we({target:"Array",stat:!0,forced:pc},{of:function(){for(var t=0,e=arguments.length,n=new(Nn(this)?this:Zc)(e);e>t;)dn(n,t,arguments[t++]);return n.length=e,n}});var yc=u.TypeError,Xc=function(t){return function(e,n,r,i){_(n);var c=ot(e),l=L(c),o=pe(c),a=t?o-1:0,u=t?-1:1;if(r<2)for(;;){if(a in l){i=l[a],a+=u;break}if(a+=u,t?a<0:o<=a)throw yc("Reduce of empty array with no initial value")}for(;t?a>=0:o>a;a+=u)a in l&&(i=n(i,l[a],a,c));return i}},fc={left:Xc(!1),right:Xc(!0)},Gc="process"==S(u.process),Ic=fc.left,Vc=Ii("reduce");we({target:"Array",proto:!0,forced:!Vc||!Gc&&P>79&&P<83},{reduce:function(t){var e=arguments.length;return Ic(this,t,e,e>1?arguments[1]:void 0)}});var Wc=fc.right,vc=Ii("reduceRight");we({target:"Array",proto:!0,forced:!vc||!Gc&&P>79&&P<83},{reduceRight:function(t){return Wc(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}});var gc=Jr("slice"),Sc=Xt("species"),Yc=u.Array,Rc=Math.max;we({target:"Array",proto:!0,forced:!gc},{slice:function(t,e){var n,r,i,c=J(this),l=pe(c),o=he(t,l),a=he(void 0===e?l:e,l);if(Me(c)&&(n=c.constructor,(Nn(n)&&(n===Yc||Me(n.prototype))||N(n)&&null===(n=n[Sc]))&&(n=void 0),n===Yc||void 0===n))return yn(c,o,a);for(r=new(void 0===n?Yc:n)(Rc(a-o,0)),i=0;o<a;o++,i++)o in c&&dn(r,i,c[o]);return r.length=i,r}});var Lc=Math.floor,xc=function(t,e){for(var n,r,i=t.length,c=1;c<i;){for(r=c,n=t[c];r&&e(t[r-1],n)>0;)t[r]=t[--r];r!==c++&&(t[r]=n)}return t},Kc=function(t,e,n,r){for(var i=e.length,c=n.length,l=0,o=0;l<i||o<c;)t[l+o]=l<i&&o<c?r(e[l],n[o])<=0?e[l++]:n[o++]:l<i?e[l++]:n[o++];return t},Jc=function t(e,n){var r=e.length,i=Lc(r/2);return r<8?xc(e,n):Kc(e,t(hn(e,0,i),n),t(hn(e,i),n),n)},Hc=w.match(/firefox\/(\d+)/i),Nc=!!Hc&&+Hc[1],Cc=/MSIE|Trident/.test(w),kc=w.match(/AppleWebKit\/(\d+)\./),Uc=!!kc&&+kc[1],wc=[],Tc=W(wc.sort),Fc=W(wc.push),jc=d((function(){wc.sort(void 0)})),zc=d((function(){wc.sort(null)})),Pc=Ii("sort"),Mc=!d((function(){if(P)return P<70;if(!(Nc&&Nc>3)){if(Cc)return!0;if(Uc)return Uc<603;var t,e,n,r,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)wc.push({k:e+r,v:n})}for(wc.sort((function(t,e){return e.v-t.v})),r=0;r<wc.length;r++)e=wc[r].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));we({target:"Array",proto:!0,forced:jc||!zc||!Pc||!Mc},{sort:function(t){void 0!==t&&_(t);var e=ot(this);if(Mc)return void 0===t?Tc(e):Tc(e,t);var n,r,i=[],c=pe(e);for(r=0;r<c;r++)r in e&&Fc(i,e[r]);for(Jc(i,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:$e(e)>$e(n)?1:-1}}(t)),n=i.length,r=0;r<n;)e[r]=i[r++];for(;r<c;)delete e[r++];return e}});var Bc=Xt("species"),Qc=function(t){var e=k(t),n=kt.f;s&&e&&!e[Bc]&&n(e,Bc,{configurable:!0,get:function(){return this}})};Qc("Array");var Dc=Jr("splice"),Ec=u.TypeError,Oc=Math.max,Ac=Math.min,_c=9007199254740991,qc="Maximum allowed length exceeded";we({target:"Array",proto:!0,forced:!Dc},{splice:function(t,e){var n,r,i,c,l,o,a=ot(this),u=pe(a),d=he(t,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=Ac(Oc(de(e),0),u-d)),u+n-r>_c)throw Ec(qc);for(i=Un(a,r),c=0;c<r;c++)(l=d+c)in a&&dn(i,c,a[l]);if(i.length=r,n<r){for(c=d;c<u-r;c++)o=c+n,(l=c+r)in a?a[o]=a[l]:delete a[o];for(c=u;c>u-r+n;c--)delete a[c-1]}else if(n>r)for(c=u-r;c>d;c--)o=c+n-1,(l=c+r-1)in a?a[o]=a[l]:delete a[o];for(c=0;c<n;c++)a[c+d]=arguments[c+2];return a.length=u-r+n,i}}),Mr("flat"),Mr("flatMap");var $c="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,tl=function(t,e,n){for(var r in e)oe(t,r,e[r],n);return t},el=u.TypeError,nl=function(t,e){if(U(e,t))return t;throw el("Incorrect invocation")},rl=u.RangeError,il=function(t){if(void 0===t)return 0;var e=de(t),n=Ze(e);if(e!==n)throw rl("Wrong length or index");return n},cl=u.Array,ll=Math.abs,ol=Math.pow,al=Math.floor,ul=Math.log,dl=Math.LN2,sl=function(t,e,n){var r,i,c,l=cl(n),o=8*n-e-1,a=(1<<o)-1,u=a>>1,d=23===e?ol(2,-24)-ol(2,-77):0,s=t<0||0===t&&1/t<0?1:0,m=0;for((t=ll(t))!=t||t===1/0?(i=t!=t?1:0,r=a):(r=al(ul(t)/dl),t*(c=ol(2,-r))<1&&(r--,c*=2),(t+=r+u>=1?d/c:d*ol(2,1-u))*c>=2&&(r++,c/=2),r+u>=a?(i=0,r=a):r+u>=1?(i=(t*c-1)*ol(2,e),r+=u):(i=t*ol(2,u-1)*ol(2,e),r=0));e>=8;)l[m++]=255&i,i/=256,e-=8;for(r=r<<e|i,o+=e;o>0;)l[m++]=255&r,r/=256,o-=8;return l[--m]|=128*s,l},ml=function(t,e){var n,r=t.length,i=8*r-e-1,c=(1<<i)-1,l=c>>1,o=i-7,a=r-1,u=t[a--],d=127&u;for(u>>=7;o>0;)d=256*d+t[a--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=e;o>0;)n=256*n+t[a--],o-=8;if(0===d)d=1-l;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=ol(2,e),d-=l}return(u?-1:1)*n*ol(2,d-e)},hl=ge.f,bl=kt.f,Zl=le.PROPER,pl=le.CONFIGURABLE,yl=ne.get,Xl=ne.set,fl="ArrayBuffer",Gl="DataView",Il="Wrong index",Vl=u.ArrayBuffer,Wl=Vl,vl=Wl&&Wl.prototype,gl=u.DataView,Sl=gl&&gl.prototype,Yl=Object.prototype,Rl=u.Array,Ll=u.RangeError,xl=W(Br),Kl=W([].reverse),Jl=sl,Hl=ml,Nl=function(t){return[255&t]},Cl=function(t){return[255&t,t>>8&255]},kl=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Ul=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},wl=function(t){return Jl(t,23,4)},Tl=function(t){return Jl(t,52,8)},Fl=function(t,e){bl(t.prototype,e,{get:function(){return yl(this)[e]}})},jl=function(t,e,n,r){var i=il(n),c=yl(t);if(i+e>c.byteLength)throw Ll(Il);var l=yl(c.buffer).bytes,o=i+c.byteOffset,a=hn(l,o,o+e);return r?a:Kl(a)},zl=function(t,e,n,r,i,c){var l=il(n),o=yl(t);if(l+e>o.byteLength)throw Ll(Il);for(var a=yl(o.buffer).bytes,u=l+o.byteOffset,d=r(+i),s=0;s<e;s++)a[u+s]=d[c?s:e-s-1]};if($c){var Pl=Zl&&Vl.name!==fl;if(d((function(){Vl(1)}))&&d((function(){new Vl(-1)}))&&!d((function(){return new Vl,new Vl(1.5),new Vl(NaN),Pl&&!pl})))Pl&&pl&&Ut(Vl,"name",fl);else{(Wl=function(t){return nl(this,vl),new Vl(il(t))}).prototype=vl;for(var Ml,Bl=hl(Vl),Ql=0;Bl.length>Ql;)(Ml=Bl[Ql++])in Wl||Ut(Wl,Ml,Vl[Ml]);vl.constructor=Wl}Mi&&Hi(Sl)!==Yl&&Mi(Sl,Yl);var Dl=new gl(new Wl(2)),El=W(Sl.setInt8);Dl.setInt8(0,2147483648),Dl.setInt8(1,2147483649),!Dl.getInt8(0)&&Dl.getInt8(1)||tl(Sl,{setInt8:function(t,e){El(this,t,e<<24>>24)},setUint8:function(t,e){El(this,t,e<<24>>24)}},{unsafe:!0})}else Wl=function(t){nl(this,vl);var e=il(t);Xl(this,{bytes:xl(Rl(e),0),byteLength:e}),s||(this.byteLength=e)},vl=Wl.prototype,gl=function(t,e,n){nl(this,Sl),nl(t,vl);var r=yl(t).byteLength,i=de(e);if(i<0||i>r)throw Ll("Wrong offset");if(i+(n=void 0===n?r-i:Ze(n))>r)throw Ll("Wrong length");Xl(this,{buffer:t,byteLength:n,byteOffset:i}),s||(this.buffer=t,this.byteLength=n,this.byteOffset=i)},Sl=gl.prototype,s&&(Fl(Wl,"byteLength"),Fl(gl,"buffer"),Fl(gl,"byteLength"),Fl(gl,"byteOffset")),tl(Sl,{getInt8:function(t){return jl(this,1,t)[0]<<24>>24},getUint8:function(t){return jl(this,1,t)[0]},getInt16:function(t){var e=jl(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=jl(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Ul(jl(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Ul(jl(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Hl(jl(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Hl(jl(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){zl(this,1,t,Nl,e)},setUint8:function(t,e){zl(this,1,t,Nl,e)},setInt16:function(t,e){zl(this,2,t,Cl,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){zl(this,2,t,Cl,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){zl(this,4,t,kl,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){zl(this,4,t,kl,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){zl(this,4,t,wl,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){zl(this,8,t,Tl,e,arguments.length>2?arguments[2]:void 0)}});vn(Wl,fl),vn(gl,Gl);var Ol={ArrayBuffer:Wl,DataView:gl},Al="ArrayBuffer",_l=Ol.ArrayBuffer,ql=u.ArrayBuffer;we({global:!0,forced:ql!==_l},{ArrayBuffer:_l}),Qc(Al);var $l=u.TypeError,to=Xt("toPrimitive"),eo=Date.prototype;ut(eo,to)||oe(eo,to,(function(t){if(Jt(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw $l("Incorrect hint");return tt(this,t)}));var no=Xt("hasInstance"),ro=Function.prototype;no in ro||kt.f(ro,no,{value:function(t){if(!H(this)||!N(t))return!1;var e=this.prototype;if(!N(e))return t instanceof this;for(;t=Hi(t);)if(e===t)return!0;return!1}});var io=le.EXISTS,co=kt.f,lo=Function.prototype,oo=W(lo.toString),ao=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,uo=W(ao.exec);s&&!io&&co(lo,"name",{configurable:!0,get:function(){try{return uo(ao,oo(this))[1]}catch(t){return""}}}),we({global:!0},{globalThis:u});var so=u.Array,mo=k("JSON","stringify"),ho=W(/./.exec),bo=W("".charAt),Zo=W("".charCodeAt),po=W("".replace),yo=W(1..toString),Xo=/[\uD800-\uDFFF]/g,fo=/^[\uD800-\uDBFF]$/,Go=/^[\uDC00-\uDFFF]$/,Io=function(t,e,n){var r=bo(n,e-1),i=bo(n,e+1);return ho(fo,t)&&!ho(Go,i)||ho(Go,t)&&!ho(fo,r)?"\\u"+yo(Zo(t,0),16):t},Vo=d((function(){return'"\\udf06\\ud834"'!==mo("\udf06\ud834")||'"\\udead"'!==mo("\udead")}));mo&&we({target:"JSON",stat:!0,forced:Vo},{stringify:function(t,e,n){for(var r=0,i=arguments.length,c=so(i);r<i;r++)c[r]=arguments[r];var l=Pe(mo,null,c);return"string"==typeof l?po(l,Xo,Io):l}}),vn(u.JSON,"JSON",!0);var Wo=d((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),vo=Object.isExtensible,go=d((function(){vo(1)}))||Wo?function(t){return!!N(t)&&((!Wo||"ArrayBuffer"!=S(t))&&(!vo||vo(t)))}:vo,So=!d((function(){return Object.isExtensible(Object.preventExtensions({}))})),Yo=r((function(t){var e=kt.f,n=!1,r=ht("meta"),i=0,c=function(t){e(t,r,{value:{objectID:"O"+i++,weakData:{}}})},l=t.exports={enable:function(){l.enable=function(){},n=!0;var t=ge.f,e=W([].splice),i={};i[r]=1,t(i).length&&(ge.f=function(n){for(var i=t(n),c=0,l=i.length;c<l;c++)if(i[c]===r){e(i,c,1);break}return i},we({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:pn.f}))},fastKey:function(t,e){if(!N(t))return"symbol"==o(t)?t:("string"==typeof t?"S":"P")+t;if(!ut(t,r)){if(!go(t))return"F";if(!e)return"E";c(t)}return t[r].objectID},getWeakData:function(t,e){if(!ut(t,r)){if(!go(t))return!0;if(!e)return!1;c(t)}return t[r].weakData},onFreeze:function(t){return So&&n&&go(t)&&!ut(t,r)&&c(t),t}};Dt[r]=!0})),Ro=u.TypeError,Lo=function(t,e){this.stopped=t,this.result=e},xo=Lo.prototype,Ko=function(t,e,n){var r,i,c,l,a,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),Z=!(!n||!n.INTERRUPTED),p=Sn(e,s),y=function(t){return r&&ni(r,"normal",t),new Lo(!0,t)},X=function(t){return m?(Jt(t),Z?p(t[0],t[1],y):p(t[0],t[1])):Z?p(t,y):p(t)};if(b)r=t;else{if(!(i=ui(t)))throw Ro(O(t)+" is not iterable");if(oi(i)){for(c=0,l=pe(t);l>c;c++)if((a=X(t[c]))&&U(xo,a))return a;return new Lo(!1)}r=si(t,i)}for(u=r.next;!(d=h(u,r)).done;){try{a=X(d.value)}catch(t){ni(r,"throw",t)}if("object"==o(a)&&a&&U(xo,a))return a}return new Lo(!1)},Jo=function(t,e,n){var r,i;return Mi&&H(r=e.constructor)&&r!==n&&N(i=r.prototype)&&i!==n.prototype&&Mi(t,i),t},Ho=function(t,e,n){var r=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),c=r?"set":"add",l=u[t],o=l&&l.prototype,a=l,s={},m=function(t){var e=W(o[t]);oe(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!N(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return i&&!N(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!N(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(ke(t,!H(l)||!(i||o.forEach&&!d((function(){(new l).entries().next()})))))a=n.getConstructor(e,t,r,c),Yo.enable();else if(ke(t,!0)){var h=new a,b=h[c](i?{}:-0,1)!=h,Z=d((function(){h.has(1)})),p=Xi((function(t){new l(t)})),y=!i&&d((function(){for(var t=new l,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((a=e((function(t,e){nl(t,o);var n=Jo(new l,t,a);return null!=e&&Ko(e,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=a),(Z||y)&&(m("delete"),m("has"),r&&m("get")),(y||b)&&m(c),i&&o.clear&&delete o.clear}return s[t]=a,we({global:!0,forced:a!=l},s),vn(a,t),i||n.setStrong(a,t,r),a},No=kt.f,Co=Yo.fastKey,ko=ne.set,Uo=ne.getterFor,wo={getConstructor:function(t,e,n,r){var i=t((function(t,i){nl(t,c),ko(t,{type:e,index:un(null),first:void 0,last:void 0,size:0}),s||(t.size=0),null!=i&&Ko(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,l=Uo(e),o=function(t,e,n){var r,i,c=l(t),o=a(t,e);return o?o.value=n:(c.last=o={index:i=Co(e,!0),key:e,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),s?c.size++:t.size++,"F"!==i&&(c.index[i]=o)),t},a=function(t,e){var n,r=l(t),i=Co(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return tl(c,{clear:function(){for(var t=l(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,s?t.size=0:this.size=0},delete:function(t){var e=this,n=l(e),r=a(e,t);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),s?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=l(this),r=Sn(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!a(this,t)}}),tl(c,n?{get:function(t){var e=a(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),s&&No(c,"size",{get:function(){return l(this).size}}),i},setStrong:function(t,e,n){var r=e+" Iterator",i=Uo(e),c=Uo(r);tc(t,e,(function(t,e){ko(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Qc(e)}};Ho("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),wo);var To=Math.log,Fo=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:To(1+t)},jo=Math.acosh,zo=Math.log,Po=Math.sqrt,Mo=Math.LN2,Bo=!jo||710!=Math.floor(jo(Number.MAX_VALUE))||jo(1/0)!=1/0;we({target:"Math",stat:!0,forced:Bo},{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?zo(t)+Mo:Fo(t-1+Po(t-1)*Po(t+1))}});var Qo=Math.asinh,Do=Math.log,Eo=Math.sqrt;we({target:"Math",stat:!0,forced:!(Qo&&1/Qo(0)>0)},{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Do(e+Eo(e*e+1)):e}});var Oo=Math.atanh,Ao=Math.log;we({target:"Math",stat:!0,forced:!(Oo&&1/Oo(-0)<0)},{atanh:function(t){return 0==(t=+t)?t:Ao((1+t)/(1-t))/2}});var _o=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1},qo=Math.abs,$o=Math.pow;we({target:"Math",stat:!0},{cbrt:function(t){return _o(t=+t)*$o(qo(t),1/3)}});var ta=Math.floor,ea=Math.log,na=Math.LOG2E;we({target:"Math",stat:!0},{clz32:function(t){return(t>>>=0)?31-ta(ea(t+.5)*na):32}});var ra=Math.expm1,ia=Math.exp,ca=!ra||ra(10)>22025.465794806718||ra(10)<22025.465794806718||-2e-17!=ra(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:ia(t)-1}:ra,la=Math.cosh,oa=Math.abs,aa=Math.E;we({target:"Math",stat:!0,forced:!la||la(710)===1/0},{cosh:function(t){var e=ca(oa(t)-1)+1;return(e+1/(e*aa*aa))*(aa/2)}}),we({target:"Math",stat:!0,forced:ca!=Math.expm1},{expm1:ca});var ua=Math.abs,da=Math.pow,sa=da(2,-52),ma=da(2,-23),ha=da(2,127)*(2-ma),ba=da(2,-126),Za=Math.fround||function(t){var e,n,r=ua(t),i=_o(t);return r<ba?i*function(t){return t+1/sa-1/sa}(r/ba/ma)*ba*ma:(n=(e=(1+ma/sa)*r)-(e-r))>ha||n!=n?i*(1/0):i*n};we({target:"Math",stat:!0},{fround:Za});var pa=Math.hypot,ya=Math.abs,Xa=Math.sqrt,fa=!!pa&&pa(1/0,NaN)!==1/0;we({target:"Math",stat:!0,forced:fa},{hypot:function(t,e){for(var n,r,i=0,c=0,l=arguments.length,o=0;c<l;)o<(n=ya(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*Xa(i)}});var Ga=Math.imul,Ia=d((function(){return-5!=Ga(4294967295,5)||2!=Ga.length}));we({target:"Math",stat:!0,forced:Ia},{imul:function(t,e){var n=65535,r=+t,i=+e,c=n&r,l=n&i;return 0|c*l+((n&r>>>16)*l+c*(n&i>>>16)<<16>>>0)}});var Va=Math.log,Wa=Math.LOG10E;we({target:"Math",stat:!0},{log10:function(t){return Va(t)*Wa}}),we({target:"Math",stat:!0},{log1p:Fo});var va=Math.log,ga=Math.LN2;we({target:"Math",stat:!0},{log2:function(t){return va(t)/ga}}),we({target:"Math",stat:!0},{sign:_o});var Sa=Math.abs,Ya=Math.exp,Ra=Math.E,La=d((function(){return-2e-17!=Math.sinh(-2e-17)}));we({target:"Math",stat:!0,forced:La},{sinh:function(t){return Sa(t=+t)<1?(ca(t)-ca(-t))/2:(Ya(t-1)-Ya(-t-1))*(Ra/2)}});var xa=Math.exp;we({target:"Math",stat:!0},{tanh:function(t){var e=ca(t=+t),n=ca(-t);return e==1/0?1:n==1/0?-1:(e-n)/(xa(t)+xa(-t))}}),vn(Math,"Math",!0);var Ka=Math.ceil,Ja=Math.floor;we({target:"Math",stat:!0},{trunc:function(t){return(t>0?Ja:Ka)(t)}});var Ha=W(1..valueOf),Na="\t\n\v\f\r \u2028\u2029\ufeff",Ca=W("".replace),ka="["+Na+"]",Ua=RegExp("^"+ka+ka+"*"),wa=RegExp(ka+ka+"*$"),Ta=function(t){return function(e){var n=$e(K(e));return 1&t&&(n=Ca(n,Ua,"")),2&t&&(n=Ca(n,wa,"")),n}},Fa={start:Ta(1),end:Ta(2),trim:Ta(3)},ja=ge.f,za=Lt.f,Pa=kt.f,Ma=Fa.trim,Ba="Number",Qa=u.Number,Da=Qa.prototype,Ea=u.TypeError,Oa=W("".slice),Aa=W("".charCodeAt),_a=function(t){var e=It(t,"number");return"bigint"==typeof e?e:qa(e)},qa=function(t){var e,n,r,i,c,l,o,a,u=It(t,"number");if(D(u))throw Ea("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=Ma(u),43===(e=Aa(u,0))||45===e){if(88===(n=Aa(u,2))||120===n)return NaN}else if(48===e){switch(Aa(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(l=(c=Oa(u,2)).length,o=0;o<l;o++)if((a=Aa(c,o))<48||a>i)return NaN;return parseInt(c,r)}return+u};if(ke(Ba,!Qa(" 0o1")||!Qa("0b1")||Qa("+0x1"))){for(var $a,tu=function(t){var e=arguments.length<1?0:Qa(_a(t)),n=this;return U(Da,n)&&d((function(){Ha(n)}))?Jo(Object(e),n,tu):e},eu=s?ja(Qa):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),nu=0;eu.length>nu;nu++)ut(Qa,$a=eu[nu])&&!ut(tu,$a)&&Pa(tu,$a,za(Qa,$a));tu.prototype=Da,Da.constructor=tu,oe(u,Ba,tu)}we({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var ru=u.isFinite,iu=Number.isFinite||function(t){return"number"==typeof t&&ru(t)};we({target:"Number",stat:!0},{isFinite:iu});var cu=Math.floor,lu=Number.isInteger||function(t){return!N(t)&&isFinite(t)&&cu(t)===t};we({target:"Number",stat:!0},{isInteger:lu}),we({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var ou=Math.abs;we({target:"Number",stat:!0},{isSafeInteger:function(t){return lu(t)&&ou(t)<=9007199254740991}}),we({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),we({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var au=Fa.trim,uu=W("".charAt),du=u.parseFloat,su=u.Symbol,mu=su&&su.iterator,hu=1/du(Na+"-0")!=-1/0||mu&&!d((function(){du(Object(mu))}))?function(t){var e=au($e(t)),n=du(e);return 0===n&&"-"==uu(e,0)?-0:n}:du;we({target:"Number",stat:!0,forced:Number.parseFloat!=hu},{parseFloat:hu});var bu=Fa.trim,Zu=u.parseInt,pu=u.Symbol,yu=pu&&pu.iterator,Xu=/^[+-]?0x/i,fu=W(Xu.exec),Gu=8!==Zu(Na+"08")||22!==Zu(Na+"0x16")||yu&&!d((function(){Zu(Object(yu))}))?function(t,e){var n=bu($e(t));return Zu(n,e>>>0||(fu(Xu,n)?16:10))}:Zu;we({target:"Number",stat:!0,forced:Number.parseInt!=Gu},{parseInt:Gu});var Iu=u.RangeError,Vu=function(t){var e=$e(K(this)),n="",r=de(t);if(r<0||r==1/0)throw Iu("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(e+=e))1&r&&(n+=e);return n},Wu=u.RangeError,vu=u.String,gu=Math.floor,Su=W(Vu),Yu=W("".slice),Ru=W(1..toFixed),Lu=function t(e,n,r){return 0===n?r:n%2==1?t(e,n-1,r*e):t(e*e,n/2,r)},xu=function(t,e,n){for(var r=-1,i=n;++r<6;)i+=e*t[r],t[r]=i%1e7,i=gu(i/1e7)},Ku=function(t,e){for(var n=6,r=0;--n>=0;)r+=t[n],t[n]=gu(r/e),r=r%e*1e7},Ju=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var r=vu(t[e]);n=""===n?r:n+Su("0",7-r.length)+r}return n},Hu=d((function(){return"0.000"!==Ru(8e-5,3)||"1"!==Ru(.9,0)||"1.25"!==Ru(1.255,2)||"1000000000000000128"!==Ru(0xde0b6b3a7640080,0)}))||!d((function(){Ru({})}));we({target:"Number",proto:!0,forced:Hu},{toFixed:function(t){var e,n,r,i,c=Ha(this),l=de(t),o=[0,0,0,0,0,0],a="",u="0";if(l<0||l>20)throw Wu("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return vu(c);if(c<0&&(a="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*Lu(2,69,1))-69,n=e<0?c*Lu(2,-e,1):c/Lu(2,e,1),n*=4503599627370496,(e=52-e)>0){for(xu(o,0,n),r=l;r>=7;)xu(o,1e7,0),r-=7;for(xu(o,Lu(10,r,1),0),r=e-1;r>=23;)Ku(o,1<<23),r-=23;Ku(o,1<<r),xu(o,1,1),Ku(o,2),u=Ju(o)}else xu(o,0,n),xu(o,1<<-e,0),u=Ju(o)+Su("0",l);return u=l>0?a+((i=u.length)<=l?"0."+Su("0",l-i)+u:Yu(u,0,i-l)+"."+Yu(u,i-l)):a+u}});var Nu=Object.assign,Cu=Object.defineProperty,ku=W([].concat),Uu=!Nu||d((function(){if(s&&1!==Nu({b:1},Nu(Cu({},"a",{enumerable:!0,get:function(){Cu(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=Nu({},t)[n]||tn(Nu({},e)).join("")!=r}))?function(t,e){for(var n=ot(t),r=arguments.length,i=1,c=Se.f,l=y.f;r>i;)for(var o,a=L(arguments[i++]),u=c?ku(tn(a),c(a)):tn(a),d=u.length,m=0;d>m;)o=u[m++],s&&!h(l,a,o)||(n[o]=a[o]);return n}:Nu;we({target:"Object",stat:!0,forced:Object.assign!==Uu},{assign:Uu});var wu=!d((function(){if(!(Uc&&Uc<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete u[t]}}));s&&we({target:"Object",proto:!0,forced:wu},{__defineGetter__:function(t,e){kt.f(ot(this),t,{get:_(e),enumerable:!0,configurable:!0})}}),s&&we({target:"Object",proto:!0,forced:wu},{__defineSetter__:function(t,e){kt.f(ot(this),t,{set:_(e),enumerable:!0,configurable:!0})}});var Tu=y.f,Fu=W(Tu),ju=W([].push),zu=function(t){return function(e){for(var n,r=J(e),i=tn(r),c=i.length,l=0,o=[];c>l;)n=i[l++],s&&!Fu(r,n)||ju(o,t?[n,r[n]]:r[n]);return o}},Pu={entries:zu(!0),values:zu(!1)},Mu=Pu.entries;we({target:"Object",stat:!0},{entries:function(t){return Mu(t)}});var Bu=Yo.onFreeze,Qu=Object.freeze,Du=d((function(){Qu(1)}));we({target:"Object",stat:!0,forced:Du,sham:!So},{freeze:function(t){return Qu&&N(t)?Qu(Bu(t)):t}}),we({target:"Object",stat:!0},{fromEntries:function(t){var e={};return Ko(t,(function(t,n){dn(e,t,n)}),{AS_ENTRIES:!0}),e}});var Eu=Lt.f,Ou=d((function(){Eu(1)}));we({target:"Object",stat:!0,forced:!s||Ou,sham:!s},{getOwnPropertyDescriptor:function(t,e){return Eu(J(t),e)}}),we({target:"Object",stat:!0,sham:!s},{getOwnPropertyDescriptors:function(t){for(var e,n,r=J(t),i=Lt.f,c=Re(r),l={},o=0;c.length>o;)void 0!==(n=i(r,e=c[o++]))&&dn(l,e,n);return l}});var Au=pn.f,_u=d((function(){return!Object.getOwnPropertyNames(1)}));we({target:"Object",stat:!0,forced:_u},{getOwnPropertyNames:Au});var qu=d((function(){Hi(1)}));we({target:"Object",stat:!0,forced:qu,sham:!Li},{getPrototypeOf:function(t){return Hi(ot(t))}});var $u=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};we({target:"Object",stat:!0},{is:$u}),we({target:"Object",stat:!0,forced:Object.isExtensible!==go},{isExtensible:go});var td=Object.isFrozen,ed=d((function(){td(1)}));we({target:"Object",stat:!0,forced:ed||Wo},{isFrozen:function(t){return!N(t)||(!(!Wo||"ArrayBuffer"!=S(t))||!!td&&td(t))}});var nd=Object.isSealed,rd=d((function(){nd(1)}));we({target:"Object",stat:!0,forced:rd||Wo},{isSealed:function(t){return!N(t)||(!(!Wo||"ArrayBuffer"!=S(t))||!!nd&&nd(t))}});var id=d((function(){tn(1)}));we({target:"Object",stat:!0,forced:id},{keys:function(t){return tn(ot(t))}});var cd=Lt.f;s&&we({target:"Object",proto:!0,forced:wu},{__lookupGetter__:function(t){var e,n=ot(this),r=Vt(t);do{if(e=cd(n,r))return e.get}while(n=Hi(n))}});var ld=Lt.f;s&&we({target:"Object",proto:!0,forced:wu},{__lookupSetter__:function(t){var e,n=ot(this),r=Vt(t);do{if(e=ld(n,r))return e.set}while(n=Hi(n))}});var od=Yo.onFreeze,ad=Object.preventExtensions,ud=d((function(){ad(1)}));we({target:"Object",stat:!0,forced:ud,sham:!So},{preventExtensions:function(t){return ad&&N(t)?ad(od(t)):t}});var dd=Yo.onFreeze,sd=Object.seal,md=d((function(){sd(1)}));we({target:"Object",stat:!0,forced:md,sham:!So},{seal:function(t){return sd&&N(t)?sd(dd(t)):t}}),we({target:"Object",stat:!0},{setPrototypeOf:Mi});var hd=De?{}.toString:function(){return"[object "+_e(this)+"]"};De||oe(Object.prototype,"toString",hd,{unsafe:!0});var bd=Pu.values;we({target:"Object",stat:!0},{values:function(t){return bd(t)}}),we({global:!0,forced:parseFloat!=hu},{parseFloat:hu}),we({global:!0,forced:parseInt!=Gu},{parseInt:Gu});var Zd,pd,yd,Xd,fd=u.Promise,Gd=u.TypeError,Id=function(t){if(Nn(t))return t;throw Gd(O(t)+" is not a constructor")},Vd=Xt("species"),Wd=function(t,e){var n,r=Jt(t).constructor;return void 0===r||null==(n=Jt(r)[Vd])?e:Id(n)},vd=/(?:ipad|iphone|ipod).*applewebkit/i.test(w),gd=u.setImmediate,Sd=u.clearImmediate,Yd=u.process,Rd=u.Dispatch,Ld=u.Function,xd=u.MessageChannel,Kd=u.String,Jd=0,Hd={},Nd="onreadystatechange";try{Zd=u.location}catch(t){}var Cd=function(t){if(ut(Hd,t)){var e=Hd[t];delete Hd[t],e()}},kd=function(t){return function(){Cd(t)}},Ud=function(t){Cd(t.data)},wd=function(t){u.postMessage(Kd(t),Zd.protocol+"//"+Zd.host)};gd&&Sd||(gd=function(t){var e=yn(arguments,1);return Hd[++Jd]=function(){Pe(H(t)?t:Ld(t),void 0,e)},pd(Jd),Jd},Sd=function(t){delete Hd[t]},Gc?pd=function(t){Yd.nextTick(kd(t))}:Rd&&Rd.now?pd=function(t){Rd.now(kd(t))}:xd&&!vd?(Xd=(yd=new xd).port2,yd.port1.onmessage=Ud,pd=Sn(Xd.postMessage,Xd)):u.addEventListener&&H(u.postMessage)&&!u.importScripts&&Zd&&"file:"!==Zd.protocol&&!d(wd)?(pd=wd,u.addEventListener("message",Ud,!1)):pd=Nd in gt("script")?function(t){nn.appendChild(gt("script")).onreadystatechange=function(){nn.removeChild(this),Cd(t)}}:function(t){setTimeout(kd(t),0)});var Td,Fd,jd,zd,Pd,Md,Bd,Qd,Dd={set:gd,clear:Sd},Ed=/ipad|iphone|ipod/i.test(w)&&void 0!==u.Pebble,Od=/web0s(?!.*chrome)/i.test(w),Ad=Lt.f,_d=Dd.set,qd=u.MutationObserver||u.WebKitMutationObserver,$d=u.document,ts=u.process,es=u.Promise,ns=Ad(u,"queueMicrotask"),rs=ns&&ns.value;rs||(Td=function(){var t,e;for(Gc&&(t=ts.domain)&&t.exit();Fd;){e=Fd.fn,Fd=Fd.next;try{e()}catch(t){throw Fd?zd():jd=void 0,t}}jd=void 0,t&&t.enter()},vd||Gc||Od||!qd||!$d?!Ed&&es&&es.resolve?((Bd=es.resolve(void 0)).constructor=es,Qd=Sn(Bd.then,Bd),zd=function(){Qd(Td)}):Gc?zd=function(){ts.nextTick(Td)}:(_d=Sn(_d,u),zd=function(){_d(Td)}):(Pd=!0,Md=$d.createTextNode(""),new qd(Td).observe(Md,{characterData:!0}),zd=function(){Md.data=Pd=!Pd}));var is,cs,ls,os,as=rs||function(t){var e={fn:t,next:void 0};jd&&(jd.next=e),Fd||(Fd=e,zd()),jd=e},us=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=_(e),this.reject=_(n)},ds={f:function(t){return new us(t)}},ss=function(t,e){if(Jt(t),N(e)&&e.constructor===t)return e;var n=ds.f(t);return(0,n.resolve)(e),n.promise},ms=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},hs="object"==("undefined"==typeof window?"undefined":o(window)),bs=Dd.set,Zs=Xt("species"),ps="Promise",ys=ne.getterFor(ps),Xs=ne.set,fs=ne.getterFor(ps),Gs=fd&&fd.prototype,Is=fd,Vs=Gs,Ws=u.TypeError,vs=u.document,gs=u.process,Ss=ds.f,Ys=Ss,Rs=!!(vs&&vs.createEvent&&u.dispatchEvent),Ls=H(u.PromiseRejectionEvent),xs="unhandledrejection",Ks=!1,Js=ke(ps,(function(){var t=zt(Is),e=t!==String(Is);if(!e&&66===P)return!0;if(P>=51&&/native code/.test(t))return!1;var n=new Is((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))};return(n.constructor={})[Zs]=r,!(Ks=n.then((function(){}))instanceof r)||!e&&hs&&!Ls})),Hs=Js||!Xi((function(t){Is.all(t).catch((function(){}))})),Ns=function(t){var e;return!(!N(t)||!H(e=t.then))&&e},Cs=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;as((function(){for(var r=t.value,i=1==t.state,c=0;n.length>c;){var l,o,a,u=n[c++],d=i?u.ok:u.fail,s=u.resolve,m=u.reject,b=u.domain;try{d?(i||(2===t.rejection&&Ts(t),t.rejection=1),!0===d?l=r:(b&&b.enter(),l=d(r),b&&(b.exit(),a=!0)),l===u.promise?m(Ws("Promise-chain cycle")):(o=Ns(l))?h(o,l,s,m):s(l)):m(r)}catch(t){b&&!a&&b.exit(),m(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&Us(t)}))}},ks=function(t,e,n){var r,i;Rs?((r=vs.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},!Ls&&(i=u["on"+t])?i(r):t===xs&&function(t,e){var n=u.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))}("Unhandled promise rejection",n)},Us=function(t){h(bs,u,(function(){var e,n=t.facade,r=t.value;if(ws(t)&&(e=ms((function(){Gc?gs.emit("unhandledRejection",r,n):ks(xs,n,r)})),t.rejection=Gc||ws(t)?2:1,e.error))throw e.value}))},ws=function(t){return 1!==t.rejection&&!t.parent},Ts=function(t){h(bs,u,(function(){var e=t.facade;Gc?gs.emit("rejectionHandled",e):ks("rejectionhandled",e,t.value)}))},Fs=function(t,e,n){return function(r){t(e,r,n)}},js=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Cs(t,!0))},zs=function t(e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===n)throw Ws("Promise can't be resolved itself");var i=Ns(n);i?as((function(){var r={done:!1};try{h(i,n,Fs(t,r,e),Fs(js,r,e))}catch(t){js(r,t,e)}})):(e.value=n,e.state=1,Cs(e,!1))}catch(t){js({done:!1},t,e)}}};if(Js&&(Vs=(Is=function(t){nl(this,Vs),_(t),h(is,this);var e=ys(this);try{t(Fs(zs,e),Fs(js,e))}catch(t){js(e,t)}}).prototype,(is=function(t){Xs(this,{type:ps,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=tl(Vs,{then:function(t,e){var n=fs(this),r=n.reactions,i=Ss(Wd(this,Is));return i.ok=!H(t)||t,i.fail=H(e)&&e,i.domain=Gc?gs.domain:void 0,n.parent=!0,r[r.length]=i,0!=n.state&&Cs(n,!1),i.promise},catch:function(t){return this.then(void 0,t)}}),cs=function(){var t=new is,e=ys(t);this.promise=t,this.resolve=Fs(zs,e),this.reject=Fs(js,e)},ds.f=Ss=function(t){return t===Is||t===ls?new cs(t):Ys(t)},H(fd)&&Gs!==Object.prototype)){os=Gs.then,Ks||(oe(Gs,"then",(function(t,e){var n=this;return new Is((function(t,e){h(os,n,t,e)})).then(t,e)}),{unsafe:!0}),oe(Gs,"catch",Vs.catch,{unsafe:!0}));try{delete Gs.constructor}catch(t){}Mi&&Mi(Gs,Vs)}we({global:!0,wrap:!0,forced:Js},{Promise:Is}),vn(Is,ps,!1),Qc(ps),ls=k(ps),we({target:ps,stat:!0,forced:Js},{reject:function(t){var e=Ss(this);return h(e.reject,void 0,t),e.promise}}),we({target:ps,stat:!0,forced:Js},{resolve:function(t){return ss(this,t)}}),we({target:ps,stat:!0,forced:Hs},{all:function(t){var e=this,n=Ss(e),r=n.resolve,i=n.reject,c=ms((function(){var n=_(e.resolve),c=[],l=0,o=1;Ko(t,(function(t){var a=l++,u=!1;o++,h(n,e,t).then((function(t){u||(u=!0,c[a]=t,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise},race:function(t){var e=this,n=Ss(e),r=n.reject,i=ms((function(){var i=_(e.resolve);Ko(t,(function(t){h(i,e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}}),we({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=ds.f(e),r=n.resolve,i=n.reject,c=ms((function(){var n=_(e.resolve),i=[],c=0,l=1;Ko(t,(function(t){var o=c++,a=!1;l++,h(n,e,t).then((function(t){a||(a=!0,i[o]={status:"fulfilled",value:t},--l||r(i))}),(function(t){a||(a=!0,i[o]={status:"rejected",reason:t},--l||r(i))}))})),--l||r(i)}));return c.error&&i(c.value),n.promise}});var Ps=!!fd&&d((function(){fd.prototype.finally.call({then:function(){}},(function(){}))}));if(we({target:"Promise",proto:!0,real:!0,forced:Ps},{finally:function(t){var e=Wd(this,k("Promise")),n=H(t);return this.then(n?function(n){return ss(e,t()).then((function(){return n}))}:t,n?function(n){return ss(e,t()).then((function(){throw n}))}:t)}}),H(fd)){var Ms=k("Promise").prototype.finally;fd.prototype.finally!==Ms&&oe(fd.prototype,"finally",Ms,{unsafe:!0})}var Bs=!d((function(){Reflect.apply((function(){}))}));we({target:"Reflect",stat:!0,forced:Bs},{apply:function(t,e,n){return Pe(_(t),e,Jt(n))}});var Qs=u.Function,Ds=W([].concat),Es=W([].join),Os={},As=function(t,e,n){if(!ut(Os,e)){for(var r=[],i=0;i<e;i++)r[i]="a["+i+"]";Os[e]=Qs("C,a","return new C("+Es(r,",")+")")}return Os[e](t,n)},_s=Qs.bind||function(t){var e=_(this),n=e.prototype,r=yn(arguments,1),i=function(){var n=Ds(r,yn(arguments));return this instanceof i?As(e,n.length,n):e.apply(t,n)};return N(n)&&(i.prototype=n),i},qs=k("Reflect","construct"),$s=Object.prototype,tm=[].push,em=d((function(){function t(){}return!(qs((function(){}),[],t)instanceof t)})),nm=!d((function(){qs((function(){}))})),rm=em||nm;we({target:"Reflect",stat:!0,forced:rm,sham:rm},{construct:function(t,e){Id(t),Jt(e);var n=arguments.length<3?t:Id(arguments[2]);if(nm&&!em)return qs(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return Pe(tm,r,e),new(Pe(_s,t,r))}var i=n.prototype,c=un(N(i)?i:$s),l=Pe(t,c,e);return N(l)?l:c}});var im=d((function(){Reflect.defineProperty(kt.f({},1,{value:1}),1,{value:2})}));we({target:"Reflect",stat:!0,forced:im,sham:!s},{defineProperty:function(t,e,n){Jt(t);var r=Vt(e);Jt(n);try{return kt.f(t,r,n),!0}catch(t){return!1}}});var cm=Lt.f;we({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=cm(Jt(t),e);return!(n&&!n.configurable)&&delete t[e]}});var lm=function(t){return void 0!==t&&(ut(t,"value")||ut(t,"writable"))};we({target:"Reflect",stat:!0},{get:function t(e,n){var r,i,c=arguments.length<3?e:arguments[2];return Jt(e)===c?e[n]:(r=Lt.f(e,n))?lm(r)?r.value:void 0===r.get?void 0:h(r.get,c):N(i=Hi(e))?t(i,n,c):void 0}}),we({target:"Reflect",stat:!0,sham:!s},{getOwnPropertyDescriptor:function(t,e){return Lt.f(Jt(t),e)}}),we({target:"Reflect",stat:!0,sham:!Li},{getPrototypeOf:function(t){return Hi(Jt(t))}}),we({target:"Reflect",stat:!0},{has:function(t,e){return e in t}}),we({target:"Reflect",stat:!0},{isExtensible:function(t){return Jt(t),go(t)}}),we({target:"Reflect",stat:!0},{ownKeys:Re}),we({target:"Reflect",stat:!0,sham:!So},{preventExtensions:function(t){Jt(t);try{var e=k("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var om=d((function(){var t=function(){},e=kt.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));we({target:"Reflect",stat:!0,forced:om},{set:function t(e,n,r){var i,c,l,o=arguments.length<4?e:arguments[3],a=Lt.f(Jt(e),n);if(!a){if(N(c=Hi(e)))return t(c,n,r,o);a=X(0)}if(lm(a)){if(!1===a.writable||!N(o))return!1;if(i=Lt.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,kt.f(o,n,i)}else kt.f(o,n,X(0,r))}else{if(void 0===(l=a.set))return!1;h(l,o,r)}return!0}}),Mi&&we({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Jt(t),Pi(e);try{return Mi(t,e),!0}catch(t){return!1}}});var am=Xt("match"),um=function(t){var e;return N(t)&&(void 0!==(e=t[am])?!!e:"RegExp"==S(t))},dm=function(){var t=Jt(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},sm=u.RegExp,mm=d((function(){var t=sm("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),hm=mm||d((function(){return!sm("a","y").sticky})),bm=mm||d((function(){var t=sm("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),Zm={BROKEN_CARET:bm,MISSED_STICKY:hm,UNSUPPORTED_Y:mm},pm=u.RegExp,ym=d((function(){var t=pm(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),Xm=u.RegExp,fm=d((function(){var t=Xm("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),Gm=kt.f,Im=ge.f,Vm=ne.enforce,Wm=Xt("match"),vm=u.RegExp,gm=vm.prototype,Sm=u.SyntaxError,Ym=W(dm),Rm=W(gm.exec),Lm=W("".charAt),xm=W("".replace),Km=W("".indexOf),Jm=W("".slice),Hm=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Nm=/a/g,Cm=/a/g,km=new vm(Nm)!==Nm,Um=Zm.MISSED_STICKY,wm=Zm.UNSUPPORTED_Y,Tm=s&&(!km||Um||ym||fm||d((function(){return Cm[Wm]=!1,vm(Nm)!=Nm||vm(Cm)==Cm||"/a/i"!=vm(Nm,"i")})));if(ke("RegExp",Tm)){for(var Fm=function(t,e){var n,r,i,c,l,o,a=U(gm,this),u=um(t),d=void 0===e,s=[],m=t;if(!a&&u&&d&&t.constructor===Fm)return t;if((u||U(gm,t))&&(t=t.source,d&&(e="flags"in m?m.flags:Ym(m))),t=void 0===t?"":$e(t),e=void 0===e?"":$e(e),m=t,ym&&"dotAll"in Nm&&(r=!!e&&Km(e,"s")>-1)&&(e=xm(e,/s/g,"")),n=e,Um&&"sticky"in Nm&&(i=!!e&&Km(e,"y")>-1)&&wm&&(e=xm(e,/y/g,"")),fm&&(c=function(t){for(var e,n=t.length,r=0,i="",c=[],l={},o=!1,a=!1,u=0,d="";r<=n;r++){if("\\"===(e=Lm(t,r)))e+=Lm(t,++r);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:Rm(Hm,Jm(t,r+1))&&(r+=2,a=!0),i+=e,u++;continue;case">"===e&&a:if(""===d||ut(l,d))throw new Sm("Invalid capture group name");l[d]=!0,c[c.length]=[d,u],a=!1,d="";continue}a?d+=e:i+=e}return[i,c]}(t),t=c[0],s=c[1]),l=Jo(vm(t,e),a?this:gm,Fm),(r||i||s.length)&&(o=Vm(l),r&&(o.dotAll=!0,o.raw=Fm(function(t){for(var e,n=t.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(e=Lm(t,r))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),i+=e):i+="[\\s\\S]":i+=e+Lm(t,++r);return i}(t),n)),i&&(o.sticky=!0),s.length&&(o.groups=s)),t!==m)try{Ut(l,"source",""===m?"(?:)":m)}catch(t){}return l},jm=function(t){t in Fm||Gm(Fm,t,{configurable:!0,get:function(){return vm[t]},set:function(e){vm[t]=e}})},zm=Im(vm),Pm=0;zm.length>Pm;)jm(zm[Pm++]);gm.constructor=Fm,Fm.prototype=gm,oe(u,"RegExp",Fm)}Qc("RegExp");var Mm=ne.get,Bm=ct("native-string-replace",String.prototype.replace),Qm=RegExp.prototype.exec,Dm=Qm,Em=W("".charAt),Om=W("".indexOf),Am=W("".replace),_m=W("".slice),qm=function(){var t=/a/,e=/b*/g;return h(Qm,t,"a"),h(Qm,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),$m=Zm.BROKEN_CARET,th=void 0!==/()??/.exec("")[1];(qm||th||$m||ym||fm)&&(Dm=function(t){var e,n,r,i,c,l,o,a=this,u=Mm(a),d=$e(t),s=u.raw;if(s)return s.lastIndex=a.lastIndex,e=h(Dm,s,d),a.lastIndex=s.lastIndex,e;var m=u.groups,b=$m&&a.sticky,Z=h(dm,a),p=a.source,y=0,X=d;if(b&&(Z=Am(Z,"y",""),-1===Om(Z,"g")&&(Z+="g"),X=_m(d,a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==Em(d,a.lastIndex-1))&&(p="(?: "+p+")",X=" "+X,y++),n=new RegExp("^(?:"+p+")",Z)),th&&(n=new RegExp("^"+p+"$(?!\\s)",Z)),qm&&(r=a.lastIndex),i=h(Qm,b?n:a,X),b?i?(i.input=_m(i.input,y),i[0]=_m(i[0],y),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:qm&&i&&(a.lastIndex=a.global?i.index+i[0].length:r),th&&i&&i.length>1&&h(Bm,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=l=un(null),c=0;c<m.length;c++)l[(o=m[c])[0]]=i[o[1]];return i});var eh=Dm;we({target:"RegExp",proto:!0,forced:/./.exec!==eh},{exec:eh});var nh=RegExp.prototype;s&&d((function(){return"sy"!==Object.getOwnPropertyDescriptor(nh,"flags").get.call({dotAll:!0,sticky:!0})}))&&kt.f(nh,"flags",{configurable:!0,get:dm});var rh=Zm.MISSED_STICKY,ih=kt.f,ch=ne.get,lh=RegExp.prototype,oh=u.TypeError;s&&rh&&ih(lh,"sticky",{configurable:!0,get:function(){if(this!==lh){if("RegExp"===S(this))return!!ch(this).sticky;throw oh("Incompatible receiver, RegExp required")}}});var ah=function(){var t=!1,e=/[ac]/;return e.exec=function(){return t=!0,/./.exec.apply(this,arguments)},!0===e.test("abc")&&t}(),uh=u.Error,dh=W(/./.test);we({target:"RegExp",proto:!0,forced:!ah},{test:function(t){var e=this.exec;if(!H(e))return dh(this,t);var n=h(e,this,t);if(null!==n&&!N(n))throw new uh("RegExp exec method returned something other than an Object or null");return!!n}});var sh=le.PROPER,mh="toString",hh=RegExp.prototype,bh=hh.toString,Zh=W(dm),ph=d((function(){return"/a/b"!=bh.call({source:"a",flags:"b"})})),yh=sh&&bh.name!=mh;(ph||yh)&&oe(RegExp.prototype,mh,(function(){var t=Jt(this),e=$e(t.source),n=t.flags;return"/"+e+"/"+$e(void 0===n&&U(hh,t)&&!("flags"in hh)?Zh(t):n)}),{unsafe:!0}),Ho("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),wo);var Xh=W("".charAt),fh=W("".charCodeAt),Gh=W("".slice),Ih=function(t){return function(e,n){var r,i,c=$e(K(e)),l=de(n),o=c.length;return l<0||l>=o?t?"":void 0:(r=fh(c,l))<55296||r>56319||l+1===o||(i=fh(c,l+1))<56320||i>57343?t?Xh(c,l):r:t?Gh(c,l,l+2):i-56320+(r-55296<<10)+65536}},Vh={codeAt:Ih(!1),charAt:Ih(!0)},Wh=Vh.codeAt;we({target:"String",proto:!0},{codePointAt:function(t){return Wh(this,t)}});var vh,gh=u.TypeError,Sh=function(t){if(um(t))throw gh("The method doesn't accept regular expressions");return t},Yh=Xt("match"),Rh=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[Yh]=!1,"/./"[t](e)}catch(t){}}return!1},Lh=Lt.f,xh=W("".endsWith),Kh=W("".slice),Jh=Math.min,Hh=Rh("endsWith"),Nh=!(Hh||(vh=Lh(String.prototype,"endsWith"),!vh||vh.writable));we({target:"String",proto:!0,forced:!Nh&&!Hh},{endsWith:function(t){var e=$e(K(this));Sh(t);var n=arguments.length>1?arguments[1]:void 0,r=e.length,i=void 0===n?r:Jh(Ze(n),r),c=$e(t);return xh?xh(e,c,i):Kh(e,i-c.length,i)===c}});var Ch=u.RangeError,kh=String.fromCharCode,Uh=String.fromCodePoint,wh=W([].join),Th=!!Uh&&1!=Uh.length;we({target:"String",stat:!0,forced:Th},{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,i=0;r>i;){if(e=+arguments[i++],he(e,1114111)!==e)throw Ch(e+" is not a valid code point");n[i]=e<65536?kh(e):kh(55296+((e-=65536)>>10),e%1024+56320)}return wh(n,"")}});var Fh=W("".indexOf);we({target:"String",proto:!0,forced:!Rh("includes")},{includes:function(t){return!!~Fh($e(K(this)),$e(Sh(t)),arguments.length>1?arguments[1]:void 0)}});var jh=Vh.charAt,zh="String Iterator",Ph=ne.set,Mh=ne.getterFor(zh);tc(String,"String",(function(t){Ph(this,{type:zh,string:$e(t),index:0})}),(function(){var t,e=Mh(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=jh(n,r),e.index+=t.length,{value:t,done:!1})}));var Bh=Xt("species"),Qh=RegExp.prototype,Dh=function(t,e,n,r){var i=Xt(t),c=!d((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),l=c&&!d((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[Bh]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](""),!e}));if(!c||!l||n){var o=W(/./[i]),a=e(i,""[t],(function(t,e,n,r,i){var l=W(t),a=e.exec;return a===eh||a===Qh.exec?c&&!i?{done:!0,value:o(e,n,r)}:{done:!0,value:l(n,e,r)}:{done:!1}}));oe(String.prototype,t,a[0]),oe(Qh,i,a[1])}r&&Ut(Qh[i],"sham",!0)},Eh=Vh.charAt,Oh=function(t,e,n){return e+(n?Eh(t,e).length:1)},Ah=u.TypeError,_h=function(t,e){var n=t.exec;if(H(n)){var r=h(n,t,e);return null!==r&&Jt(r),r}if("RegExp"===S(t))return h(eh,t,e);throw Ah("RegExp#exec called on incompatible receiver")};Dh("match",(function(t,e,n){return[function(e){var n=K(this),r=null==e?void 0:q(e,t);return r?h(r,e,n):new RegExp(e)[t]($e(n))},function(t){var r=Jt(this),i=$e(t),c=n(e,r,i);if(c.done)return c.value;if(!r.global)return _h(r,i);var l=r.unicode;r.lastIndex=0;for(var o,a=[],u=0;null!==(o=_h(r,i));){var d=$e(o[0]);a[u]=d,""===d&&(r.lastIndex=Oh(i,Ze(r.lastIndex),l)),u++}return 0===u?null:a}]}));var qh=Xt("matchAll"),$h="RegExp String",tb="RegExp String Iterator",eb=ne.set,nb=ne.getterFor(tb),rb=RegExp.prototype,ib=u.TypeError,cb=W(dm),lb=W("".indexOf),ob=W("".matchAll),ab=!!ob&&!d((function(){ob("a",/./)})),ub=Fi((function(t,e,n,r){eb(this,{type:tb,regexp:t,string:e,global:n,unicode:r,done:!1})}),$h,(function(){var t=nb(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,r=_h(e,n);return null===r?{value:void 0,done:t.done=!0}:t.global?(""===$e(r[0])&&(e.lastIndex=Oh(n,Ze(e.lastIndex),t.unicode)),{value:r,done:!1}):(t.done=!0,{value:r,done:!1})})),db=function(t){var e,n,r,i,c,l,o=Jt(this),a=$e(t);return e=Wd(o,RegExp),void 0===(n=o.flags)&&U(rb,o)&&!("flags"in rb)&&(n=cb(o)),r=void 0===n?"":$e(n),i=new e(e===RegExp?o.source:o,r),c=!!~lb(r,"g"),l=!!~lb(r,"u"),i.lastIndex=Ze(o.lastIndex),new ub(i,a,c,l)};we({target:"String",proto:!0,forced:ab},{matchAll:function(t){var e,n,r,i=K(this);if(null!=t){if(um(t)&&(e=$e(K("flags"in rb?t.flags:cb(t))),!~lb(e,"g")))throw ib("`.matchAll` does not allow non-global regexes");if(ab)return ob(i,t);if(r=q(t,qh))return h(r,t,i)}else if(ab)return ob(i,t);return n=$e(i),new RegExp(t,"g")[qh](n)}}),qh in rb||oe(rb,qh,db);var sb=W(Vu),mb=W("".slice),hb=Math.ceil,bb=function(t){return function(e,n,r){var i,c,l=$e(K(e)),o=Ze(n),a=l.length,u=void 0===r?" ":$e(r);return o<=a||""==u?l:((c=sb(u,hb((i=o-a)/u.length))).length>i&&(c=mb(c,0,i)),t?l+c:c+l)}},Zb={start:bb(!1),end:bb(!0)},pb=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(w),yb=Zb.end;we({target:"String",proto:!0,forced:pb},{padEnd:function(t){return yb(this,t,arguments.length>1?arguments[1]:void 0)}});var Xb=Zb.start;we({target:"String",proto:!0,forced:pb},{padStart:function(t){return Xb(this,t,arguments.length>1?arguments[1]:void 0)}});var fb=W([].push),Gb=W([].join);we({target:"String",stat:!0},{raw:function(t){for(var e=J(ot(t).raw),n=pe(e),r=arguments.length,i=[],c=0;n>c;){if(fb(i,$e(e[c++])),c===n)return Gb(i,"");c<r&&fb(i,$e(arguments[c]))}}}),we({target:"String",proto:!0},{repeat:Vu});var Ib=Math.floor,Vb=W("".charAt),Wb=W("".replace),vb=W("".slice),gb=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Sb=/\$([$&'`]|\d{1,2})/g,Yb=function(t,e,n,r,i,c){var l=n+t.length,o=r.length,a=Sb;return void 0!==i&&(i=ot(i),a=gb),Wb(c,a,(function(c,a){var u;switch(Vb(a,0)){case"$":return"$";case"&":return t;case"`":return vb(e,0,n);case"'":return vb(e,l);case"<":u=i[vb(a,1,-1)];break;default:var d=+a;if(0===d)return c;if(d>o){var s=Ib(d/10);return 0===s?c:s<=o?void 0===r[s-1]?Vb(a,1):r[s-1]+Vb(a,1):c}u=r[d-1]}return void 0===u?"":u}))},Rb=Xt("replace"),Lb=Math.max,xb=Math.min,Kb=W([].concat),Jb=W([].push),Hb=W("".indexOf),Nb=W("".slice),Cb=function(t){return void 0===t?t:String(t)},kb="$0"==="a".replace(/./,"$0"),Ub=!!/./[Rb]&&""===/./[Rb]("a","$0"),wb=!d((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));Dh("replace",(function(t,e,n){var r=Ub?"$":"$0";return[function(t,n){var r=K(this),i=null==t?void 0:q(t,Rb);return i?h(i,t,r,n):h(e,$e(r),t,n)},function(t,i){var c=Jt(this),l=$e(t);if("string"==typeof i&&-1===Hb(i,r)&&-1===Hb(i,"$<")){var o=n(e,c,l,i);if(o.done)return o.value}var a=H(i);a||(i=$e(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=_h(c,l);if(null===m)break;if(Jb(s,m),!u)break;""===$e(m[0])&&(c.lastIndex=Oh(l,Ze(c.lastIndex),d))}for(var h="",b=0,Z=0;Z<s.length;Z++){for(var p=$e((m=s[Z])[0]),y=Lb(xb(de(m.index),l.length),0),X=[],f=1;f<m.length;f++)Jb(X,Cb(m[f]));var G=m.groups;if(a){var I=Kb([p],X,y,l);void 0!==G&&Jb(I,G);var V=$e(Pe(i,void 0,I))}else V=Yb(p,l,y,X,G,i);y>=b&&(h+=Nb(l,b,y)+V,b=y+p.length)}return h+Nb(l,b)}]}),!wb||!kb||Ub),Dh("search",(function(t,e,n){return[function(e){var n=K(this),r=null==e?void 0:q(e,t);return r?h(r,e,n):new RegExp(e)[t]($e(n))},function(t){var r=Jt(this),i=$e(t),c=n(e,r,i);if(c.done)return c.value;var l=r.lastIndex;$u(l,0)||(r.lastIndex=0);var o=_h(r,i);return $u(r.lastIndex,l)||(r.lastIndex=l),null===o?-1:o.index}]}));var Tb=Zm.UNSUPPORTED_Y,Fb=4294967295,jb=Math.min,zb=[].push,Pb=W(/./.exec),Mb=W(zb),Bb=W("".slice),Qb=!d((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));Dh("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=$e(K(this)),i=void 0===n?Fb:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!um(t))return h(e,r,t,i);for(var c,l,o,a=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,s=new RegExp(t.source,u+"g");(c=h(eh,s,r))&&!((l=s.lastIndex)>d&&(Mb(a,Bb(r,d,c.index)),c.length>1&&c.index<r.length&&Pe(zb,a,hn(c,1)),o=c[0].length,d=l,a.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!o&&Pb(s,"")||Mb(a,""):Mb(a,Bb(r,d)),a.length>i?hn(a,0,i):a}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:h(e,this,t,n)}:e,[function(e,n){var i=K(this),c=null==e?void 0:q(e,t);return c?h(c,e,i,n):h(r,$e(i),e,n)},function(t,i){var c=Jt(this),l=$e(t),o=n(r,c,l,i,r!==e);if(o.done)return o.value;var a=Wd(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(Tb?"g":"y"),s=new a(Tb?"^(?:"+c.source+")":c,d),m=void 0===i?Fb:i>>>0;if(0===m)return[];if(0===l.length)return null===_h(s,l)?[l]:[];for(var h=0,b=0,Z=[];b<l.length;){s.lastIndex=Tb?0:b;var p,y=_h(s,Tb?Bb(l,b):l);if(null===y||(p=jb(Ze(s.lastIndex+(Tb?b:0)),l.length))===h)b=Oh(l,b,u);else{if(Mb(Z,Bb(l,h,b)),Z.length===m)return Z;for(var X=1;X<=y.length-1;X++)if(Mb(Z,y[X]),Z.length===m)return Z;b=h=p}}return Mb(Z,Bb(l,h)),Z}]}),!Qb,Tb);var Db=Lt.f,Eb=W("".startsWith),Ob=W("".slice),Ab=Math.min,_b=Rh("startsWith"),qb=!_b&&!!function(){var t=Db(String.prototype,"startsWith");return t&&!t.writable}();we({target:"String",proto:!0,forced:!qb&&!_b},{startsWith:function(t){var e=$e(K(this));Sh(t);var n=Ze(Ab(arguments.length>1?arguments[1]:void 0,e.length)),r=$e(t);return Eb?Eb(e,r,n):Ob(e,n,n+r.length)===r}});var $b=le.PROPER,tZ=function(t){return d((function(){return!!Na[t]()||"
"!=="
"[t]()||$b&&Na[t].name!==t}))},eZ=Fa.trim;we({target:"String",proto:!0,forced:tZ("trim")},{trim:function(){return eZ(this)}});var nZ=Fa.end,rZ=tZ("trimEnd"),iZ=rZ?function(){return nZ(this)}:"".trimEnd;we({target:"String",proto:!0,name:"trimEnd",forced:rZ},{trimEnd:iZ,trimRight:iZ});var cZ=Fa.start,lZ=tZ("trimStart"),oZ=lZ?function(){return cZ(this)}:"".trimStart;we({target:"String",proto:!0,name:"trimStart",forced:lZ},{trimStart:oZ,trimLeft:oZ});var aZ=/"/g,uZ=W("".replace),dZ=function(t,e,n,r){var i=$e(K(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+uZ($e(r),aZ,""")+'"'),c+">"+i+"</"+e+">"},sZ=function(t){return d((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))};we({target:"String",proto:!0,forced:sZ("anchor")},{anchor:function(t){return dZ(this,"a","name",t)}}),we({target:"String",proto:!0,forced:sZ("big")},{big:function(){return dZ(this,"big","","")}}),we({target:"String",proto:!0,forced:sZ("blink")},{blink:function(){return dZ(this,"blink","","")}}),we({target:"String",proto:!0,forced:sZ("bold")},{bold:function(){return dZ(this,"b","","")}}),we({target:"String",proto:!0,forced:sZ("fixed")},{fixed:function(){return dZ(this,"tt","","")}}),we({target:"String",proto:!0,forced:sZ("fontcolor")},{fontcolor:function(t){return dZ(this,"font","color",t)}}),we({target:"String",proto:!0,forced:sZ("fontsize")},{fontsize:function(t){return dZ(this,"font","size",t)}}),we({target:"String",proto:!0,forced:sZ("italics")},{italics:function(){return dZ(this,"i","","")}}),we({target:"String",proto:!0,forced:sZ("link")},{link:function(t){return dZ(this,"a","href",t)}}),we({target:"String",proto:!0,forced:sZ("small")},{small:function(){return dZ(this,"small","","")}}),we({target:"String",proto:!0,forced:sZ("strike")},{strike:function(){return dZ(this,"strike","","")}}),we({target:"String",proto:!0,forced:sZ("sub")},{sub:function(){return dZ(this,"sub","","")}}),we({target:"String",proto:!0,forced:sZ("sup")},{sup:function(){return dZ(this,"sup","","")}});var mZ,hZ,bZ,ZZ=kt.f,pZ=u.Int8Array,yZ=pZ&&pZ.prototype,XZ=u.Uint8ClampedArray,fZ=XZ&&XZ.prototype,GZ=pZ&&Hi(pZ),IZ=yZ&&Hi(yZ),VZ=Object.prototype,WZ=u.TypeError,vZ=Xt("toStringTag"),gZ=ht("TYPED_ARRAY_TAG"),SZ=ht("TYPED_ARRAY_CONSTRUCTOR"),YZ=$c&&!!Mi&&"Opera"!==_e(u.opera),RZ=!1,LZ={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},xZ={BigInt64Array:8,BigUint64Array:8},KZ=function(t){if(!N(t))return!1;var e=_e(t);return ut(LZ,e)||ut(xZ,e)};for(mZ in LZ)(bZ=(hZ=u[mZ])&&hZ.prototype)?Ut(bZ,SZ,hZ):YZ=!1;for(mZ in xZ)(bZ=(hZ=u[mZ])&&hZ.prototype)&&Ut(bZ,SZ,hZ);if((!YZ||!H(GZ)||GZ===Function.prototype)&&(GZ=function(){throw WZ("Incorrect invocation")},YZ))for(mZ in LZ)u[mZ]&&Mi(u[mZ],GZ);if((!YZ||!IZ||IZ===VZ)&&(IZ=GZ.prototype,YZ))for(mZ in LZ)u[mZ]&&Mi(u[mZ].prototype,IZ);if(YZ&&Hi(fZ)!==IZ&&Mi(fZ,IZ),s&&!ut(IZ,vZ))for(mZ in RZ=!0,ZZ(IZ,vZ,{get:function(){return N(this)?this[gZ]:void 0}}),LZ)u[mZ]&&Ut(u[mZ],gZ,mZ);var JZ={NATIVE_ARRAY_BUFFER_VIEWS:YZ,TYPED_ARRAY_CONSTRUCTOR:SZ,TYPED_ARRAY_TAG:RZ&&gZ,aTypedArray:function(t){if(KZ(t))return t;throw WZ("Target is not a typed array")},aTypedArrayConstructor:function(t){if(H(t)&&(!Mi||U(GZ,t)))return t;throw WZ(O(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n){if(s){if(n)for(var r in LZ){var i=u[r];if(i&&ut(i.prototype,t))try{delete i.prototype[t]}catch(t){}}IZ[t]&&!n||oe(IZ,t,n?e:YZ&&yZ[t]||e)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(s){if(Mi){if(n)for(r in LZ)if((i=u[r])&&ut(i,t))try{delete i[t]}catch(t){}if(GZ[t]&&!n)return;try{return oe(GZ,t,n?e:YZ&&GZ[t]||e)}catch(t){}}for(r in LZ)!(i=u[r])||i[t]&&!n||oe(i,t,e)}},isView:function(t){if(!N(t))return!1;var e=_e(t);return"DataView"===e||ut(LZ,e)||ut(xZ,e)},isTypedArray:KZ,TypedArray:GZ,TypedArrayPrototype:IZ},HZ=JZ.NATIVE_ARRAY_BUFFER_VIEWS,NZ=u.ArrayBuffer,CZ=u.Int8Array,kZ=!HZ||!d((function(){CZ(1)}))||!d((function(){new CZ(-1)}))||!Xi((function(t){new CZ,new CZ(null),new CZ(1.5),new CZ(t)}),!0)||d((function(){return 1!==new CZ(new NZ(2),1,void 0).length})),UZ=u.RangeError,wZ=u.RangeError,TZ=function(t,e){var n=function(t){var e=de(t);if(e<0)throw UZ("The argument can't be less than 0");return e}(t);if(n%e)throw wZ("Wrong offset");return n},FZ=JZ.aTypedArrayConstructor,jZ=function(t){var e,n,r,i,c,l,o=Id(this),a=ot(t),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=ui(a);if(m&&!oi(m))for(l=(c=si(a,m)).next,a=[];!(i=h(l,c)).done;)a.push(i.value);for(s&&u>2&&(d=Sn(d,arguments[2])),n=pe(a),r=new(FZ(o))(n),e=0;n>e;e++)r[e]=s?d(a[e],e):a[e];return r},zZ=r((function(t){var e=ge.f,n=Fn.forEach,r=ne.get,i=ne.set,c=kt.f,l=Lt.f,o=Math.round,a=u.RangeError,d=Ol.ArrayBuffer,m=d.prototype,b=Ol.DataView,Z=JZ.NATIVE_ARRAY_BUFFER_VIEWS,p=JZ.TYPED_ARRAY_CONSTRUCTOR,y=JZ.TYPED_ARRAY_TAG,f=JZ.TypedArray,G=JZ.TypedArrayPrototype,I=JZ.aTypedArrayConstructor,V=JZ.isTypedArray,W="BYTES_PER_ELEMENT",v="Wrong length",g=function(t,e){I(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},S=function(t,e){c(t,e,{get:function(){return r(this)[e]}})},Y=function(t){var e;return U(m,t)||"ArrayBuffer"==(e=_e(t))||"SharedArrayBuffer"==e},R=function(t,e){return V(t)&&!D(e)&&e in t&&lu(+e)&&e>=0},L=function(t,e){return e=Vt(e),R(t,e)?X(2,t[e]):l(t,e)},x=function(t,e,n){return e=Vt(e),!(R(t,e)&&N(n)&&ut(n,"value"))||ut(n,"get")||ut(n,"set")||n.configurable||ut(n,"writable")&&!n.writable||ut(n,"enumerable")&&!n.enumerable?c(t,e,n):(t[e]=n.value,t)};s?(Z||(Lt.f=L,kt.f=x,S(G,"buffer"),S(G,"byteOffset"),S(G,"byteLength"),S(G,"length")),we({target:"Object",stat:!0,forced:!Z},{getOwnPropertyDescriptor:L,defineProperty:x}),t.exports=function(t,l,s){var m=t.match(/\d+$/)[0]/8,X=t+(s?"Clamped":"")+"Array",I="get"+t,S="set"+t,R=u[X],L=R,x=L&&L.prototype,K={},J=function(t,e){c(t,e,{get:function(){return function(t,e){var n=r(t);return n.view[I](e*m+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,n){var i=r(t);s&&(n=(n=o(n))<0?0:n>255?255:255&n),i.view[S](e*m+i.byteOffset,n,!0)}(this,e,t)},enumerable:!0})};Z?kZ&&(L=l((function(t,e,n,r){return nl(t,x),Jo(N(e)?Y(e)?void 0!==r?new R(e,TZ(n,m),r):void 0!==n?new R(e,TZ(n,m)):new R(e):V(e)?g(L,e):h(jZ,L,e):new R(il(e)),t,L)})),Mi&&Mi(L,f),n(e(R),(function(t){t in L||Ut(L,t,R[t])})),L.prototype=x):(L=l((function(t,e,n,r){nl(t,x);var c,l,o,u=0,s=0;if(N(e)){if(!Y(e))return V(e)?g(L,e):h(jZ,L,e);c=e,s=TZ(n,m);var Z=e.byteLength;if(void 0===r){if(Z%m)throw a(v);if((l=Z-s)<0)throw a(v)}else if((l=Ze(r)*m)+s>Z)throw a(v);o=l/m}else o=il(e),c=new d(l=o*m);for(i(t,{buffer:c,byteOffset:s,byteLength:l,length:o,view:new b(c)});u<o;)J(t,u++)})),Mi&&Mi(L,f),x=L.prototype=un(G)),x.constructor!==L&&Ut(x,"constructor",L),Ut(x,p,L),y&&Ut(x,y,X),K[X]=L,we({global:!0,forced:L!=R,sham:!Z},K),W in L||Ut(L,W,m),W in x||Ut(x,W,m),Qc(X)}):t.exports=function(){}}));zZ("Float32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Float64",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Int8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Int16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Int32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}}),!0),zZ("Uint16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),zZ("Uint32",(function(t){return function(e,n,r){return t(this,e,n,r)}}));var PZ=W(jr),MZ=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("copyWithin",(function(t,e){return PZ(MZ(this),t,e,arguments.length>2?arguments[2]:void 0)}));var BZ=Fn.every,QZ=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("every",(function(t){return BZ(QZ(this),t,arguments.length>1?arguments[1]:void 0)}));var DZ=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return h(Br,DZ(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var EZ=JZ.TYPED_ARRAY_CONSTRUCTOR,OZ=JZ.aTypedArrayConstructor,AZ=function(t){return OZ(Wd(t,t[EZ]))},_Z=function(t,e){return function(t,e){for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i}(AZ(t),e)},qZ=Fn.filter,$Z=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("filter",(function(t){var e=qZ($Z(this),t,arguments.length>1?arguments[1]:void 0);return _Z(this,e)}));var tp=Fn.find,ep=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("find",(function(t){return tp(ep(this),t,arguments.length>1?arguments[1]:void 0)}));var np=Fn.findIndex,rp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("findIndex",(function(t){return np(rp(this),t,arguments.length>1?arguments[1]:void 0)}));var ip=Fn.forEach,cp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("forEach",(function(t){ip(cp(this),t,arguments.length>1?arguments[1]:void 0)})),(0,JZ.exportTypedArrayStaticMethod)("from",jZ,kZ);var lp=Xe.includes,op=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("includes",(function(t){return lp(op(this),t,arguments.length>1?arguments[1]:void 0)}));var ap=Xe.indexOf,up=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("indexOf",(function(t){return ap(up(this),t,arguments.length>1?arguments[1]:void 0)}));var dp=le.PROPER,sp=Xt("iterator"),mp=u.Uint8Array,hp=W(ic.values),bp=W(ic.keys),Zp=W(ic.entries),pp=JZ.aTypedArray,yp=JZ.exportTypedArrayMethod,Xp=mp&&mp.prototype[sp],fp=!!Xp&&"values"===Xp.name,Gp=function(){return hp(pp(this))};yp("entries",(function(){return Zp(pp(this))})),yp("keys",(function(){return bp(pp(this))})),yp("values",Gp,dp&&!fp),yp(sp,Gp,dp&&!fp);var Ip=JZ.aTypedArray,Vp=JZ.exportTypedArrayMethod,Wp=W([].join);Vp("join",(function(t){return Wp(Ip(this),t)}));var vp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return Pe(mc,vp(this),e>1?[t,arguments[1]]:[t])}));var gp=Fn.map,Sp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("map",(function(t){return gp(Sp(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(AZ(t))(e)}))}));var Yp=JZ.aTypedArrayConstructor;(0,JZ.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(Yp(this))(e);e>t;)n[t]=arguments[t++];return n}),kZ);var Rp=fc.left,Lp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return Rp(Lp(this),t,e,e>1?arguments[1]:void 0)}));var xp=fc.right,Kp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return xp(Kp(this),t,e,e>1?arguments[1]:void 0)}));var Jp=JZ.aTypedArray,Hp=JZ.exportTypedArrayMethod,Np=Math.floor;Hp("reverse",(function(){for(var t,e=this,n=Jp(e).length,r=Np(n/2),i=0;i<r;)t=e[i],e[i++]=e[--n],e[n]=t;return e}));var Cp=u.RangeError,kp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("set",(function(t){kp(this);var e=TZ(arguments.length>1?arguments[1]:void 0,1),n=this.length,r=ot(t),i=pe(r),c=0;if(i+e>n)throw Cp("Wrong length");for(;c<i;)this[e+c]=r[c++]}),d((function(){new Int8Array(1).set({})})));var Up=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("slice",(function(t,e){for(var n=yn(Up(this),t,e),r=AZ(this),i=0,c=n.length,l=new r(c);c>i;)l[i]=n[i++];return l}),d((function(){new Int8Array(1).slice()})));var wp=Fn.some,Tp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("some",(function(t){return wp(Tp(this),t,arguments.length>1?arguments[1]:void 0)}));var Fp=u.Array,jp=JZ.aTypedArray,zp=JZ.exportTypedArrayMethod,Pp=u.Uint16Array,Mp=Pp&&W(Pp.prototype.sort),Bp=!(!Mp||d((function(){Mp(new Pp(2),null)}))&&d((function(){Mp(new Pp(2),{})}))),Qp=!!Mp&&!d((function(){if(P)return P<74;if(Nc)return Nc<67;if(Cc)return!0;if(Uc)return Uc<602;var t,e,n=new Pp(516),r=Fp(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(Mp(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));zp("sort",(function(t){return void 0!==t&&_(t),Qp?Mp(this,t):Jc(jp(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!Qp||Bp);var Dp=JZ.aTypedArray;(0,JZ.exportTypedArrayMethod)("subarray",(function(t,e){var n=Dp(this),r=n.length,i=he(t,r);return new(AZ(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,Ze((void 0===e?r:he(e,r))-i))}));var Ep=u.Int8Array,Op=JZ.aTypedArray,Ap=JZ.exportTypedArrayMethod,_p=[].toLocaleString,qp=!!Ep&&d((function(){_p.call(new Ep(1))}));Ap("toLocaleString",(function(){return Pe(_p,qp?yn(Op(this)):Op(this),yn(arguments))}),d((function(){return[1,2].toLocaleString()!=new Ep([1,2]).toLocaleString()}))||!d((function(){Ep.prototype.toLocaleString.call([1,2])})));var $p=JZ.exportTypedArrayMethod,ty=u.Uint8Array,ey=ty&&ty.prototype||{},ny=[].toString,ry=W([].join);d((function(){ny.call({})}))&&(ny=function(){return ry(this)});var iy=ey.toString!=ny;$p("toString",ny,iy);var cy=Yo.getWeakData,ly=ne.set,oy=ne.getterFor,ay=Fn.find,uy=Fn.findIndex,dy=W([].splice),sy=0,my=function(t){return t.frozen||(t.frozen=new hy)},hy=function(){this.entries=[]},by=function(t,e){return ay(t.entries,(function(t){return t[0]===e}))};hy.prototype={get:function(t){var e=by(this,t);if(e)return e[1]},has:function(t){return!!by(this,t)},set:function(t,e){var n=by(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=uy(this.entries,(function(e){return e[0]===t}));return~e&&dy(this.entries,e,1),!!~e}};var Zy,py={getConstructor:function(t,e,n,r){var i=t((function(t,i){nl(t,c),ly(t,{type:e,id:sy++,frozen:void 0}),null!=i&&Ko(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,l=oy(e),o=function(t,e,n){var r=l(t),i=cy(Jt(e),!0);return!0===i?my(r).set(e,n):i[r.id]=n,t};return tl(c,{delete:function(t){var e=l(this);if(!N(t))return!1;var n=cy(t);return!0===n?my(e).delete(t):n&&ut(n,e.id)&&delete n[e.id]},has:function(t){var e=l(this);if(!N(t))return!1;var n=cy(t);return!0===n?my(e).has(t):n&&ut(n,e.id)}}),tl(c,n?{get:function(t){var e=l(this);if(N(t)){var n=cy(t);return!0===n?my(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),i}},yy=ne.enforce,Xy=!u.ActiveXObject&&"ActiveXObject"in u,fy=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Gy=Ho("WeakMap",fy,py);if(Mt&&Xy){Zy=py.getConstructor(fy,"WeakMap",!0),Yo.enable();var Iy=Gy.prototype,Vy=W(Iy.delete),Wy=W(Iy.has),vy=W(Iy.get),gy=W(Iy.set);tl(Iy,{delete:function(t){if(N(t)&&!go(t)){var e=yy(this);return e.frozen||(e.frozen=new Zy),Vy(this,t)||e.frozen.delete(t)}return Vy(this,t)},has:function(t){if(N(t)&&!go(t)){var e=yy(this);return e.frozen||(e.frozen=new Zy),Wy(this,t)||e.frozen.has(t)}return Wy(this,t)},get:function(t){if(N(t)&&!go(t)){var e=yy(this);return e.frozen||(e.frozen=new Zy),Wy(this,t)?vy(this,t):e.frozen.get(t)}return vy(this,t)},set:function(t,e){if(N(t)&&!go(t)){var n=yy(this);n.frozen||(n.frozen=new Zy),Wy(this,t)?gy(this,t,e):n.frozen.set(t,e)}else gy(this,t,e);return this}})}Ho("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),py);var Sy={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Yy=gt("span").classList,Ry=Yy&&Yy.constructor&&Yy.constructor.prototype,Ly=Ry===Object.prototype?void 0:Ry,xy=Fn.forEach,Ky=Ii("forEach")?[].forEach:function(t){return xy(this,t,arguments.length>1?arguments[1]:void 0)},Jy=function(t){if(t&&t.forEach!==Ky)try{Ut(t,"forEach",Ky)}catch(e){t.forEach=Ky}};for(var Hy in Sy)Sy[Hy]&&Jy(u[Hy]&&u[Hy].prototype);Jy(Ly);var Ny=Xt("iterator"),Cy=Xt("toStringTag"),ky=ic.values,Uy=function(t,e){if(t){if(t[Ny]!==ky)try{Ut(t,Ny,ky)}catch(e){t[Ny]=ky}if(t[Cy]||Ut(t,Cy,e),Sy[e])for(var n in ic)if(t[n]!==ic[n])try{Ut(t,n,ic[n])}catch(e){t[n]=ic[n]}}};for(var wy in Sy)Uy(u[wy]&&u[wy].prototype,wy);Uy(Ly,"DOMTokenList");var Ty=!u.setImmediate||!u.clearImmediate;we({global:!0,bind:!0,enumerable:!0,forced:Ty},{setImmediate:Dd.set,clearImmediate:Dd.clear});var Fy=u.process;we({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(t){var e=Gc&&Fy.domain;as(e?e.bind(t):t)}});var jy=Xt("iterator"),zy=!d((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[jy]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),Py=2147483647,My=/[^\0-\u007E]/,By=/[.\u3002\uFF0E\uFF61]/g,Qy="Overflow: input needs wider integers to process",Dy=u.RangeError,Ey=W(By.exec),Oy=Math.floor,Ay=String.fromCharCode,_y=W("".charCodeAt),qy=W([].join),$y=W([].push),tX=W("".replace),eX=W("".split),nX=W("".toLowerCase),rX=function(t){return t+22+75*(t<26)},iX=function(t,e,n){var r=0;for(t=n?Oy(t/700):t>>1,t+=Oy(t/e);t>455;)t=Oy(t/35),r+=36;return Oy(r+36*t/(t+38))},cX=function(t){var e=[];t=function(t){for(var e=[],n=0,r=t.length;n<r;){var i=_y(t,n++);if(i>=55296&&i<=56319&&n<r){var c=_y(t,n++);56320==(64512&c)?$y(e,((1023&i)<<10)+(1023&c)+65536):($y(e,i),n--)}else $y(e,i)}return e}(t);var n,r,i=t.length,c=128,l=0,o=72;for(n=0;n<t.length;n++)(r=t[n])<128&&$y(e,Ay(r));var a=e.length,u=a;for(a&&$y(e,"-");u<i;){var d=Py;for(n=0;n<t.length;n++)(r=t[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>Oy((Py-l)/s))throw Dy(Qy);for(l+=(d-c)*s,c=d,n=0;n<t.length;n++){if((r=t[n])<c&&++l>Py)throw Dy(Qy);if(r==c){for(var m=l,h=36;;){var b=h<=o?1:h>=o+26?26:h-o;if(m<b)break;var Z=m-b,p=36-b;$y(e,Ay(rX(b+Z%p))),m=Oy(Z/p),h+=36}$y(e,Ay(rX(m))),o=iX(l,s,u==a),l=0,u++}}l++,c++}return qy(e,"")},lX=Xt("iterator"),oX="URLSearchParams",aX="URLSearchParamsIterator",uX=ne.set,dX=ne.getterFor(oX),sX=ne.getterFor(aX),mX=k("fetch"),hX=k("Request"),bX=k("Headers"),ZX=hX&&hX.prototype,pX=bX&&bX.prototype,yX=u.RegExp,XX=u.TypeError,fX=u.decodeURIComponent,GX=u.encodeURIComponent,IX=W("".charAt),VX=W([].join),WX=W([].push),vX=W("".replace),gX=W([].shift),SX=W([].splice),YX=W("".split),RX=W("".slice),LX=/\+/g,xX=Array(4),KX=function(t){return xX[t-1]||(xX[t-1]=yX("((?:%[\\da-f]{2}){"+t+"})","gi"))},JX=function(t){try{return fX(t)}catch(e){return t}},HX=function(t){var e=vX(t,LX," "),n=4;try{return fX(e)}catch(t){for(;n;)e=vX(e,KX(n--),JX);return e}},NX=/[!'()~]|%20/g,CX={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},kX=function(t){return CX[t]},UX=function(t){return vX(GX(t),NX,kX)},wX=function(t,e){if(t<e)throw XX("Not enough arguments")},TX=Fi((function(t,e){uX(this,{type:aX,iterator:si(dX(t).entries),kind:e})}),"Iterator",(function(){var t=sX(this),e=t.kind,n=t.iterator.next(),r=n.value;return n.done||(n.value="keys"===e?r.key:"values"===e?r.value:[r.key,r.value]),n}),!0),FX=function(t){this.entries=[],this.url=null,void 0!==t&&(N(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===IX(t,0)?RX(t,1):t:$e(t)))};FX.prototype={type:oX,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,r,i,c,l,o,a=ui(t);if(a)for(n=(e=si(t,a)).next;!(r=h(n,e)).done;){if(c=(i=si(Jt(r.value))).next,(l=h(c,i)).done||(o=h(c,i)).done||!h(c,i).done)throw XX("Expected sequence with length 2");WX(this.entries,{key:$e(l.value),value:$e(o.value)})}else for(var u in t)ut(t,u)&&WX(this.entries,{key:u,value:$e(t[u])})},parseQuery:function(t){if(t)for(var e,n,r=YX(t,"&"),i=0;i<r.length;)(e=r[i++]).length&&(n=YX(e,"="),WX(this.entries,{key:HX(gX(n)),value:HX(VX(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],r=0;r<e.length;)t=e[r++],WX(n,UX(t.key)+"="+UX(t.value));return VX(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var jX=function(){nl(this,zX);var t=arguments.length>0?arguments[0]:void 0;uX(this,new FX(t))},zX=jX.prototype;if(tl(zX,{append:function(t,e){wX(arguments.length,2);var n=dX(this);WX(n.entries,{key:$e(t),value:$e(e)}),n.updateURL()},delete:function(t){wX(arguments.length,1);for(var e=dX(this),n=e.entries,r=$e(t),i=0;i<n.length;)n[i].key===r?SX(n,i,1):i++;e.updateURL()},get:function(t){wX(arguments.length,1);for(var e=dX(this).entries,n=$e(t),r=0;r<e.length;r++)if(e[r].key===n)return e[r].value;return null},getAll:function(t){wX(arguments.length,1);for(var e=dX(this).entries,n=$e(t),r=[],i=0;i<e.length;i++)e[i].key===n&&WX(r,e[i].value);return r},has:function(t){wX(arguments.length,1);for(var e=dX(this).entries,n=$e(t),r=0;r<e.length;)if(e[r++].key===n)return!0;return!1},set:function(t,e){wX(arguments.length,1);for(var n,r=dX(this),i=r.entries,c=!1,l=$e(t),o=$e(e),a=0;a<i.length;a++)(n=i[a]).key===l&&(c?SX(i,a--,1):(c=!0,n.value=o));c||WX(i,{key:l,value:o}),r.updateURL()},sort:function(){var t=dX(this);Jc(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=dX(this).entries,r=Sn(t,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((e=n[i++]).value,e.key,this)},keys:function(){return new TX(this,"keys")},values:function(){return new TX(this,"values")},entries:function(){return new TX(this,"entries")}},{enumerable:!0}),oe(zX,lX,zX.entries,{name:"entries"}),oe(zX,"toString",(function(){return dX(this).serialize()}),{enumerable:!0}),vn(jX,oX),we({global:!0,forced:!zy},{URLSearchParams:jX}),!zy&&H(bX)){var PX=W(pX.has),MX=W(pX.set),BX=function(t){if(N(t)){var e,n=t.body;if(_e(n)===oX)return e=t.headers?new bX(t.headers):new bX,PX(e,"content-type")||MX(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),un(t,{body:X(0,$e(n)),headers:X(0,e)})}return t};if(H(mX)&&we({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return mX(t,arguments.length>1?BX(arguments[1]):{})}}),H(hX)){var QX=function(t){return nl(this,ZX),new hX(t,arguments.length>1?BX(arguments[1]):{})};ZX.constructor=QX,QX.prototype=ZX,we({global:!0,forced:!0},{Request:QX})}}var DX,EX={URLSearchParams:jX,getState:dX},OX=Vh.codeAt,AX=ne.set,_X=ne.getterFor("URL"),qX=EX.URLSearchParams,$X=EX.getState,tf=u.URL,ef=u.TypeError,nf=u.parseInt,rf=Math.floor,cf=Math.pow,lf=W("".charAt),of=W(/./.exec),af=W([].join),uf=W(1..toString),df=W([].pop),sf=W([].push),mf=W("".replace),hf=W([].shift),bf=W("".split),Zf=W("".slice),pf=W("".toLowerCase),yf=W([].unshift),Xf="Invalid scheme",ff="Invalid host",Gf="Invalid port",If=/[a-z]/i,Vf=/[\d+-.a-z]/i,Wf=/\d/,vf=/^0x/i,gf=/^[0-7]+$/,Sf=/^\d+$/,Yf=/^[\da-f]+$/i,Rf=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Lf=/[\0\t\n\r #/:<>?@[\\\]^|]/,xf=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,Kf=/[\t\n\r]/g,Jf=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)yf(e,t%256),t=rf(t/256);return af(e,".")}if("object"==o(t)){for(e="",r=function(t){for(var e=null,n=1,r=null,i=0,c=0;c<8;c++)0!==t[c]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(e=r,n=i),e}(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=uf(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},Hf={},Nf=Uu({},Hf,{" ":1,'"':1,"<":1,">":1,"`":1}),Cf=Uu({},Nf,{"#":1,"?":1,"{":1,"}":1}),kf=Uu({},Cf,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Uf=function(t,e){var n=OX(t,0);return n>32&&n<127&&!ut(e,t)?t:encodeURIComponent(t)},wf={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Tf=function(t,e){var n;return 2==t.length&&of(If,lf(t,0))&&(":"==(n=lf(t,1))||!e&&"|"==n)},Ff=function(t){var e;return t.length>1&&Tf(Zf(t,0,2))&&(2==t.length||"/"===(e=lf(t,2))||"\\"===e||"?"===e||"#"===e)},jf=function(t){return"."===t||"%2e"===pf(t)},zf={},Pf={},Mf={},Bf={},Qf={},Df={},Ef={},Of={},Af={},_f={},qf={},$f={},tG={},eG={},nG={},rG={},iG={},cG={},lG={},oG={},aG={},uG=function t(e,n,r){var i,c,l,o=$e(e);if(n){if(c=this.parse(o))throw ef(c);this.searchParams=null}else{if(void 0!==r&&(i=new t(r,!0)),c=this.parse(o,null,i))throw ef(c);(l=$X(new qX)).bindURL(this),this.searchParams=l}};uG.prototype={type:"URL",parse:function(t,e,n){var r,i,c,l,o,a=this,u=e||zf,d=0,s="",m=!1,h=!1,b=!1;for(t=$e(t),e||(a.scheme="",a.username="",a.password="",a.host=null,a.port=null,a.path=[],a.query=null,a.fragment=null,a.cannotBeABaseURL=!1,t=mf(t,xf,"")),t=mf(t,Kf,""),r=hi(t);d<=r.length;){switch(i=r[d],u){case zf:if(!i||!of(If,i)){if(e)return Xf;u=Mf;continue}s+=pf(i),u=Pf;break;case Pf:if(i&&(of(Vf,i)||"+"==i||"-"==i||"."==i))s+=pf(i);else{if(":"!=i){if(e)return Xf;s="",u=Mf,d=0;continue}if(e&&(a.isSpecial()!=ut(wf,s)||"file"==s&&(a.includesCredentials()||null!==a.port)||"file"==a.scheme&&!a.host))return;if(a.scheme=s,e)return void(a.isSpecial()&&wf[a.scheme]==a.port&&(a.port=null));s="","file"==a.scheme?u=eG:a.isSpecial()&&n&&n.scheme==a.scheme?u=Bf:a.isSpecial()?u=Of:"/"==r[d+1]?(u=Qf,d++):(a.cannotBeABaseURL=!0,sf(a.path,""),u=lG)}break;case Mf:if(!n||n.cannotBeABaseURL&&"#"!=i)return Xf;if(n.cannotBeABaseURL&&"#"==i){a.scheme=n.scheme,a.path=hn(n.path),a.query=n.query,a.fragment="",a.cannotBeABaseURL=!0,u=aG;break}u="file"==n.scheme?eG:Df;continue;case Bf:if("/"!=i||"/"!=r[d+1]){u=Df;continue}u=Af,d++;break;case Qf:if("/"==i){u=_f;break}u=cG;continue;case Df:if(a.scheme=n.scheme,i==DX)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=hn(n.path),a.query=n.query;else if("/"==i||"\\"==i&&a.isSpecial())u=Ef;else if("?"==i)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=hn(n.path),a.query="",u=oG;else{if("#"!=i){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=hn(n.path),a.path.length--,u=cG;continue}a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=hn(n.path),a.query=n.query,a.fragment="",u=aG}break;case Ef:if(!a.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,u=cG;continue}u=_f}else u=Af;break;case Of:if(u=Af,"/"!=i||"/"!=lf(s,d+1))continue;d++;break;case Af:if("/"!=i&&"\\"!=i){u=_f;continue}break;case _f:if("@"==i){m&&(s="%40"+s),m=!0,c=hi(s);for(var Z=0;Z<c.length;Z++){var p=c[Z];if(":"!=p||b){var y=Uf(p,kf);b?a.password+=y:a.username+=y}else b=!0}s=""}else if(i==DX||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()){if(m&&""==s)return"Invalid authority";d-=hi(s).length+1,s="",u=qf}else s+=i;break;case qf:case $f:if(e&&"file"==a.scheme){u=rG;continue}if(":"!=i||h){if(i==DX||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()){if(a.isSpecial()&&""==s)return ff;if(e&&""==s&&(a.includesCredentials()||null!==a.port))return;if(l=a.parseHost(s))return l;if(s="",u=iG,e)return;continue}"["==i?h=!0:"]"==i&&(h=!1),s+=i}else{if(""==s)return ff;if(l=a.parseHost(s))return l;if(s="",u=tG,e==$f)return}break;case tG:if(!of(Wf,i)){if(i==DX||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()||e){if(""!=s){var X=nf(s,10);if(X>65535)return Gf;a.port=a.isSpecial()&&X===wf[a.scheme]?null:X,s=""}if(e)return;u=iG;continue}return Gf}s+=i;break;case eG:if(a.scheme="file","/"==i||"\\"==i)u=nG;else{if(!n||"file"!=n.scheme){u=cG;continue}if(i==DX)a.host=n.host,a.path=hn(n.path),a.query=n.query;else if("?"==i)a.host=n.host,a.path=hn(n.path),a.query="",u=oG;else{if("#"!=i){Ff(af(hn(r,d),""))||(a.host=n.host,a.path=hn(n.path),a.shortenPath()),u=cG;continue}a.host=n.host,a.path=hn(n.path),a.query=n.query,a.fragment="",u=aG}}break;case nG:if("/"==i||"\\"==i){u=rG;break}n&&"file"==n.scheme&&!Ff(af(hn(r,d),""))&&(Tf(n.path[0],!0)?sf(a.path,n.path[0]):a.host=n.host),u=cG;continue;case rG:if(i==DX||"/"==i||"\\"==i||"?"==i||"#"==i){if(!e&&Tf(s))u=cG;else if(""==s){if(a.host="",e)return;u=iG}else{if(l=a.parseHost(s))return l;if("localhost"==a.host&&(a.host=""),e)return;s="",u=iG}continue}s+=i;break;case iG:if(a.isSpecial()){if(u=cG,"/"!=i&&"\\"!=i)continue}else if(e||"?"!=i)if(e||"#"!=i){if(i!=DX&&(u=cG,"/"!=i))continue}else a.fragment="",u=aG;else a.query="",u=oG;break;case cG:if(i==DX||"/"==i||"\\"==i&&a.isSpecial()||!e&&("?"==i||"#"==i)){if(".."===(o=pf(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(a.shortenPath(),"/"==i||"\\"==i&&a.isSpecial()||sf(a.path,"")):jf(s)?"/"==i||"\\"==i&&a.isSpecial()||sf(a.path,""):("file"==a.scheme&&!a.path.length&&Tf(s)&&(a.host&&(a.host=""),s=lf(s,0)+":"),sf(a.path,s)),s="","file"==a.scheme&&(i==DX||"?"==i||"#"==i))for(;a.path.length>1&&""===a.path[0];)hf(a.path);"?"==i?(a.query="",u=oG):"#"==i&&(a.fragment="",u=aG)}else s+=Uf(i,Cf);break;case lG:"?"==i?(a.query="",u=oG):"#"==i?(a.fragment="",u=aG):i!=DX&&(a.path[0]+=Uf(i,Hf));break;case oG:e||"#"!=i?i!=DX&&("'"==i&&a.isSpecial()?a.query+="%27":a.query+="#"==i?"%23":Uf(i,Hf)):(a.fragment="",u=aG);break;case aG:i!=DX&&(a.fragment+=Uf(i,Nf))}d++}},parseHost:function(t){var e,n,r;if("["==lf(t,0)){if("]"!=lf(t,t.length-1))return ff;if(e=function(t){var e,n,r,i,c,l,o,a=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return lf(t,s)};if(":"==m()){if(":"!=lf(t,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(e=n=0;n<4&&of(Yf,m());)e=16*e+nf(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!of(Wf,m()))return;for(;of(Wf,m());){if(c=nf(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}a[u]=256*a[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;a[u++]=e}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(l=u-d,u=7;0!=u&&l>0;)o=a[u],a[u--]=a[d+l-1],a[d+--l]=o;else if(8!=u)return;return a}(Zf(t,1,-1)),!e)return ff;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,n,r=[],i=eX(tX(nX(t),By,"."),".");for(e=0;e<i.length;e++)n=i[e],$y(r,Ey(My,n)?"xn--"+cX(n):n);return qy(r,".")}(t),of(Rf,t))return ff;if(e=function(t){var e,n,r,i,c,l,o,a=bf(t,".");if(a.length&&""==a[a.length-1]&&a.length--,(e=a.length)>4)return t;for(n=[],r=0;r<e;r++){if(""==(i=a[r]))return t;if(c=10,i.length>1&&"0"==lf(i,0)&&(c=of(vf,i)?16:8,i=Zf(i,8==c?1:2)),""===i)l=0;else{if(!of(10==c?Sf:8==c?gf:Yf,i))return t;l=nf(i,c)}sf(n,l)}for(r=0;r<e;r++)if(l=n[r],r==e-1){if(l>=cf(256,5-e))return null}else if(l>255)return null;for(o=df(n),r=0;r<n.length;r++)o+=n[r]*cf(256,3-r);return o}(t),null===e)return ff;this.host=e}else{if(of(Lf,t))return ff;for(e="",n=hi(t),r=0;r<n.length;r++)e+=Uf(n[r],Hf);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return ut(wf,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&Tf(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,r=t.password,i=t.host,c=t.port,l=t.path,o=t.query,a=t.fragment,u=e+":";return null!==i?(u+="//",t.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=Jf(i),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?l[0]:l.length?"/"+af(l,"/"):"",null!==o&&(u+="?"+o),null!==a&&(u+="#"+a),u},setHref:function(t){var e=this.parse(t);if(e)throw ef(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new dG(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+Jf(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse($e(t)+":",zf)},getUsername:function(){return this.username},setUsername:function(t){var e=hi($e(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=Uf(e[n],kf)}},getPassword:function(){return this.password},setPassword:function(t){var e=hi($e(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=Uf(e[n],kf)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?Jf(t):Jf(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,qf)},getHostname:function(){var t=this.host;return null===t?"":Jf(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,$f)},getPort:function(){var t=this.port;return null===t?"":$e(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=$e(t))?this.port=null:this.parse(t,tG))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+af(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,iG))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=$e(t))?this.query=null:("?"==lf(t,0)&&(t=Zf(t,1)),this.query="",this.parse(t,oG)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=$e(t))?("#"==lf(t,0)&&(t=Zf(t,1)),this.fragment="",this.parse(t,aG)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var dG=function(t){var e=nl(this,sG),n=arguments.length>1?arguments[1]:void 0,r=AX(e,new uG(t,!1,n));s||(e.href=r.serialize(),e.origin=r.getOrigin(),e.protocol=r.getProtocol(),e.username=r.getUsername(),e.password=r.getPassword(),e.host=r.getHost(),e.hostname=r.getHostname(),e.port=r.getPort(),e.pathname=r.getPathname(),e.search=r.getSearch(),e.searchParams=r.getSearchParams(),e.hash=r.getHash())},sG=dG.prototype,mG=function(t,e){return{get:function(){return _X(this)[t]()},set:e&&function(t){return _X(this)[e](t)},configurable:!0,enumerable:!0}};if(s&&en(sG,{href:mG("serialize","setHref"),origin:mG("getOrigin"),protocol:mG("getProtocol","setProtocol"),username:mG("getUsername","setUsername"),password:mG("getPassword","setPassword"),host:mG("getHost","setHost"),hostname:mG("getHostname","setHostname"),port:mG("getPort","setPort"),pathname:mG("getPathname","setPathname"),search:mG("getSearch","setSearch"),searchParams:mG("getSearchParams"),hash:mG("getHash","setHash")}),oe(sG,"toJSON",(function(){return _X(this).serialize()}),{enumerable:!0}),oe(sG,"toString",(function(){return _X(this).serialize()}),{enumerable:!0}),tf){var hG=tf.createObjectURL,bG=tf.revokeObjectURL;hG&&oe(dG,"createObjectURL",Sn(hG,tf)),bG&&oe(dG,"revokeObjectURL",Sn(bG,tf))}vn(dG,"URL"),we({global:!0,forced:!zy,sham:!s},{URL:dG}),we({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return h(URL.prototype.toString,this)}});var ZG=r((function(t){var e=function(t){var e,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},c=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function d(t,e,n,r){var i=e&&e.prototype instanceof y?e:y,c=Object.create(i.prototype),l=new L(r||[]);return c._invoke=function(t,e,n){var r=m;return function(i,c){if(r===b)throw new Error("Generator is already running");if(r===Z){if("throw"===i)throw c;return K()}for(n.method=i,n.arg=c;;){var l=n.delegate;if(l){var o=S(l,n);if(o){if(o===p)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===m)throw r=Z,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=b;var a=s(t,e,n);if("normal"===a.type){if(r=n.done?Z:h,a.arg===p)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(r=Z,n.method="throw",n.arg=a.arg)}}}(t,n,l),c}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var m="suspendedStart",h="suspendedYield",b="executing",Z="completed",p={};function y(){}function X(){}function f(){}var G={};u(G,c,(function(){return this}));var I=Object.getPrototypeOf,V=I&&I(I(x([])));V&&V!==n&&r.call(V,c)&&(G=V);var W=f.prototype=y.prototype=Object.create(G);function v(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function g(t,e){function n(i,c,l,a){var u=s(t[i],t,c);if("throw"!==u.type){var d=u.arg,m=d.value;return m&&"object"===o(m)&&r.call(m,"__await")?e.resolve(m.__await).then((function(t){n("next",t,l,a)}),(function(t){n("throw",t,l,a)})):e.resolve(m).then((function(t){d.value=t,l(d)}),(function(t){return n("throw",t,l,a)}))}a(u.arg)}var i;this._invoke=function(t,r){function c(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(c,c):c()}}function S(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var i=s(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var c=i.arg;return c?c.done?(n[t.resultName]=c.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):c:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function Y(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function R(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(Y,this),this.reset(!0)}function x(t){if(t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,l=function n(){for(;++i<t.length;)if(r.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return l.next=l}}return{next:K}}function K(){return{value:e,done:!0}}return X.prototype=f,u(W,"constructor",f),u(f,"constructor",X),X.displayName=u(f,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===X||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,f):(t.__proto__=f,u(t,a,"GeneratorFunction")),t.prototype=Object.create(W),t},t.awrap=function(t){return{__await:t}},v(g.prototype),u(g.prototype,l,(function(){return this})),t.AsyncIterator=g,t.async=function(e,n,r,i,c){void 0===c&&(c=Promise);var l=new g(d(e,n,r,i),c);return t.isGeneratorFunction(n)?l:l.next().then((function(t){return t.done?t.value:l.next()}))},v(W),u(W,a,"Generator"),u(W,c,(function(){return this})),u(W,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=x,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(R),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(r,i){return o.type="throw",o.arg=t,n.next=r,i&&(n.method="next",n.arg=e),!!i}for(var c=this.tryEntries.length-1;c>=0;--c){var l=this.tryEntries[c],o=l.completion;if("root"===l.tryLoc)return i("end");if(l.tryLoc<=this.prev){var a=r.call(l,"catchLoc"),u=r.call(l,"finallyLoc");if(a&&u){if(this.prev<l.catchLoc)return i(l.catchLoc,!0);if(this.prev<l.finallyLoc)return i(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return i(l.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return i(l.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var c=i;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var l=c?c.completion:{};return l.type=t,l.arg=e,c?(this.method="next",this.next=c.finallyLoc,p):this.complete(l)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),p},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),R(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;R(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:x(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"===("undefined"==typeof globalThis?"undefined":o(globalThis))?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})),pG=r((function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0})),yG=n(pG),XG=r((function(t){function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t},t.exports.default=t.exports,t.exports.__esModule=!0})),fG=n(XG),GG=ZG;function IG(t,e,n,r){return new(n||(n=Promise))((function(i,c){function l(t){try{a(r.next(t))}catch(t){c(t)}}function o(t){try{a(r.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((r=r.apply(t,e||[])).next())}))}var VG=r((function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r},t.exports.default=t.exports,t.exports.__esModule=!0})),WG=r((function(t){t.exports=function(t){if(Array.isArray(t))return VG(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),vG=r((function(t){t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),gG=r((function(t){t.exports=function(t,e){if(t){if("string"==typeof t)return VG(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?VG(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0})),SG=r((function(t){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),YG=n(r((function(t){t.exports=function(t){return WG(t)||vG(t)||gG(t)||SG()},t.exports.default=t.exports,t.exports.__esModule=!0}))),RG=r((function(t){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0})),LG=r((function(t){t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,c=[],l=!0,o=!1;try{for(n=n.call(t);!(l=(r=n.next()).done)&&(c.push(r.value),!e||c.length!==e);l=!0);}catch(t){o=!0,i=t}finally{try{l||null==n.return||n.return()}finally{if(o)throw i}}return c}},t.exports.default=t.exports,t.exports.__esModule=!0})),xG=r((function(t){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),KG=r((function(t){t.exports=function(t,e){return RG(t)||LG(t,e)||gG(t,e)||xG()},t.exports.default=t.exports,t.exports.__esModule=!0})),JG=n(KG),HG=r((function(t){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.default=t.exports,t.exports.__esModule=!0})),NG=n(HG),CG=r((function(t){function e(t,e,n,r,i,c,l){try{var o=t[c](l),a=o.value}catch(t){return void n(t)}o.done?e(a):Promise.resolve(a).then(r,i)}t.exports=function(t){return function(){var n=this,r=arguments;return new Promise((function(i,c){var l=t.apply(n,r);function o(t){e(l,i,c,o,a,"next",t)}function a(t){e(l,i,c,o,a,"throw",t)}o(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0})),kG=n(CG),UG=r((function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0})),wG=n(UG),TG=r((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,e(n,r)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),FG=n(r((function(t){t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&TG(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0}))),jG=r((function(t){var e=l.default;t.exports=function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return UG(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),zG=n(jG),PG=r((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),MG=n(PG),BG=r((function(t){t.exports=function(t){return-1!==Function.toString.call(t).indexOf("[native code]")},t.exports.default=t.exports,t.exports.__esModule=!0})),QG=r((function(t){t.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0})),DG=r((function(t){function e(n,r,i){return QG()?(t.exports=e=Reflect.construct,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&TG(i,n.prototype),i},t.exports.default=t.exports,t.exports.__esModule=!0),e.apply(null,arguments)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),EG=r((function(t){function e(n){var r="function"==typeof Map?new Map:void 0;return t.exports=e=function(t){if(null===t||!BG(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return DG(t,arguments,PG(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),TG(e,t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),OG=n(EG),AG="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_G=[],qG=[],$G="undefined"!=typeof Uint8Array?Uint8Array:Array,tI=!1;function eI(){tI=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)_G[e]=t[e],qG[t.charCodeAt(e)]=e;qG["-".charCodeAt(0)]=62,qG["_".charCodeAt(0)]=63}function nI(t,e,n){for(var r,i,c=[],l=e;l<n;l+=3)r=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(_G[(i=r)>>18&63]+_G[i>>12&63]+_G[i>>6&63]+_G[63&i]);return c.join("")}function rI(t){var e;tI||eI();for(var n=t.length,r=n%3,i="",c=[],l=16383,o=0,a=n-r;o<a;o+=l)c.push(nI(t,o,o+l>a?a:o+l));return 1===r?(e=t[n-1],i+=_G[e>>2],i+=_G[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=_G[e>>10],i+=_G[e>>4&63],i+=_G[e<<2&63],i+="="),c.push(i),c.join("")}function iI(t,e,n,r,i){var c,l,o=8*i-r-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=r;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,r),c-=u}return(h?-1:1)*l*Math.pow(2,c-r)}function cI(t,e,n,r,i,c){var l,o,a,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,b=r?1:-1,Z=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,i),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,i),l=0));i>=8;t[n+h]=255&o,h+=b,o/=256,i-=8);for(l=l<<i|o,u+=i;u>0;t[n+h]=255&l,h+=b,l/=256,u-=8);t[n+h-b]|=128*Z}var lI={}.toString,oI=Array.isArray||function(t){return"[object Array]"==lI.call(t)};function aI(){return dI.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function uI(t,e){if(aI()<e)throw new RangeError("Invalid typed array length");return dI.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=dI.prototype:(null===t&&(t=new dI(e)),t.length=e),t}function dI(t,e,n){if(!(dI.TYPED_ARRAY_SUPPORT||this instanceof dI))return new dI(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return hI(this,t)}return sI(this,t,e,n)}function sI(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);dI.TYPED_ARRAY_SUPPORT?(t=e).__proto__=dI.prototype:t=bI(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!dI.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|yI(e,n),i=(t=uI(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(pI(e)){var n=0|ZI(e.length);return 0===(t=uI(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?uI(t,0):bI(t,e);if("Buffer"===e.type&&oI(e.data))return bI(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function mI(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function hI(t,e){if(mI(e),t=uI(t,e<0?0:0|ZI(e)),!dI.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function bI(t,e){var n=e.length<0?0:0|ZI(e.length);t=uI(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function ZI(t){if(t>=aI())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+aI().toString(16)+" bytes");return 0|t}function pI(t){return!(null==t||!t._isBuffer)}function yI(t,e){if(pI(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return MI(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return BI(t).length;default:if(r)return MI(t).length;e=(""+e).toLowerCase(),r=!0}}function XI(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return HI(this,e,n);case"utf8":case"utf-8":return LI(this,e,n);case"ascii":return KI(this,e,n);case"latin1":case"binary":return JI(this,e,n);case"base64":return RI(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return NI(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function fI(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function GI(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=dI.from(e,r)),pI(e))return 0===e.length?-1:II(t,e,n,r,i);if("number"==typeof e)return e&=255,dI.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):II(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function II(t,e,n,r,i){var c,l=1,o=t.length,a=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(i){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function VI(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var l=0;l<r;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function WI(t,e,n,r){return QI(MI(e,t.length-n),t,n,r)}function vI(t,e,n,r){return QI(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function gI(t,e,n,r){return vI(t,e,n,r)}function SI(t,e,n,r){return QI(BI(e),t,n,r)}function YI(t,e,n,r){return QI(function(t,e){for(var n,r,i,c=[],l=0;l<t.length&&!((e-=2)<0);++l)r=(n=t.charCodeAt(l))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function RI(t,e,n){return 0===e&&n===t.length?rI(t):rI(t.slice(e,n))}function LI(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,l,o,a,u=t[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[i+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[i+1],l=t[i+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[i+1],l=t[i+2],o=t[i+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(t){var e=t.length;if(e<=xI)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=xI));return n}(r)}dI.TYPED_ARRAY_SUPPORT=void 0===AG.TYPED_ARRAY_SUPPORT||AG.TYPED_ARRAY_SUPPORT,dI.poolSize=8192,dI._augment=function(t){return t.__proto__=dI.prototype,t},dI.from=function(t,e,n){return sI(null,t,e,n)},dI.TYPED_ARRAY_SUPPORT&&(dI.prototype.__proto__=Uint8Array.prototype,dI.__proto__=Uint8Array),dI.alloc=function(t,e,n){return function(t,e,n,r){return mI(e),e<=0?uI(t,e):void 0!==n?"string"==typeof r?uI(t,e).fill(n,r):uI(t,e).fill(n):uI(t,e)}(null,t,e,n)},dI.allocUnsafe=function(t){return hI(null,t)},dI.allocUnsafeSlow=function(t){return hI(null,t)},dI.isBuffer=function(t){return null!=t&&(!!t._isBuffer||DI(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&DI(t.slice(0,0))}(t))},dI.compare=function(t,e){if(!pI(t)||!pI(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},dI.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},dI.concat=function(t,e){if(!oI(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return dI.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=dI.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!pI(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},dI.byteLength=yI,dI.prototype._isBuffer=!0,dI.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)fI(this,e,e+1);return this},dI.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)fI(this,e,e+3),fI(this,e+1,e+2);return this},dI.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)fI(this,e,e+7),fI(this,e+1,e+6),fI(this,e+2,e+5),fI(this,e+3,e+4);return this},dI.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?LI(this,0,t):XI.apply(this,arguments)},dI.prototype.equals=function(t){if(!pI(t))throw new TypeError("Argument must be a Buffer");return this===t||0===dI.compare(this,t)},dI.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},dI.prototype.compare=function(t,e,n,r,i){if(!pI(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(r,i),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},dI.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},dI.prototype.indexOf=function(t,e,n){return GI(this,t,e,n,!0)},dI.prototype.lastIndexOf=function(t,e,n){return GI(this,t,e,n,!1)},dI.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return VI(this,t,e,n);case"utf8":case"utf-8":return WI(this,t,e,n);case"ascii":return vI(this,t,e,n);case"latin1":case"binary":return gI(this,t,e,n);case"base64":return SI(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return YI(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},dI.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var xI=4096;function KI(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function JI(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function HI(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=PI(t[c]);return i}function NI(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function CI(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function kI(t,e,n,r,i,c){if(!pI(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function UI(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function wI(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function TI(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function FI(t,e,n,r,i){return i||TI(t,0,n,4),cI(t,e,n,r,23,4),n+4}function jI(t,e,n,r,i){return i||TI(t,0,n,8),cI(t,e,n,r,52,8),n+8}dI.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),dI.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=dI.prototype;else{var i=e-t;n=new dI(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},dI.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||CI(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},dI.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||CI(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},dI.prototype.readUInt8=function(t,e){return e||CI(t,1,this.length),this[t]},dI.prototype.readUInt16LE=function(t,e){return e||CI(t,2,this.length),this[t]|this[t+1]<<8},dI.prototype.readUInt16BE=function(t,e){return e||CI(t,2,this.length),this[t]<<8|this[t+1]},dI.prototype.readUInt32LE=function(t,e){return e||CI(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},dI.prototype.readUInt32BE=function(t,e){return e||CI(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},dI.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||CI(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},dI.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||CI(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},dI.prototype.readInt8=function(t,e){return e||CI(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},dI.prototype.readInt16LE=function(t,e){e||CI(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},dI.prototype.readInt16BE=function(t,e){e||CI(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},dI.prototype.readInt32LE=function(t,e){return e||CI(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},dI.prototype.readInt32BE=function(t,e){return e||CI(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},dI.prototype.readFloatLE=function(t,e){return e||CI(t,4,this.length),iI(this,t,!0,23,4)},dI.prototype.readFloatBE=function(t,e){return e||CI(t,4,this.length),iI(this,t,!1,23,4)},dI.prototype.readDoubleLE=function(t,e){return e||CI(t,8,this.length),iI(this,t,!0,52,8)},dI.prototype.readDoubleBE=function(t,e){return e||CI(t,8,this.length),iI(this,t,!1,52,8)},dI.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||kI(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},dI.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||kI(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},dI.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,1,255,0),dI.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},dI.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,2,65535,0),dI.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):UI(this,t,e,!0),e+2},dI.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,2,65535,0),dI.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):UI(this,t,e,!1),e+2},dI.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,4,4294967295,0),dI.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):wI(this,t,e,!0),e+4},dI.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,4,4294967295,0),dI.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):wI(this,t,e,!1),e+4},dI.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);kI(this,t,e,n,i-1,-i)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},dI.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);kI(this,t,e,n,i-1,-i)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},dI.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,1,127,-128),dI.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},dI.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,2,32767,-32768),dI.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):UI(this,t,e,!0),e+2},dI.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,2,32767,-32768),dI.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):UI(this,t,e,!1),e+2},dI.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,4,2147483647,-2147483648),dI.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):wI(this,t,e,!0),e+4},dI.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||kI(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),dI.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):wI(this,t,e,!1),e+4},dI.prototype.writeFloatLE=function(t,e,n){return FI(this,t,e,!0,n)},dI.prototype.writeFloatBE=function(t,e,n){return FI(this,t,e,!1,n)},dI.prototype.writeDoubleLE=function(t,e,n){return jI(this,t,e,!0,n)},dI.prototype.writeDoubleBE=function(t,e,n){return jI(this,t,e,!1,n)},dI.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!dI.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},dI.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!dI.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=pI(t)?t:MI(new dI(t,r).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var zI=/[^+\/0-9A-Za-z-_]/g;function PI(t){return t<16?"0"+t.toString(16):t.toString(16)}function MI(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],l=0;l<r;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function BI(t){return function(t){var e,n,r,i,c,l;tI||eI();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new $G(3*o/4-c),r=c>0?o-4:o;var a=0;for(e=0,n=0;e<r;e+=4,n+=3)i=qG[t.charCodeAt(e)]<<18|qG[t.charCodeAt(e+1)]<<12|qG[t.charCodeAt(e+2)]<<6|qG[t.charCodeAt(e+3)],l[a++]=i>>16&255,l[a++]=i>>8&255,l[a++]=255&i;return 2===c?(i=qG[t.charCodeAt(e)]<<2|qG[t.charCodeAt(e+1)]>>4,l[a++]=255&i):1===c&&(i=qG[t.charCodeAt(e)]<<10|qG[t.charCodeAt(e+1)]<<4|qG[t.charCodeAt(e+2)]>>2,l[a++]=i>>8&255,l[a++]=255&i),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(zI,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function QI(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function DI(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var EI=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}},OI=Object.prototype.toString;function AI(t){return"[object Array]"===OI.call(t)}function _I(t){return void 0===t}function qI(t){return null!==t&&"object"===o(t)}function $I(t){if("[object Object]"!==OI.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function tV(t){return"[object Function]"===OI.call(t)}function eV(t,e){if(null!=t)if("object"!==o(t)&&(t=[t]),AI(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}var nV={isArray:AI,isArrayBuffer:function(t){return"[object ArrayBuffer]"===OI.call(t)},isBuffer:function(t){return null!==t&&!_I(t)&&null!==t.constructor&&!_I(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:qI,isPlainObject:$I,isUndefined:_I,isDate:function(t){return"[object Date]"===OI.call(t)},isFile:function(t){return"[object File]"===OI.call(t)},isBlob:function(t){return"[object Blob]"===OI.call(t)},isFunction:tV,isStream:function(t){return qI(t)&&tV(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:eV,merge:function t(){var e={};function n(n,r){$I(e[r])&&$I(n)?e[r]=t(e[r],n):$I(n)?e[r]=t({},n):AI(n)?e[r]=n.slice():e[r]=n}for(var r=0,i=arguments.length;r<i;r++)eV(arguments[r],n);return e},extend:function(t,e,n){return eV(e,(function(e,r){t[r]=n&&"function"==typeof e?EI(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}};function rV(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var iV=function(t,e,n){if(!e)return t;var r;if(n)r=n(e);else if(nV.isURLSearchParams(e))r=e.toString();else{var i=[];nV.forEach(e,(function(t,e){null!=t&&(nV.isArray(t)?e+="[]":t=[t],nV.forEach(t,(function(t){nV.isDate(t)?t=t.toISOString():nV.isObject(t)&&(t=JSON.stringify(t)),i.push(rV(e)+"="+rV(t))})))})),r=i.join("&")}if(r){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+r}return t};function cV(){this.handlers=[]}cV.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},cV.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},cV.prototype.forEach=function(t){nV.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var lV=cV;function oV(){throw new Error("setTimeout has not been defined")}function aV(){throw new Error("clearTimeout has not been defined")}var uV=oV,dV=aV;function sV(t){if(uV===setTimeout)return setTimeout(t,0);if((uV===oV||!uV)&&setTimeout)return uV=setTimeout,setTimeout(t,0);try{return uV(t,0)}catch(e){try{return uV.call(null,t,0)}catch(e){return uV.call(this,t,0)}}}"function"==typeof AG.setTimeout&&(uV=setTimeout),"function"==typeof AG.clearTimeout&&(dV=clearTimeout);var mV,hV=[],bV=!1,ZV=-1;function pV(){bV&&mV&&(bV=!1,mV.length?hV=mV.concat(hV):ZV=-1,hV.length&&yV())}function yV(){if(!bV){var t=sV(pV);bV=!0;for(var e=hV.length;e;){for(mV=hV,hV=[];++ZV<e;)mV&&mV[ZV].run();ZV=-1,e=hV.length}mV=null,bV=!1,function(t){if(dV===clearTimeout)return clearTimeout(t);if((dV===aV||!dV)&&clearTimeout)return dV=clearTimeout,clearTimeout(t);try{dV(t)}catch(e){try{return dV.call(null,t)}catch(e){return dV.call(this,t)}}}(t)}}function XV(t,e){this.fun=t,this.array=e}XV.prototype.run=function(){this.fun.apply(null,this.array)};function fV(){}var GV=fV,IV=fV,VV=fV,WV=fV,vV=fV,gV=fV,SV=fV;var YV=AG.performance||{},RV=YV.now||YV.mozNow||YV.msNow||YV.oNow||YV.webkitNow||function(){return(new Date).getTime()};var LV=new Date;var xV={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];hV.push(new XV(t,e)),1!==hV.length||bV||sV(yV)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:GV,addListener:IV,once:VV,off:WV,removeListener:vV,removeAllListeners:gV,emit:SV,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*RV.call(YV),n=Math.floor(e),r=Math.floor(e%1*1e9);return t&&(n-=t[0],(r-=t[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-LV)/1e3}},KV=xV,JV=function(t,e){nV.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))},HV=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t},NV=function(t,e,n,r,i){var c=new Error(t);return HV(c,e,n,r,i)},CV=nV.isStandardBrowserEnv()?{write:function(t,e,n,r,i,c){var l=[];l.push(t+"="+encodeURIComponent(e)),nV.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),nV.isString(r)&&l.push("path="+r),nV.isString(i)&&l.push("domain="+i),!0===c&&l.push("secure"),document.cookie=l.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},kV=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],UV=nV.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=nV.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0},wV=function(t){return new Promise((function(e,n){var r=t.data,i=t.headers,c=t.responseType;nV.isFormData(r)&&delete i["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var o=t.auth.username||"",a=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";i.Authorization="Basic "+btoa(o+":"+a)}var u,d,s=(u=t.baseURL,d=t.url,u&&!/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(d)?function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}(u,d):d);function m(){if(l){var r="getAllResponseHeaders"in l?function(t){var e,n,r,i={};return t?(nV.forEach(t.split("\n"),(function(t){if(r=t.indexOf(":"),e=nV.trim(t.substr(0,r)).toLowerCase(),n=nV.trim(t.substr(r+1)),e){if(i[e]&&kV.indexOf(e)>=0)return;i[e]="set-cookie"===e?(i[e]?i[e]:[]).concat([n]):i[e]?i[e]+", "+n:n}})),i):i}(l.getAllResponseHeaders()):null,i={data:c&&"text"!==c&&"json"!==c?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:t,request:l};!function(t,e,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?e(NV("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}(e,n,i),l=null}}if(l.open(t.method.toUpperCase(),iV(s,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(NV("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(NV("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(NV(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},nV.isStandardBrowserEnv()){var h=(t.withCredentials||UV(s))&&t.xsrfCookieName?CV.read(t.xsrfCookieName):void 0;h&&(i[t.xsrfHeaderName]=h)}"setRequestHeader"in l&&nV.forEach(i,(function(t,e){void 0===r&&"content-type"===e.toLowerCase()?delete i[e]:l.setRequestHeader(e,t)})),nV.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),c&&"json"!==c&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){l&&(l.abort(),n(t),l=null)})),r||(r=null),l.send(r)}))},TV={"Content-Type":"application/x-www-form-urlencoded"};function FV(t,e){!nV.isUndefined(t)&&nV.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var jV,zV={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==KV&&"[object process]"===Object.prototype.toString.call(KV))&&(jV=wV),jV),transformRequest:[function(t,e){return JV(e,"Accept"),JV(e,"Content-Type"),nV.isFormData(t)||nV.isArrayBuffer(t)||nV.isBuffer(t)||nV.isStream(t)||nV.isFile(t)||nV.isBlob(t)?t:nV.isArrayBufferView(t)?t.buffer:nV.isURLSearchParams(t)?(FV(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):nV.isObject(t)||e&&"application/json"===e["Content-Type"]?(FV(e,"application/json"),function(t,e,n){if(nV.isString(t))try{return(e||JSON.parse)(t),nV.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional,n=e&&e.silentJSONParsing,r=e&&e.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&nV.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(i){if("SyntaxError"===t.name)throw HV(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300}};zV.headers={common:{Accept:"application/json, text/plain, */*"}},nV.forEach(["delete","get","head"],(function(t){zV.headers[t]={}})),nV.forEach(["post","put","patch"],(function(t){zV.headers[t]=nV.merge(TV)}));var PV=zV,MV=function(t,e,n){var r=this||PV;return nV.forEach(n,(function(n){t=n.call(r,t,e)})),t},BV=function(t){return!(!t||!t.__CANCEL__)};function QV(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var DV=function(t){return QV(t),t.headers=t.headers||{},t.data=MV.call(t,t.data,t.headers,t.transformRequest),t.headers=nV.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),nV.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||PV.adapter)(t).then((function(e){return QV(t),e.data=MV.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return BV(e)||(QV(t),e&&e.response&&(e.response.data=MV.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},EV=function(t,e){e=e||{};var n={},r=["url","method","data"],i=["headers","auth","proxy","params"],c=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],l=["validateStatus"];function o(t,e){return nV.isPlainObject(t)&&nV.isPlainObject(e)?nV.merge(t,e):nV.isPlainObject(e)?nV.merge({},e):nV.isArray(e)?e.slice():e}function a(r){nV.isUndefined(e[r])?nV.isUndefined(t[r])||(n[r]=o(void 0,t[r])):n[r]=o(t[r],e[r])}nV.forEach(r,(function(t){nV.isUndefined(e[t])||(n[t]=o(void 0,e[t]))})),nV.forEach(i,a),nV.forEach(c,(function(r){nV.isUndefined(e[r])?nV.isUndefined(t[r])||(n[r]=o(void 0,t[r])):n[r]=o(void 0,e[r])})),nV.forEach(l,(function(r){r in e?n[r]=o(t[r],e[r]):r in t&&(n[r]=o(void 0,t[r]))}));var u=r.concat(i).concat(c).concat(l),d=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===u.indexOf(t)}));return nV.forEach(d,a),n},OV={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},AV={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){AV[t]=function(n){return o(n)===t||"a"+(e<1?"n ":" ")+t}}));var _V={},qV=OV.version.split(".");function $V(t,e){for(var n=e?e.split("."):qV,r=t.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]<r[i])return!1}return!1}AV.transitional=function(t,e,n){var r=e&&$V(e);function i(t,e){return"[Axios v"+OV.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,c,l){if(!1===t)throw new Error(i(c," has been removed in "+e));return r&&!_V[c]&&(_V[c]=!0,console.warn(i(c," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,c,l)}};var tW={isOlderVersion:$V,assertOptions:function(t,e,n){if("object"!==o(t))throw new TypeError("options must be an object");for(var r=Object.keys(t),i=r.length;i-- >0;){var c=r[i],l=e[c];if(l){var a=t[c],u=void 0===a||l(a,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:AV},eW=tW.validators;function nW(t){this.defaults=t,this.interceptors={request:new lV,response:new lV}}nW.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=EV(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&tW.assertOptions(e,{silentJSONParsing:eW.transitional(eW.boolean,"1.0.0"),forcedJSONParsing:eW.transitional(eW.boolean,"1.0.0"),clarifyTimeoutError:eW.transitional(eW.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var i,c=[];if(this.interceptors.response.forEach((function(t){c.push(t.fulfilled,t.rejected)})),!r){var l=[DV,void 0];for(Array.prototype.unshift.apply(l,n),l=l.concat(c),i=Promise.resolve(t);l.length;)i=i.then(l.shift(),l.shift());return i}for(var o=t;n.length;){var a=n.shift(),u=n.shift();try{o=a(o)}catch(t){u(t);break}}try{i=DV(o)}catch(t){return Promise.reject(t)}for(;c.length;)i=i.then(c.shift(),c.shift());return i},nW.prototype.getUri=function(t){return t=EV(this.defaults,t),iV(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},nV.forEach(["delete","get","head","options"],(function(t){nW.prototype[t]=function(e,n){return this.request(EV(n||{},{method:t,url:e,data:(n||{}).data}))}})),nV.forEach(["post","put","patch"],(function(t){nW.prototype[t]=function(e,n,r){return this.request(EV(r||{},{method:t,url:e,data:n}))}}));var rW=nW;function iW(t){this.message=t}iW.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},iW.prototype.__CANCEL__=!0;var cW=iW;function lW(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new cW(t),e(n.reason))}))}lW.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},lW.source=function(){var t,e=new lW((function(e){t=e}));return{token:e,cancel:t}};var oW=lW;function aW(t){var e=new rW(t),n=EI(rW.prototype.request,e);return nV.extend(n,rW.prototype,e),nV.extend(n,e),n}var uW=aW(PV);uW.Axios=rW,uW.create=function(t){return aW(EV(uW.defaults,t))},uW.Cancel=cW,uW.CancelToken=oW,uW.isCancel=BV,uW.all=function(t){return Promise.all(t)},uW.spread=function(t){return function(e){return t.apply(null,e)}},uW.isAxiosError=function(t){return"object"===o(t)&&!0===t.isAxiosError};var dW=uW,sW=uW;dW.default=sW;var mW,hW=dW;function bW(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return ZW(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ZW(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function ZW(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function pW(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function yW(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?pW(Object(n),!0).forEach((function(e){NG(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):pW(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function XW(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=MG(t);if(e){var i=MG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return zG(this,n)}}function fW(t,e,n,r){return new(n||(n=Promise))((function(i,c){function l(t){try{a(r.next(t))}catch(t){c(t)}}function o(t){try{a(r.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((r=r.apply(t,e||[])).next())}))}t.ResponseMode=void 0,(mW=t.ResponseMode||(t.ResponseMode={})).formPost="form_post",mW.query="query";t.Stores=void 0,function(t){t.ConfigData="config_data",t.OIDCProviderMetaData="oidc_provider_meta_data",t.SessionData="session_data",t.TemporaryData="temporary_data"}(t.Stores||(t.Stores={}));var GW="refresh_token_timer",IW="pkce_code_verifier",VW="code",WW="session_state",vW="sign_out_url",gW=function(t){FG(n,t);var e=XW(n);function n(t,r,i,c,l,o){var a;return yG(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=r,a.method=i,a.description=l,a.error=o,Object.setPrototypeOf(wG(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(OG(Error)),SW=function(t){FG(n,t);var e=XW(n);function n(t,r,i,c,l,o,a,u,d){var s;return yG(this,n),(s=e.call(this,t,r,i,c,l)).name=s.constructor.name,s.code=t,s.file=r,s.method=i,s.description=l,s.networkErrorCode=o,s.networkErrorMessage=a,s.status=u,s.networkErrorData=d,s}return n}(gW),YW="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==AG?AG:"undefined"!=typeof self?self:{};function RW(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var LW=void 0!==AG?AG:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},xW=[],KW=[],JW="undefined"!=typeof Uint8Array?Uint8Array:Array,HW=!1;function NW(){HW=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)xW[e]=t[e],KW[t.charCodeAt(e)]=e;KW["-".charCodeAt(0)]=62,KW["_".charCodeAt(0)]=63}function CW(t,e,n){for(var r,i,c=[],l=e;l<n;l+=3)r=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(xW[(i=r)>>18&63]+xW[i>>12&63]+xW[i>>6&63]+xW[63&i]);return c.join("")}function kW(t){var e;HW||NW();for(var n=t.length,r=n%3,i="",c=[],l=16383,o=0,a=n-r;o<a;o+=l)c.push(CW(t,o,o+l>a?a:o+l));return 1===r?(e=t[n-1],i+=xW[e>>2],i+=xW[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=xW[e>>10],i+=xW[e>>4&63],i+=xW[e<<2&63],i+="="),c.push(i),c.join("")}function UW(t,e,n,r,i){var c,l,o=8*i-r-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=r;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,r),c-=u}return(h?-1:1)*l*Math.pow(2,c-r)}function wW(t,e,n,r,i,c){var l,o,a,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,b=r?1:-1,Z=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,i),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,i),l=0));i>=8;t[n+h]=255&o,h+=b,o/=256,i-=8);for(l=l<<i|o,u+=i;u>0;t[n+h]=255&l,h+=b,l/=256,u-=8);t[n+h-b]|=128*Z}var TW={}.toString,FW=Array.isArray||function(t){return"[object Array]"==TW.call(t)};MW.TYPED_ARRAY_SUPPORT=void 0===LW.TYPED_ARRAY_SUPPORT||LW.TYPED_ARRAY_SUPPORT;var jW=zW();function zW(){return MW.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function PW(t,e){if(zW()<e)throw new RangeError("Invalid typed array length");return MW.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=MW.prototype:(null===t&&(t=new MW(e)),t.length=e),t}function MW(t,e,n){if(!(MW.TYPED_ARRAY_SUPPORT||this instanceof MW))return new MW(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return DW(this,t)}return BW(this,t,e,n)}function BW(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r),MW.TYPED_ARRAY_SUPPORT?(t=e).__proto__=MW.prototype:t=EW(t,e),t}(t,e,n,r):"string"==typeof e?function(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!MW.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|_W(e,n),i=(t=PW(t,r)).write(e,n);return i!==r&&(t=t.slice(0,i)),t}(t,e,n):function(t,e){if(AW(e)){var n=0|OW(e.length);return 0===(t=PW(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?PW(t,0):EW(t,e);if("Buffer"===e.type&&FW(e.data))return EW(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function QW(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function DW(t,e){if(QW(e),t=PW(t,e<0?0:0|OW(e)),!MW.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function EW(t,e){var n=e.length<0?0:0|OW(e.length);t=PW(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function OW(t){if(t>=zW())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+zW().toString(16)+" bytes");return 0|t}function AW(t){return!(null==t||!t._isBuffer)}function _W(t,e){if(AW(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return Wv(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return vv(t).length;default:if(r)return Wv(t).length;e=(""+e).toLowerCase(),r=!0}}function qW(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return mv(this,e,n);case"utf8":case"utf-8":return uv(this,e,n);case"ascii":return dv(this,e,n);case"latin1":case"binary":return sv(this,e,n);case"base64":return av(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return hv(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function $W(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function tv(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=MW.from(e,r)),AW(e))return 0===e.length?-1:ev(t,e,n,r,i);if("number"==typeof e)return e&=255,MW.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):ev(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function ev(t,e,n,r,i){var c,l=1,o=t.length,a=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(i){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function nv(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var l=0;l<r;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function rv(t,e,n,r){return gv(Wv(e,t.length-n),t,n,r)}function iv(t,e,n,r){return gv(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function cv(t,e,n,r){return iv(t,e,n,r)}function lv(t,e,n,r){return gv(vv(e),t,n,r)}function ov(t,e,n,r){return gv(function(t,e){for(var n,r,i,c=[],l=0;l<t.length&&!((e-=2)<0);++l)r=(n=t.charCodeAt(l))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function av(t,e,n){return 0===e&&n===t.length?kW(t):kW(t.slice(e,n))}function uv(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,l,o,a,u=t[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[i+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[i+1],l=t[i+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[i+1],l=t[i+2],o=t[i+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);for(var n="",r=0;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=4096));return n}(r)}function dv(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function sv(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function mv(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=Vv(t[c]);return i}function hv(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function bv(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function Zv(t,e,n,r,i,c){if(!AW(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function pv(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function yv(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function Xv(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function fv(t,e,n,r,i){return i||Xv(t,0,n,4),wW(t,e,n,r,23,4),n+4}function Gv(t,e,n,r,i){return i||Xv(t,0,n,8),wW(t,e,n,r,52,8),n+8}MW.poolSize=8192,MW._augment=function(t){return t.__proto__=MW.prototype,t},MW.from=function(t,e,n){return BW(null,t,e,n)},MW.TYPED_ARRAY_SUPPORT&&(MW.prototype.__proto__=Uint8Array.prototype,MW.__proto__=Uint8Array),MW.alloc=function(t,e,n){return function(t,e,n,r){return QW(e),e<=0?PW(t,e):void 0!==n?"string"==typeof r?PW(t,e).fill(n,r):PW(t,e).fill(n):PW(t,e)}(null,t,e,n)},MW.allocUnsafe=function(t){return DW(null,t)},MW.allocUnsafeSlow=function(t){return DW(null,t)},MW.isBuffer=Sv,MW.compare=function(t,e){if(!AW(t)||!AW(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},MW.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},MW.concat=function(t,e){if(!FW(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return MW.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=MW.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!AW(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},MW.byteLength=_W,MW.prototype._isBuffer=!0,MW.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)$W(this,e,e+1);return this},MW.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)$W(this,e,e+3),$W(this,e+1,e+2);return this},MW.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)$W(this,e,e+7),$W(this,e+1,e+6),$W(this,e+2,e+5),$W(this,e+3,e+4);return this},MW.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?uv(this,0,t):qW.apply(this,arguments)},MW.prototype.equals=function(t){if(!AW(t))throw new TypeError("Argument must be a Buffer");return this===t||0===MW.compare(this,t)},MW.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},MW.prototype.compare=function(t,e,n,r,i){if(!AW(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(r,i),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},MW.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},MW.prototype.indexOf=function(t,e,n){return tv(this,t,e,n,!0)},MW.prototype.lastIndexOf=function(t,e,n){return tv(this,t,e,n,!1)},MW.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return nv(this,t,e,n);case"utf8":case"utf-8":return rv(this,t,e,n);case"ascii":return iv(this,t,e,n);case"latin1":case"binary":return cv(this,t,e,n);case"base64":return lv(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ov(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},MW.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},MW.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),MW.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=MW.prototype;else{var i=e-t;n=new MW(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},MW.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||bv(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},MW.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||bv(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},MW.prototype.readUInt8=function(t,e){return e||bv(t,1,this.length),this[t]},MW.prototype.readUInt16LE=function(t,e){return e||bv(t,2,this.length),this[t]|this[t+1]<<8},MW.prototype.readUInt16BE=function(t,e){return e||bv(t,2,this.length),this[t]<<8|this[t+1]},MW.prototype.readUInt32LE=function(t,e){return e||bv(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},MW.prototype.readUInt32BE=function(t,e){return e||bv(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},MW.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||bv(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},MW.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||bv(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},MW.prototype.readInt8=function(t,e){return e||bv(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},MW.prototype.readInt16LE=function(t,e){e||bv(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},MW.prototype.readInt16BE=function(t,e){e||bv(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},MW.prototype.readInt32LE=function(t,e){return e||bv(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},MW.prototype.readInt32BE=function(t,e){return e||bv(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},MW.prototype.readFloatLE=function(t,e){return e||bv(t,4,this.length),UW(this,t,!0,23,4)},MW.prototype.readFloatBE=function(t,e){return e||bv(t,4,this.length),UW(this,t,!1,23,4)},MW.prototype.readDoubleLE=function(t,e){return e||bv(t,8,this.length),UW(this,t,!0,52,8)},MW.prototype.readDoubleBE=function(t,e){return e||bv(t,8,this.length),UW(this,t,!1,52,8)},MW.prototype.writeUIntLE=function(t,e,n,r){t=+t,e|=0,n|=0,r||Zv(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},MW.prototype.writeUIntBE=function(t,e,n,r){t=+t,e|=0,n|=0,r||Zv(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},MW.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,1,255,0),MW.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},MW.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,2,65535,0),MW.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):pv(this,t,e,!0),e+2},MW.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,2,65535,0),MW.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):pv(this,t,e,!1),e+2},MW.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,4,4294967295,0),MW.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):yv(this,t,e,!0),e+4},MW.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,4,4294967295,0),MW.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):yv(this,t,e,!1),e+4},MW.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);Zv(this,t,e,n,i-1,-i)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},MW.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);Zv(this,t,e,n,i-1,-i)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},MW.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,1,127,-128),MW.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},MW.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,2,32767,-32768),MW.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):pv(this,t,e,!0),e+2},MW.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,2,32767,-32768),MW.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):pv(this,t,e,!1),e+2},MW.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,4,2147483647,-2147483648),MW.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):yv(this,t,e,!0),e+4},MW.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||Zv(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),MW.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):yv(this,t,e,!1),e+4},MW.prototype.writeFloatLE=function(t,e,n){return fv(this,t,e,!0,n)},MW.prototype.writeFloatBE=function(t,e,n){return fv(this,t,e,!1,n)},MW.prototype.writeDoubleLE=function(t,e,n){return Gv(this,t,e,!0,n)},MW.prototype.writeDoubleBE=function(t,e,n){return Gv(this,t,e,!1,n)},MW.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!MW.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},MW.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!MW.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=AW(t)?t:Wv(new MW(t,r).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var Iv=/[^+\/0-9A-Za-z-_]/g;function Vv(t){return t<16?"0"+t.toString(16):t.toString(16)}function Wv(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],l=0;l<r;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function vv(t){return function(t){var e,n,r,i,c,l;HW||NW();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new JW(3*o/4-c),r=c>0?o-4:o;var a=0;for(e=0,n=0;e<r;e+=4,n+=3)i=KW[t.charCodeAt(e)]<<18|KW[t.charCodeAt(e+1)]<<12|KW[t.charCodeAt(e+2)]<<6|KW[t.charCodeAt(e+3)],l[a++]=i>>16&255,l[a++]=i>>8&255,l[a++]=255&i;return 2===c?(i=KW[t.charCodeAt(e)]<<2|KW[t.charCodeAt(e+1)]>>4,l[a++]=255&i):1===c&&(i=KW[t.charCodeAt(e)]<<10|KW[t.charCodeAt(e+1)]<<4|KW[t.charCodeAt(e+2)]>>2,l[a++]=i>>8&255,l[a++]=255&i),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(Iv,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function gv(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function Sv(t){return null!=t&&(!!t._isBuffer||Yv(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&Yv(t.slice(0,0))}(t))}function Yv(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var Rv=Object.freeze({__proto__:null,Buffer:MW,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),MW.alloc(+t)},isBuffer:Sv,kMaxLength:jW}),Lv=RW((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.length,n=e%4;if(!n)return t;var r=e,i=4-n,c=e+i,l=MW.alloc(c);for(l.write(t);i--;)l.write("=",r++);return l.toString()}})),xv=RW((function(t,e){function n(t,e){return void 0===e&&(e="utf8"),MW.isBuffer(t)?i(t.toString("base64")):i(MW.from(t,e).toString("base64"))}function r(t){return t=t.toString(),Lv.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function i(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}Object.defineProperty(e,"__esModule",{value:!0});var c=n;c.encode=n,c.decode=function(t,e){return void 0===e&&(e="utf8"),MW.from(r(t),"base64").toString(e)},c.toBase64=r,c.fromBase64=i,c.toBuffer=function(t){return MW.from(r(t),"base64")},e.default=c})),Kv=RW((function(t){t.exports=xv.default,t.exports.default=t.exports})),Jv=function(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}(RW((function(t){!function(e,n){var r={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,r,i,c){for(var l,o,a,u,d,s,m,h,b,Z,p,y,X;c>=64;){for(l=n[0],o=n[1],a=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],Z=0;Z<16;Z++)p=i+4*Z,t[Z]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(Z=16;Z<64;Z++)y=((b=t[Z-2])>>>17|b<<15)^(b>>>19|b<<13)^b>>>10,X=((b=t[Z-15])>>>7|b<<25)^(b>>>18|b<<14)^b>>>3,t[Z]=(y+t[Z-7]|0)+(X+t[Z-16]|0);for(Z=0;Z<64;Z++)y=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(e[Z]+t[Z]|0)|0)|0,X=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&o^l&a^o&a)|0,h=m,m=s,s=d,d=u+y|0,u=a,a=o,o=l,l=y+X|0;n[0]+=l,n[1]+=o,n[2]+=a,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,i+=64,c-=64}return i}var r=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,r=this.bufferLength,i=e/536870912|0,c=e<<3,l=e%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<l-8;o++)this.buffer[o]=0;this.buffer[l-8]=i>>>24&255,this.buffer[l-7]=i>>>16&255,this.buffer[l-6]=i>>>8&255,this.buffer[l-5]=i>>>0&255,this.buffer[l-4]=c>>>24&255,this.buffer[l-3]=c>>>16&255,this.buffer[l-2]=c>>>8&255,this.buffer[l-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,l),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=r;var i=function(){function t(t){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;for(this.inner.update(e),n=0;n<e.length;n++)e[n]^=106;for(this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate),n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new r).update(t),n=e.digest();return e.clean(),n}function l(t,e){var n=new i(t).update(e),r=n.digest();return n.clean(),r}function o(t,e,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");e.reset(),i>1&&e.update(t),n&&e.update(n),e.update(r),e.finish(t),r[0]++}t.HMAC=i,t.hash=c,t.default=c,t.hmac=l;var a=new Uint8Array(t.digestLength);t.hkdf=function(t,e,n,r){void 0===e&&(e=a),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=l(e,t),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(r),b=0;b<r;b++)m===s.length&&(o(s,d,n,c),m=0),h[b]=s[m++];return d.clean(),s.fill(0),c.fill(0),h},t.pbkdf2=function(t,e,n,r){for(var c=new i(t),l=c.digestLength,o=new Uint8Array(4),a=new Uint8Array(l),u=new Uint8Array(l),d=new Uint8Array(r),s=0;s*l<r;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var h=0;h<l;h++)a[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var b=0;b<l;b++)a[b]^=u[b]}for(h=0;h<l&&s*l+h<r;h++)d[s*l+h]=a[h]}for(s=0;s<l;s++)a[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}}(r);var i=r.default;for(var c in r)i[c]=r[c];t.exports=i}()})));function Hv(){throw new Error("setTimeout has not been defined")}function Nv(){throw new Error("clearTimeout has not been defined")}var Cv=Hv,kv=Nv;function Uv(t){if(Cv===setTimeout)return setTimeout(t,0);if((Cv===Hv||!Cv)&&setTimeout)return Cv=setTimeout,setTimeout(t,0);try{return Cv(t,0)}catch(e){try{return Cv.call(null,t,0)}catch(e){return Cv.call(this,t,0)}}}"function"==typeof LW.setTimeout&&(Cv=setTimeout),"function"==typeof LW.clearTimeout&&(kv=clearTimeout);var wv,Tv=[],Fv=!1,jv=-1;function zv(){Fv&&wv&&(Fv=!1,wv.length?Tv=wv.concat(Tv):jv=-1,Tv.length&&Pv())}function Pv(){if(!Fv){var t=Uv(zv);Fv=!0;for(var e=Tv.length;e;){for(wv=Tv,Tv=[];++jv<e;)wv&&wv[jv].run();jv=-1,e=Tv.length}wv=null,Fv=!1,function(t){if(kv===clearTimeout)return clearTimeout(t);if((kv===Nv||!kv)&&clearTimeout)return kv=clearTimeout,clearTimeout(t);try{kv(t)}catch(e){try{return kv.call(null,t)}catch(e){return kv.call(this,t)}}}(t)}}function Mv(t,e){this.fun=t,this.array=e}Mv.prototype.run=function(){this.fun.apply(null,this.array)};var Bv=LW.performance||{},Qv=(Bv.now||Bv.mozNow||Bv.msNow||Bv.oNow||Bv.webkitNow,new Date,function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];Tv.push(new Mv(t,e)),1!==Tv.length||Fv||Uv(Pv)}),Dv=function(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})})),e}(Rv),Ev=RW((function(t,e){var n=Dv.Buffer;function r(t,e){for(var n in t)e[n]=t[n]}function i(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=Dv:(r(Dv,e),e.Buffer=i),r(n,i),i.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},i.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},i.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},i.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return Dv.SlowBuffer(t)}})),Ov=RW((function(t){var e=65536,n=Ev.Buffer,r=YW.crypto||YW.msCrypto;r&&r.getRandomValues?t.exports=function(t,i){if(t>4294967295)throw new RangeError("requested too many random bytes");var c=n.allocUnsafe(t);if(t>0)if(t>e)for(var l=0;l<t;l+=e)r.getRandomValues(c.slice(l,l+e));else r.getRandomValues(c);return"function"==typeof i?Qv((function(){i(null,c)})):c}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}})),Av=new TextEncoder,_v=new TextDecoder,qv=function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;throw new Error("unable to locate global object")}(),$v=function(t){var e=t;return e instanceof Uint8Array&&(e=_v.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,""),new Uint8Array(qv.atob(e).split("").map((function(t){return t.charCodeAt(0)})))},tg=function(t){FG(n,t);var e=XW(n);function n(t){var r;return yG(this,n),(r=e.call(this,t)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(wG(r),r.constructor),r}return n}(OG(Error)),eg=function(t){FG(n,t);var e=XW(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return yG(this,n),(r=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return n}(tg),ng=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return n}(tg),rg=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return n}(tg),ig=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return n}(tg),cg=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return n}(tg),lg=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return n}(tg),og=function(t){FG(n,t);var e=XW(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_EXPIRED",t}return n}(eg),ag=qv.crypto;function ug(){if(!qv.isSecureContext&&!qv.crypto.subtle)throw new tg("Web Cryptography API is available only in Secure Contexts. See: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var dg=function(){var t=kG(GG.mark((function t(e){var n,r,i,c,l,o,a;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=function(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.substr(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new rg("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new rg('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.substr(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new rg('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:t.crv},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new rg('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;default:throw new rg('unsupported or invalid JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}(e),c=i.algorithm,l=i.keyUsages,o="jwk",a=yW({},e),t.abrupt("return",(delete a.alg,"PBKDF2"===c.name&&(o="raw",a=$v(e.k)),ug(),ag.subtle.importKey(o,a,c,null!==(n=e.ext)&&void 0!==n&&n,null!==(r=e.key_ops)&&void 0!==r?r:l)));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function sg(t){return!!t&&t.constructor===Object}function mg(t,e,n){return hg.apply(this,arguments)}function hg(){return hg=kG(GG.mark((function t(e,n,r){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(sg(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=4;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 4:t.t0=e.kty,t.next="oct"===t.t0?7:"RSA"===t.t0?10:"EC"===t.t0||"OKP"===t.t0?12:13;break;case 7:if("string"==typeof e.k&&e.k){t.next=9;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 9:return t.abrupt("return",(null!=r||(r=!0!==e.ext),r?dg(yW(yW({},e),{},{alg:n,ext:!1})):$v(e.k)));case 10:if(void 0===e.oth){t.next=12;break}throw new rg('RSA JWK "oth" (Other Primes Info) Parameter value is unsupported');case 12:return t.abrupt("return",dg(yW(yW({},e),{},{alg:n})));case 13:throw new rg('unsupported "kty" (Key Type) Parameter value');case 14:case"end":return t.stop()}}),t)}))),hg.apply(this,arguments)}var bg=function(){var t=kG(GG.mark((function t(e,n,r,i){var c;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(ug(),!(n instanceof Uint8Array)){t.next=8;break}if(e.startsWith("HS")){t.next=3;break}throw new TypeError("symmetric keys are only applicable for HMAC-based algorithms");case 3:return t.next=5,ag.subtle.importKey("raw",n,{hash:"SHA-".concat(e.substr(-3)),name:"HMAC"},!1,["verify"]);case 5:c=t.sent,t.next=9;break;case 8:c=n;case 9:return t.abrupt("return",(function(t,e){if(t.startsWith("HS")){var n=parseInt(t.substr(-3),10),r=e.algorithm.length;if("number"!=typeof r||r<n)throw new TypeError("".concat(t," requires symmetric keys to be ").concat(n," bits or larger"))}if(t.startsWith("RS")||t.startsWith("PS")){var i=e.algorithm.modulusLength;if("number"!=typeof i||i<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}}(e,c),ag.subtle.verify(function(t){switch(t){case"HS256":return{hash:"SHA-256",name:"HMAC"};case"HS384":return{hash:"SHA-384",name:"HMAC"};case"HS512":return{hash:"SHA-512",name:"HMAC"};case"PS256":return{hash:"SHA-256",name:"RSA-PSS",saltLength:32};case"PS384":return{hash:"SHA-384",name:"RSA-PSS",saltLength:48};case"PS512":return{hash:"SHA-512",name:"RSA-PSS",saltLength:64};case"RS256":return{hash:"SHA-256",name:"RSASSA-PKCS1-v1_5"};case"RS384":return{hash:"SHA-384",name:"RSASSA-PKCS1-v1_5"};case"RS512":return{hash:"SHA-512",name:"RSASSA-PKCS1-v1_5"};case"ES256":return{hash:"SHA-256",name:"ECDSA",namedCurve:"P-256"};case"ES384":return{hash:"SHA-384",name:"ECDSA",namedCurve:"P-384"};case"ES512":return{hash:"SHA-512",name:"ECDSA",namedCurve:"P-521"};default:throw new rg("alg ".concat(t," is unsupported either by JOSE or your javascript runtime"))}}(e),c,r,i)));case 10:case"end":return t.stop()}}),t)})));return function(e,n,r,i){return t.apply(this,arguments)}}(),Zg=function(t,e,n,r){if(void 0!==r.crit&&void 0===n.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||void 0===n.crit)return new Set;if(!Array.isArray(n.crit)||0===n.crit.length||n.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var i,c=bW(n.crit);try{for(c.s();!(i=c.n()).done;){var l=i.value;if(!e.has(l))throw new rg('Extension Header Parameter "'.concat(l,'" is not supported by this implementation'));if(void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(e.get(l)&&void 0===n[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){c.e(t)}finally{c.f()}return new Set(n.crit)}.bind(void 0,ig,new Map([["b64",!0]])),pg=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)}.bind(void 0,"algorithms");function yg(t,e,n){return Xg.apply(this,arguments)}function Xg(){return Xg=kG(GG.mark((function t(e,n,r){var i,c,l,o,a,u,d,s,m,h;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(sg(e)){t.next=2;break}throw new ig("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new ig('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new ig("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new ig("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new ig("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||sg(e.header)){t.next=12;break}throw new ig("JWS Unprotected Header incorrect type");case 12:if(i={},e.protected&&(c=$v(e.protected),i=JSON.parse(_v.decode(c))),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r,i=e.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,l=bW(i);try{for(l.s();!(c=l.n()).done;){var o=c.value,a=Object.keys(o);if(r&&0!==r.size){var u,d=bW(a);try{for(d.s();!(u=d.n()).done;){var s=u.value;if(r.has(s))return!1;r.add(s)}}catch(t){d.e(t)}finally{d.f()}}else r=new Set(a)}}catch(t){l.e(t)}finally{l.f()}return!0}(i,e.header)){t.next=16;break}throw new ig("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 16:if(l=yW(yW({},i),e.header),o=!0,!Zg(i,l).has("b64")||"boolean"==typeof(o=i.b64)){t.next=20;break}throw new ig('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 20:if("string"==typeof(a=l.alg)&&a){t.next=23;break}throw new ig('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 23:if(!(u=r&&pg(r.algorithms))||u.has(a)){t.next=26;break}throw new ng('"alg" (Algorithm) Header Parameter not allowed');case 26:if(!o){t.next=31;break}if("string"==typeof e.payload){t.next=29;break}throw new ig("JWS Payload must be a string");case 29:t.next=33;break;case 31:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=33;break}throw new ig("JWS Payload must be a string or an Uint8Array instance");case 33:if(t.t0="function"==typeof n,!t.t0){t.next=38;break}return t.next=37,n(i,e);case 37:n=t.sent;case 38:return function(t,e){if(t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||t.match(/^A\d{3}(?:GCM)KW$/)){if(e instanceof Uint8Array||"secret"===e.type)return;throw new TypeError('CryptoKey or KeyObject instances for symmetric algorithms must be of type "secret"')}if(e instanceof Uint8Array)throw new TypeError("CryptoKey or KeyObject instances must be used for asymmetric algorithms");if("secret"===e.type)throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithms must not be of type "secret"')}(a,n),d=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce((function(t,e){return t+e.length}),0),i=new Uint8Array(r),c=0;return e.forEach((function(t){i.set(t,c),c+=t.length})),i}(Av.encode(e.protected||""),Av.encode("."),"string"==typeof e.payload?Av.encode(e.payload):e.payload),s=$v(e.signature),t.next=42,bg(a,n,s,d);case 42:if(t.sent){t.next=44;break}throw new lg;case 44:return m=o?$v(e.payload):"string"==typeof e.payload?Av.encode(e.payload):e.payload,h={payload:m},t.abrupt("return",(void 0!==e.protected&&(h.protectedHeader=i),void 0!==e.header&&(h.unprotectedHeader=e.header),h));case 47:case"end":return t.stop()}}),t)}))),Xg.apply(this,arguments)}var fg=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,Gg=function(t){var e=fg.exec(t);if(!e)throw new TypeError("invalid time period format");var n=parseFloat(e[1]);switch(e[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},Ig=function(t){return t.toLowerCase().replace(/^application\//,"")},Vg=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof t.typ||Ig(t.typ)!==Ig(i)))throw new eg('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(_v.decode(e))}catch(t){}if("object"!=o(n)||!n||Array.isArray(n))throw new cg("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!("string"==typeof c?[c]:c).includes(n.iss))throw new eg('unexpected "iss" claim value',"iss","check_failed");var l=r.subject;if(l&&n.sub!==l)throw new eg('unexpected "sub" claim value',"sub","check_failed");var a,u,d,s=r.audience;if(s&&(u="string"==typeof s?[s]:s,!("string"==typeof(a=n.aud)?u.includes(a):u.some(Set.prototype.has.bind(new Set(a))))))throw new eg('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":d=Gg(r.clockTolerance);break;case"number":d=r.clockTolerance;break;case"undefined":d=0;break;default:throw new TypeError("invalid clockTolerance option type")}var m,h=r.currentDate,b=(m=h||new Date,Math.floor(m.getTime()/1e3));if(void 0!==n.iat||r.maxTokenAge){if("number"!=typeof n.iat)throw new eg('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>b+d)throw new eg('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new eg('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>b+d)throw new eg('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new eg('"exp" claim must be a number',"exp","invalid");if(n.exp<=b-d)throw new og('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var Z=b-n.iat;if(Z-d>("number"==typeof r.maxTokenAge?r.maxTokenAge:Gg(r.maxTokenAge)))throw new og('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(Z<0-d)throw new eg('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function Wg(){return Wg=kG(GG.mark((function t(e,n,r){var i;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,function(){var t=kG(GG.mark((function t(e,n,r){var i,c,l,o,a;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=_v.decode(e)),"string"==typeof e){t.next=2;break}throw new ig("Compact JWS must be a string or Uint8Array");case 2:if(i=e.split("."),c=i[0],l=i[1],o=i[2],3===i.length){t.next=5;break}throw new ig("Invalid Compact JWS");case 5:return t.next=7,yg({payload:l||void 0,protected:c||void 0,signature:o||void 0},n,r);case 7:return a=t.sent,t.abrupt("return",{payload:a.payload,protectedHeader:a.protectedHeader});case 9:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}()(e,n,r);case 2:return i=t.sent,t.abrupt("return",{payload:Vg(i.protectedHeader,i.payload,r),protectedHeader:i.protectedHeader});case 4:case"end":return t.stop()}}),t)}))),Wg.apply(this,arguments)}var vg=function(){function t(){yG(this,t)}return fG(t,null,[{key:"base64URLEncode",value:function(t){return Kv.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"getCodeVerifier",value:function(){return this.base64URLEncode(Ov(32))}},{key:"getCodeChallenge",value:function(t){return this.base64URLEncode(new dI(Jv((new TextEncoder).encode(t))))}},{key:"getSupportedSignatureAlgorithms",value:function(){return["RS256","RS512","RS384","PS256"]}},{key:"getJWKForTheIdToken",value:function(t,e){var n,r=JSON.parse(Kv.decode(t,"utf8")),i=bW(e);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return mg({alg:c.alg,e:c.e,kty:c.kty,n:c.n})}}catch(t){i.e(t)}finally{i.f()}return Promise.reject(new gW("CRYPTO_UTIL-GTFTIT-IV01","crypto-utils","getJWKForTheIdToken","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+e.map((function(t){return t.kid})).join(", ")))}},{key:"isValidIdToken",value:function(t,e,n,r,i,c){return function(t,e,n){return Wg.apply(this,arguments)}(t,e,{algorithms:this.getSupportedSignatureAlgorithms(),audience:n,clockTolerance:c,issuer:r,subject:i}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(new gW("CRYPTO_UTIL-IVIT-IV02","crypto-utils","isValidIdToken","Validating ID token failed",t))}))}},{key:"decodeIDToken",value:function(t){try{var e=Kv.decode(t.split(".")[1],"utf8");return JSON.parse(e)}catch(t){throw new gW("CRYPTO_UTIL-DIT-IV01","crypto-utils","decodeIDToken","Decoding ID token failed.",t)}}}]),t}(),gg=function(){function t(){yG(this,t)}return fG(t,null,[{key:"getAuthenticatedUserInfo",value:function(t){var e,n,r,i,c=vg.decodeIDToken(t),l=this.getTenantDomainFromIdTokenPayload(c),o=null!==(e=null==c?void 0:c.username)&&void 0!==e?e:"",a=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=a&&u?"".concat(a," ").concat(u):a||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:l,username:o},this.filterClaimsFromIDTokenPayload(c))}},{key:"filterClaimsFromIDTokenPayload",value:function(t){var e=Object.assign({},t);null==e||delete e.iss,null==e||delete e.aud,null==e||delete e.exp,null==e||delete e.iat,null==e||delete e.acr,null==e||delete e.amr,null==e||delete e.azp,null==e||delete e.auth_time,null==e||delete e.nonce,null==e||delete e.c_hash,null==e||delete e.at_hash,null==e||delete e.nbf,null==e||delete e.isk,null==e||delete e.sid;var n={};return Object.entries(e).forEach((function(t){var e=JG(t,2),r=e[0],i=e[1],c=r.split("_").map((function(t,e){return 0===e?t:[t[0].toUpperCase()].concat(YG(t.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}}]),t}();gg.getTenantDomainFromIdTokenPayload=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=t.sub.split(e);return n.length>2?n[n.length-1]:""};var Sg,Yg,Rg=function(){function t(e){var n=this;yG(this,t),this._dataLayer=e,this._config=function(){return fW(n,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return fW(n,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return fG(t,[{key:"resolveWellKnownEndpoint",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:return e=t.sent,t.abrupt("return",e.wellKnownEndpoint?e.serverOrigin+e.wellKnownEndpoint:e.serverOrigin+"/oauth2/token/.well-known/openid-configuration");case 4:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpoints",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},e.next=3,this._config();case 3:return r=e.sent,e.abrupt("return",(r.overrideWellEndpointConfig&&r.endpoints&&Object.keys(r.endpoints).forEach((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));n[e]=(null==r?void 0:r.endpoints)?r.endpoints[t]:""})),Object.assign(Object.assign({},t),n)));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"resolveFallbackEndpoints",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e,n,r;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:return(n=t.sent).endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),r={authorization_endpoint:n.serverOrigin+"/oauth2/authorize",end_session_endpoint:n.serverOrigin+"/oidc/logout",jwks_uri:n.serverOrigin+"/oauth2/jwks",check_session_iframe:n.serverOrigin+"/oidc/checksession",revocation_endpoint:n.serverOrigin+"/oauth2/revoke",token_endpoint:n.serverOrigin+"/oauth2/token"},t.abrupt("return",Object.assign(Object.assign({},e),r));case 7:case"end":return t.stop()}}),t,this)})))}},{key:"validateIdToken",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r,i=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=e.sent.jwks_uri,e.next=5,this._config();case 5:return r=e.sent,e.abrupt("return",n&&0!==n.trim().length?hW.get(n,{withCredentials:null==r?void 0:r.sendCookiesInRequests}).then((function(e){return fW(i,void 0,void 0,GG.mark((function n(){var r,i,c=this;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status){n.next=2;break}return n.abrupt("return",Promise.reject(new gW("AUTH_HELPER-VIT-NR02","authentication-helper","validateIdToken","Invalid response status received for jwks request.","The request sent to get the jwks returned "+e.status+" , which is invalid.")));case 2:return n.next=4,this._oidcProviderMetaData();case 4:return r=n.sent.issuer,n.next=7,this.resolveWellKnownEndpoint();case 7:return i=n.sent.split("/.well-known")[0],n.abrupt("return",r&&r===i?vg.getJWKForTheIdToken(t.split(".")[0],e.data.keys).then((function(e){return fW(c,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=vg,n.t1=t,n.t2=e,n.next=5,this._config();case 5:return n.t3=n.sent.clientID,n.t4=r,n.t5=vg.decodeIDToken(t).sub,n.next=10,this._config();case 10:return n.t6=n.sent.clockTolerance,n.abrupt("return",n.t0.isValidIdToken.call(n.t0,n.t1,n.t2,n.t3,n.t4,n.t5,n.t6).then((function(t){return t})).catch((function(t){return Promise.reject(new gW("AUTH_HELPER-VIT-ES03","authentication-helper","validateIdToken",void 0,void 0,t))})));case 12:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new gW("AUTH_HELPER-VIT-ES04","authentication-helper","validateIdToken",void 0,void 0,t))})):Promise.resolve(!1));case 9:case"end":return n.stop()}}),n,this)})))})).catch((function(t){var e,n,r;return Promise.reject(new SW("AUTH_HELPER-VIT-NR05","authentication-helper","validateIdToken","Request to jwks endpoint failed.","The request sent to get the jwks from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})):Promise.reject(new gW("AUTH_HELPER-VIT-NF01","authentication-helper","validateIdToken","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.")));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"replaceCustomGrantTemplateTags",value:function(t){var e;return fW(this,void 0,void 0,GG.mark((function n(){var r,i,c;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r="openid",n.next=3,this._config();case 3:return i=n.sent,n.next=6,this._dataLayer.getSessionData();case 6:return c=n.sent,n.abrupt("return",(i.scope&&i.scope.length>0&&(i.scope.includes("openid")||i.scope.push("openid"),r=i.scope.join(" ")),t.replace("{{token}}",c.access_token).replace("{{username}}",gg.getAuthenticatedUserInfo(c.id_token).username).replace("{{scope}}",r).replace("{{clientID}}",i.clientID).replace("{{clientSecret}}",null!==(e=i.clientSecret)&&void 0!==e?e:"")));case 8:case"end":return n.stop()}}),n,this)})))}},{key:"clearUserSessionData",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeOIDCProviderMetaData();case 2:return t.next=4,this._dataLayer.removeTemporaryData();case 4:return t.next=6,this._dataLayer.removeSessionData();case 6:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=2;break}return e.abrupt("return",Promise.reject(new gW("AUTH_HELPER-HTR-NR01","authentication-helper","handleTokenResponse","Invalid response status received for token request.","The request sent to get the token returned "+t.status+" , which is invalid.")));case 2:return e.next=4,this._config();case 4:if(!e.sent.validateIDToken){e.next=6;break}return e.abrupt("return",this.validateIdToken(t.data.id_token).then((function(e){return fW(r,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=5;break}return n.next=3,this._dataLayer.setSessionData(t.data);case 3:return r={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},n.abrupt("return",Promise.resolve(r));case 5:return n.abrupt("return",Promise.reject(new gW("AUTH_HELPER-HTR-IV02","authentication-helper","handleTokenResponse","The id token returned is not valid.","The id token returned has failed the validation check.")));case 6:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new gW("AUTH_HELPER-HAT-ES03","authentication-helper","handleTokenResponse",void 0,void 0,t))})));case 6:return n={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},e.next=9,this._dataLayer.setSessionData(t.data);case 9:return e.abrupt("return",Promise.resolve(n));case 10:case"end":return e.stop()}}),e,this)})))}}]),t}(),Lg=function(){function t(e){var n=this;yG(this,t),this._authenticationHelper=new Rg(e),this._dataLayer=e,this._config=function(){return fW(n,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return fW(n,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return fG(t,[{key:"getAuthorizationURL",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r,i,c,l,o,a,u,d,s,m,h;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return n=e.sent,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new gW("AUTH_CORE-GAU-NF01","authentication-core","getAuthorizationURL","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:if((i=new URL(n)).searchParams.append("response_type","code"),i.searchParams.append("client_id",r.clientID),c="openid",r.scope&&r.scope.length>0&&(r.scope.includes("openid")||r.scope.push("openid"),c=r.scope.join(" ")),i.searchParams.append("scope",c),i.searchParams.append("redirect_uri",r.signInRedirectURL),r.responseMode&&i.searchParams.append("response_mode",r.responseMode),!r.enablePKCE){e.next=17;break}return l=vg.getCodeVerifier(),o=vg.getCodeChallenge(l),e.next=15,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",l);case 15:i.searchParams.append("code_challenge_method","S256"),i.searchParams.append("code_challenge",o);case 17:if(r.prompt&&i.searchParams.append("prompt",r.prompt),a=t)for(u=0,d=Object.entries(a);u<d.length;u++)s=JG(d[u],2),m=s[0],h=s[1],""!=m&&""!=h&&i.searchParams.append(m,h.toString());return e.abrupt("return",i.toString());case 21:case"end":return e.stop()}}),e,this)})))}},{key:"requestAccessToken",value:function(t,e){return fW(this,void 0,void 0,GG.mark((function n(){var r,i,c,l,o=this;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent.token_endpoint,n.next=5,this._config();case 5:if(i=n.sent,r&&0!==r.trim().length){n.next=8;break}return n.abrupt("return",Promise.reject(new gW("AUTH_CORE-RAT1-NF01","authentication-core","requestAccessToken","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:if(n.t0=e,!n.t0){n.next=12;break}return n.next=12,this._dataLayer.setSessionDataParameter("session_state",e);case 12:if((c=[]).push("client_id=".concat(i.clientID)),i.clientSecret&&i.clientSecret.trim().length>0&&c.push("client_secret=".concat(i.clientSecret)),l=t,c.push("code=".concat(l)),c.push("grant_type=authorization_code"),c.push("redirect_uri=".concat(i.signInRedirectURL)),n.t1=i.enablePKCE,!n.t1){n.next=29;break}return n.t2=c,n.t3="code_verifier=",n.next=24,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 24:return n.t4=n.sent,n.t5=n.t3.concat.call(n.t3,n.t4),n.t2.push.call(n.t2,n.t5),n.next=29,this._dataLayer.removeTemporaryDataParameter("pkce_code_verifier");case 29:return n.abrupt("return",hW.post(r,c.join("&"),{headers:gg.getTokenRequestHeaders(),withCredentials:i.sendCookiesInRequests}).then((function(t){return o._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new gW("AUTH_CORE-RAT1-ES02","authentication-core","requestAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,r;return Promise.reject(new SW("AUTH_CORE-RAT1-NR03","authentication-core","requestAccessToken","Requesting access token failed","The request to get the access token from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 30:case"end":return n.stop()}}),n,this)})))}},{key:"refreshAccessToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e,n,r,i,c=this;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.token_endpoint,t.next=5,this._config();case 5:return n=t.sent,t.next=8,this._dataLayer.getSessionData();case 8:if((r=t.sent).refresh_token){t.next=11;break}return t.abrupt("return",Promise.reject(new gW("AUTH_CORE-RAT2-NF01","authentication-core","refreshAccessToken","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.")));case 11:if(e&&0!==e.trim().length){t.next=13;break}return t.abrupt("return",Promise.reject(new gW("AUTH_CORE-RAT2-NF02","authentication-core","refreshAccessToken","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.")));case 13:return i=[],t.abrupt("return",(i.push("client_id=".concat(n.clientID)),i.push("refresh_token=".concat(r.refresh_token)),i.push("grant_type=refresh_token"),n.clientSecret&&n.clientSecret.trim().length>0&&i.push("client_secret=".concat(n.clientSecret)),hW.post(e,i.join("&"),{headers:gg.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return c._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new gW("AUTH_CORE-RAT2-ES03","authentication-core","refreshAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,r;return Promise.reject(new SW("AUTH_CORE-RAT2-NR03","authentication-core","refreshAccessToken","Refresh access token request failed.","The request to refresh the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))}))));case 15:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e,n,r,i=this;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(n=t.sent,e&&0!==e.trim().length){t.next=8;break}return t.abrupt("return",Promise.reject(new gW("AUTH_CORE-RAT3-NF01","authentication-core","revokeAccessToken","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.")));case 8:return(r=[]).push("client_id=".concat(n.clientID)),t.t0=r,t.t1="token=",t.next=14,this._dataLayer.getSessionData();case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),r.push("token_type_hint=access_token"),t.abrupt("return",hW.post(e,r.join("&"),{headers:gg.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return 200!==t.status?Promise.reject(new gW("AUTH_CORE-RAT3-NR02","authentication-core","revokeAccessToken","Invalid response status received for revoke access token request.","The request sent to revoke the access token returned "+t.status+" , which is invalid.")):(i._authenticationHelper.clearUserSessionData(),Promise.resolve(t))})).catch((function(t){var e,n,r;return Promise.reject(new SW("AUTH_CORE-RAT3-NR03","authentication-core","revokeAccessToken","The request to revoke access token failed.","The request sent to revoke the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 19:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r,i,c,l=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent,e.next=5,this._config();case 5:if(r=e.sent,(i=t.tokenEndpoint&&0!==t.tokenEndpoint.trim().length?t.tokenEndpoint:n.token_endpoint)&&0!==i.trim().length){e.next=8;break}return e.abrupt("return",Promise.reject(new gW("AUTH_CORE-RCG-NF01","authentication-core","requestCustomGrant","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:return e.next=10,Promise.all(Object.entries(t.data).map((function(t){var e=JG(t,2),n=e[0],r=e[1];return fW(l,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(r);case 2:return e=t.sent,t.abrupt("return","".concat(n,"=").concat(e));case 4:case"end":return t.stop()}}),t,this)})))})));case 10:if(e.t0=e.sent.join("&"),e.t1=Object.assign({},gg.getTokenRequestHeaders()),e.t2=i,e.t3=r.sendCookiesInRequests,c={data:e.t0,headers:e.t1,method:"POST",url:e.t2,withCredentials:e.t3},e.t4=t.attachToken,!e.t4){e.next=26;break}return e.t5=Object,e.t6=Object.assign({},c.headers),e.t7="Bearer ",e.next=22,this._dataLayer.getSessionData();case 22:e.t8=e.sent.access_token,e.t9=e.t7.concat.call(e.t7,e.t8),e.t10={Authorization:e.t9},c.headers=e.t5.assign.call(e.t5,e.t6,e.t10);case 26:return e.abrupt("return",hW(c).then((function(e){return 200!==e.status?Promise.reject(new gW("AUTH_CORE-RCG-NR02","authentication-core","requestCustomGrant","Invalid response status received for the custom grant request.","The request sent to get the custom grant returned "+e.status+" , which is invalid.")):t.returnsSession?l._authenticationHelper.handleTokenResponse(e).then((function(t){return t})).catch((function(t){return Promise.reject(new gW("AUTH_CORE-RCG-ES03","authentication-core","requestCustomGrant",void 0,void 0,t))})):Promise.resolve(e)})).catch((function(t){var e,n,r;return Promise.reject(new SW("AUTH_CORE-RCG-NR04","authentication-core","requestCustomGrant","The custom grant request failed.","The request sent to get the custom grant failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 27:case"end":return e.stop()}}),e,this)})))}},{key:"getBasicUserInfo",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e,n,r;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent,n=gg.getAuthenticatedUserInfo(null==e?void 0:e.id_token),r={allowedScopes:e.scope,sessionState:e.session_state},t.abrupt("return",(Object.keys(n).forEach((function(t){void 0!==n[t]&&""!==n[t]&&null!==n[t]||delete n[t]})),r=Object.assign(Object.assign({},r),n)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent.id_token,t.abrupt("return",vg.decodeIDToken(e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=!t,!e.t0){e.next=5;break}return e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:e.t0=e.sent;case 5:if(!e.t0){e.next=7;break}return e.abrupt("return",Promise.resolve(!0));case 7:return e.next=9,this._authenticationHelper.resolveWellKnownEndpoint();case 9:return n=e.sent,e.abrupt("return",hW.get(n).then((function(t){return fW(r,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=4;break}e.t0=Promise.reject(new gW("AUTH_CORE-GOPM-NR01","authentication-core","getOIDCProviderMetaData","Invalid response status received for OIDC provider meta data request.","The request sent to the well-known endpoint to get the OIDC provider meta data returned "+t.status+" , which is invalid.")),e.next=13;break;case 4:return e.t1=this._dataLayer,e.next=7,this._authenticationHelper.resolveEndpoints(t.data);case 7:return e.t2=e.sent,e.next=10,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 10:return e.next=12,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 12:e.t0=Promise.resolve(!0);case 13:return e.abrupt("return",e.t0);case 14:case"end":return e.stop()}}),e,this)})))})).catch((function(){return fW(r,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=this._dataLayer,t.next=3,this._authenticationHelper.resolveFallbackEndpoints();case 3:return t.t1=t.sent,t.next=6,t.t0.setOIDCProviderMetaData.call(t.t0,t.t1);case 6:return t.next=8,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t,this)})))})));case 11:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent,t.t0=e.authorization_endpoint,t.t1=e.check_session_iframe,t.t2=e.end_session_endpoint,t.t3=e.introspection_endpoint,t.t4=e.issuer,t.t5=e.jwks_uri,t.t6=e.registration_endpoint,t.t7=e.revocation_endpoint,t.t8=e.token_endpoint,t.t9=e.userinfo_endpoint,t.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return t.t10=t.sent,t.abrupt("return",{authorizationEndpoint:t.t0,checkSessionIframe:t.t1,endSessionEndpoint:t.t2,introspectionEndpoint:t.t3,issuer:t.t4,jwksUri:t.t5,registrationEndpoint:t.t6,revocationEndpoint:t.t7,tokenEndpoint:t.t8,userinfoEndpoint:t.t9,wellKnownEndpoint:t.t10});case 17:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(){var t,e,n;return fW(this,void 0,void 0,GG.mark((function r(){var i,c,l,o;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._oidcProviderMetaData();case 2:if(r.t1=t=r.sent,r.t0=null===r.t1,r.t0){r.next=6;break}r.t0=void 0===t;case 6:if(!r.t0){r.next=10;break}r.t2=void 0,r.next=11;break;case 10:r.t2=t.end_session_endpoint;case 11:return i=r.t2,r.next=14,this._config();case 14:if(c=r.sent,i&&0!==i.trim().length){r.next=17;break}throw new gW("AUTH_CORE-GSOU-NF01","authentication-core","getSignOutURL","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return r.next=19,this._dataLayer.getSessionData();case 19:if(r.t4=e=r.sent,r.t3=null===r.t4,r.t3){r.next=23;break}r.t3=void 0===e;case 23:if(!r.t3){r.next=27;break}r.t5=void 0,r.next=28;break;case 27:r.t5=e.id_token;case 28:if((l=r.t5)&&0!==l.trim().length){r.next=31;break}throw new gW("AUTH_CORE-GSOU-NF02","authentication-core","getSignOutURL","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((o=null!==(n=null==c?void 0:c.signOutRedirectURL)&&void 0!==n?n:null==c?void 0:c.signInRedirectURL)&&0!==o.trim().length){r.next=34;break}throw new gW("AUTH_CORE-GSOU-NF03","authentication-core","getSignOutURL","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return r.abrupt("return","".concat(i,"?id_token_hint=").concat(l,"&post_logout_redirect_uri=").concat(o,"&state=sign_out_success"));case 35:case"end":return r.stop()}}),r,this)})))}},{key:"signOut",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL();case 2:return e=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(),e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){var t;return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(e.t1=t=e.sent,e.t0=null===e.t1,e.t0){e.next=6;break}e.t0=void 0===t;case 6:if(!e.t0){e.next=10;break}e.t2=void 0,e.next=11;break;case 10:e.t2=t.access_token;case 11:return e.abrupt("return",e.t2);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"setPKCECode",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setConfigData(t);case 2:if(!t.overrideWellEndpointConfig){e.next=13;break}if(e.t0=null==t?void 0:t.endpoints,!e.t0){e.next=11;break}return e.t1=this._dataLayer,e.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return e.t2=e.sent,e.next=11,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 11:e.next=17;break;case 13:if(e.t3=null==t?void 0:t.endpoints,!e.t3){e.next=17;break}return e.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return e.stop()}}),e,this)})))}}]),t}(),xg=function(){function e(t,n){yG(this,e),this._id=t,this._store=n}return fG(e,[{key:"setDataInBulk",value:function(t,e){var n;return fW(this,void 0,void 0,GG.mark((function r(){var i,c,l,o;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),l=Object.assign(Object.assign({},c),e),o=JSON.stringify(l),r.next=17,this._store.setData(t,o);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(t,e,n){var r;return fW(this,void 0,void 0,GG.mark((function i(){var c,l,o,a;return GG.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,l=c&&JSON.parse(c),o=Object.assign(Object.assign({},l),NG({},e,n)),a=JSON.stringify(o),i.next=17,this._store.setData(t,a);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(t,e){var n;return fW(this,void 0,void 0,GG.mark((function r(){var i,c,l,o;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(l=Object.assign({},c))[e],o=JSON.stringify(l),r.next=18,this._store.setData(t,o);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(t){return"".concat(t,"-").concat(this._id)}},{key:"setConfigData",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.TemporaryData),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionData",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.SessionData),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigData",value:function(){var e;return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var e;return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(){var e;return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.TemporaryData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionData",value:function(){var e;return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.SessionData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"removeConfigData",value:function(){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.TemporaryData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeSessionData",value:function(){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.SessionData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"getConfigDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.TemporaryData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.SessionData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"setConfigDataParameter",value:function(e,n){return fW(this,void 0,void 0,GG.mark((function r(){return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.ConfigData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,n){return fW(this,void 0,void 0,GG.mark((function r(){return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(e,n){return fW(this,void 0,void 0,GG.mark((function r(){return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.TemporaryData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionDataParameter",value:function(e,n){return fW(this,void 0,void 0,GG.mark((function r(){return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.SessionData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.TemporaryData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionDataParameter",value:function(e){return fW(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.SessionData),e);case 2:case"end":return n.stop()}}),n,this)})))}}]),e}(),Kg={clockTolerance:300,enablePKCE:!0,responseMode:t.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},Jg=function(){function t(e){yG(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new xg("instance_".concat(t._instanceID),e),this._authenticationCore=new Lg(this._dataLayer)}return fG(t,[{key:"initialize",value:function(t){var e,n,r;return fW(this,void 0,void 0,GG.mark((function i(){return GG.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},Kg),t),{scope:[].concat(YG(null!==(e=Kg.scope)&&void 0!==e?e:[]),YG(null!==(r=null===(n=t.scope)||void 0===n?void 0:n.filter((function(t){var e;return!(null===(e=null==Kg?void 0:Kg.scope)||void 0===e?void 0:e.includes(t))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"getAuthorizationURL",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){var n,r=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return null==(n=Object.assign({},t))||delete n.forceInit,e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!e.sent){e.next=8;break}e.t0=this._authenticationCore.getAuthorizationURL(n),e.next=9;break;case 8:e.t0=this._authenticationCore.getOIDCProviderMetaData(null==t?void 0:t.forceInit).then((function(){return r._authenticationCore.getAuthorizationURL(n)}));case 9:return e.abrupt("return",e.t0);case 10:case"end":return e.stop()}}),e,this)})))}},{key:"requestAccessToken",value:function(t,e){return fW(this,void 0,void 0,GG.mark((function n(){var r=this;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!n.sent){n.next=6;break}n.t0=this._authenticationCore.requestAccessToken(t,e),n.next=7;break;case 6:n.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return r._authenticationCore.requestAccessToken(t,e)}));case 7:return n.abrupt("return",n.t0);case 8:case"end":return n.stop()}}),n,this)})))}},{key:"signOut",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getBasicUserInfo",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(){return this._authenticationCore.revokeAccessToken()}},{key:"refreshAccessToken",value:function(){return this._authenticationCore.refreshAccessToken()}},{key:"getAccessToken",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(t){return this._authenticationCore.requestCustomGrant(t)}},{key:"isAuthenticated",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(){return fW(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getPKCECode());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"setPKCECode",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.setPKCECode(t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(t){return fW(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.updateConfig(t);case 2:case"end":return e.stop()}}),e,this)})))}}],[{key:"isSignOutSuccessful",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}}]),t}(),Hg="sign-out",Ng="get_auth_url",Cg="check_session_signed_in",kg="check_session_signed_out",Ug="set_session_state_from_iframe";t.Storage=void 0,(Sg=t.Storage||(t.Storage={})).LocalStorage="localStorage",Sg.SessionStorage="sessionStorage",Sg.WebWorker="webWorker",Sg.BrowserMemory="browserMemory",t.Hooks=void 0,(Yg=t.Hooks||(t.Hooks={})).SignIn="sign-in",Yg.SignOut="sign-out",Yg.Initialize="initialize",Yg.HttpRequestStart="http-request-start",Yg.HttpRequestFinish="http-request-finish",Yg.HttpRequestError="http-request-error",Yg.HttpRequestSuccess="http-request-success",Yg.RevokeAccessToken="revoke-access-token",Yg.CustomGrant="custom-grant";var wg="rpIFrame",Tg="promptNoneIFrame",Fg="Y2hlY2tTZXNzaW9u",jg="sign-in-silently",zg="initialized-silent-sign-in",Pg="promptNoneRequestSent",Mg="error",Bg="error_description",Qg="custom_grant_config";function Dg(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=MG(t);if(e){var i=MG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return zG(this,n)}}var Eg,Og,Ag,_g,qg,$g,tS,eS,nS,rS,iS,cS,lS,oS,aS,uS,dS,sS,mS,hS=function(t){FG(n,t);var e=Dg(n);function n(t,r,i,c,l,o){var a;return yG(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=r,a.method=i,a.error=o,a.description=l,Object.setPrototypeOf(wG(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(OG(Error)),bS=function(){function t(e){yG(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return fG(t,[{key:"refreshAccessTokenAutomatically",value:function(){return IG(this,void 0,void 0,GG.mark((function t(){var e,n,r,i=this;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),r=setTimeout((function(){return IG(i,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(GW,JSON.stringify(r));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return IG(this,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(GW);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(GW);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),ZS=function(){function t(){yG(this,t)}return fG(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(){var t;return null!==(t=sessionStorage.getItem(IW))&&void 0!==t?t:""}},{key:"setPKCE",value:function(t){sessionStorage.setItem(IW,t)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(vW,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(vW))&&void 0!==t?t:""}},{key:"removePKCE",value:function(){sessionStorage.removeItem(IW)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem(zg),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){if(Jg.isSignOutSuccessful(window.location.href)){var t=window.location.href.split("?")[0];return history.pushState({},document.title,t),!0}return!1}},{key:"isSilentStatePresentInURL",value:function(){return new URL(window.location.href).searchParams.get("state")===jg}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href;return!!new URL(t).searchParams.get(Mg)}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem(Pg);return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem(Pg,JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return IG(this,void 0,void 0,GG.mark((function e(){var n;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),pS=(lS=function(t,e,n,r,i,c,l,o){Eg=t,Og=e,Ag=n,qg=c,$g=l,tS=i,cS=o,(_g=r)>-1&&oS(),tS>-1&&(i=setInterval((function(){dS()}),1e3*tS))},oS=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e,n,r,i;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){var r,i,c,l,o;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Ag();case 2:r=e.sent,Boolean(Eg)&&Boolean(r)&&(i="".concat(Eg," ").concat(r),c=document.getElementById(wg),l=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(o=l.contentWindow)||o.postMessage(i,Og));case 4:case"end":return e.stop()}}),e)})))},Og&&Eg&&qg){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(wg),(null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=Og+"?client_id="+Eg+"&redirect_uri="+qg,t.next=9,r();case 9:nS=setInterval(r,1e3*_g),uS();case 11:case"end":return t.stop()}}),t)})))},aS=function(){clearInterval(nS),clearInterval(void 0)},uS=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return IG(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=Og)&&!((null==r?void 0:r.indexOf(t.origin))<0)&&(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)!==Ug){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,eS();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&dS();case 13:case"end":return n.stop()}}),n)})))}),!1)},dS=function(){var e,n=document.getElementById(wg),r=null===(e=null==n?void 0:n.contentDocument)||void 0===e?void 0:e.getElementById(Tg);if(ZS.canSendPromptNoneRequest()){ZS.setPromptNoneRequestSent(!0),rS!==t.Storage.BrowserMemory&&rS!==t.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",(function t(e){var n,r,i;(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)===Ug&&(iS(null!==(i=null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",t))}));var i=new URL($g);i.searchParams.set("response_type","code"),i.searchParams.set("client_id",Eg),i.searchParams.set("scope","openid"),i.searchParams.set("redirect_uri",qg),i.searchParams.set("state",Fg),i.searchParams.set("prompt","none"),cS&&(i.searchParams.set("code_challenge_method","S256"),i.searchParams.set("code_challenge",function(){for(var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz-_",e="",n=0;n<43;n++){var r=Math.floor(Math.random()*t.length);e+=t.substring(r,r+1)}return e}())),r.src=i.toString()}},sS=function(e){return IG(void 0,void 0,void 0,GG.mark((function n(){var r,i,c,l,o,a,u,d,s,m;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get("state"),l=new URL(window.location.href).searchParams.get(WW),o=window.parent.parent,null===c||c!==Fg&&c!==jg){n.next=48;break}if(null===(a=new URL(window.location.href).searchParams.get("code"))||0===a.length){n.next=32;break}if(c!==jg){n.next=15;break}return u={data:{code:a,sessionState:null!=l?l:""},type:Cg},sessionStorage.setItem(zg,"false"),o.postMessage(u,o.origin),ZS.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,ZS.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),rS!==t.Storage.LocalStorage&&rS!==t.Storage.SessionStorage){n.next=23;break}if(n.t0=e,!n.t0){n.next=21;break}return n.next=21,e(d);case 21:n.next=25;break;case 23:s={data:null!=d?d:"",type:Ug},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(s);case 25:return ZS.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,ZS.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(c!==jg){n.next=40;break}return m={type:kg},window.parent.parent.postMessage(m,o.origin),ZS.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,ZS.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return ZS.setPromptNoneRequestSent(!1),n.next=43,eS();case 43:return o.location.href=n.sent,window.location.href="about:blank",n.next=47,ZS.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(t,e,n){var r,i=document.createElement("iframe");return i.setAttribute("id",wg),i.style.display="none",i.onload=function(){var t,e,n,r,c=null==(i=document.getElementById(wg))?void 0:i.contentDocument,l=null==c?void 0:c.createElement("iframe");l&&(l.setAttribute("id","opIFrame"),l.style.display="none");var o=null==c?void 0:c.createElement("iframe");o&&(o.setAttribute("id",Tg),o.style.display="none"),l&&(null===(e=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(l)),o&&(null===(r=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(o))},null===(r=null===document||void 0===document?void 0:document.body)||void 0===r||r.appendChild(i),eS=t,rS=e,iS=n,{initialize:lS,receivePromptNoneResponse:sS,reset:aS}});var yS=mS=function(){function t(){yG(this,t),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return fG(t,[{key:"requestHandler",value:function(t){return IG(this,void 0,void 0,GG.mark((function e(){var n,r;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,r=new FormData,Object.keys(n).forEach((function(t){r.append(t,n[t])})),t.data=r),mS.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw mS.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return mS.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:mS.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){mS.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){mS.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:mS.DEFAULT_HANDLER_DISABLE_TIMEOUT;mS.isHandlerEnabled=!1,setTimeout((function(){mS.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=hW.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new mS),this.axiosInstance.interceptors.request.use((function(e){return IG(t,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=hW.all,this.axiosInstance.spread=hW.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),t}();yS.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,yS=mS=function(t,e,n,r){var i,c=arguments.length,l=c<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===("undefined"==typeof Reflect?"undefined":o(Reflect))&&"function"==typeof Reflect.decorate)l=Reflect.decorate(t,e,n,r);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(l=(c<3?i(l):c>3?i(e,n,l):i(e,n))||l);return c>3&&l&&Object.defineProperty(e,n,l),l}([function(t){}],yS);var XS=function(){function t(){yG(this,t)}return fG(t,[{key:"setData",value:function(t,e){return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),fS=function(){function t(){yG(this,t),this._data=new Map}return fG(t,[{key:"setData",value:function(t,e){return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return IG(this,void 0,void 0,GG.mark((function r(){return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(t){return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),GS=function(){function t(){yG(this,t)}return fG(t,[{key:"setData",value:function(t,e){return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}();function IS(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return VS(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return VS(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function VS(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var WS=function(e){switch(e){case t.Storage.LocalStorage:return new XS;case t.Storage.SessionStorage:return new GS;case t.Storage.BrowserMemory:return new fS;default:return new GS}},vS=function(e){return IG(void 0,void 0,void 0,GG.mark((function n(){var r,i,c,l,o,a,u,d,s,m,h,b,Z,p,y,X,f,G,I,V,W,v,g,S,Y,R,L,x,K,J,H,N,C,k,U,w;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=WS(e.storage),c=new Jg(i),n.next=4,c.initialize(e);case 4:if(l=new bS(c),o=c.getDataLayer(),a=pS((function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(r=e.storage)&&void 0!==r?r:t.Storage.SessionStorage,(function(t){return o.setSessionDataParameter(WW,null!=t?t:"")})),u=yS.getInstance(),d=!0,h=function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,c.getAccessToken();case 7:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5);case 11:case"end":return e.stop()}}),e)})))},n.t0=null==u?void 0:u.init,!n.t0){n.next=14;break}return n.next=14,u.init(!0,h);case 14:return b=function(t){(null==u?void 0:u.setHttpRequestStartCallback)&&u.setHttpRequestStartCallback(t)},Z=function(t){(null==u?void 0:u.setHttpRequestSuccessCallback)&&u.setHttpRequestSuccessCallback(t)},p=function(t){(null==u?void 0:u.setHttpRequestFinishCallback)&&u.setHttpRequestFinishCallback(t),m=t},y=function(t){s=t},X=function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i,c,l,a,h;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=!1,e.next=3,o.getConfigData();case 3:return c=e.sent,l=0,e.t0=[],e.t1=YG,e.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(e.t3=n=e.sent,e.t2=null!==e.t3,!e.t2){e.next=13;break}e.t2=void 0!==n;case 13:if(!e.t2){e.next=17;break}e.t4=n,e.next=18;break;case 17:e.t4=[];case 18:e.t5=e.t4,e.t6=(0,e.t1)(e.t5),e.t7=[null==c?void 0:c.serverOrigin],a=e.t0.concat.call(e.t0,e.t6,e.t7);case 22:if(!(l<a.length)){e.next=30;break}if(h=a[l],!(null===(r=null==t?void 0:t.url)||void 0===r?void 0:r.startsWith(h))){e.next=27;break}return i=!0,e.abrupt("break",30);case 27:l++,e.next=22;break;case 30:if(!i){e.next=34;break}return e.abrupt("return",u.request(t).then((function(t){return Promise.resolve(t)})).catch((function(e){return IG(void 0,void 0,void 0,GG.mark((function n(){var r,i,c;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.status)&&(null==e?void 0:e.response)){n.next=31;break}return n.prev=1,n.next=4,Y();case 4:i=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!d){n.next=14;break}if("function"!=typeof s){n.next=13;break}return n.next=13,s(e);case 13:"function"==typeof m&&m();case 14:return n.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-HR-ES01","main-thread-client","httpRequest","","",n.t0)));case 15:if(!i){n.next=31;break}return n.prev=16,n.next=19,u.request(t);case 19:return c=n.sent,n.abrupt("return",Promise.resolve(c));case 23:if(n.prev=23,n.t1=n.catch(16),!d){n.next=30;break}if("function"!=typeof s){n.next=29;break}return n.next=29,s(n.t1);case 29:"function"==typeof m&&m();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!d){n.next=36;break}if("function"!=typeof s){n.next=35;break}return n.next=35,s(e);case 35:"function"==typeof m&&m();case 36:return n.abrupt("return",Promise.reject(e));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:return e.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-HR-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return e.stop()}}),e)})))},f=function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i,l,a,h,b,Z,p,y,X,f,G;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l=!0,e.next=3,o.getConfigData();case 3:a=e.sent,h=IS(t),e.prev=5,h.s();case 7:if((b=h.n()).done){e.next=50;break}return Z=b.value,p=!1,y=0,e.t0=[],e.t1=YG,e.next=15,a;case 15:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=19;break}e.t3=void 0===n;case 19:if(!e.t3){e.next=23;break}e.t5=void 0,e.next=24;break;case 23:e.t5=n.resourceServerURLs;case 24:if(e.t6=r=e.t5,e.t2=null!==e.t6,!e.t2){e.next=28;break}e.t2=void 0!==r;case 28:if(!e.t2){e.next=32;break}e.t7=r,e.next=33;break;case 32:e.t7=[];case 33:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==a?void 0:a.serverOrigin],X=e.t0.concat.call(e.t0,e.t9,e.t10);case 37:if(!(y<X.length)){e.next=45;break}if(f=X[y],!(null===(i=Z.url)||void 0===i?void 0:i.startsWith(f))){e.next=42;break}return p=!0,e.abrupt("break",45);case 42:y++,e.next=37;break;case 45:if(p){e.next=48;break}return l=!1,e.abrupt("break",50);case 48:e.next=7;break;case 50:e.next=55;break;case 52:e.prev=52,e.t11=e.catch(5),h.e(e.t11);case 55:return e.prev=55,h.f(),e.finish(55);case 58:if(G=[],!l){e.next=64;break}return t.forEach((function(t){G.push(u.request(t))})),e.abrupt("return",(null==u?void 0:u.all)&&u.all(G).then((function(t){return Promise.resolve(t)})).catch((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(401!==(null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status)&&(null==t?void 0:t.response)){e.next=17;break}return e.prev=1,e.next=4,c.refreshAccessToken();case 4:r=e.sent,e.next=15;break;case 7:if(e.prev=7,e.t0=e.catch(1),!d){e.next=14;break}if("function"!=typeof s){e.next=13;break}return e.next=13,s(t);case 13:"function"==typeof m&&m();case 14:return e.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-HRA-ES01","main-thread-client","httpRequestAll","","",e.t0)));case 15:if(!r){e.next=17;break}return e.abrupt("return",u.all&&u.all(G).then((function(t){return Promise.resolve(t)})).catch((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!d){e.next=5;break}if("function"!=typeof s){e.next=4;break}return e.next=4,s(t);case 4:"function"==typeof m&&m();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!d){e.next=22;break}if("function"!=typeof s){e.next=21;break}return e.next=21,s(t);case 21:"function"==typeof m&&m();case 22:return e.abrupt("return",Promise.reject(t));case 23:case"end":return e.stop()}}),e,null,[[1,7]])})))})));case 64:return e.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-HRA-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 65:case"end":return e.stop()}}),e,null,[[5,52,55,58]])})))},G=function(){return u},I=function(){return(null==u?void 0:u.enableHandler)&&u.enableHandler(),d=!0,!0},V=function(){return(null==u?void 0:u.disableHandler)&&u.disableHandler(),d=!1,!0},W=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e,n,r,i,l,u;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c.getOIDCServiceEndpoints();case 2:return l=t.sent,t.next=5,o.getConfigData();case 5:u=t.sent,a.initialize(u.clientID,null!==(e=l.checkSessionIframe)&&void 0!==e?e:"",(function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=u.checkSessionInterval)&&void 0!==n?n:3,null!==(r=u.sessionRefreshInterval)&&void 0!==r?r:300,u.signInRedirectURL,null!==(i=l.authorizationEndpoint)&&void 0!==i?i:"",u.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},v=function(e,n,r){return IG(void 0,void 0,void 0,GG.mark((function i(){var u,d,s,m,h,b,Z,p;return GG.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,o.getConfigData();case 2:return s=i.sent,i.next=5,a.receivePromptNoneResponse((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.setSessionDataParameter(WW,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return i.next=10,c.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return l.clearRefreshTokenTimeout(),l.refreshAccessTokenAutomatically(),s.enableOIDCSessionManagement&&W(),i.t0=Promise,i.next=17,c.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if((null==s?void 0:s.responseMode)===t.ResponseMode.formPost&&n?(m=n,h=null!=r?r:""):(m=null!==(u=new URL(window.location.href).searchParams.get(VW))&&void 0!==u?u:"",h=null!==(d=new URL(window.location.href).searchParams.get(WW))&&void 0!==d?d:"",ZS.removeAuthorizationCode()),!m){i.next=22;break}return i.abrupt("return",L(m,h));case 22:if(b=new URL(window.location.href).searchParams.get(Mg),Z=new URL(window.location.href).searchParams.get(Bg),!b){i.next=30;break}return(p=new URL(window.location.href)).searchParams.delete(Mg),p.searchParams.delete(Bg),history.pushState(null,document.title,p.toString()),i.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-SI-BE","main-thread-client","signIn",b,null!=Z?Z:"")));case 30:return i.abrupt("return",c.getAuthorizationURL(e).then((function(e){return IG(void 0,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(s.storage!==t.Storage.BrowserMemory||!s.enablePKCE){n.next=6;break}return n.t0=ZS,n.next=4,c.getPKCECode();case 4:n.t1=n.sent,n.t0.setPKCE.call(n.t0,n.t1);case 6:return location.href=e,n.next=9,ZS.waitTillPageRedirect();case 9:return n.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 10:case"end":return n.stop()}}),n)})))})));case 31:case"end":return i.stop()}}),i)})))},g=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c.isAuthenticated();case 2:if(!t.sent){t.next=8;break}return t.next=5,c.signOut();case 5:location.href=t.sent,t.next=9;break;case 8:location.href=ZS.getSignOutURL();case 9:return l.clearRefreshTokenTimeout(),t.next=12,ZS.waitTillPageRedirect();case 12:return t.abrupt("return",!0);case 13:case"end":return t.stop()}}),t)})))},S=function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i,a,u,d,s,m,h;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=!0,u=!1,e.next=4,o.getConfigData();case 4:if(d=e.sent,!(null==t?void 0:t.tokenEndpoint)){e.next=42;break}return a=!1,s=0,e.t0=[],e.t1=YG,e.next=12,o.getConfigData();case 12:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=16;break}e.t3=void 0===n;case 16:if(!e.t3){e.next=20;break}e.t5=void 0,e.next=21;break;case 20:e.t5=n.resourceServerURLs;case 21:if(e.t6=r=e.t5,e.t2=null!==e.t6,!e.t2){e.next=25;break}e.t2=void 0!==r;case 25:if(!e.t2){e.next=29;break}e.t7=r,e.next=30;break;case 29:e.t7=[];case 30:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==d?void 0:d.serverOrigin],m=e.t0.concat.call(e.t0,e.t9,e.t10);case 34:if(!(s<m.length)){e.next=42;break}if(h=m[s],!(null===(i=t.tokenEndpoint)||void 0===i?void 0:i.startsWith(h))){e.next=39;break}return u=!0,e.abrupt("break",42);case 39:s++,e.next=34;break;case 42:if(t.shouldReplayAfterRefresh&&o.setTemporaryDataParameter(Qg,JSON.stringify(t)),!a&&!u){e.next=47;break}return e.abrupt("return",c.requestCustomGrant(t).then((function(e){return IG(void 0,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t.returnsSession){n.next=5;break}return l.refreshAccessTokenAutomatically(),n.abrupt("return",c.getBasicUserInfo());case 5:return n.abrupt("return",e);case 6:case"end":return n.stop()}}),n)})))})).catch((function(t){return Promise.reject(t)})));case 47:return e.abrupt("return",Promise.reject(new hS("MAIN_THREAD_CLIENT-RCG-IV01","main-thread-client","requestCustomGrant","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 48:case"end":return e.stop()}}),e)})))},Y=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,c.refreshAccessToken();case 3:return t.next=5,w();case 5:if(!(e=t.sent)){t.next=9;break}return t.next=9,S(e);case 9:return l.refreshAccessTokenAutomatically(),t.abrupt("return",c.getBasicUserInfo());case 13:return t.prev=13,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 16:case"end":return t.stop()}}),t,null,[[0,13]])})))},R=function(){return c.revokeAccessToken().then((function(){return a.reset(),l.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},L=function(e,n){return IG(void 0,void 0,void 0,GG.mark((function r(){var i,a;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,o.getConfigData();case 2:if((i=r.sent).storage!==t.Storage.BrowserMemory||!i.enablePKCE){r.next=7;break}return a=ZS.getPKCE(),r.next=7,c.setPKCECode(a);case 7:return r.abrupt("return",c.requestAccessToken(e,n).then((function(){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i.storage!==t.Storage.BrowserMemory){e.next=6;break}return e.t0=ZS,e.next=4,c.getSignOutURL();case 4:e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1);case 6:return l.clearRefreshTokenTimeout(),l.refreshAccessTokenAutomatically(),i.enableOIDCSessionManagement&&W(),e.abrupt("return",c.getBasicUserInfo());case 10:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 8:case"end":return r.stop()}}),r)})))},x=function(){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i,l,u,d,s;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getConfigData();case 2:if(r=e.sent,!ZS.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,a.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(wg),l=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.getElementById(Tg),e.prev=9,e.next=12,c.getAuthorizationURL({prompt:"none",state:jg});case 12:if(u=e.sent,(d=new URL(u)).searchParams.set("response_mode","query"),s=d.toString(),r.storage!==t.Storage.BrowserMemory||!r.enablePKCE){e.next=22;break}return e.t0=ZS,e.next=20,c.getPKCECode();case 20:e.t1=e.sent,e.t0.setPKCE.call(e.t0,e.t1);case 22:l.src=s,e.next=28;break;case 25:return e.prev=25,e.t2=e.catch(9),e.abrupt("return",Promise.reject(e.t2));case 28:return e.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(i){return IG(void 0,void 0,void 0,GG.mark((function c(){var l,o,a;return GG.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(a=i.data)?void 0:a.type)==kg&&(window.removeEventListener("message",r),clearTimeout(n),t(!1)),(null==a?void 0:a.type)==Cg&&(null===(l=null==a?void 0:a.data)||void 0===l?void 0:l.code)&&L(a.data.code,null===(o=null==a?void 0:a.data)||void 0===o?void 0:o.sessionState).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 29:case"end":return e.stop()}}),e,null,[[9,25]])})))},K=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},J=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},H=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getIDToken());case 1:case"end":return t.stop()}}),t)})))},N=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},C=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},k=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},U=function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getConfigData();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),e.next=7,c.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(a.reset(),W());case 8:case"end":return e.stop()}}),e)})))},w=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getTemporaryDataParameter(Qg);case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:V,enableHttpHandler:I,getAccessToken:C,getBasicUserInfo:K,getDecodedIDToken:J,getHttpClient:G,getIDToken:H,getOIDCServiceEndpoints:N,httpRequest:X,httpRequestAll:f,isAuthenticated:k,refreshAccessToken:Y,requestCustomGrant:S,revokeAccessToken:R,setHttpRequestErrorCallback:y,setHttpRequestFinishCallback:p,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:Z,signIn:v,signOut:g,trySignInSilently:x,updateConfig:U});case 40:case"end":return n.stop()}}),n)})))};function gS(t,e,n){var r=void 0===e?null:e,i=function(t,e){var n=atob(t);if(e){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(t,void 0!==n&&n),c=i.indexOf("\n",10)+1,l=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([l],{type:"application/javascript"});return URL.createObjectURL(o)}var SS,YS,RS,LS,xS=(SS="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIHQoZSx0LHIpe3JldHVybiBlKHI9e3BhdGg6dCxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KG51bGw9PXQmJnIucGF0aCl9fSxyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgcj10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yPyhlLmV4cG9ydHM9dD1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0KHIpfWUuZXhwb3J0cz10LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxuPWUociksbz10KChmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdCxyPU9iamVjdC5wcm90b3R5cGUsbz1yLmhhc093blByb3BlcnR5LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gZihlLHQscixuKXt2YXIgbz10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHk/dDp5LGk9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgUChufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49bDtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihuPT09ZCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihuPT09dil7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gTygpfWZvcihyLm1ldGhvZD1vLHIuYXJnPWk7Oyl7dmFyIGE9ci5kZWxlZ2F0ZTtpZihhKXt2YXIgcz1BKGEscik7aWYocyl7aWYocz09PWcpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihuPT09bCl0aHJvdyBuPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPWQ7dmFyIHU9aChlLHQscik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKG49ci5kb25lP3Y6cCx1LmFyZz09PWcpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09dS50eXBlJiYobj12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixhKSxpfWZ1bmN0aW9uIGgoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Zjt2YXIgbD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixkPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIsZz17fTtmdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gdygpe312YXIgYj17fTtjKGIsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgaz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseD1rJiZrKGsoQyhbXSkpKTt4JiZ4IT09ciYmby5jYWxsKHgsYSkmJihiPXgpO3ZhciBfPXcucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYik7ZnVuY3Rpb24gUyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gRShlLHQpe2Z1bmN0aW9uIHIoaSxhLHMsdSl7dmFyIGM9aChlW2ldLGUsYSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGY9Yy5hcmcsbD1mLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09PW4obCkmJm8uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxzLHUpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLHMsdSl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2YudmFsdWU9ZSxzKGYpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxzLHUpfSkpfXUoYy5hcmcpfXZhciBpO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7cihlLG4sdCxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19ZnVuY3Rpb24gQShlLHIpe3ZhciBuPWUuaXRlcmF0b3Jbci5tZXRob2RdO2lmKG49PT10KXtpZihyLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXIubWV0aG9kKXtpZihlLml0ZXJhdG9yLnJldHVybiYmKHIubWV0aG9kPSJyZXR1cm4iLHIuYXJnPXQsQShlLHIpLCJ0aHJvdyI9PT1yLm1ldGhvZCkpcmV0dXJuIGc7ci5tZXRob2Q9InRocm93IixyLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kIil9cmV0dXJuIGd9dmFyIG89aChuLGUuaXRlcmF0b3Isci5hcmcpO2lmKCJ0aHJvdyI9PT1vLnR5cGUpcmV0dXJuIHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9by5hcmcsci5kZWxlZ2F0ZT1udWxsLGc7dmFyIGk9by5hcmc7cmV0dXJuIGk/aS5kb25lPyhyW2UucmVzdWx0TmFtZV09aS52YWx1ZSxyLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09ci5tZXRob2QmJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksci5kZWxlZ2F0ZT1udWxsLGcpOmk6KHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxyLmRlbGVnYXRlPW51bGwsZyl9ZnVuY3Rpb24gVChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBSKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBQKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goVCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBDKGUpe2lmKGUpe3ZhciByPWVbYV07aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsaT1mdW5jdGlvbiByKCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKG8uY2FsbChlLG4pKXJldHVybiByLnZhbHVlPWVbbl0sci5kb25lPSExLHI7cmV0dXJuIHIudmFsdWU9dCxyLmRvbmU9ITAscn07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpPfX1mdW5jdGlvbiBPKCl7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19cmV0dXJuIG0ucHJvdG90eXBlPXcsYyhfLCJjb25zdHJ1Y3RvciIsdyksYyh3LCJjb25zdHJ1Y3RvciIsbSksbS5kaXNwbGF5TmFtZT1jKHcsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHcpOihlLl9fcHJvdG9fXz13LGMoZSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LFMoRS5wcm90b3R5cGUpLGMoRS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9RSxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEUoZih0LHIsbixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSxTKF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKHIpO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiByKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBuPXQucG9wKCk7aWYobiBpbiBlKXJldHVybiByLnZhbHVlPW4sci5kb25lPSExLHJ9cmV0dXJuIHIuZG9uZT0hMCxyfX0sZS52YWx1ZXM9QyxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goUiksIWUpZm9yKHZhciByIGluIHRoaXMpInQiPT09ci5jaGFyQXQoMCkmJm8uY2FsbCh0aGlzLHIpJiYhaXNOYU4oK3Iuc2xpY2UoMSkpJiYodGhpc1tyXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciByPXRoaXM7ZnVuY3Rpb24gbihuLG8pe3JldHVybiBzLnR5cGU9InRocm93IixzLmFyZz1lLHIubmV4dD1uLG8mJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxzPWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHU9by5jYWxsKGEsImNhdGNoTG9jIiksYz1vLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHUmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHUpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIG49dGhpcy50cnlFbnRyaWVzW3JdO2lmKG4udHJ5TG9jPD10aGlzLnByZXYmJm8uY2FsbChuLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxuLmZpbmFsbHlMb2Mpe3ZhciBpPW47YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPWUsYS5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxnKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGd9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksUihyKSxnfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO1Iocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpDKGUpLHJlc3VsdE5hbWU6cixuZXh0TG9jOm59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksZ319LGV9KGUuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT10fWNhdGNoKGUpeyJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZ2xvYmFsVGhpcz8idW5kZWZpbmVkIjpuKGdsb2JhbFRoaXMpKT9nbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZT10OkZ1bmN0aW9uKCJyIiwicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHQpfX0pKSxpPW87ZnVuY3Rpb24gYShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgcz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHU9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxjPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxmPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3MoZSx0KTp2b2lkIDB9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksaD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLGw9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSl8fGMoZSl8fGYoZSl8fGgoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpKSxwPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLG8saT1bXSxhPSEwLHM9ITE7dHJ5e2ZvcihyPXIuY2FsbChlKTshKGE9KG49ci5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKG4udmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChlKXtzPSEwLG89ZX1maW5hbGx5e3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319cmV0dXJuIGl9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdj10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKXx8ZChlLHQpfHxmKGUsdCl8fHYoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHk9ZShnKSxtPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdz1lKG0pLGI9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLGs9dCgoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuLG8saSxhKXt0cnl7dmFyIHM9ZVtpXShhKSx1PXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dCh1KTpQcm9taXNlLnJlc29sdmUodSkudGhlbihuLG8pfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxpKXt2YXIgYT1lLmFwcGx5KHIsbik7ZnVuY3Rpb24gcyhlKXt0KGEsbyxpLHMsdSwibmV4dCIsZSl9ZnVuY3Rpb24gdShlKXt0KGEsbyxpLHMsdSwidGhyb3ciLGUpfXModm9pZCAwKX0pKX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSx4PWUoayksXz1lKHQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFM9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLEU9ZShTKSxBPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuKXtyZXR1cm4gZS5leHBvcnRzPXQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCx0KHIsbil9ZS5leHBvcnRzPXQsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLFQ9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmQShlLHQpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFI9dCgoZnVuY3Rpb24oZSl7dmFyIHQ9ci5kZWZhdWx0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKHImJigib2JqZWN0Ij09PXQocil8fCJmdW5jdGlvbiI9PXR5cGVvZiByKSlyZXR1cm4gcjtpZih2b2lkIDAhPT1yKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxQPWUoUiksQz10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBlLmV4cG9ydHM9dD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTz1lKEMpLEQ9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09RnVuY3Rpb24udG9TdHJpbmcuY2FsbChlKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIil9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxJPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxVPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuLG8pe3JldHVybiBJKCk/KGUuZXhwb3J0cz10PVJlZmxlY3QuY29uc3RydWN0LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bbnVsbF07bi5wdXNoLmFwcGx5KG4sdCk7dmFyIG89bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoZSxuKSk7cmV0dXJuIHImJkEobyxyLnByb3RvdHlwZSksb30sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0LmFwcGx5KG51bGwsYXJndW1lbnRzKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTT10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwhRChlKSlyZXR1cm4gZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2lmKHZvaWQgMCE9PW4pe2lmKG4uaGFzKGUpKXJldHVybiBuLmdldChlKTtuLnNldChlLHQpfWZ1bmN0aW9uIHQoKXtyZXR1cm4gVShlLGFyZ3VtZW50cyxDKHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksQSh0LGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTD1lKE0pLGo9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxIPVtdLHE9W10sQj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxOPSExO2Z1bmN0aW9uIEsoKXtOPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClIW3RdPWVbdF0scVtlLmNoYXJDb2RlQXQodCldPXQ7cVsiLSIuY2hhckNvZGVBdCgwKV09NjIscVsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gRihlLHQscil7Zm9yKHZhciBuLG8saT1bXSxhPXQ7YTxyO2ErPTMpbj0oZVthXTw8MTYpKyhlW2ErMV08PDgpK2VbYSsyXSxpLnB1c2goSFsobz1uKT4+MTgmNjNdK0hbbz4+MTImNjNdK0hbbz4+NiY2M10rSFs2MyZvXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gWShlKXt2YXIgdDtOfHxLKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLG89IiIsaT1bXSxhPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9YSlpLnB1c2goRihlLHMscythPnU/dTpzK2EpKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLG8rPUhbdD4+Ml0sbys9SFt0PDw0JjYzXSxvKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLG8rPUhbdD4+MTBdLG8rPUhbdD4+NCY2M10sbys9SFt0PDwyJjYzXSxvKz0iPSIpLGkucHVzaChvKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIFcoZSx0LHIsbixvKXt2YXIgaSxhLHM9OCpvLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGg9cj9vLTE6MCxsPXI/LTE6MSxwPWVbdCtoXTtmb3IoaCs9bCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtoXSxoKz1sLGYtPTgpO2ZvcihhPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDthPTI1NiphK2VbdCtoXSxoKz1sLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIGE/TmFOOjEvMCoocD8tMToxKTthKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqYSpNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24gSihlLHQscixuLG8saSl7dmFyIGEscyx1LGM9OCppLW8tMSxmPSgxPDxjKS0xLGg9Zj4+MSxsPTIzPT09bz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxhPWYpOihhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtYSkpPDEmJihhLS0sdSo9MiksKHQrPWEraD49MT9sL3U6bCpNYXRoLnBvdygyLDEtaCkpKnU+PTImJihhKyssdS89MiksYStoPj1mPyhzPTAsYT1mKTphK2g+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLG8pLGErPWgpOihzPXQqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsbyksYT0wKSk7bz49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsby09OCk7Zm9yKGE9YTw8b3xzLGMrPW87Yz4wO2VbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIHo9e30udG9TdHJpbmcsRz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT16LmNhbGwoZSl9O2Z1bmN0aW9uIFYoKXtyZXR1cm4gWC5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiAkKGUsdCl7aWYoVigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIFguVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVgucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IFgodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gWChlLHQscil7aWYoIShYLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBYKSlyZXR1cm4gbmV3IFgoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gZWUodGhpcyxlKX1yZXR1cm4gWih0aGlzLGUsdCxyKX1mdW5jdGlvbiBaKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7WC5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTplPXRlKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIVguaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfG9lKHQsciksbz0oZT0kKGUsbikpLndyaXRlKHQscik7byE9PW4mJihlPWUuc2xpY2UoMCxvKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKG5lKHQpKXt2YXIgcj0wfHJlKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPSQoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uPyQoZSwwKTp0ZShlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZHKHQuZGF0YSkpcmV0dXJuIHRlKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gUShlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIGVlKGUsdCl7aWYoUSh0KSxlPSQoZSx0PDA/MDowfHJlKHQpKSwhWC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIHRlKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8cmUodC5sZW5ndGgpO2U9JChlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gcmUoZSl7aWYoZT49VigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitWKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIG5lKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBvZShlLHQpe2lmKG5lKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBPZShlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIERlKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIE9lKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGllKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIGJlKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBnZSh0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIG1lKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB3ZSh0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiB2ZSh0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBrZSh0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBhZShlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIHNlKGUsdCxyLG4sbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9bz8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighbylyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1YLmZyb20odCxuKSksbmUodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTp1ZShlLHQscixuLG8pO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/bz9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOnVlKGUsW3RdLHIsbixvKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiB1ZShlLHQscixuLG8pe3ZhciBpLGE9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTthPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09YT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqYSl9aWYobyl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZiphfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGg9ITAsbD0wO2w8dTtsKyspaWYoYyhlLGkrbCkhPT1jKHQsbCkpe2g9ITE7YnJlYWt9aWYoaClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBjZShlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgbz1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5vJiYobj1vKTpuPW87dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgYT0wO2E8bjsrK2Epe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqYSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGE7ZVtyK2FdPXN9cmV0dXJuIGF9ZnVuY3Rpb24gZmUoZSx0LHIsbil7cmV0dXJuIEllKE9lKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGhlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIGxlKGUsdCxyLG4pe3JldHVybiBoZShlLHQscixuKX1mdW5jdGlvbiBwZShlLHQscixuKXtyZXR1cm4gSWUoRGUodCksZSxyLG4pfWZ1bmN0aW9uIGRlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLG8saT1bXSxhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKW49KHI9ZS5jaGFyQ29kZUF0KGEpKT4+OCxvPXIlMjU2LGkucHVzaChvKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIHZlKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9ZKGUpOlkoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBnZShlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sbz10O288cjspe3ZhciBpLGEscyx1LGM9ZVtvXSxmPW51bGwsaD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKG8raDw9cilzd2l0Y2goaCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbbysxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW28rMV0sYT1lW28rMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImYSkmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJmEpPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVtvKzFdLGE9ZVtvKzJdLHM9ZVtvKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJmEpJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmYSk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsaD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLG8rPWh9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PXllKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz15ZSkpO3JldHVybiByfShuKX1YLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09ai5UWVBFRF9BUlJBWV9TVVBQT1JUfHxqLlRZUEVEX0FSUkFZX1NVUFBPUlQsWC5wb29sU2l6ZT04MTkyLFguX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPVgucHJvdG90eXBlLGV9LFguZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFoobnVsbCxlLHQscil9LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmKFgucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxYLl9fcHJvdG9fXz1VaW50OEFycmF5KSxYLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIFEodCksdDw9MD8kKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/JChlLHQpLmZpbGwocixuKTokKGUsdCkuZmlsbChyKTokKGUsdCl9KG51bGwsZSx0LHIpfSxYLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBlZShudWxsLGUpfSxYLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gZWUobnVsbCxlKX0sWC5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fFVlKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJlVlKGUuc2xpY2UoMCwwKSl9KGUpKX0sWC5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIW5lKGUpfHwhbmUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLG89MCxpPU1hdGgubWluKHIsbik7bzxpOysrbylpZihlW29dIT09dFtvXSl7cj1lW29dLG49dFtvXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LFguaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sWC5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighRyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBYLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49WC5hbGxvY1Vuc2FmZSh0KSxvPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighbmUoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLG8pLG8rPWkubGVuZ3RofXJldHVybiBufSxYLmJ5dGVMZW5ndGg9b2UsWC5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLFgucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilhZSh0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KWFlKHRoaXMsdCx0KzMpLGFlKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LFgucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClhZSh0aGlzLHQsdCs3KSxhZSh0aGlzLHQrMSx0KzYpLGFlKHRoaXMsdCsyLHQrNSksYWUodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9nZSh0aGlzLDAsZSk6aWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxYLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1YLmNvbXBhcmUodGhpcyxlKX0sWC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxYLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sbyl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8bz50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49byYmdD49cilyZXR1cm4gMDtpZihuPj1vKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShvPj4+PTApLShuPj4+PTApLGE9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLGEpLHU9dGhpcy5zbGljZShuLG8pLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sYT1jW2ZdO2JyZWFrfXJldHVybiBpPGE/LTE6YTxpPzE6MH0sWC5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sWC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITApfSxYLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITEpfSxYLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgbz10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPm8pJiYocj1vKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gY2UodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gZmUodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIGhlKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGxlKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gcGUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBkZSh0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxYLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciB5ZT00MDk2O2Z1bmN0aW9uIG1lKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbz10O288cjsrK28pbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gd2UoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiBufWZ1bmN0aW9uIGJlKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIG89IiIsaT10O2k8cjsrK2kpbys9Q2UoZVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24ga2UoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksbz0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKW8rPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gb31mdW5jdGlvbiB4ZShlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gX2UoZSx0LHIsbixvLGkpe2lmKCFuZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5vfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gU2UoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTtvPGk7KytvKWVbcitvXT0odCYyNTU8PDgqKG4/bzoxLW8pKT4+PjgqKG4/bzoxLW8pfWZ1bmN0aW9uIEVlKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTtvPGk7KytvKWVbcitvXT10Pj4+OCoobj9vOjMtbykmMjU1fWZ1bmN0aW9uIEFlKGUsdCxyLG4sbyxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gVGUoZSx0LHIsbixvKXtyZXR1cm4gb3x8QWUoZSwwLHIsNCksSihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBSZShlLHQscixuLG8pe3JldHVybiBvfHxBZShlLDAsciw4KSxKKGUsdCxyLG4sNTIsOCkscis4fVgucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLFguVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTtlbHNle3ZhciBvPXQtZTtyPW5ldyBYKG8sdm9pZCAwKTtmb3IodmFyIGk9MDtpPG87KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxYLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8eGUoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxvPTEsaT0wOysraTx0JiYobyo9MjU2KTspbis9dGhpc1tlK2ldKm87cmV0dXJuIG59LFgucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxvPTE7dD4wJiYobyo9MjU2KTspbis9dGhpc1tlKy0tdF0qbztyZXR1cm4gbn0sWC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sWC5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFgucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxYLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbj49KG8qPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LFgucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fHhlKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsbz0xLGk9dGhpc1tlKy0tbl07bj4wJiYobyo9MjU2KTspaSs9dGhpc1tlKy0tbl0qbztyZXR1cm4gaT49KG8qPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LFgucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFgucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8eGUoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sWC5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHx4ZShlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxYLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sWC5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LFgucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITAsMjMsNCl9LFgucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITEsMjMsNCl9LFgucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDgsdGhpcy5sZW5ndGgpLFcodGhpcyxlLCEwLDUyLDgpfSxYLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw4LHRoaXMubGVuZ3RoKSxXKHRoaXMsZSwhMSw1Miw4KX0sWC5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPTEsaT0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspdGhpc1t0K2ldPWUvbyYyNTU7cmV0dXJuIHQrcn0sWC5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPXItMSxpPTE7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihpKj0yNTYpOyl0aGlzW3Qrb109ZS9pJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDEsMjU1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LFgucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiw2NTUzNSwwKSxYLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpTZSh0aGlzLGUsdCwhMCksdCsyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDIsNjU1MzUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIG89TWF0aC5wb3coMiw4KnItMSk7X2UodGhpcyxlLHQscixvLTEsLW8pfXZhciBpPTAsYT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraS0xXSYmKHM9MSksdGhpc1t0K2ldPShlL2E+PjApLXMmMjU1O3JldHVybiB0K3J9LFgucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtfZSh0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMSwxMjcsLTEyOCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxYLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOlNlKHRoaXMsZSx0LCEwKSx0KzJ9LFgucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBUZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVGUodGhpcyxlLHQsITEscil9LFgucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBSZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFJlKHRoaXMsZSx0LCExLHIpfSxYLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIG8saT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihvPWktMTtvPj0wOy0tbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgaWYoaTwxZTN8fCFYLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKG89MDtvPGk7KytvKWVbbyt0XT10aGlzW28rcl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxYLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBvPWUuY2hhckNvZGVBdCgwKTtvPDI1NiYmKGU9byl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFYLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBhPW5lKGUpP2U6T2UobmV3IFgoZSxuKS50b1N0cmluZygpKSxzPWEubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1hW2klc119cmV0dXJuIHRoaXN9O3ZhciBQZT0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBDZShlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gT2UoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsbz1udWxsLGk9W10sYT0wO2E8bjsrK2Epe2lmKChyPWUuY2hhckNvZGVBdChhKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFvKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfW89cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksbz1yO2NvbnRpbnVlfXI9NjU1MzYrKG8tNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgbyYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKG89bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIERlKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sbyxpLGE7Tnx8SygpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxhPW5ldyBCKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylvPXFbZS5jaGFyQ29kZUF0KHQpXTw8MTh8cVtlLmNoYXJDb2RlQXQodCsxKV08PDEyfHFbZS5jaGFyQ29kZUF0KHQrMildPDw2fHFbZS5jaGFyQ29kZUF0KHQrMyldLGFbdSsrXT1vPj4xNiYyNTUsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbztyZXR1cm4gMj09PWk/KG89cVtlLmNoYXJDb2RlQXQodCldPDwyfHFbZS5jaGFyQ29kZUF0KHQrMSldPj40LGFbdSsrXT0yNTUmbyk6MT09PWkmJihvPXFbZS5jaGFyQ29kZUF0KHQpXTw8MTB8cVtlLmNoYXJDb2RlQXQodCsxKV08PDR8cVtlLmNoYXJDb2RlQXQodCsyKV0+PjIsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbyksYX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShQZSwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gSWUoZSx0LHIsbil7Zm9yKHZhciBvPTA7bzxuJiYhKG8rcj49dC5sZW5ndGh8fG8+PWUubGVuZ3RoKTsrK28pdFtvK3JdPWVbb107cmV0dXJuIG99ZnVuY3Rpb24gVWUoZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgTWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sTGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBqZShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09TGUuY2FsbChlKX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBxZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09bihlKX1mdW5jdGlvbiBCZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PUxlLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PUxlLmNhbGwoZSl9ZnVuY3Rpb24gS2UoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09bihlKSYmKGU9W2VdKSxqZShlKSlmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bztyKyspdC5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgRmU9e2lzQXJyYXk6amUsaXNBcnJheUJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09TGUuY2FsbChlKX0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhSGUoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhSGUoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJmUgaW5zdGFuY2VvZiBGb3JtRGF0YX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OnFlLGlzUGxhaW5PYmplY3Q6QmUsaXNVbmRlZmluZWQ6SGUsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PUxlLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1MZS5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09TGUuY2FsbChlKX0saXNGdW5jdGlvbjpOZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gcWUoZSkmJk5lKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOktlLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7QmUodFtuXSkmJkJlKHIpP3Rbbl09ZSh0W25dLHIpOkJlKHIpP3Rbbl09ZSh7fSxyKTpqZShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsbz1hcmd1bWVudHMubGVuZ3RoO248bztuKyspS2UoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBLZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWUodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX07ZnVuY3Rpb24gWWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIFdlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKEZlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIG89W107RmUuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihGZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sRmUuZm9yRWFjaChlLChmdW5jdGlvbihlKXtGZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6RmUuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxvLnB1c2goWWUodCkrIj0iK1llKGUpKX0pKSl9KSksbj1vLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX07ZnVuY3Rpb24gSmUoKXt0aGlzLmhhbmRsZXJzPVtdfUplLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LEplLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sSmUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7RmUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIHplPUplO2Z1bmN0aW9uIEdlKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gVmUoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciAkZT1HZSxYZT1WZTtmdW5jdGlvbiBaZShlKXtpZigkZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoJGU9PT1HZXx8ISRlKSYmc2V0VGltZW91dClyZXR1cm4gJGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiAkZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gJGUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuICRlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIGouc2V0VGltZW91dCYmKCRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBqLmNsZWFyVGltZW91dCYmKFhlPWNsZWFyVGltZW91dCk7dmFyIFFlLGV0PVtdLHR0PSExLHJ0PS0xO2Z1bmN0aW9uIG50KCl7dHQmJlFlJiYodHQ9ITEsUWUubGVuZ3RoP2V0PVFlLmNvbmNhdChldCk6cnQ9LTEsZXQubGVuZ3RoJiZvdCgpKX1mdW5jdGlvbiBvdCgpe2lmKCF0dCl7dmFyIGU9WmUobnQpO3R0PSEwO2Zvcih2YXIgdD1ldC5sZW5ndGg7dDspe2ZvcihRZT1ldCxldD1bXTsrK3J0PHQ7KVFlJiZRZVtydF0ucnVuKCk7cnQ9LTEsdD1ldC5sZW5ndGh9UWU9bnVsbCx0dD0hMSxmdW5jdGlvbihlKXtpZihYZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChYZT09PVZlfHwhWGUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIFhlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e1hlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gWGUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBYZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGl0KGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9aXQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIGF0KCl7fXZhciBzdD1hdCx1dD1hdCxjdD1hdCxmdD1hdCxodD1hdCxsdD1hdCxwdD1hdDt2YXIgZHQ9ai5wZXJmb3JtYW5jZXx8e30sdnQ9ZHQubm93fHxkdC5tb3pOb3d8fGR0Lm1zTm93fHxkdC5vTm93fHxkdC53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBndD1uZXcgRGF0ZTt2YXIgeXQ9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07ZXQucHVzaChuZXcgaXQoZSx0KSksMSE9PWV0Lmxlbmd0aHx8dHR8fFplKG90KX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpzdCxhZGRMaXN0ZW5lcjp1dCxvbmNlOmN0LG9mZjpmdCxyZW1vdmVMaXN0ZW5lcjpodCxyZW1vdmVBbGxMaXN0ZW5lcnM6bHQsZW1pdDpwdCxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSp2dC5jYWxsKGR0KSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1ndCkvMWUzfX0sbXQ9eXQsd3Q9ZnVuY3Rpb24oZSx0KXtGZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LGJ0PWZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPW8sZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGV9fSxlfSxrdD1mdW5jdGlvbihlLHQscixuLG8pe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gYnQoaSx0LHIsbixvKX0seHQ9RmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3ZhciBhPVtdO2EucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLEZlLmlzTnVtYmVyKHIpJiZhLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxGZS5pc1N0cmluZyhuKSYmYS5wdXNoKCJwYXRoPSIrbiksRmUuaXNTdHJpbmcobykmJmEucHVzaCgiZG9tYWluPSIrbyksITA9PT1pJiZhLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1hLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSxfdD1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLFN0PUZlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPUZlLmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sRXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuPWUuZGF0YSxvPWUuaGVhZGVycyxpPWUucmVzcG9uc2VUeXBlO0ZlLmlzRm9ybURhdGEobikmJmRlbGV0ZSBvWyJDb250ZW50LVR5cGUiXTt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgcz1lLmF1dGgudXNlcm5hbWV8fCIiLHU9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtvLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShzKyI6Iit1KX12YXIgYyxmLGg9KGM9ZS5iYXNlVVJMLGY9ZS51cmwsYyYmIS9eKFthLXpdW2EtelxkXCtcLVwuXSo6KT9cL1wvL2kudGVzdChmKT9mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfShjLGYpOmYpO2Z1bmN0aW9uIGwoKXtpZihhKXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGE/ZnVuY3Rpb24oZSl7dmFyIHQscixuLG89e307cmV0dXJuIGU/KEZlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PUZlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPUZlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYob1t0XSYmX3QuaW5kZXhPZih0KT49MClyZXR1cm47b1t0XT0ic2V0LWNvb2tpZSI9PT10PyhvW3RdP29bdF06W10pLmNvbmNhdChbcl0pOm9bdF0/b1t0XSsiLCAiK3I6cn19KSksbyk6b30oYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxvPXtkYXRhOmkmJiJ0ZXh0IiE9PWkmJiJqc29uIiE9PWk/YS5yZXNwb25zZTphLnJlc3BvbnNlVGV4dCxzdGF0dXM6YS5zdGF0dXMsc3RhdHVzVGV4dDphLnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6YX07IWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3Qoa3QoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0odCxyLG8pLGE9bnVsbH19aWYoYS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksV2UoaCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxhLnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1sOmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7YSYmND09PWEucmVhZHlTdGF0ZSYmKDAhPT1hLnN0YXR1c3x8YS5yZXNwb25zZVVSTCYmMD09PWEucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQobCl9LGEub25hYm9ydD1mdW5jdGlvbigpe2EmJihyKGt0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsYSkpLGE9bnVsbCl9LGEub25lcnJvcj1mdW5jdGlvbigpe3Ioa3QoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxhKSksYT1udWxsfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PSJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIoa3QodCxlLGUudHJhbnNpdGlvbmFsJiZlLnRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLGEpKSxhPW51bGx9LEZlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8U3QoaCkpJiZlLnhzcmZDb29raWVOYW1lP3h0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIGEmJkZlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1uJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTphLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxGZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYoYS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmEudXBsb2FkJiZhLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7YSYmKGEuYWJvcnQoKSxyKGUpLGE9bnVsbCl9KSksbnx8KG49bnVsbCksYS5zZW5kKG4pfSkpfSxBdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIFR0KGUsdCl7IUZlLmlzVW5kZWZpbmVkKGUpJiZGZS5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgUnQsUHQ9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PW10JiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobXQpKSYmKFJ0PUV0KSxSdCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gd3QodCwiQWNjZXB0Iiksd3QodCwiQ29udGVudC1UeXBlIiksRmUuaXNGb3JtRGF0YShlKXx8RmUuaXNBcnJheUJ1ZmZlcihlKXx8RmUuaXNCdWZmZXIoZSl8fEZlLmlzU3RyZWFtKGUpfHxGZS5pc0ZpbGUoZSl8fEZlLmlzQmxvYihlKT9lOkZlLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOkZlLmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhUdCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6RmUuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhUdCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKEZlLmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksRmUudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxvPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihvfHxuJiZGZS5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKG8pe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgYnQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfX07UHQuaGVhZGVycz17Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fSxGZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtQdC5oZWFkZXJzW2VdPXt9fSkpLEZlLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7UHQuaGVhZGVyc1tlXT1GZS5tZXJnZShBdCl9KSk7dmFyIEN0PVB0LE90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxDdDtyZXR1cm4gRmUuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sRHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9O2Z1bmN0aW9uIEl0KGUpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpfXZhciBVdD1mdW5jdGlvbihlKXtyZXR1cm4gSXQoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPU90LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPUZlLm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksRmUuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxDdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gSXQoZSksdC5kYXRhPU90LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIER0KHQpfHwoSXQoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1PdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxNdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e30sbj1bInVybCIsIm1ldGhvZCIsImRhdGEiXSxvPVsiaGVhZGVycyIsImF1dGgiLCJwcm94eSIsInBhcmFtcyJdLGk9WyJiYXNlVVJMIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJ0aW1lb3V0TWVzc2FnZSIsIndpdGhDcmVkZW50aWFscyIsImFkYXB0ZXIiLCJyZXNwb25zZVR5cGUiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwib25VcGxvYWRQcm9ncmVzcyIsIm9uRG93bmxvYWRQcm9ncmVzcyIsImRlY29tcHJlc3MiLCJtYXhDb250ZW50TGVuZ3RoIiwibWF4Qm9keUxlbmd0aCIsIm1heFJlZGlyZWN0cyIsInRyYW5zcG9ydCIsImh0dHBBZ2VudCIsImh0dHBzQWdlbnQiLCJjYW5jZWxUb2tlbiIsInNvY2tldFBhdGgiLCJyZXNwb25zZUVuY29kaW5nIl0sYT1bInZhbGlkYXRlU3RhdHVzIl07ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBGZS5pc1BsYWluT2JqZWN0KGUpJiZGZS5pc1BsYWluT2JqZWN0KHQpP0ZlLm1lcmdlKGUsdCk6RmUuaXNQbGFpbk9iamVjdCh0KT9GZS5tZXJnZSh7fSx0KTpGZS5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIHUobil7RmUuaXNVbmRlZmluZWQodFtuXSk/RmUuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXMoZVtuXSx0W25dKX1GZS5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUpe0ZlLmlzVW5kZWZpbmVkKHRbZV0pfHwocltlXT1zKHZvaWQgMCx0W2VdKSl9KSksRmUuZm9yRWFjaChvLHUpLEZlLmZvckVhY2goaSwoZnVuY3Rpb24obil7RmUuaXNVbmRlZmluZWQodFtuXSk/RmUuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXModm9pZCAwLHRbbl0pfSkpLEZlLmZvckVhY2goYSwoZnVuY3Rpb24obil7biBpbiB0P3Jbbl09cyhlW25dLHRbbl0pOm4gaW4gZSYmKHJbbl09cyh2b2lkIDAsZVtuXSkpfSkpO3ZhciBjPW4uY29uY2F0KG8pLmNvbmNhdChpKS5jb25jYXQoYSksZj1PYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT1jLmluZGV4T2YoZSl9KSk7cmV0dXJuIEZlLmZvckVhY2goZix1KSxyfSxMdD17bmFtZToiYXhpb3MiLHZlcnNpb246IjAuMjEuNCIsZGVzY3JpcHRpb246IlByb21pc2UgYmFzZWQgSFRUUCBjbGllbnQgZm9yIHRoZSBicm93c2VyIGFuZCBub2RlLmpzIixtYWluOiJpbmRleC5qcyIsc2NyaXB0czp7dGVzdDoiZ3J1bnQgdGVzdCIsc3RhcnQ6Im5vZGUgLi9zYW5kYm94L3NlcnZlci5qcyIsYnVpbGQ6Ik5PREVfRU5WPXByb2R1Y3Rpb24gZ3J1bnQgYnVpbGQiLHByZXZlcnNpb246Im5wbSB0ZXN0Iix2ZXJzaW9uOiJucG0gcnVuIGJ1aWxkICYmIGdydW50IHZlcnNpb24gJiYgZ2l0IGFkZCAtQSBkaXN0ICYmIGdpdCBhZGQgQ0hBTkdFTE9HLm1kIGJvd2VyLmpzb24gcGFja2FnZS5qc29uIixwb3N0dmVyc2lvbjoiZ2l0IHB1c2ggJiYgZ2l0IHB1c2ggLS10YWdzIixleGFtcGxlczoibm9kZSAuL2V4YW1wbGVzL3NlcnZlci5qcyIsY292ZXJhbGxzOiJjYXQgY292ZXJhZ2UvbGNvdi5pbmZvIHwgLi9ub2RlX21vZHVsZXMvY292ZXJhbGxzL2Jpbi9jb3ZlcmFsbHMuanMiLGZpeDoiZXNsaW50IC0tZml4IGxpYi8qKi8qLmpzIn0scmVwb3NpdG9yeTp7dHlwZToiZ2l0Iix1cmw6Imh0dHBzOi8vZ2l0aHViLmNvbS9heGlvcy9heGlvcy5naXQifSxrZXl3b3JkczpbInhociIsImh0dHAiLCJhamF4IiwicHJvbWlzZSIsIm5vZGUiXSxhdXRob3I6Ik1hdHQgWmFicmlza2llIixsaWNlbnNlOiJNSVQiLGJ1Z3M6e3VybDoiaHR0cHM6Ly9naXRodWIuY29tL2F4aW9zL2F4aW9zL2lzc3VlcyJ9LGhvbWVwYWdlOiJodHRwczovL2F4aW9zLWh0dHAuY29tIixkZXZEZXBlbmRlbmNpZXM6e2NvdmVyYWxsczoiXjMuMC4wIiwiZXM2LXByb21pc2UiOiJeNC4yLjQiLGdydW50OiJeMS4zLjAiLCJncnVudC1iYW5uZXIiOiJeMC42LjAiLCJncnVudC1jbGkiOiJeMS4yLjAiLCJncnVudC1jb250cmliLWNsZWFuIjoiXjEuMS4wIiwiZ3J1bnQtY29udHJpYi13YXRjaCI6Il4xLjAuMCIsImdydW50LWVzbGludCI6Il4yMy4wLjAiLCJncnVudC1rYXJtYSI6Il40LjAuMCIsImdydW50LW1vY2hhLXRlc3QiOiJeMC4xMy4zIiwiZ3J1bnQtdHMiOiJeNi4wLjAtYmV0YS4xOSIsImdydW50LXdlYnBhY2siOiJeNC4wLjIiLCJpc3RhbmJ1bC1pbnN0cnVtZW50ZXItbG9hZGVyIjoiXjEuMC4wIiwiamFzbWluZS1jb3JlIjoiXjIuNC4xIixrYXJtYToiXjYuMy4yIiwia2FybWEtY2hyb21lLWxhdW5jaGVyIjoiXjMuMS4wIiwia2FybWEtZmlyZWZveC1sYXVuY2hlciI6Il4yLjEuMCIsImthcm1hLWphc21pbmUiOiJeMS4xLjEiLCJrYXJtYS1qYXNtaW5lLWFqYXgiOiJeMC4xLjEzIiwia2FybWEtc2FmYXJpLWxhdW5jaGVyIjoiXjEuMC4wIiwia2FybWEtc2F1Y2UtbGF1bmNoZXIiOiJeNC4zLjYiLCJrYXJtYS1zaW5vbiI6Il4xLjAuNSIsImthcm1hLXNvdXJjZW1hcC1sb2FkZXIiOiJeMC4zLjgiLCJrYXJtYS13ZWJwYWNrIjoiXjQuMC4yIiwibG9hZC1ncnVudC10YXNrcyI6Il4zLjUuMiIsbWluaW1pc3Q6Il4xLjIuMCIsbW9jaGE6Il44LjIuMSIsc2lub246Il40LjUuMCIsInRlcnNlci13ZWJwYWNrLXBsdWdpbiI6Il40LjIuMyIsdHlwZXNjcmlwdDoiXjQuMC41IiwidXJsLXNlYXJjaC1wYXJhbXMiOiJeMC4xMC4wIix3ZWJwYWNrOiJeNC40NC4yIiwid2VicGFjay1kZXYtc2VydmVyIjoiXjMuMTEuMCJ9LGJyb3dzZXI6eyIuL2xpYi9hZGFwdGVycy9odHRwLmpzIjoiLi9saWIvYWRhcHRlcnMveGhyLmpzIn0sanNkZWxpdnI6ImRpc3QvYXhpb3MubWluLmpzIix1bnBrZzoiZGlzdC9heGlvcy5taW4uanMiLHR5cGluZ3M6Ii4vaW5kZXguZC50cyIsZGVwZW5kZW5jaWVzOnsiZm9sbG93LXJlZGlyZWN0cyI6Il4xLjE0LjAifSxidW5kbGVzaXplOlt7cGF0aDoiLi9kaXN0L2F4aW9zLm1pbi5qcyIsdGhyZXNob2xkOiI1a0IifV19LGp0PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtqdFtlXT1mdW5jdGlvbihyKXtyZXR1cm4gbihyKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgSHQ9e30scXQ9THQudmVyc2lvbi5zcGxpdCgiLiIpO2Z1bmN0aW9uIEJ0KGUsdCl7Zm9yKHZhciByPXQ/dC5zcGxpdCgiLiIpOnF0LG49ZS5zcGxpdCgiLiIpLG89MDtvPDM7bysrKXtpZihyW29dPm5bb10pcmV0dXJuITA7aWYocltvXTxuW29dKXJldHVybiExfXJldHVybiExfWp0LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7dmFyIG49dCYmQnQodCk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiJbQXhpb3MgdiIrTHQudmVyc2lvbisiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixpLGEpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCBpbiAiK3QpKTtyZXR1cm4gbiYmIUh0W2ldJiYoSHRbaV09ITAsY29uc29sZS53YXJuKG8oaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGksYSl9fTt2YXIgTnQ9e2lzT2xkZXJWZXJzaW9uOkJ0LGFzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LHIpe2lmKCJvYmplY3QiIT09bihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBvPU9iamVjdC5rZXlzKGUpLGk9by5sZW5ndGg7aS0tID4wOyl7dmFyIGE9b1tpXSxzPXRbYV07aWYocyl7dmFyIHU9ZVthXSxjPXZvaWQgMD09PXV8fHModSxhLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIithKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1yKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2EpfX0sdmFsaWRhdG9yczpqdH0sS3Q9TnQudmFsaWRhdG9ycztmdW5jdGlvbiBGdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IHplLHJlc3BvbnNlOm5ldyB6ZX19RnQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlPyhlPWFyZ3VtZW50c1sxXXx8e30pLnVybD1hcmd1bWVudHNbMF06ZT1lfHx7fSwoZT1NdCh0aGlzLmRlZmF1bHRzLGUpKS5tZXRob2Q/ZS5tZXRob2Q9ZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9lLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOmUubWV0aG9kPSJnZXQiO3ZhciB0PWUudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXQmJk50LmFzc2VydE9wdGlvbnModCx7c2lsZW50SlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4sIjEuMC4wIiksZm9yY2VkSlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4sIjEuMC4wIiksY2xhcmlmeVRpbWVvdXRFcnJvcjpLdC50cmFuc2l0aW9uYWwoS3QuYm9vbGVhbiwiMS4wLjAiKX0sITEpO3ZhciByPVtdLG49ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5ydW5XaGVuJiYhMT09PXQucnVuV2hlbihlKXx8KG49biYmdC5zeW5jaHJvbm91cyxyLnVuc2hpZnQodC5mdWxmaWxsZWQsdC5yZWplY3RlZCkpfSkpO3ZhciBvLGk9W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFuKXt2YXIgYT1bVXQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYSxyKSxhPWEuY29uY2F0KGkpLG89UHJvbWlzZS5yZXNvbHZlKGUpO2EubGVuZ3RoOylvPW8udGhlbihhLnNoaWZ0KCksYS5zaGlmdCgpKTtyZXR1cm4gb31mb3IodmFyIHM9ZTtyLmxlbmd0aDspe3ZhciB1PXIuc2hpZnQoKSxjPXIuc2hpZnQoKTt0cnl7cz11KHMpfWNhdGNoKGUpe2MoZSk7YnJlYWt9fXRyeXtvPVV0KHMpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO2kubGVuZ3RoOylvPW8udGhlbihpLnNoaWZ0KCksaS5zaGlmdCgpKTtyZXR1cm4gb30sRnQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1NdCh0aGlzLmRlZmF1bHRzLGUpLFdlKGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LEZlLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtGdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KE10KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSksRmUuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtGdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoTXQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIFl0PUZ0O2Z1bmN0aW9uIFd0KGUpe3RoaXMubWVzc2FnZT1lfVd0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxXdC5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgSnQ9V3Q7ZnVuY3Rpb24genQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7ZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgSnQoZSksdChyLnJlYXNvbikpfSkpfXp0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LHp0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IHp0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgR3Q9enQ7ZnVuY3Rpb24gVnQoZSl7dmFyIHQ9bmV3IFl0KGUpLHI9TWUoWXQucHJvdG90eXBlLnJlcXVlc3QsdCk7cmV0dXJuIEZlLmV4dGVuZChyLFl0LnByb3RvdHlwZSx0KSxGZS5leHRlbmQocix0KSxyfXZhciAkdD1WdChDdCk7JHQuQXhpb3M9WXQsJHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBWdChNdCgkdC5kZWZhdWx0cyxlKSl9LCR0LkNhbmNlbD1KdCwkdC5DYW5jZWxUb2tlbj1HdCwkdC5pc0NhbmNlbD1EdCwkdC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSwkdC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSwkdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT1uKGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfTt2YXIgWHQ9JHQsWnQ9JHQ7WHQuZGVmYXVsdD1adDt2YXIgUXQsZXIsdHI9WHQ7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gbnIoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIG5yKGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksYT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBucihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIG9yKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9vcihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2IoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOm9yKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGFyKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPU8oZSk7aWYodCl7dmFyIG89Tyh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLG8pfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gUCh0aGlzLHIpfX1mdW5jdGlvbiBzcihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0oZXI9UXR8fChRdD17fSkpLmZvcm1Qb3N0PSJmb3JtX3Bvc3QiLGVyLnF1ZXJ5PSJxdWVyeSI7dmFyIHVyOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0odXJ8fCh1cj17fSkpO3ZhciBjcj0icmVmcmVzaF90b2tlbl90aW1lciIsZnI9ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoZSxuLG8saSxhLHMpe3ZhciB1O3JldHVybiBfKHRoaXMsciksKHU9dC5jYWxsKHRoaXMsbnVsbCE9aT9pOm51bGw9PXM/dm9pZCAwOnMubWVzc2FnZSkpLm5hbWU9dS5jb25zdHJ1Y3Rvci5uYW1lLHUuY29kZT1lLHUuZmlsZT1uLHUubWV0aG9kPW8sdS5kZXNjcmlwdGlvbj1hLHUuZXJyb3I9cyxPYmplY3Quc2V0UHJvdG90eXBlT2YoRSh1KSwodGhpcyBpbnN0YW5jZW9mIHI/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSksdX1yZXR1cm4gcn0oTChFcnJvcikpLGhyPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKGUsbixvLGksYSxzLHUsYyxmKXt2YXIgaDtyZXR1cm4gXyh0aGlzLHIpLChoPXQuY2FsbCh0aGlzLGUsbixvLGksYSkpLm5hbWU9aC5jb25zdHJ1Y3Rvci5uYW1lLGguY29kZT1lLGguZmlsZT1uLGgubWV0aG9kPW8saC5kZXNjcmlwdGlvbj1hLGgubmV0d29ya0Vycm9yQ29kZT1zLGgubmV0d29ya0Vycm9yTWVzc2FnZT11LGguc3RhdHVzPWMsaC5uZXR3b3JrRXJyb3JEYXRhPWYsaH1yZXR1cm4gcn0oZnIpLGxyPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT1qP2o6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gcHIoZSx0LHIpe3JldHVybiBlKHI9e3BhdGg6dCxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KG51bGw9PXQmJnIucGF0aCl9fSxyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgZHI9dm9pZCAwIT09aj9qOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSx2cj1bXSxncj1bXSx5cj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxtcj0hMTtmdW5jdGlvbiB3cigpe21yPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl2clt0XT1lW3RdLGdyW2UuY2hhckNvZGVBdCh0KV09dDtnclsiLSIuY2hhckNvZGVBdCgwKV09NjIsZ3JbIl8iLmNoYXJDb2RlQXQoMCldPTYzfWZ1bmN0aW9uIGJyKGUsdCxyKXtmb3IodmFyIG4sbyxpPVtdLGE9dDthPHI7YSs9MyluPShlW2FdPDwxNikrKGVbYSsxXTw8OCkrZVthKzJdLGkucHVzaCh2clsobz1uKT4+MTgmNjNdK3ZyW28+PjEyJjYzXSt2cltvPj42JjYzXSt2cls2MyZvXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24ga3IoZSl7dmFyIHQ7bXJ8fHdyKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLG89IiIsaT1bXSxhPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9YSlpLnB1c2goYnIoZSxzLHMrYT51P3U6cythKSk7cmV0dXJuIDE9PT1uPyh0PWVbci0xXSxvKz12clt0Pj4yXSxvKz12clt0PDw0JjYzXSxvKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLG8rPXZyW3Q+PjEwXSxvKz12clt0Pj40JjYzXSxvKz12clt0PDwyJjYzXSxvKz0iPSIpLGkucHVzaChvKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIHhyKGUsdCxyLG4sbyl7dmFyIGksYSxzPTgqby1uLTEsdT0oMTw8cyktMSxjPXU+PjEsZj0tNyxoPXI/by0xOjAsbD1yPy0xOjEscD1lW3QraF07Zm9yKGgrPWwsaT1wJigxPDwtZiktMSxwPj49LWYsZis9cztmPjA7aT0yNTYqaStlW3QraF0saCs9bCxmLT04KTtmb3IoYT1pJigxPDwtZiktMSxpPj49LWYsZis9bjtmPjA7YT0yNTYqYStlW3QraF0saCs9bCxmLT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT11KXJldHVybiBhP05hTjoxLzAqKHA/LTE6MSk7YSs9TWF0aC5wb3coMixuKSxpLT1jfXJldHVybihwPy0xOjEpKmEqTWF0aC5wb3coMixpLW4pfWZ1bmN0aW9uIF9yKGUsdCxyLG4sbyxpKXt2YXIgYSxzLHUsYz04Kmktby0xLGY9KDE8PGMpLTEsaD1mPj4xLGw9MjM9PT1vP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDppLTEsZD1uPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLGE9Zik6KGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoodT1NYXRoLnBvdygyLC1hKSk8MSYmKGEtLSx1Kj0yKSwodCs9YStoPj0xP2wvdTpsKk1hdGgucG93KDIsMS1oKSkqdT49MiYmKGErKyx1Lz0yKSxhK2g+PWY/KHM9MCxhPWYpOmEraD49MT8ocz0odCp1LTEpKk1hdGgucG93KDIsbyksYSs9aCk6KHM9dCpNYXRoLnBvdygyLGgtMSkqTWF0aC5wb3coMixvKSxhPTApKTtvPj04O2VbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixvLT04KTtmb3IoYT1hPDxvfHMsYys9bztjPjA7ZVtyK3BdPTI1NSZhLHArPWQsYS89MjU2LGMtPTgpO2VbcitwLWRdfD0xMjgqdn12YXIgU3I9e30udG9TdHJpbmcsRXI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09U3IuY2FsbChlKX07UHIuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDA9PT1kci5UWVBFRF9BUlJBWV9TVVBQT1JUfHxkci5UWVBFRF9BUlJBWV9TVVBQT1JUO3ZhciBBcj1UcigpO2Z1bmN0aW9uIFRyKCl7cmV0dXJuIFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIFJyKGUsdCl7aWYoVHIoKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189UHIucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IFByKHQpKSxlLmxlbmd0aD10KSxlfWZ1bmN0aW9uIFByKGUsdCxyKXtpZighKFByLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBQcikpcmV0dXJuIG5ldyBQcihlLHQscik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBEcih0aGlzLGUpfXJldHVybiBDcih0aGlzLGUsdCxyKX1mdW5jdGlvbiBDcihlLHQscixuKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpO3JldHVybiB0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1Qci5wcm90b3R5cGU6ZT1JcihlLHQpLGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7aWYoInN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4IiksIVByLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHxMcih0LHIpLG89KGU9UnIoZSxuKSkud3JpdGUodCxyKTtyZXR1cm4gbyE9PW4mJihlPWUuc2xpY2UoMCxvKSksZX0oZSx0LHIpOmZ1bmN0aW9uKGUsdCl7aWYoTXIodCkpe3ZhciByPTB8VXIodC5sZW5ndGgpO3JldHVybiAwPT09KGU9UnIoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uP1JyKGUsMCk6SXIoZSx0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmRXIodC5kYXRhKSlyZXR1cm4gSXIoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX0oZSx0KX1mdW5jdGlvbiBPcihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIERyKGUsdCl7aWYoT3IodCksZT1ScihlLHQ8MD8wOjB8VXIodCkpLCFQci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIElyKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8VXIodC5sZW5ndGgpO2U9UnIoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIFVyKGUpe2lmKGU+PVRyKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK1RyKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIE1yKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBMcihlLHQpe2lmKE1yKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBjbihlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIGZuKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIGNuKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGpyKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIFhyKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBHcih0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIFZyKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiAkcih0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiB6cih0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBacih0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBIcihlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIHFyKGUsdCxyLG4sbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9bz8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighbylyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1Qci5mcm9tKHQsbikpLE1yKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6QnIoZSx0LHIsbixvKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9vP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6QnIoZSxbdF0scixuLG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIEJyKGUsdCxyLG4sbyl7dmFyIGksYT0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2E9MixzLz0yLHUvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1hP2VbdF06ZS5yZWFkVUludDE2QkUodCphKX1pZihvKXt2YXIgZj0tMTtmb3IoaT1yO2k8cztpKyspaWYoYyhlLGkpPT09Yyh0LC0xPT09Zj8wOmktZikpe2lmKC0xPT09ZiYmKGY9aSksaS1mKzE9PT11KXJldHVybiBmKmF9ZWxzZS0xIT09ZiYmKGktPWktZiksZj0tMX1lbHNlIGZvcihyK3U+cyYmKHI9cy11KSxpPXI7aT49MDtpLS0pe2Zvcih2YXIgaD0hMCxsPTA7bDx1O2wrKylpZihjKGUsaStsKSE9PWModCxsKSl7aD0hMTticmVha31pZihoKXJldHVybiBpfXJldHVybi0xfWZ1bmN0aW9uIE5yKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBvPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPm8mJihuPW8pOm49bzt2YXIgaT10Lmxlbmd0aDtpZihpJTIhPTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5pLzImJihuPWkvMik7Zm9yKHZhciBhPTA7YTxuOysrYSl7dmFyIHM9cGFyc2VJbnQodC5zdWJzdHIoMiphLDIpLDE2KTtpZihpc05hTihzKSlyZXR1cm4gYTtlW3IrYV09c31yZXR1cm4gYX1mdW5jdGlvbiBLcihlLHQscixuKXtyZXR1cm4gaG4oY24odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gRnIoZSx0LHIsbil7cmV0dXJuIGhuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQocikpO3JldHVybiB0fSh0KSxlLHIsbil9ZnVuY3Rpb24gWXIoZSx0LHIsbil7cmV0dXJuIEZyKGUsdCxyLG4pfWZ1bmN0aW9uIFdyKGUsdCxyLG4pe3JldHVybiBobihmbih0KSxlLHIsbil9ZnVuY3Rpb24gSnIoZSx0LHIsbil7cmV0dXJuIGhuKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sbyxpPVtdLGE9MDthPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK2Epbj0ocj1lLmNoYXJDb2RlQXQoYSkpPj44LG89ciUyNTYsaS5wdXNoKG8pLGkucHVzaChuKTtyZXR1cm4gaX0odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24genIoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP2tyKGUpOmtyKGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gR3IoZSx0LHIpe3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBuPVtdLG89dDtvPHI7KXt2YXIgaSxhLHMsdSxjPWVbb10sZj1udWxsLGg9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihvK2g8PXIpc3dpdGNoKGgpe2Nhc2UgMTpjPDEyOCYmKGY9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoaT1lW28rMV0pKSYmKHU9KDMxJmMpPDw2fDYzJmkpPjEyNyYmKGY9dSk7YnJlYWs7Y2FzZSAzOmk9ZVtvKzFdLGE9ZVtvKzJdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJmEpJiYodT0oMTUmYyk8PDEyfCg2MyZpKTw8Nnw2MyZhKT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihmPXUpO2JyZWFrO2Nhc2UgNDppPWVbbysxXSxhPWVbbysyXSxzPWVbbyszXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZhKSYmMTI4PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZpKTw8MTJ8KDYzJmEpPDw2fDYzJnMpPjY1NTM1JiZ1PDExMTQxMTImJihmPXUpfW51bGw9PT1mPyhmPTY1NTMzLGg9MSk6Zj42NTUzNSYmKGYtPTY1NTM2LG4ucHVzaChmPj4+MTAmMTAyM3w1NTI5NiksZj01NjMyMHwxMDIzJmYpLG4ucHVzaChmKSxvKz1ofXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD00MDk2KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTtmb3IodmFyIHI9IiIsbj0wO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPTQwOTYpKTtyZXR1cm4gcn0obil9ZnVuY3Rpb24gVnIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW29dKTtyZXR1cm4gbn1mdW5jdGlvbiAkcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG89dDtvPHI7KytvKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gWHIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgbz0iIixpPXQ7aTxyOysraSlvKz11bihlW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBacihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxvPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpbys9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBvfWZ1bmN0aW9uIFFyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBlbihlLHQscixuLG8saSl7aWYoIU1yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0Pm98fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB0bihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBvPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO288aTsrK28pZVtyK29dPSh0JjI1NTw8OCoobj9vOjEtbykpPj4+OCoobj9vOjEtbyl9ZnVuY3Rpb24gcm4oZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBvPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO288aTsrK28pZVtyK29dPXQ+Pj44KihuP286My1vKSYyNTV9ZnVuY3Rpb24gbm4oZSx0LHIsbixvLGkpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBvbihlLHQscixuLG8pe3JldHVybiBvfHxubihlLDAsciw0KSxfcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBhbihlLHQscixuLG8pe3JldHVybiBvfHxubihlLDAsciw4KSxfcihlLHQscixuLDUyLDgpLHIrOH1Qci5wb29sU2l6ZT04MTkyLFByLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1Qci5wcm90b3R5cGUsZX0sUHIuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIENyKG51bGwsZSx0LHIpfSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoUHIucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxQci5fX3Byb3RvX189VWludDhBcnJheSksUHIuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gT3IodCksdDw9MD9ScihlLHQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBuP1JyKGUsdCkuZmlsbChyLG4pOlJyKGUsdCkuZmlsbChyKTpScihlLHQpfShudWxsLGUsdCxyKX0sUHIuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIERyKG51bGwsZSl9LFByLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gRHIobnVsbCxlKX0sUHIuaXNCdWZmZXI9bG4sUHIuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFNcihlKXx8IU1yKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxvPTAsaT1NYXRoLm1pbihyLG4pO288aTsrK28paWYoZVtvXSE9PXRbb10pe3I9ZVtvXSxuPXRbb107YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxQci5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxQci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighRXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gUHIuYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09dClmb3IodD0wLHI9MDtyPGUubGVuZ3RoOysrcil0Kz1lW3JdLmxlbmd0aDt2YXIgbj1Qci5hbGxvY1Vuc2FmZSh0KSxvPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighTXIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLG8pLG8rPWkubGVuZ3RofXJldHVybiBufSxQci5ieXRlTGVuZ3RoPUxyLFByLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsUHIucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilIcih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sUHIucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NClIcih0aGlzLHQsdCszKSxIcih0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxQci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KUhyKHRoaXMsdCx0KzcpLEhyKHRoaXMsdCsxLHQrNiksSHIodGhpcyx0KzIsdCs1KSxIcih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxQci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9Hcih0aGlzLDAsZSk6anIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxQci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFNcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09UHIuY29tcGFyZSh0aGlzLGUpfSxQci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxQci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQscixuLG8pe2lmKCFNcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1vJiYobz10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fG8+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PW8mJnQ+PXIpcmV0dXJuIDA7aWYobj49bylyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgaT0obz4+Pj0wKS0obj4+Pj0wKSxhPShyPj4+PTApLSh0Pj4+PTApLHM9TWF0aC5taW4oaSxhKSx1PXRoaXMuc2xpY2UobixvKSxjPWUuc2xpY2UodCxyKSxmPTA7ZjxzOysrZilpZih1W2ZdIT09Y1tmXSl7aT11W2ZdLGE9Y1tmXTticmVha31yZXR1cm4gaTxhPy0xOmE8aT8xOjB9LFByLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LHIpfSxQci5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHFyKHRoaXMsZSx0LHIsITApfSxQci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBxcih0aGlzLGUsdCxyLCExKX0sUHIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBvPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+bykmJihyPW8pLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBLcih0aGlzLGUsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gRnIodGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gWXIodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBXcih0aGlzLGUsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEpyKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LFByLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19LFByLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5sZW5ndGg7aWYoKGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPVByLnByb3RvdHlwZTtlbHNle3ZhciBvPXQtZTtyPW5ldyBQcihvLHZvaWQgMCk7Zm9yKHZhciBpPTA7aTxvOysraSlyW2ldPXRoaXNbaStlXX1yZXR1cm4gcn0sUHIucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbn0sUHIucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxvPTE7dD4wJiYobyo9MjU2KTspbis9dGhpc1tlKy0tdF0qbztyZXR1cm4gbn0sUHIucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LFByLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0sUHIucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxQci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0sUHIucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LFByLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbj49KG8qPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LFByLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10LG89MSxpPXRoaXNbZSstLW5dO24+MCYmKG8qPTI1Nik7KWkrPXRoaXNbZSstLW5dKm87cmV0dXJuIGk+PShvKj0xMjgpJiYoaS09TWF0aC5wb3coMiw4KnQpKSxpfSxQci5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sUHIucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8UXIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sUHIucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8UXIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sUHIucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxQci5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LFByLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDQsdGhpcy5sZW5ndGgpLHhyKHRoaXMsZSwhMCwyMyw0KX0sUHIucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCExLDIzLDQpfSxQci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsOCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCEwLDUyLDgpfSxQci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsOCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCExLDUyLDgpfSxQci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7ZT0rZSx0fD0wLHJ8PTAsbnx8ZW4odGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgbz0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LFByLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtlPStlLHR8PTAscnw9MCxufHxlbih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPXItMSxpPTE7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihpKj0yNTYpOyl0aGlzW3Qrb109ZS9pJjI1NTtyZXR1cm4gdCtyfSxQci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCwxLDI1NSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPTI1NSZlLHQrMX0sUHIucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiw2NTUzNSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6dG4odGhpcyxlLHQsITApLHQrMn0sUHIucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiw2NTUzNSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6dG4odGhpcyxlLHQsITEpLHQrMn0sUHIucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6cm4odGhpcyxlLHQsITApLHQrNH0sUHIucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6cm4odGhpcyxlLHQsITEpLHQrNH0sUHIucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtlbih0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9MCxhPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYoYSo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpLTFdJiYocz0xKSx0aGlzW3QraV09KGUvYT4+MCktcyYyNTU7cmV0dXJuIHQrcn0sUHIucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtlbih0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxQci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fGVuKHRoaXMsZSx0LDEsMTI3LC0xMjgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LFByLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTp0bih0aGlzLGUsdCwhMCksdCsyfSxQci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fGVuKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6dG4odGhpcyxlLHQsITEpLHQrMn0sUHIucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6cm4odGhpcyxlLHQsITApLHQrNH0sUHIucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6cm4odGhpcyxlLHQsITEpLHQrNH0sUHIucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIG9uKHRoaXMsZSx0LCEwLHIpfSxQci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb24odGhpcyxlLHQsITEscil9LFByLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYW4odGhpcyxlLHQsITAscil9LFByLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYW4odGhpcyxlLHQsITEscil9LFByLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIG8saT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihvPWktMTtvPj0wOy0tbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgaWYoaTwxZTN8fCFQci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihvPTA7bzxpOysrbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscitpKSx0KTtyZXR1cm4gaX0sUHIucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQ/KG49dCx0PTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIG89ZS5jaGFyQ29kZUF0KDApO288MjU2JiYoZT1vKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIVByLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBhPU1yKGUpP2U6Y24obmV3IFByKGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3IoaT0wO2k8ci10OysraSl0aGlzW2krdF09YVtpJXNdfXJldHVybiB0aGlzfTt2YXIgc249L1teK1wvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGNuKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLG89bnVsbCxpPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighbyl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1vPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLG89cjtjb250aW51ZX1yPTY1NTM2KyhvLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIG8mJih0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtpZihvPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBmbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQscixuLG8saSxhO21yfHx3cigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxhPW5ldyB5cigzKnMvNC1pKSxuPWk+MD9zLTQ6czt2YXIgdT0wO2Zvcih0PTAscj0wO3Q8bjt0Kz00LHIrPTMpbz1ncltlLmNoYXJDb2RlQXQodCldPDwxOHxncltlLmNoYXJDb2RlQXQodCsxKV08PDEyfGdyW2UuY2hhckNvZGVBdCh0KzIpXTw8NnxncltlLmNoYXJDb2RlQXQodCszKV0sYVt1KytdPW8+PjE2JjI1NSxhW3UrK109bz4+OCYyNTUsYVt1KytdPTI1NSZvO3JldHVybiAyPT09aT8obz1ncltlLmNoYXJDb2RlQXQodCldPDwyfGdyW2UuY2hhckNvZGVBdCh0KzEpXT4+NCxhW3UrK109MjU1Jm8pOjE9PT1pJiYobz1ncltlLmNoYXJDb2RlQXQodCldPDwxMHxncltlLmNoYXJDb2RlQXQodCsxKV08PDR8Z3JbZS5jaGFyQ29kZUF0KHQrMildPj4yLGFbdSsrXT1vPj44JjI1NSxhW3UrK109MjU1Jm8pLGF9KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2Uoc24sIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIGhuKGUsdCxyLG4pe2Zvcih2YXIgbz0wO288biYmIShvK3I+PXQubGVuZ3RofHxvPj1lLmxlbmd0aCk7KytvKXRbbytyXT1lW29dO3JldHVybiBvfWZ1bmN0aW9uIGxuKGUpe3JldHVybiBudWxsIT1lJiYoISFlLl9pc0J1ZmZlcnx8cG4oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRGbG9hdExFJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zbGljZSYmcG4oZS5zbGljZSgwLDApKX0oZSkpfWZ1bmN0aW9uIHBuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIGRuPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJ1ZmZlcjpQcixJTlNQRUNUX01BWF9CWVRFUzo1MCxTbG93QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxQci5hbGxvYygrZSl9LGlzQnVmZmVyOmxuLGtNYXhMZW5ndGg6QXJ9KSx2bj1wcigoZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9dCU0O2lmKCFyKXJldHVybiBlO3ZhciBuPXQsbz00LXIsaT10K28sYT1Qci5hbGxvYyhpKTtmb3IoYS53cml0ZShlKTtvLS07KWEud3JpdGUoIj0iLG4rKyk7cmV0dXJuIGEudG9TdHJpbmcoKX19KSksZ249cHIoKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFByLmlzQnVmZmVyKGUpP28oZS50b1N0cmluZygiYmFzZTY0IikpOm8oUHIuZnJvbShlLHQpLnRvU3RyaW5nKCJiYXNlNjQiKSl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksdm4uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC89L2csIiIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXI7aS5lbmNvZGU9cixpLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFByLmZyb20obihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGkudG9CYXNlNjQ9bixpLmZyb21CYXNlNjQ9byxpLnRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBQci5mcm9tKG4oZSksImJhc2U2NCIpfSx0LmRlZmF1bHQ9aX0pKSx5bj1wcigoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWduLmRlZmF1bHQsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSkpLG1uPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9KHByKChmdW5jdGlvbihlKXshZnVuY3Rpb24odCxyKXt2YXIgbj17fTshZnVuY3Rpb24oZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGlnZXN0TGVuZ3RoPTMyLGUuYmxvY2tTaXplPTY0O3ZhciB0PW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7ZnVuY3Rpb24gcihlLHIsbixvLGkpe2Zvcih2YXIgYSxzLHUsYyxmLGgsbCxwLGQsdixnLHksbTtpPj02NDspe2ZvcihhPXJbMF0scz1yWzFdLHU9clsyXSxjPXJbM10sZj1yWzRdLGg9cls1XSxsPXJbNl0scD1yWzddLHY9MDt2PDE2O3YrKylnPW8rNCp2LGVbdl09KDI1NSZuW2ddKTw8MjR8KDI1NSZuW2crMV0pPDwxNnwoMjU1Jm5bZysyXSk8PDh8MjU1Jm5bZyszXTtmb3Iodj0xNjt2PDY0O3YrKyl5PSgoZD1lW3YtMl0pPj4+MTd8ZDw8MTUpXihkPj4+MTl8ZDw8MTMpXmQ+Pj4xMCxtPSgoZD1lW3YtMTVdKT4+Pjd8ZDw8MjUpXihkPj4+MTh8ZDw8MTQpXmQ+Pj4zLGVbdl09KHkrZVt2LTddfDApKyhtK2Vbdi0xNl18MCk7Zm9yKHY9MDt2PDY0O3YrKyl5PSgoKGY+Pj42fGY8PDI2KV4oZj4+PjExfGY8PDIxKV4oZj4+PjI1fGY8PDcpKSsoZiZoXn5mJmwpfDApKyhwKyh0W3ZdK2Vbdl18MCl8MCl8MCxtPSgoYT4+PjJ8YTw8MzApXihhPj4+MTN8YTw8MTkpXihhPj4+MjJ8YTw8MTApKSsoYSZzXmEmdV5zJnUpfDAscD1sLGw9aCxoPWYsZj1jK3l8MCxjPXUsdT1zLHM9YSxhPXkrbXwwO3JbMF0rPWEsclsxXSs9cyxyWzJdKz11LHJbM10rPWMscls0XSs9ZixyWzVdKz1oLHJbNl0rPWwscls3XSs9cCxvKz02NCxpLT02NH1yZXR1cm4gb312YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpZ2VzdExlbmd0aD1lLmRpZ2VzdExlbmd0aCx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZSx0aGlzLnN0YXRlPW5ldyBJbnQzMkFycmF5KDgpLHRoaXMudGVtcD1uZXcgSW50MzJBcnJheSg2NCksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTI4KSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXMucmVzZXQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZVswXT0xNzc5MDMzNzAzLHRoaXMuc3RhdGVbMV09MzE0NDEzNDI3Nyx0aGlzLnN0YXRlWzJdPTEwMTM5MDQyNDIsdGhpcy5zdGF0ZVszXT0yNzczNDgwNzYyLHRoaXMuc3RhdGVbNF09MTM1OTg5MzExOSx0aGlzLnN0YXRlWzVdPTI2MDA4MjI5MjQsdGhpcy5zdGF0ZVs2XT01Mjg3MzQ2MzUsdGhpcy5zdGF0ZVs3XT0xNTQxNDU5MjI1LHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpc30sdC5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuYnVmZmVyLmxlbmd0aDtlKyspdGhpcy5idWZmZXJbZV09MDtmb3IoZT0wO2U8dGhpcy50ZW1wLmxlbmd0aDtlKyspdGhpcy50ZW1wW2VdPTA7dGhpcy5yZXNldCgpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD1lLmxlbmd0aCksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoIlNIQTI1NjogY2FuJ3QgdXBkYXRlIGJlY2F1c2UgaGFzaCB3YXMgZmluaXNoZWQuIik7dmFyIG49MDtpZih0aGlzLmJ5dGVzSGFzaGVkKz10LHRoaXMuYnVmZmVyTGVuZ3RoPjApe2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8NjQmJnQ+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTs2ND09PXRoaXMuYnVmZmVyTGVuZ3RoJiYocih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLDY0KSx0aGlzLmJ1ZmZlckxlbmd0aD0wKX1mb3IodD49NjQmJihuPXIodGhpcy50ZW1wLHRoaXMuc3RhdGUsZSxuLHQpLHQlPTY0KTt0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtpZighdGhpcy5maW5pc2hlZCl7dmFyIHQ9dGhpcy5ieXRlc0hhc2hlZCxuPXRoaXMuYnVmZmVyTGVuZ3RoLG89dC81MzY4NzA5MTJ8MCxpPXQ8PDMsYT10JTY0PDU2PzY0OjEyODt0aGlzLmJ1ZmZlcltuXT0xMjg7Zm9yKHZhciBzPW4rMTtzPGEtODtzKyspdGhpcy5idWZmZXJbc109MDt0aGlzLmJ1ZmZlclthLThdPW8+Pj4yNCYyNTUsdGhpcy5idWZmZXJbYS03XT1vPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2EtNl09bz4+PjgmMjU1LHRoaXMuYnVmZmVyW2EtNV09bz4+PjAmMjU1LHRoaXMuYnVmZmVyW2EtNF09aT4+PjI0JjI1NSx0aGlzLmJ1ZmZlclthLTNdPWk+Pj4xNiYyNTUsdGhpcy5idWZmZXJbYS0yXT1pPj4+OCYyNTUsdGhpcy5idWZmZXJbYS0xXT1pPj4+MCYyNTUscih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLGEpLHRoaXMuZmluaXNoZWQ9ITB9Zm9yKHM9MDtzPDg7cysrKWVbNCpzKzBdPXRoaXMuc3RhdGVbc10+Pj4yNCYyNTUsZVs0KnMrMV09dGhpcy5zdGF0ZVtzXT4+PjE2JjI1NSxlWzQqcysyXT10aGlzLnN0YXRlW3NdPj4+OCYyNTUsZVs0KnMrM109dGhpcy5zdGF0ZVtzXT4+PjAmMjU1O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LHQucHJvdG90eXBlLl9zYXZlU3RhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLnN0YXRlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0YXRlW3RdfSx0LnByb3RvdHlwZS5fcmVzdG9yZVN0YXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx0aGlzLnN0YXRlLmxlbmd0aDtyKyspdGhpcy5zdGF0ZVtyXT1lW3JdO3RoaXMuYnl0ZXNIYXNoZWQ9dCx0aGlzLmZpbmlzaGVkPSExLHRoaXMuYnVmZmVyTGVuZ3RoPTB9LHR9KCk7ZS5IYXNoPW47dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuaW5uZXI9bmV3IG4sdGhpcy5vdXRlcj1uZXcgbix0aGlzLmJsb2NrU2l6ZT10aGlzLmlubmVyLmJsb2NrU2l6ZSx0aGlzLmRpZ2VzdExlbmd0aD10aGlzLmlubmVyLmRpZ2VzdExlbmd0aDt2YXIgdD1uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk7aWYoZS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpKG5ldyBuKS51cGRhdGUoZSkuZmluaXNoKHQpLmNsZWFuKCk7ZWxzZSBmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj01NDtmb3IodGhpcy5pbm5lci51cGRhdGUodCkscj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTEwNjtmb3IodGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSkscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09MH1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5lci5fcmVzdG9yZVN0YXRlKHRoaXMuaXN0YXRlLHRoaXMuaW5uZXIuYmxvY2tTaXplKSx0aGlzLm91dGVyLl9yZXN0b3JlU3RhdGUodGhpcy5vc3RhdGUsdGhpcy5vdXRlci5ibG9ja1NpemUpLHRoaXN9LGUucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmlzdGF0ZS5sZW5ndGg7ZSsrKXRoaXMub3N0YXRlW2VdPXRoaXMuaXN0YXRlW2VdPTA7dGhpcy5pbm5lci5jbGVhbigpLHRoaXMub3V0ZXIuY2xlYW4oKX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlKSx0aGlzfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3V0ZXIuZmluaXNoZWQ/dGhpcy5vdXRlci5maW5pc2goZSk6KHRoaXMuaW5uZXIuZmluaXNoKGUpLHRoaXMub3V0ZXIudXBkYXRlKGUsdGhpcy5kaWdlc3RMZW5ndGgpLmZpbmlzaChlKSksdGhpc30sZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSxlfSgpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9KG5ldyBuKS51cGRhdGUoZSkscj10LmRpZ2VzdCgpO3JldHVybiB0LmNsZWFuKCkscn1mdW5jdGlvbiBhKGUsdCl7dmFyIHI9bmV3IG8oZSkudXBkYXRlKHQpLG49ci5kaWdlc3QoKTtyZXR1cm4gci5jbGVhbigpLG59ZnVuY3Rpb24gcyhlLHQscixuKXt2YXIgbz1uWzBdO2lmKDA9PT1vKXRocm93IG5ldyBFcnJvcigiaGtkZjogY2Fubm90IGV4cGFuZCBtb3JlIik7dC5yZXNldCgpLG8+MSYmdC51cGRhdGUoZSksciYmdC51cGRhdGUociksdC51cGRhdGUobiksdC5maW5pc2goZSksblswXSsrfWUuSE1BQz1vLGUuaGFzaD1pLGUuZGVmYXVsdD1pLGUuaG1hYz1hO3ZhciB1PW5ldyBVaW50OEFycmF5KGUuZGlnZXN0TGVuZ3RoKTtlLmhrZGY9ZnVuY3Rpb24oZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9dSksdm9pZCAwPT09biYmKG49MzIpO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShbMV0pLGM9YSh0LGUpLGY9bmV3IG8oYyksaD1uZXcgVWludDhBcnJheShmLmRpZ2VzdExlbmd0aCksbD1oLmxlbmd0aCxwPW5ldyBVaW50OEFycmF5KG4pLGQ9MDtkPG47ZCsrKWw9PT1oLmxlbmd0aCYmKHMoaCxmLHIsaSksbD0wKSxwW2RdPWhbbCsrXTtyZXR1cm4gZi5jbGVhbigpLGguZmlsbCgwKSxpLmZpbGwoMCkscH0sZS5wYmtkZjI9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPW5ldyBvKGUpLGE9aS5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KGEpLGM9bmV3IFVpbnQ4QXJyYXkoYSksZj1uZXcgVWludDhBcnJheShuKSxoPTA7aCphPG47aCsrKXt2YXIgbD1oKzE7c1swXT1sPj4+MjQmMjU1LHNbMV09bD4+PjE2JjI1NSxzWzJdPWw+Pj44JjI1NSxzWzNdPWw+Pj4wJjI1NSxpLnJlc2V0KCksaS51cGRhdGUodCksaS51cGRhdGUocyksaS5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxhO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7aS5yZXNldCgpLGkudXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPGE7ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPGEmJmgqYStwPG47cCsrKWZbaCphK3BdPXVbcF19Zm9yKGg9MDtoPGE7aCsrKXVbaF09Y1toXT0wO2ZvcihoPTA7aDw0O2grKylzW2hdPTA7cmV0dXJuIGkuY2xlYW4oKSxmfX0obik7dmFyIG89bi5kZWZhdWx0O2Zvcih2YXIgaSBpbiBuKW9baV09bltpXTtlLmV4cG9ydHM9b30oKX0pKSk7ZnVuY3Rpb24gd24oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBibigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGtuPXduLHhuPWJuO2Z1bmN0aW9uIF9uKGUpe2lmKGtuPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChrbj09PXdufHwha24pJiZzZXRUaW1lb3V0KXJldHVybiBrbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGtuKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBrbi5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4ga24uY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgZHIuc2V0VGltZW91dCYmKGtuPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBkci5jbGVhclRpbWVvdXQmJih4bj1jbGVhclRpbWVvdXQpO3ZhciBTbixFbj1bXSxBbj0hMSxUbj0tMTtmdW5jdGlvbiBSbigpe0FuJiZTbiYmKEFuPSExLFNuLmxlbmd0aD9Fbj1Tbi5jb25jYXQoRW4pOlRuPS0xLEVuLmxlbmd0aCYmUG4oKSl9ZnVuY3Rpb24gUG4oKXtpZighQW4pe3ZhciBlPV9uKFJuKTtBbj0hMDtmb3IodmFyIHQ9RW4ubGVuZ3RoO3Q7KXtmb3IoU249RW4sRW49W107KytUbjx0OylTbiYmU25bVG5dLnJ1bigpO1RuPS0xLHQ9RW4ubGVuZ3RofVNuPW51bGwsQW49ITEsZnVuY3Rpb24oZSl7aWYoeG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigoeG49PT1ibnx8IXhuKSYmY2xlYXJUaW1lb3V0KXJldHVybiB4bj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXt4bihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHhuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4geG4uY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBDbihlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fUNuLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTt2YXIgT249ZHIucGVyZm9ybWFuY2V8fHt9LERuPShPbi5ub3d8fE9uLm1vek5vd3x8T24ubXNOb3d8fE9uLm9Ob3d8fE9uLndlYmtpdE5vdyxuZXcgRGF0ZSxmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO0VuLnB1c2gobmV3IENuKGUsdCkpLDEhPT1Fbi5sZW5ndGh8fEFufHxfbihQbil9KSxJbj1mdW5jdGlvbihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fShkbiksVW49cHIoKGZ1bmN0aW9uKGUsdCl7dmFyIHI9SW4uQnVmZmVyO2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuIHIoZSx0LG4pfXIuZnJvbSYmci5hbGxvYyYmci5hbGxvY1Vuc2FmZSYmci5hbGxvY1Vuc2FmZVNsb3c/ZS5leHBvcnRzPUluOihuKEluLHQpLHQuQnVmZmVyPW8pLG4ocixvKSxvLmZyb209ZnVuY3Rpb24oZSx0LG4pe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiByKGUsdCxuKX0sby5hbGxvYz1mdW5jdGlvbihlLHQsbil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgbz1yKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygbj9vLmZpbGwodCxuKTpvLmZpbGwodCk6by5maWxsKDApLG99LG8uYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gcihlKX0sby5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gSW4uU2xvd0J1ZmZlcihlKX19KSksTW49cHIoKGZ1bmN0aW9uKGUpe3ZhciB0PTY1NTM2LHI9VW4uQnVmZmVyLG49bHIuY3J5cHRvfHxsci5tc0NyeXB0bztuJiZuLmdldFJhbmRvbVZhbHVlcz9lLmV4cG9ydHM9ZnVuY3Rpb24oZSxvKXtpZihlPjQyOTQ5NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgaT1yLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPnQpZm9yKHZhciBhPTA7YTxlO2ErPXQpbi5nZXRSYW5kb21WYWx1ZXMoaS5zbGljZShhLGErdCkpO2Vsc2Ugbi5nZXRSYW5kb21WYWx1ZXMoaSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8/RG4oKGZ1bmN0aW9uKCl7byhudWxsLGkpfSkpOml9OmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19KSksTG49bmV3IFRleHRFbmNvZGVyLGpuPW5ldyBUZXh0RGVjb2RlcixIbj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpcztpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYpcmV0dXJuIHNlbGY7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvdzt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBsb2NhdGUgZ2xvYmFsIG9iamVjdCIpfSgpLHFuPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodD1qbi5kZWNvZGUodCkpLHQ9dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKS5yZXBsYWNlKC9ccy9nLCIiKSxuZXcgVWludDhBcnJheShIbi5hdG9iKHQpLnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCl9KSkpfSxCbj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gXyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShFKG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHJ9KEwoRXJyb3IpKSxObj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcihlKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIF8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1vLG4ucmVhc29uPWksbn1yZXR1cm4gcn0oQm4pLEtuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiByfShCbiksRm49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIixlfXJldHVybiByfShCbiksWW49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHJ9KEJuKSxXbj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBfKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1RfSU5WQUxJRCIsZX1yZXR1cm4gcn0oQm4pLEpuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gcn0oQm4pLHpuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixlfXJldHVybiByfShObiksR249SG4uY3J5cHRvO2Z1bmN0aW9uIFZuKCl7aWYoIUhuLmlzU2VjdXJlQ29udGV4dCYmIUhuLmNyeXB0by5zdWJ0bGUpdGhyb3cgbmV3IEJuKCJXZWIgQ3J5cHRvZ3JhcGh5IEFQSSBpcyBhdmFpbGFibGUgb25seSBpbiBTZWN1cmUgQ29udGV4dHMuIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2VjdXJlX0NvbnRleHRzIil9dmFyICRuPWZ1bmN0aW9uKCl7dmFyIGU9eChpLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIHIsbixvLGEscyx1LGM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG89ZnVuY3Rpb24oZSl7dmFyIHQscjtzd2l0Y2goZS5rdHkpe2Nhc2Uib2N0Ijpzd2l0Y2goZS5hbGcpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnQ9e25hbWU6IkhNQUMiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zdWJzdHIoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgRm4oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc3Vic3RyKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zdWJzdHIoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTQS1PQUVQIjpjYXNlIlJTQS1PQUVQLTI1NiI6Y2FzZSJSU0EtT0FFUC0zODQiOmNhc2UiUlNBLU9BRVAtNTEyIjp0PXtuYW1lOiJSU0EtT0FFUCIsaGFzaDoiU0hBLSIuY29uY2F0KHBhcnNlSW50KGUuYWxnLnN1YnN0cigtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOmUuY3J2fSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm4oJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19KHQpLGE9by5hbGdvcml0aG0scz1vLmtleVVzYWdlcyx1PSJqd2siLGM9aXIoe30sdCksZS5hYnJ1cHQoInJldHVybiIsKGRlbGV0ZSBjLmFsZywiUEJLREYyIj09PWEubmFtZSYmKHU9InJhdyIsYz1xbih0LmspKSxWbigpLEduLnN1YnRsZS5pbXBvcnRLZXkodSxjLGEsbnVsbCE9PShyPXQuZXh0KSYmdm9pZCAwIT09ciYmcixudWxsIT09KG49dC5rZXlfb3BzKSYmdm9pZCAwIT09bj9uOnMpKSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFhuKGUpe3JldHVybiEhZSYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBabihlLHQscil7cmV0dXJuIFFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBRbigpe3JldHVybiBRbj14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoWG4odCkpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihyfHwocj10LmFsZyksInN0cmluZyI9PXR5cGVvZiByJiZyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNDplLnQwPXQua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/NzoiUlNBIj09PWUudDA/MTA6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xMjoxMzticmVhaztjYXNlIDc6aWYoInN0cmluZyI9PXR5cGVvZiB0LmsmJnQuayl7ZS5uZXh0PTk7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignbWlzc2luZyAiayIgKEtleSBWYWx1ZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwobnVsbCE9bnx8KG49ITAhPT10LmV4dCksbj8kbihpcihpcih7fSx0KSx7fSx7YWxnOnIsZXh0OiExfSkpOnFuKHQuaykpKTtjYXNlIDEwOmlmKHZvaWQgMD09PXQub3RoKXtlLm5leHQ9MTI7YnJlYWt9dGhyb3cgbmV3IEZuKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIHVuc3VwcG9ydGVkJyk7Y2FzZSAxMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsJG4oaXIoaXIoe30sdCkse30se2FsZzpyfSkpKTtjYXNlIDEzOnRocm93IG5ldyBGbigndW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLFFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgZW89ZnVuY3Rpb24oKXt2YXIgZT14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbixvKXt2YXIgYTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihWbigpLCEociBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtlLm5leHQ9ODticmVha31pZih0LnN0YXJ0c1dpdGgoIkhTIikpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoInN5bW1ldHJpYyBrZXlzIGFyZSBvbmx5IGFwcGxpY2FibGUgZm9yIEhNQUMtYmFzZWQgYWxnb3JpdGhtcyIpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsR24uc3VidGxlLmltcG9ydEtleSgicmF3IixyLHtoYXNoOiJTSEEtIi5jb25jYXQodC5zdWJzdHIoLTMpKSxuYW1lOiJITUFDIn0sITEsWyJ2ZXJpZnkiXSk7Y2FzZSA1OmE9ZS5zZW50LGUubmV4dD05O2JyZWFrO2Nhc2UgODphPXI7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwoZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIkhTIikpe3ZhciByPXBhcnNlSW50KGUuc3Vic3RyKC0zKSwxMCksbj10LmFsZ29yaXRobS5sZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiBufHxuPHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIHN5bW1ldHJpYyBrZXlzIHRvIGJlICIpLmNvbmNhdChyLCIgYml0cyBvciBsYXJnZXIiKSl9aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciBvPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiBvfHxvPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fSh0LGEpLEduLnN1YnRsZS52ZXJpZnkoZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJITUFDIn07Y2FzZSJIUzM4NCI6cmV0dXJue2hhc2g6IlNIQS0zODQiLG5hbWU6IkhNQUMifTtjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDoiU0hBLTUxMiIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJSU0EtUFNTIixzYWx0TGVuZ3RoOjMyfTtjYXNlIlBTMzg0IjpyZXR1cm57aGFzaDoiU0hBLTM4NCIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDo0OH07Y2FzZSJQUzUxMiI6cmV0dXJue2hhc2g6IlNIQS01MTIiLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6NjR9O2Nhc2UiUlMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiUlMzODQiOnJldHVybntoYXNoOiJTSEEtMzg0IixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiUlM1MTIiOnJldHVybntoYXNoOiJTSEEtNTEyIixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifTtjYXNlIkVTMzg0IjpyZXR1cm57aGFzaDoiU0hBLTM4NCIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In07Y2FzZSJFUzUxMiI6cmV0dXJue2hhc2g6IlNIQS01MTIiLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTUyMSJ9O2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCJhbGcgIi5jb25jYXQoZSwiIGlzIHVuc3VwcG9ydGVkIGVpdGhlciBieSBKT1NFIG9yIHlvdXIgamF2YXNjcmlwdCBydW50aW1lIikpfX0odCksYSxuLG8pKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sbyl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0bz1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDAhPT1uLmNyaXQmJnZvaWQgMD09PXIuY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighcnx8dm9pZCAwPT09ci5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KHIuY3JpdCl8fDA9PT1yLmNyaXQubGVuZ3RofHxyLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgbyxpPXJyKHIuY3JpdCk7dHJ5e2ZvcihpLnMoKTshKG89aS5uKCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKCF0LmhhcyhhKSl0aHJvdyBuZXcgRm4oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdChhLCciIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbicpKTtpZih2b2lkIDA9PT1uW2FdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQoYSwnIiBpcyBtaXNzaW5nJykpO2lmKHQuZ2V0KGEpJiZ2b2lkIDA9PT1yW2FdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQoYSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBuZXcgU2V0KHIuY3JpdCl9LmJpbmQodm9pZCAwLFluLG5ldyBNYXAoW1siYjY0IiwhMF1dKSkscm89ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9LmJpbmQodm9pZCAwLCJhbGdvcml0aG1zIik7ZnVuY3Rpb24gbm8oZSx0LHIpe3JldHVybiBvby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gb28oKXtyZXR1cm4gb289eChpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3ZhciBvLGEscyx1LGMsZixoLGwscCxkO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKFhuKHQpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgWW4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09dC5wcm90ZWN0ZWR8fHZvaWQgMCE9PXQuaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgWW4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT10LnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiB0LnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT10LnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBZbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHQuc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PXQuaGVhZGVyfHxYbih0LmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgWW4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKG89e30sdC5wcm90ZWN0ZWQmJihhPXFuKHQucHJvdGVjdGVkKSxvPUpTT04ucGFyc2Uoam4uZGVjb2RlKGEpKSksZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixvPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1vLmxlbmd0aHx8MT09PW8ubGVuZ3RoKXJldHVybiEwO3ZhciBpLGE9cnIobyk7dHJ5e2ZvcihhLnMoKTshKGk9YS5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSl7dmFyIGMsZj1ycih1KTt0cnl7Zm9yKGYucygpOyEoYz1mLm4oKSkuZG9uZTspe3ZhciBoPWMudmFsdWU7aWYobi5oYXMoaCkpcmV0dXJuITE7bi5hZGQoaCl9fWNhdGNoKGUpe2YuZShlKX1maW5hbGx5e2YuZigpfX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9cmV0dXJuITB9KG8sdC5oZWFkZXIpKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUHJvdGVjdGVkIGFuZCBKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIGRpc2pvaW50Iik7Y2FzZSAxNjppZihzPWlyKGlyKHt9LG8pLHQuaGVhZGVyKSx1PSEwLCF0byhvLHMpLmhhcygiYjY0Iil8fCJib29sZWFuIj09dHlwZW9mKHU9by5iNjQpKXtlLm5leHQ9MjA7YnJlYWt9dGhyb3cgbmV3IFluKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMjA6aWYoInN0cmluZyI9PXR5cGVvZihjPXMuYWxnKSYmYyl7ZS5uZXh0PTIzO2JyZWFrfXRocm93IG5ldyBZbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAyMzppZighKGY9biYmcm8obi5hbGdvcml0aG1zKSl8fGYuaGFzKGMpKXtlLm5leHQ9MjY7YnJlYWt9dGhyb3cgbmV3IEtuKCciYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG5vdCBhbGxvd2VkJyk7Y2FzZSAyNjppZighdSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJzdHJpbmciPT10eXBlb2YgdC5wYXlsb2FkKXtlLm5leHQ9Mjk7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIik7Y2FzZSAyOTplLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMTppZigic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZHx8dC5wYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSl7ZS5uZXh0PTMzO2JyZWFrfXRocm93IG5ldyBZbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBVaW50OEFycmF5IGluc3RhbmNlIik7Y2FzZSAzMzppZihlLnQwPSJmdW5jdGlvbiI9PXR5cGVvZiByLCFlLnQwKXtlLm5leHQ9Mzg7YnJlYWt9cmV0dXJuIGUubmV4dD0zNyxyKG8sdCk7Y2FzZSAzNzpyPWUuc2VudDtjYXNlIDM4OnJldHVybiBmdW5jdGlvbihlLHQpe2lmKGUuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fGUubWF0Y2goL15BXGR7M30oPzpHQ00pS1ckLykpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwic2VjcmV0Ij09PXQudHlwZSlyZXR1cm47dGhyb3cgbmV3IFR5cGVFcnJvcignQ3J5cHRvS2V5IG9yIEtleU9iamVjdCBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpfWlmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBvciBLZXlPYmplY3QgaW5zdGFuY2VzIG11c3QgYmUgdXNlZCBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG1zIik7aWYoInNlY3JldCI9PT10LnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcignQ3J5cHRvS2V5IG9yIEtleU9iamVjdCBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJyl9KGMsciksaD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuPXQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3QubGVuZ3RofSksMCksbz1uZXcgVWludDhBcnJheShuKSxpPTA7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5zZXQoZSxpKSxpKz1lLmxlbmd0aH0pKSxvfShMbi5lbmNvZGUodC5wcm90ZWN0ZWR8fCIiKSxMbi5lbmNvZGUoIi4iKSwic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZD9Mbi5lbmNvZGUodC5wYXlsb2FkKTp0LnBheWxvYWQpLGw9cW4odC5zaWduYXR1cmUpLGUubmV4dD00MixlbyhjLHIsbCxoKTtjYXNlIDQyOmlmKGUuc2VudCl7ZS5uZXh0PTQ0O2JyZWFrfXRocm93IG5ldyBKbjtjYXNlIDQ0OnJldHVybiBwPXU/cW4odC5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZD9Mbi5lbmNvZGUodC5wYXlsb2FkKTp0LnBheWxvYWQsZD17cGF5bG9hZDpwfSxlLmFicnVwdCgicmV0dXJuIiwodm9pZCAwIT09dC5wcm90ZWN0ZWQmJihkLnByb3RlY3RlZEhlYWRlcj1vKSx2b2lkIDAhPT10LmhlYWRlciYmKGQudW5wcm90ZWN0ZWRIZWFkZXI9dC5oZWFkZXIpLGQpKTtjYXNlIDQ3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLG9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgaW89L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksYW89ZnVuY3Rpb24oZSl7dmFyIHQ9aW8uZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKDg2NDAwKnIpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LHNvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sdW89ZnVuY3Rpb24oZSx0KXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxpPW8udHlwO2lmKGkmJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxzbyhlLnR5cCkhPT1zbyhpKSkpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7cj1KU09OLnBhcnNlKGpuLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCJvYmplY3QiIT1uKHIpfHwhcnx8QXJyYXkuaXNBcnJheShyKSl0aHJvdyBuZXcgV24oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgYT1vLmlzc3VlcjtpZihhJiYhKCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSkuaW5jbHVkZXMoci5pc3MpKXRocm93IG5ldyBObigndW5leHBlY3RlZCAiaXNzIiBjbGFpbSB2YWx1ZScsImlzcyIsImNoZWNrX2ZhaWxlZCIpO3ZhciBzPW8uc3ViamVjdDtpZihzJiZyLnN1YiE9PXMpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJzdWIiIGNsYWltIHZhbHVlJywic3ViIiwiY2hlY2tfZmFpbGVkIik7dmFyIHUsYyxmLGg9by5hdWRpZW5jZTtpZihoJiYoYz0ic3RyaW5nIj09dHlwZW9mIGg/W2hdOmgsISgic3RyaW5nIj09dHlwZW9mKHU9ci5hdWQpP2MuaW5jbHVkZXModSk6Yy5zb21lKFNldC5wcm90b3R5cGUuaGFzLmJpbmQobmV3IFNldCh1KSkpKSkpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKG4oby5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjpmPWFvKG8uY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjpmPW8uY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmY9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgbCxwPW8uY3VycmVudERhdGUsZD0obD1wfHxuZXcgRGF0ZSxNYXRoLmZsb29yKGwuZ2V0VGltZSgpLzFlMykpO2lmKHZvaWQgMCE9PXIuaWF0fHxvLm1heFRva2VuQWdlKXtpZigibnVtYmVyIiE9dHlwZW9mIHIuaWF0KXRocm93IG5ldyBObignImlhdCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImlhdCIsImludmFsaWQiKTtpZih2b2lkIDA9PT1yLmV4cCYmci5pYXQ+ZCtmKXRocm93IG5ldyBObignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfWlmKHZvaWQgMCE9PXIubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIHIubmJmKXRocm93IG5ldyBObignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihyLm5iZj5kK2YpdGhyb3cgbmV3IE5uKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09ci5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygci5leHApdGhyb3cgbmV3IE5uKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKHIuZXhwPD1kLWYpdGhyb3cgbmV3IHpuKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoby5tYXhUb2tlbkFnZSl7dmFyIHY9ZC1yLmlhdDtpZih2LWY+KCJudW1iZXIiPT10eXBlb2Ygby5tYXhUb2tlbkFnZT9vLm1heFRva2VuQWdlOmFvKG8ubWF4VG9rZW5BZ2UpKSl0aHJvdyBuZXcgem4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKHRvbyBmYXIgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIik7aWYodjwwLWYpdGhyb3cgbmV3IE5uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9cmV0dXJuIHJ9O2Z1bmN0aW9uIGNvKCl7cmV0dXJuIGNvPXgoaS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgbztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsZnVuY3Rpb24oKXt2YXIgZT14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIG8sYSxzLHUsYztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZih0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9am4uZGVjb2RlKHQpKSwic3RyaW5nIj09dHlwZW9mIHQpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBZbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAyOmlmKG89dC5zcGxpdCgiLiIpLGE9b1swXSxzPW9bMV0sdT1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFluKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA1OnJldHVybiBlLm5leHQ9Nyxubyh7cGF5bG9hZDpzfHx2b2lkIDAscHJvdGVjdGVkOmF8fHZvaWQgMCxzaWduYXR1cmU6dXx8dm9pZCAwfSxyLG4pO2Nhc2UgNzpyZXR1cm4gYz1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIse3BheWxvYWQ6Yy5wYXlsb2FkLHByb3RlY3RlZEhlYWRlcjpjLnByb3RlY3RlZEhlYWRlcn0pO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkodCxyLG4pO2Nhc2UgMjpyZXR1cm4gbz1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIse3BheWxvYWQ6dW8oby5wcm90ZWN0ZWRIZWFkZXIsby5wYXlsb2FkLG4pLHByb3RlY3RlZEhlYWRlcjpvLnByb3RlY3RlZEhlYWRlcn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSxjby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHluLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJnZXRDb2RlVmVyaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmFzZTY0VVJMRW5jb2RlKE1uKDMyKSl9fSx7a2V5OiJnZXRDb2RlQ2hhbGxlbmdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iYXNlNjRVUkxFbmNvZGUobmV3IFgobW4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSkpfX0se2tleToiZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIlJTMjU2IiwiUlM1MTIiLCJSUzM4NCIsIlBTMjU2Il19fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh5bi5kZWNvZGUoZSwidXRmOCIpKSxvPXJyKHQpO3RyeXtmb3Ioby5zKCk7IShyPW8ubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiBabih7YWxnOmkuYWxnLGU6aS5lLGt0eTppLmt0eSxuOmkubn0pfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJDUllQVE9fVVRJTC1HVEZUSVQtSVYwMSIsImNyeXB0by11dGlscyIsImdldEpXS0ZvclRoZUlkVG9rZW4iLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGNvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSx0LHthbGdvcml0aG1zOnRoaXMuZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpLGF1ZGllbmNlOnIsY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6bixzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJDUllQVE9fVVRJTC1JVklULUlWMDIiLCJjcnlwdG8tdXRpbHMiLCJpc1ZhbGlkSWRUb2tlbiIsIlZhbGlkYXRpbmcgSUQgdG9rZW4gZmFpbGVkIixlKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9eW4uZGVjb2RlKGUuc3BsaXQoIi4iKVsxXSwidXRmOCIpO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBmcigiQ1JZUFRPX1VUSUwtRElULUlWMDEiLCJjcnlwdG8tdXRpbHMiLCJkZWNvZGVJRFRva2VuIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLGhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLG8saT1mby5kZWNvZGVJRFRva2VuKGUpLGE9dGhpcy5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQoaSkscz1udWxsIT09KHQ9bnVsbD09aT92b2lkIDA6aS51c2VybmFtZSkmJnZvaWQgMCE9PXQ/dDoiIix1PW51bGwhPT0ocj1pLmdpdmVuX25hbWUpJiZ2b2lkIDAhPT1yP3I6IiIsYz1udWxsIT09KG49aS5mYW1pbHlfbmFtZSkmJnZvaWQgMCE9PW4/bjoiIixmPXUmJmM/IiIuY29uY2F0KHUsIiAiKS5jb25jYXQoYyk6dXx8Y3x8IiIsaD1udWxsIT09KG89aS5wcmVmZXJyZWRfdXNlcm5hbWUpJiZ2b2lkIDAhPT1vP286ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGlzcGxheU5hbWU6aCx0ZW5hbnREb21haW46YSx1c2VybmFtZTpzfSx0aGlzLmZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZChpKSl9fSx7a2V5OiJmaWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30sZSk7bnVsbD09dHx8ZGVsZXRlIHQuaXNzLG51bGw9PXR8fGRlbGV0ZSB0LmF1ZCxudWxsPT10fHxkZWxldGUgdC5leHAsbnVsbD09dHx8ZGVsZXRlIHQuaWF0LG51bGw9PXR8fGRlbGV0ZSB0LmFjcixudWxsPT10fHxkZWxldGUgdC5hbXIsbnVsbD09dHx8ZGVsZXRlIHQuYXpwLG51bGw9PXR8fGRlbGV0ZSB0LmF1dGhfdGltZSxudWxsPT10fHxkZWxldGUgdC5ub25jZSxudWxsPT10fHxkZWxldGUgdC5jX2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQuYXRfaGFzaCxudWxsPT10fHxkZWxldGUgdC5uYmYsbnVsbD09dHx8ZGVsZXRlIHQuaXNrLG51bGw9PXR8fGRlbGV0ZSB0LnNpZDt2YXIgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9eShlLDIpLG49dFswXSxvPXRbMV0saT1uLnNwbGl0KCJfIikubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dD9lOltlWzBdLnRvVXBwZXJDYXNlKCldLmNvbmNhdChsKGUuc2xpY2UoMSkpKS5qb2luKCIiKX0pKS5qb2luKCIiKTtyW2ldPW99KSkscn19LHtrZXk6ImdldFRva2VuUmVxdWVzdEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9fX1dKSxlfSgpO2hvLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIGxvLHBvLHZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB3KGUsW3trZXk6InJlc29sdmVXZWxsS25vd25FbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9jb25maWcoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLHQud2VsbEtub3duRW5kcG9pbnQ/dC5zZXJ2ZXJPcmlnaW4rdC53ZWxsS25vd25FbmRwb2ludDp0LnNlcnZlck9yaWdpbisiL29hdXRoMi90b2tlbi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiIpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKG4ub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcmJm4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7clt0XT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxyKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUZhbGxiYWNrRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4ocj1lLnNlbnQpLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxuPXthdXRob3JpemF0aW9uX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL2F1dGhvcml6ZSIsZW5kX3Nlc3Npb25fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2xvZ291dCIsandrc191cmk6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvandrcyIsY2hlY2tfc2Vzc2lvbl9pZnJhbWU6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2NoZWNrc2Vzc2lvbiIscmV2b2NhdGlvbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29hdXRoMi9yZXZva2UiLHRva2VuX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL3Rva2VuIn0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLG4pKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InZhbGlkYXRlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG89dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5qd2tzX3VyaSx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJjAhPT1yLnRyaW0oKS5sZW5ndGg/dHIuZ2V0KHIse3dpdGhDcmVkZW50aWFsczpudWxsPT1uP3ZvaWQgMDpuLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoMjAwPT09dC5zdGF0dXMpe3IubmV4dD0yO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1OUjAyIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyByZXR1cm5lZCAiK3Quc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSk7Y2FzZSAyOnJldHVybiByLm5leHQ9NCx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgNDpyZXR1cm4gbj1yLnNlbnQuaXNzdWVyLHIubmV4dD03LHRoaXMucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA3OnJldHVybiBvPXIuc2VudC5zcGxpdCgiLy53ZWxsLWtub3duIilbMF0sci5hYnJ1cHQoInJldHVybiIsbiYmbj09PW8/Zm8uZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdC5kYXRhLmtleXMpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihhLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9Zm8sci50MT1lLHIudDI9dCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIHIudDM9ci5zZW50LmNsaWVudElELHIudDQ9bixyLnQ1PWZvLmRlY29kZUlEVG9rZW4oZSkuc3ViLHIubmV4dD0xMCx0aGlzLl9jb25maWcoKTtjYXNlIDEwOnJldHVybiByLnQ2PXIuc2VudC5jbG9ja1RvbGVyYW5jZSxyLmFicnVwdCgicmV0dXJuIixyLnQwLmlzVmFsaWRJZFRva2VuLmNhbGwoci50MCxyLnQxLHIudDIsci50MyxyLnQ0LHIudDUsci50NikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1FUzAzIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1WSVQtRVMwNCIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSk6UHJvbWlzZS5yZXNvbHZlKCExKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0hFTFBFUi1WSVQtTlIwNSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKTpQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1ORjAxIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSldLUyBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gSldLUyBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBKV0tTIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBuPSJvcGVuaWQiLHIubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbz1yLnNlbnQsci5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSA2OnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIiwoby5zY29wZSYmby5zY29wZS5sZW5ndGg+MCYmKG8uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxvLnNjb3BlLnB1c2goIm9wZW5pZCIpLG49by5zY29wZS5qb2luKCIgIikpLGUucmVwbGFjZSgie3t0b2tlbn19IixhLmFjY2Vzc190b2tlbikucmVwbGFjZSgie3t1c2VybmFtZX19Iixoby5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8oYS5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsbikucmVwbGFjZSgie3tjbGllbnRJRH19IixvLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KHQ9by5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT10P3Q6IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUubmV4dD00LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKCk7Y2FzZSA0OnJldHVybiBlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImhhbmRsZVRva2VuUmVzcG9uc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbj10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1IVFItTlIwMSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgdG9rZW4gcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSkpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fY29uZmlnKCk7Y2FzZSA0OmlmKCF0LnNlbnQudmFsaWRhdGVJRFRva2VuKXt0Lm5leHQ9NjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oZS5kYXRhLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCF0KXtyLm5leHQ9NTticmVha31yZXR1cm4gci5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKGUuZGF0YSk7Y2FzZSAzOnJldHVybiBuPXthY2Nlc3NUb2tlbjplLmRhdGEuYWNjZXNzX3Rva2VuLGV4cGlyZXNJbjplLmRhdGEuZXhwaXJlc19pbixpZFRva2VuOmUuZGF0YS5pZF90b2tlbixyZWZyZXNoVG9rZW46ZS5kYXRhLnJlZnJlc2hfdG9rZW4sc2NvcGU6ZS5kYXRhLnNjb3BlLHRva2VuVHlwZTplLmRhdGEudG9rZW5fdHlwZX0sci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKG4pKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9IRUxQRVItSFRSLUlWMDIiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIiwiVGhlIGlkIHRva2VuIHJldHVybmVkIGlzIG5vdCB2YWxpZC4iLCJUaGUgaWQgdG9rZW4gcmV0dXJuZWQgaGFzIGZhaWxlZCB0aGUgdmFsaWRhdGlvbiBjaGVjay4iKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1IQVQtRVMwMyIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLHZvaWQgMCx2b2lkIDAsZSkpfSkpKTtjYXNlIDY6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOmUuZGF0YS5hY2Nlc3NfdG9rZW4sZXhwaXJlc0luOmUuZGF0YS5leHBpcmVzX2luLGlkVG9rZW46ZS5kYXRhLmlkX3Rva2VuLHJlZnJlc2hUb2tlbjplLmRhdGEucmVmcmVzaF90b2tlbixzY29wZTplLmRhdGEuc2NvcGUsdG9rZW5UeXBlOmUuZGF0YS50b2tlbl90eXBlfSx0Lm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoZS5kYXRhKTtjYXNlIDk6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLGdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcj1uZXcgdm8odCksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1yZXR1cm4gdyhlLFt7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sbyxhLHMsdSxjLGYsaCxsLHAsZDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobj10LnNlbnQsciYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR0FVLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0QXV0aG9yaXphdGlvblVSTCIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKChvPW5ldyBVUkwocikpLnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJjbGllbnRfaWQiLG4uY2xpZW50SUQpLGE9Im9wZW5pZCIsbi5zY29wZSYmbi5zY29wZS5sZW5ndGg+MCYmKG4uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxuLnNjb3BlLnB1c2goIm9wZW5pZCIpLGE9bi5zY29wZS5qb2luKCIgIikpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgic2NvcGUiLGEpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVkaXJlY3RfdXJpIixuLnNpZ25JblJlZGlyZWN0VVJMKSxuLnJlc3BvbnNlTW9kZSYmby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV9tb2RlIixuLnJlc3BvbnNlTW9kZSksIW4uZW5hYmxlUEtDRSl7dC5uZXh0PTE3O2JyZWFrfXJldHVybiBzPWZvLmdldENvZGVWZXJpZmllcigpLHU9Zm8uZ2V0Q29kZUNoYWxsZW5nZShzKSx0Lm5leHQ9MTUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIscyk7Y2FzZSAxNTpvLnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSxvLnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlIix1KTtjYXNlIDE3OmlmKG4ucHJvbXB0JiZvLnNlYXJjaFBhcmFtcy5hcHBlbmQoInByb21wdCIsbi5wcm9tcHQpLGM9ZSlmb3IoZj0wLGg9T2JqZWN0LmVudHJpZXMoYyk7ZjxoLmxlbmd0aDtmKyspbD15KGhbZl0sMikscD1sWzBdLGQ9bFsxXSwiIiE9cCYmIiIhPWQmJm8uc2VhcmNoUGFyYW1zLmFwcGVuZChwLGQudG9TdHJpbmcoKSk7cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLG8udG9TdHJpbmcoKSk7Y2FzZSAyMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhLHMsdT10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQudG9rZW5fZW5kcG9pbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG89ci5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQVQxLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA4OmlmKHIudDA9dCwhci50MCl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0KTtjYXNlIDEyOmlmKChhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoby5jbGllbnRJRCkpLG8uY2xpZW50U2VjcmV0JiZvLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJmEucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChvLmNsaWVudFNlY3JldCkpLHM9ZSxhLnB1c2goImNvZGU9Ii5jb25jYXQocykpLGEucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSxhLnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChvLnNpZ25JblJlZGlyZWN0VVJMKSksci50MT1vLmVuYWJsZVBLQ0UsIXIudDEpe3IubmV4dD0yOTticmVha31yZXR1cm4gci50Mj1hLHIudDM9ImNvZGVfdmVyaWZpZXI9IixyLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIpO2Nhc2UgMjQ6cmV0dXJuIHIudDQ9ci5zZW50LHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDIucHVzaC5jYWxsKHIudDIsci50NSksci5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJwa2NlX2NvZGVfdmVyaWZpZXIiKTtjYXNlIDI5OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0ci5wb3N0KG4sYS5qb2luKCImIikse2hlYWRlcnM6aG8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpLHdpdGhDcmVkZW50aWFsczpvLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB1Ll9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMS1FUzAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMS1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsIlRoZSByZXF1ZXN0IHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kYXRhKSl9KSkpO2Nhc2UgMzA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvLGE9dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LnRva2VuX2VuZHBvaW50LGUubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gcj1lLnNlbnQsZS5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSA4OmlmKChuPWUuc2VudCkucmVmcmVzaF90b2tlbil7ZS5uZXh0PTExO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQVQyLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpKSk7Y2FzZSAxMTppZih0JiYwIT09dC50cmltKCkubGVuZ3RoKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJBVDItTkYwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZWZyZXNoQWNjZXNzVG9rZW4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgd2FzIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgMTM6cmV0dXJuIG89W10sZS5hYnJ1cHQoInJldHVybiIsKG8ucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KHIuY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQobi5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxyLmNsaWVudFNlY3JldCYmci5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoci5jbGllbnRTZWNyZXQpKSx0ci5wb3N0KHQsby5qb2luKCImIikse2hlYWRlcnM6aG8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpLHdpdGhDcmVkZW50aWFsczpyLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMi1FUzAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMi1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsIlRoZSByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kYXRhKSl9KSkpKTtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudC5yZXZvY2F0aW9uX2VuZHBvaW50LGUubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihyPWUuc2VudCx0JiYwIT09dC50cmltKCkubGVuZ3RoKXtlLm5leHQ9ODticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMy1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDg6cmV0dXJuKG49W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChyLmNsaWVudElEKSksZS50MD1uLGUudDE9InRva2VuPSIsZS5uZXh0PTE0LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMTQ6cmV0dXJuIGUudDI9ZS5zZW50LmFjY2Vzc190b2tlbixlLnQzPWUudDEuY29uY2F0LmNhbGwoZS50MSxlLnQyKSxlLnQwLnB1c2guY2FsbChlLnQwLGUudDMpLG4ucHVzaCgidG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbiIpLGUuYWJydXB0KCJyZXR1cm4iLHRyLnBvc3QodCxuLmpvaW4oIiYiKSx7aGVhZGVyczpoby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCksd2l0aENyZWRlbnRpYWxzOnIuc2VuZENvb2tpZXNJblJlcXVlc3RzfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIDIwMCE9PWUuc3RhdHVzP1Byb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJBVDMtTlIwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXZva2VBY2Nlc3NUb2tlbiIsIkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciByZXZva2UgYWNjZXNzIHRva2VuIHJlcXVlc3QuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiByZXR1cm5lZCAiK2Uuc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKTooby5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoKSxQcm9taXNlLnJlc29sdmUoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLVJBVDMtTlIwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXZva2VBY2Nlc3NUb2tlbiIsIlRoZSByZXF1ZXN0IHRvIHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gcmV2b2tlIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGF0YSkpfSkpKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixvLGEscz10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDpyLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJDRy1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgODpyZXR1cm4gdC5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMikscj10WzBdLG49dFsxXTtyZXR1cm4gc3Iocyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3Mobik7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQociwiPSIpLmNvbmNhdCh0KSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYodC50MD10LnNlbnQuam9pbigiJiIpLHQudDE9T2JqZWN0LmFzc2lnbih7fSxoby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLHQudDI9byx0LnQzPW4uc2VuZENvb2tpZXNJblJlcXVlc3RzLGE9e2RhdGE6dC50MCxoZWFkZXJzOnQudDEsbWV0aG9kOiJQT1NUIix1cmw6dC50Mix3aXRoQ3JlZGVudGlhbHM6dC50M30sdC50ND1lLmF0dGFjaFRva2VuLCF0LnQ0KXt0Lm5leHQ9MjY7YnJlYWt9cmV0dXJuIHQudDU9T2JqZWN0LHQudDY9T2JqZWN0LmFzc2lnbih7fSxhLmhlYWRlcnMpLHQudDc9IkJlYXJlciAiLHQubmV4dD0yMix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDIyOnQudDg9dC5zZW50LmFjY2Vzc190b2tlbix0LnQ5PXQudDcuY29uY2F0LmNhbGwodC50Nyx0LnQ4KSx0LnQxMD17QXV0aG9yaXphdGlvbjp0LnQ5fSxhLmhlYWRlcnM9dC50NS5hc3NpZ24uY2FsbCh0LnQ1LHQudDYsdC50MTApO2Nhc2UgMjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRyKGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiAyMDAhPT10LnN0YXR1cz9Qcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQ0ctTlIwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgcmV0dXJuZWQgIit0LnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSk6ZS5yZXR1cm5zU2Vzc2lvbj9zLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkNHLUVTMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50Iix2b2lkIDAsdm9pZCAwLGUpKX0pKTpQcm9taXNlLnJlc29sdmUodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkNHLU5SMDQiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiVGhlIGN1c3RvbSBncmFudCByZXF1ZXN0IGZhaWxlZC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKSk7Y2FzZSAyNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxyPWhvLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT10P3ZvaWQgMDp0LmlkX3Rva2VuKSxuPXthbGxvd2VkU2NvcGVzOnQuc2NvcGUsc2Vzc2lvblN0YXRlOnQuc2Vzc2lvbl9zdGF0ZX0sZS5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXJbZV0mJiIiIT09cltlXSYmbnVsbCE9PXJbZV18fGRlbGV0ZSByW2VdfSkpLG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHIpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LmlkX3Rva2VuLGUuYWJydXB0KCJyZXR1cm4iLGZvLmRlY29kZUlEVG9rZW4odCkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodC50MD0hZSwhdC50MCl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIHQubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OnQudDA9dC5zZW50O2Nhc2UgNTppZighdC50MCl7dC5uZXh0PTc7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgNzpyZXR1cm4gdC5uZXh0PTksdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA5OnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix0ci5nZXQocikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHNyKG4sdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigyMDA9PT1lLnN0YXR1cyl7dC5uZXh0PTQ7YnJlYWt9dC50MD1Qcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1HT1BNLU5SMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IHRvIGdldCB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSksdC5uZXh0PTEzO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdC50MT10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50cyhlLmRhdGEpO2Nhc2UgNzpyZXR1cm4gdC50Mj10LnNlbnQsdC5uZXh0PTEwLHQudDEuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQxLHQudDIpO2Nhc2UgMTA6cmV0dXJuIHQubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgMTI6dC50MD1Qcm9taXNlLnJlc29sdmUoITApO2Nhc2UgMTM6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQudDApO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnQwPXRoaXMuX2RhdGFMYXllcixlLm5leHQ9Myx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRmFsbGJhY2tFbmRwb2ludHMoKTtjYXNlIDM6cmV0dXJuIGUudDE9ZS5zZW50LGUubmV4dD02LGUudDAuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbChlLnQwLGUudDEpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS50MD10LmF1dGhvcml6YXRpb25fZW5kcG9pbnQsZS50MT10LmNoZWNrX3Nlc3Npb25faWZyYW1lLGUudDI9dC5lbmRfc2Vzc2lvbl9lbmRwb2ludCxlLnQzPXQuaW50cm9zcGVjdGlvbl9lbmRwb2ludCxlLnQ0PXQuaXNzdWVyLGUudDU9dC5qd2tzX3VyaSxlLnQ2PXQucmVnaXN0cmF0aW9uX2VuZHBvaW50LGUudDc9dC5yZXZvY2F0aW9uX2VuZHBvaW50LGUudDg9dC50b2tlbl9lbmRwb2ludCxlLnQ5PXQudXNlcmluZm9fZW5kcG9pbnQsZS5uZXh0PTE1LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVXZWxsS25vd25FbmRwb2ludCgpO2Nhc2UgMTU6cmV0dXJuIGUudDEwPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50OmUudDAsY2hlY2tTZXNzaW9uSWZyYW1lOmUudDEsZW5kU2Vzc2lvbkVuZHBvaW50OmUudDIsaW50cm9zcGVjdGlvbkVuZHBvaW50OmUudDMsaXNzdWVyOmUudDQsandrc1VyaTplLnQ1LHJlZ2lzdHJhdGlvbkVuZHBvaW50OmUudDYscmV2b2NhdGlvbkVuZHBvaW50OmUudDcsdG9rZW5FbmRwb2ludDplLnQ4LHVzZXJpbmZvRW5kcG9pbnQ6ZS50OSx3ZWxsS25vd25FbmRwb2ludDplLnQxMH0pO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIG8sYSxzLHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKG4udDE9ZT1uLnNlbnQsbi50MD1udWxsPT09bi50MSxuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMD09PWU7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj12b2lkIDAsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1lLmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89bi50MixuLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihhPW4uc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXtuLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR1NPVS1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gbi5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMTk6aWYobi50ND10PW4uc2VudCxuLnQzPW51bGw9PT1uLnQ0LG4udDMpe24ubmV4dD0yMzticmVha31uLnQzPXZvaWQgMD09PXQ7Y2FzZSAyMzppZighbi50Myl7bi5uZXh0PTI3O2JyZWFrfW4udDU9dm9pZCAwLG4ubmV4dD0yODticmVhaztjYXNlIDI3Om4udDU9dC5pZF90b2tlbjtjYXNlIDI4OmlmKChzPW4udDUpJiYwIT09cy50cmltKCkubGVuZ3RoKXtuLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR1NPVS1ORjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigodT1udWxsIT09KHI9bnVsbD09YT92b2lkIDA6YS5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1yP3I6bnVsbD09YT92b2lkIDA6YS5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT11LnRyaW0oKS5sZW5ndGgpe24ubmV4dD0zNDticmVha310aHJvdyBuZXcgZnIoIkFVVEhfQ09SRS1HU09VLU5GMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0U2lnbk91dFVSTCIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQocywiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQodSwiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YSgpLHQpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZih0LnQxPWU9dC5zZW50LHQudDA9bnVsbD09PXQudDEsdC50MCl7dC5uZXh0PTY7YnJlYWt9dC50MD12b2lkIDA9PT1lO2Nhc2UgNjppZighdC50MCl7dC5uZXh0PTEwO2JyZWFrfXQudDI9dm9pZCAwLHQubmV4dD0xMTticmVhaztjYXNlIDEwOnQudDI9ZS5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUudDA9Qm9vbGVhbixlLm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiBlLnQxPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwoMCxlLnQwKShlLnQxKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigicGtjZV9jb2RlX3ZlcmlmaWVyIik7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJwa2NlX2NvZGVfdmVyaWZpZXIiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOmlmKCFlLm92ZXJyaWRlV2VsbEVuZHBvaW50Q29uZmlnKXt0Lm5leHQ9MTM7YnJlYWt9aWYodC50MD1udWxsPT1lP3ZvaWQgMDplLmVuZHBvaW50cywhdC50MCl7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQxPXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9OCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzKHt9KTtjYXNlIDg6cmV0dXJuIHQudDI9dC5zZW50LHQubmV4dD0xMSx0LnQxLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50MSx0LnQyKTtjYXNlIDExOnQubmV4dD0xNzticmVhaztjYXNlIDEzOmlmKHQudDM9bnVsbD09ZT92b2lkIDA6ZS5lbmRwb2ludHMsIXQudDMpe3QubmV4dD0xNzticmVha31yZXR1cm4gdC5uZXh0PTE3LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSx5bz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtfKHRoaXMsZSksdGhpcy5faWQ9dCx0aGlzLl9zdG9yZT1yfXJldHVybiB3KGUsW3trZXk6InNldERhdGFJbkJ1bGsiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgbyxhLHMsdTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBvPW4udDIsYT1vJiZKU09OLnBhcnNlKG8pLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpLHU9SlNPTi5zdHJpbmdpZnkocyksbi5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIGEscyx1LGM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG8udDE9bj1vLnNlbnQsby50MD1udWxsIT09by50MSwhby50MCl7by5uZXh0PTY7YnJlYWt9by50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighby50MCl7by5uZXh0PTEwO2JyZWFrfW8udDI9bixvLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpvLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1vLnQyLHM9YSYmSlNPTi5wYXJzZShhKSx1PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSxiKHt9LHQscikpLGM9SlNPTi5zdHJpbmdpZnkodSksby5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxjKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89bi50MixhPW8mJkpTT04ucGFyc2UobyksZGVsZXRlKHM9T2JqZWN0LmFzc2lnbih7fSxhKSlbdF0sdT1KU09OLnN0cmluZ2lmeShzKSxuLm5leHQ9MTgsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHUpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6Il9yZXNvbHZlS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLlNlc3Npb25EYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLG1vPXtjbG9ja1RvbGVyYW5jZTozMDAsZW5hYmxlUEtDRTohMCxyZXNwb25zZU1vZGU6UXQucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSx3bz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7Xyh0aGlzLGUpLGUuX2luc3RhbmNlSUQ/ZS5faW5zdGFuY2VJRCs9MTplLl9pbnN0YW5jZUlEPTAsdGhpcy5fZGF0YUxheWVyPW5ldyB5bygiaW5zdGFuY2VfIi5jb25jYXQoZS5faW5zdGFuY2VJRCksdCksdGhpcy5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBnbyh0aGlzLl9kYXRhTGF5ZXIpfXJldHVybiB3KGUsW3trZXk6ImluaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gbygpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOnJldHVybiBvLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxtbyksZSkse3Njb3BlOltdLmNvbmNhdChsKG51bGwhPT0odD1tby5zY29wZSkmJnZvaWQgMCE9PXQ/dDpbXSksbChudWxsIT09KG49bnVsbD09PShyPWUuc2NvcGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIShudWxsPT09KHQ9bnVsbD09bW8/dm9pZCAwOm1vLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1uP246W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfX0se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG51bGw9PShyPU9iamVjdC5hc3NpZ24oe30sZSkpfHxkZWxldGUgci5mb3JjZUluaXQsdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6aWYoIXQuc2VudCl7dC5uZXh0PTg7YnJlYWt9dC50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChyKSx0Lm5leHQ9OTticmVhaztjYXNlIDg6dC50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEobnVsbD09ZT92b2lkIDA6ZS5mb3JjZUluaXQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKHIpfSkpO2Nhc2UgOTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG49dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDI6aWYoIXIuc2VudCl7ci5uZXh0PTY7YnJlYWt9ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCksci5uZXh0PTc7YnJlYWs7Y2FzZSA2OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCExKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBuLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCl9KSk7Y2FzZSA3OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNpZ25PdXQoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJldm9rZUFjY2Vzc1Rva2VuKCl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZCgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0sW3trZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiYhbn19XSksZX0oKSxibz0iaW5pdCI7IWZ1bmN0aW9uKGUpe2UuTG9jYWxTdG9yYWdlPSJsb2NhbFN0b3JhZ2UiLGUuU2Vzc2lvblN0b3JhZ2U9InNlc3Npb25TdG9yYWdlIixlLldlYldvcmtlcj0id2ViV29ya2VyIixlLkJyb3dzZXJNZW1vcnk9ImJyb3dzZXJNZW1vcnkifShsb3x8KGxvPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCJ9KHBvfHwocG89e30pKTt2YXIga289ImN1c3RvbV9ncmFudF9jb25maWciO2Z1bmN0aW9uIHhvKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPU8oZSk7aWYodCl7dmFyIG89Tyh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLG8pfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gUCh0aGlzLHIpfX12YXIgX28sU289ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PXhvKHIpO2Z1bmN0aW9uIHIoZSxuLG8saSxhLHMpe3ZhciB1O3JldHVybiBfKHRoaXMsciksKHU9dC5jYWxsKHRoaXMsbnVsbCE9aT9pOm51bGw9PXM/dm9pZCAwOnMubWVzc2FnZSkpLm5hbWU9dS5jb25zdHJ1Y3Rvci5uYW1lLHUuY29kZT1lLHUuZmlsZT1uLHUubWV0aG9kPW8sdS5lcnJvcj1zLHUuZGVzY3JpcHRpb249YSxPYmplY3Quc2V0UHJvdG90eXBlT2YoRSh1KSwodGhpcyBpbnN0YW5jZW9mIHI/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSksdX1yZXR1cm4gcn0oTChFcnJvcikpLEVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtfKHRoaXMsZSksdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQ9dCx0aGlzLl9kYXRhTGF5ZXI9dGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGF0YUxheWVyKCl9cmV0dXJuIHcoZSxbe2tleToicmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLG89dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiByPXBhcnNlSW50KHQuZXhwaXJlc19pbiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBhKG8sdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSwxZTMqKHI8PTEwP3I6ci0xMCkpLGUubmV4dD05LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGNyLEpTT04uc3RyaW5naWZ5KG4pKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGNyKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihjcik7Y2FzZSA2OmUudDE9ZS5zZW50LHQ9ZS50MC5wYXJzZS5jYWxsKGUudDAsZS50MSksY2xlYXJUaW1lb3V0KHQpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpLEFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntibG9iOihudWxsPT1lP3ZvaWQgMDplLmRhdGEpaW5zdGFuY2VvZiBCbG9iP251bGw9PWU/dm9pZCAwOmUuZGF0YTpudWxsLGRhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiEwfX19LHtrZXk6ImdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnRvSlNPTikmJmRlbGV0ZSBlLnRvSlNPTix7ZXJyb3I6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiExfX19XSksZX0oKTt2YXIgVG89X289ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Xyh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHcoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmF0dGFjaFRva2VuKGUpO2Nhc2UgMjpyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS5zaG91bGRFbmNvZGVUb0Zvcm1EYXRhKSYmKHI9bnVsbD09ZT92b2lkIDA6ZS5kYXRhLG49bmV3IEZvcm1EYXRhLE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe24uYXBwZW5kKGUscltlXSl9KSksZS5kYXRhPW4pLF9vLmlzSGFuZGxlckVuYWJsZWQmJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrKGUpLHQuYWJydXB0KCJyZXR1cm4iLGUpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZXJyb3JIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXt0aHJvdyBfby5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJnRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6InN1Y2Nlc3NIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gX28uaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6X28uaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7X28uaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe19vLmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpfby5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO19vLmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtfby5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPXRyLmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IF9vKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gYShlLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuY2xpZW50SW5zdGFuY2UucmVxdWVzdEhhbmRsZXIodCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5zdWNjZXNzSGFuZGxlcih0KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5lcnJvckhhbmRsZXIodCl9KSksdGhpcy5heGlvc0luc3RhbmNlLmFsbD10ci5hbGwsdGhpcy5heGlvc0luc3RhbmNlLnNwcmVhZD10ci5zcHJlYWQsdGhpcy5heGlvc0luc3RhbmNlLmluaXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5pbml0LHRoaXMuYXhpb3NJbnN0YW5jZS5lbmFibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZW5hYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dD10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQsdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayksdGhpcy5heGlvc0luc3RhbmNlfX1dKSxlfSgpO1RvLkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ9MWUzLFRvPV9vPWZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBpLGE9YXJndW1lbnRzLmxlbmd0aCxzPWE8Mz90Om51bGw9PT1vP289T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOm87aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0PyJ1bmRlZmluZWQiOm4oUmVmbGVjdCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsbyk7ZWxzZSBmb3IodmFyIHU9ZS5sZW5ndGgtMTt1Pj0wO3UtLSkoaT1lW3VdKSYmKHM9KGE8Mz9pKHMpOmE+Mz9pKHQscixzKTppKHQscikpfHxzKTtyZXR1cm4gYT4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9KFtmdW5jdGlvbihlKXt9XSxUbyk7dmFyIFJvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKSx0aGlzLl9kYXRhPW5ldyBNYXB9cmV0dXJuIHcoZSxbe2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5zZXQoZSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixudWxsIT09KHI9bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PXI/cjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLmRlbGV0ZShlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKTtmdW5jdGlvbiBQbyhlLHQpe3ZhciByPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZighcil7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBDbyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTsiT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSk7aWYoIk1hcCI9PT1yfHwiU2V0Ij09PXIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoIkFyZ3VtZW50cyI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKSlyZXR1cm4gQ28oZSx0KX0oZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLG89ZnVuY3Rpb24oKXt9O3JldHVybntzOm8sbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOm99fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgaSxhPSEwLHM9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPXIuY2FsbChlKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBhPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe3M9ITAsaT1lfSxmOmZ1bmN0aW9uKCl7dHJ5e2F8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX19fWZ1bmN0aW9uIENvKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59dmFyIE9vLERvPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sbyxzLHUsYyxmLGgscCxkLHYsZyx5LG0sdyxiLGsseCxfLFMsRSxBLFQsUixQLEMsTyxELEksVSxNO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyBSbyxuPW5ldyB3byhyKSx0Lm5leHQ9NCxuLmluaXRpYWxpemUoZSk7Y2FzZSA0OmlmKG89bmV3IEVvKG4pLHM9bi5nZXREYXRhTGF5ZXIoKSx1PVRvLmdldEluc3RhbmNlKCksYz1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighT2JqZWN0LmFzc2lnbih7YXR0YWNoVG9rZW46ITB9LGUpLmF0dGFjaFRva2VuKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQudDA9T2JqZWN0LHQudDE9T2JqZWN0LmFzc2lnbih7fSxlLmhlYWRlcnMpLHQudDI9IkJlYXJlciAiLHQubmV4dD03LG4uZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDc6dC50Mz10LnNlbnQsdC50ND10LnQyLmNvbmNhdC5jYWxsKHQudDIsdC50MyksdC50NT17QXV0aG9yaXphdGlvbjp0LnQ0fSxlLmhlYWRlcnM9dC50MC5hc3NpZ24uY2FsbCh0LnQwLHQudDEsdC50NSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdC50MD1udWxsPT11P3ZvaWQgMDp1LmluaXQsIXQudDApe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5uZXh0PTEyLHUuaW5pdCghMCxjKTtjYXNlIDEyOnJldHVybiBmPWZ1bmN0aW9uKGUpeyhudWxsPT11P3ZvaWQgMDp1LnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaykmJnUuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKGUpfSxoPWZ1bmN0aW9uKGUpeyhudWxsPT11P3ZvaWQgMDp1LnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKSYmdS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKX0scD1mdW5jdGlvbihlKXsobnVsbD09dT92b2lkIDA6dS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSYmdS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKGUpfSxkPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sbyxhLGMsZixoLHA7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9ITEsdC5uZXh0PTMscy5nZXRDb25maWdEYXRhKCk7Y2FzZSAzOnJldHVybiBjPXQuc2VudCxmPTAsdC50MD1bXSx0LnQxPWwsdC5uZXh0PTkscy5nZXRDb25maWdEYXRhKCk7Y2FzZSA5OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTM7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTM6aWYoIXQudDMpe3QubmV4dD0xNzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMTg6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTIyO2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDIyOmlmKCF0LnQyKXt0Lm5leHQ9MjY7YnJlYWt9dC50Nz1uLHQubmV4dD0yNzticmVhaztjYXNlIDI2OnQudDc9W107Y2FzZSAyNzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bbnVsbD09Yz92b2lkIDA6Yy5zZXJ2ZXJPcmlnaW5dLGg9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzE6aWYoIShmPGgubGVuZ3RoKSl7dC5uZXh0PTM5O2JyZWFrfWlmKHA9aFtmXSwhKG51bGw9PT0obz1udWxsPT1lP3ZvaWQgMDplLnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aChwKSkpe3QubmV4dD0zNjticmVha31yZXR1cm4gYT0hMCx0LmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDM2OmYrKyx0Lm5leHQ9MzE7YnJlYWs7Y2FzZSAzOTppZighYSl7dC5uZXh0PTQzO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIix1LnJlcXVlc3QoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7dmFyIHI7cmV0dXJuIDQwMSE9PShudWxsPT09KHI9bnVsbD09dD92b2lkIDA6dC5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzKSYmKG51bGw9PXQ/dm9pZCAwOnQucmVzcG9uc2UpP1Byb21pc2UucmVqZWN0KHQpOlMoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB1LnJlcXVlc3QoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFNvKCJXT1JLRVJfQ09SRS1IUi1FUzAxIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdCIsIiIsIiIsZSkpfSkpfSkpKTtjYXNlIDQzOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLUhSLUlWMDIiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0IiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbyxhLGMsZixoLHAsZCx2LGcseSxtLHc7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGM9ITAsdC5uZXh0PTMscy5nZXRDb25maWdEYXRhKCk7Y2FzZSAzOmY9dC5zZW50LGg9UG8oZSksdC5wcmV2PTUsaC5zKCk7Y2FzZSA3OmlmKChwPWgubigpKS5kb25lKXt0Lm5leHQ9NTA7YnJlYWt9cmV0dXJuIGQ9cC52YWx1ZSx2PSExLGc9MCx0LnQwPVtdLHQudDE9bCx0Lm5leHQ9MTUscy5nZXRDb25maWdEYXRhKCk7Y2FzZSAxNTppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTE5O2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDE5OmlmKCF0LnQzKXt0Lm5leHQ9MjM7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDI0OmlmKHQudDY9bz10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yODticmVha310LnQyPXZvaWQgMCE9PW87Y2FzZSAyODppZighdC50Mil7dC5uZXh0PTMyO2JyZWFrfXQudDc9byx0Lm5leHQ9MzM7YnJlYWs7Y2FzZSAzMjp0LnQ3PVtdO2Nhc2UgMzM6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W251bGw9PWY/dm9pZCAwOmYuc2VydmVyT3JpZ2luXSx5PXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDM3OmlmKCEoZzx5Lmxlbmd0aCkpe3QubmV4dD00NTticmVha31pZihtPXlbZ10sIShudWxsPT09KGE9ZC51cmwpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN0YXJ0c1dpdGgobSkpKXt0Lm5leHQ9NDI7YnJlYWt9cmV0dXJuIHY9ITAsdC5hYnJ1cHQoImJyZWFrIiw0NSk7Y2FzZSA0MjpnKyssdC5uZXh0PTM3O2JyZWFrO2Nhc2UgNDU6aWYodil7dC5uZXh0PTQ4O2JyZWFrfXJldHVybiBjPSExLHQuYWJydXB0KCJicmVhayIsNTApO2Nhc2UgNDg6dC5uZXh0PTc7YnJlYWs7Y2FzZSA1MDp0Lm5leHQ9NTU7YnJlYWs7Y2FzZSA1Mjp0LnByZXY9NTIsdC50MTE9dC5jYXRjaCg1KSxoLmUodC50MTEpO2Nhc2UgNTU6cmV0dXJuIHQucHJldj01NSxoLmYoKSx0LmZpbmlzaCg1NSk7Y2FzZSA1ODppZih3PVtdLCFjKXt0Lm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dy5wdXNoKHUucmVxdWVzdChlKSl9KSksdC5hYnJ1cHQoInJldHVybiIsKG51bGw9PXU/dm9pZCAwOnUuYWxsKSYmdS5hbGwodykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDQwMT09PShudWxsPT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc3RhdHVzKT9uLnJlZnJlc2hBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHUuYWxsJiZ1LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLUhSQS1FUzAxIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdEFsbCIsIiIsIiIsZSkpfSkpOlByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDY0OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLUhSQS1JVjAyIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdCIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbNSw1Miw1NSw1OF1dKX0pKSl9LGc9ZnVuY3Rpb24oKXt1LmVuYWJsZUhhbmRsZXImJnUuZW5hYmxlSGFuZGxlcigpfSx5PWZ1bmN0aW9uKCl7dS5kaXNhYmxlSGFuZGxlciYmdS5kaXNhYmxlSGFuZGxlcigpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixuLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9ZSx0Lm5leHQ9MyxuLmdldFBLQ0VDb2RlKCk7Y2FzZSAzOnJldHVybiB0LnQxPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDp0LnQwLHBrY2U6dC50MX0pO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHc9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxiPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgdTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihpKXtmb3IoOzspc3dpdGNoKGkucHJldj1pLm5leHQpe2Nhc2UgMDpyZXR1cm4gaS5uZXh0PTIscy5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKHU9aS5zZW50LCFyfHwhdS5lbmFibGVQS0NFKXtpLm5leHQ9NjticmVha31yZXR1cm4gaS5uZXh0PTYsbi5zZXRQS0NFQ29kZShyKTtjYXNlIDY6aWYoIWUpe2kubmV4dD04O2JyZWFrfXJldHVybiBpLmFicnVwdCgicmV0dXJuIixuLnJlcXVlc3RBY2Nlc3NUb2tlbihlLG51bGwhPXQ/dDoiIikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksbi5nZXRCYXNpY1VzZXJJbmZvKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA4OnJldHVybiBpLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLVJBVDEtTkYwMSIsIndvcmtlci1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlLiIsIk5vIGF1dGhvcml6YXRpb24gY29kZSB3YXMgZm91bmQuIikpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBpLnN0b3AoKX19KSxhKX0pKSl9LGs9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxuLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG4uZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LF89ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsdSxjLGYsaCxwLGQsdixnO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBmPSEwLGg9ITEsdC5uZXh0PTQscy5nZXRDb25maWdEYXRhKCk7Y2FzZSA0OmlmKHA9dC5zZW50LCEobnVsbD09ZT92b2lkIDA6ZS50b2tlbkVuZHBvaW50KSl7dC5uZXh0PTQyO2JyZWFrfXJldHVybiBmPSExLGQ9MCx0LnQwPVtdLHQudDE9bCx0Lm5leHQ9MTIscy5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMjppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTE2O2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDE2OmlmKCF0LnQzKXt0Lm5leHQ9MjA7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTIxO2JyZWFrO2Nhc2UgMjA6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDIxOmlmKHQudDY9dT10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yNTticmVha310LnQyPXZvaWQgMCE9PXU7Y2FzZSAyNTppZighdC50Mil7dC5uZXh0PTI5O2JyZWFrfXQudDc9dSx0Lm5leHQ9MzA7YnJlYWs7Y2FzZSAyOTp0LnQ3PVtdO2Nhc2UgMzA6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W251bGw9PXA/dm9pZCAwOnAuc2VydmVyT3JpZ2luXSx2PXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDM0OmlmKCEoZDx2Lmxlbmd0aCkpe3QubmV4dD00MjticmVha31pZihnPXZbZF0sIShudWxsPT09KGM9ZS50b2tlbkVuZHBvaW50KXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGFydHNXaXRoKGcpKSl7dC5uZXh0PTM5O2JyZWFrfXJldHVybiBoPSEwLHQuYWJydXB0KCJicmVhayIsNDIpO2Nhc2UgMzk6ZCsrLHQubmV4dD0zNDticmVhaztjYXNlIDQyOmlmKGUuc2hvdWxkUmVwbGF5QWZ0ZXJSZWZyZXNoJiZzLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoa28sSlNPTi5zdHJpbmdpZnkoZSkpLCFmJiYhaCl7dC5uZXh0PTQ3O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixuLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZighZS5yZXR1cm5zU2Vzc2lvbil7ci5uZXh0PTU7YnJlYWt9cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHIuYWJydXB0KCJyZXR1cm4iLG4uZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHQpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDQ3OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLVJDRy1JVjAxIiwid29ya2VyLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCB0b2tlbiBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sUz1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9MyxuLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsTSgpO2Nhc2UgNTppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUubmV4dD05LF8odCk7Y2FzZSA5OnJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIixuLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTNdXSl9KSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIG4ucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sQT1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixuLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxSPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LFA9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbi5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRBY2Nlc3NUb2tlbigpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNBdXRoZW50aWNhdGVkKCl9LEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHMuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sST1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsbi51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxVPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHMuZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE09ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIscy5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGtvKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sdC5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjp5LGVuYWJsZUh0dHBIYW5kbGVyOmcsZ2V0QWNjZXNzVG9rZW46QyxnZXRBdXRob3JpemF0aW9uVVJMOm0sZ2V0QmFzaWNVc2VySW5mbzpBLGdldENvbmZpZ0RhdGE6VSxnZXREZWNvZGVkSURUb2tlbjpULGdldElEVG9rZW46UixnZXRPSURDU2VydmljZUVuZHBvaW50czpQLGdldFNpZ25PdXRVUkw6eCxodHRwUmVxdWVzdDpkLGh0dHBSZXF1ZXN0QWxsOnYsaXNBdXRoZW50aWNhdGVkOk8scmVmcmVzaEFjY2Vzc1Rva2VuOlMscmVxdWVzdEFjY2Vzc1Rva2VuOmIscmVxdWVzdEN1c3RvbUdyYW50Ol8scmV2b2tlQWNjZXNzVG9rZW46RSxzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrOnAsc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrOmYsc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s6aCxzZXRTZXNzaW9uU3RhdGU6RCxzaWduT3V0Omssc3RhcnRBdXRvUmVmcmVzaFRva2VuOncsdXBkYXRlQ29uZmlnOkl9KTtjYXNlIDM4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxJbz1zZWxmO0lvLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEscj1lLnBvcnRzO3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLG8sYSxzLHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocz1yWzBdLHQudHlwZT09PWJvfHxPbyl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgU28oIkNMSUVOVF9XT1JLRVItT05NU0ctTkYwMSIsImNsaWVudC53b3JrZXIiLHQudHlwZSwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09Ym8/NzoiZ2V0X2F1dGhfdXJsIj09PWUudDA/MjI6InJlcXVlc3RfZ2V0X3Rva2VuIj09PWUudDA/MjQ6Imh0dHAtcmVxdWVzdCI9PT1lLnQwPzI2OiJodHRwLXJlcXVlc3QtYWxsIj09PWUudDA/Mjg6InNpZ24tb3V0Ij09PWUudDA/MzA6InJlcXVlc3QtY3VzdG9tLWdyYW50Ij09PWUudDA/NDQ6InJldm9rZS1hY2Nlc3MtdG9rZW4iPT09ZS50MD80NjoiZ2V0LW9pZGMtc2VydmljZS1lbmRwb2ludHMiPT09ZS50MD80ODoiZ2V0LWJhc2ljLXVzZXItaW5mbyI9PT1lLnQwPzYyOiJnZXQtZGVjb2RlZC1pZC10b2tlbiI9PT1lLnQwPzc2OiJnZXRfaWRfdG9rZW4iPT09ZS50MD85MDoiZW5hYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNDoiZGlzYWJsZV9odHRwX2hhbmRsZXIiPT09ZS50MD8xMDc6ImlzX2F1dGhlbnRpY2F0ZWQiPT09ZS50MD8xMTA6ImdldF9zaWduX291dF91cmwiPT09ZS50MD8xMjQ6InJlZnJlc2hfYWNjZXNzLXRva2VuIj09PWUudDA/MTM4OiJzdGFydF9hdXRvX3JlZnJlc2hfdG9rZW4iPT09ZS50MD8xNTI6InNldF9zZXNzaW9uX3N0YXRlIj09PWUudDA/MTU0OiJ1cGRhdGVfY29uZmlnIj09PWUudDA/MTY4OiJnZXRfY29uZmlnX2RhdGEiPT09ZS50MD8xODI6MTk2O2JyZWFrO2Nhc2UgNzpyZXR1cm4gZS5wcmV2PTcsdT1PYmplY3QuYXNzaWduKHt9LHQuZGF0YSksZS5uZXh0PTExLERvKHUpO2Nhc2UgMTE6KE9vPWUuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhMbyksT28uc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKFVvKSxPby5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhNbykscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUubmV4dD0yMTticmVhaztjYXNlIDE4OmUucHJldj0xOCxlLnQxPWUuY2F0Y2goNykscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gT28uZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIE9vLnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KG49bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb2RlLG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnNlc3Npb25TdGF0ZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5wa2NlKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI2OnJldHVybiBPby5odHRwUmVxdWVzdCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIE9vLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gZS5wcmV2PTMwLGUudDI9cyxlLnQzPUFvLGUubmV4dD0zNSxPby5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDYpKTtjYXNlIDQzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NDpyZXR1cm4gT28ucmVxdWVzdEN1c3RvbUdyYW50KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gT28ucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiBlLnByZXY9NDgsZS50Nz1zLGUudDg9QW8sZS5uZXh0PTUzLE9vLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDExKSk7Y2FzZSA2MTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNjI6cmV0dXJuIGUucHJldj02MixlLnQxMj1zLGUudDEzPUFvLGUubmV4dD02NyxPby5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSA2NzplLnQxND1lLnNlbnQsZS50MTU9ZS50MTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDEzLGUudDE0KSxlLnQxMi5wb3N0TWVzc2FnZS5jYWxsKGUudDEyLGUudDE1KSxlLm5leHQ9NzU7YnJlYWs7Y2FzZSA3MjplLnByZXY9NzIsZS50MTY9ZS5jYXRjaCg2Mikscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PUFvLGUubmV4dD04MSxPby5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ZS50MTk9ZS5zZW50LGUudDIwPWUudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxOCxlLnQxOSksZS50MTcucG9zdE1lc3NhZ2UuY2FsbChlLnQxNyxlLnQyMCksZS5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ZS5wcmV2PTg2LGUudDIxPWUuY2F0Y2goNzYpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyMSkpO2Nhc2UgODk6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiBlLnByZXY9OTAsZS50MjI9cyxlLnQyMz1BbyxlLm5leHQ9OTUsT28uZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyNikpO2Nhc2UgMTAzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDQ6cmV0dXJuIE9vLmVuYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNzpyZXR1cm4gT28uZGlzYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PUFvLGUubmV4dD0xMTUsT28uaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMTU6ZS50Mjk9ZS5zZW50LGUudDMwPWUudDI4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyOCxlLnQyOSksZS50MjcucG9zdE1lc3NhZ2UuY2FsbChlLnQyNyxlLnQzMCksZS5uZXh0PTEyMzticmVhaztjYXNlIDEyMDplLnByZXY9MTIwLGUudDMxPWUuY2F0Y2goMTEwKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzEpKTtjYXNlIDEyMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTI0OnJldHVybiBlLnByZXY9MTI0LGUudDMyPXMsZS50MzM9QW8sZS5uZXh0PTEyOSxPby5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzYpKTtjYXNlIDEzNzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTM4OnJldHVybiBlLnByZXY9MTM4LGUudDM3PXMsZS50Mzg9QW8sZS5uZXh0PTE0MyxPby5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzplLnQzOT1lLnNlbnQsZS50NDA9ZS50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDM4LGUudDM5KSxlLnQzNy5wb3N0TWVzc2FnZS5jYWxsKGUudDM3LGUudDQwKSxlLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OmUucHJldj0xNDgsZS50NDE9ZS5jYXRjaCgxMzgpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShPby5zdGFydEF1dG9SZWZyZXNoVG9rZW4oKSkpfWNhdGNoKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1NDpyZXR1cm4gZS5wcmV2PTE1NCxlLnQ0Mj1zLGUudDQzPUFvLGUubmV4dD0xNTksT28uc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NDYpKTtjYXNlIDE2NzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTY4OnJldHVybiBlLnByZXY9MTY4LGUudDQ3PXMsZS50NDg9QW8sZS5uZXh0PTE3MyxPby51cGRhdGVDb25maWcobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE3MzplLnQ0OT1lLnNlbnQsZS50NTA9ZS50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQ4LGUudDQ5KSxlLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDQ3LGUudDUwKSxlLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OmUucHJldj0xNzgsZS50NTE9ZS5jYXRjaCgxNjgpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1BbyxlLm5leHQ9MTg3LE9vLmdldENvbmZpZ0RhdGEoKTtjYXNlIDE4NzplLnQ1ND1lLnNlbnQsZS50NTU9ZS50NTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDUzLGUudDU0KSxlLnQ1Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDUyLGUudDU1KSxlLm5leHQ9MTk1O2JyZWFrO2Nhc2UgMTkyOmUucHJldj0xOTIsZS50NTY9ZS5jYXRjaCgxODIpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1NikpO2Nhc2UgMTk1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxOTY6bnVsbD09c3x8cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBTbygiQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiY2xpZW50LndvcmtlciIsIm9ubWVzc2FnZSIsIlRoZSBtZXNzYWdlIHR5cGUgaXMgaW52YWxpZC4iLCJUaGUgbWVzc2FnZSB0eXBlIHByb3ZpZGVkLCAiLmNvbmNhdCh0LnR5cGUsIiwgaXMgaW52YWxpZC4iKSkpKTtjYXNlIDE5NzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzcsMThdLFszMCw0MF0sWzQ4LDU4XSxbNjIsNzJdLFs3Niw4Nl0sWzkwLDEwMF0sWzExMCwxMjBdLFsxMjQsMTM0XSxbMTM4LDE0OF0sWzE1NCwxNjRdLFsxNjgsMTc4XSxbMTgyLDE5Ml1dKX0pKSl9O3ZhciBVbz1mdW5jdGlvbigpe0lvLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LXN0YXJ0In0pfSxNbz1mdW5jdGlvbihlKXtJby5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sTG89ZnVuY3Rpb24oKXtJby5wb3N0TWVzc2FnZSh7dHlwZToicmVxdWVzdC1maW5pc2gifSl9O3JldHVybnt9fSgpOwoK",YS=null,RS=!1,function(t){return LS=LS||gS(SS,YS,RS),new Worker(LS,t)}),KS=function(e){var n,r,i=null!==(n=null==e?void 0:e.requestTimeout)&&void 0!==n?n:6e4,c=!0,l=pS((function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e,n;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:Hg},t.prev=1,t.next=4,a(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",ZS.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),e.storage,(function(t){return u(t)})),o=new xS,a=function(t){var e=new MessageChannel;return o.postMessage(t,[e.port2]),new Promise((function(t,n){var r=setTimeout((function(){n(new hS("WEB_WORKER_CLIENT-COM-TO-01","web-worker-client","communicate","Operation timed out.","No response was received from the web worker for "+i/1e3+" since dispatching the request"))}),i);return e.port1.onmessage=function(e){var i=e.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),t(c)}else n(i.error?JSON.parse(i.error):null)}}))},u=function(t){return a({data:t,type:"set_session_state"})},d=function(){return a({type:"start_auto_refresh_token"})},s=function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e,n,r,i,c,o;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,h();case 2:return c=t.sent,t.next=5,b();case 5:o=t.sent,l.initialize(o.clientID,null!==(e=c.checkSessionIframe)&&void 0!==e?e:"",(function(){return IG(void 0,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Z();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=o.checkSessionInterval)&&void 0!==n?n:3,null!==(r=o.sessionRefreshInterval)&&void 0!==r?r:300,o.signInRedirectURL,null!==(i=c.authorizationEndpoint)&&void 0!==i?i:"",o.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},m=function(t,e){return IG(void 0,void 0,void 0,GG.mark((function n(){var r,i;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,b();case 2:return r=n.sent,i={data:{code:t,pkce:r.enablePKCE?ZS.getPKCE():void 0,sessionState:e},type:"request_get_token"},r.enablePKCE&&ZS.removePKCE(),n.abrupt("return",a(i).then((function(t){return a({type:"get_sign_out_url"}).then((function(e){return ZS.setSignOutURL(e),r.enableOIDCSessionManagement&&s(),d(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 6:case"end":return n.stop()}}),n)})))},h=function(){return a({type:"get-oidc-service-endpoints"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},b=function(){return a({type:"get_config_data"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},Z=function(){return a({type:"get-basic-user-info"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},p=function(){return a({type:"is_authenticated"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))};return{disableHttpHandler:function(){return a({type:"disable_http_handler"}).then((function(){return c=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},enableHttpHandler:function(){return a({type:"enable_http_handler"}).then((function(){return c=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},getBasicUserInfo:Z,getDecodedIDToken:function(){return a({type:"get-decoded-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getIDToken:function(){return a({type:"get_id_token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getOIDCServiceEndpoints:h,httpRequest:function(t){return a({data:t,type:"http-request"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c){e.next=5;break}if("function"!=typeof r.requestErrorCallback){e.next=4;break}return e.next=4,r.requestErrorCallback(t);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},httpRequestAll:function(t){return a({data:t,type:"http-request-all"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c){e.next=5;break}if("function"!=typeof r.requestErrorCallback){e.next=4;break}return e.next=4,r.requestErrorCallback(t);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},initialize:function(){return r||(r={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),o.onmessage=function(t){var e=t.data;switch(e.type){case"request-finish":(null==r?void 0:r.requestFinishCallback)&&(null==r||r.requestFinishCallback());break;case"request-start":(null==r?void 0:r.requestStartCallback)&&(null==r||r.requestStartCallback());break;case"request-success":(null==r?void 0:r.requestSuccessCallback)&&(null==r||r.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},a({data:e,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},isAuthenticated:p,refreshAccessToken:function(){return a({type:"refresh_access-token"})},requestCustomGrant:function(t){return a({data:t,type:"request-custom-grant"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},revokeAccessToken:function(){return a({type:"revoke-access-token"}).then((function(t){return l.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},setHttpRequestErrorCallback:function(t){t&&"function"==typeof t&&(r.requestErrorCallback=t)},setHttpRequestFinishCallback:function(t){t&&"function"==typeof t&&(r.requestFinishCallback=t)},setHttpRequestStartCallback:function(t){t&&"function"==typeof t&&(r.requestStartCallback=t)},setHttpRequestSuccessCallback:function(t){t&&"function"==typeof t&&(r.requestSuccessCallback=t)},signIn:function(e,n,r){return IG(void 0,void 0,void 0,GG.mark((function i(){var c,o,h,y,X,f,G,I,V;return GG.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,b();case 2:return h=i.sent,i.next=5,l.receivePromptNoneResponse((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u(t));case 1:case"end":return e.stop()}}),e)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(y=new URL(window.location.href).searchParams.get(Mg),X=new URL(window.location.href).searchParams.get(Bg),!y){i.next=16;break}return(f=new URL(window.location.href)).searchParams.delete(Mg),f.searchParams.delete(Bg),history.pushState(null,document.title,f.toString()),i.abrupt("return",Promise.reject(new hS("WEB_WORKER_CLIENT-SI-BE","web-worker-client","signIn",y,null!=X?X:"")));case 16:return i.next=18,p();case 18:if(!i.sent){i.next=23;break}return i.next=21,d();case 21:return h.enableOIDCSessionManagement&&s(),i.abrupt("return",Z());case 23:if((null==h?void 0:h.responseMode)===t.ResponseMode.formPost&&n?(G=n,I=null!=r?r:""):(G=null!==(c=new URL(window.location.href).searchParams.get(VW))&&void 0!==c?c:"",I=null!==(o=new URL(window.location.href).searchParams.get(WW))&&void 0!==o?o:"",ZS.removeAuthorizationCode()),!G){i.next=26;break}return i.abrupt("return",m(G,I));case 26:return V={data:e,type:Ng},i.abrupt("return",a(V).then((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&h.enablePKCE&&ZS.setPKCE(t.pkce),location.href=t.authorizationURL,e.next=4,ZS.waitTillPageRedirect();case 4:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 5:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 28:case"end":return i.stop()}}),i)})))},signOut:function(){return p().then((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=5;break}return n={type:Hg},e.abrupt("return",a(n).then((function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,ZS.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=ZS.getSignOutURL(),e.next=8,ZS.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},trySignInSilently:function(){return IG(void 0,void 0,void 0,GG.mark((function t(){var e,n,r,i,c,o,u,d,s;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b();case 2:if(n=t.sent,!ZS.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,l.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return r=document.getElementById(wg),i=null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById(Tg),c={data:{prompt:"none",state:jg},type:Ng},t.prev=10,t.next=13,a(c);case 13:(o=t.sent).pkce&&n.enablePKCE&&ZS.setPKCE(o.pkce),u=o.authorizationURL,(d=new URL(u)).searchParams.set("response_mode","query"),s=d.toString(),i.src=s,t.next=25;break;case 22:return t.prev=22,t.t0=t.catch(10),t.abrupt("return",Promise.reject(t.t0));case 25:return t.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(i){return IG(void 0,void 0,void 0,GG.mark((function c(){var l,o,a,u;return GG.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(u=i.data)?void 0:u.type)==kg&&(window.removeEventListener("message",r),clearTimeout(n),t(!1)),(null==u?void 0:u.type)==Cg&&(null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.code)&&m(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 26:case"end":return t.stop()}}),t,null,[[10,22]])})))},updateConfig:function(t){return IG(void 0,void 0,void 0,GG.mark((function e(){var n,r,i,c;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),c={data:i,type:"update_config"},e.next=8,a(c);case 8:i.enableOIDCSessionManagement&&r&&(l.reset(),s());case 9:case"end":return e.stop()}}),e)})))}}},JS={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:t.Storage.SessionStorage},HS="primaryInstance",NS=function(){function e(t){yG(this,e),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=t}return fG(e,[{key:"_isInitialized",value:function(){return IG(this,void 0,void 0,GG.mark((function t(){var e,n;return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1e3)}))};case 4:if(this._initialized){t.next=11;break}return 10===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return IG(this,void 0,void 0,GG.mark((function t(){return GG.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}},{key:"initialize",value:function(e){var n;return IG(this,void 0,void 0,GG.mark((function r(){var i,c,l,o=this;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(this._storage=null!==(n=e.storage)&&void 0!==n?n:t.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===t.Storage.WebWorker){r.next=15;break}if(this._client){r.next=10;break}return i=e,c=Object.assign({},JS),r.next=9,vS(Object.assign(Object.assign({},c),i));case 9:this._client=r.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),r.abrupt("return",Promise.resolve(!0));case 15:if(this._client){r.next=19;break}return l=e,this._client=KS(Object.assign(Object.assign({},JS),l)),r.abrupt("return",this._client.initialize().then((function(){return o._onInitialize&&o._onInitialize(!0),o._initialized=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)})));case 19:return r.abrupt("return",Promise.resolve(!0));case 20:case"end":return r.stop()}}),r,this)})))}},{key:"getBasicUserInfo",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getBasicUserInfo());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"signIn",value:function(t,e,n){var r;return IG(this,void 0,void 0,GG.mark((function i(){var c=this;return GG.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._isInitialized();case 2:if(ZS.canContinueSignIn(Boolean(null==t?void 0:t.callOnlyOnRedirect),e)){i.next=4;break}return i.abrupt("return");case 4:return null==t||delete t.callOnlyOnRedirect,i.abrupt("return",null===(r=this._client)||void 0===r?void 0:r.signIn(t,e,n).then((function(t){return c._onSignInCallback&&(t.allowedScopes||t.displayName||t.email||t.username)&&c._onSignInCallback(t),t})));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"trySignInSilently",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){var n=this;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(!ZS.wasSignInCalled()){e.next=4;break}return e.abrupt("return");case 4:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.trySignInSilently().then((function(t){if(n._onSignInCallback&&t){var e=t;(e.allowedScopes||e.displayName||e.email||e.username)&&n._onSignInCallback(e)}return t})));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"signOut",value:function(){var t,e;return IG(this,void 0,void 0,GG.mark((function n(){var r;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(t=this._client)||void 0===t?void 0:t.signOut();case 4:if(n.t1=e=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==e;case 8:if(!n.t0){n.next=12;break}n.t2=e,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequest",value:function(t){var e;return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequest(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequestAll",value:function(t){var e;return IG(this,void 0,void 0,GG.mark((function n(){return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequestAll(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"requestCustomGrant",value:function(t){var e,n;return IG(this,void 0,void 0,GG.mark((function r(){var i,c;return GG.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!t.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(t.id){r.next=9;break}return r.abrupt("return",Promise.reject(new hS("AUTH_CLIENT-RCG-NF01","client","requestCustomGrant","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(e=this._client)||void 0===e?void 0:e.requestCustomGrant(t);case 11:return i=r.sent,(c=this._onCustomGrant.get(t.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(t.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}},{key:"revokeAccessToken",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){var n;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.next=4,null===(t=this._client)||void 0===t?void 0:t.revokeAccessToken();case 4:if(n=e.sent,e.t0=this._onEndUserSession,!e.t0){e.next=9;break}return e.next=9,this._onEndUserSession(n);case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getOIDCServiceEndpoints());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==t.Storage.WebWorker)return this._client.getHttpClient();throw new hS("AUTH_CLIENT-GHC-IV01","client","getHttpClient","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new hS("AUTH_CLIENT-GHC-NF02","client","getHttpClient","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK suing the initialize method before calling this method.")}},{key:"getDecodedIDToken",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getDecodedIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getIDToken",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessToken",value:function(){return IG(this,void 0,void 0,GG.mark((function e(){var n;return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new hS("AUTH_CLIENT-GAT-IV01","client","getAccessToken","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"refreshAccessToken",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.refreshAccessToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.isAuthenticated());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"on",value:function(e,n,r){var i,c,l,o;return IG(this,void 0,void 0,GG.mark((function a(){return GG.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){a.next=28;break}a.t0=e,a.next=a.t0===t.Hooks.SignIn?6:a.t0===t.Hooks.SignOut?8:a.t0===t.Hooks.RevokeAccessToken?11:a.t0===t.Hooks.Initialize?13:a.t0===t.Hooks.HttpRequestError?15:a.t0===t.Hooks.HttpRequestFinish?17:a.t0===t.Hooks.HttpRequestStart?19:a.t0===t.Hooks.HttpRequestSuccess?21:a.t0===t.Hooks.CustomGrant?23:25;break;case 6:return this._onSignInCallback=n,a.abrupt("break",26);case 8:return this._onSignOutCallback=n,ZS.isSignOutSuccessful()&&this._onSignOutCallback(),a.abrupt("break",26);case 11:return this._onEndUserSession=n,a.abrupt("break",26);case 13:return this._onInitialize=n,a.abrupt("break",26);case 15:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),a.abrupt("break",26);case 17:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),a.abrupt("break",26);case 19:return null===(l=this._client)||void 0===l||l.setHttpRequestStartCallback(n),a.abrupt("break",26);case 21:return null===(o=this._client)||void 0===o||o.setHttpRequestSuccessCallback(n),a.abrupt("break",26);case 23:return r&&this._onCustomGrant.set(r,n),a.abrupt("break",26);case 25:throw new hS("AUTH_CLIENT-ON-IV01","client","on","Invalid hook.","The provided hook is invalid.");case 26:a.next=29;break;case 28:throw new hS("AUTH_CLIENT-ON-IV02","client","on","Invalid callback function.","The provided callback function is invalid.");case 29:case"end":return a.stop()}}),a,this)})))}},{key:"enableHttpHandler",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.enableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"disableHttpHandler",value:function(){var t;return IG(this,void 0,void 0,GG.mark((function e(){return GG.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.disableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(e){return IG(this,void 0,void 0,GG.mark((function n(){var r,i;return GG.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==t.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(e);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(e);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(t){var n,r;return t&&(null===(n=this._instances)||void 0===n?void 0:n.get(t))?this._instances.get(t):!t&&(null===(r=this._instances)||void 0===r?void 0:r.get(HS))?this._instances.get(HS):t?(this._instances.set(t,new e(t)),this._instances.get(t)):(this._instances.set(HS,new e(HS)),this._instances.get(HS))}}]),e}();function CS(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=MG(t);if(e){var i=MG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return zG(this,n)}}NS._instances=new Map;var kS=function(t){FG(n,t);var e=CS(n);function n(){var t;return yG(this,n),(t=e.apply(this,arguments)).onmessage=function(){return null},t}return n}(OG(Worker));return t.AUTHORIZATION_CODE=VW,t.AsgardeoAuthClient=Jg,t.AsgardeoSPAClient=NS,t.CLIENT_ID_TAG="{{clientID}}",t.CLIENT_SECRET_TAG="{{clientSecret}}",t.OIDC_SCOPE="openid",t.PKCE_CODE_VERIFIER=IW,t.REFRESH_TOKEN_TIMER=GW,t.SCOPE_TAG="{{scope}}",t.SESSION_STATE=WW,t.SIGN_OUT_SUCCESS_PARAM="sign_out_success",t.SIGN_OUT_URL=vW,t.SPAUtils=ZS,t.TOKEN_TAG="{{token}}",t.USERNAME_TAG="{{username}}",t.WebWorkerClass=kS,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
|
|
1
|
+
var AsgardeoAuth=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function o(e,t,n,r,i,c,a){try{var o=e[c](a),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function a(e){o(c,r,i,a,l,"next",e)}function l(e){o(c,r,i,a,l,"throw",e)}a(void 0)}))}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&d(e.prototype,t),n&&d(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){if("function"!=typeof t&&null!==t)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&&Z(e,t)}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function Z(e,t){return Z=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Z(e,t)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function y(e,t,n){return y=p()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&Z(i,n.prototype),i},y.apply(null,arguments)}function X(e){var t="function"==typeof Map?new Map:void 0;return X=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return y(e,arguments,b(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Z(r,e)},X(e)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function G(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}function V(e){var t=p();return function(){var n,r=b(e);if(t){var i=b(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return G(this,n)}}function I(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return c}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=g(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,a=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,c=e},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var R=function(e){return e&&e.Math==Math&&e},Y=R("object"==("undefined"==typeof globalThis?"undefined":a(globalThis))&&globalThis)||R("object"==("undefined"==typeof window?"undefined":a(window))&&window)||R("object"==("undefined"==typeof self?"undefined":a(self))&&self)||R("object"==a(t)&&t)||function(){return this}()||Function("return this")(),J={},K=function(e){try{return!!e()}catch(e){return!0}},L=!K((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),N=!K((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),x=N,H=Function.prototype.call,k=x?H.bind(H):function(){return H.apply(H,arguments)},U={},C={}.propertyIsEnumerable,w=Object.getOwnPropertyDescriptor,T=w&&!C.call({1:2},1);U.f=T?function(e){var t=w(this,e);return!!t&&t.enumerable}:C;var F,j,z=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},P=N,M=Function.prototype,Q=M.bind,B=M.call,D=P&&Q.bind(B,B),E=P?function(e){return e&&D(e)}:function(e){return e&&function(){return B.apply(e,arguments)}},O=E,A=O({}.toString),_=O("".slice),q=function(e){return _(A(e),8,-1)},$=E,ee=K,te=q,ne=Y.Object,re=$("".split),ie=ee((function(){return!ne("z").propertyIsEnumerable(0)}))?function(e){return"String"==te(e)?re(e,""):ne(e)}:ne,ce=Y.TypeError,ae=function(e){if(null==e)throw ce("Can't call method on "+e);return e},oe=ie,le=ae,ue=function(e){return oe(le(e))},de=function(e){return"function"==typeof e},se=de,me=function(e){return"object"==a(e)?null!==e:se(e)},he=Y,be=de,Ze=function(e){return be(e)?e:void 0},pe=function(e,t){return arguments.length<2?Ze(he[e]):he[e]&&he[e][t]},ye=E({}.isPrototypeOf),Xe=pe("navigator","userAgent")||"",fe=Y,Ge=Xe,Ve=fe.process,Ie=fe.Deno,We=Ve&&Ve.versions||Ie&&Ie.version,ge=We&&We.v8;ge&&(j=(F=ge.split("."))[0]>0&&F[0]<4?1:+(F[0]+F[1])),!j&&Ge&&(!(F=Ge.match(/Edge\/(\d+)/))||F[1]>=74)&&(F=Ge.match(/Chrome\/(\d+)/))&&(j=+F[1]);var ve=j,Se=ve,Re=K,Ye=!!Object.getOwnPropertySymbols&&!Re((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Se&&Se<41})),Je=Ye&&!Symbol.sham&&"symbol"==a(Symbol.iterator),Ke=pe,Le=de,Ne=ye,xe=Je,He=Y.Object,ke=xe?function(e){return"symbol"==a(e)}:function(e){var t=Ke("Symbol");return Le(t)&&Ne(t.prototype,He(e))},Ue=Y.String,Ce=function(e){try{return Ue(e)}catch(e){return"Object"}},we=de,Te=Ce,Fe=Y.TypeError,je=function(e){if(we(e))return e;throw Fe(Te(e)+" is not a function")},ze=je,Pe=function(e,t){var n=e[t];return null==n?void 0:ze(n)},Me=k,Qe=de,Be=me,De=Y.TypeError,Ee=function(e,t){var n,r;if("string"===t&&Qe(n=e.toString)&&!Be(r=Me(n,e)))return r;if(Qe(n=e.valueOf)&&!Be(r=Me(n,e)))return r;if("string"!==t&&Qe(n=e.toString)&&!Be(r=Me(n,e)))return r;throw De("Can't convert object to primitive value")},Oe={exports:{}},Ae=Y,_e=Object.defineProperty,qe=function(e,t){try{_e(Ae,e,{value:t,configurable:!0,writable:!0})}catch(n){Ae[e]=t}return t},$e=qe,et="__core-js_shared__",tt=Y[et]||$e(et,{}),nt=tt;(Oe.exports=function(e,t){return nt[e]||(nt[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.21.1",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"});var rt=ae,it=Y.Object,ct=function(e){return it(rt(e))},at=ct,ot=E({}.hasOwnProperty),lt=Object.hasOwn||function(e,t){return ot(at(e),t)},ut=E,dt=0,st=Math.random(),mt=ut(1..toString),ht=function(e){return"Symbol("+(void 0===e?"":e)+")_"+mt(++dt+st,36)},bt=Y,Zt=Oe.exports,pt=lt,yt=ht,Xt=Ye,ft=Je,Gt=Zt("wks"),Vt=bt.Symbol,It=Vt&&Vt.for,Wt=ft?Vt:Vt&&Vt.withoutSetter||yt,gt=function(e){if(!pt(Gt,e)||!Xt&&"string"!=typeof Gt[e]){var t="Symbol."+e;Xt&&pt(Vt,e)?Gt[e]=Vt[e]:Gt[e]=ft&&It?It(t):Wt(t)}return Gt[e]},vt=k,St=me,Rt=ke,Yt=Pe,Jt=Ee,Kt=gt,Lt=Y.TypeError,Nt=Kt("toPrimitive"),xt=function(e,t){if(!St(e)||Rt(e))return e;var n,r=Yt(e,Nt);if(r){if(void 0===t&&(t="default"),n=vt(r,e,t),!St(n)||Rt(n))return n;throw Lt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Jt(e,t)},Ht=xt,kt=ke,Ut=function(e){var t=Ht(e,"string");return kt(t)?t:t+""},Ct=me,wt=Y.document,Tt=Ct(wt)&&Ct(wt.createElement),Ft=function(e){return Tt?wt.createElement(e):{}},jt=Ft,zt=!L&&!K((function(){return 7!=Object.defineProperty(jt("div"),"a",{get:function(){return 7}}).a})),Pt=L,Mt=k,Qt=U,Bt=z,Dt=ue,Et=Ut,Ot=lt,At=zt,_t=Object.getOwnPropertyDescriptor;J.f=Pt?_t:function(e,t){if(e=Dt(e),t=Et(t),At)try{return _t(e,t)}catch(e){}if(Ot(e,t))return Bt(!Mt(Qt.f,e,t),e[t])};var qt={},$t=L&&K((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),en=Y,tn=me,nn=en.String,rn=en.TypeError,cn=function(e){if(tn(e))return e;throw rn(nn(e)+" is not an object")},an=L,on=zt,ln=$t,un=cn,dn=Ut,sn=Y.TypeError,mn=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,bn="enumerable",Zn="configurable",pn="writable";qt.f=an?ln?function(e,t,n){if(un(e),t=dn(t),un(n),"function"==typeof e&&"prototype"===t&&"value"in n&&pn in n&&!n.writable){var r=hn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:Zn in n?n.configurable:r.configurable,enumerable:bn in n?n.enumerable:r.enumerable,writable:!1})}return mn(e,t,n)}:mn:function(e,t,n){if(un(e),t=dn(t),un(n),on)try{return mn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw sn("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var yn=qt,Xn=z,fn=L?function(e,t,n){return yn.f(e,t,Xn(1,n))}:function(e,t,n){return e[t]=n,e},Gn={exports:{}},Vn=de,In=tt,Wn=E(Function.toString);Vn(In.inspectSource)||(In.inspectSource=function(e){return Wn(e)});var gn,vn,Sn,Rn=In.inspectSource,Yn=de,Jn=Rn,Kn=Y.WeakMap,Ln=Yn(Kn)&&/native code/.test(Jn(Kn)),Nn=Oe.exports,xn=ht,Hn=Nn("keys"),kn=function(e){return Hn[e]||(Hn[e]=xn(e))},Un={},Cn=Ln,wn=Y,Tn=E,Fn=me,jn=fn,zn=lt,Pn=tt,Mn=kn,Qn=Un,Bn="Object already initialized",Dn=wn.TypeError,En=wn.WeakMap;if(Cn||Pn.state){var On=Pn.state||(Pn.state=new En),An=Tn(On.get),_n=Tn(On.has),qn=Tn(On.set);gn=function(e,t){if(_n(On,e))throw new Dn(Bn);return t.facade=e,qn(On,e,t),t},vn=function(e){return An(On,e)||{}},Sn=function(e){return _n(On,e)}}else{var $n=Mn("state");Qn[$n]=!0,gn=function(e,t){if(zn(e,$n))throw new Dn(Bn);return t.facade=e,jn(e,$n,t),t},vn=function(e){return zn(e,$n)?e[$n]:{}},Sn=function(e){return zn(e,$n)}}var er={set:gn,get:vn,has:Sn,enforce:function(e){return Sn(e)?vn(e):gn(e,{})},getterFor:function(e){return function(t){var n;if(!Fn(t)||(n=vn(t)).type!==e)throw Dn("Incompatible receiver, "+e+" required");return n}}},tr=L,nr=lt,rr=Function.prototype,ir=tr&&Object.getOwnPropertyDescriptor,cr=nr(rr,"name"),ar={EXISTS:cr,PROPER:cr&&"something"===function(){}.name,CONFIGURABLE:cr&&(!tr||tr&&ir(rr,"name").configurable)},or=Y,lr=de,ur=lt,dr=fn,sr=qe,mr=Rn,hr=ar.CONFIGURABLE,br=er.get,Zr=er.enforce,pr=String(String).split("String");(Gn.exports=function(e,t,n,r){var i,c=!!r&&!!r.unsafe,a=!!r&&!!r.enumerable,o=!!r&&!!r.noTargetGet,l=r&&void 0!==r.name?r.name:t;lr(n)&&("Symbol("===String(l).slice(0,7)&&(l="["+String(l).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ur(n,"name")||hr&&n.name!==l)&&dr(n,"name",l),(i=Zr(n)).source||(i.source=pr.join("string"==typeof l?l:""))),e!==or?(c?!o&&e[t]&&(a=!0):delete e[t],a?e[t]=n:dr(e,t,n)):a?e[t]=n:sr(t,n)})(Function.prototype,"toString",(function(){return lr(this)&&br(this).source||mr(this)}));var yr={},Xr=Math.ceil,fr=Math.floor,Gr=function(e){var t=+e;return t!=t||0===t?0:(t>0?fr:Xr)(t)},Vr=Gr,Ir=Math.max,Wr=Math.min,gr=function(e,t){var n=Vr(e);return n<0?Ir(n+t,0):Wr(n,t)},vr=Gr,Sr=Math.min,Rr=function(e){return e>0?Sr(vr(e),9007199254740991):0},Yr=Rr,Jr=function(e){return Yr(e.length)},Kr=ue,Lr=gr,Nr=Jr,xr=function(e){return function(t,n,r){var i,c=Kr(t),a=Nr(c),o=Lr(r,a);if(e&&n!=n){for(;a>o;)if((i=c[o++])!=i)return!0}else for(;a>o;o++)if((e||o in c)&&c[o]===n)return e||o||0;return!e&&-1}},Hr={includes:xr(!0),indexOf:xr(!1)},kr=lt,Ur=ue,Cr=Hr.indexOf,wr=Un,Tr=E([].push),Fr=function(e,t){var n,r=Ur(e),i=0,c=[];for(n in r)!kr(wr,n)&&kr(r,n)&&Tr(c,n);for(;t.length>i;)kr(r,n=t[i++])&&(~Cr(c,n)||Tr(c,n));return c},jr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],zr=Fr,Pr=jr.concat("length","prototype");yr.f=Object.getOwnPropertyNames||function(e){return zr(e,Pr)};var Mr={};Mr.f=Object.getOwnPropertySymbols;var Qr=pe,Br=yr,Dr=Mr,Er=cn,Or=E([].concat),Ar=Qr("Reflect","ownKeys")||function(e){var t=Br.f(Er(e)),n=Dr.f;return n?Or(t,n(e)):t},_r=lt,qr=Ar,$r=J,ei=qt,ti=function(e,t,n){for(var r=qr(t),i=ei.f,c=$r.f,a=0;a<r.length;a++){var o=r[a];_r(e,o)||n&&_r(n,o)||i(e,o,c(t,o))}},ni=K,ri=de,ii=/#|\.prototype\./,ci=function(e,t){var n=oi[ai(e)];return n==ui||n!=li&&(ri(t)?ni(t):!!t)},ai=ci.normalize=function(e){return String(e).replace(ii,".").toLowerCase()},oi=ci.data={},li=ci.NATIVE="N",ui=ci.POLYFILL="P",di=ci,si=Y,mi=J.f,hi=fn,bi=Gn.exports,Zi=qe,pi=ti,yi=di,Xi=function(e,t){var n,r,i,c,o,l=e.target,u=e.global,d=e.stat;if(n=u?si:d?si[l]||Zi(l,{}):(si[l]||{}).prototype)for(r in t){if(c=t[r],i=e.noTargetGet?(o=mi(n,r))&&o.value:n[r],!yi(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(a(c)==a(i))continue;pi(c,i)}(e.sham||i&&i.sham)&&hi(c,"sham",!0),bi(n,r,c,e)}},fi=N,Gi=Function.prototype,Vi=Gi.apply,Ii=Gi.call,Wi="object"==("undefined"==typeof Reflect?"undefined":a(Reflect))&&Reflect.apply||(fi?Ii.bind(Vi):function(){return Ii.apply(Vi,arguments)}),gi=q,vi=Array.isArray||function(e){return"Array"==gi(e)},Si={};Si[gt("toStringTag")]="z";var Ri="[object z]"===String(Si),Yi=Y,Ji=Ri,Ki=de,Li=q,Ni=gt("toStringTag"),xi=Yi.Object,Hi="Arguments"==Li(function(){return arguments}()),ki=Ji?Li:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=xi(e),Ni))?n:Hi?Li(t):"Object"==(r=Li(t))&&Ki(t.callee)?"Arguments":r},Ui=ki,Ci=Y.String,wi=function(e){if("Symbol"===Ui(e))throw TypeError("Cannot convert a Symbol value to a string");return Ci(e)},Ti={},Fi=Fr,ji=jr,zi=Object.keys||function(e){return Fi(e,ji)},Pi=L,Mi=$t,Qi=qt,Bi=cn,Di=ue,Ei=zi;Ti.f=Pi&&!Mi?Object.defineProperties:function(e,t){Bi(e);for(var n,r=Di(t),i=Ei(t),c=i.length,a=0;c>a;)Qi.f(e,n=i[a++],r[n]);return e};var Oi,Ai=pe("document","documentElement"),_i=cn,qi=Ti,$i=jr,ec=Un,tc=Ai,nc=Ft,rc=kn("IE_PROTO"),ic=function(){},cc=function(e){return"<script>"+e+"</"+"script>"},ac=function(e){e.write(cc("")),e.close();var t=e.parentWindow.Object;return e=null,t},oc=function(){try{Oi=new ActiveXObject("htmlfile")}catch(e){}var e,t;oc="undefined"!=typeof document?document.domain&&Oi?ac(Oi):((t=nc("iframe")).style.display="none",tc.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(cc("document.F=Object")),e.close(),e.F):ac(Oi);for(var n=$i.length;n--;)delete oc.prototype[$i[n]];return oc()};ec[rc]=!0;var lc=Object.create||function(e,t){var n;return null!==e?(ic.prototype=_i(e),n=new ic,ic.prototype=null,n[rc]=e):n=oc(),void 0===t?n:qi.f(n,t)},uc={},dc=Ut,sc=qt,mc=z,hc=function(e,t,n){var r=dc(t);r in e?sc.f(e,r,mc(0,n)):e[r]=n},bc=gr,Zc=Jr,pc=hc,yc=Y.Array,Xc=Math.max,fc=function(e,t,n){for(var r=Zc(e),i=bc(t,r),c=bc(void 0===n?r:n,r),a=yc(Xc(c-i,0)),o=0;i<c;i++,o++)pc(a,o,e[i]);return a.length=o,a},Gc=q,Vc=ue,Ic=yr.f,Wc=fc,gc="object"==("undefined"==typeof window?"undefined":a(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];uc.f=function(e){return gc&&"Window"==Gc(e)?function(e){try{return Ic(e)}catch(e){return Wc(gc)}}(e):Ic(Vc(e))};var vc=E([].slice),Sc={},Rc=gt;Sc.f=Rc;var Yc=Y,Jc=lt,Kc=Sc,Lc=qt.f,Nc=function(e){var t=Yc.Symbol||(Yc.Symbol={});Jc(t,e)||Lc(t,e,{value:Kc.f(e)})},xc=qt.f,Hc=lt,kc=gt("toStringTag"),Uc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Hc(e,kc)&&xc(e,kc,{configurable:!0,value:t})},Cc=je,wc=N,Tc=E(E.bind),Fc=function(e,t){return Cc(e),void 0===t?e:wc?Tc(e,t):function(){return e.apply(t,arguments)}},jc=E,zc=K,Pc=de,Mc=ki,Qc=Rn,Bc=function(){},Dc=[],Ec=pe("Reflect","construct"),Oc=/^\s*(?:class|function)\b/,Ac=jc(Oc.exec),_c=!Oc.exec(Bc),qc=function(e){if(!Pc(e))return!1;try{return Ec(Bc,Dc,e),!0}catch(e){return!1}},$c=function(e){if(!Pc(e))return!1;switch(Mc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return _c||!!Ac(Oc,Qc(e))}catch(e){return!0}};$c.sham=!0;var ea=!Ec||zc((function(){var e;return qc(qc.call)||!qc(Object)||!qc((function(){e=!0}))||e}))?$c:qc,ta=Y,na=vi,ra=ea,ia=me,ca=gt("species"),aa=ta.Array,oa=function(e){var t;return na(e)&&(t=e.constructor,(ra(t)&&(t===aa||na(t.prototype))||ia(t)&&null===(t=t[ca]))&&(t=void 0)),void 0===t?aa:t},la=function(e,t){return new(oa(e))(0===t?0:t)},ua=Fc,da=ie,sa=ct,ma=Jr,ha=la,ba=E([].push),Za=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,a=7==e,o=5==e||c;return function(l,u,d,s){for(var m,h,b=sa(l),Z=da(b),p=ua(u,d),y=ma(Z),X=0,f=s||ha,G=t?f(l,y):n||a?f(l,0):void 0;y>X;X++)if((o||X in Z)&&(h=p(m=Z[X],X,b),e))if(t)G[X]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return X;case 2:ba(G,m)}else switch(e){case 4:return!1;case 7:ba(G,m)}return c?-1:r||i?i:G}},pa={forEach:Za(0),map:Za(1),filter:Za(2),some:Za(3),every:Za(4),find:Za(5),findIndex:Za(6),filterReject:Za(7)},ya=Xi,Xa=Y,fa=pe,Ga=Wi,Va=k,Ia=E,Wa=L,ga=Ye,va=K,Sa=lt,Ra=vi,Ya=de,Ja=me,Ka=ye,La=ke,Na=cn,xa=ct,Ha=ue,ka=Ut,Ua=wi,Ca=z,wa=lc,Ta=zi,Fa=yr,ja=uc,za=Mr,Pa=J,Ma=qt,Qa=Ti,Ba=U,Da=vc,Ea=Gn.exports,Oa=Oe.exports,Aa=Un,_a=ht,qa=gt,$a=Sc,eo=Nc,to=Uc,no=er,ro=pa.forEach,io=kn("hidden"),co="Symbol",ao=qa("toPrimitive"),oo=no.set,lo=no.getterFor(co),uo=Object.prototype,so=Xa.Symbol,mo=so&&so.prototype,ho=Xa.TypeError,bo=Xa.QObject,Zo=fa("JSON","stringify"),po=Pa.f,yo=Ma.f,Xo=ja.f,fo=Ba.f,Go=Ia([].push),Vo=Oa("symbols"),Io=Oa("op-symbols"),Wo=Oa("string-to-symbol-registry"),go=Oa("symbol-to-string-registry"),vo=Oa("wks"),So=!bo||!bo.prototype||!bo.prototype.findChild,Ro=Wa&&va((function(){return 7!=wa(yo({},"a",{get:function(){return yo(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=po(uo,t);r&&delete uo[t],yo(e,t,n),r&&e!==uo&&yo(uo,t,r)}:yo,Yo=function(e,t){var n=Vo[e]=wa(mo);return oo(n,{type:co,tag:e,description:t}),Wa||(n.description=t),n},Jo=function(e,t,n){e===uo&&Jo(Io,t,n),Na(e);var r=ka(t);return Na(n),Sa(Vo,r)?(n.enumerable?(Sa(e,io)&&e[io][r]&&(e[io][r]=!1),n=wa(n,{enumerable:Ca(0,!1)})):(Sa(e,io)||yo(e,io,Ca(1,{})),e[io][r]=!0),Ro(e,r,n)):yo(e,r,n)},Ko=function(e,t){Na(e);var n=Ha(t),r=Ta(n).concat(Ho(n));return ro(r,(function(t){Wa&&!Va(Lo,n,t)||Jo(e,t,n[t])})),e},Lo=function(e){var t=ka(e),n=Va(fo,this,t);return!(this===uo&&Sa(Vo,t)&&!Sa(Io,t))&&(!(n||!Sa(this,t)||!Sa(Vo,t)||Sa(this,io)&&this[io][t])||n)},No=function(e,t){var n=Ha(e),r=ka(t);if(n!==uo||!Sa(Vo,r)||Sa(Io,r)){var i=po(n,r);return!i||!Sa(Vo,r)||Sa(n,io)&&n[io][r]||(i.enumerable=!0),i}},xo=function(e){var t=Xo(Ha(e)),n=[];return ro(t,(function(e){Sa(Vo,e)||Sa(Aa,e)||Go(n,e)})),n},Ho=function(e){var t=e===uo,n=Xo(t?Io:Ha(e)),r=[];return ro(n,(function(e){!Sa(Vo,e)||t&&!Sa(uo,e)||Go(r,Vo[e])})),r};(ga||(so=function(){if(Ka(mo,this))throw ho("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Ua(arguments[0]):void 0,t=_a(e),n=function e(n){this===uo&&Va(e,Io,n),Sa(this,io)&&Sa(this[io],t)&&(this[io][t]=!1),Ro(this,t,Ca(1,n))};return Wa&&So&&Ro(uo,t,{configurable:!0,set:n}),Yo(t,e)},Ea(mo=so.prototype,"toString",(function(){return lo(this).tag})),Ea(so,"withoutSetter",(function(e){return Yo(_a(e),e)})),Ba.f=Lo,Ma.f=Jo,Qa.f=Ko,Pa.f=No,Fa.f=ja.f=xo,za.f=Ho,$a.f=function(e){return Yo(qa(e),e)},Wa&&(yo(mo,"description",{configurable:!0,get:function(){return lo(this).description}}),Ea(uo,"propertyIsEnumerable",Lo,{unsafe:!0}))),ya({global:!0,wrap:!0,forced:!ga,sham:!ga},{Symbol:so}),ro(Ta(vo),(function(e){eo(e)})),ya({target:co,stat:!0,forced:!ga},{for:function(e){var t=Ua(e);if(Sa(Wo,t))return Wo[t];var n=so(t);return Wo[t]=n,go[n]=t,n},keyFor:function(e){if(!La(e))throw ho(e+" is not a symbol");if(Sa(go,e))return go[e]},useSetter:function(){So=!0},useSimple:function(){So=!1}}),ya({target:"Object",stat:!0,forced:!ga,sham:!Wa},{create:function(e,t){return void 0===t?wa(e):Ko(wa(e),t)},defineProperty:Jo,defineProperties:Ko,getOwnPropertyDescriptor:No}),ya({target:"Object",stat:!0,forced:!ga},{getOwnPropertyNames:xo,getOwnPropertySymbols:Ho}),ya({target:"Object",stat:!0,forced:va((function(){za.f(1)}))},{getOwnPropertySymbols:function(e){return za.f(xa(e))}}),Zo)&&ya({target:"JSON",stat:!0,forced:!ga||va((function(){var e=so();return"[null]"!=Zo([e])||"{}"!=Zo({a:e})||"{}"!=Zo(Object(e))}))},{stringify:function(e,t,n){var r=Da(arguments),i=t;if((Ja(t)||void 0!==e)&&!La(e))return Ra(t)||(t=function(e,t){if(Ya(i)&&(t=Va(i,this,e,t)),!La(t))return t}),r[1]=t,Ga(Zo,null,r)}});if(!mo[ao]){var ko=mo.valueOf;Ea(mo,ao,(function(e){return Va(ko,this)}))}to(so,co),Aa[io]=!0;var Uo=Xi,Co=L,wo=Y,To=E,Fo=lt,jo=de,zo=ye,Po=wi,Mo=qt.f,Qo=ti,Bo=wo.Symbol,Do=Bo&&Bo.prototype;if(Co&&jo(Bo)&&(!("description"in Do)||void 0!==Bo().description)){var Eo={},Oo=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Po(arguments[0]),t=zo(Do,this)?new Bo(e):void 0===e?Bo():Bo(e);return""===e&&(Eo[t]=!0),t};Qo(Oo,Bo),Oo.prototype=Do,Do.constructor=Oo;var Ao="Symbol(test)"==String(Bo("test")),_o=To(Do.toString),qo=To(Do.valueOf),$o=/^Symbol\((.*)\)[^)]+$/,el=To("".replace),tl=To("".slice);Mo(Do,"description",{configurable:!0,get:function(){var e=qo(this),t=_o(e);if(Fo(Eo,e))return"";var n=Ao?tl(t,7,-1):el(t,$o,"$1");return""===n?void 0:n}}),Uo({global:!0,forced:!0},{Symbol:Oo})}Nc("asyncIterator"),Nc("hasInstance"),Nc("isConcatSpreadable"),Nc("iterator"),Nc("match"),Nc("matchAll"),Nc("replace"),Nc("search"),Nc("species"),Nc("split"),Nc("toPrimitive"),Nc("toStringTag"),Nc("unscopables");var nl=K,rl=ve,il=gt("species"),cl=function(e){return rl>=51||!nl((function(){var t=[];return(t.constructor={})[il]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},al=Xi,ol=Y,ll=K,ul=vi,dl=me,sl=ct,ml=Jr,hl=hc,bl=la,Zl=cl,pl=ve,yl=gt("isConcatSpreadable"),Xl=9007199254740991,fl="Maximum allowed index exceeded",Gl=ol.TypeError,Vl=pl>=51||!ll((function(){var e=[];return e[yl]=!1,e.concat()[0]!==e})),Il=Zl("concat"),Wl=function(e){if(!dl(e))return!1;var t=e[yl];return void 0!==t?!!t:ul(e)};al({target:"Array",proto:!0,forced:!Vl||!Il},{concat:function(e){var t,n,r,i,c,a=sl(this),o=bl(a,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(Wl(c=-1===t?a:arguments[t])){if(l+(i=ml(c))>Xl)throw Gl(fl);for(n=0;n<i;n++,l++)n in c&&hl(o,l,c[n])}else{if(l>=Xl)throw Gl(fl);hl(o,l++,c)}return o.length=l,o}});var gl=ct,vl=gr,Sl=Jr,Rl=Math.min,Yl=[].copyWithin||function(e,t){var n=gl(this),r=Sl(n),i=vl(e,r),c=vl(t,r),a=arguments.length>2?arguments[2]:void 0,o=Rl((void 0===a?r:vl(a,r))-c,r-i),l=1;for(c<i&&i<c+o&&(l=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:delete n[i],i+=l,c+=l;return n},Jl=lc,Kl=qt,Ll=gt("unscopables"),Nl=Array.prototype;null==Nl[Ll]&&Kl.f(Nl,Ll,{configurable:!0,value:Jl(null)});var xl=function(e){Nl[Ll][e]=!0},Hl=xl;Xi({target:"Array",proto:!0},{copyWithin:Yl}),Hl("copyWithin");var kl=ct,Ul=gr,Cl=Jr,wl=function(e){for(var t=kl(this),n=Cl(t),r=arguments.length,i=Ul(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:Ul(c,n);a>i;)t[i++]=e;return t},Tl=xl;Xi({target:"Array",proto:!0},{fill:wl}),Tl("fill");var Fl=pa.filter;Xi({target:"Array",proto:!0,forced:!cl("filter")},{filter:function(e){return Fl(this,e,arguments.length>1?arguments[1]:void 0)}});var jl=Xi,zl=pa.find,Pl=xl,Ml="find",Ql=!0;Ml in[]&&Array(1).find((function(){Ql=!1})),jl({target:"Array",proto:!0,forced:Ql},{find:function(e){return zl(this,e,arguments.length>1?arguments[1]:void 0)}}),Pl(Ml);var Bl=Xi,Dl=pa.findIndex,El=xl,Ol="findIndex",Al=!0;Ol in[]&&Array(1).findIndex((function(){Al=!1})),Bl({target:"Array",proto:!0,forced:Al},{findIndex:function(e){return Dl(this,e,arguments.length>1?arguments[1]:void 0)}}),El(Ol);var _l=vi,ql=Jr,$l=Fc,eu=Y.TypeError,tu=function e(t,n,r,i,c,a,o,l){for(var u,d=c,s=0,m=!!o&&$l(o,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],a>0&&_l(u))d=e(t,n,u,ql(u),d,a-1)-1;else{if(d>=9007199254740991)throw eu("Exceed the acceptable array length");t[d]=u}d++}s++}return d},nu=tu,ru=ct,iu=Jr,cu=Gr,au=la;Xi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=ru(this),n=iu(t),r=au(t,0);return r.length=nu(r,t,t,n,0,void 0===e?1:cu(e)),r}});var ou=tu,lu=je,uu=ct,du=Jr,su=la;Xi({target:"Array",proto:!0},{flatMap:function(e){var t,n=uu(this),r=du(n);return lu(e),(t=su(n,0)).length=ou(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var mu=k,hu=cn,bu=Pe,Zu=function(e,t,n){var r,i;hu(e);try{if(!(r=bu(e,"return"))){if("throw"===t)throw n;return n}r=mu(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return hu(r),n},pu=cn,yu=Zu,Xu={},fu=Xu,Gu=gt("iterator"),Vu=Array.prototype,Iu=function(e){return void 0!==e&&(fu.Array===e||Vu[Gu]===e)},Wu=ki,gu=Pe,vu=Xu,Su=gt("iterator"),Ru=function(e){if(null!=e)return gu(e,Su)||gu(e,"@@iterator")||vu[Wu(e)]},Yu=k,Ju=je,Ku=cn,Lu=Ce,Nu=Ru,xu=Y.TypeError,Hu=function(e,t){var n=arguments.length<2?Nu(e):t;if(Ju(n))return Ku(Yu(n,e));throw xu(Lu(e)+" is not iterable")},ku=Fc,Uu=k,Cu=ct,wu=function(e,t,n,r){try{return r?t(pu(n)[0],n[1]):t(n)}catch(t){yu(e,"throw",t)}},Tu=Iu,Fu=ea,ju=Jr,zu=hc,Pu=Hu,Mu=Ru,Qu=Y.Array,Bu=function(e){var t=Cu(e),n=Fu(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=ku(i,r>2?arguments[2]:void 0));var a,o,l,u,d,s,m=Mu(t),h=0;if(!m||this==Qu&&Tu(m))for(a=ju(t),o=n?new this(a):Qu(a);a>h;h++)s=c?i(t[h],h):t[h],zu(o,h,s);else for(d=(u=Pu(t,m)).next,o=n?new this:[];!(l=Uu(d,u)).done;h++)s=c?wu(u,i,[l.value,h],!0):l.value,zu(o,h,s);return o.length=h,o},Du=gt("iterator"),Eu=!1;try{var Ou=0,Au={next:function(){return{done:!!Ou++}},return:function(){Eu=!0}};Au[Du]=function(){return this},Array.from(Au,(function(){throw 2}))}catch(e){}var _u=function(e,t){if(!t&&!Eu)return!1;var n=!1;try{var r={};r[Du]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},qu=Bu;Xi({target:"Array",stat:!0,forced:!_u((function(e){Array.from(e)}))},{from:qu});var $u=Hr.includes,ed=xl;Xi({target:"Array",proto:!0},{includes:function(e){return $u(this,e,arguments.length>1?arguments[1]:void 0)}}),ed("includes");var td,nd,rd,id=!K((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),cd=Y,ad=lt,od=de,ld=ct,ud=id,dd=kn("IE_PROTO"),sd=cd.Object,md=sd.prototype,hd=ud?sd.getPrototypeOf:function(e){var t=ld(e);if(ad(t,dd))return t[dd];var n=t.constructor;return od(n)&&t instanceof n?n.prototype:t instanceof sd?md:null},bd=K,Zd=de,pd=hd,yd=Gn.exports,Xd=gt("iterator"),fd=!1;[].keys&&("next"in(rd=[].keys())?(nd=pd(pd(rd)))!==Object.prototype&&(td=nd):fd=!0);var Gd=null==td||bd((function(){var e={};return td[Xd].call(e)!==e}));Gd&&(td={}),Zd(td[Xd])||yd(td,Xd,(function(){return this}));var Vd={IteratorPrototype:td,BUGGY_SAFARI_ITERATORS:fd},Id=Vd.IteratorPrototype,Wd=lc,gd=z,vd=Uc,Sd=Xu,Rd=function(){return this},Yd=function(e,t,n,r){var i=t+" Iterator";return e.prototype=Wd(Id,{next:gd(+!r,n)}),vd(e,i,!1),Sd[i]=Rd,e},Jd=Y,Kd=de,Ld=Jd.String,Nd=Jd.TypeError,xd=function(e){if("object"==a(e)||Kd(e))return e;throw Nd("Can't set "+Ld(e)+" as a prototype")},Hd=E,kd=cn,Ud=xd,Cd=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Hd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return kd(n),Ud(r),t?e(n,r):n.__proto__=r,n}}():void 0),wd=Xi,Td=k,Fd=ar,jd=de,zd=Yd,Pd=hd,Md=Cd,Qd=Uc,Bd=fn,Dd=Gn.exports,Ed=Xu,Od=Fd.PROPER,Ad=Fd.CONFIGURABLE,_d=Vd.IteratorPrototype,qd=Vd.BUGGY_SAFARI_ITERATORS,$d=gt("iterator"),es="keys",ts="values",ns="entries",rs=function(){return this},is=function(e,t,n,r,i,c,a){zd(n,t,r);var o,l,u,d=function(e){if(e===i&&Z)return Z;if(!qd&&e in h)return h[e];switch(e){case es:case ts:case ns:return function(){return new n(this,e)}}return function(){return new n(this)}},s=t+" Iterator",m=!1,h=e.prototype,b=h[$d]||h["@@iterator"]||i&&h[i],Z=!qd&&b||d(i),p="Array"==t&&h.entries||b;if(p&&(o=Pd(p.call(new e)))!==Object.prototype&&o.next&&(Pd(o)!==_d&&(Md?Md(o,_d):jd(o[$d])||Dd(o,$d,rs)),Qd(o,s,!0)),Od&&i==ts&&b&&b.name!==ts&&(Ad?Bd(h,"name",ts):(m=!0,Z=function(){return Td(b,this)})),i)if(l={values:d(ts),keys:c?Z:d(es),entries:d(ns)},a)for(u in l)(qd||m||!(u in h))&&Dd(h,u,l[u]);else wd({target:t,proto:!0,forced:qd||m},l);return h[$d]!==Z&&Dd(h,$d,Z,{name:i}),Ed[t]=Z,l},cs=ue,as=xl,os=Xu,ls=er,us=qt.f,ds=is,ss=L,ms="Array Iterator",hs=ls.set,bs=ls.getterFor(ms),Zs=ds(Array,"Array",(function(e,t){hs(this,{type:ms,target:cs(e),index:0,kind:t})}),(function(){var e=bs(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),ps=os.Arguments=os.Array;if(as("keys"),as("values"),as("entries"),ss&&"values"!==ps.name)try{us(ps,"name",{value:"values"})}catch(e){}var ys=K,Xs=function(e,t){var n=[][e];return!!n&&ys((function(){n.call(null,t||function(){return 1},1)}))},fs=Xi,Gs=ie,Vs=ue,Is=Xs,Ws=E([].join),gs=Gs!=Object,vs=Is("join",",");fs({target:"Array",proto:!0,forced:gs||!vs},{join:function(e){return Ws(Vs(this),void 0===e?",":e)}});var Ss=pa.map;Xi({target:"Array",proto:!0,forced:!cl("map")},{map:function(e){return Ss(this,e,arguments.length>1?arguments[1]:void 0)}});var Rs=Xi,Ys=K,Js=ea,Ks=hc,Ls=Y.Array;Rs({target:"Array",stat:!0,forced:Ys((function(){function e(){}return!(Ls.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(Js(this)?this:Ls)(t);t>e;)Ks(n,e,arguments[e++]);return n.length=t,n}});var Ns=Xi,xs=Y,Hs=vi,ks=ea,Us=me,Cs=gr,ws=Jr,Ts=ue,Fs=hc,js=gt,zs=vc,Ps=cl("slice"),Ms=js("species"),Qs=xs.Array,Bs=Math.max;Ns({target:"Array",proto:!0,forced:!Ps},{slice:function(e,t){var n,r,i,c=Ts(this),a=ws(c),o=Cs(e,a),l=Cs(void 0===t?a:t,a);if(Hs(c)&&(n=c.constructor,(ks(n)&&(n===Qs||Hs(n.prototype))||Us(n)&&null===(n=n[Ms]))&&(n=void 0),n===Qs||void 0===n))return zs(c,o,l);for(r=new(void 0===n?Qs:n)(Bs(l-o,0)),i=0;o<l;o++,i++)o in c&&Fs(r,i,c[o]);return r.length=i,r}});var Ds=fc,Es=Math.floor,Os=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},As=function(e,t,n,r){for(var i=t.length,c=n.length,a=0,o=0;a<i||o<c;)e[a+o]=a<i&&o<c?r(t[a],n[o])<=0?t[a++]:n[o++]:a<i?t[a++]:n[o++];return e},_s=function e(t,n){var r=t.length,i=Es(r/2);return r<8?Os(t,n):As(t,e(Ds(t,0,i),n),e(Ds(t,i),n),n)},qs=Xe.match(/firefox\/(\d+)/i),$s=!!qs&&+qs[1],em=/MSIE|Trident/.test(Xe),tm=Xe.match(/AppleWebKit\/(\d+)\./),nm=!!tm&&+tm[1],rm=Xi,im=E,cm=je,am=ct,om=Jr,lm=wi,um=K,dm=_s,sm=Xs,mm=$s,hm=em,bm=ve,Zm=nm,pm=[],ym=im(pm.sort),Xm=im(pm.push),fm=um((function(){pm.sort(void 0)})),Gm=um((function(){pm.sort(null)})),Vm=sm("sort"),Im=!um((function(){if(bm)return bm<70;if(!(mm&&mm>3)){if(hm)return!0;if(Zm)return Zm<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)pm.push({k:t+r,v:n})}for(pm.sort((function(e,t){return t.v-e.v})),r=0;r<pm.length;r++)t=pm[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));rm({target:"Array",proto:!0,forced:fm||!Gm||!Vm||!Im},{sort:function(e){void 0!==e&&cm(e);var t=am(this);if(Im)return void 0===e?ym(t):ym(t,e);var n,r,i=[],c=om(t);for(r=0;r<c;r++)r in t&&Xm(i,t[r]);for(dm(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:lm(t)>lm(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var Wm=pe,gm=qt,vm=L,Sm=gt("species"),Rm=function(e){var t=Wm(e),n=gm.f;vm&&t&&!t[Sm]&&n(t,Sm,{configurable:!0,get:function(){return this}})};Rm("Array");var Ym=Xi,Jm=Y,Km=gr,Lm=Gr,Nm=Jr,xm=ct,Hm=la,km=hc,Um=cl("splice"),Cm=Jm.TypeError,wm=Math.max,Tm=Math.min,Fm=9007199254740991,jm="Maximum allowed length exceeded";Ym({target:"Array",proto:!0,forced:!Um},{splice:function(e,t){var n,r,i,c,a,o,l=xm(this),u=Nm(l),d=Km(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=Tm(wm(Lm(t),0),u-d)),u+n-r>Fm)throw Cm(jm);for(i=Hm(l,r),c=0;c<r;c++)(a=d+c)in l&&km(i,c,l[a]);if(i.length=r,n<r){for(c=d;c<u-r;c++)o=c+n,(a=c+r)in l?l[o]=l[a]:delete l[o];for(c=u;c>u-r+n;c--)delete l[c-1]}else if(n>r)for(c=u-r;c>d;c--)o=c+n-1,(a=c+r-1)in l?l[o]=l[a]:delete l[o];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-r+n,i}}),xl("flat"),xl("flatMap");var zm="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Pm=Gn.exports,Mm=function(e,t,n){for(var r in t)Pm(e,r,t[r],n);return e},Qm=ye,Bm=Y.TypeError,Dm=function(e,t){if(Qm(t,e))return e;throw Bm("Incorrect invocation")},Em=Gr,Om=Rr,Am=Y.RangeError,_m=function(e){if(void 0===e)return 0;var t=Em(e),n=Om(t);if(t!==n)throw Am("Wrong length or index");return n},qm=Y.Array,$m=Math.abs,eh=Math.pow,th=Math.floor,nh=Math.log,rh=Math.LN2,ih={pack:function(e,t,n){var r,i,c,a=qm(n),o=8*n-t-1,l=(1<<o)-1,u=l>>1,d=23===t?eh(2,-24)-eh(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=$m(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=th(nh(e)/rh),e*(c=eh(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*eh(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*eh(2,t),r+=u):(i=e*eh(2,u-1)*eh(2,t),r=0));t>=8;)a[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,o+=t;o>0;)a[m++]=255&r,r/=256,o-=8;return a[--m]|=128*s,a},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,a=c>>1,o=i-7,l=r-1,u=e[l--],d=127&u;for(u>>=7;o>0;)d=256*d+e[l--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=t;o>0;)n=256*n+e[l--],o-=8;if(0===d)d=1-a;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=eh(2,t),d-=a}return(u?-1:1)*n*eh(2,d-t)}},ch=Y,ah=E,oh=L,lh=zm,uh=ar,dh=fn,sh=Mm,mh=K,hh=Dm,bh=Gr,Zh=Rr,ph=_m,yh=ih,Xh=hd,fh=Cd,Gh=yr.f,Vh=qt.f,Ih=wl,Wh=fc,gh=Uc,vh=uh.PROPER,Sh=uh.CONFIGURABLE,Rh=er.get,Yh=er.set,Jh="ArrayBuffer",Kh="DataView",Lh="Wrong index",Nh=ch.ArrayBuffer,xh=Nh,Hh=xh&&xh.prototype,kh=ch.DataView,Uh=kh&&kh.prototype,Ch=Object.prototype,wh=ch.Array,Th=ch.RangeError,Fh=ah(Ih),jh=ah([].reverse),zh=yh.pack,Ph=yh.unpack,Mh=function(e){return[255&e]},Qh=function(e){return[255&e,e>>8&255]},Bh=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Dh=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Eh=function(e){return zh(e,23,4)},Oh=function(e){return zh(e,52,8)},Ah=function(e,t){Vh(e.prototype,t,{get:function(){return Rh(this)[t]}})},_h=function(e,t,n,r){var i=ph(n),c=Rh(e);if(i+t>c.byteLength)throw Th(Lh);var a=Rh(c.buffer).bytes,o=i+c.byteOffset,l=Wh(a,o,o+t);return r?l:jh(l)},qh=function(e,t,n,r,i,c){var a=ph(n),o=Rh(e);if(a+t>o.byteLength)throw Th(Lh);for(var l=Rh(o.buffer).bytes,u=a+o.byteOffset,d=r(+i),s=0;s<t;s++)l[u+s]=d[c?s:t-s-1]};if(lh){var $h=vh&&Nh.name!==Jh;if(mh((function(){Nh(1)}))&&mh((function(){new Nh(-1)}))&&!mh((function(){return new Nh,new Nh(1.5),new Nh(NaN),$h&&!Sh})))$h&&Sh&&dh(Nh,"name",Jh);else{(xh=function(e){return hh(this,Hh),new Nh(ph(e))}).prototype=Hh;for(var eb,tb=Gh(Nh),nb=0;tb.length>nb;)(eb=tb[nb++])in xh||dh(xh,eb,Nh[eb]);Hh.constructor=xh}fh&&Xh(Uh)!==Ch&&fh(Uh,Ch);var rb=new kh(new xh(2)),ib=ah(Uh.setInt8);rb.setInt8(0,2147483648),rb.setInt8(1,2147483649),!rb.getInt8(0)&&rb.getInt8(1)||sh(Uh,{setInt8:function(e,t){ib(this,e,t<<24>>24)},setUint8:function(e,t){ib(this,e,t<<24>>24)}},{unsafe:!0})}else xh=function(e){hh(this,Hh);var t=ph(e);Yh(this,{bytes:Fh(wh(t),0),byteLength:t}),oh||(this.byteLength=t)},Hh=xh.prototype,kh=function(e,t,n){hh(this,Uh),hh(e,Hh);var r=Rh(e).byteLength,i=bh(t);if(i<0||i>r)throw Th("Wrong offset");if(i+(n=void 0===n?r-i:Zh(n))>r)throw Th("Wrong length");Yh(this,{buffer:e,byteLength:n,byteOffset:i}),oh||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},Uh=kh.prototype,oh&&(Ah(xh,"byteLength"),Ah(kh,"buffer"),Ah(kh,"byteLength"),Ah(kh,"byteOffset")),sh(Uh,{getInt8:function(e){return _h(this,1,e)[0]<<24>>24},getUint8:function(e){return _h(this,1,e)[0]},getInt16:function(e){var t=_h(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=_h(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Dh(_h(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Dh(_h(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Ph(_h(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Ph(_h(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){qh(this,1,e,Mh,t)},setUint8:function(e,t){qh(this,1,e,Mh,t)},setInt16:function(e,t){qh(this,2,e,Qh,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){qh(this,2,e,Qh,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){qh(this,4,e,Bh,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){qh(this,4,e,Bh,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){qh(this,4,e,Eh,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){qh(this,8,e,Oh,t,arguments.length>2?arguments[2]:void 0)}});gh(xh,Jh),gh(kh,Kh);var cb={ArrayBuffer:xh,DataView:kh},ab=Rm,ob="ArrayBuffer",lb=cb.ArrayBuffer;Xi({global:!0,forced:Y.ArrayBuffer!==lb},{ArrayBuffer:lb}),ab(ob);var ub=cn,db=Ee,sb=Y.TypeError,mb=lt,hb=Gn.exports,bb=function(e){if(ub(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw sb("Incorrect hint");return db(this,e)},Zb=gt("toPrimitive"),pb=Date.prototype;mb(pb,Zb)||hb(pb,Zb,bb);var yb=de,Xb=me,fb=qt,Gb=hd,Vb=gt("hasInstance"),Ib=Function.prototype;Vb in Ib||fb.f(Ib,Vb,{value:function(e){if(!yb(this)||!Xb(e))return!1;var t=this.prototype;if(!Xb(t))return e instanceof this;for(;e=Gb(e);)if(t===e)return!0;return!1}});var Wb=L,gb=ar.EXISTS,vb=E,Sb=qt.f,Rb=Function.prototype,Yb=vb(Rb.toString),Jb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Kb=vb(Jb.exec);Wb&&!gb&&Sb(Rb,"name",{configurable:!0,get:function(){try{return Kb(Jb,Yb(this))[1]}catch(e){return""}}}),Xi({global:!0},{globalThis:Y});var Lb=Xi,Nb=pe,xb=Wi,Hb=E,kb=K,Ub=Y.Array,Cb=Nb("JSON","stringify"),wb=Hb(/./.exec),Tb=Hb("".charAt),Fb=Hb("".charCodeAt),jb=Hb("".replace),zb=Hb(1..toString),Pb=/[\uD800-\uDFFF]/g,Mb=/^[\uD800-\uDBFF]$/,Qb=/^[\uDC00-\uDFFF]$/,Bb=function(e,t,n){var r=Tb(n,t-1),i=Tb(n,t+1);return wb(Mb,e)&&!wb(Qb,i)||wb(Qb,e)&&!wb(Mb,r)?"\\u"+zb(Fb(e,0),16):e},Db=kb((function(){return'"\\udf06\\ud834"'!==Cb("\udf06\ud834")||'"\\udead"'!==Cb("\udead")}));Cb&&Lb({target:"JSON",stat:!0,forced:Db},{stringify:function(e,t,n){for(var r=0,i=arguments.length,c=Ub(i);r<i;r++)c[r]=arguments[r];var a=xb(Cb,null,c);return"string"==typeof a?jb(a,Pb,Bb):a}}),Uc(Y.JSON,"JSON",!0);var Eb={exports:{}},Ob=K((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Ab=K,_b=me,qb=q,$b=Ob,eZ=Object.isExtensible,tZ=Ab((function(){eZ(1)}))||$b?function(e){return!!_b(e)&&((!$b||"ArrayBuffer"!=qb(e))&&(!eZ||eZ(e)))}:eZ,nZ=!K((function(){return Object.isExtensible(Object.preventExtensions({}))})),rZ=Xi,iZ=E,cZ=Un,aZ=me,oZ=lt,lZ=qt.f,uZ=yr,dZ=uc,sZ=tZ,mZ=nZ,hZ=!1,bZ=ht("meta"),ZZ=0,pZ=function(e){lZ(e,bZ,{value:{objectID:"O"+ZZ++,weakData:{}}})},yZ=Eb.exports={enable:function(){yZ.enable=function(){},hZ=!0;var e=uZ.f,t=iZ([].splice),n={};n[bZ]=1,e(n).length&&(uZ.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===bZ){t(r,i,1);break}return r},rZ({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:dZ.f}))},fastKey:function(e,t){if(!aZ(e))return"symbol"==a(e)?e:("string"==typeof e?"S":"P")+e;if(!oZ(e,bZ)){if(!sZ(e))return"F";if(!t)return"E";pZ(e)}return e[bZ].objectID},getWeakData:function(e,t){if(!oZ(e,bZ)){if(!sZ(e))return!0;if(!t)return!1;pZ(e)}return e[bZ].weakData},onFreeze:function(e){return mZ&&hZ&&sZ(e)&&!oZ(e,bZ)&&pZ(e),e}};cZ[bZ]=!0;var XZ=Fc,fZ=k,GZ=cn,VZ=Ce,IZ=Iu,WZ=Jr,gZ=ye,vZ=Hu,SZ=Ru,RZ=Zu,YZ=Y.TypeError,JZ=function(e,t){this.stopped=e,this.result=t},KZ=JZ.prototype,LZ=function(e,t,n){var r,i,c,o,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),h=!(!n||!n.IS_ITERATOR),b=!(!n||!n.INTERRUPTED),Z=XZ(t,s),p=function(e){return r&&RZ(r,"normal",e),new JZ(!0,e)},y=function(e){return m?(GZ(e),b?Z(e[0],e[1],p):Z(e[0],e[1])):b?Z(e,p):Z(e)};if(h)r=e;else{if(!(i=SZ(e)))throw YZ(VZ(e)+" is not iterable");if(IZ(i)){for(c=0,o=WZ(e);o>c;c++)if((l=y(e[c]))&&gZ(KZ,l))return l;return new JZ(!1)}r=vZ(e,i)}for(u=r.next;!(d=fZ(u,r)).done;){try{l=y(d.value)}catch(e){RZ(r,"throw",e)}if("object"==a(l)&&l&&gZ(KZ,l))return l}return new JZ(!1)},NZ=de,xZ=me,HZ=Cd,kZ=function(e,t,n){var r,i;return HZ&&NZ(r=t.constructor)&&r!==n&&xZ(i=r.prototype)&&i!==n.prototype&&HZ(e,i),e},UZ=Xi,CZ=Y,wZ=E,TZ=di,FZ=Gn.exports,jZ=Eb.exports,zZ=LZ,PZ=Dm,MZ=de,QZ=me,BZ=K,DZ=_u,EZ=Uc,OZ=kZ,AZ=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",a=CZ[e],o=a&&a.prototype,l=a,u={},d=function(e){var t=wZ(o[e]);FZ(o,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!QZ(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!QZ(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!QZ(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(TZ(e,!MZ(a)||!(i||o.forEach&&!BZ((function(){(new a).entries().next()})))))l=n.getConstructor(t,e,r,c),jZ.enable();else if(TZ(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,h=BZ((function(){s.has(1)})),b=DZ((function(e){new a(e)})),Z=!i&&BZ((function(){for(var e=new a,t=5;t--;)e[c](t,t);return!e.has(-0)}));b||((l=t((function(e,t){PZ(e,o);var n=OZ(new a,e,l);return null!=t&&zZ(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=l),(h||Z)&&(d("delete"),d("has"),r&&d("get")),(Z||m)&&d(c),i&&o.clear&&delete o.clear}return u[e]=l,UZ({global:!0,forced:l!=a},u),EZ(l,e),i||n.setStrong(l,e,r),l},_Z=qt.f,qZ=lc,$Z=Mm,ep=Fc,tp=Dm,np=LZ,rp=is,ip=Rm,cp=L,ap=Eb.exports.fastKey,op=er.set,lp=er.getterFor,up={getConstructor:function(e,t,n,r){var i=e((function(e,i){tp(e,c),op(e,{type:t,index:qZ(null),first:void 0,last:void 0,size:0}),cp||(e.size=0),null!=i&&np(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=lp(t),o=function(e,t,n){var r,i,c=a(e),o=l(e,t);return o?o.value=n:(c.last=o={index:i=ap(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),cp?c.size++:e.size++,"F"!==i&&(c.index[i]=o)),e},l=function(e,t){var n,r=a(e),i=ap(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return $Z(c,{clear:function(){for(var e=a(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,cp?e.size=0:this.size=0},delete:function(e){var t=this,n=a(t),r=l(t,e);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),cp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=a(this),r=ep(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),$Z(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),cp&&_Z(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=lp(t),c=lp(r);rp(e,t,(function(e,t){op(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),ip(t)}};AZ("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),up);var dp=Math.log,sp=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:dp(1+e)},mp=Xi,hp=sp,bp=Math.acosh,Zp=Math.log,pp=Math.sqrt,yp=Math.LN2;mp({target:"Math",stat:!0,forced:!bp||710!=Math.floor(bp(Number.MAX_VALUE))||bp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Zp(e)+yp:hp(e-1+pp(e-1)*pp(e+1))}});var Xp=Xi,fp=Math.asinh,Gp=Math.log,Vp=Math.sqrt;Xp({target:"Math",stat:!0,forced:!(fp&&1/fp(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Gp(t+Vp(t*t+1)):t}});var Ip=Xi,Wp=Math.atanh,gp=Math.log;Ip({target:"Math",stat:!0,forced:!(Wp&&1/Wp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:gp((1+e)/(1-e))/2}});var vp=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},Sp=Xi,Rp=vp,Yp=Math.abs,Jp=Math.pow;Sp({target:"Math",stat:!0},{cbrt:function(e){return Rp(e=+e)*Jp(Yp(e),1/3)}});var Kp=Xi,Lp=Math.floor,Np=Math.log,xp=Math.LOG2E;Kp({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-Lp(Np(e+.5)*xp):32}});var Hp=Math.expm1,kp=Math.exp,Up=!Hp||Hp(10)>22025.465794806718||Hp(10)<22025.465794806718||-2e-17!=Hp(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:kp(e)-1}:Hp,Cp=Xi,wp=Up,Tp=Math.cosh,Fp=Math.abs,jp=Math.E;Cp({target:"Math",stat:!0,forced:!Tp||Tp(710)===1/0},{cosh:function(e){var t=wp(Fp(e)-1)+1;return(t+1/(t*jp*jp))*(jp/2)}});var zp=Up;Xi({target:"Math",stat:!0,forced:zp!=Math.expm1},{expm1:zp});var Pp=vp,Mp=Math.abs,Qp=Math.pow,Bp=Qp(2,-52),Dp=Qp(2,-23),Ep=Qp(2,127)*(2-Dp),Op=Qp(2,-126),Ap=Math.fround||function(e){var t,n,r=Mp(e),i=Pp(e);return r<Op?i*function(e){return e+1/Bp-1/Bp}(r/Op/Dp)*Op*Dp:(n=(t=(1+Dp/Bp)*r)-(t-r))>Ep||n!=n?i*(1/0):i*n};Xi({target:"Math",stat:!0},{fround:Ap});var _p=Xi,qp=Math.hypot,$p=Math.abs,ey=Math.sqrt;_p({target:"Math",stat:!0,forced:!!qp&&qp(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,a=arguments.length,o=0;c<a;)o<(n=$p(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*ey(i)}});var ty=Xi,ny=K,ry=Math.imul;ty({target:"Math",stat:!0,forced:ny((function(){return-5!=ry(4294967295,5)||2!=ry.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,a=n&i;return 0|c*a+((n&r>>>16)*a+c*(n&i>>>16)<<16>>>0)}});var iy=Math.log,cy=Math.LOG10E;Xi({target:"Math",stat:!0},{log10:Math.log10||function(e){return iy(e)*cy}}),Xi({target:"Math",stat:!0},{log1p:sp});var ay=Xi,oy=Math.log,ly=Math.LN2;ay({target:"Math",stat:!0},{log2:function(e){return oy(e)/ly}}),Xi({target:"Math",stat:!0},{sign:vp});var uy=Xi,dy=K,sy=Up,my=Math.abs,hy=Math.exp,by=Math.E;uy({target:"Math",stat:!0,forced:dy((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return my(e=+e)<1?(sy(e)-sy(-e))/2:(hy(e-1)-hy(-e-1))*(by/2)}});var Zy=Xi,py=Up,yy=Math.exp;Zy({target:"Math",stat:!0},{tanh:function(e){var t=py(e=+e),n=py(-e);return t==1/0?1:n==1/0?-1:(t-n)/(yy(e)+yy(-e))}}),Uc(Math,"Math",!0);var Xy=Xi,fy=Math.ceil,Gy=Math.floor;Xy({target:"Math",stat:!0},{trunc:function(e){return(e>0?Gy:fy)(e)}});var Vy=E(1..valueOf),Iy="\t\n\v\f\r \u2028\u2029\ufeff",Wy=ae,gy=wi,vy=E("".replace),Sy="[\t\n\v\f\r \u2028\u2029\ufeff]",Ry=RegExp("^"+Sy+Sy+"*"),Yy=RegExp(Sy+Sy+"*$"),Jy=function(e){return function(t){var n=gy(Wy(t));return 1&e&&(n=vy(n,Ry,"")),2&e&&(n=vy(n,Yy,"")),n}},Ky={start:Jy(1),end:Jy(2),trim:Jy(3)},Ly=L,Ny=Y,xy=E,Hy=di,ky=Gn.exports,Uy=lt,Cy=kZ,wy=ye,Ty=ke,Fy=xt,jy=K,zy=yr.f,Py=J.f,My=qt.f,Qy=Vy,By=Ky.trim,Dy="Number",Ey=Ny.Number,Oy=Ey.prototype,Ay=Ny.TypeError,_y=xy("".slice),qy=xy("".charCodeAt),$y=function(e){var t=Fy(e,"number");return"bigint"==typeof t?t:eX(t)},eX=function(e){var t,n,r,i,c,a,o,l,u=Fy(e,"number");if(Ty(u))throw Ay("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=By(u),43===(t=qy(u,0))||45===t){if(88===(n=qy(u,2))||120===n)return NaN}else if(48===t){switch(qy(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(c=_y(u,2)).length,o=0;o<a;o++)if((l=qy(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(Hy(Dy,!Ey(" 0o1")||!Ey("0b1")||Ey("+0x1"))){for(var tX,nX=function(e){var t=arguments.length<1?0:Ey($y(e)),n=this;return wy(Oy,n)&&jy((function(){Qy(n)}))?Cy(Object(t),n,nX):t},rX=Ly?zy(Ey):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),iX=0;rX.length>iX;iX++)Uy(Ey,tX=rX[iX])&&!Uy(nX,tX)&&My(nX,tX,Py(Ey,tX));nX.prototype=Oy,Oy.constructor=nX,ky(Ny,Dy,nX)}Xi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var cX=Y.isFinite;Xi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&cX(e)}});var aX=me,oX=Math.floor,lX=Number.isInteger||function(e){return!aX(e)&&isFinite(e)&&oX(e)===e};Xi({target:"Number",stat:!0},{isInteger:lX}),Xi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var uX=Xi,dX=lX,sX=Math.abs;uX({target:"Number",stat:!0},{isSafeInteger:function(e){return dX(e)&&sX(e)<=9007199254740991}}),Xi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Xi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var mX=Y,hX=K,bX=wi,ZX=Ky.trim,pX=E("".charAt),yX=mX.parseFloat,XX=mX.Symbol,fX=XX&&XX.iterator,GX=1/yX("\t\n\v\f\r \u2028\u2029\ufeff-0")!=-1/0||fX&&!hX((function(){yX(Object(fX))}))?function(e){var t=ZX(bX(e)),n=yX(t);return 0===n&&"-"==pX(t,0)?-0:n}:yX;Xi({target:"Number",stat:!0,forced:Number.parseFloat!=GX},{parseFloat:GX});var VX=Y,IX=K,WX=E,gX=wi,vX=Ky.trim,SX=Iy,RX=VX.parseInt,YX=VX.Symbol,JX=YX&&YX.iterator,KX=/^[+-]?0x/i,LX=WX(KX.exec),NX=8!==RX(SX+"08")||22!==RX(SX+"0x16")||JX&&!IX((function(){RX(Object(JX))}))?function(e,t){var n=vX(gX(e));return RX(n,t>>>0||(LX(KX,n)?16:10))}:RX,xX=NX;Xi({target:"Number",stat:!0,forced:Number.parseInt!=xX},{parseInt:xX});var HX=Gr,kX=wi,UX=ae,CX=Y.RangeError,wX=function(e){var t=kX(UX(this)),n="",r=HX(e);if(r<0||r==1/0)throw CX("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},TX=Xi,FX=Y,jX=E,zX=Gr,PX=Vy,MX=wX,QX=K,BX=FX.RangeError,DX=FX.String,EX=Math.floor,OX=jX(MX),AX=jX("".slice),_X=jX(1..toFixed),qX=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},$X=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=EX(i/1e7)},ef=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=EX(r/t),r=r%t*1e7},tf=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=DX(e[t]);n=""===n?r:n+OX("0",7-r.length)+r}return n};TX({target:"Number",proto:!0,forced:QX((function(){return"0.000"!==_X(8e-5,3)||"1"!==_X(.9,0)||"1.25"!==_X(1.255,2)||"1000000000000000128"!==_X(0xde0b6b3a7640080,0)}))||!QX((function(){_X({})}))},{toFixed:function(e){var t,n,r,i,c=PX(this),a=zX(e),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw BX("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return DX(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*qX(2,69,1))-69,n=t<0?c*qX(2,-t,1):c/qX(2,t,1),n*=4503599627370496,(t=52-t)>0){for($X(o,0,n),r=a;r>=7;)$X(o,1e7,0),r-=7;for($X(o,qX(10,r,1),0),r=t-1;r>=23;)ef(o,1<<23),r-=23;ef(o,1<<r),$X(o,1,1),ef(o,2),u=tf(o)}else $X(o,0,n),$X(o,1<<-t,0),u=tf(o)+OX("0",a);return u=a>0?l+((i=u.length)<=a?"0."+OX("0",a-i)+u:AX(u,0,i-a)+"."+AX(u,i-a)):l+u}});var nf=L,rf=E,cf=k,af=K,of=zi,lf=Mr,uf=U,df=ct,sf=ie,mf=Object.assign,hf=Object.defineProperty,bf=rf([].concat),Zf=!mf||af((function(){if(nf&&1!==mf({b:1},mf(hf({},"a",{enumerable:!0,get:function(){hf(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=mf({},e)[n]||of(mf({},t)).join("")!=r}))?function(e,t){for(var n=df(e),r=arguments.length,i=1,c=lf.f,a=uf.f;r>i;)for(var o,l=sf(arguments[i++]),u=c?bf(of(l),c(l)):of(l),d=u.length,s=0;d>s;)o=u[s++],nf&&!cf(a,l,o)||(n[o]=l[o]);return n}:mf,pf=Zf;Xi({target:"Object",stat:!0,forced:Object.assign!==pf},{assign:pf});var yf=Y,Xf=nm,ff=!K((function(){if(!(Xf&&Xf<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete yf[e]}})),Gf=je,Vf=ct,If=qt;L&&Xi({target:"Object",proto:!0,forced:ff},{__defineGetter__:function(e,t){If.f(Vf(this),e,{get:Gf(t),enumerable:!0,configurable:!0})}});var Wf=je,gf=ct,vf=qt;L&&Xi({target:"Object",proto:!0,forced:ff},{__defineSetter__:function(e,t){vf.f(gf(this),e,{set:Wf(t),enumerable:!0,configurable:!0})}});var Sf=L,Rf=E,Yf=zi,Jf=ue,Kf=Rf(U.f),Lf=Rf([].push),Nf=function(e){return function(t){for(var n,r=Jf(t),i=Yf(r),c=i.length,a=0,o=[];c>a;)n=i[a++],Sf&&!Kf(r,n)||Lf(o,e?[n,r[n]]:r[n]);return o}},xf={entries:Nf(!0),values:Nf(!1)},Hf=xf.entries;Xi({target:"Object",stat:!0},{entries:function(e){return Hf(e)}});var kf=Xi,Uf=nZ,Cf=K,wf=me,Tf=Eb.exports.onFreeze,Ff=Object.freeze;kf({target:"Object",stat:!0,forced:Cf((function(){Ff(1)})),sham:!Uf},{freeze:function(e){return Ff&&wf(e)?Ff(Tf(e)):e}});var jf=LZ,zf=hc;Xi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return jf(e,(function(e,n){zf(t,e,n)}),{AS_ENTRIES:!0}),t}});var Pf=Xi,Mf=K,Qf=ue,Bf=J.f,Df=L,Ef=Mf((function(){Bf(1)}));Pf({target:"Object",stat:!0,forced:!Df||Ef,sham:!Df},{getOwnPropertyDescriptor:function(e,t){return Bf(Qf(e),t)}});var Of=Ar,Af=ue,_f=J,qf=hc;Xi({target:"Object",stat:!0,sham:!L},{getOwnPropertyDescriptors:function(e){for(var t,n,r=Af(e),i=_f.f,c=Of(r),a={},o=0;c.length>o;)void 0!==(n=i(r,t=c[o++]))&&qf(a,t,n);return a}});var $f=Xi,eG=K,tG=uc.f;$f({target:"Object",stat:!0,forced:eG((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:tG});var nG=ct,rG=hd,iG=id;Xi({target:"Object",stat:!0,forced:K((function(){rG(1)})),sham:!iG},{getPrototypeOf:function(e){return rG(nG(e))}});var cG=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Xi({target:"Object",stat:!0},{is:cG});var aG=tZ;Xi({target:"Object",stat:!0,forced:Object.isExtensible!==aG},{isExtensible:aG});var oG=Xi,lG=K,uG=me,dG=q,sG=Ob,mG=Object.isFrozen;oG({target:"Object",stat:!0,forced:lG((function(){mG(1)}))||sG},{isFrozen:function(e){return!uG(e)||(!(!sG||"ArrayBuffer"!=dG(e))||!!mG&&mG(e))}});var hG=Xi,bG=K,ZG=me,pG=q,yG=Ob,XG=Object.isSealed;hG({target:"Object",stat:!0,forced:bG((function(){XG(1)}))||yG},{isSealed:function(e){return!ZG(e)||(!(!yG||"ArrayBuffer"!=pG(e))||!!XG&&XG(e))}});var fG=ct,GG=zi;Xi({target:"Object",stat:!0,forced:K((function(){GG(1)}))},{keys:function(e){return GG(fG(e))}});var VG=Xi,IG=L,WG=ff,gG=ct,vG=Ut,SG=hd,RG=J.f;IG&&VG({target:"Object",proto:!0,forced:WG},{__lookupGetter__:function(e){var t,n=gG(this),r=vG(e);do{if(t=RG(n,r))return t.get}while(n=SG(n))}});var YG=Xi,JG=L,KG=ff,LG=ct,NG=Ut,xG=hd,HG=J.f;JG&&YG({target:"Object",proto:!0,forced:KG},{__lookupSetter__:function(e){var t,n=LG(this),r=NG(e);do{if(t=HG(n,r))return t.set}while(n=xG(n))}});var kG=Xi,UG=me,CG=Eb.exports.onFreeze,wG=nZ,TG=K,FG=Object.preventExtensions;kG({target:"Object",stat:!0,forced:TG((function(){FG(1)})),sham:!wG},{preventExtensions:function(e){return FG&&UG(e)?FG(CG(e)):e}});var jG=Xi,zG=me,PG=Eb.exports.onFreeze,MG=nZ,QG=K,BG=Object.seal;jG({target:"Object",stat:!0,forced:QG((function(){BG(1)})),sham:!MG},{seal:function(e){return BG&&zG(e)?BG(PG(e)):e}});var DG=ki,EG=Ri?{}.toString:function(){return"[object "+DG(this)+"]"},OG=Ri,AG=Gn.exports,_G=EG;OG||AG(Object.prototype,"toString",_G,{unsafe:!0});var qG=xf.values;Xi({target:"Object",stat:!0},{values:function(e){return qG(e)}});var $G,eV,tV,nV,rV=Y.Promise,iV=ea,cV=Ce,aV=Y.TypeError,oV=function(e){if(iV(e))return e;throw aV(cV(e)+" is not a constructor")},lV=cn,uV=oV,dV=gt("species"),sV=function(e,t){var n,r=lV(e).constructor;return void 0===r||null==(n=lV(r)[dV])?t:uV(n)},mV=Y.TypeError,hV=function(e,t){if(e<t)throw mV("Not enough arguments");return e},bV=/(?:ipad|iphone|ipod).*applewebkit/i.test(Xe),ZV="process"==q(Y.process),pV=Y,yV=Wi,XV=Fc,fV=de,GV=lt,VV=K,IV=Ai,WV=vc,gV=Ft,vV=hV,SV=bV,RV=ZV,YV=pV.setImmediate,JV=pV.clearImmediate,KV=pV.process,LV=pV.Dispatch,NV=pV.Function,xV=pV.MessageChannel,HV=pV.String,kV=0,UV={},CV="onreadystatechange";try{$G=pV.location}catch(e){}var wV=function(e){if(GV(UV,e)){var t=UV[e];delete UV[e],t()}},TV=function(e){return function(){wV(e)}},FV=function(e){wV(e.data)},jV=function(e){pV.postMessage(HV(e),$G.protocol+"//"+$G.host)};YV&&JV||(YV=function(e){vV(arguments.length,1);var t=fV(e)?e:NV(e),n=WV(arguments,1);return UV[++kV]=function(){yV(t,void 0,n)},eV(kV),kV},JV=function(e){delete UV[e]},RV?eV=function(e){KV.nextTick(TV(e))}:LV&&LV.now?eV=function(e){LV.now(TV(e))}:xV&&!SV?(nV=(tV=new xV).port2,tV.port1.onmessage=FV,eV=XV(nV.postMessage,nV)):pV.addEventListener&&fV(pV.postMessage)&&!pV.importScripts&&$G&&"file:"!==$G.protocol&&!VV(jV)?(eV=jV,pV.addEventListener("message",FV,!1)):eV=CV in gV("script")?function(e){IV.appendChild(gV("script")).onreadystatechange=function(){IV.removeChild(this),wV(e)}}:function(e){setTimeout(TV(e),0)});var zV,PV,MV,QV,BV,DV,EV,OV,AV={set:YV,clear:JV},_V=Y,qV=/ipad|iphone|ipod/i.test(Xe)&&void 0!==_V.Pebble,$V=/web0s(?!.*chrome)/i.test(Xe),eI=Y,tI=Fc,nI=J.f,rI=AV.set,iI=bV,cI=qV,aI=$V,oI=ZV,lI=eI.MutationObserver||eI.WebKitMutationObserver,uI=eI.document,dI=eI.process,sI=eI.Promise,mI=nI(eI,"queueMicrotask"),hI=mI&&mI.value;hI||(zV=function(){var e,t;for(oI&&(e=dI.domain)&&e.exit();PV;){t=PV.fn,PV=PV.next;try{t()}catch(e){throw PV?QV():MV=void 0,e}}MV=void 0,e&&e.enter()},iI||oI||aI||!lI||!uI?!cI&&sI&&sI.resolve?((EV=sI.resolve(void 0)).constructor=sI,OV=tI(EV.then,EV),QV=function(){OV(zV)}):oI?QV=function(){dI.nextTick(zV)}:(rI=tI(rI,eI),QV=function(){rI(zV)}):(BV=!0,DV=uI.createTextNode(""),new lI(zV).observe(DV,{characterData:!0}),QV=function(){DV.data=BV=!BV}));var bI=hI||function(e){var t={fn:e,next:void 0};MV&&(MV.next=t),PV||(PV=t,QV()),MV=t},ZI={},pI=je,yI=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=pI(t),this.reject=pI(n)};ZI.f=function(e){return new yI(e)};var XI=cn,fI=me,GI=ZI,VI=function(e,t){if(XI(e),fI(t)&&t.constructor===e)return t;var n=GI.f(e);return(0,n.resolve)(t),n.promise},II=Y,WI=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},gI=function(){this.head=null,this.tail=null};gI.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var vI,SI,RI,YI,JI=gI,KI="object"==("undefined"==typeof window?"undefined":a(window)),LI=Xi,NI=Y,xI=pe,HI=k,kI=rV,UI=Gn.exports,CI=Mm,wI=Cd,TI=Uc,FI=Rm,jI=je,zI=de,PI=me,MI=Dm,QI=Rn,BI=LZ,DI=_u,EI=sV,OI=AV.set,AI=bI,_I=VI,qI=function(e,t){var n=II.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},$I=ZI,eW=WI,tW=JI,nW=er,rW=di,iW=KI,cW=ZV,aW=ve,oW=gt("species"),lW="Promise",uW=nW.getterFor(lW),dW=nW.set,sW=nW.getterFor(lW),mW=kI&&kI.prototype,hW=kI,bW=mW,ZW=NI.TypeError,pW=NI.document,yW=NI.process,XW=$I.f,fW=XW,GW=!!(pW&&pW.createEvent&&NI.dispatchEvent),VW=zI(NI.PromiseRejectionEvent),IW="unhandledrejection",WW=!1,gW=rW(lW,(function(){var e=QI(hW),t=e!==String(hW);if(!t&&66===aW)return!0;if(aW>=51&&/native code/.test(e))return!1;var n=new hW((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[oW]=r,!(WW=n.then((function(){}))instanceof r)||!t&&iW&&!VW})),vW=gW||!DI((function(e){hW.all(e).catch((function(){}))})),SW=function(e){var t;return!(!PI(e)||!zI(t=e.then))&&t},RW=function(e,t){var n,r,i,c=t.value,a=1==t.state,o=a?e.ok:e.fail,l=e.resolve,u=e.reject,d=e.domain;try{o?(a||(2===t.rejection&&NW(t),t.rejection=1),!0===o?n=c:(d&&d.enter(),n=o(c),d&&(d.exit(),i=!0)),n===e.promise?u(ZW("Promise-chain cycle")):(r=SW(n))?HI(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},YW=function(e,t){e.notified||(e.notified=!0,AI((function(){for(var n,r=e.reactions;n=r.get();)RW(n,e);e.notified=!1,t&&!e.rejection&&KW(e)})))},JW=function(e,t,n){var r,i;GW?((r=pW.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),NI.dispatchEvent(r)):r={promise:t,reason:n},!VW&&(i=NI["on"+e])?i(r):e===IW&&qI("Unhandled promise rejection",n)},KW=function(e){HI(OI,NI,(function(){var t,n=e.facade,r=e.value;if(LW(e)&&(t=eW((function(){cW?yW.emit("unhandledRejection",r,n):JW(IW,n,r)})),e.rejection=cW||LW(e)?2:1,t.error))throw t.value}))},LW=function(e){return 1!==e.rejection&&!e.parent},NW=function(e){HI(OI,NI,(function(){var t=e.facade;cW?yW.emit("rejectionHandled",t):JW("rejectionhandled",t,e.value)}))},xW=function(e,t,n){return function(r){e(t,r,n)}},HW=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,YW(e,!0))},kW=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw ZW("Promise can't be resolved itself");var i=SW(n);i?AI((function(){var r={done:!1};try{HI(i,n,xW(e,r,t),xW(HW,r,t))}catch(e){HW(r,e,t)}})):(t.value=n,t.state=1,YW(t,!1))}catch(e){HW({done:!1},e,t)}}};if(gW&&(bW=(hW=function(e){MI(this,bW),jI(e),HI(vI,this);var t=uW(this);try{e(xW(kW,t),xW(HW,t))}catch(e){HW(t,e)}}).prototype,(vI=function(e){dW(this,{type:lW,done:!1,notified:!1,parent:!1,reactions:new tW,rejection:!1,state:0,value:void 0})}).prototype=CI(bW,{then:function(e,t){var n=sW(this),r=XW(EI(this,hW));return n.parent=!0,r.ok=!zI(e)||e,r.fail=zI(t)&&t,r.domain=cW?yW.domain:void 0,0==n.state?n.reactions.add(r):AI((function(){RW(r,n)})),r.promise},catch:function(e){return this.then(void 0,e)}}),SI=function(){var e=new vI,t=uW(e);this.promise=e,this.resolve=xW(kW,t),this.reject=xW(HW,t)},$I.f=XW=function(e){return e===hW||e===RI?new SI(e):fW(e)},zI(kI)&&mW!==Object.prototype)){YI=mW.then,WW||(UI(mW,"then",(function(e,t){var n=this;return new hW((function(e,t){HI(YI,n,e,t)})).then(e,t)}),{unsafe:!0}),UI(mW,"catch",bW.catch,{unsafe:!0}));try{delete mW.constructor}catch(e){}wI&&wI(mW,bW)}LI({global:!0,wrap:!0,forced:gW},{Promise:hW}),TI(hW,lW,!1),FI(lW),RI=xI(lW),LI({target:lW,stat:!0,forced:gW},{reject:function(e){var t=XW(this);return HI(t.reject,void 0,e),t.promise}}),LI({target:lW,stat:!0,forced:gW},{resolve:function(e){return _I(this,e)}}),LI({target:lW,stat:!0,forced:vW},{all:function(e){var t=this,n=XW(t),r=n.resolve,i=n.reject,c=eW((function(){var n=jI(t.resolve),c=[],a=0,o=1;BI(e,(function(e){var l=a++,u=!1;o++,HI(n,t,e).then((function(e){u||(u=!0,c[l]=e,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise},race:function(e){var t=this,n=XW(t),r=n.reject,i=eW((function(){var i=jI(t.resolve);BI(e,(function(e){HI(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var UW=k,CW=je,wW=ZI,TW=WI,FW=LZ;Xi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=wW.f(t),r=n.resolve,i=n.reject,c=TW((function(){var n=CW(t.resolve),i=[],c=0,a=1;FW(e,(function(e){var o=c++,l=!1;a++,UW(n,t,e).then((function(e){l||(l=!0,i[o]={status:"fulfilled",value:e},--a||r(i))}),(function(e){l||(l=!0,i[o]={status:"rejected",reason:e},--a||r(i))}))})),--a||r(i)}));return c.error&&i(c.value),n.promise}});var jW=Xi,zW=rV,PW=K,MW=pe,QW=de,BW=sV,DW=VI,EW=Gn.exports;if(jW({target:"Promise",proto:!0,real:!0,forced:!!zW&&PW((function(){zW.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=BW(this,MW("Promise")),n=QW(e);return this.then(n?function(n){return DW(t,e()).then((function(){return n}))}:e,n?function(n){return DW(t,e()).then((function(){throw n}))}:e)}}),QW(zW)){var OW=MW("Promise").prototype.finally;zW.prototype.finally!==OW&&EW(zW.prototype,"finally",OW,{unsafe:!0})}var AW=Wi,_W=je,qW=cn;Xi({target:"Reflect",stat:!0,forced:!K((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return AW(_W(e),t,qW(n))}});var $W=E,eg=je,tg=me,ng=lt,rg=vc,ig=N,cg=Y.Function,ag=$W([].concat),og=$W([].join),lg={},ug=function(e,t,n){if(!ng(lg,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";lg[t]=cg("C,a","return new C("+og(r,",")+")")}return lg[t](e,n)},dg=ig?cg.bind:function(e){var t=eg(this),n=t.prototype,r=rg(arguments,1),i=function(){var n=ag(r,rg(arguments));return this instanceof i?ug(t,n.length,n):t.apply(e,n)};return tg(n)&&(i.prototype=n),i},sg=Xi,mg=Wi,hg=dg,bg=oV,Zg=cn,pg=me,yg=lc,Xg=K,fg=pe("Reflect","construct"),Gg=Object.prototype,Vg=[].push,Ig=Xg((function(){function e(){}return!(fg((function(){}),[],e)instanceof e)})),Wg=!Xg((function(){fg((function(){}))})),gg=Ig||Wg;sg({target:"Reflect",stat:!0,forced:gg,sham:gg},{construct:function(e,t){bg(e),Zg(t);var n=arguments.length<3?e:bg(arguments[2]);if(Wg&&!Ig)return fg(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return mg(Vg,r,t),new(mg(hg,e,r))}var i=n.prototype,c=yg(pg(i)?i:Gg),a=mg(e,c,t);return pg(a)?a:c}});var vg=L,Sg=cn,Rg=Ut,Yg=qt;Xi({target:"Reflect",stat:!0,forced:K((function(){Reflect.defineProperty(Yg.f({},1,{value:1}),1,{value:2})})),sham:!vg},{defineProperty:function(e,t,n){Sg(e);var r=Rg(t);Sg(n);try{return Yg.f(e,r,n),!0}catch(e){return!1}}});var Jg=Xi,Kg=cn,Lg=J.f;Jg({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=Lg(Kg(e),t);return!(n&&!n.configurable)&&delete e[t]}});var Ng=lt,xg=function(e){return void 0!==e&&(Ng(e,"value")||Ng(e,"writable"))},Hg=k,kg=me,Ug=cn,Cg=xg,wg=J,Tg=hd;Xi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return Ug(t)===c?t[n]:(r=wg.f(t,n))?Cg(r)?r.value:void 0===r.get?void 0:Hg(r.get,c):kg(i=Tg(t))?e(i,n,c):void 0}});var Fg=cn,jg=J;Xi({target:"Reflect",stat:!0,sham:!L},{getOwnPropertyDescriptor:function(e,t){return jg.f(Fg(e),t)}});var zg=cn,Pg=hd;Xi({target:"Reflect",stat:!0,sham:!id},{getPrototypeOf:function(e){return Pg(zg(e))}}),Xi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var Mg=cn,Qg=tZ;Xi({target:"Reflect",stat:!0},{isExtensible:function(e){return Mg(e),Qg(e)}}),Xi({target:"Reflect",stat:!0},{ownKeys:Ar});var Bg=pe,Dg=cn;Xi({target:"Reflect",stat:!0,sham:!nZ},{preventExtensions:function(e){Dg(e);try{var t=Bg("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var Eg=Xi,Og=k,Ag=cn,_g=me,qg=xg,$g=qt,ev=J,tv=hd,nv=z;var rv=K((function(){var e=function(){},t=$g.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));Eg({target:"Reflect",stat:!0,forced:rv},{set:function e(t,n,r){var i,c,a,o=arguments.length<4?t:arguments[3],l=ev.f(Ag(t),n);if(!l){if(_g(c=tv(t)))return e(c,n,r,o);l=nv(0)}if(qg(l)){if(!1===l.writable||!_g(o))return!1;if(i=ev.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,$g.f(o,n,i)}else $g.f(o,n,nv(0,r))}else{if(void 0===(a=l.set))return!1;Og(a,o,r)}return!0}});var iv=cn,cv=xd,av=Cd;av&&Xi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){iv(e),cv(t);try{return av(e,t),!0}catch(e){return!1}}});var ov=me,lv=q,uv=gt("match"),dv=function(e){var t;return ov(e)&&(void 0!==(t=e[uv])?!!t:"RegExp"==lv(e))},sv=cn,mv=function(){var e=sv(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},hv=K,bv=Y.RegExp,Zv=hv((function(){var e=bv("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),pv=Zv||hv((function(){return!bv("a","y").sticky})),yv=Zv||hv((function(){var e=bv("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),Xv={BROKEN_CARET:yv,MISSED_STICKY:pv,UNSUPPORTED_Y:Zv},fv=K,Gv=Y.RegExp,Vv=fv((function(){var e=Gv(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),Iv=K,Wv=Y.RegExp,gv=Iv((function(){var e=Wv("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),vv=L,Sv=Y,Rv=E,Yv=di,Jv=kZ,Kv=fn,Lv=qt.f,Nv=yr.f,xv=ye,Hv=dv,kv=wi,Uv=mv,Cv=Xv,wv=Gn.exports,Tv=K,Fv=lt,jv=er.enforce,zv=Rm,Pv=Vv,Mv=gv,Qv=gt("match"),Bv=Sv.RegExp,Dv=Bv.prototype,Ev=Sv.SyntaxError,Ov=Rv(Uv),Av=Rv(Dv.exec),_v=Rv("".charAt),qv=Rv("".replace),$v=Rv("".indexOf),eS=Rv("".slice),tS=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,nS=/a/g,rS=/a/g,iS=new Bv(nS)!==nS,cS=Cv.MISSED_STICKY,aS=Cv.UNSUPPORTED_Y,oS=vv&&(!iS||cS||Pv||Mv||Tv((function(){return rS[Qv]=!1,Bv(nS)!=nS||Bv(rS)==rS||"/a/i"!=Bv(nS,"i")})));if(Yv("RegExp",oS)){for(var lS=function(e,t){var n,r,i,c,a,o,l=xv(Dv,this),u=Hv(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===lS)return e;if((u||xv(Dv,e))&&(e=e.source,d&&(t="flags"in m?m.flags:Ov(m))),e=void 0===e?"":kv(e),t=void 0===t?"":kv(t),m=e,Pv&&"dotAll"in nS&&(r=!!t&&$v(t,"s")>-1)&&(t=qv(t,/s/g,"")),n=t,cS&&"sticky"in nS&&(i=!!t&&$v(t,"y")>-1)&&aS&&(t=qv(t,/y/g,"")),Mv&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],a={},o=!1,l=!1,u=0,d="";r<=n;r++){if("\\"===(t=_v(e,r)))t+=_v(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:Av(tS,eS(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||Fv(a,d))throw new Ev("Invalid capture group name");a[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=t:i+=t}return[i,c]}(e),e=c[0],s=c[1]),a=Jv(Bv(e,t),l?this:Dv,lS),(r||i||s.length)&&(o=jv(a),r&&(o.dotAll=!0,o.raw=lS(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=_v(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+_v(e,++r);return i}(e),n)),i&&(o.sticky=!0),s.length&&(o.groups=s)),e!==m)try{Kv(a,"source",""===m?"(?:)":m)}catch(e){}return a},uS=function(e){e in lS||Lv(lS,e,{configurable:!0,get:function(){return Bv[e]},set:function(t){Bv[e]=t}})},dS=Nv(Bv),sS=0;dS.length>sS;)uS(dS[sS++]);Dv.constructor=lS,lS.prototype=Dv,wv(Sv,"RegExp",lS)}zv("RegExp");var mS=k,hS=E,bS=wi,ZS=mv,pS=Xv,yS=Oe.exports,XS=lc,fS=er.get,GS=Vv,VS=gv,IS=yS("native-string-replace",String.prototype.replace),WS=RegExp.prototype.exec,gS=WS,vS=hS("".charAt),SS=hS("".indexOf),RS=hS("".replace),YS=hS("".slice),JS=function(){var e=/a/,t=/b*/g;return mS(WS,e,"a"),mS(WS,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),KS=pS.BROKEN_CARET,LS=void 0!==/()??/.exec("")[1];(JS||LS||KS||GS||VS)&&(gS=function(e){var t,n,r,i,c,a,o,l=this,u=fS(l),d=bS(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=mS(gS,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,h=KS&&l.sticky,b=mS(ZS,l),Z=l.source,p=0,y=d;if(h&&(b=RS(b,"y",""),-1===SS(b,"g")&&(b+="g"),y=YS(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==vS(d,l.lastIndex-1))&&(Z="(?: "+Z+")",y=" "+y,p++),n=new RegExp("^(?:"+Z+")",b)),LS&&(n=new RegExp("^"+Z+"$(?!\\s)",b)),JS&&(r=l.lastIndex),i=mS(WS,h?n:l,y),h?i?(i.input=YS(i.input,p),i[0]=YS(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:JS&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),LS&&i&&i.length>1&&mS(IS,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=a=XS(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=i[o[1]];return i});var NS=gS;Xi({target:"RegExp",proto:!0,forced:/./.exec!==NS},{exec:NS});var xS=L,HS=qt,kS=mv,US=K,CS=RegExp.prototype;xS&&US((function(){return"sy"!==Object.getOwnPropertyDescriptor(CS,"flags").get.call({dotAll:!0,sticky:!0})}))&&HS.f(CS,"flags",{configurable:!0,get:kS});var wS=Y,TS=L,FS=Xv.MISSED_STICKY,jS=q,zS=qt.f,PS=er.get,MS=RegExp.prototype,QS=wS.TypeError;TS&&FS&&zS(MS,"sticky",{configurable:!0,get:function(){if(this!==MS){if("RegExp"===jS(this))return!!PS(this).sticky;throw QS("Incompatible receiver, RegExp required")}}});var BS,DS,ES=Xi,OS=Y,AS=k,_S=E,qS=de,$S=me,eR=(BS=!1,(DS=/[ac]/).exec=function(){return BS=!0,/./.exec.apply(this,arguments)},!0===DS.test("abc")&&BS),tR=OS.Error,nR=_S(/./.test);ES({target:"RegExp",proto:!0,forced:!eR},{test:function(e){var t=this.exec;if(!qS(t))return nR(this,e);var n=AS(t,this,e);if(null!==n&&!$S(n))throw new tR("RegExp exec method returned something other than an Object or null");return!!n}});var rR=E,iR=ar.PROPER,cR=Gn.exports,aR=cn,oR=ye,lR=wi,uR=K,dR=mv,sR="toString",mR=RegExp.prototype,hR=mR.toString,bR=rR(dR),ZR=uR((function(){return"/a/b"!=hR.call({source:"a",flags:"b"})})),pR=iR&&hR.name!=sR;(ZR||pR)&&cR(RegExp.prototype,sR,(function(){var e=aR(this),t=lR(e.source),n=e.flags;return"/"+t+"/"+lR(void 0===n&&oR(mR,e)&&!("flags"in mR)?bR(e):n)}),{unsafe:!0}),AZ("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),up);var yR=E,XR=Gr,fR=wi,GR=ae,VR=yR("".charAt),IR=yR("".charCodeAt),WR=yR("".slice),gR=function(e){return function(t,n){var r,i,c=fR(GR(t)),a=XR(n),o=c.length;return a<0||a>=o?e?"":void 0:(r=IR(c,a))<55296||r>56319||a+1===o||(i=IR(c,a+1))<56320||i>57343?e?VR(c,a):r:e?WR(c,a,a+2):i-56320+(r-55296<<10)+65536}},vR={codeAt:gR(!1),charAt:gR(!0)},SR=vR.codeAt;Xi({target:"String",proto:!0},{codePointAt:function(e){return SR(this,e)}});var RR,YR=dv,JR=Y.TypeError,KR=function(e){if(YR(e))throw JR("The method doesn't accept regular expressions");return e},LR=gt("match"),NR=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[LR]=!1,"/./"[e](t)}catch(e){}}return!1},xR=Xi,HR=E,kR=J.f,UR=Rr,CR=wi,wR=KR,TR=ae,FR=NR,jR=HR("".endsWith),zR=HR("".slice),PR=Math.min,MR=FR("endsWith");xR({target:"String",proto:!0,forced:!!(MR||(RR=kR(String.prototype,"endsWith"),!RR||RR.writable))&&!MR},{endsWith:function(e){var t=CR(TR(this));wR(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:PR(UR(n),r),c=CR(e);return jR?jR(t,c,i):zR(t,i-c.length,i)===c}});var QR=Xi,BR=E,DR=gr,ER=Y.RangeError,OR=String.fromCharCode,AR=String.fromCodePoint,_R=BR([].join);QR({target:"String",stat:!0,forced:!!AR&&1!=AR.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],DR(t,1114111)!==t)throw ER(t+" is not a valid code point");n[i]=t<65536?OR(t):OR(55296+((t-=65536)>>10),t%1024+56320)}return _R(n,"")}});var qR=Xi,$R=KR,eY=ae,tY=wi,nY=NR,rY=E("".indexOf);qR({target:"String",proto:!0,forced:!nY("includes")},{includes:function(e){return!!~rY(tY(eY(this)),tY($R(e)),arguments.length>1?arguments[1]:void 0)}});var iY=vR.charAt,cY=wi,aY=er,oY=is,lY="String Iterator",uY=aY.set,dY=aY.getterFor(lY);oY(String,"String",(function(e){uY(this,{type:lY,string:cY(e),index:0})}),(function(){var e,t=dY(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=iY(n,r),t.index+=e.length,{value:e,done:!1})}));var sY=E,mY=Gn.exports,hY=NS,bY=K,ZY=gt,pY=fn,yY=ZY("species"),XY=RegExp.prototype,fY=function(e,t,n,r){var i=ZY(e),c=!bY((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=c&&!bY((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[yY]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!a||n){var o=sY(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var a=sY(e),l=t.exec;return l===hY||l===XY.exec?c&&!i?{done:!0,value:o(t,n,r)}:{done:!0,value:a(n,t,r)}:{done:!1}}));mY(String.prototype,e,l[0]),mY(XY,i,l[1])}r&&pY(XY[i],"sham",!0)},GY=vR.charAt,VY=function(e,t,n){return t+(n?GY(e,t).length:1)},IY=k,WY=cn,gY=de,vY=q,SY=NS,RY=Y.TypeError,YY=function(e,t){var n=e.exec;if(gY(n)){var r=IY(n,e,t);return null!==r&&WY(r),r}if("RegExp"===vY(e))return IY(SY,e,t);throw RY("RegExp#exec called on incompatible receiver")},JY=k,KY=cn,LY=Rr,NY=wi,xY=ae,HY=Pe,kY=VY,UY=YY;fY("match",(function(e,t,n){return[function(t){var n=xY(this),r=null==t?void 0:HY(t,e);return r?JY(r,t,n):new RegExp(t)[e](NY(n))},function(e){var r=KY(this),i=NY(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return UY(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=UY(r,i));){var d=NY(o[0]);l[u]=d,""===d&&(r.lastIndex=kY(i,LY(r.lastIndex),a)),u++}return 0===u?null:l}]}));var CY=Xi,wY=Y,TY=k,FY=E,jY=Yd,zY=ae,PY=Rr,MY=wi,QY=cn,BY=ye,DY=dv,EY=mv,OY=Pe,AY=Gn.exports,_Y=K,qY=sV,$Y=VY,eJ=YY,tJ=er,nJ=gt("matchAll"),rJ="RegExp String",iJ="RegExp String Iterator",cJ=tJ.set,aJ=tJ.getterFor(iJ),oJ=RegExp.prototype,lJ=wY.TypeError,uJ=FY(EY),dJ=FY("".indexOf),sJ=FY("".matchAll),mJ=!!sJ&&!_Y((function(){sJ("a",/./)})),hJ=jY((function(e,t,n,r){cJ(this,{type:iJ,regexp:e,string:t,global:n,unicode:r,done:!1})}),rJ,(function(){var e=aJ(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=eJ(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===MY(r[0])&&(t.lastIndex=$Y(n,PY(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),bJ=function(e){var t,n,r,i,c,a,o=QY(this),l=MY(e);return t=qY(o,RegExp),void 0===(n=o.flags)&&BY(oJ,o)&&!("flags"in oJ)&&(n=uJ(o)),r=void 0===n?"":MY(n),i=new t(t===RegExp?o.source:o,r),c=!!~dJ(r,"g"),a=!!~dJ(r,"u"),i.lastIndex=PY(o.lastIndex),new hJ(i,l,c,a)};CY({target:"String",proto:!0,forced:mJ},{matchAll:function(e){var t,n,r,i=zY(this);if(null!=e){if(DY(e)&&(t=MY(zY("flags"in oJ?e.flags:uJ(e))),!~dJ(t,"g")))throw lJ("`.matchAll` does not allow non-global regexes");if(mJ)return sJ(i,e);if(r=OY(e,nJ))return TY(r,e,i)}else if(mJ)return sJ(i,e);return n=MY(i),new RegExp(e,"g")[nJ](n)}}),nJ in oJ||AY(oJ,nJ,bJ);var ZJ=E,pJ=Rr,yJ=wi,XJ=ae,fJ=ZJ(wX),GJ=ZJ("".slice),VJ=Math.ceil,IJ=function(e){return function(t,n,r){var i,c,a=yJ(XJ(t)),o=pJ(n),l=a.length,u=void 0===r?" ":yJ(r);return o<=l||""==u?a:((c=fJ(u,VJ((i=o-l)/u.length))).length>i&&(c=GJ(c,0,i)),e?a+c:c+a)}},WJ={start:IJ(!1),end:IJ(!0)},gJ=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Xe),vJ=WJ.end;Xi({target:"String",proto:!0,forced:gJ},{padEnd:function(e){return vJ(this,e,arguments.length>1?arguments[1]:void 0)}});var SJ=WJ.start;Xi({target:"String",proto:!0,forced:gJ},{padStart:function(e){return SJ(this,e,arguments.length>1?arguments[1]:void 0)}});var RJ=Xi,YJ=E,JJ=ue,KJ=ct,LJ=wi,NJ=Jr,xJ=YJ([].push),HJ=YJ([].join);RJ({target:"String",stat:!0},{raw:function(e){for(var t=JJ(KJ(e).raw),n=NJ(t),r=arguments.length,i=[],c=0;n>c;){if(xJ(i,LJ(t[c++])),c===n)return HJ(i,"");c<r&&xJ(i,LJ(arguments[c]))}}}),Xi({target:"String",proto:!0},{repeat:wX});var kJ=E,UJ=ct,CJ=Math.floor,wJ=kJ("".charAt),TJ=kJ("".replace),FJ=kJ("".slice),jJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,zJ=/\$([$&'`]|\d{1,2})/g,PJ=Wi,MJ=k,QJ=E,BJ=fY,DJ=K,EJ=cn,OJ=de,AJ=Gr,_J=Rr,qJ=wi,$J=ae,eK=VY,tK=Pe,nK=function(e,t,n,r,i,c){var a=n+e.length,o=r.length,l=zJ;return void 0!==i&&(i=UJ(i),l=jJ),TJ(c,l,(function(c,l){var u;switch(wJ(l,0)){case"$":return"$";case"&":return e;case"`":return FJ(t,0,n);case"'":return FJ(t,a);case"<":u=i[FJ(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>o){var s=CJ(d/10);return 0===s?c:s<=o?void 0===r[s-1]?wJ(l,1):r[s-1]+wJ(l,1):c}u=r[d-1]}return void 0===u?"":u}))},rK=YY,iK=gt("replace"),cK=Math.max,aK=Math.min,oK=QJ([].concat),lK=QJ([].push),uK=QJ("".indexOf),dK=QJ("".slice),sK="$0"==="a".replace(/./,"$0"),mK=!!/./[iK]&&""===/./[iK]("a","$0"),hK=!DJ((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));BJ("replace",(function(e,t,n){var r=mK?"$":"$0";return[function(e,n){var r=$J(this),i=null==e?void 0:tK(e,iK);return i?MJ(i,e,r,n):MJ(t,qJ(r),e,n)},function(e,i){var c=EJ(this),a=qJ(e);if("string"==typeof i&&-1===uK(i,r)&&-1===uK(i,"$<")){var o=n(t,c,a,i);if(o.done)return o.value}var l=OJ(i);l||(i=qJ(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=rK(c,a);if(null===m)break;if(lK(s,m),!u)break;""===qJ(m[0])&&(c.lastIndex=eK(a,_J(c.lastIndex),d))}for(var h,b="",Z=0,p=0;p<s.length;p++){for(var y=qJ((m=s[p])[0]),X=cK(aK(AJ(m.index),a.length),0),f=[],G=1;G<m.length;G++)lK(f,void 0===(h=m[G])?h:String(h));var V=m.groups;if(l){var I=oK([y],f,X,a);void 0!==V&&lK(I,V);var W=qJ(PJ(i,void 0,I))}else W=nK(y,a,X,f,V,i);X>=Z&&(b+=dK(a,Z,X)+W,Z=X+y.length)}return b+dK(a,Z)}]}),!hK||!sK||mK);var bK=k,ZK=cn,pK=ae,yK=cG,XK=wi,fK=Pe,GK=YY;fY("search",(function(e,t,n){return[function(t){var n=pK(this),r=null==t?void 0:fK(t,e);return r?bK(r,t,n):new RegExp(t)[e](XK(n))},function(e){var r=ZK(this),i=XK(e),c=n(t,r,i);if(c.done)return c.value;var a=r.lastIndex;yK(a,0)||(r.lastIndex=0);var o=GK(r,i);return yK(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var VK=Wi,IK=k,WK=E,gK=fY,vK=dv,SK=cn,RK=ae,YK=sV,JK=VY,KK=Rr,LK=wi,NK=Pe,xK=fc,HK=YY,kK=NS,UK=K,CK=Xv.UNSUPPORTED_Y,wK=4294967295,TK=Math.min,FK=[].push,jK=WK(/./.exec),zK=WK(FK),PK=WK("".slice),MK=!UK((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));gK("split",(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=LK(RK(this)),i=void 0===n?wK:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!vK(e))return IK(t,r,e,i);for(var c,a,o,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,s=new RegExp(e.source,u+"g");(c=IK(kK,s,r))&&!((a=s.lastIndex)>d&&(zK(l,PK(r,d,c.index)),c.length>1&&c.index<r.length&&VK(FK,l,xK(c,1)),o=c[0].length,d=a,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!o&&jK(s,"")||zK(l,""):zK(l,PK(r,d)),l.length>i?xK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:IK(t,this,e,n)}:t,[function(t,n){var i=RK(this),c=null==t?void 0:NK(t,e);return c?IK(c,t,i,n):IK(r,LK(i),t,n)},function(e,i){var c=SK(this),a=LK(e),o=n(r,c,a,i,r!==t);if(o.done)return o.value;var l=YK(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(CK?"g":"y"),s=new l(CK?"^(?:"+c.source+")":c,d),m=void 0===i?wK:i>>>0;if(0===m)return[];if(0===a.length)return null===HK(s,a)?[a]:[];for(var h=0,b=0,Z=[];b<a.length;){s.lastIndex=CK?0:b;var p,y=HK(s,CK?PK(a,b):a);if(null===y||(p=TK(KK(s.lastIndex+(CK?b:0)),a.length))===h)b=JK(a,b,u);else{if(zK(Z,PK(a,h,b)),Z.length===m)return Z;for(var X=1;X<=y.length-1;X++)if(zK(Z,y[X]),Z.length===m)return Z;b=h=p}}return zK(Z,PK(a,h)),Z}]}),!MK,CK);var QK=Xi,BK=E,DK=J.f,EK=Rr,OK=wi,AK=KR,_K=ae,qK=NR,$K=BK("".startsWith),eL=BK("".slice),tL=Math.min,nL=qK("startsWith"),rL=!nL&&!!function(){var e=DK(String.prototype,"startsWith");return e&&!e.writable}();QK({target:"String",proto:!0,forced:!rL&&!nL},{startsWith:function(e){var t=OK(_K(this));AK(e);var n=EK(tL(arguments.length>1?arguments[1]:void 0,t.length)),r=OK(e);return $K?$K(t,r,n):eL(t,n,n+r.length)===r}});var iL=ar.PROPER,cL=K,aL=Iy,oL=function(e){return cL((function(){return!!aL[e]()||"
"!=="
"[e]()||iL&&aL[e].name!==e}))},lL=Ky.trim;Xi({target:"String",proto:!0,forced:oL("trim")},{trim:function(){return lL(this)}});var uL=Xi,dL=Ky.end,sL=oL("trimEnd"),mL=sL?function(){return dL(this)}:"".trimEnd;uL({target:"String",proto:!0,name:"trimEnd",forced:sL},{trimEnd:mL,trimRight:mL});var hL=Xi,bL=Ky.start,ZL=oL("trimStart"),pL=ZL?function(){return bL(this)}:"".trimStart;hL({target:"String",proto:!0,name:"trimStart",forced:ZL},{trimStart:pL,trimLeft:pL});var yL=ae,XL=wi,fL=/"/g,GL=E("".replace),VL=function(e,t,n,r){var i=XL(yL(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+GL(XL(r),fL,""")+'"'),c+">"+i+"</"+t+">"},IL=K,WL=function(e){return IL((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},gL=VL;Xi({target:"String",proto:!0,forced:WL("anchor")},{anchor:function(e){return gL(this,"a","name",e)}});var vL=VL;Xi({target:"String",proto:!0,forced:WL("big")},{big:function(){return vL(this,"big","","")}});var SL=VL;Xi({target:"String",proto:!0,forced:WL("blink")},{blink:function(){return SL(this,"blink","","")}});var RL=VL;Xi({target:"String",proto:!0,forced:WL("bold")},{bold:function(){return RL(this,"b","","")}});var YL=VL;Xi({target:"String",proto:!0,forced:WL("fixed")},{fixed:function(){return YL(this,"tt","","")}});var JL=VL;Xi({target:"String",proto:!0,forced:WL("fontcolor")},{fontcolor:function(e){return JL(this,"font","color",e)}});var KL=VL;Xi({target:"String",proto:!0,forced:WL("fontsize")},{fontsize:function(e){return KL(this,"font","size",e)}});var LL=VL;Xi({target:"String",proto:!0,forced:WL("italics")},{italics:function(){return LL(this,"i","","")}});var NL=VL;Xi({target:"String",proto:!0,forced:WL("link")},{link:function(e){return NL(this,"a","href",e)}});var xL=VL;Xi({target:"String",proto:!0,forced:WL("small")},{small:function(){return xL(this,"small","","")}});var HL=VL;Xi({target:"String",proto:!0,forced:WL("strike")},{strike:function(){return HL(this,"strike","","")}});var kL=VL;Xi({target:"String",proto:!0,forced:WL("sub")},{sub:function(){return kL(this,"sub","","")}});var UL=VL;Xi({target:"String",proto:!0,forced:WL("sup")},{sup:function(){return UL(this,"sup","","")}});var CL,wL,TL,FL={exports:{}},jL=zm,zL=L,PL=Y,ML=de,QL=me,BL=lt,DL=ki,EL=Ce,OL=fn,AL=Gn.exports,_L=qt.f,qL=ye,$L=hd,eN=Cd,tN=gt,nN=ht,rN=PL.Int8Array,iN=rN&&rN.prototype,cN=PL.Uint8ClampedArray,aN=cN&&cN.prototype,oN=rN&&$L(rN),lN=iN&&$L(iN),uN=Object.prototype,dN=PL.TypeError,sN=tN("toStringTag"),mN=nN("TYPED_ARRAY_TAG"),hN=nN("TYPED_ARRAY_CONSTRUCTOR"),bN=jL&&!!eN&&"Opera"!==DL(PL.opera),ZN=!1,pN={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},yN={BigInt64Array:8,BigUint64Array:8},XN=function(e){if(!QL(e))return!1;var t=DL(e);return BL(pN,t)||BL(yN,t)};for(CL in pN)(TL=(wL=PL[CL])&&wL.prototype)?OL(TL,hN,wL):bN=!1;for(CL in yN)(TL=(wL=PL[CL])&&wL.prototype)&&OL(TL,hN,wL);if((!bN||!ML(oN)||oN===Function.prototype)&&(oN=function(){throw dN("Incorrect invocation")},bN))for(CL in pN)PL[CL]&&eN(PL[CL],oN);if((!bN||!lN||lN===uN)&&(lN=oN.prototype,bN))for(CL in pN)PL[CL]&&eN(PL[CL].prototype,lN);if(bN&&$L(aN)!==lN&&eN(aN,lN),zL&&!BL(lN,sN))for(CL in ZN=!0,_L(lN,sN,{get:function(){return QL(this)?this[mN]:void 0}}),pN)PL[CL]&&OL(PL[CL],mN,CL);var fN={NATIVE_ARRAY_BUFFER_VIEWS:bN,TYPED_ARRAY_CONSTRUCTOR:hN,TYPED_ARRAY_TAG:ZN&&mN,aTypedArray:function(e){if(XN(e))return e;throw dN("Target is not a typed array")},aTypedArrayConstructor:function(e){if(ML(e)&&(!eN||qL(oN,e)))return e;throw dN(EL(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(zL){if(n)for(var i in pN){var c=PL[i];if(c&&BL(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}lN[e]&&!n||AL(lN,e,n?t:bN&&iN[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(zL){if(eN){if(n)for(r in pN)if((i=PL[r])&&BL(i,e))try{delete i[e]}catch(e){}if(oN[e]&&!n)return;try{return AL(oN,e,n?t:bN&&oN[e]||t)}catch(e){}}for(r in pN)!(i=PL[r])||i[e]&&!n||AL(i,e,t)}},isView:function(e){if(!QL(e))return!1;var t=DL(e);return"DataView"===t||BL(pN,t)||BL(yN,t)},isTypedArray:XN,TypedArray:oN,TypedArrayPrototype:lN},GN=Y,VN=K,IN=_u,WN=fN.NATIVE_ARRAY_BUFFER_VIEWS,gN=GN.ArrayBuffer,vN=GN.Int8Array,SN=!WN||!VN((function(){vN(1)}))||!VN((function(){new vN(-1)}))||!IN((function(e){new vN,new vN(null),new vN(1.5),new vN(e)}),!0)||VN((function(){return 1!==new vN(new gN(2),1,void 0).length})),RN=Gr,YN=Y.RangeError,JN=function(e){var t=RN(e);if(t<0)throw YN("The argument can't be less than 0");return t},KN=Y.RangeError,LN=function(e,t){var n=JN(e);if(n%t)throw KN("Wrong offset");return n},NN=Fc,xN=k,HN=oV,kN=ct,UN=Jr,CN=Hu,wN=Ru,TN=Iu,FN=fN.aTypedArrayConstructor,jN=function(e){var t,n,r,i,c,a,o=HN(this),l=kN(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=wN(l);if(m&&!TN(m))for(a=(c=CN(l,m)).next,l=[];!(i=xN(a,c)).done;)l.push(i.value);for(s&&u>2&&(d=NN(d,arguments[2])),n=UN(l),r=new(FN(o))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},zN=Xi,PN=Y,MN=k,QN=L,BN=SN,DN=fN,EN=cb,ON=Dm,AN=z,_N=fn,qN=lX,$N=Rr,ex=_m,tx=LN,nx=Ut,rx=lt,ix=ki,cx=me,ax=ke,ox=lc,lx=ye,ux=Cd,dx=yr.f,sx=jN,mx=pa.forEach,hx=Rm,bx=qt,Zx=J,px=kZ,yx=er.get,Xx=er.set,fx=bx.f,Gx=Zx.f,Vx=Math.round,Ix=PN.RangeError,Wx=EN.ArrayBuffer,gx=Wx.prototype,vx=EN.DataView,Sx=DN.NATIVE_ARRAY_BUFFER_VIEWS,Rx=DN.TYPED_ARRAY_CONSTRUCTOR,Yx=DN.TYPED_ARRAY_TAG,Jx=DN.TypedArray,Kx=DN.TypedArrayPrototype,Lx=DN.aTypedArrayConstructor,Nx=DN.isTypedArray,xx="BYTES_PER_ELEMENT",Hx="Wrong length",kx=function(e,t){Lx(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},Ux=function(e,t){fx(e,t,{get:function(){return yx(this)[t]}})},Cx=function(e){var t;return lx(gx,e)||"ArrayBuffer"==(t=ix(e))||"SharedArrayBuffer"==t},wx=function(e,t){return Nx(e)&&!ax(t)&&t in e&&qN(+t)&&t>=0},Tx=function(e,t){return t=nx(t),wx(e,t)?AN(2,e[t]):Gx(e,t)},Fx=function(e,t,n){return t=nx(t),!(wx(e,t)&&cx(n)&&rx(n,"value"))||rx(n,"get")||rx(n,"set")||n.configurable||rx(n,"writable")&&!n.writable||rx(n,"enumerable")&&!n.enumerable?fx(e,t,n):(e[t]=n.value,e)};QN?(Sx||(Zx.f=Tx,bx.f=Fx,Ux(Kx,"buffer"),Ux(Kx,"byteOffset"),Ux(Kx,"byteLength"),Ux(Kx,"length")),zN({target:"Object",stat:!0,forced:!Sx},{getOwnPropertyDescriptor:Tx,defineProperty:Fx}),FL.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,a="set"+e,o=PN[i],l=o,u=l&&l.prototype,d={},s=function(e,t){fx(e,t,{get:function(){return function(e,t){var n=yx(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=yx(e);n&&(i=(i=Vx(i))<0?0:i>255?255:255&i),c.view[a](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};Sx?BN&&(l=t((function(e,t,n,i){return ON(e,u),px(cx(t)?Cx(t)?void 0!==i?new o(t,tx(n,r),i):void 0!==n?new o(t,tx(n,r)):new o(t):Nx(t)?kx(l,t):MN(sx,l,t):new o(ex(t)),e,l)})),ux&&ux(l,Jx),mx(dx(o),(function(e){e in l||_N(l,e,o[e])})),l.prototype=u):(l=t((function(e,t,n,i){ON(e,u);var c,a,o,d=0,m=0;if(cx(t)){if(!Cx(t))return Nx(t)?kx(l,t):MN(sx,l,t);c=t,m=tx(n,r);var h=t.byteLength;if(void 0===i){if(h%r)throw Ix(Hx);if((a=h-m)<0)throw Ix(Hx)}else if((a=$N(i)*r)+m>h)throw Ix(Hx);o=a/r}else o=ex(t),c=new Wx(a=o*r);for(Xx(e,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new vx(c)});d<o;)s(e,d++)})),ux&&ux(l,Jx),u=l.prototype=ox(Kx)),u.constructor!==l&&_N(u,"constructor",l),_N(u,Rx,l),Yx&&_N(u,Yx,i),d[i]=l,zN({global:!0,forced:l!=o,sham:!Sx},d),xx in l||_N(l,xx,r),xx in u||_N(u,xx,r),hx(i)}):FL.exports=function(){},(0,FL.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,FL.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,FL.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var jx=fN,zx=E(Yl),Px=jx.aTypedArray;(0,jx.exportTypedArrayMethod)("copyWithin",(function(e,t){return zx(Px(this),e,t,arguments.length>2?arguments[2]:void 0)}));var Mx=pa.every,Qx=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("every",(function(e){return Mx(Qx(this),e,arguments.length>1?arguments[1]:void 0)}));var Bx=k,Dx=wl,Ex=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return Bx(Dx,Ex(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var Ox=Jr,Ax=sV,_x=fN.TYPED_ARRAY_CONSTRUCTOR,qx=fN.aTypedArrayConstructor,$x=function(e){return qx(Ax(e,e[_x]))},eH=function(e,t){for(var n=0,r=Ox(t),i=new e(r);r>n;)i[n]=t[n++];return i},tH=$x,nH=pa.filter,rH=function(e,t){return eH(tH(e),t)},iH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("filter",(function(e){var t=nH(iH(this),e,arguments.length>1?arguments[1]:void 0);return rH(this,t)}));var cH=pa.find,aH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("find",(function(e){return cH(aH(this),e,arguments.length>1?arguments[1]:void 0)}));var oH=pa.findIndex,lH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("findIndex",(function(e){return oH(lH(this),e,arguments.length>1?arguments[1]:void 0)}));var uH=pa.forEach,dH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("forEach",(function(e){uH(dH(this),e,arguments.length>1?arguments[1]:void 0)})),(0,fN.exportTypedArrayStaticMethod)("from",jN,SN);var sH=Hr.includes,mH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("includes",(function(e){return sH(mH(this),e,arguments.length>1?arguments[1]:void 0)}));var hH=Hr.indexOf,bH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("indexOf",(function(e){return hH(bH(this),e,arguments.length>1?arguments[1]:void 0)}));var ZH=Y,pH=K,yH=E,XH=fN,fH=Zs,GH=gt("iterator"),VH=ZH.Uint8Array,IH=yH(fH.values),WH=yH(fH.keys),gH=yH(fH.entries),vH=XH.aTypedArray,SH=XH.exportTypedArrayMethod,RH=VH&&VH.prototype,YH=!pH((function(){RH[GH].call([1])})),JH=!!RH&&RH.values&&RH[GH]===RH.values&&"values"===RH.values.name,KH=function(){return IH(vH(this))};SH("entries",(function(){return gH(vH(this))}),YH),SH("keys",(function(){return WH(vH(this))}),YH),SH("values",KH,YH||!JH,{name:"values"}),SH(GH,KH,YH||!JH,{name:"values"});var LH=fN.aTypedArray,NH=fN.exportTypedArrayMethod,xH=E([].join);NH("join",(function(e){return xH(LH(this),e)}));var HH=Wi,kH=ue,UH=Gr,CH=Jr,wH=Xs,TH=Math.min,FH=[].lastIndexOf,jH=!!FH&&1/[1].lastIndexOf(1,-0)<0,zH=wH("lastIndexOf"),PH=jH||!zH?function(e){if(jH)return HH(FH,this,arguments)||0;var t=kH(this),n=CH(t),r=n-1;for(arguments.length>1&&(r=TH(r,UH(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:FH,MH=Wi,QH=PH,BH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return MH(QH,BH(this),t>1?[e,arguments[1]]:[e])}));var DH=pa.map,EH=$x,OH=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("map",(function(e){return DH(OH(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(EH(e))(t)}))}));var AH=fN.aTypedArrayConstructor;(0,fN.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(AH(this))(t);t>e;)n[e]=arguments[e++];return n}),SN);var _H=je,qH=ct,$H=ie,ek=Jr,tk=Y.TypeError,nk=function(e){return function(t,n,r,i){_H(n);var c=qH(t),a=$H(c),o=ek(c),l=e?o-1:0,u=e?-1:1;if(r<2)for(;;){if(l in a){i=a[l],l+=u;break}if(l+=u,e?l<0:o<=l)throw tk("Reduce of empty array with no initial value")}for(;e?l>=0:o>l;l+=u)l in a&&(i=n(i,a[l],l,c));return i}},rk={left:nk(!1),right:nk(!0)},ik=rk.left,ck=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return ik(ck(this),e,t,t>1?arguments[1]:void 0)}));var ak=rk.right,ok=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return ak(ok(this),e,t,t>1?arguments[1]:void 0)}));var lk=fN.aTypedArray,uk=fN.exportTypedArrayMethod,dk=Math.floor;uk("reverse",(function(){for(var e,t=this,n=lk(t).length,r=dk(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var sk=Y,mk=k,hk=fN,bk=Jr,Zk=LN,pk=ct,yk=K,Xk=sk.RangeError,fk=sk.Int8Array,Gk=fk&&fk.prototype,Vk=Gk&&Gk.set,Ik=hk.aTypedArray,Wk=hk.exportTypedArrayMethod,gk=!yk((function(){var e=new Uint8ClampedArray(2);return mk(Vk,e,{length:1,0:3},1),3!==e[1]})),vk=gk&&hk.NATIVE_ARRAY_BUFFER_VIEWS&&yk((function(){var e=new fk(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));Wk("set",(function(e){Ik(this);var t=Zk(arguments.length>1?arguments[1]:void 0,1),n=pk(e);if(gk)return mk(Vk,this,n,t);var r=this.length,i=bk(n),c=0;if(i+t>r)throw Xk("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!gk||vk);var Sk=$x,Rk=vc,Yk=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("slice",(function(e,t){for(var n=Rk(Yk(this),e,t),r=Sk(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),K((function(){new Int8Array(1).slice()})));var Jk=pa.some,Kk=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("some",(function(e){return Jk(Kk(this),e,arguments.length>1?arguments[1]:void 0)}));var Lk=Y,Nk=E,xk=K,Hk=je,kk=_s,Uk=fN,Ck=$s,wk=em,Tk=ve,Fk=nm,jk=Lk.Array,zk=Uk.aTypedArray,Pk=Uk.exportTypedArrayMethod,Mk=Lk.Uint16Array,Qk=Mk&&Nk(Mk.prototype.sort),Bk=!(!Qk||xk((function(){Qk(new Mk(2),null)}))&&xk((function(){Qk(new Mk(2),{})}))),Dk=!!Qk&&!xk((function(){if(Tk)return Tk<74;if(Ck)return Ck<67;if(wk)return!0;if(Fk)return Fk<602;var e,t,n=new Mk(516),r=jk(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(Qk(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));Pk("sort",(function(e){return void 0!==e&&Hk(e),Dk?Qk(this,e):kk(zk(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!Dk||Bk);var Ek=Rr,Ok=gr,Ak=$x,_k=fN.aTypedArray;(0,fN.exportTypedArrayMethod)("subarray",(function(e,t){var n=_k(this),r=n.length,i=Ok(e,r);return new(Ak(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,Ek((void 0===t?r:Ok(t,r))-i))}));var qk=Wi,$k=fN,eU=K,tU=vc,nU=Y.Int8Array,rU=$k.aTypedArray,iU=$k.exportTypedArrayMethod,cU=[].toLocaleString,aU=!!nU&&eU((function(){cU.call(new nU(1))}));iU("toLocaleString",(function(){return qk(cU,aU?tU(rU(this)):rU(this),tU(arguments))}),eU((function(){return[1,2].toLocaleString()!=new nU([1,2]).toLocaleString()}))||!eU((function(){nU.prototype.toLocaleString.call([1,2])})));var oU=fN.exportTypedArrayMethod,lU=K,uU=E,dU=Y.Uint8Array,sU=dU&&dU.prototype||{},mU=[].toString,hU=uU([].join);lU((function(){mU.call({})}))&&(mU=function(){return hU(this)});var bU=sU.toString!=mU;oU("toString",mU,bU);var ZU=E,pU=Mm,yU=Eb.exports.getWeakData,XU=cn,fU=me,GU=Dm,VU=LZ,IU=lt,WU=er.set,gU=er.getterFor,vU=pa.find,SU=pa.findIndex,RU=ZU([].splice),YU=0,JU=function(e){return e.frozen||(e.frozen=new KU)},KU=function(){this.entries=[]},LU=function(e,t){return vU(e.entries,(function(e){return e[0]===t}))};KU.prototype={get:function(e){var t=LU(this,e);if(t)return t[1]},has:function(e){return!!LU(this,e)},set:function(e,t){var n=LU(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=SU(this.entries,(function(t){return t[0]===e}));return~t&&RU(this.entries,t,1),!!~t}};var NU,xU={getConstructor:function(e,t,n,r){var i=e((function(e,i){GU(e,c),WU(e,{type:t,id:YU++,frozen:void 0}),null!=i&&VU(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=gU(t),o=function(e,t,n){var r=a(e),i=yU(XU(t),!0);return!0===i?JU(r).set(t,n):i[r.id]=n,e};return pU(c,{delete:function(e){var t=a(this);if(!fU(e))return!1;var n=yU(e);return!0===n?JU(t).delete(e):n&&IU(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!fU(e))return!1;var n=yU(e);return!0===n?JU(t).has(e):n&&IU(n,t.id)}}),pU(c,n?{get:function(e){var t=a(this);if(fU(e)){var n=yU(e);return!0===n?JU(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),i}},HU=Y,kU=E,UU=Mm,CU=Eb.exports,wU=AZ,TU=xU,FU=me,jU=tZ,zU=er.enforce,PU=Ln,MU=!HU.ActiveXObject&&"ActiveXObject"in HU,QU=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},BU=wU("WeakMap",QU,TU);if(PU&&MU){NU=TU.getConstructor(QU,"WeakMap",!0),CU.enable();var DU=BU.prototype,EU=kU(DU.delete),OU=kU(DU.has),AU=kU(DU.get),_U=kU(DU.set);UU(DU,{delete:function(e){if(FU(e)&&!jU(e)){var t=zU(this);return t.frozen||(t.frozen=new NU),EU(this,e)||t.frozen.delete(e)}return EU(this,e)},has:function(e){if(FU(e)&&!jU(e)){var t=zU(this);return t.frozen||(t.frozen=new NU),OU(this,e)||t.frozen.has(e)}return OU(this,e)},get:function(e){if(FU(e)&&!jU(e)){var t=zU(this);return t.frozen||(t.frozen=new NU),OU(this,e)?AU(this,e):t.frozen.get(e)}return AU(this,e)},set:function(e,t){if(FU(e)&&!jU(e)){var n=zU(this);n.frozen||(n.frozen=new NU),OU(this,e)?_U(this,e,t):n.frozen.set(e,t)}else _U(this,e,t);return this}})}AZ("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),xU);var qU={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},$U=Ft("span").classList,eC=$U&&$U.constructor&&$U.constructor.prototype,tC=eC===Object.prototype?void 0:eC,nC=pa.forEach,rC=Xs("forEach")?[].forEach:function(e){return nC(this,e,arguments.length>1?arguments[1]:void 0)},iC=Y,cC=qU,aC=tC,oC=rC,lC=fn,uC=function(e){if(e&&e.forEach!==oC)try{lC(e,"forEach",oC)}catch(t){e.forEach=oC}};for(var dC in cC)cC[dC]&&uC(iC[dC]&&iC[dC].prototype);uC(aC);var sC=Y,mC=qU,hC=tC,bC=Zs,ZC=fn,pC=gt,yC=pC("iterator"),XC=pC("toStringTag"),fC=bC.values,GC=function(e,t){if(e){if(e[yC]!==fC)try{ZC(e,yC,fC)}catch(t){e[yC]=fC}if(e[XC]||ZC(e,XC,t),mC[t])for(var n in bC)if(e[n]!==bC[n])try{ZC(e,n,bC[n])}catch(t){e[n]=bC[n]}}};for(var VC in mC)GC(sC[VC]&&sC[VC].prototype,VC);GC(hC,"DOMTokenList");var IC=Y,WC=AV;Xi({global:!0,bind:!0,enumerable:!0,forced:!IC.setImmediate||!IC.clearImmediate},{setImmediate:WC.set,clearImmediate:WC.clear});var gC=Xi,vC=bI,SC=je,RC=hV,YC=ZV,JC=Y.process;gC({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){RC(arguments.length,1),SC(e);var t=YC&&JC.domain;vC(t?t.bind(e):e)}});var KC=K,LC=gt("iterator"),NC=!KC((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[LC]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),xC=E,HC=2147483647,kC=/[^\0-\u007E]/,UC=/[.\u3002\uFF0E\uFF61]/g,CC="Overflow: input needs wider integers to process",wC=Y.RangeError,TC=xC(UC.exec),FC=Math.floor,jC=String.fromCharCode,zC=xC("".charCodeAt),PC=xC([].join),MC=xC([].push),QC=xC("".replace),BC=xC("".split),DC=xC("".toLowerCase),EC=function(e){return e+22+75*(e<26)},OC=function(e,t,n){var r=0;for(e=n?FC(e/700):e>>1,e+=FC(e/t);e>455;)e=FC(e/35),r+=36;return FC(r+36*e/(e+38))},AC=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=zC(e,n++);if(i>=55296&&i<=56319&&n<r){var c=zC(e,n++);56320==(64512&c)?MC(t,((1023&i)<<10)+(1023&c)+65536):(MC(t,i),n--)}else MC(t,i)}return t}(e);var n,r,i=e.length,c=128,a=0,o=72;for(n=0;n<e.length;n++)(r=e[n])<128&&MC(t,jC(r));var l=t.length,u=l;for(l&&MC(t,"-");u<i;){var d=HC;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>FC((HC-a)/s))throw wC(CC);for(a+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++a>HC)throw wC(CC);if(r==c){for(var m=a,h=36;;){var b=h<=o?1:h>=o+26?26:h-o;if(m<b)break;var Z=m-b,p=36-b;MC(t,jC(EC(b+Z%p))),m=FC(Z/p),h+=36}MC(t,jC(EC(m))),o=OC(a,s,u==l),a=0,u++}}a++,c++}return PC(t,"")},_C=Xi,qC=Y,$C=pe,ew=k,tw=E,nw=NC,rw=Gn.exports,iw=Mm,cw=Uc,aw=Yd,ow=er,lw=Dm,uw=de,dw=lt,sw=Fc,mw=ki,hw=cn,bw=me,Zw=wi,pw=lc,yw=z,Xw=Hu,fw=Ru,Gw=hV,Vw=_s,Iw=gt("iterator"),Ww="URLSearchParams",gw="URLSearchParamsIterator",vw=ow.set,Sw=ow.getterFor(Ww),Rw=ow.getterFor(gw),Yw=$C("fetch"),Jw=$C("Request"),Kw=$C("Headers"),Lw=Jw&&Jw.prototype,Nw=Kw&&Kw.prototype,xw=qC.RegExp,Hw=qC.TypeError,kw=qC.decodeURIComponent,Uw=qC.encodeURIComponent,Cw=tw("".charAt),ww=tw([].join),Tw=tw([].push),Fw=tw("".replace),jw=tw([].shift),zw=tw([].splice),Pw=tw("".split),Mw=tw("".slice),Qw=/\+/g,Bw=Array(4),Dw=function(e){return Bw[e-1]||(Bw[e-1]=xw("((?:%[\\da-f]{2}){"+e+"})","gi"))},Ew=function(e){try{return kw(e)}catch(t){return e}},Ow=function(e){var t=Fw(e,Qw," "),n=4;try{return kw(t)}catch(e){for(;n;)t=Fw(t,Dw(n--),Ew);return t}},Aw=/[!'()~]|%20/g,_w={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},qw=function(e){return _w[e]},$w=function(e){return Fw(Uw(e),Aw,qw)},eT=aw((function(e,t){vw(this,{type:gw,iterator:Xw(Sw(e).entries),kind:t})}),"Iterator",(function(){var e=Rw(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),tT=function(e){this.entries=[],this.url=null,void 0!==e&&(bw(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Cw(e,0)?Mw(e,1):e:Zw(e)))};tT.prototype={type:Ww,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,a,o,l=fw(e);if(l)for(n=(t=Xw(e,l)).next;!(r=ew(n,t)).done;){if(c=(i=Xw(hw(r.value))).next,(a=ew(c,i)).done||(o=ew(c,i)).done||!ew(c,i).done)throw Hw("Expected sequence with length 2");Tw(this.entries,{key:Zw(a.value),value:Zw(o.value)})}else for(var u in e)dw(e,u)&&Tw(this.entries,{key:u,value:Zw(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=Pw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=Pw(t,"="),Tw(this.entries,{key:Ow(jw(n)),value:Ow(ww(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],Tw(n,$w(e.key)+"="+$w(e.value));return ww(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var nT=function(){lw(this,rT);var e=arguments.length>0?arguments[0]:void 0;vw(this,new tT(e))},rT=nT.prototype;if(iw(rT,{append:function(e,t){Gw(arguments.length,2);var n=Sw(this);Tw(n.entries,{key:Zw(e),value:Zw(t)}),n.updateURL()},delete:function(e){Gw(arguments.length,1);for(var t=Sw(this),n=t.entries,r=Zw(e),i=0;i<n.length;)n[i].key===r?zw(n,i,1):i++;t.updateURL()},get:function(e){Gw(arguments.length,1);for(var t=Sw(this).entries,n=Zw(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){Gw(arguments.length,1);for(var t=Sw(this).entries,n=Zw(e),r=[],i=0;i<t.length;i++)t[i].key===n&&Tw(r,t[i].value);return r},has:function(e){Gw(arguments.length,1);for(var t=Sw(this).entries,n=Zw(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){Gw(arguments.length,1);for(var n,r=Sw(this),i=r.entries,c=!1,a=Zw(e),o=Zw(t),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?zw(i,l--,1):(c=!0,n.value=o));c||Tw(i,{key:a,value:o}),r.updateURL()},sort:function(){var e=Sw(this);Vw(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=Sw(this).entries,r=sw(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new eT(this,"keys")},values:function(){return new eT(this,"values")},entries:function(){return new eT(this,"entries")}},{enumerable:!0}),rw(rT,Iw,rT.entries,{name:"entries"}),rw(rT,"toString",(function(){return Sw(this).serialize()}),{enumerable:!0}),cw(nT,Ww),_C({global:!0,forced:!nw},{URLSearchParams:nT}),!nw&&uw(Kw)){var iT=tw(Nw.has),cT=tw(Nw.set),aT=function(e){if(bw(e)){var t,n=e.body;if(mw(n)===Ww)return t=e.headers?new Kw(e.headers):new Kw,iT(t,"content-type")||cT(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),pw(e,{body:yw(0,Zw(n)),headers:yw(0,t)})}return e};if(uw(Yw)&&_C({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return Yw(e,arguments.length>1?aT(arguments[1]):{})}}),uw(Jw)){var oT=function(e){return lw(this,Lw),new Jw(e,arguments.length>1?aT(arguments[1]):{})};Lw.constructor=oT,oT.prototype=Lw,_C({global:!0,forced:!0},{Request:oT})}}var lT,uT={URLSearchParams:nT,getState:Sw},dT=Xi,sT=L,mT=NC,hT=Y,bT=Fc,ZT=E,pT=Ti.f,yT=Gn.exports,XT=Dm,fT=lt,GT=Zf,VT=Bu,IT=fc,WT=vR.codeAt,gT=function(e){var t,n,r=[],i=BC(QC(DC(e),UC,"."),".");for(t=0;t<i.length;t++)n=i[t],MC(r,TC(kC,n)?"xn--"+AC(n):n);return PC(r,".")},vT=wi,ST=Uc,RT=hV,YT=uT,JT=er,KT=JT.set,LT=JT.getterFor("URL"),NT=YT.URLSearchParams,xT=YT.getState,HT=hT.URL,kT=hT.TypeError,UT=hT.parseInt,CT=Math.floor,wT=Math.pow,TT=ZT("".charAt),FT=ZT(/./.exec),jT=ZT([].join),zT=ZT(1..toString),PT=ZT([].pop),MT=ZT([].push),QT=ZT("".replace),BT=ZT([].shift),DT=ZT("".split),ET=ZT("".slice),OT=ZT("".toLowerCase),AT=ZT([].unshift),_T="Invalid scheme",qT="Invalid host",$T="Invalid port",eF=/[a-z]/i,tF=/[\d+-.a-z]/i,nF=/\d/,rF=/^0x/i,iF=/^[0-7]+$/,cF=/^\d+$/,aF=/^[\da-f]+$/i,oF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,lF=/[\0\t\n\r #/:<>?@[\\\]^|]/,uF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,dF=/[\t\n\r]/g,sF=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)AT(t,e%256),e=CT(e/256);return jT(t,".")}if("object"==a(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=zT(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},mF={},hF=GT({},mF,{" ":1,'"':1,"<":1,">":1,"`":1}),bF=GT({},hF,{"#":1,"?":1,"{":1,"}":1}),ZF=GT({},bF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),pF=function(e,t){var n=WT(e,0);return n>32&&n<127&&!fT(t,e)?e:encodeURIComponent(e)},yF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},XF=function(e,t){var n;return 2==e.length&&FT(eF,TT(e,0))&&(":"==(n=TT(e,1))||!t&&"|"==n)},fF=function(e){var t;return e.length>1&&XF(ET(e,0,2))&&(2==e.length||"/"===(t=TT(e,2))||"\\"===t||"?"===t||"#"===t)},GF=function(e){return"."===e||"%2e"===OT(e)},VF={},IF={},WF={},gF={},vF={},SF={},RF={},YF={},JF={},KF={},LF={},NF={},xF={},HF={},kF={},UF={},CF={},wF={},TF={},FF={},jF={},zF=function e(t,n,r){var i,c,a,o=vT(t);if(n){if(c=this.parse(o))throw kT(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(o,null,i))throw kT(c);(a=xT(new NT)).bindURL(this),this.searchParams=a}};zF.prototype={type:"URL",parse:function(e,t,n){var r,i,c,a,o,l=this,u=t||VF,d=0,s="",m=!1,h=!1,b=!1;for(e=vT(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=QT(e,uF,"")),e=QT(e,dF,""),r=VT(e);d<=r.length;){switch(i=r[d],u){case VF:if(!i||!FT(eF,i)){if(t)return _T;u=WF;continue}s+=OT(i),u=IF;break;case IF:if(i&&(FT(tF,i)||"+"==i||"-"==i||"."==i))s+=OT(i);else{if(":"!=i){if(t)return _T;s="",u=WF,d=0;continue}if(t&&(l.isSpecial()!=fT(yF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&yF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=HF:l.isSpecial()&&n&&n.scheme==l.scheme?u=gF:l.isSpecial()?u=YF:"/"==r[d+1]?(u=vF,d++):(l.cannotBeABaseURL=!0,MT(l.path,""),u=TF)}break;case WF:if(!n||n.cannotBeABaseURL&&"#"!=i)return _T;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=IT(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=jF;break}u="file"==n.scheme?HF:SF;continue;case gF:if("/"!=i||"/"!=r[d+1]){u=SF;continue}u=JF,d++;break;case vF:if("/"==i){u=KF;break}u=wF;continue;case SF:if(l.scheme=n.scheme,i==lT)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=IT(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=RF;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=IT(n.path),l.query="",u=FF;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=IT(n.path),l.path.length--,u=wF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=IT(n.path),l.query=n.query,l.fragment="",u=jF}break;case RF:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=wF;continue}u=KF}else u=JF;break;case YF:if(u=JF,"/"!=i||"/"!=TT(s,d+1))continue;d++;break;case JF:if("/"!=i&&"\\"!=i){u=KF;continue}break;case KF:if("@"==i){m&&(s="%40"+s),m=!0,c=VT(s);for(var Z=0;Z<c.length;Z++){var p=c[Z];if(":"!=p||b){var y=pF(p,ZF);b?l.password+=y:l.username+=y}else b=!0}s=""}else if(i==lT||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=VT(s).length+1,s="",u=LF}else s+=i;break;case LF:case NF:if(t&&"file"==l.scheme){u=UF;continue}if(":"!=i||h){if(i==lT||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==s)return qT;if(t&&""==s&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(s))return a;if(s="",u=CF,t)return;continue}"["==i?h=!0:"]"==i&&(h=!1),s+=i}else{if(""==s)return qT;if(a=l.parseHost(s))return a;if(s="",u=xF,t==NF)return}break;case xF:if(!FT(nF,i)){if(i==lT||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var X=UT(s,10);if(X>65535)return $T;l.port=l.isSpecial()&&X===yF[l.scheme]?null:X,s=""}if(t)return;u=CF;continue}return $T}s+=i;break;case HF:if(l.scheme="file","/"==i||"\\"==i)u=kF;else{if(!n||"file"!=n.scheme){u=wF;continue}if(i==lT)l.host=n.host,l.path=IT(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=IT(n.path),l.query="",u=FF;else{if("#"!=i){fF(jT(IT(r,d),""))||(l.host=n.host,l.path=IT(n.path),l.shortenPath()),u=wF;continue}l.host=n.host,l.path=IT(n.path),l.query=n.query,l.fragment="",u=jF}}break;case kF:if("/"==i||"\\"==i){u=UF;break}n&&"file"==n.scheme&&!fF(jT(IT(r,d),""))&&(XF(n.path[0],!0)?MT(l.path,n.path[0]):l.host=n.host),u=wF;continue;case UF:if(i==lT||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&XF(s))u=wF;else if(""==s){if(l.host="",t)return;u=CF}else{if(a=l.parseHost(s))return a;if("localhost"==l.host&&(l.host=""),t)return;s="",u=CF}continue}s+=i;break;case CF:if(l.isSpecial()){if(u=wF,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=lT&&(u=wF,"/"!=i))continue}else l.fragment="",u=jF;else l.query="",u=FF;break;case wF:if(i==lT||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(o=OT(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||MT(l.path,"")):GF(s)?"/"==i||"\\"==i&&l.isSpecial()||MT(l.path,""):("file"==l.scheme&&!l.path.length&&XF(s)&&(l.host&&(l.host=""),s=TT(s,0)+":"),MT(l.path,s)),s="","file"==l.scheme&&(i==lT||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)BT(l.path);"?"==i?(l.query="",u=FF):"#"==i&&(l.fragment="",u=jF)}else s+=pF(i,bF);break;case TF:"?"==i?(l.query="",u=FF):"#"==i?(l.fragment="",u=jF):i!=lT&&(l.path[0]+=pF(i,mF));break;case FF:t||"#"!=i?i!=lT&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":pF(i,mF)):(l.fragment="",u=jF);break;case jF:i!=lT&&(l.fragment+=pF(i,hF))}d++}},parseHost:function(e){var t,n,r;if("["==TT(e,0)){if("]"!=TT(e,e.length-1))return qT;if(t=function(e){var t,n,r,i,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return TT(e,s)};if(":"==m()){if(":"!=TT(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&FT(aF,m());)t=16*t+UT(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!FT(nF,m()))return;for(;FT(nF,m());){if(c=UT(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=t}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(a=u-d,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[d+a-1],l[d+--a]=o;else if(8!=u)return;return l}(ET(e,1,-1)),!t)return qT;this.host=t}else if(this.isSpecial()){if(e=gT(e),FT(oF,e))return qT;if(t=function(e){var t,n,r,i,c,a,o,l=DT(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==TT(i,0)&&(c=FT(rF,i)?16:8,i=ET(i,8==c?1:2)),""===i)a=0;else{if(!FT(10==c?cF:8==c?iF:aF,i))return e;a=UT(i,c)}MT(n,a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=wT(256,5-t))return null}else if(a>255)return null;for(o=PT(n),r=0;r<n.length;r++)o+=n[r]*wT(256,3-r);return o}(e),null===t)return qT;this.host=t}else{if(FT(lF,e))return qT;for(t="",n=VT(e),r=0;r<n.length;r++)t+=pF(n[r],mF);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return fT(yF,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&XF(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,a=e.path,o=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=sF(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+jT(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw kT(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new PF(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+sF(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(vT(e)+":",VF)},getUsername:function(){return this.username},setUsername:function(e){var t=VT(vT(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=pF(t[n],ZF)}},getPassword:function(){return this.password},setPassword:function(e){var t=VT(vT(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=pF(t[n],ZF)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?sF(e):sF(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,LF)},getHostname:function(){var e=this.host;return null===e?"":sF(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,NF)},getPort:function(){var e=this.port;return null===e?"":vT(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=vT(e))?this.port=null:this.parse(e,xF))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+jT(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,CF))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=vT(e))?this.query=null:("?"==TT(e,0)&&(e=ET(e,1)),this.query="",this.parse(e,FF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=vT(e))?("#"==TT(e,0)&&(e=ET(e,1)),this.fragment="",this.parse(e,jF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var PF=function(e){var t=XT(this,MF),n=RT(arguments.length,1)>1?arguments[1]:void 0,r=KT(t,new zF(e,!1,n));sT||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},MF=PF.prototype,QF=function(e,t){return{get:function(){return LT(this)[e]()},set:t&&function(e){return LT(this)[t](e)},configurable:!0,enumerable:!0}};if(sT&&pT(MF,{href:QF("serialize","setHref"),origin:QF("getOrigin"),protocol:QF("getProtocol","setProtocol"),username:QF("getUsername","setUsername"),password:QF("getPassword","setPassword"),host:QF("getHost","setHost"),hostname:QF("getHostname","setHostname"),port:QF("getPort","setPort"),pathname:QF("getPathname","setPathname"),search:QF("getSearch","setSearch"),searchParams:QF("getSearchParams"),hash:QF("getHash","setHash")}),yT(MF,"toJSON",(function(){return LT(this).serialize()}),{enumerable:!0}),yT(MF,"toString",(function(){return LT(this).serialize()}),{enumerable:!0}),HT){var BF=HT.createObjectURL,DF=HT.revokeObjectURL;BF&&yT(PF,"createObjectURL",bT(BF,HT)),DF&&yT(PF,"revokeObjectURL",bT(DF,HT))}ST(PF,"URL"),dT({global:!0,forced:!mT,sham:!sT},{URL:PF});var EF=k;function OF(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}function AF(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}Xi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return EF(URL.prototype.toString,this)}}),e.ResponseMode=void 0,function(e){e.formPost="form_post",e.query="query"}(e.ResponseMode||(e.ResponseMode={}));e.Stores=void 0,function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(e.Stores||(e.Stores={}));var _F,qF="refresh_token_timer",$F=["RS256","RS512","RS384","PS256"],ej="code",tj="session_state",nj="sign_out_url",rj="sign_out_success",ij="state";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(_F||(_F={}));var cj=function(e){h(n,e);var t=V(n);function n(e,r,i,c,a,o){var l;return u(this,n),(l=t.call(this,null!=c?c:null==o?void 0:o.message)).name=l.constructor.name,l.code=e,l.file=r,l.method=i,l.description=a,l.error=o,Object.setPrototypeOf(f(l),(this instanceof n?this.constructor:void 0).prototype),l}return s(n)}(X(Error)),aj=function(e){h(n,e);var t=V(n);function n(e,r,i,c,a,o,l,d,s){var m;return u(this,n),(m=t.call(this,e,r,i,c,a)).name=m.constructor.name,m.code=e,m.file=r,m.method=i,m.description=a,m.networkErrorCode=o,m.networkErrorMessage=l,m.status=d,m.networkErrorData=s,m}return s(n)}(cj),oj=function(){function e(){u(this,e)}return s(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=I(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(W(e.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();oj.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var lj,uj,dj=function(){function e(t,n){var r=this;u(this,e),this._dataLayer=t,this._config=function(){return AF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return AF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return s(e,[{key:"resolveWellKnownEndpoint",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._config();case 2:return t=e.sent,e.abrupt("return",t.wellKnownEndpoint?t.serverOrigin+t.wellKnownEndpoint:t.serverOrigin+"/oauth2/token/.well-known/openid-configuration");case 4:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpoints",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.overrideWellEndpointConfig&&r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveFallbackEndpoints",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:return(n=e.sent).endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),r={authorization_endpoint:n.serverOrigin+"/oauth2/authorize",end_session_endpoint:n.serverOrigin+"/oidc/logout",jwks_uri:n.serverOrigin+"/oauth2/jwks",check_session_iframe:n.serverOrigin+"/oidc/checksession",revocation_endpoint:n.serverOrigin+"/oauth2/revoke",token_endpoint:n.serverOrigin+"/oauth2/token"},e.abrupt("return",Object.assign(Object.assign({},t),r));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:return r=t.sent,t.abrupt("return",n&&0!==n.trim().length?fetch(n,{credentials:r.sendCookiesInRequests?_F.Include:_F.SameOrigin}).then((function(t){return AF(i,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===t.status){n.next=2;break}return n.abrupt("return",Promise.reject(new cj("AUTH_HELPER-VIT-NR02","authentication-helper","validateIdToken","Invalid response status received for jwks request.","The request sent to get the jwks returned "+t.status+" , which is invalid.")));case 2:return n.next=4,this._oidcProviderMetaData();case 4:return r=n.sent.issuer,n.next=7,this.resolveWellKnownEndpoint();case 7:if(i=n.sent.split("/.well-known")[0],r&&r===i){n.next=10;break}return n.abrupt("return",Promise.resolve(!1));case 10:return n.next=12,t.json();case 12:return c=n.sent,n.abrupt("return",this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],c.keys).then((function(t){return AF(a,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=this._cryptoHelper,n.t1=e,n.t2=t,n.next=5,this._config();case 5:return n.t3=n.sent.clientID,n.t4=r,n.t5=this._cryptoHelper.decodeIDToken(e).sub,n.next=10,this._config();case 10:return n.t6=n.sent.clockTolerance,n.abrupt("return",n.t0.isValidIdToken.call(n.t0,n.t1,n.t2,n.t3,n.t4,n.t5,n.t6).then((function(e){return e})).catch((function(e){return Promise.reject(new cj("AUTH_HELPER-VIT-ES03","authentication-helper","validateIdToken",void 0,void 0,e))})));case 12:case"end":return n.stop()}}),n,this)})))})).catch((function(e){return Promise.reject(new cj("AUTH_HELPER-VIT-ES04","authentication-helper","validateIdToken",void 0,void 0,e))})));case 14:case"end":return n.stop()}}),n,this)})))})).catch((function(e){var t,n,r;return Promise.reject(new aj("AUTH_HELPER-VIT-NR05","authentication-helper","validateIdToken","Request to jwks endpoint failed.","The request sent to get the jwks from the server failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})):Promise.reject(new cj("AUTH_HELPER-VIT-NF01","authentication-helper","validateIdToken","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.")));case 7:case"end":return t.stop()}}),t,this)})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),a=oj.getTenantDomainFromIdTokenPayload(c),o=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=l&&u?"".concat(l," ").concat(u):l||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:a,username:o},oj.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(t);case 6:return a=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",a.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(a.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status){n.next=2;break}return n.abrupt("return",Promise.reject(new cj("AUTH_HELPER-HTR-NR01","authentication-helper","handleTokenResponse","Invalid response status received for token request.","The request sent to get the token returned "+e.status+" , which is invalid.")));case 2:return n.next=4,e.json();case 4:return r=n.sent,n.next=7,this._config();case 7:if(!n.sent.validateIDToken){n.next=9;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(e){return AF(c,void 0,void 0,regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=5;break}return n.next=3,this._dataLayer.setSessionData(r,t);case 3:return i={accessToken:r.access_token,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.abrupt("return",Promise.resolve(i));case 5:return n.abrupt("return",Promise.reject(new cj("AUTH_HELPER-HTR-IV02","authentication-helper","handleTokenResponse","The id token returned is not valid.","The id token returned has failed the validation check.")));case 6:case"end":return n.stop()}}),n,this)})))})).catch((function(e){return Promise.reject(new cj("AUTH_HELPER-HAT-ES03","authentication-helper","handleTokenResponse",void 0,void 0,e))})));case 9:return i={accessToken:r.access_token,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=12,this._dataLayer.setSessionData(r,t);case 12:return n.abrupt("return",Promise.resolve(i));case 13:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),sj=function(){function e(t){u(this,e),this._cryptoUtils=t}return s(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=S(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return this._cryptoUtils.parseJwk(c)}}catch(e){i.e(e)}finally{i.f()}return Promise.reject(new cj("CRYPTO_UTIL-GTFTIT-IV01","crypto-utils","getJWKForTheIdToken","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+t.map((function(e){return e.kid})).join(", ")))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,$F,n,r,i,c).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(new cj("CRYPTO_UTIL-IVIT-IV02","crypto-utils","isValidIdToken","Validating ID token failed",e))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new cj("CRYPTO_UTIL-DIT-IV01","crypto-utils","decodeIDToken","Decoding ID token failed.",e)}}}]),e}(),mj=function(){function e(t,n){var r=this;u(this,e),this._cryptoUtils=n,this._cryptoHelper=new sj(n),this._authenticationHelper=new dj(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return AF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return AF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return s(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return AF(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,d,s,m,h,b,Z,p,y,X;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return a=c.sent,c.next=5,this._config();case 5:if(o=c.sent,a&&0!==a.trim().length){c.next=8;break}throw new cj("AUTH_CORE-GAU-NF01","authentication-core","getAuthorizationURL","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return(l=new URL(a)).searchParams.append("response_type","code"),l.searchParams.append("client_id",o.clientID),u="openid",o.scope&&o.scope.length>0&&(o.scope.includes("openid")||o.scope.push("openid"),u=o.scope.join(" ")),l.searchParams.append("scope",u),l.searchParams.append("redirect_uri",o.signInRedirectURL),o.responseMode&&l.searchParams.append("response_mode",o.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(d=c.sent,!o.enablePKCE){c.next=21;break}return s=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),m=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(s),c.next=19,this._dataLayer.setTemporaryDataParameter(d,s,t);case 19:l.searchParams.append("code_challenge_method","S256"),l.searchParams.append("code_challenge",m);case 21:if(o.prompt&&l.searchParams.append("prompt",o.prompt),h=e)for(b=0,Z=Object.entries(h);b<Z.length;b++)p=I(Z[b],2),y=p[0],X=p[1],""!=y&&""!=X&&"state"!==y&&l.searchParams.append(y,X.toString());return c.abrupt("return",(l.searchParams.append("state",oj.generateStateParamForRequestCorrelation(d,h?null===(i=h.state)||void 0===i?void 0:i.toString():"")),l.toString()));case 25:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l,u=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(a=i.sent,c&&0!==c.trim().length){i.next=8;break}return i.abrupt("return",Promise.reject(new cj("AUTH_CORE-RAT1-NF01","authentication-core","requestAccessToken","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:if(i.t0=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((o=[]).push("client_id=".concat(a.clientID)),a.clientSecret&&a.clientSecret.trim().length>0&&o.push("client_secret=".concat(a.clientSecret)),l=e,o.push("code=".concat(l)),o.push("grant_type=authorization_code"),o.push("redirect_uri=".concat(a.signInRedirectURL)),i.t1=a.enablePKCE,!i.t1){i.next=29;break}return i.t2=o,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(oj.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(oj.extractPKCEKeyFromStateParam(n),r);case 29:return i.abrupt("return",fetch(c,{body:o.join("&"),credentials:a.sendCookiesInRequests?_F.Include:_F.SameOrigin,headers:new Headers(oj.getTokenRequestHeaders()),method:"POST"}).then((function(e){return u._authenticationHelper.handleTokenResponse(e,r).then((function(e){return e})).catch((function(e){return Promise.reject(new cj("AUTH_CORE-RAT1-ES02","authentication-core","requestAccessToken",void 0,void 0,e))}))})).catch((function(e){var t,n,r;return Promise.reject(new aj("AUTH_CORE-RAT1-NR03","authentication-core","requestAccessToken","Requesting access token failed","The request to get the access token from the server failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 30:case"end":return i.stop()}}),i,this)})))}},{key:"refreshAccessToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}return t.abrupt("return",Promise.reject(new cj("AUTH_CORE-RAT2-NF01","authentication-core","refreshAccessToken","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.")));case 11:if(n&&0!==n.trim().length){t.next=13;break}return t.abrupt("return",Promise.reject(new cj("AUTH_CORE-RAT2-NF02","authentication-core","refreshAccessToken","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.")));case 13:return c=[],t.abrupt("return",(c.push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?_F.Include:_F.SameOrigin,headers:new Headers(oj.getTokenRequestHeaders()),method:"POST"}).then((function(t){return a._authenticationHelper.handleTokenResponse(t,e).then((function(e){return e})).catch((function(e){return Promise.reject(new cj("AUTH_CORE-RAT2-ES03","authentication-core","refreshAccessToken",void 0,void 0,e))}))})).catch((function(e){var t,n,r;return Promise.reject(new aj("AUTH_CORE-RAT2-NR03","authentication-core","refreshAccessToken","Refresh access token request failed.","The request to refresh the access token failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))}))));case 15:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}return t.abrupt("return",Promise.reject(new cj("AUTH_CORE-RAT3-NF01","authentication-core","revokeAccessToken","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.")));case 8:return(i=[]).push("client_id=".concat(r.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.abrupt("return",fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?_F.Include:_F.SameOrigin,headers:new Headers(oj.getTokenRequestHeaders()),method:"POST"}).then((function(t){return 200!==t.status?Promise.reject(new cj("AUTH_CORE-RAT3-NR02","authentication-core","revokeAccessToken","Invalid response status received for revoke access token request.","The request sent to revoke the access token returned "+t.status+" , which is invalid.")):(c._authenticationHelper.clearUserSessionData(e),Promise.resolve(t))})).catch((function(e){var t,n,r;return Promise.reject(new aj("AUTH_CORE-RAT3-NR03","authentication-core","revokeAccessToken","The request to revoke access token failed.","The request sent to revoke the access token failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 19:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(e,t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}return n.abrupt("return",Promise.reject(new cj("AUTH_CORE-RCG-NF01","authentication-core","requestCustomGrant","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:return n.next=10,Promise.all(Object.entries(e.data).map((function(e){var n=I(e,2),r=n[0],i=n[1];return AF(u,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(a=n.sent,o=Object.assign({},oj.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},o),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},o=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:a.join("&"),credentials:i.sendCookiesInRequests?_F.Include:_F.SameOrigin,headers:new Headers(o),method:"POST"},n.abrupt("return",fetch(c,l).then((function(n){return 200!==n.status?Promise.reject(new cj("AUTH_CORE-RCG-NR02","authentication-core","requestCustomGrant","Invalid response status received for the custom grant request.","The request sent to get the custom grant returned "+n.status+" , which is invalid.")):e.returnsSession?u._authenticationHelper.handleTokenResponse(n,t).then((function(e){return e})).catch((function(e){return Promise.reject(new cj("AUTH_CORE-RCG-ES03","authentication-core","requestCustomGrant",void 0,void 0,e))})):Promise.resolve(n)})).catch((function(e){var t,n,r;return Promise.reject(new aj("AUTH_CORE-RCG-NR04","authentication-core","requestCustomGrant","The custom grant request failed.","The request sent to get the custom grant failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 25:case"end":return n.stop()}}),n,this)})))}},{key:"getBasicUserInfo",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=!e,!t.t0){t.next=5;break}return t.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:t.t0=t.sent;case 5:if(!t.t0){t.next=7;break}return t.abrupt("return",Promise.resolve(!0));case 7:return t.next=9,this._authenticationHelper.resolveWellKnownEndpoint();case 9:return n=t.sent,t.abrupt("return",fetch(n).then((function(e){return AF(r,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(200===e.status){t.next=4;break}t.t0=Promise.reject(new cj("AUTH_CORE-GOPM-NR01","authentication-core","getOIDCProviderMetaData","Invalid response status received for OIDC provider meta data request.","The request sent to the well-known endpoint to get the OIDC provider meta data returned "+e.status+" , which is invalid.")),t.next=17;break;case 4:return t.t1=this._dataLayer,t.t2=this._authenticationHelper,t.next=8,e.json();case 8:return t.t3=t.sent,t.next=11,t.t2.resolveEndpoints.call(t.t2,t.t3);case 11:return t.t4=t.sent,t.next=14,t.t1.setOIDCProviderMetaData.call(t.t1,t.t4);case 14:return t.next=16,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 16:t.t0=Promise.resolve(!0);case 17:return t.abrupt("return",t.t0);case 18:case"end":return t.stop()}}),t,this)})))})).catch((function(){return AF(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=this._dataLayer,e.next=3,this._authenticationHelper.resolveFallbackEndpoints();case 3:return e.t1=e.sent,e.next=6,e.t0.setOIDCProviderMetaData.call(e.t0,e.t1);case 6:return e.next=8,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e,this)})))})));case 11:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return t=e.sent,e.t0=t.authorization_endpoint,e.t1=t.check_session_iframe,e.t2=t.end_session_endpoint,e.t3=t.introspection_endpoint,e.t4=t.issuer,e.t5=t.jwks_uri,e.t6=t.registration_endpoint,e.t7=t.revocation_endpoint,e.t8=t.token_endpoint,e.t9=t.userinfo_endpoint,e.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return e.t10=e.sent,e.abrupt("return",{authorizationEndpoint:e.t0,checkSessionIframe:e.t1,endSessionEndpoint:e.t2,introspectionEndpoint:e.t3,issuer:e.t4,jwksUri:e.t5,registrationEndpoint:e.t6,revocationEndpoint:e.t7,tokenEndpoint:e.t8,userinfoEndpoint:e.t9,wellKnownEndpoint:e.t10});case 17:case"end":return e.stop()}}),e,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(a=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new cj("AUTH_CORE-GSOU-NF01","authentication-core","getSignOutURL","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(e);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((o=i.t5)&&0!==o.trim().length){i.next=31;break}throw new cj("AUTH_CORE-GSOU-NF02","authentication-core","getSignOutURL","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((l=null!==(r=null==a?void 0:a.signOutRedirectURL)&&void 0!==r?r:null==a?void 0:a.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new cj("AUTH_CORE-GSOU-NF03","authentication-core","getSignOutURL","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(o,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return n=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(oj.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(oj.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:if(!e.overrideWellEndpointConfig){t.next=13;break}if(t.t0=null==e?void 0:e.endpoints,!t.t0){t.next=11;break}return t.t1=this._dataLayer,t.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return t.t2=t.sent,t.next=11,t.t1.setOIDCProviderMetaData.call(t.t1,t.t2);case 11:t.next=17;break;case 13:if(t.t3=null==e?void 0:e.endpoints,!t.t3){t.next=17;break}return t.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return t.stop()}}),t,this)})))}}]),e}(),hj=function(){function t(e,n){u(this,t),this._id=e,this._store=n}return s(t,[{key:"setDataInBulk",value:function(e,t){var n;return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),a=Object.assign(Object.assign({},c),t),o=JSON.stringify(a),r.next=17,this._store.setData(e,o);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,a=c&&JSON.parse(c),o=Object.assign(Object.assign({},a),m({},t,n)),l=JSON.stringify(o),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(a=Object.assign({},c))[t],o=JSON.stringify(a),r.next=18,this._store.setData(e,o);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.TemporaryData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.SessionData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var t;return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var t;return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(t){var n;return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.TemporaryData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionData",value:function(t){var n;return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.SessionData,t));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigData",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.TemporaryData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.SessionData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.ConfigData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(t,n,r){return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.TemporaryData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(t,n,r){return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.SessionData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.TemporaryData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.SessionData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}}]),t}(),bj={clockTolerance:300,enablePKCE:!0,responseMode:e.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},Zj=function(){function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new hj("instance_".concat(e._instanceID),t),this._authenticationCore=new mj(this._dataLayer,n)}return s(e,[{key:"initialize",value:function(e){var t,n,r;return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},bj),e),{scope:[].concat(W(null!==(t=bj.scope)&&void 0!==t?t:[]),W(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==bj?void 0:bj.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"getAuthorizationURL",value:function(e,t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},e))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,t),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==e?void 0:e.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,t)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return AF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(e,t,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(e,t,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return AF(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getDecodedIDToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getBasicUserInfo",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(e){return this._authenticationCore.revokeAccessToken(e)}},{key:"refreshAccessToken",value:function(e){return this._authenticationCore.refreshAccessToken(e)}},{key:"getAccessToken",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(e,t){return this._authenticationCore.requestCustomGrant(e,t)}},{key:"isAuthenticated",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return AF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(e,t));case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return AF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(e,t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return AF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.updateConfig(e);case 2:case"end":return t.stop()}}),t,this)})))}}],[{key:"isSignOutSuccessful",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}}]),e}(),pj="sign-out",yj="get_auth_url",Xj="check_session_signed_in",fj="check_session_signed_out",Gj="set_session_state_from_iframe";e.Storage=void 0,(lj=e.Storage||(e.Storage={})).LocalStorage="localStorage",lj.SessionStorage="sessionStorage",lj.WebWorker="webWorker",lj.BrowserMemory="browserMemory",e.Hooks=void 0,(uj=e.Hooks||(e.Hooks={})).SignIn="sign-in",uj.SignOut="sign-out",uj.Initialize="initialize",uj.HttpRequestStart="http-request-start",uj.HttpRequestFinish="http-request-finish",uj.HttpRequestError="http-request-error",uj.HttpRequestSuccess="http-request-success",uj.RevokeAccessToken="revoke-access-token",uj.CustomGrant="custom-grant",uj.SignOutFailed="sign-out-failed";var Vj,Ij,Wj,gj,vj,Sj,Rj,Yj,Jj,Kj,Lj,Nj,xj,Hj,kj,Uj,Cj,wj="rpIFrame",Tj="promptNoneIFrame",Fj="Y2hlY2tTZXNzaW9u",jj="sign-in-silently",zj="initialized-silent-sign-in",Pj="promptNoneRequestSent",Mj="error",Qj="error_description",Bj="custom_grant_config",Dj="state",Ej="Access token is invalid",Oj=function(e){h(n,e);var t=V(n);function n(e,r,i,c,a,o){var l;return u(this,n),(l=t.call(this,null!=c?c:null==o?void 0:o.message)).name=l.constructor.name,l.code=e,l.file=r,l.method=i,l.error=o,l.description=a,Object.setPrototypeOf(f(l),(this instanceof n?this.constructor:void 0).prototype),l}return s(n)}(X(Error)),Aj=function(){function e(t){u(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return s(e,[{key:"refreshAccessTokenAutomatically",value:function(){return OF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return OF(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(qF,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return OF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(qF);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(qF);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),_j=function(){function e(){u(this,e)}return s(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(nj,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(nj))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem(zj),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){if(Zj.isSignOutSuccessful(window.location.href)){var e=window.location.href.split("?")[0];return history.pushState({},document.title,e),!0}return!1}},{key:"didSignOutFail",value:function(){if(Zj.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get(Mj),n=e.searchParams.get(Qj),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes(jj))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get(Mj)&&t.searchParams.get(Dj)!==rj}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem(Pj);return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem(Pj,JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),qj=(Nj=function(e,t,n,r,i,c,a){Vj=e,Ij=t,Wj=n,vj=c,Sj=i,Lj=a,(gj=r)>-1&&xj(),Sj>-1&&(i=setInterval((function(){Uj()}),1e3*Sj))},xj=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Wj();case 2:r=t.sent,Boolean(Vj)&&Boolean(r)&&(i="".concat(Vj," ").concat(r),c=document.getElementById(wj),a=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(o=a.contentWindow)||o.postMessage(i,Ij));case 4:case"end":return t.stop()}}),t)})))},Ij&&Vj&&vj){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(wj),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=Ij+"?client_id="+Vj+"&redirect_uri="+vj,e.next=9,r();case 9:Yj=setInterval(r,1e3*gj),kj();case 11:case"end":return e.stop()}}),e)})))},Hj=function(){clearInterval(Yj),clearInterval(void 0)},kj=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=Ij)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)!==Gj){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,Rj();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&Uj();case 13:case"end":return n.stop()}}),n)})))}),!1)},Uj=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=document.getElementById(wj),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(Tj),!_j.canSendPromptNoneRequest()){t.next=10;break}return _j.setPromptNoneRequestSent(!0),c=function e(t){var n,r,i;(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)===Gj&&(Kj(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},Jj!==e.Storage.BrowserMemory&&Jj!==e.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),t.next=8,Lj({prompt:"none",state:Fj});case 8:a=t.sent,i.src=a;case 10:case"end":return t.stop()}}),t)})))},Cj=function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,d,s,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(Dj),a=new URL(window.location.href).searchParams.get(tj),o=window.parent.parent,null===c||!c.includes(Fj)&&!c.includes(jj)){n.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){n.next=32;break}if(!c.includes(jj)){n.next=15;break}return u={data:{code:l,sessionState:null!=a?a:"",state:c},type:Xj},sessionStorage.setItem(zj,"false"),o.postMessage(u,o.origin),_j.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,_j.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),Jj!==e.Storage.LocalStorage&&Jj!==e.Storage.SessionStorage){n.next=23;break}if(n.t0=t,!n.t0){n.next=21;break}return n.next=21,t(d);case 21:n.next=25;break;case 23:s={data:null!=d?d:"",type:Gj},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(s);case 25:return _j.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,_j.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(jj)){n.next=40;break}return m={type:fj},window.parent.parent.postMessage(m,o.origin),_j.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,_j.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return _j.setPromptNoneRequestSent(!1),n.next=43,Rj();case 43:return o.location.href=n.sent,window.location.href="about:blank",n.next=47,_j.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(e,t,n){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",wj),c.style.display="none",a=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById(wj))?void 0:c.contentDocument,o=null==i?void 0:i.createElement("iframe");o&&(o.setAttribute("id","opIFrame"),o.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",Tj),l.style.display="none"),o&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(o)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),a=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),Rj=e,Jj=t,Kj=n,o=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==a){r.next=15;break}return r.next=13,o();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:Nj,receivePromptNoneResponse:Cj,reset:Hj});case 16:case"end":return r.stop()}}),r)})))}),$j={exports:{}},ez=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},tz=ez,nz=Object.prototype.toString;function rz(e){return Array.isArray(e)}function iz(e){return void 0===e}function cz(e){return"[object ArrayBuffer]"===nz.call(e)}function az(e){return null!==e&&"object"===a(e)}function oz(e){if("[object Object]"!==nz.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function lz(e){return"[object Function]"===nz.call(e)}function uz(e,t){if(null!=e)if("object"!==a(e)&&(e=[e]),rz(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var dz={isArray:rz,isArrayBuffer:cz,isBuffer:function(e){return null!==e&&!iz(e)&&null!==e.constructor&&!iz(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===nz.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&cz(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:az,isPlainObject:oz,isUndefined:iz,isDate:function(e){return"[object Date]"===nz.call(e)},isFile:function(e){return"[object File]"===nz.call(e)},isBlob:function(e){return"[object Blob]"===nz.call(e)},isFunction:lz,isStream:function(e){return az(e)&&lz(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===nz.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:uz,merge:function e(){var t={};function n(n,r){oz(t[r])&&oz(n)?t[r]=e(t[r],n):oz(n)?t[r]=e({},n):rz(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)uz(arguments[r],n);return t},extend:function(e,t,n){return uz(t,(function(t,r){e[r]=n&&"function"==typeof t?tz(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},sz=dz;function mz(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var hz=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(sz.isURLSearchParams(t))r=t.toString();else{var i=[];sz.forEach(t,(function(e,t){null!=e&&(sz.isArray(e)?t+="[]":e=[e],sz.forEach(e,(function(e){sz.isDate(e)?e=e.toISOString():sz.isObject(e)&&(e=JSON.stringify(e)),i.push(mz(t)+"="+mz(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},bz=dz;function Zz(){this.handlers=[]}Zz.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},Zz.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Zz.prototype.forEach=function(e){bz.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var pz=Zz,yz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Xz(){throw new Error("setTimeout has not been defined")}function fz(){throw new Error("clearTimeout has not been defined")}var Gz=Xz,Vz=fz;function Iz(e){if(Gz===setTimeout)return setTimeout(e,0);if((Gz===Xz||!Gz)&&setTimeout)return Gz=setTimeout,setTimeout(e,0);try{return Gz(e,0)}catch(t){try{return Gz.call(null,e,0)}catch(t){return Gz.call(this,e,0)}}}"function"==typeof yz.setTimeout&&(Gz=setTimeout),"function"==typeof yz.clearTimeout&&(Vz=clearTimeout);var Wz,gz=[],vz=!1,Sz=-1;function Rz(){vz&&Wz&&(vz=!1,Wz.length?gz=Wz.concat(gz):Sz=-1,gz.length&&Yz())}function Yz(){if(!vz){var e=Iz(Rz);vz=!0;for(var t=gz.length;t;){for(Wz=gz,gz=[];++Sz<t;)Wz&&Wz[Sz].run();Sz=-1,t=gz.length}Wz=null,vz=!1,function(e){if(Vz===clearTimeout)return clearTimeout(e);if((Vz===fz||!Vz)&&clearTimeout)return Vz=clearTimeout,clearTimeout(e);try{Vz(e)}catch(t){try{return Vz.call(null,e)}catch(t){return Vz.call(this,e)}}}(e)}}function Jz(e,t){this.fun=e,this.array=t}Jz.prototype.run=function(){this.fun.apply(null,this.array)};function Kz(){}var Lz=Kz,Nz=Kz,xz=Kz,Hz=Kz,kz=Kz,Uz=Kz,Cz=Kz;var wz=yz.performance||{},Tz=wz.now||wz.mozNow||wz.msNow||wz.oNow||wz.webkitNow||function(){return(new Date).getTime()};var Fz=new Date;var jz={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];gz.push(new Jz(e,t)),1!==gz.length||vz||Iz(Yz)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Lz,addListener:Nz,once:xz,off:Hz,removeListener:kz,removeAllListeners:Uz,emit:Cz,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Tz.call(wz),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Fz)/1e3}},zz=jz,Pz=dz,Mz=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},Qz=Mz,Bz=function(e,t,n,r,i){var c=new Error(e);return Qz(c,t,n,r,i)},Dz=Bz,Ez=dz,Oz=Ez.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var a=[];a.push(e+"="+encodeURIComponent(t)),Ez.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),Ez.isString(r)&&a.push("path="+r),Ez.isString(i)&&a.push("domain="+i),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Az=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},_z=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},qz=dz,$z=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],eP=dz,tP=eP.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=eP.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function nP(e){this.message=e}nP.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},nP.prototype.__CANCEL__=!0;var rP=nP,iP=dz,cP=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(Dz("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},aP=Oz,oP=hz,lP=function(e,t){return e&&!Az(t)?_z(e,t):t},uP=function(e){var t,n,r,i={};return e?(qz.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=qz.trim(e.substr(0,r)).toLowerCase(),n=qz.trim(e.substr(r+1)),t){if(i[t]&&$z.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},dP=tP,sP=Bz,mP=IP,hP=rP,bP=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,a=e.responseType;function o(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}iP.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=lP(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?uP(l.getAllResponseHeaders()):null,i={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};cP((function(e){t(e),o()}),(function(e){n(e),o()}),i),l=null}}if(l.open(e.method.toUpperCase(),oP(s,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(sP("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(sP("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||mP.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(sP(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},iP.isStandardBrowserEnv()){var h=(e.withCredentials||dP(s))&&e.xsrfCookieName?aP.read(e.xsrfCookieName):void 0;h&&(c[e.xsrfHeaderName]=h)}"setRequestHeader"in l&&iP.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),iP.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new hP("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},ZP=dz,pP=function(e,t){Pz.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},yP=Mz,XP={"Content-Type":"application/x-www-form-urlencoded"};function fP(e,t){!ZP.isUndefined(e)&&ZP.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var GP,VP={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==zz&&"[object process]"===Object.prototype.toString.call(zz))&&(GP=bP),GP),transformRequest:[function(e,t){return pP(t,"Accept"),pP(t,"Content-Type"),ZP.isFormData(e)||ZP.isArrayBuffer(e)||ZP.isBuffer(e)||ZP.isStream(e)||ZP.isFile(e)||ZP.isBlob(e)?e:ZP.isArrayBufferView(e)?e.buffer:ZP.isURLSearchParams(e)?(fP(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):ZP.isObject(e)||t&&"application/json"===t["Content-Type"]?(fP(t,"application/json"),function(e,t,n){if(ZP.isString(e))try{return(t||JSON.parse)(e),ZP.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||VP.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&ZP.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw yP(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};ZP.forEach(["delete","get","head"],(function(e){VP.headers[e]={}})),ZP.forEach(["post","put","patch"],(function(e){VP.headers[e]=ZP.merge(XP)}));var IP=VP,WP=dz,gP=IP,vP=function(e){return!(!e||!e.__CANCEL__)},SP=dz,RP=function(e,t,n){var r=this||gP;return WP.forEach(n,(function(n){e=n.call(r,e,t)})),e},YP=vP,JP=IP,KP=rP;function LP(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new KP("canceled")}var NP=dz,xP=function(e,t){t=t||{};var n={};function r(e,t){return NP.isPlainObject(e)&&NP.isPlainObject(t)?NP.merge(e,t):NP.isPlainObject(t)?NP.merge({},t):NP.isArray(t)?t.slice():t}function i(n){return NP.isUndefined(t[n])?NP.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!NP.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return NP.isUndefined(t[n])?NP.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function o(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return NP.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);NP.isUndefined(r)&&t!==o||(n[e]=r)})),n},HP="0.26.0",kP=HP,UP={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){UP[e]=function(n){return a(n)===e||"a"+(t<1?"n ":" ")+e}}));var CP={};UP.transitional=function(e,t,n){function r(e,t){return"[Axios v"+kP+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!CP[i]&&(CP[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var wP={assertOptions:function(e,t,n){if("object"!==a(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var c=r[i],o=t[c];if(o){var l=e[c],u=void 0===l||o(l,c,e);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:UP},TP=dz,FP=hz,jP=pz,zP=function(e){return LP(e),e.headers=e.headers||{},e.data=RP.call(e,e.data,e.headers,e.transformRequest),e.headers=SP.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),SP.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||JP.adapter)(e).then((function(t){return LP(e),t.data=RP.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return YP(t)||(LP(e),t&&t.response&&(t.response.data=RP.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},PP=xP,MP=wP,QP=MP.validators;function BP(e){this.defaults=e,this.interceptors={request:new jP,response:new jP}}BP.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=PP(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&MP.assertOptions(n,{silentJSONParsing:QP.transitional(QP.boolean),forcedJSONParsing:QP.transitional(QP.boolean),clarifyTimeoutError:QP.transitional(QP.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)})),!i){var o=[zP,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(a),c=Promise.resolve(t);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=t;r.length;){var u=r.shift(),d=r.shift();try{l=u(l)}catch(e){d(e);break}}try{c=zP(l)}catch(e){return Promise.reject(e)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},BP.prototype.getUri=function(e){return e=PP(this.defaults,e),FP(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},TP.forEach(["delete","get","head","options"],(function(e){BP.prototype[e]=function(t,n){return this.request(PP(n||{},{method:e,url:t,data:(n||{}).data}))}})),TP.forEach(["post","put","patch"],(function(e){BP.prototype[e]=function(t,n,r){return this.request(PP(r||{},{method:e,url:t,data:n}))}}));var DP=BP,EP=rP;function OP(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new EP(e),t(n.reason))}))}OP.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},OP.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},OP.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},OP.source=function(){var e,t=new OP((function(t){e=t}));return{token:t,cancel:e}};var AP=OP,_P=dz,qP=dz,$P=ez,eM=DP,tM=xP;var nM=function e(t){var n=new eM(t),r=$P(eM.prototype.request,n);return qP.extend(r,eM.prototype,n),qP.extend(r,n),r.create=function(n){return e(tM(t,n))},r}(IP);nM.Axios=eM,nM.Cancel=rP,nM.CancelToken=AP,nM.isCancel=vP,nM.VERSION=HP,nM.all=function(e){return Promise.all(e)},nM.spread=function(e){return function(t){return e.apply(null,t)}},nM.isAxiosError=function(e){return _P.isObject(e)&&!0===e.isAxiosError},$j.exports=nM,$j.exports.default=nM;var rM,iM=$j.exports;var cM=rM=function(){function e(){u(this,e),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return s(e,[{key:"requestHandler",value:function(e){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),rM.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw rM.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return rM.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:rM.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){rM.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){rM.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rM.DEFAULT_HANDLER_DISABLE_TIMEOUT;rM.isHandlerEnabled=!1,setTimeout((function(){rM.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=iM.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new rM),this.axiosInstance.interceptors.request.use((function(t){return OF(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=iM.all,this.axiosInstance.spread=iM.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),e}();cM.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,cM=rM=function(e,t,n,r){var i,c=arguments.length,o=c<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":a(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(o=(c<3?i(o):c>3?i(t,n,o):i(t,n))||o);return c>3&&o&&Object.defineProperty(t,n,o),o}([function(e){}],cM);var aM=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),oM=function(){function e(){u(this,e),this._data=new Map}return s(e,[{key:"setData",value:function(e,t){return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return OF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),lM=function(){function e(){u(this,e)}return s(e,[{key:"setData",value:function(e,t){return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),uM=[],dM=[],sM="undefined"!=typeof Uint8Array?Uint8Array:Array,mM=!1;function hM(){mM=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)uM[t]=e[t],dM[e.charCodeAt(t)]=t;dM["-".charCodeAt(0)]=62,dM["_".charCodeAt(0)]=63}function bM(e,t,n){for(var r,i,c=[],a=t;a<n;a+=3)r=(e[a]<<16)+(e[a+1]<<8)+e[a+2],c.push(uM[(i=r)>>18&63]+uM[i>>12&63]+uM[i>>6&63]+uM[63&i]);return c.join("")}function ZM(e){var t;mM||hM();for(var n=e.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(bM(e,o,o+a>l?l:o+a));return 1===r?(t=e[n-1],i+=uM[t>>2],i+=uM[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=uM[t>>10],i+=uM[t>>4&63],i+=uM[t<<2&63],i+="="),c.push(i),c.join("")}function pM(e,t,n,r,i){var c,a,o=8*i-r-1,l=(1<<o)-1,u=l>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=e[t+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+e[t+s],s+=m,d-=8);for(a=c&(1<<-d)-1,c>>=-d,d+=r;d>0;a=256*a+e[t+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),c-=u}return(h?-1:1)*a*Math.pow(2,c-r)}function yM(e,t,n,r,i,c){var a,o,l,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,b=r?1:-1,Z=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=d):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(a++,l/=2),a+s>=d?(o=0,a=d):a+s>=1?(o=(t*l-1)*Math.pow(2,i),a+=s):(o=t*Math.pow(2,s-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&o,h+=b,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;e[n+h]=255&a,h+=b,a/=256,u-=8);e[n+h-b]|=128*Z}var XM={}.toString,fM=Array.isArray||function(e){return"[object Array]"==XM.call(e)};WM.TYPED_ARRAY_SUPPORT=void 0===yz.TYPED_ARRAY_SUPPORT||yz.TYPED_ARRAY_SUPPORT;var GM=VM();function VM(){return WM.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function IM(e,t){if(VM()<t)throw new RangeError("Invalid typed array length");return WM.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=WM.prototype:(null===e&&(e=new WM(t)),e.length=t),e}function WM(e,t,n){if(!(WM.TYPED_ARRAY_SUPPORT||this instanceof WM))return new WM(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return SM(this,e)}return gM(this,e,t,n)}function gM(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);WM.TYPED_ARRAY_SUPPORT?(e=t).__proto__=WM.prototype:e=RM(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!WM.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|KM(t,n),i=(e=IM(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(JM(t)){var n=0|YM(t.length);return 0===(e=IM(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?IM(e,0):RM(e,t);if("Buffer"===t.type&&fM(t.data))return RM(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function vM(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function SM(e,t){if(vM(t),e=IM(e,t<0?0:0|YM(t)),!WM.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function RM(e,t){var n=t.length<0?0:0|YM(t.length);e=IM(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function YM(e){if(e>=VM())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+VM().toString(16)+" bytes");return 0|e}function JM(e){return!(null==e||!e._isBuffer)}function KM(e,t){if(JM(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return rQ(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return iQ(e).length;default:if(r)return rQ(e).length;t=(""+t).toLowerCase(),r=!0}}function LM(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return BM(this,t,n);case"utf8":case"utf-8":return zM(this,t,n);case"ascii":return MM(this,t,n);case"latin1":case"binary":return QM(this,t,n);case"base64":return jM(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return DM(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function NM(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function xM(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=WM.from(t,r)),JM(t))return 0===t.length?-1:HM(e,t,n,r,i);if("number"==typeof t)return t&=255,WM.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):HM(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function HM(e,t,n,r,i){var c,a=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var d=-1;for(c=n;c<o;c++)if(u(e,c)===u(t,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*a}else-1!==d&&(c-=c-d),d=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){s=!1;break}if(s)return c}return-1}function kM(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var a=0;a<r;++a){var o=parseInt(t.substr(2*a,2),16);if(isNaN(o))return a;e[n+a]=o}return a}function UM(e,t,n,r){return cQ(rQ(t,e.length-n),e,n,r)}function CM(e,t,n,r){return cQ(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function wM(e,t,n,r){return CM(e,t,n,r)}function TM(e,t,n,r){return cQ(iQ(t),e,n,r)}function FM(e,t,n,r){return cQ(function(e,t){for(var n,r,i,c=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(n=e.charCodeAt(a))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function jM(e,t,n){return 0===t&&n===e.length?ZM(e):ZM(e.slice(t,n))}function zM(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,a,o,l,u=e[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=e[i+1],a=e[i+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=e[i+1],a=e[i+2],o=e[i+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(e){var t=e.length;if(t<=PM)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=PM));return n}(r)}WM.poolSize=8192,WM._augment=function(e){return e.__proto__=WM.prototype,e},WM.from=function(e,t,n){return gM(null,e,t,n)},WM.TYPED_ARRAY_SUPPORT&&(WM.prototype.__proto__=Uint8Array.prototype,WM.__proto__=Uint8Array),WM.alloc=function(e,t,n){return function(e,t,n,r){return vM(t),t<=0?IM(e,t):void 0!==n?"string"==typeof r?IM(e,t).fill(n,r):IM(e,t).fill(n):IM(e,t)}(null,e,t,n)},WM.allocUnsafe=function(e){return SM(null,e)},WM.allocUnsafeSlow=function(e){return SM(null,e)},WM.isBuffer=aQ,WM.compare=function(e,t){if(!JM(e)||!JM(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},WM.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},WM.concat=function(e,t){if(!fM(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return WM.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=WM.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!JM(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},WM.byteLength=KM,WM.prototype._isBuffer=!0,WM.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)NM(this,t,t+1);return this},WM.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)NM(this,t,t+3),NM(this,t+1,t+2);return this},WM.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)NM(this,t,t+7),NM(this,t+1,t+6),NM(this,t+2,t+5),NM(this,t+3,t+4);return this},WM.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?zM(this,0,e):LM.apply(this,arguments)},WM.prototype.equals=function(e){if(!JM(e))throw new TypeError("Argument must be a Buffer");return this===e||0===WM.compare(this,e)},WM.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},WM.prototype.compare=function(e,t,n,r,i){if(!JM(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),o=Math.min(c,a),l=this.slice(r,i),u=e.slice(t,n),d=0;d<o;++d)if(l[d]!==u[d]){c=l[d],a=u[d];break}return c<a?-1:a<c?1:0},WM.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},WM.prototype.indexOf=function(e,t,n){return xM(this,e,t,n,!0)},WM.prototype.lastIndexOf=function(e,t,n){return xM(this,e,t,n,!1)},WM.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return kM(this,e,t,n);case"utf8":case"utf-8":return UM(this,e,t,n);case"ascii":return CM(this,e,t,n);case"latin1":case"binary":return wM(this,e,t,n);case"base64":return TM(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return FM(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},WM.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var PM=4096;function MM(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function QM(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function BM(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=nQ(e[c]);return i}function DM(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function EM(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function OM(e,t,n,r,i,c){if(!JM(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function AM(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function _M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function qM(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function $M(e,t,n,r,i){return i||qM(e,0,n,4),yM(e,t,n,r,23,4),n+4}function eQ(e,t,n,r,i){return i||qM(e,0,n,8),yM(e,t,n,r,52,8),n+8}WM.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),WM.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=WM.prototype;else{var i=t-e;n=new WM(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},WM.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||EM(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},WM.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||EM(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},WM.prototype.readUInt8=function(e,t){return t||EM(e,1,this.length),this[e]},WM.prototype.readUInt16LE=function(e,t){return t||EM(e,2,this.length),this[e]|this[e+1]<<8},WM.prototype.readUInt16BE=function(e,t){return t||EM(e,2,this.length),this[e]<<8|this[e+1]},WM.prototype.readUInt32LE=function(e,t){return t||EM(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},WM.prototype.readUInt32BE=function(e,t){return t||EM(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},WM.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||EM(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},WM.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||EM(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},WM.prototype.readInt8=function(e,t){return t||EM(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},WM.prototype.readInt16LE=function(e,t){t||EM(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},WM.prototype.readInt16BE=function(e,t){t||EM(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},WM.prototype.readInt32LE=function(e,t){return t||EM(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},WM.prototype.readInt32BE=function(e,t){return t||EM(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},WM.prototype.readFloatLE=function(e,t){return t||EM(e,4,this.length),pM(this,e,!0,23,4)},WM.prototype.readFloatBE=function(e,t){return t||EM(e,4,this.length),pM(this,e,!1,23,4)},WM.prototype.readDoubleLE=function(e,t){return t||EM(e,8,this.length),pM(this,e,!0,52,8)},WM.prototype.readDoubleBE=function(e,t){return t||EM(e,8,this.length),pM(this,e,!1,52,8)},WM.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||OM(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},WM.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||OM(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},WM.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,1,255,0),WM.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},WM.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,2,65535,0),WM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):AM(this,e,t,!0),t+2},WM.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,2,65535,0),WM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):AM(this,e,t,!1),t+2},WM.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,4,4294967295,0),WM.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):_M(this,e,t,!0),t+4},WM.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,4,4294967295,0),WM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_M(this,e,t,!1),t+4},WM.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);OM(this,e,t,n,i-1,-i)}var c=0,a=1,o=0;for(this[t]=255&e;++c<n&&(a*=256);)e<0&&0===o&&0!==this[t+c-1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},WM.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);OM(this,e,t,n,i-1,-i)}var c=n-1,a=1,o=0;for(this[t+c]=255&e;--c>=0&&(a*=256);)e<0&&0===o&&0!==this[t+c+1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},WM.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,1,127,-128),WM.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},WM.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,2,32767,-32768),WM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):AM(this,e,t,!0),t+2},WM.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,2,32767,-32768),WM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):AM(this,e,t,!1),t+2},WM.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,4,2147483647,-2147483648),WM.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):_M(this,e,t,!0),t+4},WM.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||OM(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),WM.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_M(this,e,t,!1),t+4},WM.prototype.writeFloatLE=function(e,t,n){return $M(this,e,t,!0,n)},WM.prototype.writeFloatBE=function(e,t,n){return $M(this,e,t,!1,n)},WM.prototype.writeDoubleLE=function(e,t,n){return eQ(this,e,t,!0,n)},WM.prototype.writeDoubleBE=function(e,t,n){return eQ(this,e,t,!1,n)},WM.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!WM.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},WM.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!WM.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var a=JM(e)?e:rQ(new WM(e,r).toString()),o=a.length;for(c=0;c<n-t;++c)this[c+t]=a[c%o]}return this};var tQ=/[^+\/0-9A-Za-z-_]/g;function nQ(e){return e<16?"0"+e.toString(16):e.toString(16)}function rQ(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function iQ(e){return function(e){var t,n,r,i,c,a;mM||hM();var o=e.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[o-2]?2:"="===e[o-1]?1:0,a=new sM(3*o/4-c),r=c>0?o-4:o;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=dM[e.charCodeAt(t)]<<18|dM[e.charCodeAt(t+1)]<<12|dM[e.charCodeAt(t+2)]<<6|dM[e.charCodeAt(t+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=dM[e.charCodeAt(t)]<<2|dM[e.charCodeAt(t+1)]>>4,a[l++]=255&i):1===c&&(i=dM[e.charCodeAt(t)]<<10|dM[e.charCodeAt(t+1)]<<4|dM[e.charCodeAt(t+2)]>>2,a[l++]=i>>8&255,a[l++]=255&i),a}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(tQ,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function cQ(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function aQ(e){return null!=e&&(!!e._isBuffer||oQ(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&oQ(e.slice(0,0))}(e))}function oQ(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var lQ=Object.freeze({__proto__:null,Buffer:WM,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),WM.alloc(+e)},isBuffer:aQ,kMaxLength:GM}),uQ={exports:{}},dQ={},sQ={};Object.defineProperty(sQ,"__esModule",{value:!0}),sQ.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,a=WM.alloc(c);for(a.write(e);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(dQ,"__esModule",{value:!0});var mQ=sQ;function hQ(e,t){return void 0===t&&(t="utf8"),WM.isBuffer(e)?ZQ(e.toString("base64")):ZQ(WM.from(e,t).toString("base64"))}function bQ(e){return e=e.toString(),mQ.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function ZQ(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var pQ,yQ=hQ;yQ.encode=hQ,yQ.decode=function(e,t){return void 0===t&&(t="utf8"),WM.from(bQ(e),"base64").toString(t)},yQ.toBase64=bQ,yQ.fromBase64=ZQ,yQ.toBuffer=function(e){return WM.from(bQ(e),"base64")},dQ.default=yQ,(pQ=uQ).exports=dQ.default,pQ.exports.default=pQ.exports;var XQ=uQ.exports,fQ={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(e,n,r,i,c){for(var a,o,l,u,d,s,m,h,b,Z,p,y,X;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],Z=0;Z<16;Z++)p=i+4*Z,e[Z]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(Z=16;Z<64;Z++)y=((b=e[Z-2])>>>17|b<<15)^(b>>>19|b<<13)^b>>>10,X=((b=e[Z-15])>>>7|b<<25)^(b>>>18|b<<14)^b>>>3,e[Z]=(y+e[Z-7]|0)+(X+e[Z-16]|0);for(Z=0;Z<64;Z++)y=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(t[Z]+e[Z]|0)|0)|0,X=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,h=m,m=s,s=d,d=u+y|0,u=l,l=o,o=a,a=y+X|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,a=t%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=i>>>24&255,this.buffer[a-7]=i>>>16&255,this.buffer[a-6]=i>>>8&255,this.buffer[a-5]=i>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)e[4*o+0]=this.state[o]>>>24&255,e[4*o+1]=this.state[o]>>>16&255,e[4*o+2]=this.state[o]>>>8&255,e[4*o+3]=this.state[o]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function a(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function o(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=a;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=a(t,e),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(r),b=0;b<r;b++)m===s.length&&(o(s,d,n,c),m=0),h[b]=s[m++];return d.clean(),s.fill(0),c.fill(0),h}function d(e,t,n,r){for(var c=new i(e),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),d=new Uint8Array(r),s=0;s*a<r;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(t),c.update(o),c.finish(u);for(var h=0;h<a;h++)l[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var b=0;b<a;b++)l[b]^=u[b]}for(h=0;h<a&&s*a+h<r;h++)d[s*a+h]=l[h]}for(s=0;s<a;s++)l[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}e.hkdf=u,e.pbkdf2=d}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(fQ);var GQ=n(fQ.exports),VQ=crypto;function IQ(e){try{return null!=e&&"boolean"==typeof e.extractable&&"string"==typeof e.algorithm.name&&"string"==typeof e.type}catch(e){return!1}}var WQ=new TextEncoder,gQ=new TextDecoder;function vQ(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var SQ=function(e){var t=e;t instanceof Uint8Array&&(t=gQ.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){return new Uint8Array(atob(e).split("").map((function(e){return e.charCodeAt(0)})))}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},RQ=function(e){h(n,e);var t=V(n);function n(e){var r,i;return u(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,f(r),r.constructor),r}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(X(Error)),YQ=function(e){h(n,e);var t=V(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(RQ),JQ=function(e){h(n,e);var t=V(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return u(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(RQ),KQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(RQ),LQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return s(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(RQ),NQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(RQ),xQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(RQ),HQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(RQ),kQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(RQ),UQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(RQ),CQ=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return s(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(RQ);function wQ(){return"function"==typeof WebSocketPair}function TQ(){try{return void 0!==zz.versions.node}catch(e){return!1}}function FQ(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function jQ(e,t){return e.name===t}function zQ(e){return parseInt(e.name.slice(4),10)}function PQ(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function MQ(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var QQ=function(e){for(var t="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var c=r.pop();t+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===a(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},BQ=function(e){return IQ(e)},DQ=["CryptoKey"],EQ=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,a=S(i);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(r&&0!==r.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(r.has(s))return!1;r.add(s)}else r=new Set(l)}}catch(e){a.e(e)}finally{a.f()}return!0};function OQ(e){if("object"!==a(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var AQ=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function _Q(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new LQ("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new LQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new LQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new LQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(wQ()||TQ())&&"OKP":if("EdDSA"!==e.alg)throw new LQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case TQ()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new LQ('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new LQ('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var qQ=function(){var e=l(regeneratorRuntime.mark((function e(t){var n,r,i,a,o,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=_Q(t),o=a.algorithm,l=a.keyUsages,u=[o,null!==(r=t.ext)&&void 0!==r&&r,null!==(i=t.key_ops)&&void 0!==i?i:l],"PBKDF2"!==o.name){e.next=4;break}return e.abrupt("return",(d=VQ.subtle).importKey.apply(d,["raw",SQ(t.k)].concat(u)));case 4:return delete(s=c({},t)).alg,e.abrupt("return",(n=VQ.subtle).importKey.apply(n,["jwk",s].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function $Q(e,t,n){return eB.apply(this,arguments)}function eB(){return(eB=l(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(OQ(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",qQ(c(c({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",SQ(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new LQ('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",qQ(c(c({},t),{},{alg:n})));case 17:throw new LQ('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var tB=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!BQ(e))throw new TypeError(QQ.apply(void 0,[e].concat(W(DQ),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!BQ(e))throw new TypeError(QQ.apply(void 0,[e].concat(W(DQ))));if("secret"===e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(DQ.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function nB(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(W(Object.entries(n)),W(t.entries()))):t;var a,o=S(r.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new LQ('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){o.e(e)}finally{o.f()}return new Set(r.crit)}var rB=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function iB(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:t.namedCurve};case(wQ()||TQ())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new LQ("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function cB(e,t,n){if(IQ(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!jQ(e.algorithm,"HMAC"))throw FQ("HMAC");var n=parseInt(t.slice(2),10);if(zQ(e.algorithm.hash)!==n)throw FQ("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!jQ(e.algorithm,"RSASSA-PKCS1-v1_5"))throw FQ("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(zQ(e.algorithm.hash)!==r)throw FQ("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!jQ(e.algorithm,"RSA-PSS"))throw FQ("RSA-PSS");var i=parseInt(t.slice(2),10);if(zQ(e.algorithm.hash)!==i)throw FQ("SHA-".concat(i),"algorithm.hash");break;case TQ()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw FQ("NODE-ED25519 or NODE-ED448");break;case wQ()&&"EdDSA":if(!jQ(e.algorithm,"NODE-ED25519"))throw FQ("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!jQ(e.algorithm,"ECDSA"))throw FQ("ECDSA");var c=PQ(t);if(e.algorithm.namedCurve!==c)throw FQ(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];MQ(e,o)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(QQ.apply(void 0,[t].concat(W(DQ))));return VQ.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(QQ.apply(void 0,[t].concat(W(DQ),["Uint8Array"])))}var aB=function(){var e=l(regeneratorRuntime.mark((function e(t,n,r,i){var c,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,cB(t,n,"verify");case 2:return c=e.sent,AQ(t,c),a=iB(t,c.algorithm),e.prev=5,e.next=8,VQ.subtle.verify(a,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function oB(e,t,n){return lB.apply(this,arguments)}function lB(){return lB=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l,u,d,s,m,h,b,Z,p,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(OQ(t)){e.next=2;break}throw new NQ("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new NQ('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new NQ("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new NQ("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new NQ("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||OQ(t.header)){e.next=12;break}throw new NQ("JWS Unprotected Header incorrect type");case 12:if(a={},!t.protected){e.next=22;break}o=SQ(t.protected),e.prev=15,a=JSON.parse(gQ.decode(o)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new NQ("JWS Protected Header is invalid");case 22:if(EQ(a,t.header)){e.next=24;break}throw new NQ("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=c(c({},a),t.header),u=nB(NQ,new Map([["b64",!0]]),null==r?void 0:r.crit,a,l),d=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(d=a.b64)){e.next=31;break}throw new NQ('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(s=l.alg)&&s){e.next=34;break}throw new NQ('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&rB("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new KQ('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new NQ("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new NQ("JWS Payload must be a string or an Uint8Array instance");case 44:if(h=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(a,t);case 48:n=e.sent,h=!0;case 50:return tB(s,n,"verify"),b=vQ(WQ.encode(null!==(i=t.protected)&&void 0!==i?i:""),WQ.encode("."),"string"==typeof t.payload?WQ.encode(t.payload):t.payload),Z=SQ(t.signature),e.next=55,aB(s,n,Z,b);case 55:if(e.sent){e.next=58;break}throw new CQ;case 58:if(p=d?SQ(t.payload):"string"==typeof t.payload?WQ.encode(t.payload):t.payload,y={payload:p},void 0!==t.protected&&(y.protectedHeader=a),void 0!==t.header&&(y.unprotectedHeader=t.header),!h){e.next=64;break}return e.abrupt("return",c(c({},y),{},{key:n}));case 64:return e.abrupt("return",y);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),lB.apply(this,arguments)}function uB(e,t,n){return dB.apply(this,arguments)}function dB(){return dB=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=gQ.decode(t)),"string"==typeof t){e.next=3;break}throw new NQ("Compact JWS must be a string or Uint8Array");case 3:if(i=t.split("."),a=i[0],o=i[1],l=i[2],3===i.length){e.next=6;break}throw new NQ("Invalid Compact JWS");case 6:return e.next=8,oB({payload:o,protected:a,signature:l},n,r);case 8:if(u=e.sent,d={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",c(c({},d),{},{key:u.key}));case 12:return e.abrupt("return",d);case 13:case"end":return e.stop()}}),e)}))),dB.apply(this,arguments)}var sB=function(e){return Math.floor(e.getTime()/1e3)},mB=86400,hB=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,bB=function(e){var t=hB.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(n*mB);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},ZB=function(e){return e.toLowerCase().replace(/^application\//,"")},pB=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},yB=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||ZB(e.typ)!==ZB(i)))throw new YQ('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(gQ.decode(t))}catch(e){}if(!OQ(n))throw new xQ("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new YQ('unexpected "iss" claim value',"iss","check_failed");var o=r.subject;if(o&&n.sub!==o)throw new YQ('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!pB(n.aud,"string"==typeof u?[u]:u))throw new YQ('unexpected "aud" claim value',"aud","check_failed");switch(a(r.clockTolerance)){case"string":l=bB(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=r.currentDate,s=sB(d||new Date);if(void 0!==n.iat||r.maxTokenAge){if("number"!=typeof n.iat)throw new YQ('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>s+l)throw new YQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new YQ('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new YQ('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new YQ('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new JQ('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,h="number"==typeof r.maxTokenAge?r.maxTokenAge:bB(r.maxTokenAge);if(m-l>h)throw new JQ('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new YQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function XB(){return XB=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,uB(t,n,r);case 2:if(a=e.sent,!(null===(i=a.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==a.protectedHeader.b64){e.next=5;break}throw new xQ("JWTs MUST NOT use unencoded payload");case 5:if(o=yB(a.protectedHeader,a.payload,r),l={payload:o,protectedHeader:a.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",c(c({},l),{},{key:a.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),XB.apply(this,arguments)}function fB(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new LQ('Unsupported "alg" value for a JSON Web Key Set')}}function GB(e){return OQ(e)}var VB=function(){function e(t){if(u(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===a(e)&&Array.isArray(e.keys)&&e.keys.every(GB)}(t))throw new HQ("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return s(e,[{key:"getKey",value:(t=l(regeneratorRuntime.mark((function e(t,n){var r,i,a,o,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=c(c({},t),n.header),i=r.alg,a=r.kid,o=this._jwks.keys.filter((function(e){var t=e.kty===fB(i);if(t&&"string"==typeof a&&(t=a===e.kid),t&&"string"==typeof e.alg&&(t=i===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===i&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(i){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),l=o[0],0!==(u=o.length)){e.next=7;break}throw new kQ;case 7:if(1===u){e.next=9;break}throw new UQ;case 9:if(void 0!==(d=this._cached.get(l)||this._cached.set(l,{}).get(l))[i]){e.next=17;break}return e.next=13,$Q(c(c({},l),{},{ext:!0}),i);case 13:if(!((s=e.sent)instanceof Uint8Array||"public"!==s.type)){e.next=16;break}throw new HQ("JSON Web Key Set members must be public keys");case 16:d[i]=s;case 17:return e.abrupt("return",d[i]);case 18:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var IB={exports:{}},WB={exports:{}},gB=r(lQ);!function(e,t){var n=gB,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(WB,WB.exports);var vB=65536,SB=4294967295;var RB=WB.exports.Buffer,YB=t.crypto||t.msCrypto;YB&&YB.getRandomValues?IB.exports=function(e,t){if(e>SB)throw new RangeError("requested too many random bytes");var n=RB.allocUnsafe(e);if(e>0)if(e>vB)for(var r=0;r<e;r+=vB)YB.getRandomValues(n.slice(r,r+vB));else YB.getRandomValues(n);if("function"==typeof t)return zz.nextTick((function(){t(null,n)}));return n}:IB.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var JB=IB.exports,KB=function(){function e(){u(this,e)}return s(e,[{key:"base64URLEncode",value:function(e){return XQ.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return XQ.decode(e).toString()}},{key:"hashSha256",value:function(e){return WM.from(GQ((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return JB(e)}},{key:"parseJwk",value:function(e){return Promise.resolve((t={keys:[e]},VB.prototype.getKey.bind(new VB(t))));var t}},{key:"verifyJwt",value:function(e,t,n,r,i,c,a){return function(e,t,n){return XB.apply(this,arguments)}(e,t,{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}))}}]),e}(),LB=function(t){switch(t){case e.Storage.LocalStorage:return new aM;case e.Storage.SessionStorage:return new lM;case e.Storage.BrowserMemory:return new oM;default:return new lM}},NB=function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,d,s,m,h,b,Z,p,y,X,f,G,V,I,g,v,R,Y,J,K,L,N,x,H,k,U,C,w,T,F,j,z;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=LB(t.storage),c=new KB,a=new Zj(i,c),n.next=5,a.initialize(t);case 5:return o=new Aj(a),l=a.getDataLayer(),n.next=9,qj((function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(r=t.storage)&&void 0!==r?r:e.Storage.SessionStorage,(function(e){return l.setSessionDataParameter(tj,null!=e?e:"")}));case 9:if(u=n.sent,d=!1,s=cM.getInstance(),m=!0,Z=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,a.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},n.t0=null==s?void 0:s.init,!n.t0){n.next=18;break}return n.next=18,s.init(!0,Z);case 18:return p=function(e){(null==s?void 0:s.setHttpRequestStartCallback)&&s.setHttpRequestStartCallback(e)},y=function(e){(null==s?void 0:s.setHttpRequestSuccessCallback)&&s.setHttpRequestSuccessCallback(e)},X=function(e){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(e),b=e},f=function(e){h=e},G=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,l.getConfigData();case 3:return c=t.sent,a=0,t.t0=[],t.t1=W,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[null==c?void 0:c.serverOrigin],o=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(a<o.length)){t.next=30;break}if(u=o[a],!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:a++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",s.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,L();case 4:i=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!m){n.next=14;break}if("function"!=typeof h){n.next=13;break}return n.next=13,h(Object.assign(Object.assign({},t),{code:Ej}));case 13:"function"==typeof b&&b();case 14:return n.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-HR-ES01","main-thread-client","httpRequest","","",n.t0)));case 15:if(!i){n.next=31;break}return n.prev=16,n.next=19,s.request(e);case 19:return c=n.sent,n.abrupt("return",Promise.resolve(c));case 23:if(n.prev=23,n.t1=n.catch(16),!m){n.next=30;break}if("function"!=typeof h){n.next=29;break}return n.next=29,h(n.t1);case 29:"function"==typeof b&&b();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!m){n.next=36;break}if("function"!=typeof h){n.next=35;break}return n.next=35,h(t);case 35:"function"==typeof b&&b();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:return t.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-HR-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return t.stop()}}),t)})))},V=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,u,d,Z,p,y,X,f,G;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=!0,t.next=3,l.getConfigData();case 3:o=t.sent,u=S(e),t.prev=5,u.s();case 7:if((d=u.n()).done){t.next=50;break}return Z=d.value,p=!1,y=0,t.t0=[],t.t1=W,t.next=15,o;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[null==o?void 0:o.serverOrigin],X=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(y<X.length)){t.next=45;break}if(f=X[y],!(null===(i=Z.url)||void 0===i?void 0:i.startsWith(f))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:y++,t.next=37;break;case 45:if(p){t.next=48;break}return c=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(G=[],!c){t.next=64;break}return e.forEach((function(e){G.push(s.request(e))})),t.abrupt("return",(null==s?void 0:s.all)&&s.all(G).then((function(e){return Promise.resolve(e)})).catch((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,a.refreshAccessToken();case 4:r=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!m){t.next=14;break}if("function"!=typeof h){t.next=13;break}return t.next=13,h(Object.assign(Object.assign({},e),{code:Ej}));case 13:"function"==typeof b&&b();case 14:return t.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-HRA-ES01","main-thread-client","httpRequestAll","","",t.t0)));case 15:if(!r){t.next=17;break}return t.abrupt("return",s.all&&s.all(G).then((function(e){return Promise.resolve(e)})).catch((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!m){t.next=5;break}if("function"!=typeof h){t.next=4;break}return t.next=4,h(e);case 4:"function"==typeof b&&b();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!m){t.next=22;break}if("function"!=typeof h){t.next=21;break}return t.next=21,h(e);case 21:"function"==typeof b&&b();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:return t.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-HRA-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 65:case"end":return t.stop()}}),t,null,[[5,52,55,58]])})))},I=function(){return s},g=function(){return(null==s?void 0:s.enableHandler)&&s.enableHandler(),m=!0,!0},v=function(){return(null==s?void 0:s.disableHandler)&&s.disableHandler(),m=!1,!0},R=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,l.getConfigData();case 5:c=e.sent,u.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",a.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},Y=function(t,n,r,i){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var d,s,m,h,b,Z,p,y,X,f;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,l.getConfigData();case 2:return h=c.sent,c.next=5,u.receivePromptNoneResponse((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.setSessionDataParameter(tj,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return c.next=10,a.isAuthenticated();case 10:if(!c.sent){c.next=19;break}return o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),h.enableOIDCSessionManagement&&R(),c.t0=Promise,c.next=17,a.getBasicUserInfo();case 17:return c.t1=c.sent,c.abrupt("return",c.t0.resolve.call(c.t0,c.t1));case 19:if((null==h?void 0:h.responseMode)===e.ResponseMode.formPost&&n?(b=n,Z=null!=r?r:"",p=null!=i?i:""):(b=null!==(d=new URL(window.location.href).searchParams.get(ej))&&void 0!==d?d:"",Z=null!==(s=new URL(window.location.href).searchParams.get(tj))&&void 0!==s?s:"",p=null!==(m=new URL(window.location.href).searchParams.get(ij))&&void 0!==m?m:"",_j.removeAuthorizationCode()),!b){c.next=22;break}return c.abrupt("return",x(b,Z,p));case 22:if(y=new URL(window.location.href).searchParams.get(Mj),X=new URL(window.location.href).searchParams.get(Qj),!y){c.next=30;break}return(f=new URL(window.location.href)).searchParams.delete(Mj),f.searchParams.delete(Qj),history.pushState(null,document.title,f.toString()),c.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-SI-BE","main-thread-client","signIn",y,null!=X?X:"")));case 30:return c.abrupt("return",a.getAuthorizationURL(t).then((function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(h.storage!==e.Storage.BrowserMemory||!h.enablePKCE){n.next=8;break}return r=oj.extractPKCEKeyFromStateParam(p),n.t0=_j,n.t1=r,n.next=6,a.getPKCECode(p);case 6:n.t2=n.sent,n.t0.setPKCE.call(n.t0,n.t1,n.t2);case 8:return location.href=t,n.next=11,_j.waitTillPageRedirect();case 11:return n.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return n.stop()}}),n)})))})));case 31:case"end":return c.stop()}}),c)})))},J=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!d;case 5:if(!e.t0){e.next=11;break}return e.next=8,a.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=_j.getSignOutURL(),e.next=14,l.removeOIDCProviderMetaData();case 14:return e.next=16,l.removeTemporaryData();case 16:return e.next=18,l.removeSessionData();case 18:return o.clearRefreshTokenTimeout(),e.next=21,_j.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},K=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,u,s,m,h,b;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=!0,u=!1,t.next=4,l.getConfigData();case 4:if(s=t.sent,!(null==e?void 0:e.tokenEndpoint)){t.next=42;break}return c=!1,m=0,t.t0=[],t.t1=W,t.next=12,l.getConfigData();case 12:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=16;break}t.t3=void 0===n;case 16:if(!t.t3){t.next=20;break}t.t5=void 0,t.next=21;break;case 20:t.t5=n.resourceServerURLs;case 21:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=25;break}t.t2=void 0!==r;case 25:if(!t.t2){t.next=29;break}t.t7=r,t.next=30;break;case 29:t.t7=[];case 30:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[null==s?void 0:s.serverOrigin],h=t.t0.concat.call(t.t0,t.t9,t.t10);case 34:if(!(m<h.length)){t.next=42;break}if(b=h[m],!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(b))){t.next=39;break}return u=!0,t.abrupt("break",42);case 39:m++,t.next=34;break;case 42:if(e.shouldReplayAfterRefresh&&l.setTemporaryDataParameter(Bj,JSON.stringify(e)),!c&&!u){t.next=47;break}return t.abrupt("return",a.requestCustomGrant(e).then((function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(d=!0),!e.returnsSession){n.next=6;break}return o.refreshAccessTokenAutomatically(),n.abrupt("return",a.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 47:return t.abrupt("return",Promise.reject(new Oj("MAIN_THREAD_CLIENT-RCG-IV01","main-thread-client","requestCustomGrant","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 48:case"end":return t.stop()}}),t)})))},L=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a.refreshAccessToken();case 3:return e.next=5,z();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,K(t);case 9:return o.refreshAccessTokenAutomatically(),e.abrupt("return",a.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))},N=function(){return a.revokeAccessToken().then((function(){return u.reset(),o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},x=function(t,n,r){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.getConfigData();case 2:if((c=i.sent).storage!==e.Storage.BrowserMemory||!c.enablePKCE){i.next=7;break}return u=_j.getPKCE(oj.extractPKCEKeyFromStateParam(r)),i.next=7,a.setPKCECode(oj.extractPKCEKeyFromStateParam(r),u);case 7:return i.abrupt("return",a.requestAccessToken(t,n,r).then((function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=_j,e.next=3,a.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&R(),e.abrupt("return",a.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return i.stop()}}),i)})))},H=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,d,s,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(r=t.sent,!_j.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,u.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(wj),c=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.getElementById(Tj),t.prev=9,t.next=12,a.getAuthorizationURL({prompt:"none",state:jj});case 12:if(o=t.sent,(d=new URL(o)).searchParams.set("response_mode","query"),s=d.toString(),r.storage!==e.Storage.BrowserMemory||!r.enablePKCE){t.next=24;break}return m=d.searchParams.get(ij),t.t0=_j,t.t1=oj.extractPKCEKeyFromStateParam(null!=m?m:""),t.next=22,a.getPKCECode(null!=m?m:"");case 22:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 24:c.src=s,t.next=30;break;case 27:return t.prev=27,t.t3=t.catch(9),t.abrupt("return",Promise.reject(t.t3));case 30:return t.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(u=i.data)?void 0:u.type)==fj&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==u?void 0:u.type)==Xj&&(null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.code)&&x(u.data.code,null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return t.stop()}}),t,null,[[9,27]])})))},k=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},U=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},C=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getIDToken());case 1:case"end":return e.stop()}}),e)})))},w=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},T=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},F=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},j=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,a.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(u.reset(),R());case 8:case"end":return t.stop()}}),t)})))},z=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getTemporaryDataParameter(Bj);case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},n.abrupt("return",{disableHttpHandler:v,enableHttpHandler:g,getAccessToken:T,getBasicUserInfo:k,getDecodedIDToken:U,getHttpClient:I,getIDToken:C,getOIDCServiceEndpoints:w,httpRequest:G,httpRequestAll:V,isAuthenticated:F,refreshAccessToken:L,requestCustomGrant:K,revokeAccessToken:N,setHttpRequestErrorCallback:f,setHttpRequestFinishCallback:X,setHttpRequestStartCallback:p,setHttpRequestSuccessCallback:y,signIn:Y,signOut:J,trySignInSilently:H,updateConfig:j});case 44:case"end":return n.stop()}}),n)})))};function xB(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),c=i.indexOf("\n",10)+1,a=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var HB,kB,UB,CB,wB=(HB="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24obyxhLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24obyxhLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIHgoZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGEsaSl7ZnVuY3Rpb24gbyhlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/YShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiByP3Q6bmV3IHIoKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9dmFyIFM7IWZ1bmN0aW9uKGUpe2UuZm9ybVBvc3Q9ImZvcm1fcG9zdCIsZS5xdWVyeT0icXVlcnkifShTfHwoUz17fSkpO3ZhciBFOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0oRXx8KEU9e30pKTt2YXIgVCxBPSJyZWZyZXNoX3Rva2VuX3RpbWVyIixDPVsiUlMyNTYiLCJSUzUxMiIsIlJTMzg0IiwiUFMyNTYiXTshZnVuY3Rpb24oZSl7ZS5JbmNsdWRlPSJpbmNsdWRlIixlLlNhbWVPcmlnaW49InNhbWUtb3JpZ2luIixlLk9taXQ9Im9taXQifShUfHwoVD17fSkpO3ZhciBQPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSxuLGEsbyxzLHUpe3ZhciBjO3JldHVybiBpKHRoaXMsciksKGM9dC5jYWxsKHRoaXMsbnVsbCE9bz9vOm51bGw9PXU/dm9pZCAwOnUubWVzc2FnZSkpLm5hbWU9Yy5jb25zdHJ1Y3Rvci5uYW1lLGMuY29kZT1lLGMuZmlsZT1uLGMubWV0aG9kPWEsYy5kZXNjcmlwdGlvbj1zLGMuZXJyb3I9dSxPYmplY3Quc2V0UHJvdG90eXBlT2YodihjKSwodGhpcyBpbnN0YW5jZW9mIHI/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSksY31yZXR1cm4gcyhyKX0oZChFcnJvcikpLE89ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlLG4sYSxvLHMsdSxjLGYsbCl7dmFyIGg7cmV0dXJuIGkodGhpcyxyKSwoaD10LmNhbGwodGhpcyxlLG4sYSxvLHMpKS5uYW1lPWguY29uc3RydWN0b3IubmFtZSxoLmNvZGU9ZSxoLmZpbGU9bixoLm1ldGhvZD1hLGguZGVzY3JpcHRpb249cyxoLm5ldHdvcmtFcnJvckNvZGU9dSxoLm5ldHdvcmtFcnJvck1lc3NhZ2U9YyxoLnN0YXR1cz1mLGgubmV0d29ya0Vycm9yRGF0YT1sLGh9cmV0dXJuIHMocil9KFApLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpfXJldHVybiBzKGUsbnVsbCxbe2tleToiZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHt9LGUpO251bGw9PXR8fGRlbGV0ZSB0LmlzcyxudWxsPT10fHxkZWxldGUgdC5hdWQsbnVsbD09dHx8ZGVsZXRlIHQuZXhwLG51bGw9PXR8fGRlbGV0ZSB0LmlhdCxudWxsPT10fHxkZWxldGUgdC5hY3IsbnVsbD09dHx8ZGVsZXRlIHQuYW1yLG51bGw9PXR8fGRlbGV0ZSB0LmF6cCxudWxsPT10fHxkZWxldGUgdC5hdXRoX3RpbWUsbnVsbD09dHx8ZGVsZXRlIHQubm9uY2UsbnVsbD09dHx8ZGVsZXRlIHQuY19oYXNoLG51bGw9PXR8fGRlbGV0ZSB0LmF0X2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQubmJmLG51bGw9PXR8fGRlbGV0ZSB0LmlzayxudWxsPT10fHxkZWxldGUgdC5zaWQ7dmFyIHI9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXkoZSwyKSxuPXRbMF0sYT10WzFdLGk9bi5zcGxpdCgiXyIpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PXQ/ZTpbZVswXS50b1VwcGVyQ2FzZSgpXS5jb25jYXQoYihlLnNsaWNlKDEpKSkuam9pbigiIil9KSkuam9pbigiIik7cltpXT1hfSkpLHJ9fSx7a2V5OiJnZXRUb2tlblJlcXVlc3RIZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifX19LHtrZXk6ImdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1wYXJzZUludChlLnNwbGl0KCIjIilbMV0pO3JldHVybiB0PyIiLmNvbmNhdCh0LCJfcmVxdWVzdF8iKS5jb25jYXQocik6InJlcXVlc3RfIi5jb25jYXQocil9fSx7a2V5OiJleHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4icGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KGUuc3BsaXQoInJlcXVlc3RfIilbMV0pKX19XSksZX0oKTtELmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIEksVSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7aSh0aGlzLGUpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiB4KG4sdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiB4KG4sdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fY3J5cHRvSGVscGVyPXJ9cmV0dXJuIHMoZSxbe2tleToicmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2NvbmZpZygpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsdC53ZWxsS25vd25FbmRwb2ludD90LnNlcnZlck9yaWdpbit0LndlbGxLbm93bkVuZHBvaW50OnQuc2VydmVyT3JpZ2luKyIvb2F1dGgyL3Rva2VuLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIik7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9e30sdC5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIiwobi5vdmVycmlkZVdlbGxFbmRwb2ludENvbmZpZyYmbi5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG4uZW5kcG9pbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTtyW3RdPShudWxsPT1uP3ZvaWQgMDpuLmVuZHBvaW50cyk/bi5lbmRwb2ludHNbZV06IiJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHIpKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRmFsbGJhY2tFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOnJldHVybihyPWUuc2VudCkuZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhyLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtuXT0obnVsbD09cj92b2lkIDA6ci5lbmRwb2ludHMpP3IuZW5kcG9pbnRzW2VdOiIifSkpLG49e2F1dGhvcml6YXRpb25fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvYXV0aG9yaXplIixlbmRfc2Vzc2lvbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29pZGMvbG9nb3V0Iixqd2tzX3VyaTpyLnNlcnZlck9yaWdpbisiL29hdXRoMi9qd2tzIixjaGVja19zZXNzaW9uX2lmcmFtZTpyLnNlcnZlck9yaWdpbisiL29pZGMvY2hlY2tzZXNzaW9uIixyZXZvY2F0aW9uX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL3Jldm9rZSIsdG9rZW5fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvdG9rZW4ifSxlLmFicnVwdCgicmV0dXJuIixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksbikpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToidmFsaWRhdGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50Lmp3a3NfdXJpLHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmMCE9PXIudHJpbSgpLmxlbmd0aD9mZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2lufSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHgoYSx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxpLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PXQuc3RhdHVzKXtyLm5leHQ9MjticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfSEVMUEVSLVZJVC1OUjAyIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyByZXR1cm5lZCAiK3Quc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSk7Y2FzZSAyOnJldHVybiByLm5leHQ9NCx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgNDpyZXR1cm4gbj1yLnNlbnQuaXNzdWVyLHIubmV4dD03LHRoaXMucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA3OmlmKGE9ci5zZW50LnNwbGl0KCIvLndlbGwta25vd24iKVswXSxuJiZuPT09YSl7ci5uZXh0PTEwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoITEpKTtjYXNlIDEwOnJldHVybiByLm5leHQ9MTIsdC5qc29uKCk7Y2FzZSAxMjpyZXR1cm4gaT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsdGhpcy5fY3J5cHRvSGVscGVyLmdldEpXS0ZvclRoZUlkVG9rZW4oZS5zcGxpdCgiLiIpWzBdLGkua2V5cykudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHgobyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD10aGlzLl9jcnlwdG9IZWxwZXIsci50MT1lLHIudDI9dCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIHIudDM9ci5zZW50LmNsaWVudElELHIudDQ9bixyLnQ1PXRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKGUpLnN1YixyLm5leHQ9MTAsdGhpcy5fY29uZmlnKCk7Y2FzZSAxMDpyZXR1cm4gci50Nj1yLnNlbnQuY2xvY2tUb2xlcmFuY2Usci5hYnJ1cHQoInJldHVybiIsci50MC5pc1ZhbGlkSWRUb2tlbi5jYWxsKHIudDAsci50MSxyLnQyLHIudDMsci50NCxyLnQ1LHIudDYpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfSEVMUEVSLVZJVC1FUzAzIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfSEVMUEVSLVZJVC1FUzA0IiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBPKCJBVVRIX0hFTFBFUi1WSVQtTlIwNSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmJvZHkpKX0pKTpQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItVklULU5GMDEiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJ2YWxpZGF0ZUlkVG9rZW4iLCJKV0tTIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBKV0tTIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIEpXS1MgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKSxvPUQuZ2V0VGVuYW50RG9tYWluRnJvbUlkVG9rZW5QYXlsb2FkKGkpLHM9bnVsbCE9PSh0PW51bGw9PWk/dm9pZCAwOmkudXNlcm5hbWUpJiZ2b2lkIDAhPT10P3Q6IiIsdT1udWxsIT09KHI9aS5naXZlbl9uYW1lKSYmdm9pZCAwIT09cj9yOiIiLGM9bnVsbCE9PShuPWkuZmFtaWx5X25hbWUpJiZ2b2lkIDAhPT1uP246IiIsZj11JiZjPyIiLmNvbmNhdCh1LCIgIikuY29uY2F0KGMpOnV8fGN8fCIiLGw9bnVsbCE9PShhPWkucHJlZmVycmVkX3VzZXJuYW1lKSYmdm9pZCAwIT09YT9hOmY7cmV0dXJuIE9iamVjdC5hc3NpZ24oe2Rpc3BsYXlOYW1lOmwsdGVuYW50RG9tYWluOm8sdXNlcm5hbWU6c30sRC5maWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQoaSkpfX0se2tleToicmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBhPSJvcGVuaWQiLG4ubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gaT1uLnNlbnQsbi5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKHQpO2Nhc2UgNjpyZXR1cm4gbz1uLnNlbnQsbi5hYnJ1cHQoInJldHVybiIsKGkuc2NvcGUmJmkuc2NvcGUubGVuZ3RoPjAmJihpLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8aS5zY29wZS5wdXNoKCJvcGVuaWQiKSxhPWkuc2NvcGUuam9pbigiICIpKSxlLnJlcGxhY2UoInt7dG9rZW59fSIsby5hY2Nlc3NfdG9rZW4pLnJlcGxhY2UoInt7dXNlcm5hbWV9fSIsdGhpcy5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8oby5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsYSkucmVwbGFjZSgie3tjbGllbnRJRH19IixpLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KHI9aS5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT1yP3I6IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoZSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJoYW5kbGVUb2tlblJlc3BvbnNlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsaT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoMjAwPT09ZS5zdGF0dXMpe3IubmV4dD0yO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItSFRSLU5SMDEiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRva2VuIHJlcXVlc3QuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIHRva2VuIHJldHVybmVkICIrZS5zdGF0dXMrIiAsIHdoaWNoIGlzIGludmFsaWQuIikpKTtjYXNlIDI6cmV0dXJuIHIubmV4dD00LGUuanNvbigpO2Nhc2UgNDpyZXR1cm4gbj1yLnNlbnQsci5uZXh0PTcsdGhpcy5fY29uZmlnKCk7Y2FzZSA3OmlmKCFyLnNlbnQudmFsaWRhdGVJRFRva2VuKXtyLm5leHQ9OTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHgoaSx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZighZSl7ci5uZXh0PTU7YnJlYWt9cmV0dXJuIHIubmV4dD0zLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShuLHQpO2Nhc2UgMzpyZXR1cm4gYT17YWNjZXNzVG9rZW46bi5hY2Nlc3NfdG9rZW4sZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShhKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItSFRSLUlWMDIiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIiwiVGhlIGlkIHRva2VuIHJldHVybmVkIGlzIG5vdCB2YWxpZC4iLCJUaGUgaWQgdG9rZW4gcmV0dXJuZWQgaGFzIGZhaWxlZCB0aGUgdmFsaWRhdGlvbiBjaGVjay4iKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfSEVMUEVSLUhBVC1FUzAzIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwiaGFuZGxlVG9rZW5SZXNwb25zZSIsdm9pZCAwLHZvaWQgMCxlKSl9KSkpO2Nhc2UgOTpyZXR1cm4gYT17YWNjZXNzVG9rZW46bi5hY2Nlc3NfdG9rZW4sZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDEyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksaT1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYobi5raWQ9PT1pLmtpZClyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMucGFyc2VKd2soaSl9fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQ1JZUFRPX1VUSUwtR1RGVElULUlWMDEiLCJjcnlwdG8tdXRpbHMiLCJnZXRKV0tGb3JUaGVJZFRva2VuIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSkpfX0se2tleToiaXNWYWxpZElkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMudmVyaWZ5Snd0KGUsdCxDLHIsbixhLGkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQ1JZUFRPX1VUSUwtSVZJVC1JVjAyIiwiY3J5cHRvLXV0aWxzIiwiaXNWYWxpZElkVG9rZW4iLCJWYWxpZGF0aW5nIElEIHRva2VuIGZhaWxlZCIsZSkpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBQKCJDUllQVE9fVVRJTC1ESVQtSVYwMSIsImNyeXB0by11dGlscyIsImRlY29kZUlEVG9rZW4iLCJEZWNvZGluZyBJRCB0b2tlbiBmYWlsZWQuIixlKX19fV0pLGV9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO2kodGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz1yLHRoaXMuX2NyeXB0b0hlbHBlcj1uZXcgTChyKSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcj1uZXcgSCh0LHRoaXMuX2NyeXB0b0hlbHBlciksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1yZXR1cm4gcyhlLFt7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG4sYTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYyxmLGwsaCxwLGQsdixnLG0sYjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGkpe2Zvcig7Oylzd2l0Y2goaS5wcmV2PWkubmV4dCl7Y2FzZSAwOnJldHVybiBpLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIoImF1dGhvcml6YXRpb25fZW5kcG9pbnQiKTtjYXNlIDI6cmV0dXJuIG89aS5zZW50LGkubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihzPWkuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXtpLm5leHQ9ODticmVha310aHJvdyBuZXcgUCgiQVVUSF9DT1JFLUdBVS1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldEF1dGhvcml6YXRpb25VUkwiLCJObyBhdXRob3JpemF0aW9uIGVuZHBvaW50IGZvdW5kLiIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSBmcm9tIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4odT1uZXcgVVJMKG8pKS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV90eXBlIiwiY29kZSIpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY2xpZW50X2lkIixzLmNsaWVudElEKSxjPSJvcGVuaWQiLHMuc2NvcGUmJnMuc2NvcGUubGVuZ3RoPjAmJihzLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8cy5zY29wZS5wdXNoKCJvcGVuaWQiKSxjPXMuc2NvcGUuam9pbigiICIpKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInNjb3BlIixjKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlZGlyZWN0X3VyaSIscy5zaWduSW5SZWRpcmVjdFVSTCkscy5yZXNwb25zZU1vZGUmJnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVzcG9uc2VfbW9kZSIscy5yZXNwb25zZU1vZGUpLGkubmV4dD0xNCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZW5lcmF0ZVBLQ0VLZXkodCk7Y2FzZSAxNDppZihmPWkuc2VudCwhcy5lbmFibGVQS0NFKXtpLm5leHQ9MjE7YnJlYWt9cmV0dXJuIGw9bnVsbD09PShyPXRoaXMuX2NyeXB0b0hlbHBlcil8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0Q29kZVZlcmlmaWVyKCksaD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlQ2hhbGxlbmdlKGwpLGkubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihmLGwsdCk7Y2FzZSAxOTp1LnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlIixoKTtjYXNlIDIxOmlmKHMucHJvbXB0JiZ1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInByb21wdCIscy5wcm9tcHQpLHA9ZSlmb3IoZD0wLHY9T2JqZWN0LmVudHJpZXMocCk7ZDx2Lmxlbmd0aDtkKyspZz15KHZbZF0sMiksbT1nWzBdLGI9Z1sxXSwiIiE9bSYmIiIhPWImJiJzdGF0ZSIhPT1tJiZ1LnNlYXJjaFBhcmFtcy5hcHBlbmQobSxiLnRvU3RyaW5nKCkpO3JldHVybiBpLmFicnVwdCgicmV0dXJuIiwodS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJzdGF0ZSIsRC5nZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24oZixwP251bGw9PT0oYT1wLnN0YXRlKXx8dm9pZCAwPT09YT92b2lkIDA6YS50b1N0cmluZygpOiIiKSksdS50b1N0cmluZygpKSk7Y2FzZSAyNTpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsdSxjPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGk9YS5zZW50LnRva2VuX2VuZHBvaW50LGEubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihvPWEuc2VudCxpJiYwIT09aS50cmltKCkubGVuZ3RoKXthLm5leHQ9ODticmVha31yZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQxLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA4OmlmKGEudDA9dCwhYS50MCl7YS5uZXh0PTEyO2JyZWFrfXJldHVybiBhLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0LG4pO2Nhc2UgMTI6aWYoKHM9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChvLmNsaWVudElEKSksby5jbGllbnRTZWNyZXQmJm8uY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmcy5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KG8uY2xpZW50U2VjcmV0KSksdT1lLHMucHVzaCgiY29kZT0iLmNvbmNhdCh1KSkscy5wdXNoKCJncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZSIpLHMucHVzaCgicmVkaXJlY3RfdXJpPSIuY29uY2F0KG8uc2lnbkluUmVkaXJlY3RVUkwpKSxhLnQxPW8uZW5hYmxlUEtDRSwhYS50MSl7YS5uZXh0PTI5O2JyZWFrfXJldHVybiBhLnQyPXMsYS50Mz0iY29kZV92ZXJpZmllcj0iLGEubmV4dD0yNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihELmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0ociksbik7Y2FzZSAyNDpyZXR1cm4gYS50ND1hLnNlbnQsYS50NT1hLnQzLmNvbmNhdC5jYWxsKGEudDMsYS50NCksYS50Mi5wdXNoLmNhbGwoYS50MixhLnQ1KSxhLm5leHQ9MjksdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHIpLG4pO2Nhc2UgMjk6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGZldGNoKGkse2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6by5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEQuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0NPUkUtUkFUMS1FUzAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IE8oIkFVVEhfQ09SRS1SQVQxLU5SMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIiwiVGhlIHJlcXVlc3QgdG8gZ2V0IHRoZSBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmJvZHkpKX0pKSk7Y2FzZSAzMDpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsaSxvPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnRva2VuX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gbj10LnNlbnQsdC5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgODppZigoYT10LnNlbnQpLnJlZnJlc2hfdG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQyLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpKSk7Y2FzZSAxMTppZihyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0NPUkUtUkFUMi1ORjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCB3YXMgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZWZyZXNoIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSAxMzpyZXR1cm4gaT1bXSx0LmFicnVwdCgicmV0dXJuIiwoaS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLGkucHVzaCgicmVmcmVzaF90b2tlbj0iLmNvbmNhdChhLnJlZnJlc2hfdG9rZW4pKSxpLnB1c2goImdyYW50X3R5cGU9cmVmcmVzaF90b2tlbiIpLG4uY2xpZW50U2VjcmV0JiZuLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJmkucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChuLmNsaWVudFNlY3JldCkpLGZldGNoKHIse2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEQuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UodCxlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0NPUkUtUkFUMi1FUzAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IE8oIkFVVEhfQ09SRS1SQVQyLU5SMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiUmVmcmVzaCBhY2Nlc3MgdG9rZW4gcmVxdWVzdCBmYWlsZWQuIiwiVGhlIHJlcXVlc3QgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmJvZHkpKX0pKSkpO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsaT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5yZXZvY2F0aW9uX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihuPXQuc2VudCxyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQzLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmV2b2tlQWNjZXNzVG9rZW4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgODpyZXR1cm4oYT1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSx0LnQwPWEsdC50MT0idG9rZW49Iix0Lm5leHQ9MTQsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTQ6cmV0dXJuIHQudDI9dC5zZW50LmFjY2Vzc190b2tlbix0LnQzPXQudDEuY29uY2F0LmNhbGwodC50MSx0LnQyKSx0LnQwLnB1c2guY2FsbCh0LnQwLHQudDMpLGEucHVzaCgidG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbiIpLHQuYWJydXB0KCJyZXR1cm4iLGZldGNoKHIse2JvZHk6YS5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEQuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIDIwMCE9PXQuc3RhdHVzP1Byb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0NPUkUtUkFUMy1OUjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIHJldHVybmVkICIrdC5zdGF0dXMrIiAsIHdoaWNoIGlzIGludmFsaWQuIikpOihpLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUodCkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBPKCJBVVRIX0NPUkUtUkFUMy1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiVGhlIHJlcXVlc3QgdG8gcmV2b2tlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5ib2R5KSl9KSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLGksbyxzLHUsYz10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYoYT1yLnNlbnQsKGk9ZS50b2tlbkVuZHBvaW50JiYwIT09ZS50b2tlbkVuZHBvaW50LnRyaW0oKS5sZW5ndGg/ZS50b2tlbkVuZHBvaW50Om4udG9rZW5fZW5kcG9pbnQpJiYwIT09aS50cmltKCkubGVuZ3RoKXtyLm5leHQ9ODticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQ0ctTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDg6cmV0dXJuIHIubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9eShlLDIpLG49clswXSxhPXJbMV07cmV0dXJuIHgoYyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGEsdCk7Y2FzZSAyOnJldHVybiByPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobiwiPSIpLmNvbmNhdChyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYobz1yLnNlbnQscz1PYmplY3QuYXNzaWduKHt9LEQuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxyLnQwPWUuYXR0YWNoVG9rZW4sIXIudDApe3IubmV4dD0yMzticmVha31yZXR1cm4gci50MT1PYmplY3Qsci50Mj1PYmplY3QuYXNzaWduKHt9LHMpLHIudDM9IkJlYXJlciAiLHIubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpyLnQ0PXIuc2VudC5hY2Nlc3NfdG9rZW4sci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Nj17QXV0aG9yaXphdGlvbjpyLnQ1fSxzPXIudDEuYXNzaWduLmNhbGwoci50MSxyLnQyLHIudDYpO2Nhc2UgMjM6cmV0dXJuIHU9e2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHMpLG1ldGhvZDoiUE9TVCJ9LHIuYWJydXB0KCJyZXR1cm4iLGZldGNoKGksdSkudGhlbigoZnVuY3Rpb24ocil7cmV0dXJuIDIwMCE9PXIuc3RhdHVzP1Byb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0NPUkUtUkNHLU5SMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IHJldHVybmVkICIrci5zdGF0dXMrIiAsIHdoaWNoIGlzIGludmFsaWQuIikpOmUucmV0dXJuc1Nlc3Npb24/Yy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShyLHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQ0ctRVMwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZvaWQgMCx2b2lkIDAsZSkpfSkpOlByb21pc2UucmVzb2x2ZShyKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgTygiQVVUSF9DT1JFLVJDRy1OUjA0IiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIlRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdCBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGN1c3RvbSBncmFudCBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5ib2R5KSl9KSkpO2Nhc2UgMjU6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCxuPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT1yP3ZvaWQgMDpyLmlkX3Rva2VuKSxhPXthbGxvd2VkU2NvcGVzOnIuc2NvcGUsc2Vzc2lvblN0YXRlOnIuc2Vzc2lvbl9zdGF0ZX0sdC5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PW5bZV0mJiIiIT09bltlXSYmbnVsbCE9PW5bZV18fGRlbGV0ZSBuW2VdfSkpLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLG4pKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuaWRfdG9rZW4sdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4ocikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9NTticmVha31yZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6dC50MD10LnNlbnQ7Y2FzZSA1OmlmKCF0LnQwKXt0Lm5leHQ9NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCEwKSk7Y2FzZSA3OnJldHVybiB0Lm5leHQ9OSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlV2VsbEtub3duRW5kcG9pbnQoKTtjYXNlIDk6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLGZldGNoKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB4KG4sdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoMjAwPT09ZS5zdGF0dXMpe3QubmV4dD00O2JyZWFrfXQudDA9UHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1HT1BNLU5SMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IHRvIGdldCB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSksdC5uZXh0PTE3O2JyZWFrO2Nhc2UgNDpyZXR1cm4gdC50MT10aGlzLl9kYXRhTGF5ZXIsdC50Mj10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcix0Lm5leHQ9OCxlLmpzb24oKTtjYXNlIDg6cmV0dXJuIHQudDM9dC5zZW50LHQubmV4dD0xMSx0LnQyLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQyLHQudDMpO2Nhc2UgMTE6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0xNCx0LnQxLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50MSx0LnQ0KTtjYXNlIDE0OnJldHVybiB0Lm5leHQ9MTYsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDE2OnQudDA9UHJvbWlzZS5yZXNvbHZlKCEwKTtjYXNlIDE3OnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnQwKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS50MD10aGlzLl9kYXRhTGF5ZXIsZS5uZXh0PTMsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUZhbGxiYWNrRW5kcG9pbnRzKCk7Y2FzZSAzOnJldHVybiBlLnQxPWUuc2VudCxlLm5leHQ9NixlLnQwLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwoZS50MCxlLnQxKTtjYXNlIDY6cmV0dXJuIGUubmV4dD04LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoITApKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUudDA9dC5hdXRob3JpemF0aW9uX2VuZHBvaW50LGUudDE9dC5jaGVja19zZXNzaW9uX2lmcmFtZSxlLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQsZS50Mz10LmludHJvc3BlY3Rpb25fZW5kcG9pbnQsZS50ND10Lmlzc3VlcixlLnQ1PXQuandrc191cmksZS50Nj10LnJlZ2lzdHJhdGlvbl9lbmRwb2ludCxlLnQ3PXQucmV2b2NhdGlvbl9lbmRwb2ludCxlLnQ4PXQudG9rZW5fZW5kcG9pbnQsZS50OT10LnVzZXJpbmZvX2VuZHBvaW50LGUubmV4dD0xNSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlV2VsbEtub3duRW5kcG9pbnQoKTtjYXNlIDE1OnJldHVybiBlLnQxMD1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25FbmRwb2ludDplLnQwLGNoZWNrU2Vzc2lvbklmcmFtZTplLnQxLGVuZFNlc3Npb25FbmRwb2ludDplLnQyLGludHJvc3BlY3Rpb25FbmRwb2ludDplLnQzLGlzc3VlcjplLnQ0LGp3a3NVcmk6ZS50NSxyZWdpc3RyYXRpb25FbmRwb2ludDplLnQ2LHJldm9jYXRpb25FbmRwb2ludDplLnQ3LHRva2VuRW5kcG9pbnQ6ZS50OCx1c2VyaW5mb0VuZHBvaW50OmUudDksd2VsbEtub3duRW5kcG9pbnQ6ZS50MTB9KTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoYS50MT10PWEuc2VudCxhLnQwPW51bGw9PT1hLnQxLGEudDApe2EubmV4dD02O2JyZWFrfWEudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIWEudDApe2EubmV4dD0xMDticmVha31hLnQyPXZvaWQgMCxhLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDphLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gaT1hLnQyLGEubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKG89YS5zZW50LGkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe2EubmV4dD0xNzticmVha310aHJvdyBuZXcgUCgiQVVUSF9DT1JFLUdTT1UtTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRTaWduT3V0VVJMIiwiU2lnbi1vdXQgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHNpZ24tb3V0IGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHNpZ24tb3V0IGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgMTc6cmV0dXJuIGEubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxOTppZihhLnQ0PXI9YS5zZW50LGEudDM9bnVsbD09PWEudDQsYS50Myl7YS5uZXh0PTIzO2JyZWFrfWEudDM9dm9pZCAwPT09cjtjYXNlIDIzOmlmKCFhLnQzKXthLm5leHQ9Mjc7YnJlYWt9YS50NT12b2lkIDAsYS5uZXh0PTI4O2JyZWFrO2Nhc2UgMjc6YS50NT1yLmlkX3Rva2VuO2Nhc2UgMjg6aWYoKHM9YS50NSkmJjAhPT1zLnRyaW0oKS5sZW5ndGgpe2EubmV4dD0zMTticmVha310aHJvdyBuZXcgUCgiQVVUSF9DT1JFLUdTT1UtTkYwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRTaWduT3V0VVJMIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKHU9bnVsbCE9PShuPW51bGw9PW8/dm9pZCAwOm8uc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09bj9uOm51bGw9PW8/dm9pZCAwOm8uc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09dS50cmltKCkubGVuZ3RoKXthLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IFAoIkFVVEhfQ09SRS1HU09VLU5GMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0U2lnbk91dFVSTCIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChpLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQocywiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQodSwiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoRC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUscik7Y2FzZSAyOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixuLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6aWYoIWUub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcpe3QubmV4dD0xMzticmVha31pZih0LnQwPW51bGw9PWU/dm9pZCAwOmUuZW5kcG9pbnRzLCF0LnQwKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQudDE9dGhpcy5fZGF0YUxheWVyLHQubmV4dD04LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHMoe30pO2Nhc2UgODpyZXR1cm4gdC50Mj10LnNlbnQsdC5uZXh0PTExLHQudDEuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQxLHQudDIpO2Nhc2UgMTE6dC5uZXh0PTE3O2JyZWFrO2Nhc2UgMTM6aWYodC50Mz1udWxsPT1lP3ZvaWQgMDplLmVuZHBvaW50cywhdC50Myl7dC5uZXh0PTE3O2JyZWFrfXJldHVybiB0Lm5leHQ9MTcsdGhpcy5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMCk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7aSh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gcyhlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLGk9YSYmSlNPTi5wYXJzZShhKSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSx0KSxzPUpTT04uc3RyaW5naWZ5KG8pLG4ubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihhLnQxPW49YS5zZW50LGEudDA9bnVsbCE9PWEudDEsIWEudDApe2EubmV4dD02O2JyZWFrfWEudDA9dm9pZCAwIT09bjtjYXNlIDY6aWYoIWEudDApe2EubmV4dD0xMDticmVha31hLnQyPW4sYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGk9YS50MixvPWkmJkpTT04ucGFyc2UoaSkscz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbyksdSh7fSx0LHIpKSxjPUpTT04uc3RyaW5naWZ5KHMpLGEubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsYyk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBhPW4udDIsaT1hJiZKU09OLnBhcnNlKGEpLGRlbGV0ZShvPU9iamVjdC5hc3NpZ24oe30saSkpW3RdLHM9SlNPTi5zdHJpbmdpZnkobyksbi5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSxzKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxyKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxyKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fV0pLGV9KCkscT17Y2xvY2tUb2xlcmFuY2U6MzAwLGVuYWJsZVBLQ0U6ITAscmVzcG9uc2VNb2RlOlMucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe2kodGhpcyxlKSxlLl9pbnN0YW5jZUlEP2UuX2luc3RhbmNlSUQrPTE6ZS5faW5zdGFuY2VJRD0wLHRoaXMuX2RhdGFMYXllcj1uZXcgaigiaW5zdGFuY2VfIi5jb25jYXQoZS5faW5zdGFuY2VJRCksdCksdGhpcy5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBNKHRoaXMuX2RhdGFMYXllcixyKX1yZXR1cm4gcyhlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scSksZSkse3Njb3BlOltdLmNvbmNhdChiKG51bGwhPT0odD1xLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxiKG51bGwhPT0obj1udWxsPT09KHI9ZS5zY29wZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1xP3ZvaWQgMDpxLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1uP246W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfX0se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KG49T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBuLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChuLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFhLnNlbnQpe2EubmV4dD02O2JyZWFrfWEudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKSxhLm5leHQ9NzticmVhaztjYXNlIDY6YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LHIsbil9KSk7Y2FzZSA3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oZSl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKGUpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSx0KX19LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0UEtDRUNvZGUoZSx0KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlLHQscik7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0sW3trZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiYhbn19LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmbn19XSksZX0oKSxLPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KEl8fChJPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShVfHwoVT17fSkpO3ZhciBCPSJjdXN0b21fZ3JhbnRfY29uZmlnIixGPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSxuLGEsbyxzLHUpe3ZhciBjO3JldHVybiBpKHRoaXMsciksKGM9dC5jYWxsKHRoaXMsbnVsbCE9bz9vOm51bGw9PXU/dm9pZCAwOnUubWVzc2FnZSkpLm5hbWU9Yy5jb25zdHJ1Y3Rvci5uYW1lLGMuY29kZT1lLGMuZmlsZT1uLGMubWV0aG9kPWEsYy5lcnJvcj11LGMuZGVzY3JpcHRpb249cyxPYmplY3Quc2V0UHJvdG90eXBlT2YodihjKSwodGhpcyBpbnN0YW5jZW9mIHI/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSksY31yZXR1cm4gcyhyKX0oZChFcnJvcikpLEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gcyhlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiByPXBhcnNlSW50KHQuZXhwaXJlc19pbiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBfKGEsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihyPD0xMD9yOnItMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBLEpTT04uc3RyaW5naWZ5KG4pKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJnZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57YmxvYjoobnVsbD09ZT92b2lkIDA6ZS5kYXRhKWluc3RhbmNlb2YgQmxvYj9udWxsPT1lP3ZvaWQgMDplLmRhdGE6bnVsbCxkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMH19fSx7a2V5OiJnZW5lcmF0ZUZhaWx1cmVNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS50b0pTT04pJiZkZWxldGUgZS50b0pTT04se2Vycm9yOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMX19fV0pLGV9KCksej0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIFkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX1mdW5jdGlvbiBWKGUpe2lmKGUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuLmdldD9uOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfSkpLHR9dmFyIEc9e2V4cG9ydHM6e319LFg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sJD1YLFo9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBRKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIGVlKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIHRlKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1aLmNhbGwoZSl9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PXIoZSl9ZnVuY3Rpb24gbmUoZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1aLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PVouY2FsbChlKX1mdW5jdGlvbiBpZShlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPT1yKGUpJiYoZT1bZV0pLFEoZSkpZm9yKHZhciBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXQuY2FsbChudWxsLGVbbl0sbixlKTtlbHNlIGZvcih2YXIgaSBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZ0LmNhbGwobnVsbCxlW2ldLGksZSl9dmFyIG9lPXtpc0FycmF5OlEsaXNBcnJheUJ1ZmZlcjp0ZSxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFlZShlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFlZShlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRm9ybURhdGFdIj09PVouY2FsbChlKX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmdGUoZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6cmUsaXNQbGFpbk9iamVjdDpuZSxpc1VuZGVmaW5lZDplZSxpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09Wi5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09Wi5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09Wi5jYWxsKGUpfSxpc0Z1bmN0aW9uOmFlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiByZShlKSYmYWUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1aLmNhbGwoZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6aWUsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXtuZSh0W25dKSYmbmUocik/dFtuXT1lKHRbbl0scik6bmUocik/dFtuXT1lKHt9LHIpOlEocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWllKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gaWUodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0PyQodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sc2U9b2U7ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIGNlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKHNlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107c2UuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihzZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sc2UuZm9yRWFjaChlLChmdW5jdGlvbihlKXtzZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6c2UuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2godWUodCkrIj0iK3VlKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sZmU9b2U7ZnVuY3Rpb24gbGUoKXt0aGlzLmhhbmRsZXJzPVtdfWxlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LGxlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sbGUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7ZmUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGhlPWxlLHBlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gZGUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiB2ZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGdlPWRlLG1lPXZlO2Z1bmN0aW9uIHllKGUpe2lmKGdlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChnZT09PWRlfHwhZ2UpJiZzZXRUaW1lb3V0KXJldHVybiBnZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGdlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBnZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gZ2UuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgcGUuc2V0VGltZW91dCYmKGdlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBwZS5jbGVhclRpbWVvdXQmJihtZT1jbGVhclRpbWVvdXQpO3ZhciBiZSx3ZT1bXSxrZT0hMSxSZT0tMTtmdW5jdGlvbiBfZSgpe2tlJiZiZSYmKGtlPSExLGJlLmxlbmd0aD93ZT1iZS5jb25jYXQod2UpOlJlPS0xLHdlLmxlbmd0aCYmeGUoKSl9ZnVuY3Rpb24geGUoKXtpZigha2Upe3ZhciBlPXllKF9lKTtrZT0hMDtmb3IodmFyIHQ9d2UubGVuZ3RoO3Q7KXtmb3IoYmU9d2Usd2U9W107KytSZTx0OyliZSYmYmVbUmVdLnJ1bigpO1JlPS0xLHQ9d2UubGVuZ3RofWJlPW51bGwsa2U9ITEsZnVuY3Rpb24oZSl7aWYobWU9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigobWU9PT12ZXx8IW1lKSYmY2xlYXJUaW1lb3V0KXJldHVybiBtZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXttZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG1lLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbWUuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBTZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fVNlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiBFZSgpe312YXIgVGU9RWUsQWU9RWUsQ2U9RWUsUGU9RWUsT2U9RWUsRGU9RWUsSWU9RWU7dmFyIFVlPXBlLnBlcmZvcm1hbmNlfHx7fSxIZT1VZS5ub3d8fFVlLm1vek5vd3x8VWUubXNOb3d8fFVlLm9Ob3d8fFVlLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIExlPW5ldyBEYXRlO3ZhciBNZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTt3ZS5wdXNoKG5ldyBTZShlLHQpKSwxIT09d2UubGVuZ3RofHxrZXx8eWUoeGUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOlRlLGFkZExpc3RlbmVyOkFlLG9uY2U6Q2Usb2ZmOlBlLHJlbW92ZUxpc3RlbmVyOk9lLHJlbW92ZUFsbExpc3RlbmVyczpEZSxlbWl0OkllLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKkhlLmNhbGwoVWUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLUxlKS8xZTN9fSxqZT1NZSxxZT1vZSxOZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sS2U9TmUsQmU9ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaT1uZXcgRXJyb3IoZSk7cmV0dXJuIEtlKGksdCxyLG4sYSl9LEZlPUJlLEplPW9lLFdlPUplLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/e3dyaXRlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgbz1bXTtvLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxKZS5pc051bWJlcihyKSYmby5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUocikudG9HTVRTdHJpbmcoKSksSmUuaXNTdHJpbmcobikmJm8ucHVzaCgicGF0aD0iK24pLEplLmlzU3RyaW5nKGEpJiZvLnB1c2goImRvbWFpbj0iK2EpLCEwPT09aSYmby5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9by5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX0semU9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChlKX0sWWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrdC5yZXBsYWNlKC9eXC8rLywiIik6ZX0sVmU9b2UsR2U9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSxYZT1vZSwkZT1YZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGUsdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIG4oZSl7dmFyIG49ZTtyZXR1cm4gdCYmKHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXIuaHJlZiksci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnIuaHJlZixwcm90b2NvbDpyLnByb3RvY29sP3IucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnIuaG9zdCxzZWFyY2g6ci5zZWFyY2g/ci5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpyLmhhc2g/ci5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ci5ob3N0bmFtZSxwb3J0OnIucG9ydCxwYXRobmFtZToiLyI9PT1yLnBhdGhuYW1lLmNoYXJBdCgwKT9yLnBhdGhuYW1lOiIvIityLnBhdGhuYW1lfX1yZXR1cm4gZT1uKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXt2YXIgcj1YZS5pc1N0cmluZyh0KT9uKHQpOnQ7cmV0dXJuIHIucHJvdG9jb2w9PT1lLnByb3RvY29sJiZyLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9O2Z1bmN0aW9uIFplKGUpe3RoaXMubWVzc2FnZT1lfVplLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxaZS5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgUWU9WmUsZXQ9b2UsdHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuY29uZmlnLnZhbGlkYXRlU3RhdHVzO3Iuc3RhdHVzJiZuJiYhbihyLnN0YXR1cyk/dChGZSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Iuc3RhdHVzLHIuY29uZmlnLG51bGwsci5yZXF1ZXN0LHIpKTplKHIpfSxydD1XZSxudD1jZSxhdD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhemUodCk/WWUoZSx0KTp0fSxpdD1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYT17fTtyZXR1cm4gZT8oVmUuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihuPWUuaW5kZXhPZigiOiIpLHQ9VmUudHJpbShlLnN1YnN0cigwLG4pKS50b0xvd2VyQ2FzZSgpLHI9VmUudHJpbShlLnN1YnN0cihuKzEpKSx0KXtpZihhW3RdJiZHZS5pbmRleE9mKHQpPj0wKXJldHVybjthW3RdPSJzZXQtY29va2llIj09PXQ/KGFbdF0/YVt0XTpbXSkuY29uY2F0KFtyXSk6YVt0XT9hW3RdKyIsICIrcjpyfX0pKSxhKTphfSxvdD0kZSxzdD1CZSx1dD15dCxjdD1RZSxmdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG4sYT1lLmRhdGEsaT1lLmhlYWRlcnMsbz1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiBzKCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShuKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pfWV0LmlzRm9ybURhdGEoYSkmJmRlbGV0ZSBpWyJDb250ZW50LVR5cGUiXTt2YXIgdT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgYz1lLmF1dGgudXNlcm5hbWV8fCIiLGY9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtpLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShjKyI6IitmKX12YXIgbD1hdChlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIGgoKXtpZih1KXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIHU/aXQodS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxhPXtkYXRhOm8mJiJ0ZXh0IiE9PW8mJiJqc29uIiE9PW8/dS5yZXNwb25zZTp1LnJlc3BvbnNlVGV4dCxzdGF0dXM6dS5zdGF0dXMsc3RhdHVzVGV4dDp1LnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6dX07dHQoKGZ1bmN0aW9uKGUpe3QoZSkscygpfSksKGZ1bmN0aW9uKGUpe3IoZSkscygpfSksYSksdT1udWxsfX1pZih1Lm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxudChsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHUudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiB1P3Uub25sb2FkZW5kPWg6dS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt1JiY0PT09dS5yZWFkeVN0YXRlJiYoMCE9PXUuc3RhdHVzfHx1LnJlc3BvbnNlVVJMJiYwPT09dS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChoKX0sdS5vbmFib3J0PWZ1bmN0aW9uKCl7dSYmKHIoc3QoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsKX0sdS5vbmVycm9yPWZ1bmN0aW9uKCl7cihzdCgiTmV0d29yayBFcnJvciIsZSxudWxsLHUpKSx1PW51bGx9LHUub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLG49ZS50cmFuc2l0aW9uYWx8fHV0LnRyYW5zaXRpb25hbDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihzdCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LGV0LmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8b3QobCkpJiZlLnhzcmZDb29raWVOYW1lP3J0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihpW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJmV0LmZvckVhY2goaSwoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgaVt0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxldC5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxvJiYianNvbiIhPT1vJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyBjdCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGx0PW9lLGh0PWZ1bmN0aW9uKGUsdCl7cWUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxwdD1OZSxkdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIHZ0KGUsdCl7IWx0LmlzVW5kZWZpbmVkKGUpJiZsdC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgZ3QsbXQ9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PWplJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoamUpKSYmKGd0PWZ0KSxndCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gaHQodCwiQWNjZXB0IiksaHQodCwiQ29udGVudC1UeXBlIiksbHQuaXNGb3JtRGF0YShlKXx8bHQuaXNBcnJheUJ1ZmZlcihlKXx8bHQuaXNCdWZmZXIoZSl8fGx0LmlzU3RyZWFtKGUpfHxsdC5pc0ZpbGUoZSl8fGx0LmlzQmxvYihlKT9lOmx0LmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOmx0LmlzVVJMU2VhcmNoUGFyYW1zKGUpPyh2dCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6bHQuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyh2dCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKGx0LmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksbHQudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fG10LnRyYW5zaXRpb25hbCxyPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGE9IXImJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKGF8fG4mJmx0LmlzU3RyaW5nKGUpJiZlLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7aWYoYSl7aWYoIlN5bnRheEVycm9yIj09PWUubmFtZSl0aHJvdyBwdChlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O2x0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe210LmhlYWRlcnNbZV09e319KSksbHQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXttdC5oZWFkZXJzW2VdPWx0Lm1lcmdlKGR0KX0pKTt2YXIgeXQ9bXQsYnQ9b2Usd3Q9eXQsa3Q9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9LFJ0PW9lLF90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHx3dDtyZXR1cm4gYnQuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0seHQ9a3QsU3Q9eXQsRXQ9UWU7ZnVuY3Rpb24gVHQoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEV0KCJjYW5jZWxlZCIpfXZhciBBdD1vZSxDdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307ZnVuY3Rpb24gbihlLHQpe3JldHVybiBBdC5pc1BsYWluT2JqZWN0KGUpJiZBdC5pc1BsYWluT2JqZWN0KHQpP0F0Lm1lcmdlKGUsdCk6QXQuaXNQbGFpbk9iamVjdCh0KT9BdC5tZXJnZSh7fSx0KTpBdC5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGEocil7cmV0dXJuIEF0LmlzVW5kZWZpbmVkKHRbcl0pP0F0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKGVbcl0sdFtyXSl9ZnVuY3Rpb24gaShlKXtpZighQXQuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG4odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIG8ocil7cmV0dXJuIEF0LmlzVW5kZWZpbmVkKHRbcl0pP0F0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKHZvaWQgMCx0W3JdKX1mdW5jdGlvbiBzKHIpe3JldHVybiByIGluIHQ/bihlW3JdLHRbcl0pOnIgaW4gZT9uKHZvaWQgMCxlW3JdKTp2b2lkIDB9dmFyIHU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOm8sdHJhbnNmb3JtUmVxdWVzdDpvLHRyYW5zZm9ybVJlc3BvbnNlOm8scGFyYW1zU2VyaWFsaXplcjpvLHRpbWVvdXQ6byx0aW1lb3V0TWVzc2FnZTpvLHdpdGhDcmVkZW50aWFsczpvLGFkYXB0ZXI6byxyZXNwb25zZVR5cGU6byx4c3JmQ29va2llTmFtZTpvLHhzcmZIZWFkZXJOYW1lOm8sb25VcGxvYWRQcm9ncmVzczpvLG9uRG93bmxvYWRQcm9ncmVzczpvLGRlY29tcHJlc3M6byxtYXhDb250ZW50TGVuZ3RoOm8sbWF4Qm9keUxlbmd0aDpvLHRyYW5zcG9ydDpvLGh0dHBBZ2VudDpvLGh0dHBzQWdlbnQ6byxjYW5jZWxUb2tlbjpvLHNvY2tldFBhdGg6byxyZXNwb25zZUVuY29kaW5nOm8sdmFsaWRhdGVTdGF0dXM6c307cmV0dXJuIEF0LmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9dVtlXXx8YSxuPXQoZSk7QXQuaXNVbmRlZmluZWQobikmJnQhPT1zfHwocltlXT1uKX0pKSxyfSxQdD0iMC4yNi4wIixPdD1QdCxEdD17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7RHRbZV09ZnVuY3Rpb24obil7cmV0dXJuIHIobik9PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIEl0PXt9O0R0LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLHQpe3JldHVybiJbQXhpb3MgdiIrT3QrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhyPyIuICIrcjoiIil9cmV0dXJuIGZ1bmN0aW9uKHIsYSxpKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG4oYSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhSXRbYV0mJihJdFthXT0hMCxjb25zb2xlLndhcm4obihhLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFlfHxlKHIsYSxpKX19O3ZhciBVdD17YXNzZXJ0T3B0aW9uczpmdW5jdGlvbihlLHQsbil7aWYoIm9iamVjdCIhPT1yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtmb3IodmFyIGE9T2JqZWN0LmtleXMoZSksaT1hLmxlbmd0aDtpLS0gPjA7KXt2YXIgbz1hW2ldLHM9dFtvXTtpZihzKXt2YXIgdT1lW29dLGM9dm9pZCAwPT09dXx8cyh1LG8sZSk7aWYoITAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiAiK28rIiBtdXN0IGJlICIrYyl9ZWxzZSBpZighMCE9PW4pdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIrbyl9fSx2YWxpZGF0b3JzOkR0fSxIdD1vZSxMdD1jZSxNdD1oZSxqdD1mdW5jdGlvbihlKXtyZXR1cm4gVHQoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPV90LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPVJ0Lm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksUnQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxTdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gVHQoZSksdC5kYXRhPV90LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHh0KHQpfHwoVHQoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1fdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxxdD1DdCxOdD1VdCxLdD1OdC52YWxpZGF0b3JzO2Z1bmN0aW9uIEJ0KGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgTXQscmVzcG9uc2U6bmV3IE10fX1CdC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZT8odD10fHx7fSkudXJsPWU6dD1lfHx7fSwodD1xdCh0aGlzLmRlZmF1bHRzLHQpKS5tZXRob2Q/dC5tZXRob2Q9dC5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD90Lm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnQubWV0aG9kPSJnZXQiO3ZhciByPXQudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXImJk50LmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkt0LnRyYW5zaXRpb25hbChLdC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOkt0LnRyYW5zaXRpb25hbChLdC5ib29sZWFuKX0sITEpO3ZhciBuPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5ydW5XaGVuJiYhMT09PWUucnVuV2hlbih0KXx8KGE9YSYmZS5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZS5mdWxmaWxsZWQsZS5yZWplY3RlZCkpfSkpO3ZhciBpLG89W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFhKXt2YXIgcz1banQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkocyxuKSxzPXMuY29uY2F0KG8pLGk9UHJvbWlzZS5yZXNvbHZlKHQpO3MubGVuZ3RoOylpPWkudGhlbihzLnNoaWZ0KCkscy5zaGlmdCgpKTtyZXR1cm4gaX1mb3IodmFyIHU9dDtuLmxlbmd0aDspe3ZhciBjPW4uc2hpZnQoKSxmPW4uc2hpZnQoKTt0cnl7dT1jKHUpfWNhdGNoKGUpe2YoZSk7YnJlYWt9fXRyeXtpPWp0KHUpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO28ubGVuZ3RoOylpPWkudGhlbihvLnNoaWZ0KCksby5zaGlmdCgpKTtyZXR1cm4gaX0sQnQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1xdCh0aGlzLmRlZmF1bHRzLGUpLEx0KGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LEh0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtCdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHF0KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSksSHQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtCdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QocXQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIEZ0PUJ0LEp0PVFlO2Z1bmN0aW9uIFd0KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihyLl9saXN0ZW5lcnMpe3ZhciB0LG49ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8bjt0Kyspci5fbGlzdGVuZXJzW3RdKGUpO3IuX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKHQpfSxufSxlKChmdW5jdGlvbihlKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBKdChlKSx0KHIucmVhc29uKSl9KSl9V3QucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sV3QucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sV3QucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9fSxXdC5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm57dG9rZW46bmV3IFd0KChmdW5jdGlvbih0KXtlPXR9KSksY2FuY2VsOmV9fTt2YXIgenQ9V3QsWXQ9b2UsVnQ9b2UsR3Q9WCxYdD1GdCwkdD1DdDt2YXIgWnQ9ZnVuY3Rpb24gZSh0KXt2YXIgcj1uZXcgWHQodCksbj1HdChYdC5wcm90b3R5cGUucmVxdWVzdCxyKTtyZXR1cm4gVnQuZXh0ZW5kKG4sWHQucHJvdG90eXBlLHIpLFZ0LmV4dGVuZChuLHIpLG4uY3JlYXRlPWZ1bmN0aW9uKHIpe3JldHVybiBlKCR0KHQscikpfSxufSh5dCk7WnQuQXhpb3M9WHQsWnQuQ2FuY2VsPVFlLFp0LkNhbmNlbFRva2VuPXp0LFp0LmlzQ2FuY2VsPWt0LFp0LlZFUlNJT049UHQsWnQuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sWnQuc3ByZWFkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sWnQuaXNBeGlvc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBZdC5pc09iamVjdChlKSYmITA9PT1lLmlzQXhpb3NFcnJvcn0sRy5leHBvcnRzPVp0LEcuZXhwb3J0cy5kZWZhdWx0PVp0O3ZhciBRdCxlcj1HLmV4cG9ydHM7dmFyIHRyPVF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiBzKGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYocj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsbj1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5hcHBlbmQoZSxyW2VdKX0pKSxlLmRhdGE9biksUXQuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IFF0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBRdC5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6UXQuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7UXQuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1F0LmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpRdC5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO1F0LmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtRdC5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPWVyLmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IFF0KSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gXyhlLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9ZXIuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9ZXIuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTt0ci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyx0cj1RdD1mdW5jdGlvbihlLHQsbixhKXt2YXIgaSxvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpyKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKGk9ZVt1XSkmJihzPShvPDM/aShzKTpvPjM/aSh0LG4scyk6aSh0LG4pKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixzKSxzfShbZnVuY3Rpb24oZSl7fV0sdHIpO3ZhciBycj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiBzKGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixudWxsIT09KHI9bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PXI/cjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksbnI9W10sYXI9W10saXI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksb3I9ITE7ZnVuY3Rpb24gc3IoKXtvcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpbnJbdF09ZVt0XSxhcltlLmNoYXJDb2RlQXQodCldPXQ7YXJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGFyWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiB1cihlLHQscil7Zm9yKHZhciBuLGEsaT1bXSxvPXQ7bzxyO28rPTMpbj0oZVtvXTw8MTYpKyhlW28rMV08PDgpK2VbbysyXSxpLnB1c2gobnJbKGE9bik+PjE4JjYzXStuclthPj4xMiY2M10rbnJbYT4+NiY2M10rbnJbNjMmYV0pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGNyKGUpe3ZhciB0O29yfHxzcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLGk9W10sbz0xNjM4MyxzPTAsdT1yLW47czx1O3MrPW8paS5wdXNoKHVyKGUscyxzK28+dT91OnMrbykpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9bnJbdD4+Ml0sYSs9bnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1uclt0Pj4xMF0sYSs9bnJbdD4+NCY2M10sYSs9bnJbdDw8MiY2M10sYSs9Ij0iKSxpLnB1c2goYSksaS5qb2luKCIiKX1mdW5jdGlvbiBmcihlLHQscixuLGEpe3ZhciBpLG8scz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLGk9cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7Zm9yKG89aSYoMTw8LWYpLTEsaT4+PS1mLGYrPW47Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09dSlyZXR1cm4gbz9OYU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiksaS09Y31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsaS1uKX1mdW5jdGlvbiBscihlLHQscixuLGEsaSl7dmFyIG8scyx1LGM9OCppLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxvPWYpOihvPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sdSo9MiksKHQrPW8rbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihvKyssdS89MiksbytsPj1mPyhzPTAsbz1mKTpvK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLG8rPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksbz0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKG89bzw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmbyxwKz1kLG8vPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIGhyPXt9LnRvU3RyaW5nLHByPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWhyLmNhbGwoZSl9O21yLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09cGUuVFlQRURfQVJSQVlfU1VQUE9SVHx8cGUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIgZHI9dnIoKTtmdW5jdGlvbiB2cigpe3JldHVybiBtci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBncihlLHQpe2lmKHZyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPW1yLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBtcih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBtcihlLHQscil7aWYoIShtci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgbXIpKXJldHVybiBuZXcgbXIoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gd3IodGhpcyxlKX1yZXR1cm4geXIodGhpcyxlLHQscil9ZnVuY3Rpb24geXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTttci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1tci5wcm90b3R5cGU6ZT1rcihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFtci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8eHIodCxyKSxhPShlPWdyKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKF9yKHQpKXt2YXIgcj0wfFJyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPWdyKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj9ncihlLDApOmtyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJnByKHQuZGF0YSkpcmV0dXJuIGtyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gYnIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiB3cihlLHQpe2lmKGJyKHQpLGU9Z3IoZSx0PDA/MDowfFJyKHQpKSwhbXIuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiBrcihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfFJyKHQubGVuZ3RoKTtlPWdyKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBScihlKXtpZihlPj12cigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4Iit2cigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBfcihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24geHIoZSx0KXtpZihfcihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gJHIoZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBacihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiAkcihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBTcihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTHIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBqcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcXIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gSHIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gS3IodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gRXIoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBUcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bXIuZnJvbSh0LG4pKSxfcih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOkFyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsbXIuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOkFyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBBcihlLHQscixuLGEpe3ZhciBpLG89MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtvPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09bz9lW3RdOmUucmVhZFVJbnQxNkJFKHQqbyl9aWYoYSl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZipvfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLGkraCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBDcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgbz0wO288bjsrK28pe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqbywyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIG87ZVtyK29dPXN9cmV0dXJuIG99ZnVuY3Rpb24gUHIoZSx0LHIsbil7cmV0dXJuIFFyKCRyKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIE9yKGUsdCxyLG4pe3JldHVybiBRcihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIERyKGUsdCxyLG4pe3JldHVybiBPcihlLHQscixuKX1mdW5jdGlvbiBJcihlLHQscixuKXtyZXR1cm4gUXIoWnIodCksZSxyLG4pfWZ1bmN0aW9uIFVyKGUsdCxyLG4pe3JldHVybiBRcihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsaT1bXSxvPTA7bzxlLmxlbmd0aCYmISgodC09Mik8MCk7KytvKW49KHI9ZS5jaGFyQ29kZUF0KG8pKT4+OCxhPXIlMjU2LGkucHVzaChhKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIEhyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9jcihlKTpjcihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIExyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIGksbyxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKGk9ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZpKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzppPWVbYSsxXSxvPWVbYSsyXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZvKSYmKHU9KDE1JmMpPDwxMnwoNjMmaSk8PDZ8NjMmbyk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6aT1lW2ErMV0sbz1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmaSk8PDEyfCg2MyZvKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9TXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPU1yKSk7cmV0dXJuIHJ9KG4pfW1yLnBvb2xTaXplPTgxOTIsbXIuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPW1yLnByb3RvdHlwZSxlfSxtci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geXIobnVsbCxlLHQscil9LG1yLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihtci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLG1yLl9fcHJvdG9fXz1VaW50OEFycmF5KSxtci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBicih0KSx0PD0wP2dyKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/Z3IoZSx0KS5maWxsKHIsbik6Z3IoZSx0KS5maWxsKHIpOmdyKGUsdCl9KG51bGwsZSx0LHIpfSxtci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gd3IobnVsbCxlKX0sbXIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiB3cihudWxsLGUpfSxtci5pc0J1ZmZlcj1lbixtci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIV9yKGUpfHwhX3IodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxpPU1hdGgubWluKHIsbik7YTxpOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LG1yLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LG1yLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFwcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBtci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPW1yLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdO2lmKCFfcihpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aS5jb3B5KG4sYSksYSs9aS5sZW5ndGh9cmV0dXJuIG59LG1yLmJ5dGVMZW5ndGg9eHIsbXIucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxtci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKUVyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxtci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KUVyKHRoaXMsdCx0KzMpLEVyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LG1yLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpRXIodGhpcyx0LHQrNyksRXIodGhpcyx0KzEsdCs2KSxFcih0aGlzLHQrMix0KzUpLEVyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LG1yLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0xyKHRoaXMsMCxlKTpTci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG1yLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIV9yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1tci5jb21wYXJlKHRoaXMsZSl9LG1yLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LG1yLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIV9yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShhPj4+PTApLShuPj4+PTApLG89KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLG8pLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sbz1jW2ZdO2JyZWFrfXJldHVybiBpPG8/LTE6bzxpPzE6MH0sbXIucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LG1yLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVHIodGhpcyxlLHQsciwhMCl9LG1yLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIFRyKHRoaXMsZSx0LHIsITEpfSxtci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgaT0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIENyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIFByKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBPcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBEcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIElyKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gVXIodGhpcyxlLHQscik7ZGVmYXVsdDppZihpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxpPSEwfX0sbXIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIE1yPTQwOTY7ZnVuY3Rpb24ganIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBxcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gTnIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixpPXQ7aTxyOysraSlhKz1YcihlW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBLcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBhfWZ1bmN0aW9uIEJyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBGcihlLHQscixuLGEsaSl7aWYoIV9yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBKcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8aTsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gV3IoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8aTsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24genIoZSx0LHIsbixhLGkpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBZcihlLHQscixuLGEpe3JldHVybiBhfHx6cihlLDAsciw0KSxscihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBWcihlLHQscixuLGEpe3JldHVybiBhfHx6cihlLDAsciw4KSxscihlLHQscixuLDUyLDgpLHIrOH1tci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksbXIuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1tci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgbXIoYSx2b2lkIDApO2Zvcih2YXIgaT0wO2k8YTsrK2kpcltpXT10aGlzW2krZV19cmV0dXJuIHJ9LG1yLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8QnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG59LG1yLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8QnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LG1yLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxtci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LG1yLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sbXIucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LG1yLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxtci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8QnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxtci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8QnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsaT10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylpKz10aGlzW2UrLS1uXSphO3JldHVybiBpPj0oYSo9MTI4KSYmKGktPU1hdGgucG93KDIsOCp0KSksaX0sbXIucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LG1yLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fEJyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LG1yLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fEJyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LG1yLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sbXIucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxtci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSw0LHRoaXMubGVuZ3RoKSxmcih0aGlzLGUsITAsMjMsNCl9LG1yLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDQsdGhpcy5sZW5ndGgpLGZyKHRoaXMsZSwhMSwyMyw0KX0sbXIucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDgsdGhpcy5sZW5ndGgpLGZyKHRoaXMsZSwhMCw1Miw4KX0sbXIucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDgsdGhpcy5sZW5ndGgpLGZyKHRoaXMsZSwhMSw1Miw4KX0sbXIucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8RnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KXRoaXNbdCtpXT1lL2EmMjU1O3JldHVybiB0K3J9LG1yLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fEZyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLGk9MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKGkqPTI1Nik7KXRoaXNbdCthXT1lL2kmMjU1O3JldHVybiB0K3J9LG1yLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDEsMjU1LDApLG1yLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxtci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCwyLDY1NTM1LDApLG1yLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpKcih0aGlzLGUsdCwhMCksdCsyfSxtci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCwyLDY1NTM1LDApLG1yLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpKcih0aGlzLGUsdCwhMSksdCsyfSxtci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpXcih0aGlzLGUsdCwhMCksdCs0fSxtci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpXcih0aGlzLGUsdCwhMSksdCs0fSxtci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0ZyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT0wLG89MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2ktMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxtci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0ZyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraSsxXSYmKHM9MSksdGhpc1t0K2ldPShlL28+PjApLXMmMjU1O3JldHVybiB0K3J9LG1yLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8RnIodGhpcyxlLHQsMSwxMjcsLTEyOCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sbXIucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkpyKHRoaXMsZSx0LCEwKSx0KzJ9LG1yLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8RnIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLG1yLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpKcih0aGlzLGUsdCwhMSksdCsyfSxtci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpXcih0aGlzLGUsdCwhMCksdCs0fSxtci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpXcih0aGlzLGUsdCwhMSksdCs0fSxtci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWXIodGhpcyxlLHQsITAscil9LG1yLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBZcih0aGlzLGUsdCwhMSxyKX0sbXIucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMCxyKX0sbXIucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMSxyKX0sbXIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxpPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9aS0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihpPDFlM3x8IW1yLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPGk7KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxtci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhbXIuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgaTtpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3IoaT10O2k8cjsrK2kpdGhpc1tpXT1lO2Vsc2V7dmFyIG89X3IoZSk/ZTokcihuZXcgbXIoZSxuKS50b1N0cmluZygpKSxzPW8ubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1vW2klc119cmV0dXJuIHRoaXN9O3ZhciBHcj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBYcihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gJHIoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLGk9W10sbz0wO288bjsrK28pe2lmKChyPWUuY2hhckNvZGVBdChvKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYobysxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIFpyKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxpLG87b3J8fHNyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7aT0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLG89bmV3IGlyKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPWFyW2UuY2hhckNvZGVBdCh0KV08PDE4fGFyW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8YXJbZS5jaGFyQ29kZUF0KHQrMildPDw2fGFyW2UuY2hhckNvZGVBdCh0KzMpXSxvW3UrK109YT4+MTYmMjU1LG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmE7cmV0dXJuIDI9PT1pPyhhPWFyW2UuY2hhckNvZGVBdCh0KV08PDJ8YXJbZS5jaGFyQ29kZUF0KHQrMSldPj40LG9bdSsrXT0yNTUmYSk6MT09PWkmJihhPWFyW2UuY2hhckNvZGVBdCh0KV08PDEwfGFyW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxhcltlLmNoYXJDb2RlQXQodCsyKV0+PjIsb1t1KytdPWE+PjgmMjU1LG9bdSsrXT0yNTUmYSksb30oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShHciwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gUXIoZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gZW4oZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHx0bihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZ0bihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gdG4oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgcm49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOm1yLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLG1yLmFsbG9jKCtlKX0saXNCdWZmZXI6ZW4sa01heExlbmd0aDpkcn0pLG5uPXtleHBvcnRzOnt9fSxhbj17fSxvbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkob24sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG9uLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixpPXQrYSxvPW1yLmFsbG9jKGkpO2ZvcihvLndyaXRlKGUpO2EtLTspby53cml0ZSgiPSIsbisrKTtyZXR1cm4gby50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYW4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzbj1vbjtmdW5jdGlvbiB1bihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLG1yLmlzQnVmZmVyKGUpP2ZuKGUudG9TdHJpbmcoImJhc2U2NCIpKTpmbihtci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiBjbihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksc24uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gZm4oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBsbixobj11bjtobi5lbmNvZGU9dW4saG4uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksbXIuZnJvbShjbihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGhuLnRvQmFzZTY0PWNuLGhuLmZyb21CYXNlNjQ9Zm4saG4udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG1yLmZyb20oY24oZSksImJhc2U2NCIpfSxhbi5kZWZhdWx0PWhuLChsbj1ubikuZXhwb3J0cz1hbi5kZWZhdWx0LGxuLmV4cG9ydHMuZGVmYXVsdD1sbi5leHBvcnRzO3ZhciBwbj1ubi5leHBvcnRzLGRuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxpKXtmb3IodmFyIG8scyx1LGMsZixsLGgscCxkLHYsZyxtLHk7aT49NjQ7KXtmb3Iobz1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspbT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAseT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPShtK2Vbdi03XXwwKSsoeStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspbT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAseT0oKG8+Pj4yfG88PDMwKV4obz4+PjEzfG88PDE5KV4obz4+PjIyfG88PDEwKSkrKG8mc15vJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9YyttfDAsYz11LHU9cyxzPW8sbz1tK3l8MDtyWzBdKz1vLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsaS09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsaT10PDwzLG89dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxvLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbby04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltvLTRdPWk+Pj4yNCYyNTUsdGhpcy5idWZmZXJbby0zXT1pPj4+MTYmMjU1LHRoaXMuYnVmZmVyW28tMl09aT4+PjgmMjU1LHRoaXMuYnVmZmVyW28tMV09aT4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxvKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBpKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9aSxlLmRlZmF1bHQ9aSxlLmhtYWM9bzt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBpPW5ldyBVaW50OEFycmF5KFsxXSksYz1vKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixpKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLGkuZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBpPW5ldyBhKGUpLG89aS5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KG8pLGM9bmV3IFVpbnQ4QXJyYXkobyksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCpvPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxpLnJlc2V0KCksaS51cGRhdGUodCksaS51cGRhdGUocyksaS5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxvO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7aS5yZXNldCgpLGkudXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPG87ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPG8mJmwqbytwPG47cCsrKWZbbCpvK3BdPXVbcF19Zm9yKGw9MDtsPG87bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIGkuY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIGkgaW4gbilhW2ldPW5baV07ZS5leHBvcnRzPWF9KCl9KGRuKTt2YXIgdm49WShkbi5leHBvcnRzKSxnbj1jcnlwdG87ZnVuY3Rpb24gbW4oZSl7dHJ5e3JldHVybiBudWxsIT1lJiYiYm9vbGVhbiI9PXR5cGVvZiBlLmV4dHJhY3RhYmxlJiYic3RyaW5nIj09dHlwZW9mIGUuYWxnb3JpdGhtLm5hbWUmJiJzdHJpbmciPT10eXBlb2YgZS50eXBlfWNhdGNoKGUpe3JldHVybiExfX12YXIgeW49bmV3IFRleHRFbmNvZGVyLGJuPW5ldyBUZXh0RGVjb2RlcjtmdW5jdGlvbiB3bigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuPXQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3QubGVuZ3RofSksMCksYT1uZXcgVWludDhBcnJheShuKSxpPTA7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YS5zZXQoZSxpKSxpKz1lLmxlbmd0aH0pKSxhfXZhciBrbj1mdW5jdGlvbihlKXt2YXIgdD1lO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodD1ibi5kZWNvZGUodCkpLHQ9dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKS5yZXBsYWNlKC9ccy9nLCIiKTt0cnl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVWludDhBcnJheShhdG9iKGUpLnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCl9KSkpfSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIil9fSxSbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE7cmV0dXJuIGkodGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pPU0VfR0VORVJJQyIsbi5uYW1lPW4uY29uc3RydWN0b3IubmFtZSxudWxsPT09KGE9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpfHx2b2lkIDA9PT1hfHxhLmNhbGwoRXJyb3IsdihuKSxuLmNvbnN0cnVjdG9yKSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0dFTkVSSUMifX1dKSxyfShkKEVycm9yKSksX249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIGkodGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1hLG4ucmVhc29uPW8sbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIn19XSkscn0oUm4pLHhuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixvPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBpKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfRVhQSVJFRCIsbi5jbGFpbT1hLG4ucmVhc29uPW8sbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0VYUElSRUQifX1dKSxyfShSbiksU249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQifX1dKSxyfShSbiksRW49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX05PVF9TVVBQT1JURUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCJ9fV0pLHJ9KFJuKSxUbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfSU5WQUxJRCJ9fV0pLHJ9KFJuKSxBbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfSU5WQUxJRCJ9fV0pLHJ9KFJuKSxDbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19JTlZBTElEIn19XSkscn0oUm4pLFBuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19OT19NQVRDSElOR19LRVkiLGUubWVzc2FnZT0ibm8gYXBwbGljYWJsZSBrZXkgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIn19XSkscn0oUm4pLE9uPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIixlLm1lc3NhZ2U9Im11bHRpcGxlIG1hdGNoaW5nIGtleXMgZm91bmQgaW4gdGhlIEpTT04gV2ViIEtleSBTZXQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyJ9fV0pLHJ9KFJuKSxEbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIn19XSkscn0oUm4pO2Z1bmN0aW9uIEluKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFdlYlNvY2tldFBhaXJ9ZnVuY3Rpb24gVW4oKXt0cnl7cmV0dXJuIHZvaWQgMCE9PWplLnZlcnNpb25zLm5vZGV9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIEhuKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYWxnb3JpdGhtLm5hbWUiO3JldHVybiBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzICIuY29uY2F0KHQsIiBtdXN0IGJlICIpLmNvbmNhdChlKSl9ZnVuY3Rpb24gTG4oZSx0KXtyZXR1cm4gZS5uYW1lPT09dH1mdW5jdGlvbiBNbihlKXtyZXR1cm4gcGFyc2VJbnQoZS5uYW1lLnNsaWNlKDQpLDEwKX1mdW5jdGlvbiBqbihlKXtzd2l0Y2goZSl7Y2FzZSJFUzI1NiI6cmV0dXJuIlAtMjU2IjtjYXNlIkVTMzg0IjpyZXR1cm4iUC0zODQiO2Nhc2UiRVM1MTIiOnJldHVybiJQLTUyMSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIil9fWZ1bmN0aW9uIHFuKGUsdCl7aWYodC5sZW5ndGgmJiF0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiBlLnVzYWdlcy5pbmNsdWRlcyh0KX0pKSl7dmFyIHI9IkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgdXNhZ2VzIG11c3QgaW5jbHVkZSAiO2lmKHQubGVuZ3RoPjIpe3ZhciBuPXQucG9wKCk7cis9Im9uZSBvZiAiLmNvbmNhdCh0LmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KG4sIi4iKX1lbHNlIDI9PT10Lmxlbmd0aD9yKz0ib25lIG9mICIuY29uY2F0KHRbMF0sIiBvciAiKS5jb25jYXQodFsxXSwiLiIpOnIrPSIiLmNvbmNhdCh0WzBdLCIuIik7dGhyb3cgbmV3IFR5cGVFcnJvcihyKX19dmFyIE5uPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iS2V5IG11c3QgYmUgIixuPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkobj4xP24tMTowKSxpPTE7aTxuO2krKylhW2ktMV09YXJndW1lbnRzW2ldO2lmKGEubGVuZ3RoPjIpe3ZhciBvPWEucG9wKCk7dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGEuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobywiLiIpfWVsc2UgMj09PWEubGVuZ3RoP3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhWzBdLCIgb3IgIikuY29uY2F0KGFbMV0sIi4iKTp0Kz0ib2YgdHlwZSAiLmNvbmNhdChhWzBdLCIuIik7cmV0dXJuIG51bGw9PWU/dCs9IiBSZWNlaXZlZCAiLmNvbmNhdChlKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5uYW1lP3QrPSIgUmVjZWl2ZWQgZnVuY3Rpb24gIi5jb25jYXQoZS5uYW1lKToib2JqZWN0Ij09PXIoZSkmJm51bGwhPWUmJmUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZSYmKHQrPSIgUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgIi5jb25jYXQoZS5jb25zdHJ1Y3Rvci5uYW1lKSksdH0sS249ZnVuY3Rpb24oZSl7cmV0dXJuIG1uKGUpfSxCbj1bIkNyeXB0b0tleSJdLEZuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG4sYT10LmZpbHRlcihCb29sZWFuKTtpZigwPT09YS5sZW5ndGh8fDE9PT1hLmxlbmd0aClyZXR1cm4hMDt2YXIgaSxvPVIoYSk7dHJ5e2ZvcihvLnMoKTshKGk9by5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSlmb3IodmFyIGM9MCxmPXU7YzxmLmxlbmd0aDtjKyspe3ZhciBsPWZbY107aWYobi5oYXMobCkpcmV0dXJuITE7bi5hZGQobCl9ZWxzZSBuPW5ldyBTZXQodSl9fWNhdGNoKGUpe28uZShlKX1maW5hbGx5e28uZigpfXJldHVybiEwfTtmdW5jdGlvbiBKbihlKXtpZigib2JqZWN0IiE9PXIodD1lKXx8bnVsbD09PXR8fCJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiExO3ZhciB0O2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpcmV0dXJuITA7Zm9yKHZhciBuPWU7bnVsbCE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTspbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW59dmFyIFduPWZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciByPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiByfHxyPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fTtmdW5jdGlvbiB6bihlKXt2YXIgdCxyO3N3aXRjaChlLmt0eSl7Y2FzZSJvY3QiOnN3aXRjaChlLmFsZyl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6dD17bmFtZToiSE1BQyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9WyJzaWduIiwidmVyaWZ5Il07YnJlYWs7Y2FzZSJBMTI4Q0JDLUhTMjU2IjpjYXNlIkExOTJDQkMtSFMzODQiOmNhc2UiQTI1NkNCQy1IUzUxMiI6dGhyb3cgbmV3IEVuKCIiLmNvbmNhdChlLmFsZywiIGtleXMgY2Fubm90IGJlIGltcG9ydGVkIGFzIENyeXB0b0tleSBpbnN0YW5jZXMiKSk7Y2FzZSJBMTI4R0NNIjpjYXNlIkExOTJHQ00iOmNhc2UiQTI1NkdDTSI6Y2FzZSJBMTI4R0NNS1ciOmNhc2UiQTE5MkdDTUtXIjpjYXNlIkEyNTZHQ01LVyI6dD17bmFtZToiQUVTLUdDTSJ9LHI9WyJlbmNyeXB0IiwiZGVjcnlwdCJdO2JyZWFrO2Nhc2UiQTEyOEtXIjpjYXNlIkExOTJLVyI6Y2FzZSJBMjU2S1ciOnQ9e25hbWU6IkFFUy1LVyJ9LHI9WyJ3cmFwS2V5IiwidW53cmFwS2V5Il07YnJlYWs7Y2FzZSJQQkVTMi1IUzI1NitBMTI4S1ciOmNhc2UiUEJFUzItSFMzODQrQTE5MktXIjpjYXNlIlBCRVMyLUhTNTEyK0EyNTZLVyI6dD17bmFtZToiUEJLREYyIn0scj1bImRlcml2ZUJpdHMiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJSU0EiOnN3aXRjaChlLmFsZyl7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6dD17bmFtZToiUlNBLVBTUyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlNBLU9BRVAiOmNhc2UiUlNBLU9BRVAtMjU2IjpjYXNlIlJTQS1PQUVQLTM4NCI6Y2FzZSJSU0EtT0FFUC01MTIiOnQ9e25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtIi5jb25jYXQocGFyc2VJbnQoZS5hbGcuc2xpY2UoLTMpLDEwKXx8MSl9LHI9ZS5kP1siZGVjcnlwdCIsInVud3JhcEtleSJdOlsiZW5jcnlwdCIsIndyYXBLZXkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZSJFQyI6c3dpdGNoKGUuYWxnKXtjYXNlIkVTMjU2Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVMzODQiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTM4NCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzUxMiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtNTIxIn0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVDREgtRVMiOmNhc2UiRUNESC1FUytBMTI4S1ciOmNhc2UiRUNESC1FUytBMTkyS1ciOmNhc2UiRUNESC1FUytBMjU2S1ciOnQ9e25hbWU6IkVDREgiLG5hbWVkQ3VydmU6ZS5jcnZ9LHI9ZS5kP1siZGVyaXZlQml0cyJdOltdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlKEluKCl8fFVuKCkpJiYiT0tQIjppZigiRWREU0EiIT09ZS5hbGcpdGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKTtzd2l0Y2goZS5jcnYpe2Nhc2UiRWQyNTUxOSI6dD17bmFtZToiTk9ERS1FRDI1NTE5IixuYW1lZEN1cnZlOiJOT0RFLUVEMjU1MTkifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UgVW4oKSYmIkVkNDQ4Ijp0PXtuYW1lOiJOT0RFLUVENDQ4IixuYW1lZEN1cnZlOiJOT0RFLUVENDQ4In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImNydiIgKFN1YnR5cGUgb2YgS2V5IFBhaXIpIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19dmFyIFluPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyKXt2YXIgbixhLGksbyxzLHUsYyxmLGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihvPXpuKHIpLHM9by5hbGdvcml0aG0sdT1vLmtleVVzYWdlcyxjPVtzLG51bGwhPT0oYT1yLmV4dCkmJnZvaWQgMCE9PWEmJmEsbnVsbCE9PShpPXIua2V5X29wcykmJnZvaWQgMCE9PWk/aTp1XSwiUEJLREYyIiE9PXMubmFtZSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChmPWduLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KGYsWyJyYXciLGtuKHIuayldLmNvbmNhdChjKSkpO2Nhc2UgNDpyZXR1cm4gZGVsZXRlKGw9dCh7fSxyKSkuYWxnLGUuYWJydXB0KCJyZXR1cm4iLChuPWduLnN1YnRsZSkuaW1wb3J0S2V5LmFwcGx5KG4sWyJqd2siLGxdLmNvbmNhdChjKSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBWbihlLHQscil7cmV0dXJuIEduLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBHbigpe3JldHVybihHbj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKEpuKHIpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCJKV0sgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYobnx8KG49ci5hbGcpLCJzdHJpbmciPT10eXBlb2YgbiYmbil7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignImFsZyIgYXJndW1lbnQgaXMgcmVxdWlyZWQgd2hlbiAiandrLmFsZyIgaXMgbm90IHByZXNlbnQnKTtjYXNlIDU6ZS50MD1yLmt0eSxlLm5leHQ9Im9jdCI9PT1lLnQwPzg6IlJTQSI9PT1lLnQwPzE0OiJFQyI9PT1lLnQwfHwiT0tQIj09PWUudDA/MTY6MTc7YnJlYWs7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5rJiZyLmspe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNzaW5nICJrIiAoS2V5IFZhbHVlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDEwOmlmKG51bGwhPWF8fChhPSEwIT09ci5leHQpLCFhKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFluKHQodCh7fSxyKSx7fSx7YWxnOm4sZXh0OiExfSkpKTtjYXNlIDEzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixrbihyLmspKTtjYXNlIDE0OmlmKHZvaWQgMD09PXIub3RoKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IEVuKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQnKTtjYXNlIDE2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixZbih0KHQoe30scikse30se2FsZzpufSkpKTtjYXNlIDE3OnRocm93IG5ldyBFbignVW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIFhuPWZ1bmN0aW9uKGUsdCxyKXtlLnN0YXJ0c1dpdGgoIkhTIil8fCJkaXIiPT09ZXx8ZS5zdGFydHNXaXRoKCJQQkVTMiIpfHwvXkFcZHszfSg/OkdDTSk/S1ckLy50ZXN0KGUpP2Z1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtpZighS24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEJuKSxbIlVpbnQ4QXJyYXkiXSkpKTtpZigic2VjcmV0IiE9PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKX19KHQpOmZ1bmN0aW9uKGUsdCl7aWYoIUtuKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQoYihCbikpKSk7aWYoInNlY3JldCI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoQm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBub3QgYmUgb2YgdHlwZSAic2VjcmV0IicpKTtpZigic2lnbiI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHNpZ25pbmcgbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZigiZGVjcnlwdCI9PT10JiYicHVibGljIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGRlY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwcml2YXRlIicpKTtpZihlLmFsZ29yaXRobSYmInZlcmlmeSI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoQm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSB2ZXJpZnlpbmcgbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpO2lmKGUuYWxnb3JpdGhtJiYiZW5jcnlwdCI9PT10JiYicHJpdmF0ZSI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoQm4uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBlbmNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKX0odCxyKX07ZnVuY3Rpb24gJG4oZSx0LHIsbixhKXtpZih2b2lkIDAhPT1hLmNyaXQmJnZvaWQgMD09PW4uY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighbnx8dm9pZCAwPT09bi5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KG4uY3JpdCl8fDA9PT1uLmNyaXQubGVuZ3RofHxuLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgaTtpPXZvaWQgMCE9PXI/bmV3IE1hcChbXS5jb25jYXQoYihPYmplY3QuZW50cmllcyhyKSksYih0LmVudHJpZXMoKSkpKTp0O3ZhciBvLHM9UihuLmNyaXQpO3RyeXtmb3Iocy5zKCk7IShvPXMubigpKS5kb25lOyl7dmFyIHU9by52YWx1ZTtpZighaS5oYXModSkpdGhyb3cgbmV3IEVuKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBub3QgcmVjb2duaXplZCcpKTtpZih2b2lkIDA9PT1hW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBpcyBtaXNzaW5nJykpO2lmKGkuZ2V0KHUpJiZ2b2lkIDA9PT1uW3VdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQodSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe3MuZShlKX1maW5hbGx5e3MuZigpfXJldHVybiBuZXcgU2V0KG4uY3JpdCl9dmFyIFpuPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dCYmKCFBcnJheS5pc0FycmF5KHQpfHx0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZX0pKSkpdGhyb3cgbmV3IFR5cGVFcnJvcignIicuY29uY2F0KGUsJyIgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpKTtpZih0KXJldHVybiBuZXcgU2V0KHQpfTtmdW5jdGlvbiBRbihlLHQpe3ZhciByPSJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpO3N3aXRjaChlKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkhNQUMifTtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6ZS5zbGljZSgtMyk+PjN9O2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUifTtjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOnQubmFtZWRDdXJ2ZX07Y2FzZShJbigpfHxVbigpKSYmIkVkRFNBIjp2YXIgbj10Lm5hbWVkQ3VydmU7cmV0dXJue25hbWU6bixuYW1lZEN1cnZlOm59O2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCJhbGcgIi5jb25jYXQoZSwiIGlzIG5vdCBzdXBwb3J0ZWQgZWl0aGVyIGJ5IEpPU0Ugb3IgeW91ciBqYXZhc2NyaXB0IHJ1bnRpbWUiKSl9fWZ1bmN0aW9uIGVhKGUsdCxyKXtpZihtbih0KSlyZXR1cm4gZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJITUFDIikpdGhyb3cgSG4oIkhNQUMiKTt2YXIgcj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihNbihlLmFsZ29yaXRobS5oYXNoKSE9PXIpdGhyb3cgSG4oIlNIQS0iLmNvbmNhdChyKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQVNTQS1QS0NTMS12MV81IikpdGhyb3cgSG4oIlJTQVNTQS1QS0NTMS12MV81Iik7dmFyIG49cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoTW4oZS5hbGdvcml0aG0uaGFzaCkhPT1uKXRocm93IEhuKCJTSEEtIi5jb25jYXQobiksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJSU0EtUFNTIikpdGhyb3cgSG4oIlJTQS1QU1MiKTt2YXIgYT1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihNbihlLmFsZ29yaXRobS5oYXNoKSE9PWEpdGhyb3cgSG4oIlNIQS0iLmNvbmNhdChhKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIFVuKCkmJiJFZERTQSI6aWYoIk5PREUtRUQyNTUxOSIhPT1lLmFsZ29yaXRobS5uYW1lJiYiTk9ERS1FRDQ0OCIhPT1lLmFsZ29yaXRobS5uYW1lKXRocm93IEhuKCJOT0RFLUVEMjU1MTkgb3IgTk9ERS1FRDQ0OCIpO2JyZWFrO2Nhc2UgSW4oKSYmIkVkRFNBIjppZighTG4oZS5hbGdvcml0aG0sIk5PREUtRUQyNTUxOSIpKXRocm93IEhuKCJOT0RFLUVEMjU1MTkiKTticmVhaztjYXNlIkVTMjU2IjpjYXNlIkVTMzg0IjpjYXNlIkVTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkVDRFNBIikpdGhyb3cgSG4oIkVDRFNBIik7dmFyIGk9am4odCk7aWYoZS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSE9PWkpdGhyb3cgSG4oaSwiYWxnb3JpdGhtLm5hbWVkQ3VydmUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uIil9Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkobz4yP28tMjowKSx1PTI7dTxvO3UrKylzW3UtMl09YXJndW1lbnRzW3VdO3FuKGUscyl9KHQsZSxyKSx0O2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtpZighZS5zdGFydHNXaXRoKCJIUyIpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihCbikpKSk7cmV0dXJuIGduLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsdCx7aGFzaDoiU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKSxuYW1lOiJITUFDIn0sITEsW3JdKX10aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KGIoQm4pLFsiVWludDhBcnJheSJdKSkpfXZhciB0YT1mdW5jdGlvbigpe3ZhciBlPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4sYSl7dmFyIGksbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixlYSh0LHIsInZlcmlmeSIpO2Nhc2UgMjpyZXR1cm4gaT1lLnNlbnQsV24odCxpKSxvPVFuKHQsaS5hbGdvcml0aG0pLGUucHJldj01LGUubmV4dD04LGduLnN1YnRsZS52ZXJpZnkobyxpLG4sYSk7Y2FzZSA4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMTE6cmV0dXJuIGUucHJldj0xMSxlLnQwPWUuY2F0Y2goNSksZS5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDExXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sYSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiByYShlLHQscil7cmV0dXJuIG5hLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuYSgpe3JldHVybiBuYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgaSxvLHMsdSxjLGYsbCxoLHAsZCx2LGcsbTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKEpuKHIpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgVG4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09ci5wcm90ZWN0ZWR8fHZvaWQgMCE9PXIuaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgVG4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT1yLnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiByLnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IFRuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT1yLnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBUbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHIuc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFRuKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PXIuaGVhZGVyfHxKbihyLmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgVG4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKG89e30sIXIucHJvdGVjdGVkKXtlLm5leHQ9MjI7YnJlYWt9cz1rbihyLnByb3RlY3RlZCksZS5wcmV2PTE1LG89SlNPTi5wYXJzZShibi5kZWNvZGUocykpLGUubmV4dD0yMjticmVhaztjYXNlIDE5OnRocm93IGUucHJldj0xOSxlLnQwPWUuY2F0Y2goMTUpLG5ldyBUbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaXMgaW52YWxpZCIpO2Nhc2UgMjI6aWYoRm4obyxyLmhlYWRlcikpe2UubmV4dD0yNDticmVha310aHJvdyBuZXcgVG4oIkpXUyBQcm90ZWN0ZWQgYW5kIEpXUyBVbnByb3RlY3RlZCBIZWFkZXIgUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgZGlzam9pbnQiKTtjYXNlIDI0OmlmKHU9dCh0KHt9LG8pLHIuaGVhZGVyKSxjPSRuKFRuLG5ldyBNYXAoW1siYjY0IiwhMF1dKSxudWxsPT1hP3ZvaWQgMDphLmNyaXQsbyx1KSxmPSEwLCFjLmhhcygiYjY0Iikpe2UubmV4dD0zMTticmVha31pZigiYm9vbGVhbiI9PXR5cGVvZihmPW8uYjY0KSl7ZS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBUbignVGhlICJiNjQiIChiYXNlNjR1cmwtZW5jb2RlIHBheWxvYWQpIEhlYWRlciBQYXJhbWV0ZXIgbXVzdCBiZSBhIGJvb2xlYW4nKTtjYXNlIDMxOmlmKCJzdHJpbmciPT10eXBlb2YobD11LmFsZykmJmwpe2UubmV4dD0zNDticmVha310aHJvdyBuZXcgVG4oJ0pXUyAiYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG1pc3Npbmcgb3IgaW52YWxpZCcpO2Nhc2UgMzQ6aWYoIShoPWEmJlpuKCJhbGdvcml0aG1zIixhLmFsZ29yaXRobXMpKXx8aC5oYXMobCkpe2UubmV4dD0zNzticmVha310aHJvdyBuZXcgU24oJyJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbm90IGFsbG93ZWQnKTtjYXNlIDM3OmlmKCFmKXtlLm5leHQ9NDI7YnJlYWt9aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQpe2UubmV4dD00MDticmVha310aHJvdyBuZXcgVG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmciKTtjYXNlIDQwOmUubmV4dD00NDticmVhaztjYXNlIDQyOmlmKCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkfHxyLnBheWxvYWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtlLm5leHQ9NDQ7YnJlYWt9dGhyb3cgbmV3IFRuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIFVpbnQ4QXJyYXkgaW5zdGFuY2UiKTtjYXNlIDQ0OmlmKHA9ITEsImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD01MDticmVha31yZXR1cm4gZS5uZXh0PTQ4LG4obyxyKTtjYXNlIDQ4Om49ZS5zZW50LHA9ITA7Y2FzZSA1MDpyZXR1cm4gWG4obCxuLCJ2ZXJpZnkiKSxkPXduKHluLmVuY29kZShudWxsIT09KGk9ci5wcm90ZWN0ZWQpJiZ2b2lkIDAhPT1pP2k6IiIpLHluLmVuY29kZSgiLiIpLCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkP3luLmVuY29kZShyLnBheWxvYWQpOnIucGF5bG9hZCksdj1rbihyLnNpZ25hdHVyZSksZS5uZXh0PTU1LHRhKGwsbix2LGQpO2Nhc2UgNTU6aWYoZS5zZW50KXtlLm5leHQ9NTg7YnJlYWt9dGhyb3cgbmV3IERuO2Nhc2UgNTg6aWYoZz1mP2tuKHIucGF5bG9hZCk6InN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/eW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkLG09e3BheWxvYWQ6Z30sdm9pZCAwIT09ci5wcm90ZWN0ZWQmJihtLnByb3RlY3RlZEhlYWRlcj1vKSx2b2lkIDAhPT1yLmhlYWRlciYmKG0udW5wcm90ZWN0ZWRIZWFkZXI9ci5oZWFkZXIpLCFwKXtlLm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxtKSx7fSx7a2V5Om59KSk7Y2FzZSA2NDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzE1LDE5XV0pfSkpKSxuYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYWEoZSx0LHIpe3JldHVybiBpYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaWEoKXtyZXR1cm4oaWE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIGksbyxzLHUsYyxmO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYociBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihyPWJuLmRlY29kZShyKSksInN0cmluZyI9PXR5cGVvZiByKXtlLm5leHQ9MzticmVha310aHJvdyBuZXcgVG4oIkNvbXBhY3QgSldTIG11c3QgYmUgYSBzdHJpbmcgb3IgVWludDhBcnJheSIpO2Nhc2UgMzppZihpPXIuc3BsaXQoIi4iKSxvPWlbMF0scz1pWzFdLHU9aVsyXSwzPT09aS5sZW5ndGgpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBUbigiSW52YWxpZCBDb21wYWN0IEpXUyIpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgscmEoe3BheWxvYWQ6cyxwcm90ZWN0ZWQ6byxzaWduYXR1cmU6dX0sbixhKTtjYXNlIDg6aWYoYz1lLnNlbnQsZj17cGF5bG9hZDpjLnBheWxvYWQscHJvdGVjdGVkSGVhZGVyOmMucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sZikse30se2tleTpjLmtleX0pKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixmKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG9hPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmZsb29yKGUuZ2V0VGltZSgpLzFlMyl9LHNhPTg2NDAwLHVhPS9eKFxkK3xcZCtcLlxkKykgPyhzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpJC9pLGNhPWZ1bmN0aW9uKGUpe3ZhciB0PXVhLmV4ZWMoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCB0aW1lIHBlcmlvZCBmb3JtYXQiKTt2YXIgcj1wYXJzZUZsb2F0KHRbMV0pO3N3aXRjaCh0WzJdLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2VjIjpjYXNlInNlY3MiOmNhc2Uic2Vjb25kIjpjYXNlInNlY29uZHMiOmNhc2UicyI6cmV0dXJuIE1hdGgucm91bmQocik7Y2FzZSJtaW51dGUiOmNhc2UibWludXRlcyI6Y2FzZSJtaW4iOmNhc2UibWlucyI6Y2FzZSJtIjpyZXR1cm4gTWF0aC5yb3VuZCg2MCpyKTtjYXNlImhvdXIiOmNhc2UiaG91cnMiOmNhc2UiaHIiOmNhc2UiaHJzIjpjYXNlImgiOnJldHVybiBNYXRoLnJvdW5kKDM2MDAqcik7Y2FzZSJkYXkiOmNhc2UiZGF5cyI6Y2FzZSJkIjpyZXR1cm4gTWF0aC5yb3VuZChyKnNhKTtjYXNlIndlZWsiOmNhc2Uid2Vla3MiOmNhc2UidyI6cmV0dXJuIE1hdGgucm91bmQoNjA0ODAwKnIpO2RlZmF1bHQ6cmV0dXJuIE1hdGgucm91bmQoMzE1NTc2MDAqcil9fSxmYT1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15hcHBsaWNhdGlvblwvLywiIil9LGxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QuaW5jbHVkZXMoZSk6ISFBcnJheS5pc0FycmF5KGUpJiZ0LnNvbWUoU2V0LnByb3RvdHlwZS5oYXMuYmluZChuZXcgU2V0KGUpKSl9LGhhPWZ1bmN0aW9uKGUsdCl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30saT1hLnR5cDtpZihpJiYoInN0cmluZyIhPXR5cGVvZiBlLnR5cHx8ZmEoZS50eXApIT09ZmEoaSkpKXRocm93IG5ldyBfbigndW5leHBlY3RlZCAidHlwIiBKV1QgaGVhZGVyIHZhbHVlJywidHlwIiwiY2hlY2tfZmFpbGVkIik7dHJ5e249SlNPTi5wYXJzZShibi5kZWNvZGUodCkpfWNhdGNoKGUpe31pZighSm4obikpdGhyb3cgbmV3IEFuKCJKV1QgQ2xhaW1zIFNldCBtdXN0IGJlIGEgdG9wLWxldmVsIEpTT04gb2JqZWN0Iik7dmFyIG89YS5pc3N1ZXI7aWYobyYmIShBcnJheS5pc0FycmF5KG8pP286W29dKS5pbmNsdWRlcyhuLmlzcykpdGhyb3cgbmV3IF9uKCd1bmV4cGVjdGVkICJpc3MiIGNsYWltIHZhbHVlJywiaXNzIiwiY2hlY2tfZmFpbGVkIik7dmFyIHM9YS5zdWJqZWN0O2lmKHMmJm4uc3ViIT09cyl0aHJvdyBuZXcgX24oJ3VuZXhwZWN0ZWQgInN1YiIgY2xhaW0gdmFsdWUnLCJzdWIiLCJjaGVja19mYWlsZWQiKTt2YXIgdSxjPWEuYXVkaWVuY2U7aWYoYyYmIWxhKG4uYXVkLCJzdHJpbmciPT10eXBlb2YgYz9bY106YykpdGhyb3cgbmV3IF9uKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKHIoYS5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjp1PWNhKGEuY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjp1PWEuY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOnU9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgZj1hLmN1cnJlbnREYXRlLGw9b2EoZnx8bmV3IERhdGUpO2lmKHZvaWQgMCE9PW4uaWF0fHxhLm1heFRva2VuQWdlKXtpZigibnVtYmVyIiE9dHlwZW9mIG4uaWF0KXRocm93IG5ldyBfbignImlhdCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImlhdCIsImludmFsaWQiKTtpZih2b2lkIDA9PT1uLmV4cCYmbi5pYXQ+bCt1KXRocm93IG5ldyBfbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfWlmKHZvaWQgMCE9PW4ubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIG4ubmJmKXRocm93IG5ldyBfbignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihuLm5iZj5sK3UpdGhyb3cgbmV3IF9uKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09bi5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5leHApdGhyb3cgbmV3IF9uKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKG4uZXhwPD1sLXUpdGhyb3cgbmV3IHhuKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoYS5tYXhUb2tlbkFnZSl7dmFyIGg9bC1uLmlhdCxwPSJudW1iZXIiPT10eXBlb2YgYS5tYXhUb2tlbkFnZT9hLm1heFRva2VuQWdlOmNhKGEubWF4VG9rZW5BZ2UpO2lmKGgtdT5wKXRocm93IG5ldyB4bignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAodG9vIGZhciBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKTtpZihoPDAtdSl0aHJvdyBuZXcgX24oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1yZXR1cm4gbn07ZnVuY3Rpb24gcGEoKXtyZXR1cm4ocGE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIGksbyxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsYWEocixuLGEpO2Nhc2UgMjppZihvPWUuc2VudCwhKG51bGw9PT0oaT1vLnByb3RlY3RlZEhlYWRlci5jcml0KXx8dm9pZCAwPT09aT92b2lkIDA6aS5pbmNsdWRlcygiYjY0IikpfHwhMSE9PW8ucHJvdGVjdGVkSGVhZGVyLmI2NCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IEFuKCJKV1RzIE1VU1QgTk9UIHVzZSB1bmVuY29kZWQgcGF5bG9hZCIpO2Nhc2UgNTppZihzPWhhKG8ucHJvdGVjdGVkSGVhZGVyLG8ucGF5bG9hZCxhKSx1PXtwYXlsb2FkOnMscHJvdGVjdGVkSGVhZGVyOm8ucHJvdGVjdGVkSGVhZGVyfSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSx1KSx7fSx7a2V5Om8ua2V5fSkpO2Nhc2UgOTpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGRhKGUpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIGUmJmUuc2xpY2UoMCwyKSl7Y2FzZSJSUyI6Y2FzZSJQUyI6cmV0dXJuIlJTQSI7Y2FzZSJFUyI6cmV0dXJuIkVDIjtjYXNlIkVkIjpyZXR1cm4iT0tQIjtkZWZhdWx0OnRocm93IG5ldyBFbignVW5zdXBwb3J0ZWQgImFsZyIgdmFsdWUgZm9yIGEgSlNPTiBXZWIgS2V5IFNldCcpfX1mdW5jdGlvbiB2YShlKXtyZXR1cm4gSm4oZSl9dmFyIGdhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtpZihpKHRoaXMsZSksdGhpcy5fY2FjaGVkPW5ldyBXZWFrTWFwLCFmdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PT1yKGUpJiZBcnJheS5pc0FycmF5KGUua2V5cykmJmUua2V5cy5ldmVyeSh2YSl9KHQpKXRocm93IG5ldyBDbigiSlNPTiBXZWIgS2V5IFNldCBtYWxmb3JtZWQiKTt2YXIgbjt0aGlzLl9qd2tzPShuPXQsImZ1bmN0aW9uIj09dHlwZW9mIHN0cnVjdHVyZWRDbG9uZT9zdHJ1Y3R1cmVkQ2xvbmUobik6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuKSkpfXZhciBuO3JldHVybiBzKGUsW3trZXk6ImdldEtleSIsdmFsdWU6KG49YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4pe3ZhciBhLGksbyxzLHUsYyxmLGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihhPXQodCh7fSxyKSxuLmhlYWRlciksaT1hLmFsZyxvPWEua2lkLHM9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rdHk9PT1kYShpKTtpZih0JiYic3RyaW5nIj09dHlwZW9mIG8mJih0PW89PT1lLmtpZCksdCYmInN0cmluZyI9PXR5cGVvZiBlLmFsZyYmKHQ9aT09PWUuYWxnKSx0JiYic3RyaW5nIj09dHlwZW9mIGUudXNlJiYodD0ic2lnIj09PWUudXNlKSx0JiZBcnJheS5pc0FycmF5KGUua2V5X29wcykmJih0PWUua2V5X29wcy5pbmNsdWRlcygidmVyaWZ5IikpLHQmJiJFZERTQSI9PT1pJiYodD0iRWQyNTUxOSI9PT1lLmNydnx8IkVkNDQ4Ij09PWUuY3J2KSx0KXN3aXRjaChpKXtjYXNlIkVTMjU2Ijp0PSJQLTI1NiI9PT1lLmNydjticmVhaztjYXNlIkVTMjU2SyI6dD0ic2VjcDI1NmsxIj09PWUuY3J2O2JyZWFrO2Nhc2UiRVMzODQiOnQ9IlAtMzg0Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVM1MTIiOnQ9IlAtNTIxIj09PWUuY3J2fXJldHVybiB0fSkpLHU9c1swXSwwIT09KGM9cy5sZW5ndGgpKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgUG47Y2FzZSA3OmlmKDE9PT1jKXtlLm5leHQ9OTticmVha310aHJvdyBuZXcgT247Y2FzZSA5OmlmKHZvaWQgMCE9PShmPXRoaXMuX2NhY2hlZC5nZXQodSl8fHRoaXMuX2NhY2hlZC5zZXQodSx7fSkuZ2V0KHUpKVtpXSl7ZS5uZXh0PTE3O2JyZWFrfXJldHVybiBlLm5leHQ9MTMsVm4odCh0KHt9LHUpLHt9LHtleHQ6ITB9KSxpKTtjYXNlIDEzOmlmKCEoKGw9ZS5zZW50KWluc3RhbmNlb2YgVWludDhBcnJheXx8InB1YmxpYyIhPT1sLnR5cGUpKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IENuKCJKU09OIFdlYiBLZXkgU2V0IG1lbWJlcnMgbXVzdCBiZSBwdWJsaWMga2V5cyIpO2Nhc2UgMTY6ZltpXT1sO2Nhc2UgMTc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGZbaV0pO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLGV9KCk7dmFyIG1hPXtleHBvcnRzOnt9fSx5YT17ZXhwb3J0czp7fX0sYmE9Vihybik7IWZ1bmN0aW9uKGUsdCl7dmFyIHI9YmEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIGkoZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9aSksaS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLGkpLGkuZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxpLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0saS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxpLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fSh5YSx5YS5leHBvcnRzKTt2YXIgd2E9NjU1MzYsa2E9NDI5NDk2NzI5NTt2YXIgUmE9eWEuZXhwb3J0cy5CdWZmZXIsX2E9ei5jcnlwdG98fHoubXNDcnlwdG87X2EmJl9hLmdldFJhbmRvbVZhbHVlcz9tYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT5rYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPVJhLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPndhKWZvcih2YXIgbj0wO248ZTtuKz13YSlfYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rd2EpKTtlbHNlIF9hLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gamUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTptYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgeGEsU2E9bWEuZXhwb3J0cyxFYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gcG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG1yLmZyb20odm4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gU2EoZSl9fSx7a2V5OiJwYXJzZUp3ayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgodD17a2V5czpbZV19LGdhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgZ2EodCkpKSk7dmFyIHR9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8pe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIHBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSx0LHthbGdvcml0aG1zOnIsYXVkaWVuY2U6bixjbG9ja1RvbGVyYW5jZTpvLGlzc3VlcjphLHN1YmplY3Q6aX0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSghMCl9KSl9fV0pLGV9KCksVGE9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsaSxvLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSx5LHcsayx4LFMsRSxULEEsQyxQLE8sRCxJLFUsSCxMO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9bmV3IHJyLG49bmV3IEVhLGE9bmV3IE4ocixuKSx0Lm5leHQ9NSxhLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKGk9bmV3IEooYSksbz1hLmdldERhdGFMYXllcigpLHM9dHIuZ2V0SW5zdGFuY2UoKSx1PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighT2JqZWN0LmFzc2lnbih7YXR0YWNoVG9rZW46ITB9LGUpLmF0dGFjaFRva2VuKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQudDA9T2JqZWN0LHQudDE9T2JqZWN0LmFzc2lnbih7fSxlLmhlYWRlcnMpLHQudDI9IkJlYXJlciAiLHQubmV4dD03LGEuZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDc6dC50Mz10LnNlbnQsdC50ND10LnQyLmNvbmNhdC5jYWxsKHQudDIsdC50MyksdC50NT17QXV0aG9yaXphdGlvbjp0LnQ0fSxlLmhlYWRlcnM9dC50MC5hc3NpZ24uY2FsbCh0LnQwLHQudDEsdC50NSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdC50MD1udWxsPT1zP3ZvaWQgMDpzLmluaXQsIXQudDApe3QubmV4dD0xMzticmVha31yZXR1cm4gdC5uZXh0PTEzLHMuaW5pdCghMCx1KTtjYXNlIDEzOnJldHVybiBjPWZ1bmN0aW9uKGUpeyhudWxsPT1zP3ZvaWQgMDpzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKGUpfSxmPWZ1bmN0aW9uKGUpeyhudWxsPT1zP3ZvaWQgMDpzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKSYmcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKX0sbD1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSYmcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKGUpfSxoPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLGksdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBpPSExLHQubmV4dD0zLG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpyZXR1cm4gdT10LnNlbnQsYz0wLHQudDA9W10sdC50MT1iLHQubmV4dD05LG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgOTppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTEzO2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDEzOmlmKCF0LnQzKXt0Lm5leHQ9MTc7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE4OmlmKHQudDY9bj10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yMjticmVha310LnQyPXZvaWQgMCE9PW47Y2FzZSAyMjppZighdC50Mil7dC5uZXh0PTI2O2JyZWFrfXQudDc9bix0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNjp0LnQ3PVtdO2Nhc2UgMjc6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W251bGw9PXU/dm9pZCAwOnUuc2VydmVyT3JpZ2luXSxmPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoYzxmLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZihsPWZbY10sIShudWxsPT09KGE9bnVsbD09ZT92b2lkIDA6ZS51cmwpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN0YXJ0c1dpdGgobCkpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIGk9ITAsdC5hYnJ1cHQoImJyZWFrIiwzOSk7Y2FzZSAzNjpjKyssdC5uZXh0PTMxO2JyZWFrO2Nhc2UgMzk6aWYoIWkpe3QubmV4dD00MzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5yZXF1ZXN0KGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3ZhciByO3JldHVybiA0MDEhPT0obnVsbD09PShyPW51bGw9PXQ/dm9pZCAwOnQucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cykmJihudWxsPT10P3ZvaWQgMDp0LnJlc3BvbnNlKT9Qcm9taXNlLnJlamVjdCh0KTpTKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gcy5yZXF1ZXN0KGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBGKCJXT1JLRVJfQ09SRS1IUi1FUzAxIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdCIsIiIsIiIsZSkpfSkpfSkpKTtjYXNlIDQzOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRigiV09SS0VSX0NPUkUtSFItSVYwMiIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0NDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0scD1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4saSx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITAsdC5uZXh0PTMsby5nZXRDb25maWdEYXRhKCk7Y2FzZSAzOmM9dC5zZW50LGY9UihlKSx0LnByZXY9NSxmLnMoKTtjYXNlIDc6aWYoKGw9Zi5uKCkpLmRvbmUpe3QubmV4dD01MDticmVha31yZXR1cm4gaD1sLnZhbHVlLHA9ITEsZD0wLHQudDA9W10sdC50MT1iLHQubmV4dD0xNSxvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDE1OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTk7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTk6aWYoIXQudDMpe3QubmV4dD0yMzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjQ6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTI4O2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDI4OmlmKCF0LnQyKXt0Lm5leHQ9MzI7YnJlYWt9dC50Nz1uLHQubmV4dD0zMzticmVhaztjYXNlIDMyOnQudDc9W107Y2FzZSAzMzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bbnVsbD09Yz92b2lkIDA6Yy5zZXJ2ZXJPcmlnaW5dLHY9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzc6aWYoIShkPHYubGVuZ3RoKSl7dC5uZXh0PTQ1O2JyZWFrfWlmKGc9dltkXSwhKG51bGw9PT0oaT1oLnVybCl8fHZvaWQgMD09PWk/dm9pZCAwOmkuc3RhcnRzV2l0aChnKSkpe3QubmV4dD00MjticmVha31yZXR1cm4gcD0hMCx0LmFicnVwdCgiYnJlYWsiLDQ1KTtjYXNlIDQyOmQrKyx0Lm5leHQ9Mzc7YnJlYWs7Y2FzZSA0NTppZihwKXt0Lm5leHQ9NDg7YnJlYWt9cmV0dXJuIHU9ITEsdC5hYnJ1cHQoImJyZWFrIiw1MCk7Y2FzZSA0ODp0Lm5leHQ9NzticmVhaztjYXNlIDUwOnQubmV4dD01NTticmVhaztjYXNlIDUyOnQucHJldj01Mix0LnQxMT10LmNhdGNoKDUpLGYuZSh0LnQxMSk7Y2FzZSA1NTpyZXR1cm4gdC5wcmV2PTU1LGYuZigpLHQuZmluaXNoKDU1KTtjYXNlIDU4OmlmKG09W10sIXUpe3QubmV4dD02NDticmVha31yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXttLnB1c2gocy5yZXF1ZXN0KGUpKX0pKSx0LmFicnVwdCgicmV0dXJuIiwobnVsbD09cz92b2lkIDA6cy5hbGwpJiZzLmFsbChtKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gNDAxPT09KG51bGw9PT0odD1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGF0dXMpP2EucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gcy5hbGwmJnMuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBGKCJXT1JLRVJfQ09SRS1IUkEtRVMwMSIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3RBbGwiLCIiLCIiLGUpKX0pKTpQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA2NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEYoIldPUktFUl9DT1JFLUhSQS1JVjAyIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdCIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbNSw1Miw1NSw1OF1dKX0pKSl9LGQ9ZnVuY3Rpb24oKXtzLmVuYWJsZUhhbmRsZXImJnMuZW5hYmxlSGFuZGxlcigpfSx2PWZ1bmN0aW9uKCl7cy5kaXNhYmxlSGFuZGxlciYmcy5kaXNhYmxlSGFuZGxlcigpfSxnPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYS5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixpLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1uZXcgVVJMKGUpLGk9bnVsbCE9PShyPW4uc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSkmJnZvaWQgMCE9PXI/cjoiIix0Lm5leHQ9NCxhLmdldFBLQ0VDb2RlKGkpO2Nhc2UgNDpyZXR1cm4gbz10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6ZSxwa2NlOm99KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxtPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBpLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGkucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHk9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHMoKXt2YXIgdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHMpe2Zvcig7Oylzd2l0Y2gocy5wcmV2PXMubmV4dCl7Y2FzZSAwOnJldHVybiBzLm5leHQ9MixvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6aWYodT1zLnNlbnQsIXJ8fCF1LmVuYWJsZVBLQ0Upe3MubmV4dD02O2JyZWFrfXJldHVybiBzLm5leHQ9NixhLnNldFBLQ0VDb2RlKHIsbnVsbCE9bj9uOiIiKTtjYXNlIDY6aWYoIWUpe3MubmV4dD04O2JyZWFrfXJldHVybiBzLmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RBY2Nlc3NUb2tlbihlLG51bGwhPXQ/dDoiIixudWxsIT1uP246IiciKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxhLmdldEJhc2ljVXNlckluZm8oKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDg6cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBGKCJXT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJ3b3JrZXItY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gcy5zdG9wKCl9fSkscyl9KSkpfSx3PWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBpLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGUubmV4dD0zLGEuc2lnbk91dCgpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LGs9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLGEuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLHMsdSxjLGYsbCxoLHA7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdT0hMCxjPSExLHQubmV4dD00LG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNDppZihmPXQuc2VudCwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD00MjticmVha31yZXR1cm4gdT0hMSxsPTAsdC50MD1bXSx0LnQxPWIsdC5uZXh0PTEyLG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTI6aWYodC50ND1yPXQuc2VudCx0LnQzPW51bGw9PT10LnQ0LHQudDMpe3QubmV4dD0xNjticmVha310LnQzPXZvaWQgMD09PXI7Y2FzZSAxNjppZighdC50Myl7dC5uZXh0PTIwO2JyZWFrfXQudDU9dm9pZCAwLHQubmV4dD0yMTticmVhaztjYXNlIDIwOnQudDU9ci5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAyMTppZih0LnQ2PW49dC50NSx0LnQyPW51bGwhPT10LnQ2LCF0LnQyKXt0Lm5leHQ9MjU7YnJlYWt9dC50Mj12b2lkIDAhPT1uO2Nhc2UgMjU6aWYoIXQudDIpe3QubmV4dD0yOTticmVha310LnQ3PW4sdC5uZXh0PTMwO2JyZWFrO2Nhc2UgMjk6dC50Nz1bXTtjYXNlIDMwOnQudDg9dC50Nyx0LnQ5PSgwLHQudDEpKHQudDgpLHQudDEwPVtudWxsPT1mP3ZvaWQgMDpmLnNlcnZlck9yaWdpbl0saD10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzNDppZighKGw8aC5sZW5ndGgpKXt0Lm5leHQ9NDI7YnJlYWt9aWYocD1oW2xdLCEobnVsbD09PShzPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhcnRzV2l0aChwKSkpe3QubmV4dD0zOTticmVha31yZXR1cm4gYz0hMCx0LmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OmwrKyx0Lm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmby5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEIsSlNPTi5zdHJpbmdpZnkoZSkpLCF1JiYhYyl7dC5uZXh0PTQ3O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBpLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEYoIldPUktFUl9DT1JFLVJDRy1JVjAxIiwid29ya2VyLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCB0b2tlbiBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sUz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsYS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUubmV4dD01LEwoKTtjYXNlIDU6aWYoISh0PWUuc2VudCkpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLm5leHQ9OSx4KHQpO2Nhc2UgOTpyZXR1cm4gaS5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTM6cmV0dXJuIGUucHJldj0xMyxlLnQwPWUuY2F0Y2goMCksZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZS50MCkpO2Nhc2UgMTY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1swLDEzXV0pfSkpKX0sRT1mdW5jdGlvbigpe3JldHVybiBhLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEE9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxDPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTz1mdW5jdGlvbigpe3JldHVybiBhLmdldEFjY2Vzc1Rva2VuKCl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gYS5pc0F1dGhlbnRpY2F0ZWQoKX0sST1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLG8uc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sVT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLGEudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sSD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsby5nZXRDb25maWdEYXRhKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsby5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEIpO2Nhc2UgMjppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLEpTT04ucGFyc2UodCkpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx0LmFicnVwdCgicmV0dXJuIix7ZGlzYWJsZUh0dHBIYW5kbGVyOnYsZW5hYmxlSHR0cEhhbmRsZXI6ZCxnZXRBY2Nlc3NUb2tlbjpPLGdldEF1dGhvcml6YXRpb25VUkw6ZyxnZXRCYXNpY1VzZXJJbmZvOlQsZ2V0Q29uZmlnRGF0YTpILGdldERlY29kZWRJRFRva2VuOkEsZ2V0SURUb2tlbjpDLGdldE9JRENTZXJ2aWNlRW5kcG9pbnRzOlAsZ2V0U2lnbk91dFVSTDprLGh0dHBSZXF1ZXN0OmgsaHR0cFJlcXVlc3RBbGw6cCxpc0F1dGhlbnRpY2F0ZWQ6RCxyZWZyZXNoQWNjZXNzVG9rZW46UyxyZXF1ZXN0QWNjZXNzVG9rZW46eSxyZXF1ZXN0Q3VzdG9tR3JhbnQ6eCxyZXZva2VBY2Nlc3NUb2tlbjpFLHNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s6bCxzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s6YyxzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjazpmLHNldFNlc3Npb25TdGF0ZTpJLHNpZ25PdXQ6dyxzdGFydEF1dG9SZWZyZXNoVG9rZW46bSx1cGRhdGVDb25maWc6VX0pO2Nhc2UgMzk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEFhPXNlbGY7QWEub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPWUucG9ydHM7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbixhLGksbyxzLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzPXJbMF0sdC50eXBlPT09S3x8eGEpe2UubmV4dD00O2JyZWFrfXJldHVybiBzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgRigiQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiY2xpZW50LndvcmtlciIsdC50eXBlLCJUaGUgd2ViIHdvcmtlciBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiIsIlRoZSBpbml0aWFsaXplIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGNhbiBiZSBjYXJyaWVkIG91dC4iKSkpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6ZS50MD10LnR5cGUsZS5uZXh0PWUudDA9PT1LPzc6ImdldF9hdXRoX3VybCI9PT1lLnQwPzIyOiJyZXF1ZXN0X2dldF90b2tlbiI9PT1lLnQwPzI0OiJodHRwLXJlcXVlc3QiPT09ZS50MD8yNjoiaHR0cC1yZXF1ZXN0LWFsbCI9PT1lLnQwPzI4OiJzaWduLW91dCI9PT1lLnQwPzMwOiJyZXF1ZXN0LWN1c3RvbS1ncmFudCI9PT1lLnQwPzQ0OiJyZXZva2UtYWNjZXNzLXRva2VuIj09PWUudDA/NDY6ImdldC1vaWRjLXNlcnZpY2UtZW5kcG9pbnRzIj09PWUudDA/NDg6ImdldC1iYXNpYy11c2VyLWluZm8iPT09ZS50MD82MjoiZ2V0LWRlY29kZWQtaWQtdG9rZW4iPT09ZS50MD83NjoiZ2V0X2lkX3Rva2VuIj09PWUudDA/OTA6ImVuYWJsZV9odHRwX2hhbmRsZXIiPT09ZS50MD8xMDQ6ImRpc2FibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA3OiJpc19hdXRoZW50aWNhdGVkIj09PWUudDA/MTEwOiJnZXRfc2lnbl9vdXRfdXJsIj09PWUudDA/MTI0OiJyZWZyZXNoX2FjY2Vzcy10b2tlbiI9PT1lLnQwPzEzODoic3RhcnRfYXV0b19yZWZyZXNoX3Rva2VuIj09PWUudDA/MTUyOiJzZXRfc2Vzc2lvbl9zdGF0ZSI9PT1lLnQwPzE1NDoidXBkYXRlX2NvbmZpZyI9PT1lLnQwPzE2ODoiZ2V0X2NvbmZpZ19kYXRhIj09PWUudDA/MTgyOjE5NjticmVhaztjYXNlIDc6cmV0dXJuIGUucHJldj03LHU9T2JqZWN0LmFzc2lnbih7fSx0LmRhdGEpLGUubmV4dD0xMSxUYSh1KTtjYXNlIDExOih4YT1lLnNlbnQpLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soT2EpLHhhLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhDYSkseGEuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soUGEpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUubmV4dD0yMTticmVhaztjYXNlIDE4OmUucHJldj0xOCxlLnQxPWUuY2F0Y2goNykscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MSkpO2Nhc2UgMjE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDIyOnJldHVybiB4YS5nZXRBdXRob3JpemF0aW9uVVJMKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIHhhLnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KG49bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb2RlLG51bGw9PT0oYT1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnNlc3Npb25TdGF0ZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5wa2NlLG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0YXRlKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyNjpyZXR1cm4geGEuaHR0cFJlcXVlc3QodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyODpyZXR1cm4geGEuaHR0cFJlcXVlc3RBbGwodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gZS5wcmV2PTMwLGUudDI9cyxlLnQzPVcsZS5uZXh0PTM1LHhhLnNpZ25PdXQoKTtjYXNlIDM1OmUudDQ9ZS5zZW50LGUudDU9ZS50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MyxlLnQ0KSxlLnQyLnBvc3RNZXNzYWdlLmNhbGwoZS50MixlLnQ1KSxlLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDplLnByZXY9NDAsZS50Nj1lLmNhdGNoKDMwKSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ2KSk7Y2FzZSA0MzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDQ6cmV0dXJuIHhhLnJlcXVlc3RDdXN0b21HcmFudCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ2OnJldHVybiB4YS5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiBlLnByZXY9NDgsZS50Nz1zLGUudDg9VyxlLm5leHQ9NTMseGEuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOmUudDk9ZS5zZW50LGUudDEwPWUudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDgsZS50OSksZS50Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDcsZS50MTApLGUubmV4dD02MTticmVhaztjYXNlIDU4OmUucHJldj01OCxlLnQxMT1lLmNhdGNoKDQ4KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQxMSkpO2Nhc2UgNjE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDYyOnJldHVybiBlLnByZXY9NjIsZS50MTI9cyxlLnQxMz1XLGUubmV4dD02Nyx4YS5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSA2NzplLnQxND1lLnNlbnQsZS50MTU9ZS50MTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDEzLGUudDE0KSxlLnQxMi5wb3N0TWVzc2FnZS5jYWxsKGUudDEyLGUudDE1KSxlLm5leHQ9NzU7YnJlYWs7Y2FzZSA3MjplLnByZXY9NzIsZS50MTY9ZS5jYXRjaCg2Mikscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTYpKTtjYXNlIDc1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA3NjpyZXR1cm4gZS5wcmV2PTc2LGUudDE3PXMsZS50MTg9VyxlLm5leHQ9ODEseGEuZ2V0RGVjb2RlZElEVG9rZW4oKTtjYXNlIDgxOmUudDE5PWUuc2VudCxlLnQyMD1lLnQxOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MTgsZS50MTkpLGUudDE3LnBvc3RNZXNzYWdlLmNhbGwoZS50MTcsZS50MjApLGUubmV4dD04OTticmVhaztjYXNlIDg2OmUucHJldj04NixlLnQyMT1lLmNhdGNoKDc2KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyMSkpO2Nhc2UgODk6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiBlLnByZXY9OTAsZS50MjI9cyxlLnQyMz1XLGUubmV4dD05NSx4YS5nZXRJRFRva2VuKCk7Y2FzZSA5NTplLnQyND1lLnNlbnQsZS50MjU9ZS50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDIzLGUudDI0KSxlLnQyMi5wb3N0TWVzc2FnZS5jYWxsKGUudDIyLGUudDI1KSxlLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOmUucHJldj0xMDAsZS50MjY9ZS5jYXRjaCg5MCkscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjYpKTtjYXNlIDEwMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTA0OnJldHVybiB4YS5lbmFibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNzpyZXR1cm4geGEuZGlzYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTEwOnJldHVybiBlLnByZXY9MTEwLGUudDI3PXMsZS50Mjg9VyxlLm5leHQ9MTE1LHhhLmlzQXV0aGVudGljYXRlZCgpO2Nhc2UgMTE1OmUudDI5PWUuc2VudCxlLnQzMD1lLnQyOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MjgsZS50MjkpLGUudDI3LnBvc3RNZXNzYWdlLmNhbGwoZS50MjcsZS50MzApLGUubmV4dD0xMjM7YnJlYWs7Y2FzZSAxMjA6ZS5wcmV2PTEyMCxlLnQzMT1lLmNhdGNoKDExMCkscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzEpKTtjYXNlIDEyMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTI0OnJldHVybiBlLnByZXY9MTI0LGUudDMyPXMsZS50MzM9VyxlLm5leHQ9MTI5LHhhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDEyOTplLnQzND1lLnNlbnQsZS50MzU9ZS50MzMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMzLGUudDM0KSxlLnQzMi5wb3N0TWVzc2FnZS5jYWxsKGUudDMyLGUudDM1KSxlLm5leHQ9MTM3O2JyZWFrO2Nhc2UgMTM0OmUucHJldj0xMzQsZS50MzY9ZS5jYXRjaCgxMjQpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEzODpyZXR1cm4gZS5wcmV2PTEzOCxlLnQzNz1zLGUudDM4PVcsZS5uZXh0PTE0Myx4YS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzplLnQzOT1lLnNlbnQsZS50NDA9ZS50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDM4LGUudDM5KSxlLnQzNy5wb3N0TWVzc2FnZS5jYWxsKGUudDM3LGUudDQwKSxlLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OmUucHJldj0xNDgsZS50NDE9ZS5jYXRjaCgxMzgpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDQxKSk7Y2FzZSAxNTE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1Mjp0cnl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoeGEuc3RhcnRBdXRvUmVmcmVzaFRva2VuKCkpKX1jYXRjaChlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1NDpyZXR1cm4gZS5wcmV2PTE1NCxlLnQ0Mj1zLGUudDQzPVcsZS5uZXh0PTE1OSx4YS5zZXRTZXNzaW9uU3RhdGUobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE1OTplLnQ0ND1lLnNlbnQsZS50NDU9ZS50NDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQzLGUudDQ0KSxlLnQ0Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDQyLGUudDQ1KSxlLm5leHQ9MTY3O2JyZWFrO2Nhc2UgMTY0OmUucHJldj0xNjQsZS50NDY9ZS5jYXRjaCgxNTQpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDQ2KSk7Y2FzZSAxNjc6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE2ODpyZXR1cm4gZS5wcmV2PTE2OCxlLnQ0Nz1zLGUudDQ4PVcsZS5uZXh0PTE3Myx4YS51cGRhdGVDb25maWcobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE3MzplLnQ0OT1lLnNlbnQsZS50NTA9ZS50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQ4LGUudDQ5KSxlLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDQ3LGUudDUwKSxlLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OmUucHJldj0xNzgsZS50NTE9ZS5jYXRjaCgxNjgpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDUxKSk7Y2FzZSAxODE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE4MjpyZXR1cm4gZS5wcmV2PTE4MixlLnQ1Mj1zLGUudDUzPVcsZS5uZXh0PTE4Nyx4YS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxODc6ZS50NTQ9ZS5zZW50LGUudDU1PWUudDUzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ1MyxlLnQ1NCksZS50NTIucG9zdE1lc3NhZ2UuY2FsbChlLnQ1MixlLnQ1NSksZS5uZXh0PTE5NTticmVhaztjYXNlIDE5MjplLnByZXY9MTkyLGUudDU2PWUuY2F0Y2goMTgyKSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1NikpO2Nhc2UgMTk1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxOTY6bnVsbD09c3x8cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IEYoIkNMSUVOVF9XT1JLRVItT05NU0ctSVYwMiIsImNsaWVudC53b3JrZXIiLCJvbm1lc3NhZ2UiLCJUaGUgbWVzc2FnZSB0eXBlIGlzIGludmFsaWQuIiwiVGhlIG1lc3NhZ2UgdHlwZSBwcm92aWRlZCwgIi5jb25jYXQodC50eXBlLCIsIGlzIGludmFsaWQuIikpKSk7Y2FzZSAxOTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s3LDE4XSxbMzAsNDBdLFs0OCw1OF0sWzYyLDcyXSxbNzYsODZdLFs5MCwxMDBdLFsxMTAsMTIwXSxbMTI0LDEzNF0sWzEzOCwxNDhdLFsxNTQsMTY0XSxbMTY4LDE3OF0sWzE4MiwxOTJdXSl9KSkpfTt2YXIgQ2E9ZnVuY3Rpb24oKXtBYS5wb3N0TWVzc2FnZSh7dHlwZToicmVxdWVzdC1zdGFydCJ9KX0sUGE9ZnVuY3Rpb24oZSl7QWEucG9zdE1lc3NhZ2Uoe2RhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSx0eXBlOiJyZXF1ZXN0LXN1Y2Nlc3MifSl9LE9hPWZ1bmN0aW9uKCl7QWEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfTtyZXR1cm57fX0oKTsKCg==",kB=null,UB=!1,function(e){return CB=CB||xB(HB,kB,UB),new Worker(CB,e)}),TB=function(t){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,d,s,m,h,b,Z,p,y,X,f,G,V,I,W,g,v,S,R,Y,J,K,L,N,x,H,k,U,C;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=null!==(r=null==t?void 0:t.requestTimeout)&&void 0!==r?r:6e4,a=!0,o=!1,n.next=5,qj((function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:pj},e.prev=1,e.next=4,d(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",_j.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),t.storage,(function(e){return y(e)}));case 5:return l=n.sent,u=new wB,d=function(e){var t=new MessageChannel;return u.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new Oj("WEB_WORKER_CLIENT-COM-TO-01","web-worker-client","communicate","Operation timed out.","No response was received from the web worker for "+c/1e3+" since dispatching the request"))}),c);return t.port1.onmessage=function(t){var i=t.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},s=function(e){return d({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(o=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},m=function(e){return d({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},h=function(e){return d({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},b=function(){return d({type:"enable_http_handler"}).then((function(){return a=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},Z=function(){return d({type:"disable_http_handler"}).then((function(){return a=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(){return i||(i={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),u.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==i?void 0:i.requestFinishCallback)&&(null==i||i.requestFinishCallback());break;case"request-start":(null==i?void 0:i.requestStartCallback)&&(null==i||i.requestStartCallback());break;case"request-success":(null==i?void 0:i.requestSuccessCallback)&&(null==i||i.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},d({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},y=function(e){return d({data:e,type:"set_session_state"})},X=function(){return d({type:"start_auto_refresh_token"})},f=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S();case 2:return i=e.sent,e.next=5,R();case 5:c=e.sent,l.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Y();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,V(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},G=function(){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,a,o,u,s,m,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:if(r=e.sent,!_j.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(wj),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(Tj),a={data:{prompt:"none",state:jj},type:yj},e.prev=10,e.next=13,d(a);case 13:o=e.sent,u=oj.extractPKCEKeyFromStateParam(null!==(n=new URL(o.authorizationURL).searchParams.get(ij))&&void 0!==n?n:""),o.pkce&&r.enablePKCE&&_j.setPKCE(u,o.pkce),s=o.authorizationURL,(m=new URL(s)).searchParams.set("response_mode","query"),h=m.toString(),c.src=h,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,d;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(d=i.data)?void 0:d.type)==fj&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==d?void 0:d.type)==Xj&&(null===(a=null==d?void 0:d.data)||void 0===a?void 0:a.code)&&I(null===(o=null==d?void 0:d.data)||void 0===o?void 0:o.code,null===(l=null==d?void 0:d.data)||void 0===l?void 0:l.sessionState,null===(u=null==d?void 0:d.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},V=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r={data:e,type:yj},t.abrupt("return",d(r).then((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=oj.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(ij))&&void 0!==r?r:""),_j.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},I=function(e,t,n){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,R();case 2:return i=r.sent,c=oj.extractPKCEKeyFromStateParam(n),a={data:{code:e,pkce:i.enablePKCE?_j.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&_j.removePKCE(c),r.abrupt("return",d(a).then((function(e){return d({type:"get_sign_out_url"}).then((function(t){return _j.setSignOutURL(t),i.enableOIDCSessionManagement&&f(),X(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},W=function(t,n,r,i){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,u,d,s,m,h,b,Z,p;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,R();case 2:return d=c.sent,c.next=5,l.receivePromptNoneResponse((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",y(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(s=new URL(window.location.href).searchParams.get(Mj),m=new URL(window.location.href).searchParams.get(Qj),!s){c.next=16;break}return(h=new URL(window.location.href)).searchParams.delete(Mj),h.searchParams.delete(Qj),history.pushState(null,document.title,h.toString()),c.abrupt("return",Promise.reject(new Oj("WEB_WORKER_CLIENT-SI-BE","web-worker-client","signIn",s,null!=m?m:"")));case 16:return c.next=18,L();case 18:if(!c.sent){c.next=23;break}return c.next=21,X();case 21:return d.enableOIDCSessionManagement&&f(),c.abrupt("return",Y());case 23:if((null==d?void 0:d.responseMode)===e.ResponseMode.formPost&&n?(b=n,Z=null!=r?r:"",p=null!=i?i:""):(b=null!==(a=new URL(window.location.href).searchParams.get(ej))&&void 0!==a?a:"",Z=null!==(o=new URL(window.location.href).searchParams.get(tj))&&void 0!==o?o:"",p=null!==(u=new URL(window.location.href).searchParams.get(ij))&&void 0!==u?u:"",_j.removeAuthorizationCode()),!b){c.next=26;break}return c.abrupt("return",I(b,Z,p));case 26:return c.abrupt("return",V(t).then((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,_j.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return c.stop()}}),c)})))},g=function(){return L().then((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||o){t.next=5;break}return n={type:pj},t.abrupt("return",d(n).then((function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,_j.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=_j.getSignOutURL(),t.next=8,_j.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},v=function(){return d({type:"revoke-access-token"}).then((function(e){return l.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return d({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return d({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return d({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return d({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return d({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},L=function(){return d({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},N=function(){return d({type:"refresh_access-token"})},x=function(e){e&&"function"==typeof e&&(i.requestSuccessCallback=e)},H=function(e){e&&"function"==typeof e&&(i.requestErrorCallback=e)},k=function(e){e&&"function"==typeof e&&(i.requestStartCallback=e)},U=function(e){e&&"function"==typeof e&&(i.requestFinishCallback=e)},C=function(e){return OF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,d(c);case 8:i.enableOIDCSessionManagement&&r&&(l.reset(),f());case 9:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:Z,enableHttpHandler:b,getBasicUserInfo:Y,getDecodedIDToken:J,getIDToken:K,getOIDCServiceEndpoints:S,httpRequest:m,httpRequestAll:h,initialize:p,isAuthenticated:L,refreshAccessToken:N,requestCustomGrant:s,revokeAccessToken:v,setHttpRequestErrorCallback:H,setHttpRequestFinishCallback:U,setHttpRequestStartCallback:k,setHttpRequestSuccessCallback:x,signIn:W,signOut:g,trySignInSilently:G,updateConfig:C});case 36:case"end":return n.stop()}}),n)})))},FB={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:e.Storage.SessionStorage},jB="primaryInstance",zB=function(){function t(e){u(this,t),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=e}return s(t,[{key:"_isInitialized",value:function(){return OF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return OF(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}},{key:"initialize",value:function(t){var n;return OF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o=this;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(this._storage=null!==(n=t.storage)&&void 0!==n?n:e.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===e.Storage.WebWorker){r.next=15;break}if(this._client){r.next=10;break}return i=t,c=Object.assign({},FB),r.next=9,NB(Object.assign(Object.assign({},c),i));case 9:this._client=r.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),r.abrupt("return",Promise.resolve(!0));case 15:if(this._client){r.next=21;break}return a=t,r.next=19,TB(Object.assign(Object.assign({},FB),a));case 19:return this._client=r.sent,r.abrupt("return",this._client.initialize().then((function(){return o._onInitialize&&o._onInitialize(!0),o._initialized=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)})));case 21:return r.abrupt("return",Promise.resolve(!0));case 22:case"end":return r.stop()}}),r,this)})))}},{key:"getBasicUserInfo",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getBasicUserInfo());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"signIn",value:function(e,t,n){var r;return OF(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._isInitialized();case 2:if(_j.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){i.next=4;break}return i.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,i.abrupt("return",null===(r=this._client)||void 0===r?void 0:r.signIn(e,t,n).then((function(e){return c._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&c._onSignInCallback(e),e})));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"trySignInSilently",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(!_j.wasSignInCalled()){t.next=4;break}return t.abrupt("return");case 4:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.trySignInSilently().then((function(e){if(n._onSignInCallback&&e){var t=e;(t.allowedScopes||t.displayName||t.email||t.username)&&n._onSignInCallback(t)}return e})));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"signOut",value:function(){var e,t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(e=this._client)||void 0===e?void 0:e.signOut();case 4:if(n.t1=t=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==t;case 8:if(!n.t0){n.next=12;break}n.t2=t,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequest",value:function(e){var t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequest(e));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequestAll",value:function(e){var t;return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequestAll(e));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"requestCustomGrant",value:function(e){var t,n;return OF(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(e.id){r.next=9;break}return r.abrupt("return",Promise.reject(new Oj("AUTH_CLIENT-RCG-NF01","client","requestCustomGrant","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(t=this._client)||void 0===t?void 0:t.requestCustomGrant(e);case 11:return i=r.sent,(c=this._onCustomGrant.get(e.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(e.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}},{key:"revokeAccessToken",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.next=4,null===(e=this._client)||void 0===e?void 0:e.revokeAccessToken();case 4:if(n=t.sent,t.t0=this._onEndUserSession,!t.t0){t.next=9;break}return t.next=9,this._onEndUserSession(n);case 9:return t.abrupt("return",n);case 10:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getOIDCServiceEndpoints());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==e.Storage.WebWorker)return this._client.getHttpClient();throw new Oj("AUTH_CLIENT-GHC-IV01","client","getHttpClient","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new Oj("AUTH_CLIENT-GHC-NF02","client","getHttpClient","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}},{key:"getDecodedIDToken",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getDecodedIDToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getIDToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(e.Storage.WebWorker,e.Storage.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new Oj("AUTH_CLIENT-GAT-IV01","client","getAccessToken","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,t.abrupt("return",n.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.refreshAccessToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"isAuthenticated",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.isAuthenticated());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"on",value:function(t,n,r){var i,c,a,o;return OF(this,void 0,void 0,regeneratorRuntime.mark((function l(){var u;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){l.next=32;break}l.t0=t,l.next=l.t0===e.Hooks.SignIn?6:l.t0===e.Hooks.SignOut?8:l.t0===e.Hooks.RevokeAccessToken?11:l.t0===e.Hooks.Initialize?13:l.t0===e.Hooks.HttpRequestError?15:l.t0===e.Hooks.HttpRequestFinish?17:l.t0===e.Hooks.HttpRequestStart?19:l.t0===e.Hooks.HttpRequestSuccess?21:l.t0===e.Hooks.CustomGrant?23:l.t0===e.Hooks.SignOutFailed?25:29;break;case 6:return this._onSignInCallback=n,l.abrupt("break",30);case 8:return this._onSignOutCallback=n,_j.isSignOutSuccessful()&&this._onSignOutCallback(),l.abrupt("break",30);case 11:return this._onEndUserSession=n,l.abrupt("break",30);case 13:return this._onInitialize=n,l.abrupt("break",30);case 15:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),l.abrupt("break",30);case 17:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),l.abrupt("break",30);case 19:return null===(a=this._client)||void 0===a||a.setHttpRequestStartCallback(n),l.abrupt("break",30);case 21:return null===(o=this._client)||void 0===o||o.setHttpRequestSuccessCallback(n),l.abrupt("break",30);case 23:return r&&this._onCustomGrant.set(r,n),l.abrupt("break",30);case 25:return this._onSignOutFailedCallback=n,(u=_j.didSignOutFail())&&this._onSignOutFailedCallback(u),l.abrupt("break",30);case 29:throw new Oj("AUTH_CLIENT-ON-IV01","client","on","Invalid hook.","The provided hook is invalid.");case 30:l.next=33;break;case 32:throw new Oj("AUTH_CLIENT-ON-IV02","client","on","Invalid callback function.","The provided callback function is invalid.");case 33:case"end":return l.stop()}}),l,this)})))}},{key:"enableHttpHandler",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.enableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"disableHttpHandler",value:function(){var e;return OF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.disableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"updateConfig",value:function(t){return OF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==e.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(t);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(t);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(e){var n,r;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(r=this._instances)||void 0===r?void 0:r.get(jB))?this._instances.get(jB):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set(jB,new t(jB)),this._instances.get(jB))}}]),t}();zB._instances=new Map;var PB=function(e){h(n,e);var t=V(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).onmessage=function(){return null},e}return s(n)}(X(Worker));return e.AUTHORIZATION_CODE=ej,e.AsgardeoAuthClient=Zj,e.AsgardeoSPAClient=zB,e.AuthenticationUtils=oj,e.CLIENT_ID_TAG="{{clientID}}",e.CLIENT_SECRET_TAG="{{clientSecret}}",e.OIDC_SCOPE="openid",e.PKCE_CODE_VERIFIER="pkce_code_verifier",e.PKCE_SEPARATOR="#",e.REFRESH_TOKEN_TIMER=qF,e.SCOPE_TAG="{{scope}}",e.SESSION_STATE=tj,e.SIGN_OUT_SUCCESS_PARAM=rj,e.SIGN_OUT_URL=nj,e.SPAUtils=_j,e.STATE=ij,e.SUPPORTED_SIGNATURE_ALGORITHMS=$F,e.TOKEN_TAG="{{token}}",e.USERNAME_TAG="{{username}}",e.WebWorkerClass=PB,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
|
|
2
2
|
//# sourceMappingURL=asgardeo-spa.production.min.js.map
|