Skip to content

Instantly share code, notes, and snippets.

@viebel
Created May 5, 2017 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viebel/8b011e4e7db6874a4f8342b0dd70c516 to your computer and use it in GitHub Desktop.
Save viebel/8b011e4e7db6874a4f8342b0dd70c516 to your computer and use it in GitHub Desktop.
requirebin sketch
// Welcome! require() some modules from npm (like you were using browserify)
// and then hit Run Code to run your code on the right side.
// Modules get downloaded from browserify-cdn and bundled in your browser.
const { check, gen, property } = require('testcheck');
const result = check(
property(
gen.int,
x => x - x === 0
)
)
console.log(result)
setTimeout(function(){
;require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"testcheck":[function(require,module,exports){
if(typeof Math.imul == "undefined" || (Math.imul(0xffffffff,5) == 0)) {
Math.imul = function (a, b) {
var ah = (a >>> 16) & 0xffff;
var al = a & 0xffff;
var bh = (b >>> 16) & 0xffff;
var bl = b & 0xffff;
// the shift by 0 fixes the sign on the high part
// the final |0 converts the unsigned value into a signed value
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
}
}
var h;
function ba(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==
b&&"undefined"==typeof a.call)return"object";return b}function ca(a){return a[ea]||(a[ea]=++fa)}var ea="closure_uid_"+(1E9*Math.random()>>>0),fa=0;function ga(a){return/^[\s\xa0]*$/.test(a)}function ia(a){return 1==a.length&&" "<=a&&"~">=a||"€"<=a&&"�">=a};function ja(a,b){for(var c in a)b.call(void 0,a[c],c,a)};function ka(a,b){this.aa=[];this.$a=b;for(var c=!0,d=a.length-1;0<=d;d--){var e=a[d]|0;c&&e==b||(this.aa[d]=e,c=!1)}}var la={};function ma(a){if(-128<=a&&128>a){var b=la[a];if(b)return b}b=new ka([a|0],0>a?-1:0);-128<=a&&128>a&&(la[a]=b);return b}function na(a){if(isNaN(a)||!isFinite(a))return pa;if(0>a)return na(-a).V();for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=qa;return new ka(b,0)}var qa=4294967296,pa=ma(0),ra=ma(1),sa=ma(16777216);h=ka.prototype;
h.oc=function(){return 0<this.aa.length?this.aa[0]:this.$a};h.kb=function(){if(this.ga())return-this.V().kb();for(var a=0,b=1,c=0;c<this.aa.length;c++)var d=ua(this,c),a=a+(0<=d?d:qa+d)*b,b=b*qa;return a};
h.toString=function(a){a=a||10;if(2>a||36<a)throw Error("radix out of range: "+a);if(this.Na())return"0";if(this.ga())return"-"+this.V().toString(a);for(var b=na(Math.pow(a,6)),c=this,d="";;){var e=wa(c,b),f=(c.wb(e.multiply(b)).oc()>>>0).toString(a),c=e;if(c.Na())return f+d;for(;6>f.length;)f="0"+f;d=""+f+d}};function ua(a,b){return 0>b?0:b<a.aa.length?a.aa[b]:a.$a}h.Na=function(){if(0!=this.$a)return!1;for(var a=0;a<this.aa.length;a++)if(0!=this.aa[a])return!1;return!0};
h.ga=function(){return-1==this.$a};h.Ac=function(){return 0==this.aa.length&&-1==this.$a||0<this.aa.length&&0!=(this.aa[0]&1)};h.cb=function(a){if(this.$a!=a.$a)return!1;for(var b=Math.max(this.aa.length,a.aa.length),c=0;c<b;c++)if(ua(this,c)!=ua(a,c))return!1;return!0};h.yc=function(a){return 0<this.compare(a)};h.zc=function(a){return 0<=this.compare(a)};h.gc=function(a){return 0>this.compare(a)};h.Cc=function(a){return 0>=this.compare(a)};
h.compare=function(a){a=this.wb(a);return a.ga()?-1:a.Na()?0:1};h.V=function(){return this.Ec().add(ra)};h.add=function(a){for(var b=Math.max(this.aa.length,a.aa.length),c=[],d=0,e=0;e<=b;e++){var f=d+(ua(this,e)&65535)+(ua(a,e)&65535),g=(f>>>16)+(ua(this,e)>>>16)+(ua(a,e)>>>16),d=g>>>16,f=f&65535,g=g&65535;c[e]=g<<16|f}return new ka(c,c[c.length-1]&-2147483648?-1:0)};h.wb=function(a){return this.add(a.V())};
h.multiply=function(a){if(this.Na()||a.Na())return pa;if(this.ga())return a.ga()?this.V().multiply(a.V()):this.V().multiply(a).V();if(a.ga())return this.multiply(a.V()).V();if(this.gc(sa)&&a.gc(sa))return na(this.kb()*a.kb());for(var b=this.aa.length+a.aa.length,c=[],d=0;d<2*b;d++)c[d]=0;for(d=0;d<this.aa.length;d++)for(var e=0;e<a.aa.length;e++){var f=ua(this,d)>>>16,g=ua(this,d)&65535,k=ua(a,e)>>>16,l=ua(a,e)&65535;c[2*d+2*e]+=g*l;xa(c,2*d+2*e);c[2*d+2*e+1]+=f*l;xa(c,2*d+2*e+1);c[2*d+2*e+1]+=g*
k;xa(c,2*d+2*e+1);c[2*d+2*e+2]+=f*k;xa(c,2*d+2*e+2)}for(d=0;d<b;d++)c[d]=c[2*d+1]<<16|c[2*d];for(d=b;d<2*b;d++)c[d]=0;return new ka(c,0)};function xa(a,b){for(;(a[b]&65535)!=a[b];)a[b+1]+=a[b]>>>16,a[b]&=65535}
function wa(a,b){if(b.Na())throw Error("division by zero");if(a.Na())return pa;if(a.ga())return b.ga()?wa(a.V(),b.V()):wa(a.V(),b).V();if(b.ga())return wa(a,b.V()).V();if(30<a.aa.length){if(a.ga()||b.ga())throw Error("slowDivide_ only works with positive integers.");for(var c=ra,d=b;d.Cc(a);)c=c.shiftLeft(1),d=d.shiftLeft(1);for(var e=c.vb(1),f=d.vb(1),g,d=d.vb(2),c=c.vb(2);!d.Na();)g=f.add(d),g.Cc(a)&&(e=e.add(c),f=g),d=d.vb(1),c=c.vb(1);return e}c=pa;for(d=a;d.zc(b);){e=Math.max(1,Math.floor(d.kb()/
b.kb()));f=Math.ceil(Math.log(e)/Math.LN2);f=48>=f?1:Math.pow(2,f-48);g=na(e);for(var k=g.multiply(b);k.ga()||k.yc(d);)e-=f,g=na(e),k=g.multiply(b);g.Na()&&(g=ra);c=c.add(g);d=d.wb(k)}return c}h.Ec=function(){for(var a=this.aa.length,b=[],c=0;c<a;c++)b[c]=~this.aa[c];return new ka(b,~this.$a)};h.Vc=function(a){for(var b=Math.max(this.aa.length,a.aa.length),c=[],d=0;d<b;d++)c[d]=ua(this,d)|ua(a,d);return new ka(c,this.$a|a.$a)};
h.Gc=function(a){for(var b=Math.max(this.aa.length,a.aa.length),c=[],d=0;d<b;d++)c[d]=ua(this,d)^ua(a,d);return new ka(c,this.$a^a.$a)};h.shiftLeft=function(a){var b=a>>5;a%=32;for(var c=this.aa.length+b+(0<a?1:0),d=[],e=0;e<c;e++)d[e]=0<a?ua(this,e-b)<<a|ua(this,e-b-1)>>>32-a:ua(this,e-b);return new ka(d,this.$a)};h.vb=function(a){var b=a>>5;a%=32;for(var c=this.aa.length-b,d=[],e=0;e<c;e++)d[e]=0<a?ua(this,e+b)>>>a|ua(this,e+b+1)<<32-a:ua(this,e+b);return new ka(d,this.$a)};function ya(a,b){null!=a&&this.append.apply(this,arguments)}h=ya.prototype;h.Fb="";h.set=function(a){this.Fb=""+a};h.append=function(a,b,c){this.Fb+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.Fb+=arguments[d];return this};h.clear=function(){this.Fb=""};h.toString=function(){return this.Fb};function Aa(a,b,c){return Object.prototype.hasOwnProperty.call(a,b)?a[b]:a[b]=c(b)};function Ba(a,b){this.ba=a|0;this.ka=b|0}var Ca={},Da={};function Fa(a){return-128<=a&&128>a?Aa(Ca,a,function(a){return new Ba(a|0,0>a?-1:0)}):new Ba(a|0,0>a?-1:0)}function Ga(a){return isNaN(a)?Ia():a<=-Ja?Ka():a+1>=Ja?La():0>a?Ga(-a).V():new Ba(a%Na|0,a/Na|0)}function Oa(a,b){return new Ba(a,b)}
function Pa(a,b){if(0==a.length)throw Error("number format error: empty string");var c=b||10;if(2>c||36<c)throw Error("radix out of range: "+c);if("-"==a.charAt(0))return Pa(a.substring(1),c).V();if(0<=a.indexOf("-"))throw Error('number format error: interior "-" character: '+a);for(var d=Ga(Math.pow(c,8)),e=Ia(),f=0;f<a.length;f+=8){var g=Math.min(8,a.length-f),k=parseInt(a.substring(f,f+g),c);8>g?(g=Ga(Math.pow(c,g)),e=e.multiply(g).add(Ga(k))):(e=e.multiply(d),e=e.add(Ga(k)))}return e}
var Na=4294967296,Ja=Na*Na/2;function Ia(){return Aa(Da,Qa,function(){return Fa(0)})}function Ra(){return Aa(Da,Sa,function(){return Fa(1)})}function Ta(){return Aa(Da,Ua,function(){return Fa(-1)})}function La(){return Aa(Da,Va,function(){return Oa(-1,2147483647)})}function Ka(){return Aa(Da,Wa,function(){return Oa(0,-2147483648)})}function Xa(){return Aa(Da,Ya,function(){return Fa(16777216)})}h=Ba.prototype;h.oc=function(){return this.ba};
h.kb=function(){return this.ka*Na+(0<=this.ba?this.ba:Na+this.ba)};h.toString=function(a){a=a||10;if(2>a||36<a)throw Error("radix out of range: "+a);if(this.Na())return"0";if(this.ga()){if(this.cb(Ka())){var b=Ga(a),c=$a(this,b),b=c.multiply(b).wb(this);return c.toString(a)+b.oc().toString(a)}return"-"+this.V().toString(a)}for(var c=Ga(Math.pow(a,6)),b=this,d="";;){var e=$a(b,c),f=(b.wb(e.multiply(c)).oc()>>>0).toString(a),b=e;if(b.Na())return f+d;for(;6>f.length;)f="0"+f;d=""+f+d}};
h.Na=function(){return 0==this.ka&&0==this.ba};h.ga=function(){return 0>this.ka};h.Ac=function(){return 1==(this.ba&1)};h.cb=function(a){return this.ka==a.ka&&this.ba==a.ba};h.gc=function(a){return 0>this.compare(a)};h.Cc=function(a){return 0>=this.compare(a)};h.yc=function(a){return 0<this.compare(a)};h.zc=function(a){return 0<=this.compare(a)};h.compare=function(a){if(this.cb(a))return 0;var b=this.ga(),c=a.ga();return b&&!c?-1:!b&&c?1:this.wb(a).ga()?-1:1};
h.V=function(){return this.cb(Ka())?Ka():this.Ec().add(Ra())};h.add=function(a){var b=this.ka>>>16,c=this.ka&65535,d=this.ba>>>16,e=a.ka>>>16,f=a.ka&65535,g=a.ba>>>16;a=0+((this.ba&65535)+(a.ba&65535));g=0+(a>>>16)+(d+g);d=0+(g>>>16);d+=c+f;b=0+(d>>>16)+(b+e)&65535;return Oa((g&65535)<<16|a&65535,b<<16|d&65535)};h.wb=function(a){return this.add(a.V())};
h.multiply=function(a){if(this.Na()||a.Na())return Ia();if(this.cb(Ka()))return a.Ac()?Ka():Ia();if(a.cb(Ka()))return this.Ac()?Ka():Ia();if(this.ga())return a.ga()?this.V().multiply(a.V()):this.V().multiply(a).V();if(a.ga())return this.multiply(a.V()).V();if(this.gc(Xa())&&a.gc(Xa()))return Ga(this.kb()*a.kb());var b=this.ka>>>16,c=this.ka&65535,d=this.ba>>>16,e=this.ba&65535,f=a.ka>>>16,g=a.ka&65535,k=a.ba>>>16;a=a.ba&65535;var l,p,u,v;v=0+e*a;u=0+(v>>>16)+d*a;p=0+(u>>>16);u=(u&65535)+e*k;p+=u>>>
16;p+=c*a;l=0+(p>>>16);p=(p&65535)+d*k;l+=p>>>16;p=(p&65535)+e*g;l=l+(p>>>16)+(b*a+c*k+d*g+e*f)&65535;return Oa((u&65535)<<16|v&65535,l<<16|p&65535)};
function $a(a,b){if(b.Na())throw Error("division by zero");if(a.Na())return Ia();if(a.cb(Ka())){if(b.cb(Ra())||b.cb(Ta()))return Ka();if(b.cb(Ka()))return Ra();var c=$a(a.vb(1),b).shiftLeft(1);if(c.cb(Ia()))return b.ga()?Ra():Ta();var d=a.wb(b.multiply(c));return c.add($a(d,b))}if(b.cb(Ka()))return Ia();if(a.ga())return b.ga()?$a(a.V(),b.V()):$a(a.V(),b).V();if(b.ga())return $a(a,b.V()).V();for(var e=Ia(),d=a;d.zc(b);){for(var c=Math.max(1,Math.floor(d.kb()/b.kb())),f=Math.ceil(Math.log(c)/Math.LN2),
f=48>=f?1:Math.pow(2,f-48),g=Ga(c),k=g.multiply(b);k.ga()||k.yc(d);)c-=f,g=Ga(c),k=g.multiply(b);g.Na()&&(g=Ra());e=e.add(g);d=d.wb(k)}return e}h.Ec=function(){return Oa(~this.ba,~this.ka)};h.Vc=function(a){return Oa(this.ba|a.ba,this.ka|a.ka)};h.Gc=function(a){return Oa(this.ba^a.ba,this.ka^a.ka)};h.shiftLeft=function(a){a&=63;if(0==a)return this;var b=this.ba;return 32>a?Oa(b<<a,this.ka<<a|b>>>32-a):Oa(0,b<<a-32)};
h.vb=function(a){a&=63;if(0==a)return this;var b=this.ka;return 32>a?Oa(this.ba>>>a|b<<32-a,b>>a):Oa(b>>a-32,0<=b?0:-1)};function bb(a,b){b&=63;if(0==b)return a;var c=a.ka;return 32>b?Oa(a.ba>>>b|c<<32-b,c>>>b):32==b?Oa(c,0):Oa(c>>>b-32,0)}var Va=1,Wa=2,Qa=3,Sa=4,Ua=5,Ya=6;var cb;if("undefined"===typeof m)var m={};var n=null;if("undefined"===typeof db)var db=function(){throw Error("No *print-fn* fn set for evaluation environment");};if("undefined"===typeof eb)var eb=function(){throw Error("No *print-err-fn* fn set for evaluation environment");};var gb=!0,hb=null,ib=null;if("undefined"===typeof jb)var jb=null;function kb(){return new q(null,5,[mb,!0,nb,gb,ob,!1,pb,!1,qb,hb],null)}function r(a){return null!=a&&!1!==a}function sb(a){return a instanceof Array}
function tb(a){return null==a?!0:!1===a?!0:!1}function ub(a){return null!=a?a.constructor===Object:!1}function vb(a,b){return a[ba(null==b?null:b)]?!0:a._?!0:!1}function wb(a){return null==a?null:a.constructor}function xb(a,b){var c=wb(b),c=r(r(c)?c.zb:c)?c.nb:ba(b);return Error(["No protocol method ",a," defined for type ",c,": ",b].join(""))}function yb(a){var b=a.nb;return r(b)?b:""+t(a)}var zb="undefined"!==typeof Symbol&&"function"===ba(Symbol)?Symbol.iterator:"@@iterator";
function Cb(a){for(var b=a.length,c=Array(b),d=0;;)if(d<b)c[d]=a[d],d+=1;else break;return c}function Db(){}
var Eb=function Eb(b){if(null!=b&&null!=b.Z)return b.Z(b);var c=Eb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Eb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("ICounted.-count",b);},Fb=function Fb(b){if(null!=b&&null!=b.za)return b.za(b);var c=Fb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Fb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IEmptyableCollection.-empty",b);};function Gb(){}
var Hb=function Hb(b,c){if(null!=b&&null!=b.X)return b.X(b,c);var d=Hb[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=Hb._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("ICollection.-conj",b);};function Ib(){}
var Jb=function Jb(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return Jb.b(arguments[0],arguments[1]);case 3:return Jb.c(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};
Jb.b=function(a,b){if(null!=a&&null!=a.ca)return a.ca(a,b);var c=Jb[ba(null==a?null:a)];if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);c=Jb._;if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);throw xb("IIndexed.-nth",a);};Jb.c=function(a,b,c){if(null!=a&&null!=a.Qa)return a.Qa(a,b,c);var d=Jb[ba(null==a?null:a)];if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);d=Jb._;if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);throw xb("IIndexed.-nth",a);};Jb.B=3;function Kb(){}
var Lb=function Lb(b){if(null!=b&&null!=b.Aa)return b.Aa(b);var c=Lb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Lb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("ISeq.-first",b);},Mb=function Mb(b){if(null!=b&&null!=b.Oa)return b.Oa(b);var c=Mb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Mb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("ISeq.-rest",b);};function Nb(){}function Pb(){}
var Qb=function Qb(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return Qb.b(arguments[0],arguments[1]);case 3:return Qb.c(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};
Qb.b=function(a,b){if(null!=a&&null!=a.W)return a.W(a,b);var c=Qb[ba(null==a?null:a)];if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);c=Qb._;if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);throw xb("ILookup.-lookup",a);};Qb.c=function(a,b,c){if(null!=a&&null!=a.T)return a.T(a,b,c);var d=Qb[ba(null==a?null:a)];if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);d=Qb._;if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);throw xb("ILookup.-lookup",a);};Qb.B=3;
var Rb=function Rb(b,c){if(null!=b&&null!=b.rc)return b.rc(b,c);var d=Rb[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=Rb._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IAssociative.-contains-key?",b);},Sb=function Sb(b,c,d){if(null!=b&&null!=b.Za)return b.Za(b,c,d);var e=Sb[ba(null==b?null:b)];if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=Sb._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("IAssociative.-assoc",b);};function Tb(){}
var Ub=function Ub(b,c){if(null!=b&&null!=b.bb)return b.bb(b,c);var d=Ub[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=Ub._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IMap.-dissoc",b);};function Vb(){}
var Wb=function Wb(b){if(null!=b&&null!=b.vc)return b.vc();var c=Wb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Wb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IMapEntry.-key",b);},Xb=function Xb(b){if(null!=b&&null!=b.wc)return b.wc();var c=Xb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Xb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IMapEntry.-val",b);};function Yb(){}
var Zb=function Zb(b){if(null!=b&&null!=b.ac)return b.ac(b);var c=Zb[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Zb._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IStack.-peek",b);},$b=function $b(b){if(null!=b&&null!=b.bc)return b.bc(b);var c=$b[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=$b._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IStack.-pop",b);};function ac(){}
var bc=function bc(b,c,d){if(null!=b&&null!=b.xc)return b.xc(b,c,d);var e=bc[ba(null==b?null:b)];if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=bc._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("IVector.-assoc-n",b);};function cc(){}var dc=function dc(b){if(null!=b&&null!=b.Xb)return b.Xb(b);var c=dc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=dc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IDeref.-deref",b);};function ec(){}
var fc=function fc(b){if(null!=b&&null!=b.N)return b.N(b);var c=fc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=fc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IMeta.-meta",b);},gc=function gc(b,c){if(null!=b&&null!=b.O)return b.O(b,c);var d=gc[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=gc._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IWithMeta.-with-meta",b);};function hc(){}
var jc=function jc(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return jc.b(arguments[0],arguments[1]);case 3:return jc.c(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};
jc.b=function(a,b){if(null!=a&&null!=a.Da)return a.Da(a,b);var c=jc[ba(null==a?null:a)];if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);c=jc._;if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);throw xb("IReduce.-reduce",a);};jc.c=function(a,b,c){if(null!=a&&null!=a.Ea)return a.Ea(a,b,c);var d=jc[ba(null==a?null:a)];if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);d=jc._;if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);throw xb("IReduce.-reduce",a);};jc.B=3;
var kc=function kc(b,c){if(null!=b&&null!=b.F)return b.F(b,c);var d=kc[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=kc._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IEquiv.-equiv",b);},lc=function lc(b){if(null!=b&&null!=b.S)return b.S(b);var c=lc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=lc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IHash.-hash",b);};function mc(){}
var nc=function nc(b){if(null!=b&&null!=b.Y)return b.Y(b);var c=nc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=nc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("ISeqable.-seq",b);};function oc(){}function pc(){}function qc(){}
var rc=function rc(b){if(null!=b&&null!=b.nc)return b.nc(b);var c=rc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=rc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IReversible.-rseq",b);},x=function x(b,c){if(null!=b&&null!=b.yb)return b.yb(b,c);var d=x[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=x._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IWriter.-write",b);},sc=function sc(b){if(null!=b&&null!=b.mb)return b.mb(b);var c=sc[ba(null==
b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=sc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IWriter.-flush",b);};function tc(){}
var uc=function uc(b){if(null!=b&&null!=b.Mc)return b.Mc();var c=uc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=uc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IPending.-realized?",b);},vc=function vc(b,c,d){if(null!=b&&null!=b.Oc)return b.Oc(0,c,d);var e=vc[ba(null==b?null:b)];if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=vc._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("IWatchable.-notify-watches",b);},wc=function wc(b){if(null!=b&&null!=
b.Pb)return b.Pb(b);var c=wc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=wc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IEditableCollection.-as-transient",b);},xc=function xc(b,c){if(null!=b&&null!=b.Gb)return b.Gb(b,c);var d=xc[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=xc._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("ITransientCollection.-conj!",b);},yc=function yc(b){if(null!=b&&null!=b.Qb)return b.Qb(b);var c=yc[ba(null==
b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=yc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("ITransientCollection.-persistent!",b);},zc=function zc(b,c,d){if(null!=b&&null!=b.cc)return b.cc(b,c,d);var e=zc[ba(null==b?null:b)];if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=zc._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("ITransientAssociative.-assoc!",b);},Ac=function Ac(b,c,d){if(null!=b&&null!=b.Nc)return b.Nc(0,c,d);var e=Ac[ba(null==b?null:b)];if(null!=
e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=Ac._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("ITransientVector.-assoc-n!",b);},Bc=function Bc(b){if(null!=b&&null!=b.Jc)return b.Jc();var c=Bc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Bc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IChunk.-drop-first",b);},Cc=function Cc(b){if(null!=b&&null!=b.tc)return b.tc(b);var c=Cc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Cc._;if(null!=
c)return c.a?c.a(b):c.call(null,b);throw xb("IChunkedSeq.-chunked-first",b);},Dc=function Dc(b){if(null!=b&&null!=b.uc)return b.uc(b);var c=Dc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Dc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IChunkedSeq.-chunked-rest",b);},Ec=function Ec(b){if(null!=b&&null!=b.sc)return b.sc(b);var c=Ec[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Ec._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IChunkedNext.-chunked-next",
b);},Fc=function Fc(b){if(null!=b&&null!=b.Zb)return b.Zb(b);var c=Fc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Fc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("INamed.-name",b);},Gc=function Gc(b){if(null!=b&&null!=b.$b)return b.$b(b);var c=Gc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Gc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("INamed.-namespace",b);},Ic=function Ic(b,c){if(null!=b&&null!=b.hd)return b.hd(b,c);var d=Ic[ba(null==
b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=Ic._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IReset.-reset!",b);},Jc=function Jc(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return Jc.b(arguments[0],arguments[1]);case 3:return Jc.c(arguments[0],arguments[1],arguments[2]);case 4:return Jc.C(arguments[0],arguments[1],arguments[2],arguments[3]);case 5:return Jc.L(arguments[0],arguments[1],arguments[2],arguments[3],
arguments[4]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};Jc.b=function(a,b){if(null!=a&&null!=a.kd)return a.kd(a,b);var c=Jc[ba(null==a?null:a)];if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);c=Jc._;if(null!=c)return c.b?c.b(a,b):c.call(null,a,b);throw xb("ISwap.-swap!",a);};
Jc.c=function(a,b,c){if(null!=a&&null!=a.ld)return a.ld(a,b,c);var d=Jc[ba(null==a?null:a)];if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);d=Jc._;if(null!=d)return d.c?d.c(a,b,c):d.call(null,a,b,c);throw xb("ISwap.-swap!",a);};Jc.C=function(a,b,c,d){if(null!=a&&null!=a.md)return a.md(a,b,c,d);var e=Jc[ba(null==a?null:a)];if(null!=e)return e.C?e.C(a,b,c,d):e.call(null,a,b,c,d);e=Jc._;if(null!=e)return e.C?e.C(a,b,c,d):e.call(null,a,b,c,d);throw xb("ISwap.-swap!",a);};
Jc.L=function(a,b,c,d,e){if(null!=a&&null!=a.nd)return a.nd(a,b,c,d,e);var f=Jc[ba(null==a?null:a)];if(null!=f)return f.L?f.L(a,b,c,d,e):f.call(null,a,b,c,d,e);f=Jc._;if(null!=f)return f.L?f.L(a,b,c,d,e):f.call(null,a,b,c,d,e);throw xb("ISwap.-swap!",a);};Jc.B=5;var Kc=function Kc(b){if(null!=b&&null!=b.Ca)return b.Ca(b);var c=Kc[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Kc._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IIterable.-iterator",b);};
function Lc(a){this.Cd=a;this.o=1073741824;this.G=0}Lc.prototype.yb=function(a,b){return this.Cd.append(b)};Lc.prototype.mb=function(){return null};function Mc(a){var b=new ya,c=new Lc(b);a.U(null,c,kb());c.mb(null);return""+t(b)}var Nc="undefined"!==typeof Math.imul&&0!==Math.imul(4294967295,5)?function(a,b){return Math.imul(a,b)}:function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16&65535)*d+c*(b>>>16&65535)<<16>>>0)|0};
function Oc(a){a=Nc(a|0,-862048943);return Nc(a<<15|a>>>-15,461845907)}function Pc(a,b){var c=(a|0)^(b|0);return Nc(c<<13|c>>>-13,5)+-430675100|0}function Qc(a,b){var c=(a|0)^b,c=Nc(c^c>>>16,-2048144789),c=Nc(c^c>>>13,-1028477387);return c^c>>>16}var Rc={},Sc=0;
function Tc(a){255<Sc&&(Rc={},Sc=0);if(null==a)return 0;var b=Rc[a];if("number"!==typeof b){a:if(null!=a)if(b=a.length,0<b)for(var c=0,d=0;;)if(c<b)var e=c+1,d=Nc(31,d)+a.charCodeAt(c),c=e;else{b=d;break a}else b=0;else b=0;Rc[a]=b;Sc+=1}return a=b}
function Uc(a){if(null!=a&&(a.o&4194304||m===a.Gd))return a.S(null);if("number"===typeof a){if(r(isFinite(a)))return Math.floor(a)%2147483647;switch(a){case Infinity:return 2146435072;case -Infinity:return-1048576;default:return 2146959360}}else return!0===a?a=1231:!1===a?a=1237:"string"===typeof a?(a=Tc(a),0!==a&&(a=Oc(a),a=Pc(0,a),a=Qc(a,4))):a=a instanceof Date?a.valueOf():null==a?0:lc(a),a}
function Vc(a){var b;b=a.name;var c;a:{c=1;for(var d=0;;)if(c<b.length){var e=c+2,d=Pc(d,Oc(b.charCodeAt(c-1)|b.charCodeAt(c)<<16));c=e}else{c=d;break a}}c=1===(b.length&1)?c^Oc(b.charCodeAt(b.length-1)):c;b=Qc(c,Nc(2,b.length));a=Tc(a.jc);return b^a+2654435769+(b<<6)+(b>>2)}function z(a,b,c,d,e){this.jc=a;this.name=b;this.Eb=c;this.Ob=d;this.Ga=e;this.o=2154168321;this.G=4096}h=z.prototype;h.toString=function(){return this.Eb};h.equiv=function(a){return this.F(null,a)};
h.F=function(a,b){return b instanceof z?this.Eb===b.Eb:!1};h.call=function(){function a(a,b,c){return B.c?B.c(b,this,c):B.call(null,b,this,c)}function b(a,b){return B.b?B.b(b,this):B.call(null,b,this)}var c=null,c=function(c,e,f){switch(arguments.length){case 2:return b.call(this,0,e);case 3:return a.call(this,0,e,f)}throw Error("Invalid arity: "+arguments.length);};c.b=b;c.c=a;return c}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};
h.a=function(a){return B.b?B.b(a,this):B.call(null,a,this)};h.b=function(a,b){return B.c?B.c(a,this,b):B.call(null,a,this,b)};h.N=function(){return this.Ga};h.O=function(a,b){return new z(this.jc,this.name,this.Eb,this.Ob,b)};h.S=function(){var a=this.Ob;return null!=a?a:this.Ob=a=Vc(this)};h.Zb=function(){return this.name};h.$b=function(){return this.jc};h.U=function(a,b){return x(b,this.Eb)};
var Wc=function Wc(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return Wc.a(arguments[0]);case 2:return Wc.b(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};Wc.a=function(a){if(a instanceof z)return a;var b=a.indexOf("/");return 1>b?Wc.b(null,a):Wc.b(a.substring(0,b),a.substring(b+1,a.length))};Wc.b=function(a,b){var c=null!=a?[t(a),t("/"),t(b)].join(""):b;return new z(a,b,c,null,null)};
Wc.B=2;function Xc(a,b,c){this.i=a;this.Vb=b;this.Ga=c;this.o=6717441;this.G=0}h=Xc.prototype;h.toString=function(){return[t("#'"),t(this.Vb)].join("")};h.Xb=function(){return this.i.h?this.i.h():this.i.call(null)};h.N=function(){return this.Ga};h.O=function(a,b){return new Xc(this.i,this.Vb,b)};h.F=function(a,b){if(b instanceof Xc){var c=this.Vb,d=b.Vb;return C.b?C.b(c,d):C.call(null,c,d)}return!1};h.S=function(){return Vc(this.Vb)};
h.call=function(){function a(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G,R,va){a=this;a=a.i.h?a.i.h():a.i.call(null);return Yc.lb?Yc.lb(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G,R,va):Yc.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G,R,va)}function b(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G,R){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G,R)}function c(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U,G){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,
g,k,l,p,u,v,w,y,A,D,H,K,U,G)}function d(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,U)}function e(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K)}function f(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H)}function g(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){a=this;return(a.i.h?
a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D)}function k(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A)}function l(a,b,c,d,e,f,g,k,l,p,u,v,w,y){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w,y)}function p(a,b,c,d,e,f,g,k,l,p,u,v,w){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u,v,w)}function u(a,b,c,d,e,f,g,k,l,p,u,v){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,
b,c,d,e,f,g,k,l,p,u,v)}function v(a,b,c,d,e,f,g,k,l,p,u){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p,u)}function w(a,b,c,d,e,f,g,k,l,p){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l,p)}function y(a,b,c,d,e,f,g,k,l){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k,l)}function A(a,b,c,d,e,f,g,k){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f,g,k)}function D(a,b,c,d,e,f,g){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,
b,c,d,e,f,g)}function H(a,b,c,d,e,f){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e,f)}function K(a,b,c,d,e){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d,e)}function R(a,b,c,d){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c,d)}function U(a,b,c){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b,c)}function va(a,b){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null,b)}function lb(a){a=this;return(a.i.h?a.i.h():a.i.call(null)).call(null)}var G=null,G=
function(aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh){switch(arguments.length){case 1:return lb.call(this,aa);case 2:return va.call(this,aa,da);case 3:return U.call(this,aa,da,ha);case 4:return R.call(this,aa,da,ha,P);case 5:return K.call(this,aa,da,ha,P,oa);case 6:return H.call(this,aa,da,ha,P,oa,ta);case 7:return D.call(this,aa,da,ha,P,oa,ta,Za);case 8:return A.call(this,aa,da,ha,P,oa,ta,Za,za);case 9:return y.call(this,aa,da,ha,P,oa,ta,Za,za,Ea);case 10:return w.call(this,aa,
da,ha,P,oa,ta,Za,za,Ea,Ha);case 11:return v.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma);case 12:return u.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G);case 13:return p.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab);case 14:return l.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb);case 15:return k.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb);case 16:return g.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb);case 17:return f.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob);
case 18:return e.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic);case 19:return d.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic,Hc);case 20:return c.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic,Hc,Md);case 21:return b.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff);case 22:return a.call(this,aa,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,G,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh)}throw Error("Invalid arity: "+arguments.length);};G.a=lb;G.b=va;G.c=U;G.C=
R;G.L=K;G.ha=H;G.ja=D;G.xa=A;G.ya=y;G.ma=w;G.na=v;G.oa=u;G.pa=p;G.qa=l;G.ra=k;G.sa=g;G.ta=f;G.ua=e;G.va=d;G.wa=c;G.Yb=b;G.lb=a;return G}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.h=function(){return(this.i.h?this.i.h():this.i.call(null)).call(null)};h.a=function(a){return(this.i.h?this.i.h():this.i.call(null)).call(null,a)};h.b=function(a,b){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b)};
h.c=function(a,b,c){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c)};h.C=function(a,b,c,d){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d)};h.L=function(a,b,c,d,e){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e)};h.ha=function(a,b,c,d,e,f){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f)};h.ja=function(a,b,c,d,e,f,g){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g)};
h.xa=function(a,b,c,d,e,f,g,k){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k)};h.ya=function(a,b,c,d,e,f,g,k,l){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l)};h.ma=function(a,b,c,d,e,f,g,k,l,p){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p)};h.na=function(a,b,c,d,e,f,g,k,l,p,u){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u)};
h.oa=function(a,b,c,d,e,f,g,k,l,p,u,v){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v)};h.pa=function(a,b,c,d,e,f,g,k,l,p,u,v,w){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w)};h.qa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y)};
h.ra=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A)};h.sa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D)};h.ta=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H)};
h.ua=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K)};h.va=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R)};h.wa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U){return(this.i.h?this.i.h():this.i.call(null)).call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U)};
h.Yb=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va){var lb=this.i.h?this.i.h():this.i.call(null);return Yc.lb?Yc.lb(lb,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va):Yc.call(null,lb,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va)};function E(a){if(null==a)return null;if(null!=a&&(a.o&8388608||m===a.jd))return a.Y(null);if(sb(a)||"string"===typeof a)return 0===a.length?null:new F(a,0,null);if(vb(mc,a))return nc(a);throw Error([t(a),t(" is not ISeqable")].join(""));}
function I(a){if(null==a)return null;if(null!=a&&(a.o&64||m===a.Ha))return a.Aa(null);a=E(a);return null==a?null:Lb(a)}function Zc(a){return null!=a?null!=a&&(a.o&64||m===a.Ha)?a.Oa(null):(a=E(a))?Mb(a):$c:$c}function J(a){return null==a?null:null!=a&&(a.o&128||m===a.mc)?a.Ka(null):E(Zc(a))}
var C=function C(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return C.a(arguments[0]);case 2:return C.b(arguments[0],arguments[1]);default:return C.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};C.a=function(){return!0};C.b=function(a,b){return null==a?null==b:a===b||kc(a,b)};C.f=function(a,b,c){for(;;)if(C.b(a,b))if(J(c))a=b,b=I(c),c=J(c);else return C.b(b,I(c));else return!1};
C.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return C.f(b,a,c)};C.B=2;function ad(a){this.P=a}ad.prototype.next=function(){if(null!=this.P){var a=I(this.P);this.P=J(this.P);return{value:a,done:!1}}return{value:null,done:!0}};function bd(a){return new ad(E(a))}function cd(a,b){var c=Oc(a),c=Pc(0,c);return Qc(c,b)}function dd(a){var b=0,c=1;for(a=E(a);;)if(null!=a)b+=1,c=Nc(31,c)+Uc(I(a))|0,a=J(a);else return cd(c,b)}var ed=cd(1,0);
function fd(a){var b=0,c=0;for(a=E(a);;)if(null!=a)b+=1,c=c+Uc(I(a))|0,a=J(a);else return cd(c,b)}var gd=cd(0,0);Db["null"]=!0;Eb["null"]=function(){return 0};Date.prototype.F=function(a,b){return b instanceof Date&&this.valueOf()===b.valueOf()};kc.number=function(a,b){return a===b};ec["function"]=!0;fc["function"]=function(){return null};lc._=function(a){return ca(a)};function hd(a){return a+1}function L(a){return dc(a)}
function id(a,b){var c=Eb(a);if(0===c)return b.h?b.h():b.call(null);for(var d=Jb.b(a,0),e=1;;)if(e<c)var f=Jb.b(a,e),d=b.b?b.b(d,f):b.call(null,d,f),e=e+1;else return d}function jd(a,b,c){var d=Eb(a),e=c;for(c=0;;)if(c<d){var f=Jb.b(a,c),e=b.b?b.b(e,f):b.call(null,e,f);c+=1}else return e}function kd(a,b){var c=a.length;if(0===a.length)return b.h?b.h():b.call(null);for(var d=a[0],e=1;;)if(e<c)var f=a[e],d=b.b?b.b(d,f):b.call(null,d,f),e=e+1;else return d}
function ld(a,b,c){var d=a.length,e=c;for(c=0;;)if(c<d){var f=a[c],e=b.b?b.b(e,f):b.call(null,e,f);c+=1}else return e}function md(a,b,c,d){for(var e=a.length;;)if(d<e){var f=a[d];c=b.b?b.b(c,f):b.call(null,c,f);d+=1}else return c}function nd(a){return null!=a?a.o&2||m===a.Yc?!0:a.o?!1:vb(Db,a):vb(Db,a)}function od(a){return null!=a?a.o&16||m===a.Lc?!0:a.o?!1:vb(Ib,a):vb(Ib,a)}
function pd(a,b,c){var d=M.a?M.a(a):M.call(null,a);if(c>=d)return-1;!(0<c)&&0>c&&(c+=d,c=0>c?0:c);for(;;)if(c<d){if(C.b(qd?qd(a,c):rd.call(null,a,c),b))return c;c+=1}else return-1}function sd(a,b,c){var d=M.a?M.a(a):M.call(null,a);if(0===d)return-1;0<c?(--d,c=d<c?d:c):c=0>c?d+c:c;for(;;)if(0<=c){if(C.b(qd?qd(a,c):rd.call(null,a,c),b))return c;--c}else return-1}function td(a,b){this.g=a;this.u=b}td.prototype.Ia=function(){return this.u<this.g.length};
td.prototype.next=function(){var a=this.g[this.u];this.u+=1;return a};function F(a,b,c){this.g=a;this.u=b;this.D=c;this.o=166592766;this.G=8192}h=F.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M.a?M.a(this):M.call(null,this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.ca=function(a,b){var c=b+this.u;return c<this.g.length?this.g[c]:null};h.Qa=function(a,b,c){a=b+this.u;return a<this.g.length?this.g[a]:c};h.Ca=function(){return new td(this.g,this.u)};h.N=function(){return this.D};
h.Ka=function(){return this.u+1<this.g.length?new F(this.g,this.u+1,null):null};h.Z=function(){var a=this.g.length-this.u;return 0>a?0:a};h.nc=function(){var a=Eb(this);return 0<a?new ud(this,a-1,null):null};h.S=function(){return dd(this)};h.F=function(a,b){return vd.b?vd.b(this,b):vd.call(null,this,b)};h.za=function(){return $c};h.Da=function(a,b){return md(this.g,b,this.g[this.u],this.u+1)};h.Ea=function(a,b,c){return md(this.g,b,c,this.u)};h.Aa=function(){return this.g[this.u]};
h.Oa=function(){return this.u+1<this.g.length?new F(this.g,this.u+1,null):$c};h.Y=function(){return this.u<this.g.length?this:null};h.O=function(a,b){return new F(this.g,this.u,b)};h.X=function(a,b){return wd.b?wd.b(b,this):wd.call(null,b,this)};F.prototype[zb]=function(){return bd(this)};function xd(a,b){return b<a.length?new F(a,b,null):null}
function N(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 1:return xd(arguments[0],0);case 2:return xd(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function ud(a,b,c){this.lc=a;this.u=b;this.D=c;this.o=32374990;this.G=8192}h=ud.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M.a?M.a(this):M.call(null,this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){return 0<this.u?new ud(this.lc,this.u-1,null):null};h.Z=function(){return this.u+1};h.S=function(){return dd(this)};
h.F=function(a,b){return vd.b?vd.b(this,b):vd.call(null,this,b)};h.za=function(){var a=this.D;return yd.b?yd.b($c,a):yd.call(null,$c,a)};h.Da=function(a,b){return zd?zd(b,this):Ad.call(null,b,this)};h.Ea=function(a,b,c){return Bd?Bd(b,c,this):Ad.call(null,b,c,this)};h.Aa=function(){return Jb.b(this.lc,this.u)};h.Oa=function(){return 0<this.u?new ud(this.lc,this.u-1,null):$c};h.Y=function(){return this};h.O=function(a,b){return new ud(this.lc,this.u,b)};
h.X=function(a,b){return wd.b?wd.b(b,this):wd.call(null,b,this)};ud.prototype[zb]=function(){return bd(this)};function Cd(a){return I(J(a))}function Dd(a){for(;;){var b=J(a);if(null!=b)a=b;else return I(a)}}kc._=function(a,b){return a===b};
var Ed=function Ed(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return Ed.h();case 1:return Ed.a(arguments[0]);case 2:return Ed.b(arguments[0],arguments[1]);default:return Ed.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};Ed.h=function(){return Fd};Ed.a=function(a){return a};Ed.b=function(a,b){return null!=a?Hb(a,b):Hb($c,b)};Ed.f=function(a,b,c){for(;;)if(r(c))a=Ed.b(a,b),b=I(c),c=J(c);else return Ed.b(a,b)};
Ed.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return Ed.f(b,a,c)};Ed.B=2;function M(a){if(null!=a)if(null!=a&&(a.o&2||m===a.Yc))a=a.Z(null);else if(sb(a))a=a.length;else if("string"===typeof a)a=a.length;else if(null!=a&&(a.o&8388608||m===a.jd))a:{a=E(a);for(var b=0;;){if(nd(a)){a=b+Eb(a);break a}a=J(a);b+=1}}else a=Eb(a);else a=0;return a}function Gd(a,b,c){for(;;){if(null==a)return c;if(0===b)return E(a)?I(a):c;if(od(a))return Jb.c(a,b,c);if(E(a))a=J(a),--b;else return c}}
function rd(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 2:return qd(arguments[0],arguments[1]);case 3:return O(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}
function qd(a,b){if("number"!==typeof b)throw Error("Index argument to nth must be a number");if(null==a)return a;if(null!=a&&(a.o&16||m===a.Lc))return a.ca(null,b);if(sb(a)){if(0<=b&&b<a.length)return a[b];throw Error("Index out of bounds");}if("string"===typeof a){if(0<=b&&b<a.length)return a.charAt(b);throw Error("Index out of bounds");}if(null!=a&&(a.o&64||m===a.Ha)){var c;a:{c=a;for(var d=b;;){if(null==c)throw Error("Index out of bounds");if(0===d){if(E(c)){c=I(c);break a}throw Error("Index out of bounds");
}if(od(c)){c=Jb.b(c,d);break a}if(E(c))c=J(c),--d;else throw Error("Index out of bounds");}}return c}if(vb(Ib,a))return Jb.b(a,b);throw Error([t("nth not supported on this type "),t(yb(wb(a)))].join(""));}
function O(a,b,c){if("number"!==typeof b)throw Error("Index argument to nth must be a number.");if(null==a)return c;if(null!=a&&(a.o&16||m===a.Lc))return a.Qa(null,b,c);if(sb(a))return 0<=b&&b<a.length?a[b]:c;if("string"===typeof a)return 0<=b&&b<a.length?a.charAt(b):c;if(null!=a&&(a.o&64||m===a.Ha))return Gd(a,b,c);if(vb(Ib,a))return Jb.b(a,b);throw Error([t("nth not supported on this type "),t(yb(wb(a)))].join(""));}
var B=function B(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return B.b(arguments[0],arguments[1]);case 3:return B.c(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};B.b=function(a,b){return null==a?null:null!=a&&(a.o&256||m===a.bd)?a.W(null,b):sb(a)?b<a.length?a[b|0]:null:"string"===typeof a?null!=b&&b<a.length?a[b|0]:null:vb(Pb,a)?Qb.b(a,b):null};
B.c=function(a,b,c){return null!=a?null!=a&&(a.o&256||m===a.bd)?a.T(null,b,c):sb(a)?b<a.length?a[b|0]:c:"string"===typeof a?b<a.length?a[b|0]:c:vb(Pb,a)?Qb.c(a,b,c):c:c};B.B=3;var Q=function Q(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 3:return Q.c(arguments[0],arguments[1],arguments[2]);default:return Q.f(arguments[0],arguments[1],arguments[2],new F(c.slice(3),0,null))}};Q.c=function(a,b,c){return null!=a?Sb(a,b,c):Hd([b],[c])};
Q.f=function(a,b,c,d){for(;;)if(a=Q.c(a,b,c),r(d))b=I(d),c=Cd(d),d=J(J(d));else return a};Q.A=function(a){var b=I(a),c=J(a);a=I(c);var d=J(c),c=I(d),d=J(d);return Q.f(b,a,c,d)};Q.B=3;var Id=function Id(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return Id.a(arguments[0]);case 2:return Id.b(arguments[0],arguments[1]);default:return Id.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};Id.a=function(a){return a};
Id.b=function(a,b){return null==a?null:Ub(a,b)};Id.f=function(a,b,c){for(;;){if(null==a)return null;a=Id.b(a,b);if(r(c))b=I(c),c=J(c);else return a}};Id.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return Id.f(b,a,c)};Id.B=2;function Jd(a,b){this.l=a;this.D=b;this.o=393217;this.G=0}h=Jd.prototype;h.N=function(){return this.D};h.O=function(a,b){return new Jd(this.l,b)};
h.call=function(){function a(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R,va){a=this;return Yc.lb?Yc.lb(a.l,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R,va):Yc.call(null,a.l,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R,va)}function b(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R){a=this;return a.l.wa?a.l.wa(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U,R)}function c(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U){a=this;return a.l.va?a.l.va(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,
G,U):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G,U)}function d(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G){a=this;return a.l.ua?a.l.ua(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,G)}function e(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K){a=this;return a.l.ta?a.l.ta(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K)}function f(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H){a=this;return a.l.sa?a.l.sa(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):a.l.call(null,
b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H)}function g(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){a=this;return a.l.ra?a.l.ra(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D)}function k(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){a=this;return a.l.qa?a.l.qa(b,c,d,e,f,g,k,l,p,u,v,w,y,A):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A)}function l(a,b,c,d,e,f,g,k,l,p,u,v,w,y){a=this;return a.l.pa?a.l.pa(b,c,d,e,f,g,k,l,p,u,v,w,y):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y)}function p(a,b,c,d,e,f,g,k,l,p,u,v,w){a=this;
return a.l.oa?a.l.oa(b,c,d,e,f,g,k,l,p,u,v,w):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v,w)}function u(a,b,c,d,e,f,g,k,l,p,u,v){a=this;return a.l.na?a.l.na(b,c,d,e,f,g,k,l,p,u,v):a.l.call(null,b,c,d,e,f,g,k,l,p,u,v)}function v(a,b,c,d,e,f,g,k,l,p,u){a=this;return a.l.ma?a.l.ma(b,c,d,e,f,g,k,l,p,u):a.l.call(null,b,c,d,e,f,g,k,l,p,u)}function w(a,b,c,d,e,f,g,k,l,p){a=this;return a.l.ya?a.l.ya(b,c,d,e,f,g,k,l,p):a.l.call(null,b,c,d,e,f,g,k,l,p)}function y(a,b,c,d,e,f,g,k,l){a=this;return a.l.xa?a.l.xa(b,c,
d,e,f,g,k,l):a.l.call(null,b,c,d,e,f,g,k,l)}function A(a,b,c,d,e,f,g,k){a=this;return a.l.ja?a.l.ja(b,c,d,e,f,g,k):a.l.call(null,b,c,d,e,f,g,k)}function D(a,b,c,d,e,f,g){a=this;return a.l.ha?a.l.ha(b,c,d,e,f,g):a.l.call(null,b,c,d,e,f,g)}function H(a,b,c,d,e,f){a=this;return a.l.L?a.l.L(b,c,d,e,f):a.l.call(null,b,c,d,e,f)}function K(a,b,c,d,e){a=this;return a.l.C?a.l.C(b,c,d,e):a.l.call(null,b,c,d,e)}function R(a,b,c,d){a=this;return a.l.c?a.l.c(b,c,d):a.l.call(null,b,c,d)}function U(a,b,c){a=this;
return a.l.b?a.l.b(b,c):a.l.call(null,b,c)}function va(a,b){a=this;return a.l.a?a.l.a(b):a.l.call(null,b)}function lb(a){a=this;return a.l.h?a.l.h():a.l.call(null)}var G=null,G=function(aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh){switch(arguments.length){case 1:return lb.call(this,aa);case 2:return va.call(this,aa,da);case 3:return U.call(this,aa,da,ha);case 4:return R.call(this,aa,da,ha,P);case 5:return K.call(this,aa,da,ha,P,oa);case 6:return H.call(this,aa,da,ha,P,oa,ta);case 7:return D.call(this,
aa,da,ha,P,oa,ta,G);case 8:return A.call(this,aa,da,ha,P,oa,ta,G,za);case 9:return y.call(this,aa,da,ha,P,oa,ta,G,za,Ea);case 10:return w.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha);case 11:return v.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma);case 12:return u.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab);case 13:return p.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab);case 14:return l.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb);case 15:return k.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb);
case 16:return g.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb);case 17:return f.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob);case 18:return e.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic);case 19:return d.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc);case 20:return c.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md);case 21:return b.call(this,aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff);case 22:return a.call(this,
aa,da,ha,P,oa,ta,G,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh)}throw Error("Invalid arity: "+arguments.length);};G.a=lb;G.b=va;G.c=U;G.C=R;G.L=K;G.ha=H;G.ja=D;G.xa=A;G.ya=y;G.ma=w;G.na=v;G.oa=u;G.pa=p;G.qa=l;G.ra=k;G.sa=g;G.ta=f;G.ua=e;G.va=d;G.wa=c;G.Yb=b;G.lb=a;return G}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.h=function(){return this.l.h?this.l.h():this.l.call(null)};h.a=function(a){return this.l.a?this.l.a(a):this.l.call(null,a)};
h.b=function(a,b){return this.l.b?this.l.b(a,b):this.l.call(null,a,b)};h.c=function(a,b,c){return this.l.c?this.l.c(a,b,c):this.l.call(null,a,b,c)};h.C=function(a,b,c,d){return this.l.C?this.l.C(a,b,c,d):this.l.call(null,a,b,c,d)};h.L=function(a,b,c,d,e){return this.l.L?this.l.L(a,b,c,d,e):this.l.call(null,a,b,c,d,e)};h.ha=function(a,b,c,d,e,f){return this.l.ha?this.l.ha(a,b,c,d,e,f):this.l.call(null,a,b,c,d,e,f)};
h.ja=function(a,b,c,d,e,f,g){return this.l.ja?this.l.ja(a,b,c,d,e,f,g):this.l.call(null,a,b,c,d,e,f,g)};h.xa=function(a,b,c,d,e,f,g,k){return this.l.xa?this.l.xa(a,b,c,d,e,f,g,k):this.l.call(null,a,b,c,d,e,f,g,k)};h.ya=function(a,b,c,d,e,f,g,k,l){return this.l.ya?this.l.ya(a,b,c,d,e,f,g,k,l):this.l.call(null,a,b,c,d,e,f,g,k,l)};h.ma=function(a,b,c,d,e,f,g,k,l,p){return this.l.ma?this.l.ma(a,b,c,d,e,f,g,k,l,p):this.l.call(null,a,b,c,d,e,f,g,k,l,p)};
h.na=function(a,b,c,d,e,f,g,k,l,p,u){return this.l.na?this.l.na(a,b,c,d,e,f,g,k,l,p,u):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u)};h.oa=function(a,b,c,d,e,f,g,k,l,p,u,v){return this.l.oa?this.l.oa(a,b,c,d,e,f,g,k,l,p,u,v):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v)};h.pa=function(a,b,c,d,e,f,g,k,l,p,u,v,w){return this.l.pa?this.l.pa(a,b,c,d,e,f,g,k,l,p,u,v,w):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w)};
h.qa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y){return this.l.qa?this.l.qa(a,b,c,d,e,f,g,k,l,p,u,v,w,y):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y)};h.ra=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){return this.l.ra?this.l.ra(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A)};h.sa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){return this.l.sa?this.l.sa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D)};
h.ta=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H){return this.l.ta?this.l.ta(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H)};h.ua=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K){return this.l.ua?this.l.ua(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K)};
h.va=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R){return this.l.va?this.l.va(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R)};h.wa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U){return this.l.wa?this.l.wa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U):this.l.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U)};
h.Yb=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va){return Yc.lb?Yc.lb(this.l,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va):Yc.call(null,this.l,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va)};function yd(a,b){return"function"==ba(a)?new Jd(a,b):null==a?null:gc(a,b)}function Kd(a){var b=null!=a;return(b?null!=a?a.o&131072||m===a.ed||(a.o?0:vb(ec,a)):vb(ec,a):b)?fc(a):null}function Ld(a){return null==a||tb(E(a))}function Nd(a){return null==a?!1:null!=a?a.o&8||m===a.Fd?!0:a.o?!1:vb(Gb,a):vb(Gb,a)}
function Od(a){return null==a?!1:null!=a?a.o&4096||m===a.Ld?!0:a.o?!1:vb(Yb,a):vb(Yb,a)}function Pd(a){return null!=a?a.o&16777216||m===a.Kd?!0:a.o?!1:vb(oc,a):vb(oc,a)}function Qd(a){return null==a?!1:null!=a?a.o&1024||m===a.cd?!0:a.o?!1:vb(Tb,a):vb(Tb,a)}function Rd(a){return null!=a?a.o&16384||m===a.Md?!0:a.o?!1:vb(ac,a):vb(ac,a)}function Sd(a){return null!=a?a.G&512||m===a.Ed?!0:!1:!1}function Td(a){var b=[];ja(a,function(a,b){return function(a,c){return b.push(c)}}(a,b));return b}
function Ud(a,b,c,d,e){for(;0!==e;)c[d]=a[b],d+=1,--e,b+=1}var Vd={};function Wd(a){return null==a?!1:!1===a?!1:!0}function Xd(a){return"number"===typeof a&&!isNaN(a)&&Infinity!==a&&parseFloat(a)===parseInt(a,10)}function Yd(a,b){return B.c(a,b,Vd)===Vd?!1:!0}
var Zd=function Zd(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return Zd.a(arguments[0]);case 2:return Zd.b(arguments[0],arguments[1]);default:return Zd.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};Zd.a=function(){return!0};Zd.b=function(a,b){return!C.b(a,b)};Zd.f=function(a,b,c){if(C.b(a,b))return!1;a=$d([a,b]);for(b=c;;){var d=I(b);c=J(b);if(r(b)){if(Yd(a,d))return!1;a=Ed.b(a,d);b=c}else return!0}};
Zd.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return Zd.f(b,a,c)};Zd.B=2;function Ad(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 2:return zd(arguments[0],arguments[1]);case 3:return Bd(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function zd(a,b){var c=E(b);if(c){var d=I(c),c=J(c);return ae?ae(a,d,c):be.call(null,a,d,c)}return a.h?a.h():a.call(null)}
function Bd(a,b,c){for(c=E(c);;)if(c){var d=I(c);b=a.b?a.b(b,d):a.call(null,b,d);c=J(c)}else return b}function be(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 2:return ce(arguments[0],arguments[1]);case 3:return ae(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}
function ce(a,b){return null!=b&&(b.o&524288||m===b.gd)?b.Da(null,a):sb(b)?kd(b,a):"string"===typeof b?kd(b,a):vb(hc,b)?jc.b(b,a):zd(a,b)}function ae(a,b,c){return null!=c&&(c.o&524288||m===c.gd)?c.Ea(null,a,b):sb(c)?ld(c,a,b):"string"===typeof c?ld(c,a,b):vb(hc,c)?jc.c(c,a,b):Bd(a,b,c)}function de(a){return a}function ee(a,b,c,d){a=a.a?a.a(b):a.call(null,b);c=ae(a,c,d);return a.a?a.a(c):a.call(null,c)}
var fe=function fe(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return fe.h();case 1:return fe.a(arguments[0]);case 2:return fe.b(arguments[0],arguments[1]);default:return fe.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};fe.h=function(){return 0};fe.a=function(a){return a};fe.b=function(a,b){return a+b};fe.f=function(a,b,c){return ae(fe,a+b,c)};fe.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return fe.f(b,a,c)};fe.B=2;
var ge=function ge(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return ge.h();case 1:return ge.a(arguments[0]);case 2:return ge.b(arguments[0],arguments[1]);default:return ge.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};ge.h=function(){return 1};ge.a=function(a){return a};ge.b=function(a,b){return a*b};ge.f=function(a,b,c){return ae(ge,a*b,c)};ge.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return ge.f(b,a,c)};ge.B=2;
function he(a){return a-1}function ie(a){if("number"===typeof a)return String.fromCharCode(a);if("string"===typeof a&&1===a.length)return a;throw Error("Argument to char must be a character or number");}function je(a){return 0<=a?Math.floor(a):Math.ceil(a)}function ke(a,b){return je((a-a%b)/b)}function le(a,b){return a-b*ke(a,b)}function me(a){a-=a>>1&1431655765;a=(a&858993459)+(a>>2&858993459);return 16843009*(a+(a>>4)&252645135)>>24}
function ne(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 1:return!0;case 2:return kc(arguments[0],arguments[1]);default:a:for(c=arguments[0],d=arguments[1],b=new F(b.slice(2),0,null);;)if(c===d)if(J(b))c=d,d=I(b),b=J(b);else{c=d===I(b);break a}else{c=!1;break a}return c}}function oe(a,b){return kc(a,b)}
var t=function t(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return t.h();case 1:return t.a(arguments[0]);default:return t.f(arguments[0],new F(c.slice(1),0,null))}};t.h=function(){return""};t.a=function(a){return null==a?"":""+a};t.f=function(a,b){for(var c=new ya(""+t(a)),d=b;;)if(r(d))c=c.append(""+t(I(d))),d=J(d);else return c.toString()};t.A=function(a){var b=I(a);a=J(a);return t.f(b,a)};t.B=1;
function pe(a,b){return a.substring(b)}function vd(a,b){var c;if(Pd(b))if(nd(a)&&nd(b)&&M(a)!==M(b))c=!1;else a:{c=E(a);for(var d=E(b);;){if(null==c){c=null==d;break a}if(null!=d&&C.b(I(c),I(d)))c=J(c),d=J(d);else{c=!1;break a}}}else c=null;return Wd(c)}function qe(a){var b=0;for(a=E(a);;)if(a){var c=I(a),b=(b+(Uc(re.a?re.a(c):re.call(null,c))^Uc(se.a?se.a(c):se.call(null,c))))%4503599627370496;a=J(a)}else return b}
function te(a,b,c,d,e){this.D=a;this.first=b;this.Ja=c;this.count=d;this.v=e;this.o=65937646;this.G=8192}h=te.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,this.count)}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){return 1===this.count?null:this.Ja};h.Z=function(){return this.count};h.ac=function(){return this.first};h.bc=function(){return Mb(this)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return gc($c,this.D)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return this.first};h.Oa=function(){return 1===this.count?$c:this.Ja};h.Y=function(){return this};h.O=function(a,b){return new te(b,this.first,this.Ja,this.count,this.v)};h.X=function(a,b){return new te(this.D,b,this,this.count+1,null)};te.prototype[zb]=function(){return bd(this)};
function ue(a){this.D=a;this.o=65937614;this.G=8192}h=ue.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){return null};h.Z=function(){return 0};h.ac=function(){return null};h.bc=function(){throw Error("Can't pop empty list");};h.S=function(){return ed};
h.F=function(a,b){return(null!=b?b.o&33554432||m===b.Hd||(b.o?0:vb(pc,b)):vb(pc,b))||Pd(b)?null==E(b):!1};h.za=function(){return this};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return null};h.Oa=function(){return $c};h.Y=function(){return null};h.O=function(a,b){return new ue(b)};h.X=function(a,b){return new te(this.D,b,null,1,null)};var $c=new ue(null);ue.prototype[zb]=function(){return bd(this)};
function ve(a){return(null!=a?a.o&134217728||m===a.Jd||(a.o?0:vb(qc,a)):vb(qc,a))?rc(a):ae(Ed,$c,a)}var we=function we(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return we.f(0<c.length?new F(c.slice(0),0,null):null)};we.f=function(a){var b;if(a instanceof F&&0===a.u)b=a.g;else a:for(b=[];;)if(null!=a)b.push(a.Aa(null)),a=a.Ka(null);else break a;a=b.length;for(var c=$c;;)if(0<a){var d=a-1,c=c.X(null,b[a-1]);a=d}else return c};we.B=0;we.A=function(a){return we.f(E(a))};
function xe(a,b,c,d){this.D=a;this.first=b;this.Ja=c;this.v=d;this.o=65929452;this.G=8192}h=xe.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){return null==this.Ja?null:E(this.Ja)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.D)};
h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return this.first};h.Oa=function(){return null==this.Ja?$c:this.Ja};h.Y=function(){return this};h.O=function(a,b){return new xe(b,this.first,this.Ja,this.v)};h.X=function(a,b){return new xe(null,b,this,null)};xe.prototype[zb]=function(){return bd(this)};function wd(a,b){var c=null==b;return(c?c:null!=b&&(b.o&64||m===b.Ha))?new xe(null,a,b,null):new xe(null,a,E(b),null)}
function S(a,b,c,d){this.jc=a;this.name=b;this.La=c;this.Ob=d;this.o=2153775105;this.G=4096}h=S.prototype;h.toString=function(){return[t(":"),t(this.La)].join("")};h.equiv=function(a){return this.F(null,a)};h.F=function(a,b){return b instanceof S?this.La===b.La:!1};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return B.b(c,this);case 3:return B.c(c,this,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return B.b(c,this)};a.c=function(a,c,d){return B.c(c,this,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return B.b(a,this)};h.b=function(a,b){return B.c(a,this,b)};h.S=function(){var a=this.Ob;return null!=a?a:this.Ob=a=Vc(this)+2654435769|0};
h.Zb=function(){return this.name};h.$b=function(){return this.jc};h.U=function(a,b){return x(b,[t(":"),t(this.La)].join(""))};function T(a,b){return a===b?!0:a instanceof S&&b instanceof S?a.La===b.La:!1}function ye(a){if(null!=a&&(a.G&4096||m===a.fd))return a.$b(null);throw Error([t("Doesn't support namespace: "),t(a)].join(""));}
var ze=function ze(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return ze.a(arguments[0]);case 2:return ze.b(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};ze.a=function(a){if(a instanceof S)return a;if(a instanceof z)return new S(ye(a),Ae.a?Ae.a(a):Ae.call(null,a),a.Eb,null);if("string"===typeof a){var b=a.split("/");return 2===b.length?new S(b[0],b[1],a,null):new S(null,b[0],a,null)}return null};
ze.b=function(a,b){var c=a instanceof S?Ae.a?Ae.a(a):Ae.call(null,a):a instanceof z?Ae.a?Ae.a(a):Ae.call(null,a):a,d=b instanceof S?Ae.a?Ae.a(b):Ae.call(null,b):b instanceof z?Ae.a?Ae.a(b):Ae.call(null,b):b;return new S(c,d,[t(r(c)?[t(c),t("/")].join(""):null),t(d)].join(""),null)};ze.B=2;function Be(a,b,c,d){this.D=a;this.Kb=b;this.P=c;this.v=d;this.o=32374988;this.G=1}h=Be.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
function Ce(a){null!=a.Kb&&(a.P=a.Kb.h?a.Kb.h():a.Kb.call(null),a.Kb=null);return a.P}h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){nc(this);return null==this.P?null:J(this.P)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};
h.za=function(){return yd($c,this.D)};h.Mc=function(){return tb(this.Kb)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){nc(this);return null==this.P?null:I(this.P)};h.Oa=function(){nc(this);return null!=this.P?Zc(this.P):$c};h.Y=function(){Ce(this);if(null==this.P)return null;for(var a=this.P;;)if(a instanceof Be)a=Ce(a);else return this.P=a,E(this.P)};h.O=function(a,b){return new Be(b,this.Kb,this.P,this.v)};h.X=function(a,b){return wd(b,this)};
Be.prototype[zb]=function(){return bd(this)};function De(a,b){this.qc=a;this.end=b;this.o=2;this.G=0}De.prototype.add=function(a){this.qc[this.end]=a;return this.end+=1};De.prototype.ia=function(){var a=new Ee(this.qc,0,this.end);this.qc=null;return a};De.prototype.Z=function(){return this.end};function Fe(a){return new De(Array(a),0)}function Ee(a,b,c){this.g=a;this.Ba=b;this.end=c;this.o=524306;this.G=0}h=Ee.prototype;h.Z=function(){return this.end-this.Ba};
h.ca=function(a,b){return this.g[this.Ba+b]};h.Qa=function(a,b,c){return 0<=b&&b<this.end-this.Ba?this.g[this.Ba+b]:c};h.Jc=function(){if(this.Ba===this.end)throw Error("-drop-first of empty chunk");return new Ee(this.g,this.Ba+1,this.end)};h.Da=function(a,b){return md(this.g,b,this.g[this.Ba],this.Ba+1)};h.Ea=function(a,b,c){return md(this.g,b,c,this.Ba)};function Ge(a,b,c,d){this.ia=a;this.ob=b;this.D=c;this.v=d;this.o=31850732;this.G=1536}h=Ge.prototype;h.toString=function(){return Mc(this)};
h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){if(1<Eb(this.ia))return new Ge(Bc(this.ia),this.ob,this.D,null);var a=nc(this.ob);return null==a?null:a};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};
h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.D)};h.Aa=function(){return Jb.b(this.ia,0)};h.Oa=function(){return 1<Eb(this.ia)?new Ge(Bc(this.ia),this.ob,this.D,null):null==this.ob?$c:this.ob};h.Y=function(){return this};h.tc=function(){return this.ia};h.uc=function(){return null==this.ob?$c:this.ob};h.O=function(a,b){return new Ge(this.ia,this.ob,b,this.v)};h.X=function(a,b){return wd(b,this)};h.sc=function(){return null==this.ob?null:this.ob};Ge.prototype[zb]=function(){return bd(this)};
function He(a,b){return 0===Eb(a)?b:new Ge(a,b,null,null)}function Ie(a,b){a.add(b)}function Je(a){for(var b=[];;)if(E(a))b.push(I(a)),a=J(a);else return b}function Ke(a,b){if(nd(b))return M(b);for(var c=0,d=E(b);;)if(null!=d&&c<a)c+=1,d=J(d);else return c}
var Le=function Le(b){var c;if(null==b)c=null;else if(null==J(b))c=E(I(b));else{c=wd;var d=I(b);b=J(b);b=Le.a?Le.a(b):Le.call(null,b);c=c(d,b)}return c},Me=function Me(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return Me.h();case 1:return Me.a(arguments[0]);case 2:return Me.b(arguments[0],arguments[1]);default:return Me.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};
Me.h=function(){return new Be(null,function(){return null},null,null)};Me.a=function(a){return new Be(null,function(){return a},null,null)};Me.b=function(a,b){return new Be(null,function(){var c=E(a);return c?Sd(c)?He(Cc(c),Me.b(Dc(c),b)):wd(I(c),Me.b(Zc(c),b)):b},null,null)};Me.f=function(a,b,c){return function e(a,b){return new Be(null,function(){var c=E(a);return c?Sd(c)?He(Cc(c),e(Dc(c),b)):wd(I(c),e(Zc(c),b)):r(b)?e(I(b),J(b)):null},null,null)}(Me.b(a,b),c)};
Me.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return Me.f(b,a,c)};Me.B=2;var Ne=function Ne(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return Ne.h();case 1:return Ne.a(arguments[0]);case 2:return Ne.b(arguments[0],arguments[1]);default:return Ne.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};Ne.h=function(){return wc(Fd)};Ne.a=function(a){return a};Ne.b=function(a,b){return xc(a,b)};
Ne.f=function(a,b,c){for(;;)if(a=xc(a,b),r(c))b=I(c),c=J(c);else return a};Ne.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return Ne.f(b,a,c)};Ne.B=2;
function Oe(a,b,c){var d=E(c);if(0===b)return a.h?a.h():a.call(null);c=Lb(d);var e=Mb(d);if(1===b)return a.a?a.a(c):a.a?a.a(c):a.call(null,c);var d=Lb(e),f=Mb(e);if(2===b)return a.b?a.b(c,d):a.b?a.b(c,d):a.call(null,c,d);var e=Lb(f),g=Mb(f);if(3===b)return a.c?a.c(c,d,e):a.c?a.c(c,d,e):a.call(null,c,d,e);var f=Lb(g),k=Mb(g);if(4===b)return a.C?a.C(c,d,e,f):a.C?a.C(c,d,e,f):a.call(null,c,d,e,f);var g=Lb(k),l=Mb(k);if(5===b)return a.L?a.L(c,d,e,f,g):a.L?a.L(c,d,e,f,g):a.call(null,c,d,e,f,g);var k=Lb(l),
p=Mb(l);if(6===b)return a.ha?a.ha(c,d,e,f,g,k):a.ha?a.ha(c,d,e,f,g,k):a.call(null,c,d,e,f,g,k);var l=Lb(p),u=Mb(p);if(7===b)return a.ja?a.ja(c,d,e,f,g,k,l):a.ja?a.ja(c,d,e,f,g,k,l):a.call(null,c,d,e,f,g,k,l);var p=Lb(u),v=Mb(u);if(8===b)return a.xa?a.xa(c,d,e,f,g,k,l,p):a.xa?a.xa(c,d,e,f,g,k,l,p):a.call(null,c,d,e,f,g,k,l,p);var u=Lb(v),w=Mb(v);if(9===b)return a.ya?a.ya(c,d,e,f,g,k,l,p,u):a.ya?a.ya(c,d,e,f,g,k,l,p,u):a.call(null,c,d,e,f,g,k,l,p,u);var v=Lb(w),y=Mb(w);if(10===b)return a.ma?a.ma(c,
d,e,f,g,k,l,p,u,v):a.ma?a.ma(c,d,e,f,g,k,l,p,u,v):a.call(null,c,d,e,f,g,k,l,p,u,v);var w=Lb(y),A=Mb(y);if(11===b)return a.na?a.na(c,d,e,f,g,k,l,p,u,v,w):a.na?a.na(c,d,e,f,g,k,l,p,u,v,w):a.call(null,c,d,e,f,g,k,l,p,u,v,w);var y=Lb(A),D=Mb(A);if(12===b)return a.oa?a.oa(c,d,e,f,g,k,l,p,u,v,w,y):a.oa?a.oa(c,d,e,f,g,k,l,p,u,v,w,y):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y);var A=Lb(D),H=Mb(D);if(13===b)return a.pa?a.pa(c,d,e,f,g,k,l,p,u,v,w,y,A):a.pa?a.pa(c,d,e,f,g,k,l,p,u,v,w,y,A):a.call(null,c,d,e,f,g,k,l,
p,u,v,w,y,A);var D=Lb(H),K=Mb(H);if(14===b)return a.qa?a.qa(c,d,e,f,g,k,l,p,u,v,w,y,A,D):a.qa?a.qa(c,d,e,f,g,k,l,p,u,v,w,y,A,D):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D);var H=Lb(K),R=Mb(K);if(15===b)return a.ra?a.ra(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):a.ra?a.ra(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H);var K=Lb(R),U=Mb(R);if(16===b)return a.sa?a.sa(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):a.sa?a.sa(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K);var R=
Lb(U),va=Mb(U);if(17===b)return a.ta?a.ta(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R):a.ta?a.ta(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R);var U=Lb(va),lb=Mb(va);if(18===b)return a.ua?a.ua(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U):a.ua?a.ua(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U);va=Lb(lb);lb=Mb(lb);if(19===b)return a.va?a.va(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va):a.va?a.va(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va):a.call(null,
c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va);var G=Lb(lb);Mb(lb);if(20===b)return a.wa?a.wa(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va,G):a.wa?a.wa(c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va,G):a.call(null,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va,G);throw Error("Only up to 20 arguments supported on functions");}
function Yc(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 2:return Pe(arguments[0],arguments[1]);case 3:return Qe(arguments[0],arguments[1],arguments[2]);case 4:return Re(arguments[0],arguments[1],arguments[2],arguments[3]);case 5:return Se(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);default:return Te(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],new F(b.slice(5),0,null))}}
function Pe(a,b){var c=a.B;if(a.A){var d=Ke(c+1,b);return d<=c?Oe(a,d,b):a.A(b)}return a.apply(a,Je(b))}function Qe(a,b,c){b=wd(b,c);c=a.B;if(a.A){var d=Ke(c+1,b);return d<=c?Oe(a,d,b):a.A(b)}return a.apply(a,Je(b))}function Re(a,b,c,d){b=wd(b,wd(c,d));c=a.B;return a.A?(d=Ke(c+1,b),d<=c?Oe(a,d,b):a.A(b)):a.apply(a,Je(b))}function Se(a,b,c,d,e){b=wd(b,wd(c,wd(d,e)));c=a.B;return a.A?(d=Ke(c+1,b),d<=c?Oe(a,d,b):a.A(b)):a.apply(a,Je(b))}
function Te(a,b,c,d,e,f){b=wd(b,wd(c,wd(d,wd(e,Le(f)))));c=a.B;return a.A?(d=Ke(c+1,b),d<=c?Oe(a,d,b):a.A(b)):a.apply(a,Je(b))}function Ue(a){return E(a)?a:null}
function Ve(){"undefined"===typeof cb&&(cb=function(a){this.rd=a;this.o=393216;this.G=0},cb.prototype.O=function(a,b){return new cb(b)},cb.prototype.N=function(){return this.rd},cb.prototype.Ia=function(){return!1},cb.prototype.next=function(){return Error("No such element")},cb.prototype.remove=function(){return Error("Unsupported operation")},cb.Tb=function(){return new V(null,1,5,W,[We],null)},cb.zb=!0,cb.nb="cljs.core/t_cljs$core10598",cb.Hb=function(a,b){return x(b,"cljs.core/t_cljs$core10598")});
return new cb(X)}function Xe(a,b){for(;;){if(null==E(b))return!0;var c;c=I(b);c=a.a?a.a(c):a.call(null,c);if(r(c)){c=a;var d=J(b);a=c;b=d}else return!1}}function Ye(a,b){for(;;)if(E(b)){var c;c=I(b);c=a.a?a.a(c):a.call(null,c);if(r(c))return c;c=a;var d=J(b);a=c;b=d}else return null}
var Ze=function Ze(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return Ze.h();case 1:return Ze.a(arguments[0]);case 2:return Ze.b(arguments[0],arguments[1]);case 3:return Ze.c(arguments[0],arguments[1],arguments[2]);default:return Ze.f(arguments[0],arguments[1],arguments[2],new F(c.slice(3),0,null))}};Ze.h=function(){return de};Ze.a=function(a){return a};
Ze.b=function(a,b){return function(){function c(c,d,e){c=b.c?b.c(c,d,e):b.call(null,c,d,e);return a.a?a.a(c):a.call(null,c)}function d(c,d){var e=b.b?b.b(c,d):b.call(null,c,d);return a.a?a.a(e):a.call(null,e)}function e(c){c=b.a?b.a(c):b.call(null,c);return a.a?a.a(c):a.call(null,c)}function f(){var c=b.h?b.h():b.call(null);return a.a?a.a(c):a.call(null,c)}var g=null,k=function(){function c(a,b,c,e){var f=null;if(3<arguments.length){for(var f=0,g=Array(arguments.length-3);f<g.length;)g[f]=arguments[f+
3],++f;f=new F(g,0)}return d.call(this,a,b,c,f)}function d(c,d,e,f){c=Se(b,c,d,e,f);return a.a?a.a(c):a.call(null,c)}c.B=3;c.A=function(a){var b=I(a);a=J(a);var c=I(a);a=J(a);var e=I(a);a=Zc(a);return d(b,c,e,a)};c.f=d;return c}(),g=function(a,b,g,v){switch(arguments.length){case 0:return f.call(this);case 1:return e.call(this,a);case 2:return d.call(this,a,b);case 3:return c.call(this,a,b,g);default:var l=null;if(3<arguments.length){for(var l=0,p=Array(arguments.length-3);l<p.length;)p[l]=arguments[l+
3],++l;l=new F(p,0)}return k.f(a,b,g,l)}throw Error("Invalid arity: "+arguments.length);};g.B=3;g.A=k.A;g.h=f;g.a=e;g.b=d;g.c=c;g.f=k.f;return g}()};
Ze.c=function(a,b,c){return function(){function d(d,e,f){d=c.c?c.c(d,e,f):c.call(null,d,e,f);d=b.a?b.a(d):b.call(null,d);return a.a?a.a(d):a.call(null,d)}function e(d,e){var f;f=c.b?c.b(d,e):c.call(null,d,e);f=b.a?b.a(f):b.call(null,f);return a.a?a.a(f):a.call(null,f)}function f(d){d=c.a?c.a(d):c.call(null,d);d=b.a?b.a(d):b.call(null,d);return a.a?a.a(d):a.call(null,d)}function g(){var d;d=c.h?c.h():c.call(null);d=b.a?b.a(d):b.call(null,d);return a.a?a.a(d):a.call(null,d)}var k=null,l=function(){function d(a,
b,c,d){var f=null;if(3<arguments.length){for(var f=0,g=Array(arguments.length-3);f<g.length;)g[f]=arguments[f+3],++f;f=new F(g,0)}return e.call(this,a,b,c,f)}function e(d,e,f,g){d=Se(c,d,e,f,g);d=b.a?b.a(d):b.call(null,d);return a.a?a.a(d):a.call(null,d)}d.B=3;d.A=function(a){var b=I(a);a=J(a);var c=I(a);a=J(a);var d=I(a);a=Zc(a);return e(b,c,d,a)};d.f=e;return d}(),k=function(a,b,c,k){switch(arguments.length){case 0:return g.call(this);case 1:return f.call(this,a);case 2:return e.call(this,a,b);
case 3:return d.call(this,a,b,c);default:var p=null;if(3<arguments.length){for(var p=0,u=Array(arguments.length-3);p<u.length;)u[p]=arguments[p+3],++p;p=new F(u,0)}return l.f(a,b,c,p)}throw Error("Invalid arity: "+arguments.length);};k.B=3;k.A=l.A;k.h=g;k.a=f;k.b=e;k.c=d;k.f=l.f;return k}()};
Ze.f=function(a,b,c,d){return function(a){return function(){function b(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(b){b=Pe(I(a),b);for(var c=J(a);;)if(c)b=I(c).call(null,b),c=J(c);else return b}b.B=0;b.A=function(a){a=E(a);return c(a)};b.f=c;return b}()}(ve(wd(a,wd(b,wd(c,d)))))};Ze.A=function(a){var b=I(a),c=J(a);a=I(c);var d=J(c),c=I(d),d=J(d);return Ze.f(b,a,c,d)};Ze.B=3;
function $e(a){var b=af;return function(){function c(c,d,e){return b.C?b.C(a,c,d,e):b.call(null,a,c,d,e)}function d(c,d){return b.c?b.c(a,c,d):b.call(null,a,c,d)}function e(c){return b.b?b.b(a,c):b.call(null,a,c)}function f(){return b.a?b.a(a):b.call(null,a)}var g=null,k=function(){function c(a,b,c,e){var f=null;if(3<arguments.length){for(var f=0,g=Array(arguments.length-3);f<g.length;)g[f]=arguments[f+3],++f;f=new F(g,0)}return d.call(this,a,b,c,f)}function d(c,d,e,f){return Te(b,a,c,d,e,N([f],0))}
c.B=3;c.A=function(a){var b=I(a);a=J(a);var c=I(a);a=J(a);var e=I(a);a=Zc(a);return d(b,c,e,a)};c.f=d;return c}(),g=function(a,b,g,v){switch(arguments.length){case 0:return f.call(this);case 1:return e.call(this,a);case 2:return d.call(this,a,b);case 3:return c.call(this,a,b,g);default:var l=null;if(3<arguments.length){for(var l=0,p=Array(arguments.length-3);l<p.length;)p[l]=arguments[l+3],++l;l=new F(p,0)}return k.f(a,b,g,l)}throw Error("Invalid arity: "+arguments.length);};g.B=3;g.A=k.A;g.h=f;g.a=
e;g.b=d;g.c=c;g.f=k.f;return g}()}
function bf(){return function(){function a(a,b,c){a=null==a?0:a;return hd.c?hd.c(a,b,c):hd.call(null,a)}function b(a,b){var c=null==a?0:a;return hd.b?hd.b(c,b):hd.call(null,c)}function c(a){a=null==a?0:a;return hd.a?hd.a(a):hd.call(null,a)}var d=null,e=function(){function a(a,c,d,e){var f=null;if(3<arguments.length){for(var f=0,g=Array(arguments.length-3);f<g.length;)g[f]=arguments[f+3],++f;f=new F(g,0)}return b.call(this,a,c,d,f)}function b(a,b,c,d){return Se(hd,null==a?0:a,b,c,d)}a.B=3;a.A=function(a){var c=
I(a);a=J(a);var d=I(a);a=J(a);var e=I(a);a=Zc(a);return b(c,d,e,a)};a.f=b;return a}(),d=function(d,g,k,l){switch(arguments.length){case 1:return c.call(this,d);case 2:return b.call(this,d,g);case 3:return a.call(this,d,g,k);default:var f=null;if(3<arguments.length){for(var f=0,u=Array(arguments.length-3);f<u.length;)u[f]=arguments[f+3],++f;f=new F(u,0)}return e.f(d,g,k,f)}throw Error("Invalid arity: "+arguments.length);};d.B=3;d.A=e.A;d.a=c;d.b=b;d.c=a;d.f=e.f;return d}()}
function cf(a,b){return function d(b,f){return new Be(null,function(){var e=E(f);if(e){if(Sd(e)){for(var k=Cc(e),l=M(k),p=Fe(l),u=0;;)if(u<l)Ie(p,function(){var d=b+u,e=Jb.b(k,u);return a.b?a.b(d,e):a.call(null,d,e)}()),u+=1;else break;return He(p.ia(),d(b+l,Dc(e)))}return wd(function(){var d=I(e);return a.b?a.b(b,d):a.call(null,b,d)}(),d(b+1,Zc(e)))}return null},null,null)}(0,b)}function df(a,b,c,d){this.state=a;this.D=b;this.Dd=c;this.Xc=d;this.G=16386;this.o=6455296}h=df.prototype;
h.equiv=function(a){return this.F(null,a)};h.F=function(a,b){return this===b};h.Xb=function(){return this.state};h.N=function(){return this.D};h.Oc=function(a,b,c){a=E(this.Xc);for(var d=null,e=0,f=0;;)if(f<e){var g=d.ca(null,f),k=O(g,0,null),g=O(g,1,null);g.C?g.C(k,this,b,c):g.call(null,k,this,b,c);f+=1}else if(a=E(a))Sd(a)?(d=Cc(a),a=Dc(a),k=d,e=M(d),d=k):(d=I(a),k=O(d,0,null),g=O(d,1,null),g.C?g.C(k,this,b,c):g.call(null,k,this,b,c),a=J(a),d=null,e=0),f=0;else return null};h.S=function(){return ca(this)};
function ef(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 1:return Y(arguments[0]);default:return c=arguments[0],b=new F(b.slice(1),0,null),d=null!=b&&(b.o&64||m===b.Ha)?Pe(gf,b):b,b=B.b(d,ob),d=B.b(d,hf),new df(c,b,d,null)}}function Y(a){return new df(a,null,null,null)}
function jf(a,b){if(a instanceof df){var c=a.Dd;if(null!=c&&!r(c.a?c.a(b):c.call(null,b)))throw Error("Validator rejected reference state");c=a.state;a.state=b;null!=a.Xc&&vc(a,c,b);return b}return Ic(a,b)}
var kf=function kf(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return kf.b(arguments[0],arguments[1]);case 3:return kf.c(arguments[0],arguments[1],arguments[2]);case 4:return kf.C(arguments[0],arguments[1],arguments[2],arguments[3]);default:return kf.f(arguments[0],arguments[1],arguments[2],arguments[3],new F(c.slice(4),0,null))}};
kf.b=function(a,b){var c;a instanceof df?(c=a.state,c=b.a?b.a(c):b.call(null,c),c=jf(a,c)):c=Jc.b(a,b);return c};kf.c=function(a,b,c){if(a instanceof df){var d=a.state;b=b.b?b.b(d,c):b.call(null,d,c);a=jf(a,b)}else a=Jc.c(a,b,c);return a};kf.C=function(a,b,c,d){if(a instanceof df){var e=a.state;b=b.c?b.c(e,c,d):b.call(null,e,c,d);a=jf(a,b)}else a=Jc.C(a,b,c,d);return a};kf.f=function(a,b,c,d,e){return a instanceof df?jf(a,Se(b,a.state,c,d,e)):Jc.L(a,b,c,d,e)};
kf.A=function(a){var b=I(a),c=J(a);a=I(c);var d=J(c),c=I(d),e=J(d),d=I(e),e=J(e);return kf.f(b,a,c,d,e)};kf.B=4;
function lf(a,b){return function(){function c(c,d,e){return Wd(function(){var f=a.a?a.a(c):a.call(null,c);return r(f)&&(f=a.a?a.a(d):a.call(null,d),r(f)&&(f=a.a?a.a(e):a.call(null,e),r(f)&&(f=b.a?b.a(c):b.call(null,c),r(f))))?(f=b.a?b.a(d):b.call(null,d),r(f)?b.a?b.a(e):b.call(null,e):f):f}())}function d(c,d){return Wd(function(){var e=a.a?a.a(c):a.call(null,c);return r(e)&&(e=a.a?a.a(d):a.call(null,d),r(e))?(e=b.a?b.a(c):b.call(null,c),r(e)?b.a?b.a(d):b.call(null,d):e):e}())}function e(c){var d=
a.a?a.a(c):a.call(null,c);c=r(d)?b.a?b.a(c):b.call(null,c):d;return Wd(c)}var f=null,g=function(){function c(a,b,c,e){var f=null;if(3<arguments.length){for(var f=0,g=Array(arguments.length-3);f<g.length;)g[f]=arguments[f+3],++f;f=new F(g,0)}return d.call(this,a,b,c,f)}function d(c,d,e,g){return Wd(function(){var k=f.c(c,d,e);return r(k)?Xe(function(){return function(c){var d=a.a?a.a(c):a.call(null,c);return r(d)?b.a?b.a(c):b.call(null,c):d}}(k),g):k}())}c.B=3;c.A=function(a){var b=I(a);a=J(a);var c=
I(a);a=J(a);var e=I(a);a=Zc(a);return d(b,c,e,a)};c.f=d;return c}(),f=function(a,b,f,u){switch(arguments.length){case 0:return!0;case 1:return e.call(this,a);case 2:return d.call(this,a,b);case 3:return c.call(this,a,b,f);default:var k=null;if(3<arguments.length){for(var k=0,l=Array(arguments.length-3);k<l.length;)l[k]=arguments[k+3],++k;k=new F(l,0)}return g.f(a,b,f,k)}throw Error("Invalid arity: "+arguments.length);};f.B=3;f.A=g.A;f.h=function(){return!0};f.a=e;f.b=d;f.c=c;f.f=g.f;return f}()}
var mf=function mf(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return mf.a(arguments[0]);case 2:return mf.b(arguments[0],arguments[1]);case 3:return mf.c(arguments[0],arguments[1],arguments[2]);case 4:return mf.C(arguments[0],arguments[1],arguments[2],arguments[3]);default:return mf.f(arguments[0],arguments[1],arguments[2],arguments[3],new F(c.slice(4),0,null))}};
mf.a=function(a){return function(b){return function(){function c(c,d){var e=a.a?a.a(d):a.call(null,d);return b.b?b.b(c,e):b.call(null,c,e)}function d(a){return b.a?b.a(a):b.call(null,a)}function e(){return b.h?b.h():b.call(null)}var f=null,g=function(){function c(a,b,c){var e=null;if(2<arguments.length){for(var e=0,f=Array(arguments.length-2);e<f.length;)f[e]=arguments[e+2],++e;e=new F(f,0)}return d.call(this,a,b,e)}function d(c,d,e){d=Qe(a,d,e);return b.b?b.b(c,d):b.call(null,c,d)}c.B=2;c.A=function(a){var b=
I(a);a=J(a);var c=I(a);a=Zc(a);return d(b,c,a)};c.f=d;return c}(),f=function(a,b,f){switch(arguments.length){case 0:return e.call(this);case 1:return d.call(this,a);case 2:return c.call(this,a,b);default:var k=null;if(2<arguments.length){for(var k=0,l=Array(arguments.length-2);k<l.length;)l[k]=arguments[k+2],++k;k=new F(l,0)}return g.f(a,b,k)}throw Error("Invalid arity: "+arguments.length);};f.B=2;f.A=g.A;f.h=e;f.a=d;f.b=c;f.f=g.f;return f}()}};
mf.b=function(a,b){return new Be(null,function(){var c=E(b);if(c){if(Sd(c)){for(var d=Cc(c),e=M(d),f=Fe(e),g=0;;)if(g<e)Ie(f,function(){var b=Jb.b(d,g);return a.a?a.a(b):a.call(null,b)}()),g+=1;else break;return He(f.ia(),mf.b(a,Dc(c)))}return wd(function(){var b=I(c);return a.a?a.a(b):a.call(null,b)}(),mf.b(a,Zc(c)))}return null},null,null)};
mf.c=function(a,b,c){return new Be(null,function(){var d=E(b),e=E(c);if(d&&e){var f=wd,g;g=I(d);var k=I(e);g=a.b?a.b(g,k):a.call(null,g,k);d=f(g,mf.c(a,Zc(d),Zc(e)))}else d=null;return d},null,null)};mf.C=function(a,b,c,d){return new Be(null,function(){var e=E(b),f=E(c),g=E(d);if(e&&f&&g){var k=wd,l;l=I(e);var p=I(f),u=I(g);l=a.c?a.c(l,p,u):a.call(null,l,p,u);e=k(l,mf.C(a,Zc(e),Zc(f),Zc(g)))}else e=null;return e},null,null)};
mf.f=function(a,b,c,d,e){var f=function k(a){return new Be(null,function(){var b=mf.b(E,a);return Xe(de,b)?wd(mf.b(I,b),k(mf.b(Zc,b))):null},null,null)};return mf.b(function(){return function(b){return Pe(a,b)}}(f),f(Ed.f(e,d,N([c,b],0))))};mf.A=function(a){var b=I(a),c=J(a);a=I(c);var d=J(c),c=I(d),e=J(d),d=I(e),e=J(e);return mf.f(b,a,c,d,e)};mf.B=4;
function nf(a,b){if("number"!==typeof a)throw Error("Assert failed: (number? n)");return new Be(null,function(){if(0<a){var c=E(b);return c?wd(I(c),nf(a-1,Zc(c))):null}return null},null,null)}function of(a,b){if("number"!==typeof a)throw Error("Assert failed: (number? n)");return new Be(null,function(c){return function(){return c(a,b)}}(function(a,b){for(;;){var c=E(b);if(0<a&&c){var d=a-1,c=Zc(c);a=d;b=c}else return c}}),null,null)}function pf(a){return mf.c(function(a){return a},a,of(1,a))}
var qf=function qf(b){return new Be(null,function(){var c=E(b);return c?Me.b(c,qf.a?qf.a(c):qf.call(null,c)):null},null,null)};function rf(a){return new Be(null,function(){return wd(a,rf(a))},null,null)}function sf(a,b){return nf(a,rf(b))}
var tf=function tf(b,c){return wd(c,new Be(null,function(){var d=b.a?b.a(c):b.call(null,c);return tf.b?tf.b(b,d):tf.call(null,b,d)},null,null))},uf=function uf(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 2:return uf.b(arguments[0],arguments[1]);default:return uf.f(arguments[0],arguments[1],new F(c.slice(2),0,null))}};
uf.b=function(a,b){return new Be(null,function(){var c=E(a),d=E(b);return c&&d?wd(I(c),wd(I(d),uf.b(Zc(c),Zc(d)))):null},null,null)};uf.f=function(a,b,c){return new Be(null,function(){var d=mf.b(E,Ed.f(c,b,N([a],0)));return Xe(de,d)?Me.b(mf.b(I,d),Pe(uf,mf.b(Zc,d))):null},null,null)};uf.A=function(a){var b=I(a),c=J(a);a=I(c);c=J(c);return uf.f(b,a,c)};uf.B=2;function vf(a,b){return of(1,uf.b(rf(a),b))}function wf(a,b){return Pe(Me,Qe(mf,a,b))}
function xf(a,b){return new Be(null,function(){var c=E(b);if(c){if(Sd(c)){for(var d=Cc(c),e=M(d),f=Fe(e),g=0;;)if(g<e){var k;k=Jb.b(d,g);k=a.a?a.a(k):a.call(null,k);r(k)&&Ie(f,Jb.b(d,g));g+=1}else break;return He(f.ia(),xf(a,Dc(c)))}d=I(c);c=Zc(c);return r(a.a?a.a(d):a.call(null,d))?wd(d,xf(a,c)):xf(a,c)}return null},null,null)}
var yf=function yf(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 0:return yf.h();case 1:return yf.a(arguments[0]);case 2:return yf.b(arguments[0],arguments[1]);case 3:return yf.c(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};yf.h=function(){return Fd};yf.a=function(a){return a};
yf.b=function(a,b){return null!=a?null!=a&&(a.G&4||m===a.Zc)?yd(yc(ae(xc,wc(a),b)),Kd(a)):ae(Hb,a,b):ae(Ed,$c,b)};yf.c=function(a,b,c){return null!=a&&(a.G&4||m===a.Zc)?yd(yc(ee(b,Ne,wc(a),c)),Kd(a)):ee(b,Ed,a,c)};yf.B=3;function zf(a,b,c){return yf.b(Fd,mf.c(a,b,c))}
var Af=function Af(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 3:return Af.c(arguments[0],arguments[1],arguments[2]);case 4:return Af.C(arguments[0],arguments[1],arguments[2],arguments[3]);case 5:return Af.L(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);case 6:return Af.ha(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);default:return Af.f(arguments[0],arguments[1],arguments[2],arguments[3],
arguments[4],arguments[5],new F(c.slice(6),0,null))}};Af.c=function(a,b,c){b=E(b);var d=I(b);return(b=J(b))?Q.c(a,d,Af.c(B.b(a,d),b,c)):Q.c(a,d,function(){var b=B.b(a,d);return c.a?c.a(b):c.call(null,b)}())};Af.C=function(a,b,c,d){b=E(b);var e=I(b);return(b=J(b))?Q.c(a,e,Af.C(B.b(a,e),b,c,d)):Q.c(a,e,function(){var b=B.b(a,e);return c.b?c.b(b,d):c.call(null,b,d)}())};
Af.L=function(a,b,c,d,e){b=E(b);var f=I(b);return(b=J(b))?Q.c(a,f,Af.L(B.b(a,f),b,c,d,e)):Q.c(a,f,function(){var b=B.b(a,f);return c.c?c.c(b,d,e):c.call(null,b,d,e)}())};Af.ha=function(a,b,c,d,e,f){b=E(b);var g=I(b);return(b=J(b))?Q.c(a,g,Af.ha(B.b(a,g),b,c,d,e,f)):Q.c(a,g,function(){var b=B.b(a,g);return c.C?c.C(b,d,e,f):c.call(null,b,d,e,f)}())};Af.f=function(a,b,c,d,e,f,g){var k=E(b);b=I(k);return(k=J(k))?Q.c(a,b,Te(Af,B.b(a,b),k,c,d,N([e,f,g],0))):Q.c(a,b,Te(c,B.b(a,b),d,e,f,N([g],0)))};
Af.A=function(a){var b=I(a),c=J(a);a=I(c);var d=J(c),c=I(d),e=J(d),d=I(e),f=J(e),e=I(f),g=J(f),f=I(g),g=J(g);return Af.f(b,a,c,d,e,f,g)};Af.B=6;function Bf(a){var b=Cf,c=Df,d=new q(null,1,[Ef,Ff],null);return Q.c(a,b,function(){var e=B.b(a,b);return c.b?c.b(e,d):c.call(null,e,d)}())}function Gf(a,b){this.$=a;this.g=b}
function Hf(a){return new Gf(a,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null])}function If(a,b,c){a.g[b]=c}function Jf(a){return new Gf(a.$,Cb(a.g))}function Kf(a){a=a.s;return 32>a?0:a-1>>>5<<5}function Lf(a,b,c){for(;;){if(0===b)return c;var d=Hf(a);d.g[0]=c;c=d;b-=5}}
var Mf=function Mf(b,c,d,e){var f=Jf(d),g=b.s-1>>>c&31;5===c?f.g[g]=e:(d=d.g[g],null!=d?(c-=5,b=Mf.C?Mf.C(b,c,d,e):Mf.call(null,b,c,d,e)):b=Lf(null,c-5,e),f.g[g]=b);return f};function Nf(a,b){throw Error([t("No item "),t(a),t(" in vector of length "),t(b)].join(""));}function Of(a,b){if(b>=Kf(a))return a.Fa;for(var c=a.root,d=a.shift;;)if(0<d)var e=d-5,c=c.g[b>>>d&31],d=e;else return c.g}function Pf(a,b){return 0<=b&&b<a.s?Of(a,b):Nf(b,a.s)}
var Qf=function Qf(b,c,d,e,f){var g=Jf(d);if(0===c)g.g[e&31]=f;else{var k=e>>>c&31;c-=5;d=d.g[k];b=Qf.L?Qf.L(b,c,d,e,f):Qf.call(null,b,c,d,e,f);If(g,k,b)}return g},Rf=function Rf(b,c,d){var e=b.s-2>>>c&31;if(5<c){c-=5;var f=d.g[e];b=Rf.c?Rf.c(b,c,f):Rf.call(null,b,c,f);if(null==b&&0===e)return null;d=Jf(d);d.g[e]=b;return d}if(0===e)return null;d=Jf(d);d.g[e]=null;return d};function Sf(a,b,c,d,e,f){this.u=a;this.pc=b;this.g=c;this.eb=d;this.start=e;this.end=f}
Sf.prototype.Ia=function(){return this.u<this.end};Sf.prototype.next=function(){32===this.u-this.pc&&(this.g=Of(this.eb,this.u),this.pc+=32);var a=this.g[this.u&31];this.u+=1;return a};function V(a,b,c,d,e,f){this.D=a;this.s=b;this.shift=c;this.root=d;this.Fa=e;this.v=f;this.o=167668511;this.G=8196}h=V.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){return"number"===typeof b?Jb.c(this,b,c):c};h.ca=function(a,b){return Pf(this,b)[b&31]};h.Qa=function(a,b,c){return 0<=b&&b<this.s?Of(this,b)[b&31]:c};
h.xc=function(a,b,c){if(0<=b&&b<this.s)return Kf(this)<=b?(a=Cb(this.Fa),a[b&31]=c,new V(this.D,this.s,this.shift,this.root,a,null)):new V(this.D,this.s,this.shift,Qf(this,this.shift,this.root,b,c),this.Fa,null);if(b===this.s)return Hb(this,c);throw Error([t("Index "),t(b),t(" out of bounds [0,"),t(this.s),t("]")].join(""));};h.Ca=function(){var a=this.s;return new Sf(0,0,0<M(this)?Of(this,0):null,this,0,a)};h.N=function(){return this.D};h.Z=function(){return this.s};
h.vc=function(){return Jb.b(this,0)};h.wc=function(){return Jb.b(this,1)};h.ac=function(){return 0<this.s?Jb.b(this,this.s-1):null};
h.bc=function(){if(0===this.s)throw Error("Can't pop empty vector");if(1===this.s)return gc(Fd,this.D);if(1<this.s-Kf(this))return new V(this.D,this.s-1,this.shift,this.root,this.Fa.slice(0,-1),null);var a=Of(this,this.s-2),b=Rf(this,this.shift,this.root),b=null==b?W:b,c=this.s-1;return 5<this.shift&&null==b.g[1]?new V(this.D,c,this.shift-5,b.g[0],a,null):new V(this.D,c,this.shift,b,a,null)};h.nc=function(){return 0<this.s?new ud(this,this.s-1,null):null};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){if(b instanceof V)if(this.s===M(b))for(var c=Kc(this),d=Kc(b);;)if(r(c.Ia())){var e=c.next(),f=d.next();if(!C.b(e,f))return!1}else return!0;else return!1;else return vd(this,b)};h.Pb=function(){return new Tf(this.s,this.shift,Uf.a?Uf.a(this.root):Uf.call(null,this.root),Vf.a?Vf.a(this.Fa):Vf.call(null,this.Fa))};h.za=function(){return yd(Fd,this.D)};h.Da=function(a,b){return id(this,b)};
h.Ea=function(a,b,c){a=0;for(var d=c;;)if(a<this.s){var e=Of(this,a);c=e.length;a:for(var f=0;;)if(f<c)var g=e[f],d=b.b?b.b(d,g):b.call(null,d,g),f=f+1;else{e=d;break a}a+=c;d=e}else return d};h.Za=function(a,b,c){if("number"===typeof b)return bc(this,b,c);throw Error("Vector's key for assoc must be a number.");};
h.Y=function(){if(0===this.s)return null;if(32>=this.s)return new F(this.Fa,0,null);var a;a:{a=this.root;for(var b=this.shift;;)if(0<b)b-=5,a=a.g[0];else{a=a.g;break a}}return Wf?Wf(this,a,0,0):Xf.call(null,this,a,0,0)};h.O=function(a,b){return new V(b,this.s,this.shift,this.root,this.Fa,this.v)};
h.X=function(a,b){if(32>this.s-Kf(this)){for(var c=this.Fa.length,d=Array(c+1),e=0;;)if(e<c)d[e]=this.Fa[e],e+=1;else break;d[c]=b;return new V(this.D,this.s+1,this.shift,this.root,d,null)}c=(d=this.s>>>5>1<<this.shift)?this.shift+5:this.shift;d?(d=Hf(null),If(d,0,this.root),If(d,1,Lf(null,this.shift,new Gf(null,this.Fa)))):d=Mf(this,this.shift,this.root,new Gf(null,this.Fa));return new V(this.D,this.s+1,c,d,[b],null)};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.ca(null,c);case 3:return this.Qa(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.ca(null,c)};a.c=function(a,c,d){return this.Qa(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return this.ca(null,a)};h.b=function(a,b){return this.Qa(null,a,b)};
var W=new Gf(null,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]),Fd=new V(null,0,5,W,[],ed);function Yf(a){var b=a.length;if(32>b)return new V(null,b,5,W,a,null);for(var c=32,d=(new V(null,32,5,W,a.slice(0,32),null)).Pb(null);;)if(c<b)var e=c+1,d=Ne.b(d,a[c]),c=e;else return yc(d)}V.prototype[zb]=function(){return bd(this)};function Zf(a){return sb(a)?Yf(a):yc(ae(xc,wc(Fd),a))}
var $f=function $f(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return $f.f(0<c.length?new F(c.slice(0),0,null):null)};$f.f=function(a){return a instanceof F&&0===a.u?Yf(a.g):Zf(a)};$f.B=0;$f.A=function(a){return $f.f(E(a))};function ag(a,b,c,d,e,f){this.ab=a;this.node=b;this.u=c;this.Ba=d;this.D=e;this.v=f;this.o=32375020;this.G=1536}h=ag.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.Ka=function(){if(this.Ba+1<this.node.length){var a;a=this.ab;var b=this.node,c=this.u,d=this.Ba+1;a=Wf?Wf(a,b,c,d):Xf.call(null,a,b,c,d);return null==a?null:a}return Ec(this)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd(Fd,this.D)};h.Da=function(a,b){var c;c=this.ab;var d=this.u+this.Ba,e=M(this.ab);c=bg?bg(c,d,e):cg.call(null,c,d,e);return id(c,b)};h.Ea=function(a,b,c){a=this.ab;var d=this.u+this.Ba,e=M(this.ab);a=bg?bg(a,d,e):cg.call(null,a,d,e);return jd(a,b,c)};h.Aa=function(){return this.node[this.Ba]};
h.Oa=function(){if(this.Ba+1<this.node.length){var a;a=this.ab;var b=this.node,c=this.u,d=this.Ba+1;a=Wf?Wf(a,b,c,d):Xf.call(null,a,b,c,d);return null==a?$c:a}return Dc(this)};h.Y=function(){return this};h.tc=function(){var a=this.node;return new Ee(a,this.Ba,a.length)};h.uc=function(){var a=this.u+this.node.length;if(a<Eb(this.ab)){var b=this.ab,c=Of(this.ab,a);return Wf?Wf(b,c,a,0):Xf.call(null,b,c,a,0)}return $c};
h.O=function(a,b){return dg?dg(this.ab,this.node,this.u,this.Ba,b):Xf.call(null,this.ab,this.node,this.u,this.Ba,b)};h.X=function(a,b){return wd(b,this)};h.sc=function(){var a=this.u+this.node.length;if(a<Eb(this.ab)){var b=this.ab,c=Of(this.ab,a);return Wf?Wf(b,c,a,0):Xf.call(null,b,c,a,0)}return null};ag.prototype[zb]=function(){return bd(this)};
function Xf(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 3:return b=arguments[0],c=arguments[1],d=arguments[2],new ag(b,Pf(b,c),c,d,null,null);case 4:return Wf(arguments[0],arguments[1],arguments[2],arguments[3]);case 5:return dg(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function Wf(a,b,c,d){return new ag(a,b,c,d,null,null)}
function dg(a,b,c,d,e){return new ag(a,b,c,d,e,null)}function eg(a,b,c,d,e){this.D=a;this.eb=b;this.start=c;this.end=d;this.v=e;this.o=167666463;this.G=8192}h=eg.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){return"number"===typeof b?Jb.c(this,b,c):c};h.ca=function(a,b){return 0>b||this.end<=this.start+b?Nf(b,this.end-this.start):Jb.b(this.eb,this.start+b)};
h.Qa=function(a,b,c){return 0>b||this.end<=this.start+b?c:Jb.c(this.eb,this.start+b,c)};h.xc=function(a,b,c){var d=this.start+b;a=this.D;c=Q.c(this.eb,d,c);b=this.start;var e=this.end,d=d+1,d=e>d?e:d;return fg.L?fg.L(a,c,b,d,null):fg.call(null,a,c,b,d,null)};h.N=function(){return this.D};h.Z=function(){return this.end-this.start};h.ac=function(){return Jb.b(this.eb,this.end-1)};
h.bc=function(){if(this.start===this.end)throw Error("Can't pop empty vector");var a=this.D,b=this.eb,c=this.start,d=this.end-1;return fg.L?fg.L(a,b,c,d,null):fg.call(null,a,b,c,d,null)};h.nc=function(){return this.start!==this.end?new ud(this,this.end-this.start-1,null):null};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd(Fd,this.D)};h.Da=function(a,b){return id(this,b)};h.Ea=function(a,b,c){return jd(this,b,c)};
h.Za=function(a,b,c){if("number"===typeof b)return bc(this,b,c);throw Error("Subvec's key for assoc must be a number.");};h.Y=function(){var a=this;return function(b){return function d(e){return e===a.end?null:wd(Jb.b(a.eb,e),new Be(null,function(){return function(){return d(e+1)}}(b),null,null))}}(this)(a.start)};h.O=function(a,b){return fg.L?fg.L(b,this.eb,this.start,this.end,this.v):fg.call(null,b,this.eb,this.start,this.end,this.v)};
h.X=function(a,b){var c=this.D,d=bc(this.eb,this.end,b),e=this.start,f=this.end+1;return fg.L?fg.L(c,d,e,f,null):fg.call(null,c,d,e,f,null)};h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.ca(null,c);case 3:return this.Qa(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.ca(null,c)};a.c=function(a,c,d){return this.Qa(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};
h.a=function(a){return this.ca(null,a)};h.b=function(a,b){return this.Qa(null,a,b)};eg.prototype[zb]=function(){return bd(this)};function fg(a,b,c,d,e){for(;;)if(b instanceof eg)c=b.start+c,d=b.start+d,b=b.eb;else{var f=M(b);if(0>c||0>d||c>f||d>f)throw Error("Index out of bounds");return new eg(a,b,c,d,e)}}
function cg(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 2:return b=arguments[0],bg(b,arguments[1],M(b));case 3:return bg(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function bg(a,b,c){return fg(null,a,b,c,null)}function gg(a,b){return a===b.$?b:new Gf(a,Cb(b.g))}function Uf(a){return new Gf({},Cb(a.g))}
function Vf(a){var b=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];Ud(a,0,b,0,a.length);return b}var hg=function hg(b,c,d,e){d=gg(b.root.$,d);var f=b.s-1>>>c&31;if(5===c)b=e;else{var g=d.g[f];null!=g?(c-=5,b=hg.C?hg.C(b,c,g,e):hg.call(null,b,c,g,e)):b=Lf(b.root.$,c-5,e)}If(d,f,b);return d};function Tf(a,b,c,d){this.s=a;this.shift=b;this.root=c;this.Fa=d;this.G=88;this.o=275}h=Tf.prototype;
h.Gb=function(a,b){if(this.root.$){if(32>this.s-Kf(this))this.Fa[this.s&31]=b;else{var c=new Gf(this.root.$,this.Fa),d=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];d[0]=b;this.Fa=d;if(this.s>>>5>1<<this.shift){var d=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],e=this.shift+
5;d[0]=this.root;d[1]=Lf(this.root.$,this.shift,c);this.root=new Gf(this.root.$,d);this.shift=e}else this.root=hg(this,this.shift,this.root,c)}this.s+=1;return this}throw Error("conj! after persistent!");};h.Qb=function(){if(this.root.$){this.root.$=null;var a=this.s-Kf(this),b=Array(a);Ud(this.Fa,0,b,0,a);return new V(null,this.s,this.shift,this.root,b,null)}throw Error("persistent! called twice");};
h.cc=function(a,b,c){if("number"===typeof b)return Ac(this,b,c);throw Error("TransientVector's key for assoc! must be a number.");};
h.Nc=function(a,b,c){var d=this;if(d.root.$){if(0<=b&&b<d.s)return Kf(this)<=b?d.Fa[b&31]=c:(a=function(){return function f(a,k){var g=gg(d.root.$,k);if(0===a)g.g[b&31]=c;else{var p=b>>>a&31;If(g,p,f(a-5,g.g[p]))}return g}}(this).call(null,d.shift,d.root),d.root=a),this;if(b===d.s)return xc(this,c);throw Error([t("Index "),t(b),t(" out of bounds for TransientVector of length"),t(d.s)].join(""));}throw Error("assoc! after persistent!");};
h.Z=function(){if(this.root.$)return this.s;throw Error("count after persistent!");};h.ca=function(a,b){if(this.root.$)return Pf(this,b)[b&31];throw Error("nth after persistent!");};h.Qa=function(a,b,c){return 0<=b&&b<this.s?Jb.b(this,b):c};h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){return"number"===typeof b?Jb.c(this,b,c):c};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.W(null,c);case 3:return this.T(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.W(null,c)};a.c=function(a,c,d){return this.T(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return this.W(null,a)};h.b=function(a,b){return this.T(null,a,b)};function ig(){this.o=2097152;this.G=0}
ig.prototype.equiv=function(a){return this.F(null,a)};ig.prototype.F=function(){return!1};var jg=new ig;function kg(a,b){return Wd(Qd(b)?M(a)===M(b)?Xe(function(a){return C.b(B.c(b,I(a),jg),Cd(a))},a):null:null)}function lg(a,b,c,d,e){this.u=a;this.Bd=b;this.Hc=c;this.Jb=d;this.Uc=e}lg.prototype.Ia=function(){var a=this.u<this.Hc;return a?a:this.Uc.Ia()};lg.prototype.next=function(){if(this.u<this.Hc){var a=qd(this.Jb,this.u);this.u+=1;return new V(null,2,5,W,[a,Qb.b(this.Bd,a)],null)}return this.Uc.next()};
lg.prototype.remove=function(){return Error("Unsupported operation")};function mg(a){this.P=a}mg.prototype.next=function(){if(null!=this.P){var a=I(this.P),b=O(a,0,null),a=O(a,1,null);this.P=J(this.P);return{value:[b,a],done:!1}}return{value:null,done:!0}};function ng(a){this.P=a}ng.prototype.next=function(){if(null!=this.P){var a=I(this.P);this.P=J(this.P);return{value:[a,a],done:!1}}return{value:null,done:!0}};
function og(a,b){var c;if(b instanceof S)a:{c=a.length;for(var d=b.La,e=0;;){if(c<=e){c=-1;break a}if(a[e]instanceof S&&d===a[e].La){c=e;break a}e+=2}}else if("string"==typeof b||"number"===typeof b)a:for(c=a.length,d=0;;){if(c<=d){c=-1;break a}if(b===a[d]){c=d;break a}d+=2}else if(b instanceof z)a:for(c=a.length,d=b.Eb,e=0;;){if(c<=e){c=-1;break a}if(a[e]instanceof z&&d===a[e].Eb){c=e;break a}e+=2}else if(null==b)a:for(c=a.length,d=0;;){if(c<=d){c=-1;break a}if(null==a[d]){c=d;break a}d+=2}else a:for(c=
a.length,d=0;;){if(c<=d){c=-1;break a}if(C.b(b,a[d])){c=d;break a}d+=2}return c}function pg(a,b,c){this.g=a;this.u=b;this.Ga=c;this.o=32374990;this.G=0}h=pg.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.Ga};h.Ka=function(){return this.u<this.g.length-2?new pg(this.g,this.u+2,this.Ga):null};h.Z=function(){return(this.g.length-this.u)/2};h.S=function(){return dd(this)};
h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.Ga)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return new V(null,2,5,W,[this.g[this.u],this.g[this.u+1]],null)};h.Oa=function(){return this.u<this.g.length-2?new pg(this.g,this.u+2,this.Ga):$c};h.Y=function(){return this};h.O=function(a,b){return new pg(this.g,this.u,b)};h.X=function(a,b){return wd(b,this)};pg.prototype[zb]=function(){return bd(this)};
function qg(a,b,c){this.g=a;this.u=b;this.s=c}qg.prototype.Ia=function(){return this.u<this.s};qg.prototype.next=function(){var a=new V(null,2,5,W,[this.g[this.u],this.g[this.u+1]],null);this.u+=2;return a};function q(a,b,c,d){this.D=a;this.s=b;this.g=c;this.v=d;this.o=16647951;this.G=8196}h=q.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.keys=function(){return bd(rg.a?rg.a(this):rg.call(null,this))};h.entries=function(){return new mg(E(E(this)))};
h.values=function(){return bd(sg.a?sg.a(this):sg.call(null,this))};h.has=function(a){return Yd(this,a)};h.get=function(a,b){return this.T(null,a,b)};h.forEach=function(a){for(var b=E(this),c=null,d=0,e=0;;)if(e<d){var f=c.ca(null,e),g=O(f,0,null),f=O(f,1,null);a.b?a.b(f,g):a.call(null,f,g);e+=1}else if(b=E(b))Sd(b)?(c=Cc(b),b=Dc(b),g=c,d=M(c),c=g):(c=I(b),g=O(c,0,null),f=O(c,1,null),a.b?a.b(f,g):a.call(null,f,g),b=J(b),c=null,d=0),e=0;else return null};h.W=function(a,b){return Qb.c(this,b,null)};
h.T=function(a,b,c){a=og(this.g,b);return-1===a?c:this.g[a+1]};h.Ca=function(){return new qg(this.g,0,2*this.s)};h.N=function(){return this.D};h.Z=function(){return this.s};h.S=function(){var a=this.v;return null!=a?a:this.v=a=fd(this)};h.F=function(a,b){if(null!=b&&(b.o&1024||m===b.cd)){var c=this.g.length;if(this.s===b.Z(null))for(var d=0;;)if(d<c){var e=b.T(null,this.g[d],Vd);if(e!==Vd)if(C.b(this.g[d+1],e))d+=2;else return!1;else return!1}else return!0;else return!1}else return kg(this,b)};
h.Pb=function(){return new tg({},this.g.length,Cb(this.g))};h.za=function(){return gc(X,this.D)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.bb=function(a,b){if(0<=og(this.g,b)){var c=this.g.length,d=c-2;if(0===d)return Fb(this);for(var d=Array(d),e=0,f=0;;){if(e>=c)return new q(this.D,this.s-1,d,null);C.b(b,this.g[e])||(d[f]=this.g[e],d[f+1]=this.g[e+1],f+=2);e+=2}}else return this};
h.Za=function(a,b,c){a=og(this.g,b);if(-1===a){if(this.s<ug){a=this.g;for(var d=a.length,e=Array(d+2),f=0;;)if(f<d)e[f]=a[f],f+=1;else break;e[d]=b;e[d+1]=c;return new q(this.D,this.s+1,e,null)}return gc(Sb(yf.b(vg,this),b,c),this.D)}if(c===this.g[a+1])return this;b=Cb(this.g);b[a+1]=c;return new q(this.D,this.s,b,null)};h.rc=function(a,b){return-1!==og(this.g,b)};h.Y=function(){var a=this.g;return 0<=a.length-2?new pg(a,0,null):null};h.O=function(a,b){return new q(b,this.s,this.g,this.v)};
h.X=function(a,b){if(Rd(b))return Sb(this,Jb.b(b,0),Jb.b(b,1));for(var c=this,d=E(b);;){if(null==d)return c;var e=I(d);if(Rd(e))c=Sb(c,Jb.b(e,0),Jb.b(e,1)),d=J(d);else throw Error("conj on a map takes map entries or seqables of map entries");}};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.W(null,c);case 3:return this.T(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.W(null,c)};a.c=function(a,c,d){return this.T(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return this.W(null,a)};h.b=function(a,b){return this.T(null,a,b)};var X=new q(null,0,[],gd),ug=8;
function wg(a){for(var b=[],c=0;;)if(c<a.length){var d=a[c],e=a[c+1];-1===og(b,d)&&(b.push(d),b.push(e));c+=2}else break;return new q(null,b.length/2,b,null)}q.prototype[zb]=function(){return bd(this)};function tg(a,b,c){this.Rb=a;this.Nb=b;this.g=c;this.o=258;this.G=56}h=tg.prototype;h.Z=function(){if(r(this.Rb))return ke(this.Nb,2);throw Error("count after persistent!");};h.W=function(a,b){return Qb.c(this,b,null)};
h.T=function(a,b,c){if(r(this.Rb))return a=og(this.g,b),-1===a?c:this.g[a+1];throw Error("lookup after persistent!");};h.Gb=function(a,b){if(r(this.Rb)){if(null!=b?b.o&2048||m===b.dd||(b.o?0:vb(Vb,b)):vb(Vb,b))return zc(this,re.a?re.a(b):re.call(null,b),se.a?se.a(b):se.call(null,b));for(var c=E(b),d=this;;){var e=I(c);if(r(e))c=J(c),d=zc(d,re.a?re.a(e):re.call(null,e),se.a?se.a(e):se.call(null,e));else return d}}else throw Error("conj! after persistent!");};
h.Qb=function(){if(r(this.Rb))return this.Rb=!1,new q(null,ke(this.Nb,2),this.g,null);throw Error("persistent! called twice");};h.cc=function(a,b,c){if(r(this.Rb)){a=og(this.g,b);if(-1===a){if(this.Nb+2<=2*ug)return this.Nb+=2,this.g.push(b),this.g.push(c),this;a=xg.b?xg.b(this.Nb,this.g):xg.call(null,this.Nb,this.g);return zc(a,b,c)}c!==this.g[a+1]&&(this.g[a+1]=c);return this}throw Error("assoc! after persistent!");};
function xg(a,b){for(var c=wc(vg),d=0;;)if(d<a)c=zc(c,b[d],b[d+1]),d+=2;else return c}function yg(){this.i=!1}function zg(a,b){return a===b?!0:T(a,b)?!0:C.b(a,b)}function Ag(a,b,c){a=Cb(a);a[b]=c;return a}function Bg(a,b){var c=Array(a.length-2);Ud(a,0,c,0,2*b);Ud(a,2*(b+1),c,2*b,c.length-2*b);return c}function Cg(a,b,c,d){a=a.Ib(b);a.g[c]=d;return a}function Dg(a,b,c,d){this.g=a;this.u=b;this.ic=c;this.ib=d}
Dg.prototype.advance=function(){for(var a=this.g.length;;)if(this.u<a){var b=this.g[this.u],c=this.g[this.u+1];null!=b?b=this.ic=new V(null,2,5,W,[b,c],null):null!=c?(b=Kc(c),b=b.Ia()?this.ib=b:!1):b=!1;this.u+=2;if(b)return!0}else return!1};Dg.prototype.Ia=function(){var a=null!=this.ic;return a?a:(a=null!=this.ib)?a:this.advance()};
Dg.prototype.next=function(){if(null!=this.ic){var a=this.ic;this.ic=null;return a}if(null!=this.ib)return a=this.ib.next(),this.ib.Ia()||(this.ib=null),a;if(this.advance())return this.next();throw Error("No such element");};Dg.prototype.remove=function(){return Error("Unsupported operation")};function Eg(a,b,c){this.$=a;this.ea=b;this.g=c}h=Eg.prototype;h.Ib=function(a){if(a===this.$)return this;var b=me(this.ea),c=Array(0>b?4:2*(b+1));Ud(this.g,0,c,0,2*b);return new Eg(a,this.ea,c)};
h.ec=function(){return Fg?Fg(this.g):Gg.call(null,this.g)};h.Ab=function(a,b,c,d){var e=1<<(b>>>a&31);if(0===(this.ea&e))return d;var f=me(this.ea&e-1),e=this.g[2*f],f=this.g[2*f+1];return null==e?f.Ab(a+5,b,c,d):zg(c,e)?f:d};
h.hb=function(a,b,c,d,e,f){var g=1<<(c>>>b&31),k=me(this.ea&g-1);if(0===(this.ea&g)){var l=me(this.ea);if(2*l<this.g.length){a=this.Ib(a);b=a.g;f.i=!0;a:for(c=2*(l-k),f=2*k+(c-1),l=2*(k+1)+(c-1);;){if(0===c)break a;b[l]=b[f];--l;--c;--f}b[2*k]=d;b[2*k+1]=e;a.ea|=g;return a}if(16<=l){k=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];k[c>>>b&31]=Hg.hb(a,b+5,c,d,e,f);for(e=d=0;;)if(32>d)0!==
(this.ea>>>d&1)&&(k[d]=null!=this.g[e]?Hg.hb(a,b+5,Uc(this.g[e]),this.g[e],this.g[e+1],f):this.g[e+1],e+=2),d+=1;else break;return new Ig(a,l+1,k)}b=Array(2*(l+4));Ud(this.g,0,b,0,2*k);b[2*k]=d;b[2*k+1]=e;Ud(this.g,2*k,b,2*(k+1),2*(l-k));f.i=!0;a=this.Ib(a);a.g=b;a.ea|=g;return a}l=this.g[2*k];g=this.g[2*k+1];if(null==l)return l=g.hb(a,b+5,c,d,e,f),l===g?this:Cg(this,a,2*k+1,l);if(zg(d,l))return e===g?this:Cg(this,a,2*k+1,e);f.i=!0;f=b+5;d=Jg?Jg(a,f,l,g,c,d,e):Kg.call(null,a,f,l,g,c,d,e);e=2*k;k=
2*k+1;a=this.Ib(a);a.g[e]=null;a.g[k]=d;return a};
h.gb=function(a,b,c,d,e){var f=1<<(b>>>a&31),g=me(this.ea&f-1);if(0===(this.ea&f)){var k=me(this.ea);if(16<=k){g=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];g[b>>>a&31]=Hg.gb(a+5,b,c,d,e);for(d=c=0;;)if(32>c)0!==(this.ea>>>c&1)&&(g[c]=null!=this.g[d]?Hg.gb(a+5,Uc(this.g[d]),this.g[d],this.g[d+1],e):this.g[d+1],d+=2),c+=1;else break;return new Ig(null,k+1,g)}a=Array(2*(k+1));Ud(this.g,
0,a,0,2*g);a[2*g]=c;a[2*g+1]=d;Ud(this.g,2*g,a,2*(g+1),2*(k-g));e.i=!0;return new Eg(null,this.ea|f,a)}var l=this.g[2*g],f=this.g[2*g+1];if(null==l)return k=f.gb(a+5,b,c,d,e),k===f?this:new Eg(null,this.ea,Ag(this.g,2*g+1,k));if(zg(c,l))return d===f?this:new Eg(null,this.ea,Ag(this.g,2*g+1,d));e.i=!0;e=this.ea;k=this.g;a+=5;a=Lg?Lg(a,l,f,b,c,d):Kg.call(null,a,l,f,b,c,d);c=2*g;g=2*g+1;d=Cb(k);d[c]=null;d[g]=a;return new Eg(null,e,d)};
h.fc=function(a,b,c){var d=1<<(b>>>a&31);if(0===(this.ea&d))return this;var e=me(this.ea&d-1),f=this.g[2*e],g=this.g[2*e+1];return null==f?(a=g.fc(a+5,b,c),a===g?this:null!=a?new Eg(null,this.ea,Ag(this.g,2*e+1,a)):this.ea===d?null:new Eg(null,this.ea^d,Bg(this.g,e))):zg(c,f)?new Eg(null,this.ea^d,Bg(this.g,e)):this};h.Ca=function(){return new Dg(this.g,0,null,null)};var Hg=new Eg(null,0,[]);function Mg(a,b,c){this.g=a;this.u=b;this.ib=c}
Mg.prototype.Ia=function(){for(var a=this.g.length;;){if(null!=this.ib&&this.ib.Ia())return!0;if(this.u<a){var b=this.g[this.u];this.u+=1;null!=b&&(this.ib=Kc(b))}else return!1}};Mg.prototype.next=function(){if(this.Ia())return this.ib.next();throw Error("No such element");};Mg.prototype.remove=function(){return Error("Unsupported operation")};function Ig(a,b,c){this.$=a;this.s=b;this.g=c}h=Ig.prototype;h.Ib=function(a){return a===this.$?this:new Ig(a,this.s,Cb(this.g))};
h.ec=function(){return Ng?Ng(this.g):Og.call(null,this.g)};h.Ab=function(a,b,c,d){var e=this.g[b>>>a&31];return null!=e?e.Ab(a+5,b,c,d):d};h.hb=function(a,b,c,d,e,f){var g=c>>>b&31,k=this.g[g];if(null==k)return a=Cg(this,a,g,Hg.hb(a,b+5,c,d,e,f)),a.s+=1,a;b=k.hb(a,b+5,c,d,e,f);return b===k?this:Cg(this,a,g,b)};
h.gb=function(a,b,c,d,e){var f=b>>>a&31,g=this.g[f];if(null==g)return new Ig(null,this.s+1,Ag(this.g,f,Hg.gb(a+5,b,c,d,e)));a=g.gb(a+5,b,c,d,e);return a===g?this:new Ig(null,this.s,Ag(this.g,f,a))};
h.fc=function(a,b,c){var d=b>>>a&31,e=this.g[d];if(null!=e){a=e.fc(a+5,b,c);if(a===e)d=this;else if(null==a)if(8>=this.s)a:{e=this.g;a=e.length;b=Array(2*(this.s-1));c=0;for(var f=1,g=0;;)if(c<a)c!==d&&null!=e[c]&&(b[f]=e[c],f+=2,g|=1<<c),c+=1;else{d=new Eg(null,g,b);break a}}else d=new Ig(null,this.s-1,Ag(this.g,d,a));else d=new Ig(null,this.s,Ag(this.g,d,a));return d}return this};h.Ca=function(){return new Mg(this.g,0,null)};
function Pg(a,b,c){b*=2;for(var d=0;;)if(d<b){if(zg(c,a[d]))return d;d+=2}else return-1}function Qg(a,b,c,d){this.$=a;this.rb=b;this.s=c;this.g=d}h=Qg.prototype;h.Ib=function(a){if(a===this.$)return this;var b=Array(2*(this.s+1));Ud(this.g,0,b,0,2*this.s);return new Qg(a,this.rb,this.s,b)};h.ec=function(){return Fg?Fg(this.g):Gg.call(null,this.g)};h.Ab=function(a,b,c,d){a=Pg(this.g,this.s,c);return 0>a?d:zg(c,this.g[a])?this.g[a+1]:d};
h.hb=function(a,b,c,d,e,f){if(c===this.rb){b=Pg(this.g,this.s,d);if(-1===b){if(this.g.length>2*this.s)return b=2*this.s,c=2*this.s+1,a=this.Ib(a),a.g[b]=d,a.g[c]=e,f.i=!0,a.s+=1,a;c=this.g.length;b=Array(c+2);Ud(this.g,0,b,0,c);b[c]=d;b[c+1]=e;f.i=!0;d=this.s+1;a===this.$?(this.g=b,this.s=d,a=this):a=new Qg(this.$,this.rb,d,b);return a}return this.g[b+1]===e?this:Cg(this,a,b+1,e)}return(new Eg(a,1<<(this.rb>>>b&31),[null,this,null,null])).hb(a,b,c,d,e,f)};
h.gb=function(a,b,c,d,e){return b===this.rb?(a=Pg(this.g,this.s,c),-1===a?(a=2*this.s,b=Array(a+2),Ud(this.g,0,b,0,a),b[a]=c,b[a+1]=d,e.i=!0,new Qg(null,this.rb,this.s+1,b)):C.b(this.g[a+1],d)?this:new Qg(null,this.rb,this.s,Ag(this.g,a+1,d))):(new Eg(null,1<<(this.rb>>>a&31),[null,this])).gb(a,b,c,d,e)};h.fc=function(a,b,c){a=Pg(this.g,this.s,c);return-1===a?this:1===this.s?null:new Qg(null,this.rb,this.s-1,Bg(this.g,ke(a,2)))};h.Ca=function(){return new Dg(this.g,0,null,null)};
function Kg(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 6:return Lg(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 7:return Jg(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}
function Lg(a,b,c,d,e,f){var g=Uc(b);if(g===d)return new Qg(null,g,2,[b,c,e,f]);var k=new yg;return Hg.gb(a,g,b,c,k).gb(a,d,e,f,k)}function Jg(a,b,c,d,e,f,g){var k=Uc(c);if(k===e)return new Qg(null,k,2,[c,d,f,g]);var l=new yg;return Hg.hb(a,b,k,c,d,l).hb(a,b,e,f,g,l)}function Rg(a,b,c,d,e){this.D=a;this.Bb=b;this.u=c;this.P=d;this.v=e;this.o=32374860;this.G=0}h=Rg.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.D)};h.Da=function(a,b){return zd(b,this)};
h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return null==this.P?new V(null,2,5,W,[this.Bb[this.u],this.Bb[this.u+1]],null):I(this.P)};h.Oa=function(){var a=this,b=null==a.P?function(){var b=a.Bb,d=a.u+2;return Sg?Sg(b,d,null):Gg.call(null,b,d,null)}():function(){var b=a.Bb,d=a.u,e=J(a.P);return Sg?Sg(b,d,e):Gg.call(null,b,d,e)}();return null!=b?b:$c};h.Y=function(){return this};h.O=function(a,b){return new Rg(b,this.Bb,this.u,this.P,this.v)};h.X=function(a,b){return wd(b,this)};
Rg.prototype[zb]=function(){return bd(this)};function Gg(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 1:return Fg(arguments[0]);case 3:return Sg(arguments[0],arguments[1],arguments[2]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function Fg(a){return Sg(a,0,null)}
function Sg(a,b,c){if(null==c)for(c=a.length;;)if(b<c){if(null!=a[b])return new Rg(null,a,b,null,null);var d=a[b+1];if(r(d)&&(d=d.ec(),r(d)))return new Rg(null,a,b+2,d,null);b+=2}else return null;else return new Rg(null,a,b,c,null)}function Tg(a,b,c,d,e){this.D=a;this.Bb=b;this.u=c;this.P=d;this.v=e;this.o=32374860;this.G=0}h=Tg.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};
h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.D};h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.D)};h.Da=function(a,b){return zd(b,this)};
h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return I(this.P)};h.Oa=function(){var a;a=this.Bb;var b=this.u,c=J(this.P);a=Ug?Ug(null,a,b,c):Og.call(null,null,a,b,c);return null!=a?a:$c};h.Y=function(){return this};h.O=function(a,b){return new Tg(b,this.Bb,this.u,this.P,this.v)};h.X=function(a,b){return wd(b,this)};Tg.prototype[zb]=function(){return bd(this)};
function Og(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 1:return Ng(arguments[0]);case 4:return Ug(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}function Ng(a){return Ug(null,a,0,null)}function Ug(a,b,c,d){if(null==d)for(d=b.length;;)if(c<d){var e=b[c];if(r(e)&&(e=e.ec(),r(e)))return new Tg(a,b,c+1,e,null);c+=1}else return null;else return new Tg(a,b,c,d,null)}
function Vg(a,b,c){this.Pa=a;this.Wc=b;this.Fc=c}Vg.prototype.Ia=function(){return tb(this.Fc)||this.Wc.Ia()};Vg.prototype.next=function(){if(this.Fc)return this.Wc.next();this.Fc=!0;return new V(null,2,5,W,[null,this.Pa],null)};Vg.prototype.remove=function(){return Error("Unsupported operation")};function Wg(a,b,c,d,e,f){this.D=a;this.s=b;this.root=c;this.Ma=d;this.Pa=e;this.v=f;this.o=16123663;this.G=8196}h=Wg.prototype;h.toString=function(){return Mc(this)};
h.equiv=function(a){return this.F(null,a)};h.keys=function(){return bd(rg.a?rg.a(this):rg.call(null,this))};h.entries=function(){return new mg(E(E(this)))};h.values=function(){return bd(sg.a?sg.a(this):sg.call(null,this))};h.has=function(a){return Yd(this,a)};h.get=function(a,b){return this.T(null,a,b)};
h.forEach=function(a){for(var b=E(this),c=null,d=0,e=0;;)if(e<d){var f=c.ca(null,e),g=O(f,0,null),f=O(f,1,null);a.b?a.b(f,g):a.call(null,f,g);e+=1}else if(b=E(b))Sd(b)?(c=Cc(b),b=Dc(b),g=c,d=M(c),c=g):(c=I(b),g=O(c,0,null),f=O(c,1,null),a.b?a.b(f,g):a.call(null,f,g),b=J(b),c=null,d=0),e=0;else return null};h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){return null==b?this.Ma?this.Pa:c:null==this.root?c:this.root.Ab(0,Uc(b),b,c)};
h.Ca=function(){var a=this.root?Kc(this.root):Ve();return this.Ma?new Vg(this.Pa,a,!1):a};h.N=function(){return this.D};h.Z=function(){return this.s};h.S=function(){var a=this.v;return null!=a?a:this.v=a=fd(this)};h.F=function(a,b){return kg(this,b)};h.Pb=function(){return new Xg({},this.root,this.s,this.Ma,this.Pa)};h.za=function(){return gc(vg,this.D)};
h.bb=function(a,b){if(null==b)return this.Ma?new Wg(this.D,this.s-1,this.root,!1,null,null):this;if(null==this.root)return this;var c=this.root.fc(0,Uc(b),b);return c===this.root?this:new Wg(this.D,this.s-1,c,this.Ma,this.Pa,null)};h.Za=function(a,b,c){if(null==b)return this.Ma&&c===this.Pa?this:new Wg(this.D,this.Ma?this.s:this.s+1,this.root,!0,c,null);a=new yg;b=(null==this.root?Hg:this.root).gb(0,Uc(b),b,c,a);return b===this.root?this:new Wg(this.D,a.i?this.s+1:this.s,b,this.Ma,this.Pa,null)};
h.rc=function(a,b){return null==b?this.Ma:null==this.root?!1:this.root.Ab(0,Uc(b),b,Vd)!==Vd};h.Y=function(){if(0<this.s){var a=null!=this.root?this.root.ec():null;return this.Ma?wd(new V(null,2,5,W,[null,this.Pa],null),a):a}return null};h.O=function(a,b){return new Wg(b,this.s,this.root,this.Ma,this.Pa,this.v)};
h.X=function(a,b){if(Rd(b))return Sb(this,Jb.b(b,0),Jb.b(b,1));for(var c=this,d=E(b);;){if(null==d)return c;var e=I(d);if(Rd(e))c=Sb(c,Jb.b(e,0),Jb.b(e,1)),d=J(d);else throw Error("conj on a map takes map entries or seqables of map entries");}};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.W(null,c);case 3:return this.T(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.W(null,c)};a.c=function(a,c,d){return this.T(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return this.W(null,a)};h.b=function(a,b){return this.T(null,a,b)};var vg=new Wg(null,0,null,!1,null,gd);
function Hd(a,b){for(var c=a.length,d=0,e=wc(vg);;)if(d<c)var f=d+1,e=e.cc(null,a[d],b[d]),d=f;else return yc(e)}Wg.prototype[zb]=function(){return bd(this)};function Xg(a,b,c,d,e){this.$=a;this.root=b;this.count=c;this.Ma=d;this.Pa=e;this.o=258;this.G=56}function Yg(a,b,c){if(a.$){if(null==b)a.Pa!==c&&(a.Pa=c),a.Ma||(a.count+=1,a.Ma=!0);else{var d=new yg;b=(null==a.root?Hg:a.root).hb(a.$,0,Uc(b),b,c,d);b!==a.root&&(a.root=b);d.i&&(a.count+=1)}return a}throw Error("assoc! after persistent!");}h=Xg.prototype;
h.Z=function(){if(this.$)return this.count;throw Error("count after persistent!");};h.W=function(a,b){return null==b?this.Ma?this.Pa:null:null==this.root?null:this.root.Ab(0,Uc(b),b)};h.T=function(a,b,c){return null==b?this.Ma?this.Pa:c:null==this.root?c:this.root.Ab(0,Uc(b),b,c)};
h.Gb=function(a,b){var c;a:if(this.$)if(null!=b?b.o&2048||m===b.dd||(b.o?0:vb(Vb,b)):vb(Vb,b))c=Yg(this,re.a?re.a(b):re.call(null,b),se.a?se.a(b):se.call(null,b));else{c=E(b);for(var d=this;;){var e=I(c);if(r(e))c=J(c),d=Yg(d,re.a?re.a(e):re.call(null,e),se.a?se.a(e):se.call(null,e));else{c=d;break a}}}else throw Error("conj! after persistent");return c};
h.Qb=function(){var a;if(this.$)this.$=null,a=new Wg(null,this.count,this.root,this.Ma,this.Pa,null);else throw Error("persistent! called twice");return a};h.cc=function(a,b,c){return Yg(this,b,c)};var gf=function gf(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return gf.f(0<c.length?new F(c.slice(0),0,null):null)};gf.f=function(a){for(var b=E(a),c=wc(vg);;)if(b){a=J(J(b));var d=I(b),b=Cd(b),c=zc(c,d,b),b=a}else return yc(c)};gf.B=0;gf.A=function(a){return gf.f(E(a))};
function Zg(a,b){this.R=a;this.Ga=b;this.o=32374988;this.G=0}h=Zg.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.Ga};h.Ka=function(){var a=(null!=this.R?this.R.o&128||m===this.R.mc||(this.R.o?0:vb(Nb,this.R)):vb(Nb,this.R))?this.R.Ka(null):J(this.R);return null==a?null:new Zg(a,this.Ga)};h.S=function(){return dd(this)};
h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.Ga)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return this.R.Aa(null).vc()};h.Oa=function(){var a=(null!=this.R?this.R.o&128||m===this.R.mc||(this.R.o?0:vb(Nb,this.R)):vb(Nb,this.R))?this.R.Ka(null):J(this.R);return null!=a?new Zg(a,this.Ga):$c};h.Y=function(){return this};h.O=function(a,b){return new Zg(this.R,b)};h.X=function(a,b){return wd(b,this)};Zg.prototype[zb]=function(){return bd(this)};
function rg(a){return(a=E(a))?new Zg(a,null):null}function re(a){return Wb(a)}function $g(a,b){this.R=a;this.Ga=b;this.o=32374988;this.G=0}h=$g.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.N=function(){return this.Ga};h.Ka=function(){var a=(null!=this.R?this.R.o&128||m===this.R.mc||(this.R.o?0:vb(Nb,this.R)):vb(Nb,this.R))?this.R.Ka(null):J(this.R);return null==a?null:new $g(a,this.Ga)};h.S=function(){return dd(this)};
h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.Ga)};h.Da=function(a,b){return zd(b,this)};h.Ea=function(a,b,c){return Bd(b,c,this)};h.Aa=function(){return this.R.Aa(null).wc()};h.Oa=function(){var a=(null!=this.R?this.R.o&128||m===this.R.mc||(this.R.o?0:vb(Nb,this.R)):vb(Nb,this.R))?this.R.Ka(null):J(this.R);return null!=a?new $g(a,this.Ga):$c};h.Y=function(){return this};h.O=function(a,b){return new $g(this.R,b)};h.X=function(a,b){return wd(b,this)};$g.prototype[zb]=function(){return bd(this)};
function sg(a){return(a=E(a))?new $g(a,null):null}function se(a){return Xb(a)}function ah(a){return r(Ye(de,a))?ce(function(a,c){return Ed.b(r(a)?a:X,c)},a):null}function bh(a,b){return r(Ye(de,b))?ce(function(a){return function(b,c){return ae(a,r(b)?b:X,E(c))}}(function(b,d){var c=I(d),f=Cd(d);return Yd(b,c)?Q.c(b,c,function(){var d=B.b(b,c);return a.b?a.b(d,f):a.call(null,d,f)}()):Q.c(b,c,f)}),b):null}function ch(a){this.Bc=a}ch.prototype.Ia=function(){return this.Bc.Ia()};
ch.prototype.next=function(){if(this.Bc.Ia())return this.Bc.next().Fa[0];throw Error("No such element");};ch.prototype.remove=function(){return Error("Unsupported operation")};function dh(a,b,c){this.D=a;this.Lb=b;this.v=c;this.o=15077647;this.G=8196}h=dh.prototype;h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.keys=function(){return bd(E(this))};h.entries=function(){return new ng(E(E(this)))};h.values=function(){return bd(E(this))};
h.has=function(a){return Yd(this,a)};h.forEach=function(a){for(var b=E(this),c=null,d=0,e=0;;)if(e<d){var f=c.ca(null,e),g=O(f,0,null),f=O(f,1,null);a.b?a.b(f,g):a.call(null,f,g);e+=1}else if(b=E(b))Sd(b)?(c=Cc(b),b=Dc(b),g=c,d=M(c),c=g):(c=I(b),g=O(c,0,null),f=O(c,1,null),a.b?a.b(f,g):a.call(null,f,g),b=J(b),c=null,d=0),e=0;else return null};h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){return Rb(this.Lb,b)?b:c};h.Ca=function(){return new ch(Kc(this.Lb))};h.N=function(){return this.D};
h.Z=function(){return Eb(this.Lb)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=fd(this)};h.F=function(a,b){return Od(b)&&M(this)===M(b)&&Xe(function(a){return function(b){return Yd(a,b)}}(this),b)};h.Pb=function(){return new eh(wc(this.Lb))};h.za=function(){return yd(fh,this.D)};h.Y=function(){return rg(this.Lb)};h.O=function(a,b){return new dh(b,this.Lb,this.v)};h.X=function(a,b){return new dh(this.D,Q.c(this.Lb,b,null),null)};
h.call=function(){var a=null,a=function(a,c,d){switch(arguments.length){case 2:return this.W(null,c);case 3:return this.T(null,c,d)}throw Error("Invalid arity: "+arguments.length);};a.b=function(a,c){return this.W(null,c)};a.c=function(a,c,d){return this.T(null,c,d)};return a}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return this.W(null,a)};h.b=function(a,b){return this.T(null,a,b)};var fh=new dh(null,X,gd);
function $d(a){var b=a.length;if(b<=ug)for(var c=0,d=wc(X);;)if(c<b)var e=c+1,d=zc(d,a[c],null),c=e;else return new dh(null,yc(d),null);else for(c=0,d=wc(fh);;)if(c<b)e=c+1,d=xc(d,a[c]),c=e;else return yc(d)}dh.prototype[zb]=function(){return bd(this)};function eh(a){this.xb=a;this.G=136;this.o=259}h=eh.prototype;h.Gb=function(a,b){this.xb=zc(this.xb,b,null);return this};h.Qb=function(){return new dh(null,yc(this.xb),null)};h.Z=function(){return M(this.xb)};h.W=function(a,b){return Qb.c(this,b,null)};
h.T=function(a,b,c){return Qb.c(this.xb,b,Vd)===Vd?c:b};h.call=function(){function a(a,b,c){return Qb.c(this.xb,b,Vd)===Vd?c:b}function b(a,b){return Qb.c(this.xb,b,Vd)===Vd?null:b}var c=null,c=function(c,e,f){switch(arguments.length){case 2:return b.call(this,0,e);case 3:return a.call(this,0,e,f)}throw Error("Invalid arity: "+arguments.length);};c.b=b;c.c=a;return c}();h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.a=function(a){return Qb.c(this.xb,a,Vd)===Vd?null:a};
h.b=function(a,b){return Qb.c(this.xb,a,Vd)===Vd?b:a};function gh(a){for(var b=Fd;;)if(J(a))b=Ed.b(b,I(a)),a=J(a);else return E(b)}function Ae(a){if(null!=a&&(a.G&4096||m===a.fd))return a.Zb(null);if("string"===typeof a)return a;throw Error([t("Doesn't support name: "),t(a)].join(""));}function af(a,b){for(var c=wc(X),d=E(a),e=E(b);;)if(d&&e)var f=I(d),g=I(e),c=zc(c,f,g),d=J(d),e=J(e);else return yc(c)}
function ih(a,b){return new Be(null,function(){var c=E(b);if(c){var d;d=I(c);d=a.a?a.a(d):a.call(null,d);c=r(d)?wd(I(c),ih(a,Zc(c))):null}else c=null;return c},null,null)}function jh(a,b,c){this.u=a;this.end=b;this.step=c}jh.prototype.Ia=function(){return 0<this.step?this.u<this.end:this.u>this.end};jh.prototype.next=function(){var a=this.u;this.u+=this.step;return a};function kh(a,b,c,d,e){this.D=a;this.start=b;this.end=c;this.step=d;this.v=e;this.o=32375006;this.G=8192}h=kh.prototype;
h.toString=function(){return Mc(this)};h.equiv=function(a){return this.F(null,a)};h.indexOf=function(){var a=null,a=function(a,c){switch(arguments.length){case 1:return pd(this,a,0);case 2:return pd(this,a,c)}throw Error("Invalid arity: "+arguments.length);};a.a=function(a){return pd(this,a,0)};a.b=function(a,c){return pd(this,a,c)};return a}();
h.lastIndexOf=function(){function a(a){return sd(this,a,M(this))}var b=null,b=function(b,d){switch(arguments.length){case 1:return a.call(this,b);case 2:return sd(this,b,d)}throw Error("Invalid arity: "+arguments.length);};b.a=a;b.b=function(a,b){return sd(this,a,b)};return b}();h.ca=function(a,b){if(b<Eb(this))return this.start+b*this.step;if(this.start>this.end&&0===this.step)return this.start;throw Error("Index out of bounds");};
h.Qa=function(a,b,c){return b<Eb(this)?this.start+b*this.step:this.start>this.end&&0===this.step?this.start:c};h.Ca=function(){return new jh(this.start,this.end,this.step)};h.N=function(){return this.D};h.Ka=function(){return 0<this.step?this.start+this.step<this.end?new kh(this.D,this.start+this.step,this.end,this.step,null):null:this.start+this.step>this.end?new kh(this.D,this.start+this.step,this.end,this.step,null):null};h.Z=function(){return tb(nc(this))?0:Math.ceil((this.end-this.start)/this.step)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=dd(this)};h.F=function(a,b){return vd(this,b)};h.za=function(){return yd($c,this.D)};h.Da=function(a,b){return id(this,b)};h.Ea=function(a,b,c){for(a=this.start;;)if(0<this.step?a<this.end:a>this.end)c=b.b?b.b(c,a):b.call(null,c,a),a+=this.step;else return c};h.Aa=function(){return null==nc(this)?null:this.start};h.Oa=function(){return null!=nc(this)?new kh(this.D,this.start+this.step,this.end,this.step,null):$c};
h.Y=function(){return 0<this.step?this.start<this.end?this:null:0>this.step?this.start>this.end?this:null:this.start===this.end?null:this};h.O=function(a,b){return new kh(b,this.start,this.end,this.step,this.v)};h.X=function(a,b){return wd(b,this)};kh.prototype[zb]=function(){return bd(this)};function lh(a,b){return new kh(null,a,b,1,null)}function mh(a){a:for(;;)if(E(a))a=J(a);else break a}
function nh(a,b){if("string"===typeof b){var c=a.exec(b);return null==c?null:1===M(c)?I(c):Zf(c)}throw new TypeError("re-find must match against a string.");}
function oh(a,b,c,d,e,f,g){var k=ib;ib=null==ib?null:ib-1;try{if(null!=ib&&0>ib)return x(a,"#");x(a,c);if(0===qb.a(f))E(g)&&x(a,function(){var a=ph.a(f);return r(a)?a:"..."}());else{if(E(g)){var l=I(g);b.c?b.c(l,a,f):b.call(null,l,a,f)}for(var p=J(g),u=qb.a(f)-1;;)if(!p||null!=u&&0===u){E(p)&&0===u&&(x(a,d),x(a,function(){var a=ph.a(f);return r(a)?a:"..."}()));break}else{x(a,d);var v=I(p);c=a;g=f;b.c?b.c(v,c,g):b.call(null,v,c,g);var w=J(p);c=u-1;p=w;u=c}}return x(a,e)}finally{ib=k}}
function qh(a,b){for(var c=E(b),d=null,e=0,f=0;;)if(f<e){var g=d.ca(null,f);x(a,g);f+=1}else if(c=E(c))d=c,Sd(d)?(c=Cc(d),e=Dc(d),d=c,g=M(c),c=e,e=g):(g=I(d),x(a,g),c=J(d),d=null,e=0),f=0;else return null}var rh={'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};function sh(a){return[t('"'),t(a.replace(RegExp('[\\\\"\b\f\n\r\t]',"g"),function(a){return rh[a]})),t('"')].join("")}
function th(a,b){var c=Wd(B.b(a,ob));return c?(c=null!=b?b.o&131072||m===b.ed?!0:!1:!1)?null!=Kd(b):c:c}
function uh(a,b,c){if(null==a)return x(b,"nil");if(th(c,a)){x(b,"^");var d=Kd(a);vh.c?vh.c(d,b,c):vh.call(null,d,b,c);x(b," ")}if(a.zb)return a.Hb(a,b,c);if(null!=a&&(a.o&2147483648||m===a.la))return a.U(null,b,c);if(!0===a||!1===a||"number"===typeof a)return x(b,""+t(a));if(ub(a))return x(b,"#js "),d=mf.b(function(b){return new V(null,2,5,W,[ze.a(b),a[b]],null)},Td(a)),wh.C?wh.C(d,vh,b,c):wh.call(null,d,vh,b,c);if(sb(a))return oh(b,vh,"#js ["," ","]",c,a);if("string"==typeof a)return r(nb.a(c))?
x(b,sh(a)):x(b,a);if("function"==ba(a)){var e=a.name;c=r(function(){var a=null==e;return a?a:ga(e)}())?"Function":e;return qh(b,N(["#object[",c,' "',""+t(a),'"]'],0))}if(a instanceof Date)return c=function(a,b){for(var c=""+t(a);;)if(M(c)<b)c=[t("0"),t(c)].join("");else return c},qh(b,N(['#inst "',""+t(a.getUTCFullYear()),"-",c(a.getUTCMonth()+1,2),"-",c(a.getUTCDate(),2),"T",c(a.getUTCHours(),2),":",c(a.getUTCMinutes(),2),":",c(a.getUTCSeconds(),2),".",c(a.getUTCMilliseconds(),3),"-",'00:00"'],0));
if(a instanceof RegExp)return qh(b,N(['#"',a.source,'"'],0));if(r(a.constructor.nb))return qh(b,N(["#object[",a.constructor.nb.replace(RegExp("/","g"),"."),"]"],0));e=a.constructor.name;c=r(function(){var a=null==e;return a?a:ga(e)}())?"Object":e;return qh(b,N(["#object[",c," ",""+t(a),"]"],0))}function vh(a,b,c){var d=xh.a(c);return r(d)?(c=Q.c(c,yh,uh),d.c?d.c(a,b,c):d.call(null,a,b,c)):uh(a,b,c)}
function zh(a,b){var c;if(Ld(a))c="";else{c=t;var d=new ya,e=new Lc(d);a:{vh(I(a),e,b);for(var f=E(J(a)),g=null,k=0,l=0;;)if(l<k){var p=g.ca(null,l);x(e," ");vh(p,e,b);l+=1}else if(f=E(f))g=f,Sd(g)?(f=Cc(g),k=Dc(g),g=f,p=M(f),f=k,k=p):(p=I(g),x(e," "),vh(p,e,b),f=J(g),g=null,k=0),l=0;else break a}e.mb(null);c=""+c(d)}return c}var Ah=function Ah(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Ah.f(0<c.length?new F(c.slice(0),0,null):null)};
Ah.f=function(a){return zh(a,kb())};Ah.B=0;Ah.A=function(a){return Ah.f(E(a))};var Bh=function Bh(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Bh.f(0<c.length?new F(c.slice(0),0,null):null)};Bh.f=function(a){return zh(a,Q.c(kb(),nb,!1))};Bh.B=0;Bh.A=function(a){return Bh.f(E(a))};function Ch(a){var b=Q.c(kb(),nb,!1);a=zh(a,b);db.a?db.a(a):db.call(null);r(!0)?(a=kb(),db.a?db.a("\n"):db.call(null),a=(B.b(a,mb),null)):a=null;return a}
function wh(a,b,c,d){return oh(c,function(a,c,d){var e=Wb(a);b.c?b.c(e,c,d):b.call(null,e,c,d);x(c," ");a=Xb(a);return b.c?b.c(a,c,d):b.call(null,a,c,d)},"{",", ","}",d,E(a))}Xc.prototype.la=m;Xc.prototype.U=function(a,b,c){x(b,"#'");return vh(this.Vb,b,c)};F.prototype.la=m;F.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};Be.prototype.la=m;Be.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};Rg.prototype.la=m;
Rg.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};pg.prototype.la=m;pg.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};ag.prototype.la=m;ag.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};xe.prototype.la=m;xe.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};ud.prototype.la=m;ud.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};Wg.prototype.la=m;Wg.prototype.U=function(a,b,c){return wh(this,vh,b,c)};Tg.prototype.la=m;
Tg.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};eg.prototype.la=m;eg.prototype.U=function(a,b,c){return oh(b,vh,"["," ","]",c,this)};dh.prototype.la=m;dh.prototype.U=function(a,b,c){return oh(b,vh,"#{"," ","}",c,this)};Ge.prototype.la=m;Ge.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};df.prototype.la=m;df.prototype.U=function(a,b,c){x(b,"#object [cljs.core.Atom ");vh(new q(null,1,[Dh,this.state],null),b,c);return x(b,"]")};$g.prototype.la=m;
$g.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};V.prototype.la=m;V.prototype.U=function(a,b,c){return oh(b,vh,"["," ","]",c,this)};ue.prototype.la=m;ue.prototype.U=function(a,b){return x(b,"()")};q.prototype.la=m;q.prototype.U=function(a,b,c){return wh(this,vh,b,c)};kh.prototype.la=m;kh.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};Zg.prototype.la=m;Zg.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};te.prototype.la=m;
te.prototype.U=function(a,b,c){return oh(b,vh,"("," ",")",c,this)};function Eh(){}var Fh=function Fh(b){if(null!=b&&null!=b.ad)return b.ad(b);var c=Fh[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Fh._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IEncodeJS.-clj-\x3ejs",b);};function Gh(a){return(null!=a?m===a.$c||(a.od?0:vb(Eh,a)):vb(Eh,a))?Fh(a):"string"===typeof a||"number"===typeof a||a instanceof S||a instanceof z?Hh.a?Hh.a(a):Hh.call(null,a):Ah.f(N([a],0))}
var Hh=function Hh(b){if(null==b)return null;if(null!=b?m===b.$c||(b.od?0:vb(Eh,b)):vb(Eh,b))return Fh(b);if(b instanceof S)return Ae(b);if(b instanceof z)return""+t(b);if(Qd(b)){var c={};b=E(b);for(var d=null,e=0,f=0;;)if(f<e){var g=d.ca(null,f),k=O(g,0,null),g=O(g,1,null);c[Gh(k)]=Hh.a?Hh.a(g):Hh.call(null,g);f+=1}else if(b=E(b))Sd(b)?(e=Cc(b),b=Dc(b),d=e,e=M(e)):(e=I(b),d=O(e,0,null),e=O(e,1,null),c[Gh(d)]=Hh.a?Hh.a(e):Hh.call(null,e),b=J(b),d=null,e=0),f=0;else break;return c}if(Nd(b)){c=[];b=
E(mf.b(Hh,b));d=null;for(f=e=0;;)if(f<e)k=d.ca(null,f),c.push(k),f+=1;else if(b=E(b))d=b,Sd(d)?(b=Cc(d),f=Dc(d),d=b,e=M(b),b=f):(b=I(d),c.push(b),b=J(d),d=null,e=0),f=0;else break;return c}return b},Ih=null;function Jh(){if(null==Ih){var a=new q(null,3,[Kh,X,Lh,X,Mh,X],null);Ih=Y?Y(a):ef.call(null,a)}return Ih}
function Nh(a,b,c){var d=C.b(b,c);if(!d&&!(d=Yd(Mh.a(a).call(null,b),c))&&(d=Rd(c))&&(d=Rd(b)))if(d=M(c)===M(b))for(var d=!0,e=0;;)if(d&&e!==M(c))d=Nh(a,b.a?b.a(e):b.call(null,e),c.a?c.a(e):c.call(null,e)),e+=1;else return d;else return d;else return d}function Oh(a){var b;b=Jh();b=L.a?L.a(b):L.call(null,b);return Ue(B.b(Kh.a(b),a))}function Ph(a,b,c,d){kf.b(a,function(){return L.a?L.a(b):L.call(null,b)});kf.b(c,function(){return L.a?L.a(d):L.call(null,d)})}
var Qh=function Qh(b,c,d){var e=(L.a?L.a(d):L.call(null,d)).call(null,b),e=r(r(e)?e.a?e.a(c):e.call(null,c):e)?!0:null;if(r(e))return e;e=function(){for(var e=Oh(c);;)if(0<M(e)){var g=I(e);Qh.c?Qh.c(b,g,d):Qh.call(null,b,g,d);e=Zc(e)}else return null}();if(r(e))return e;e=function(){for(var e=Oh(b);;)if(0<M(e)){var g=I(e);Qh.c?Qh.c(g,c,d):Qh.call(null,g,c,d);e=Zc(e)}else return null}();return r(e)?e:!1};function Rh(a,b,c,d){c=Qh(a,b,c);return r(c)?c:Nh(d,a,b)}
var Sh=function Sh(b,c,d,e,f,g,k){var l=ae(function(e,g){var k=O(g,0,null);O(g,1,null);if(Nh(L.a?L.a(d):L.call(null,d),c,k)){var l;l=(l=null==e)?l:Rh(k,I(e),f,L.a?L.a(d):L.call(null,d));l=r(l)?g:e;if(!r(Rh(I(l),k,f,L.a?L.a(d):L.call(null,d))))throw Error([t("Multiple methods in multimethod '"),t(b),t("' match dispatch value: "),t(c),t(" -\x3e "),t(k),t(" and "),t(I(l)),t(", and neither is preferred")].join(""));return l}return e},null,L.a?L.a(e):L.call(null,e));if(r(l)){if(C.b(L.a?L.a(k):L.call(null,
k),L.a?L.a(d):L.call(null,d)))return kf.C(g,Q,c,Cd(l)),Cd(l);Ph(g,e,k,d);return Sh.ja?Sh.ja(b,c,d,e,f,g,k):Sh.call(null,b,c,d,e,f,g,k)}return null},Th=function Th(b,c,d){if(null!=b&&null!=b.fa)return b.fa(0,c,d);var e=Th[ba(null==b?null:b)];if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);e=Th._;if(null!=e)return e.c?e.c(b,c,d):e.call(null,b,c,d);throw xb("IMultiFn.-add-method",b);};
function Uh(a,b){throw Error([t("No method in multimethod '"),t(a),t("' for dispatch value: "),t(b)].join(""));}function Vh(a,b,c,d,e,f,g,k){this.name=a;this.m=b;this.pd=c;this.dc=d;this.Ub=e;this.Ad=f;this.hc=g;this.Wb=k;this.o=4194305;this.G=4352}h=Vh.prototype;
h.call=function(){function a(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R,va){a=this;var aa=Te(a.m,b,c,d,e,N([f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R,va],0)),P=this.K(0,aa);r(P)||Uh(a.name,aa);return Te(P,b,c,d,e,N([f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R,va],0))}function b(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R){a=this;var aa=a.m.wa?a.m.wa(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R),P=this.K(0,aa);r(P)||Uh(a.name,aa);return P.wa?P.wa(b,c,d,e,f,g,k,l,p,u,v,w,y,
A,D,G,H,K,U,R):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U,R)}function c(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U){a=this;var aa=a.m.va?a.m.va(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U),P=this.K(0,aa);r(P)||Uh(a.name,aa);return P.va?P.va(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K,U)}function d(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K){a=this;var aa=a.m.ua?a.m.ua(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K):a.m.call(null,
b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K),P=this.K(0,aa);r(P)||Uh(a.name,aa);return P.ua?P.ua(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H,K)}function e(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H){a=this;var aa=a.m.ta?a.m.ta(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H),P=this.K(0,aa);r(P)||Uh(a.name,aa);return P.ta?P.ta(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G,H)}function f(a,b,c,d,e,f,g,k,l,p,u,
v,w,y,A,D,G){a=this;var aa=a.m.sa?a.m.sa(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G),P=this.K(0,aa);r(P)||Uh(a.name,aa);return P.sa?P.sa(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,G)}function g(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){a=this;var P=a.m.ra?a.m.ra(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D),aa=this.K(0,P);r(aa)||Uh(a.name,P);return aa.ra?aa.ra(b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):aa.call(null,b,c,d,
e,f,g,k,l,p,u,v,w,y,A,D)}function k(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){a=this;var D=a.m.qa?a.m.qa(b,c,d,e,f,g,k,l,p,u,v,w,y,A):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A),P=this.K(0,D);r(P)||Uh(a.name,D);return P.qa?P.qa(b,c,d,e,f,g,k,l,p,u,v,w,y,A):P.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y,A)}function l(a,b,c,d,e,f,g,k,l,p,u,v,w,y){a=this;var A=a.m.pa?a.m.pa(b,c,d,e,f,g,k,l,p,u,v,w,y):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w,y),D=this.K(0,A);r(D)||Uh(a.name,A);return D.pa?D.pa(b,c,d,e,f,g,k,l,p,u,v,w,y):D.call(null,
b,c,d,e,f,g,k,l,p,u,v,w,y)}function p(a,b,c,d,e,f,g,k,l,p,u,v,w){a=this;var y=a.m.oa?a.m.oa(b,c,d,e,f,g,k,l,p,u,v,w):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v,w),A=this.K(0,y);r(A)||Uh(a.name,y);return A.oa?A.oa(b,c,d,e,f,g,k,l,p,u,v,w):A.call(null,b,c,d,e,f,g,k,l,p,u,v,w)}function u(a,b,c,d,e,f,g,k,l,p,u,v){a=this;var w=a.m.na?a.m.na(b,c,d,e,f,g,k,l,p,u,v):a.m.call(null,b,c,d,e,f,g,k,l,p,u,v),y=this.K(0,w);r(y)||Uh(a.name,w);return y.na?y.na(b,c,d,e,f,g,k,l,p,u,v):y.call(null,b,c,d,e,f,g,k,l,p,u,v)}function v(a,
b,c,d,e,f,g,k,l,p,u){a=this;var v=a.m.ma?a.m.ma(b,c,d,e,f,g,k,l,p,u):a.m.call(null,b,c,d,e,f,g,k,l,p,u),w=this.K(0,v);r(w)||Uh(a.name,v);return w.ma?w.ma(b,c,d,e,f,g,k,l,p,u):w.call(null,b,c,d,e,f,g,k,l,p,u)}function w(a,b,c,d,e,f,g,k,l,p){a=this;var u=a.m.ya?a.m.ya(b,c,d,e,f,g,k,l,p):a.m.call(null,b,c,d,e,f,g,k,l,p),v=this.K(0,u);r(v)||Uh(a.name,u);return v.ya?v.ya(b,c,d,e,f,g,k,l,p):v.call(null,b,c,d,e,f,g,k,l,p)}function y(a,b,c,d,e,f,g,k,l){a=this;var p=a.m.xa?a.m.xa(b,c,d,e,f,g,k,l):a.m.call(null,
b,c,d,e,f,g,k,l),u=this.K(0,p);r(u)||Uh(a.name,p);return u.xa?u.xa(b,c,d,e,f,g,k,l):u.call(null,b,c,d,e,f,g,k,l)}function A(a,b,c,d,e,f,g,k){a=this;var l=a.m.ja?a.m.ja(b,c,d,e,f,g,k):a.m.call(null,b,c,d,e,f,g,k),p=this.K(0,l);r(p)||Uh(a.name,l);return p.ja?p.ja(b,c,d,e,f,g,k):p.call(null,b,c,d,e,f,g,k)}function D(a,b,c,d,e,f,g){a=this;var k=a.m.ha?a.m.ha(b,c,d,e,f,g):a.m.call(null,b,c,d,e,f,g),l=this.K(0,k);r(l)||Uh(a.name,k);return l.ha?l.ha(b,c,d,e,f,g):l.call(null,b,c,d,e,f,g)}function H(a,b,c,
d,e,f){a=this;var g=a.m.L?a.m.L(b,c,d,e,f):a.m.call(null,b,c,d,e,f),k=this.K(0,g);r(k)||Uh(a.name,g);return k.L?k.L(b,c,d,e,f):k.call(null,b,c,d,e,f)}function K(a,b,c,d,e){a=this;var f=a.m.C?a.m.C(b,c,d,e):a.m.call(null,b,c,d,e),g=this.K(0,f);r(g)||Uh(a.name,f);return g.C?g.C(b,c,d,e):g.call(null,b,c,d,e)}function R(a,b,c,d){a=this;var e=a.m.c?a.m.c(b,c,d):a.m.call(null,b,c,d),f=this.K(0,e);r(f)||Uh(a.name,e);return f.c?f.c(b,c,d):f.call(null,b,c,d)}function U(a,b,c){a=this;var d=a.m.b?a.m.b(b,c):
a.m.call(null,b,c),e=this.K(0,d);r(e)||Uh(a.name,d);return e.b?e.b(b,c):e.call(null,b,c)}function va(a,b){a=this;var c=a.m.a?a.m.a(b):a.m.call(null,b),d=this.K(0,c);r(d)||Uh(a.name,c);return d.a?d.a(b):d.call(null,b)}function lb(a){a=this;var b=a.m.h?a.m.h():a.m.call(null),c=this.K(0,b);r(c)||Uh(a.name,b);return c.h?c.h():c.call(null)}var G=null,G=function(G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh){switch(arguments.length){case 1:return lb.call(this,G);case 2:return va.call(this,
G,da);case 3:return U.call(this,G,da,ha);case 4:return R.call(this,G,da,ha,P);case 5:return K.call(this,G,da,ha,P,oa);case 6:return H.call(this,G,da,ha,P,oa,ta);case 7:return D.call(this,G,da,ha,P,oa,ta,Za);case 8:return A.call(this,G,da,ha,P,oa,ta,Za,za);case 9:return y.call(this,G,da,ha,P,oa,ta,Za,za,Ea);case 10:return w.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha);case 11:return v.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma);case 12:return u.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab);case 13:return p.call(this,
G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab);case 14:return l.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb);case 15:return k.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb);case 16:return g.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb);case 17:return f.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob);case 18:return e.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic);case 19:return d.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc);case 20:return c.call(this,
G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md);case 21:return b.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff);case 22:return a.call(this,G,da,ha,P,oa,ta,Za,za,Ea,Ha,Ma,Ab,ab,fb,rb,Bb,Ob,ic,Hc,Md,ff,hh)}throw Error("Invalid arity: "+arguments.length);};G.a=lb;G.b=va;G.c=U;G.C=R;G.L=K;G.ha=H;G.ja=D;G.xa=A;G.ya=y;G.ma=w;G.na=v;G.oa=u;G.pa=p;G.qa=l;G.ra=k;G.sa=g;G.ta=f;G.ua=e;G.va=d;G.wa=c;G.Yb=b;G.lb=a;return G}();
h.apply=function(a,b){return this.call.apply(this,[this].concat(Cb(b)))};h.h=function(){var a=this.m.h?this.m.h():this.m.call(null),b=this.K(0,a);r(b)||Uh(this.name,a);return b.h?b.h():b.call(null)};h.a=function(a){var b=this.m.a?this.m.a(a):this.m.call(null,a),c=this.K(0,b);r(c)||Uh(this.name,b);return c.a?c.a(a):c.call(null,a)};h.b=function(a,b){var c=this.m.b?this.m.b(a,b):this.m.call(null,a,b),d=this.K(0,c);r(d)||Uh(this.name,c);return d.b?d.b(a,b):d.call(null,a,b)};
h.c=function(a,b,c){var d=this.m.c?this.m.c(a,b,c):this.m.call(null,a,b,c),e=this.K(0,d);r(e)||Uh(this.name,d);return e.c?e.c(a,b,c):e.call(null,a,b,c)};h.C=function(a,b,c,d){var e=this.m.C?this.m.C(a,b,c,d):this.m.call(null,a,b,c,d),f=this.K(0,e);r(f)||Uh(this.name,e);return f.C?f.C(a,b,c,d):f.call(null,a,b,c,d)};h.L=function(a,b,c,d,e){var f=this.m.L?this.m.L(a,b,c,d,e):this.m.call(null,a,b,c,d,e),g=this.K(0,f);r(g)||Uh(this.name,f);return g.L?g.L(a,b,c,d,e):g.call(null,a,b,c,d,e)};
h.ha=function(a,b,c,d,e,f){var g=this.m.ha?this.m.ha(a,b,c,d,e,f):this.m.call(null,a,b,c,d,e,f),k=this.K(0,g);r(k)||Uh(this.name,g);return k.ha?k.ha(a,b,c,d,e,f):k.call(null,a,b,c,d,e,f)};h.ja=function(a,b,c,d,e,f,g){var k=this.m.ja?this.m.ja(a,b,c,d,e,f,g):this.m.call(null,a,b,c,d,e,f,g),l=this.K(0,k);r(l)||Uh(this.name,k);return l.ja?l.ja(a,b,c,d,e,f,g):l.call(null,a,b,c,d,e,f,g)};
h.xa=function(a,b,c,d,e,f,g,k){var l=this.m.xa?this.m.xa(a,b,c,d,e,f,g,k):this.m.call(null,a,b,c,d,e,f,g,k),p=this.K(0,l);r(p)||Uh(this.name,l);return p.xa?p.xa(a,b,c,d,e,f,g,k):p.call(null,a,b,c,d,e,f,g,k)};h.ya=function(a,b,c,d,e,f,g,k,l){var p=this.m.ya?this.m.ya(a,b,c,d,e,f,g,k,l):this.m.call(null,a,b,c,d,e,f,g,k,l),u=this.K(0,p);r(u)||Uh(this.name,p);return u.ya?u.ya(a,b,c,d,e,f,g,k,l):u.call(null,a,b,c,d,e,f,g,k,l)};
h.ma=function(a,b,c,d,e,f,g,k,l,p){var u=this.m.ma?this.m.ma(a,b,c,d,e,f,g,k,l,p):this.m.call(null,a,b,c,d,e,f,g,k,l,p),v=this.K(0,u);r(v)||Uh(this.name,u);return v.ma?v.ma(a,b,c,d,e,f,g,k,l,p):v.call(null,a,b,c,d,e,f,g,k,l,p)};h.na=function(a,b,c,d,e,f,g,k,l,p,u){var v=this.m.na?this.m.na(a,b,c,d,e,f,g,k,l,p,u):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u),w=this.K(0,v);r(w)||Uh(this.name,v);return w.na?w.na(a,b,c,d,e,f,g,k,l,p,u):w.call(null,a,b,c,d,e,f,g,k,l,p,u)};
h.oa=function(a,b,c,d,e,f,g,k,l,p,u,v){var w=this.m.oa?this.m.oa(a,b,c,d,e,f,g,k,l,p,u,v):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v),y=this.K(0,w);r(y)||Uh(this.name,w);return y.oa?y.oa(a,b,c,d,e,f,g,k,l,p,u,v):y.call(null,a,b,c,d,e,f,g,k,l,p,u,v)};
h.pa=function(a,b,c,d,e,f,g,k,l,p,u,v,w){var y=this.m.pa?this.m.pa(a,b,c,d,e,f,g,k,l,p,u,v,w):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w),A=this.K(0,y);r(A)||Uh(this.name,y);return A.pa?A.pa(a,b,c,d,e,f,g,k,l,p,u,v,w):A.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w)};
h.qa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y){var A=this.m.qa?this.m.qa(a,b,c,d,e,f,g,k,l,p,u,v,w,y):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y),D=this.K(0,A);r(D)||Uh(this.name,A);return D.qa?D.qa(a,b,c,d,e,f,g,k,l,p,u,v,w,y):D.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y)};
h.ra=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A){var D=this.m.ra?this.m.ra(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A),H=this.K(0,D);r(H)||Uh(this.name,D);return H.ra?H.ra(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A):H.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A)};
h.sa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D){var H=this.m.sa?this.m.sa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D),K=this.K(0,H);r(K)||Uh(this.name,H);return K.sa?K.sa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D):K.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D)};
h.ta=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H){var K=this.m.ta?this.m.ta(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H),R=this.K(0,K);r(R)||Uh(this.name,K);return R.ta?R.ta(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H):R.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H)};
h.ua=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K){var R=this.m.ua?this.m.ua(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K),U=this.K(0,R);r(U)||Uh(this.name,R);return U.ua?U.ua(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K):U.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K)};
h.va=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R){var U=this.m.va?this.m.va(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R),va=this.K(0,U);r(va)||Uh(this.name,U);return va.va?va.va(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R):va.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R)};
h.wa=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U){var va=this.m.wa?this.m.wa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U):this.m.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U),lb=this.K(0,va);r(lb)||Uh(this.name,va);return lb.wa?lb.wa(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U):lb.call(null,a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U)};
h.Yb=function(a,b,c,d,e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va){var lb=Te(this.m,a,b,c,d,N([e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va],0)),G=this.K(0,lb);r(G)||Uh(this.name,lb);return Te(G,a,b,c,d,N([e,f,g,k,l,p,u,v,w,y,A,D,H,K,R,U,va],0))};h.fa=function(a,b,c){kf.C(this.Ub,Q,b,c);Ph(this.hc,this.Ub,this.Wb,this.dc);return this};
h.K=function(a,b){C.b(L.a?L.a(this.Wb):L.call(null,this.Wb),L.a?L.a(this.dc):L.call(null,this.dc))||Ph(this.hc,this.Ub,this.Wb,this.dc);var c=(L.a?L.a(this.hc):L.call(null,this.hc)).call(null,b);if(r(c))return c;c=Sh(this.name,b,this.dc,this.Ub,this.Ad,this.hc,this.Wb);return r(c)?c:(L.a?L.a(this.Ub):L.call(null,this.Ub)).call(null,this.pd)};h.Zb=function(){return Fc(this.name)};h.$b=function(){return Gc(this.name)};h.S=function(){return ca(this)};
function Wh(a,b){this.kc=a;this.v=b;this.o=2153775104;this.G=2048}h=Wh.prototype;h.toString=function(){return this.kc};h.equiv=function(a){return this.F(null,a)};h.F=function(a,b){return b instanceof Wh&&this.kc===b.kc};h.U=function(a,b){return x(b,[t('#uuid "'),t(this.kc),t('"')].join(""))};h.S=function(){null==this.v&&(this.v=Uc(this.kc));return this.v};
function Xh(a,b,c){var d=Error(a);this.message=a;this.data=b;this.Ic=c;this.name=d.name;this.description=d.description;this.zd=d.zd;this.fileName=d.fileName;this.lineNumber=d.lineNumber;this.columnNumber=d.columnNumber;this.stack=d.stack;return this}Xh.prototype.__proto__=Error.prototype;Xh.prototype.la=m;Xh.prototype.U=function(a,b,c){x(b,"#error {:message ");vh(this.message,b,c);r(this.data)&&(x(b,", :data "),vh(this.data,b,c));r(this.Ic)&&(x(b,", :cause "),vh(this.Ic,b,c));return x(b,"}")};
Xh.prototype.toString=function(){return Mc(this)};function Yh(a,b){return new Xh(a,b,null)};var Zh=new S(null,"args","args",1315556576),$h=new S("clojure.test.check.clojure-test","params","clojure.test.check.clojure-test/params",1851720992),ai=new S(null,"mandatory","mandatory",542802336),bi=new z(null,"\x26","\x26",-2144855648,null),ci=new S(null,"max-tries","max-tries",-1824441792),di=new S(null,"logical-blocks","logical-blocks",-1466339776),ei=new z("cljs.core","unquote","cljs.core/unquote",1013085760,null),fi=new z(null,"when-first","when-first",821699168,null),gi=new S(null,"arg3",
"arg3",-1486822496),hi=new S(null,"failingSize","failingSize",-269149055),ii=new z(null,"defrecord*","defrecord*",-1936366207,null),ji=new S(null,"suffix","suffix",367373057),ki=new z(null,"try","try",-1273693247,null),li=new S(null,"min","min",444991522),mi=new S(null,"selector","selector",762528866),ni=new z("cljs.core","*print-level*","cljs.core/*print-level*",65848482,null),oi=new z(null,"*print-circle*","*print-circle*",1148404994,null),pi=new S(null,"else-params","else-params",-832171646),qi=
new S(null,"block","block",664686210),ri=new S(null,"testing-vars","testing-vars",-2114769150),si=new S(null,"allows-separator","allows-separator",-818967742),Ff=new S(null,"totalNodesVisited","totalNodesVisited",-575824829),ti=new z(null,"last-was-whitespace?","last-was-whitespace?",-1073928093,null),ui=new S(null,"indent","indent",-148200125),vi=new z(null,"meta13393","meta13393",374889891,null),wi=new z("cljs.pprint","*print-pretty*","cljs.pprint/*print-pretty*",-762636861,null),xi=new z("cljs.pprint",
"*print-pprint-dispatch*","cljs.pprint/*print-pprint-dispatch*",-1820734013,null),yi=new z(null,"*print-suppress-namespaces*","*print-suppress-namespaces*",1795828355,null),zi=new S(null,"miser-width","miser-width",-1310049437),Ai=new z(null,"struct","struct",325972931,null),Bi=new S("clojure.test.check.clojure-test","trial","clojure.test.check.clojure-test/trial",866433060),Cf=new S(null,"shrunk","shrunk",-2041664412),Ci=new z(null,"meta13981","meta13981",-1712080348,null),Di=new S(null,"begin-test-var",
"begin-test-var",-908571100),ob=new S(null,"meta","meta",1499536964),Ei=new z(null,"..","..",-300507420,null),Fi=new z(null,"*print-pretty*","*print-pretty*",726795140,null),Gi=new z(null,"*print-pprint-dispatch*","*print-pprint-dispatch*",-1709114492,null),Hi=new S(null,"buffer-block","buffer-block",-10937307),Ii=new z(null,"max-columns","max-columns",-912112507,null),pb=new S(null,"dup","dup",556298533),Ji=new S(null,"testing-contexts","testing-contexts",-1485646523),Ki=new S(null,"arg2","arg2",
1729550917),Li=new S(null,"commainterval","commainterval",-1980061083),Mi=new S(null,"returned","returned",-2020439163),Ef=new S(null,"total-nodes-visited","total-nodes-visited",-620132443),Ni=new S(null,"pretty-writer","pretty-writer",-1222834267),Oi=new S(null,"parent","parent",-878878779),Pi=new S(null,"sections","sections",-886710106),Qi=new S(null,"begin-test","begin-test",1831272774),Ri=new S(null,"private","private",-558947994),Si=new S(null,"else","else",-1508377146),Ti=new S(null,"miser",
"miser",-556060186),Ui=new S(null,"report-counters","report-counters",-1702609242),Vi=new S(null,"gen","gen",142575302),Wi=new S(null,"right-margin","right-margin",-810413306),Xi=new z("cljs.pprint","*print-base*","cljs.pprint/*print-base*",1887526790,null),Yi=new z(null,"if-not","if-not",-265415609,null),Zi=new z("cljs.core","deref","cljs.core/deref",1901963335,null),$i=new z(null,"ns*","ns*",1840949383,null),aj=new S(null,"offset","offset",296498311),bj=new z(null,"*print-level*","*print-level*",
-634488505,null),cj=new z(null,"doseq","doseq",221164135,null),dj=new S(null,"cur","cur",1153190599),ej=new S(null,"queue","queue",1455835879),hf=new S(null,"validator","validator",-1966190681),fj=new z(null,"finally","finally",-1065347064,null),gj=new S(null,"default","default",-1987822328),hj=new S(null,"added","added",2057651688),ij=new z(null,"when-let","when-let",-1383043480,null),jj=new S(null,"func","func",-238706040),kj=new z(null,"loop*","loop*",615029416,null),lj=new S(null,"ns","ns",441598760),
mj=new S(null,"symbol","symbol",-1038572696),nj=new S(null,"generator-fn","generator-fn",811851656),oj=new S(null,"name","name",1843675177),pj=new z("cljs.pprint","*print-radix*","cljs.pprint/*print-radix*",1558253641,null),qj=new S(null,"n","n",562130025),rj=new S(null,"w","w",354169001),sj=new S(null,"not-delivered","not-delivered",1599158697),tj=new S(null,"remaining-arg-count","remaining-arg-count",-1216589335),uj=new S("cljs.test","pprint","cljs.test/pprint",1627393641),vj=new S(null,"formatter",
"formatter",-483008823),wj=new z(null,"meta13012","meta13012",273015497,null),xj=new S(null,"fill","fill",883462889),yj=new S(null,"section","section",-300141526),zj=new z(null,"*print-length*","*print-length*",-687693654,null),Aj=new z("cljs.pprint","*print-miser-width*","cljs.pprint/*print-miser-width*",1588913450,null),Bj=new z(null,"cljs.core","cljs.core",770546058,null),Cj=new z(null,"miser-width","miser-width",330482090,null),Dj=new z(null,"let","let",358118826,null),Ej=new S(null,"file","file",
-1269645878),Fj=new S(null,"num-tests","num-tests",2050041354),Gj=new z(null,"-\x3e","-\x3e",-2139605430,null),Hj=new S(null,"end-pos","end-pos",-1643883926),Ij=new S(null,"circle","circle",1903212362),Jj=new S(null,"end-column","end-column",1425389514),Kj=new S(null,"mode","mode",654403691),Lj=new S(null,"start","start",-355208981),Mj=new S(null,"lines","lines",-700165781),Nj=new S(null,"params","params",710516235),Oj=new z(null,"fn","fn",465265323,null),We=new z(null,"meta10599","meta10599",965833515,
null),Pj=new S(null,"numTests","numTests",431830891),Qj=new S(null,"max-iterations","max-iterations",2021275563),Rj=new S(null,"pos","pos",-864607220),Dh=new S(null,"val","val",128701612),Sj=new S(null,"writing","writing",-1486865108),Tj=new z("cljs.pprint","*print-suppress-namespaces*","cljs.pprint/*print-suppress-namespaces*",1649488204,null),Uj=new S(null,"type","type",1174270348),Vj=new S(null,"parameter-from-args","parameter-from-args",-758446196),Wj=new S(null,"max-size","max-size",-874966132),
Xj=new z(null,"do","do",1686842252,null),Yj=new S(null,"done-nl","done-nl",-381024340),Zj=new z(null,"when-not","when-not",-1223136340,null),ak=new S(null,"suppress-namespaces","suppress-namespaces",2130686956),bk=new z(null,"when","when",1064114221,null),ck=new S(null,"state","state",-1988618099),yh=new S(null,"fallback-impl","fallback-impl",-1501286995),mb=new S(null,"flush-on-newline","flush-on-newline",-151457939),dk=new S(null,"relative-to","relative-to",-470100051),ek=new S(null,"string","string",
-1989541586),fk=new S(null,"vector","vector",1902966158),gk=new z(null,"defn","defn",-126010802,null),hk=new z(null,"letfn*","letfn*",-110097810,null),ik=new z(null,"capped","capped",-1650988402,null),jk=new S(null,"e","e",1381269198),kk=new z(null,"if","if",1181717262,null),lk=new S(null,"char-format","char-format",-1016499218),mk=new S(null,"start-col","start-col",668080143),nk=new S(null,"function","function",-2127255473),ok=new S(null,"radix","radix",857016463),pk=new z(null,"new","new",-444906321,
null),qk=new S(null,"seed","seed",68613327),Lh=new S(null,"descendants","descendants",1824886031),rk=new S(null,"colon-up-arrow","colon-up-arrow",244853007),sk=new z(null,"ns","ns",2082130287,null),tk=new S(null,"k","k",-2146297393),uk=new S(null,"prefix","prefix",-265908465),vk=new S(null,"column","column",2078222095),wk=new S(null,"colon","colon",-965200945),Mh=new S(null,"ancestors","ancestors",-776045424),xk=new S(null,"stream","stream",1534941648),yk=new S(null,"level","level",1290497552),zk=
new z(null,"*print-radix*","*print-radix*",1168517744,null),Ak=new S(null,"infinite?","infinite?",-2017886608),nb=new S(null,"readably","readably",1129599760),Bk=new S(null,"summary","summary",380847952),Ck=new z(null,"meta14015","meta14015",493513552,null),Dk=new S(null,"right-bracket","right-bracket",951856080),ph=new S(null,"more-marker","more-marker",-14717935),Ek=new S(null,"dispatch","dispatch",1319337009),Fk=new z(null,"fields","fields",-291534703,null),Gk=new S(null,"end-test-var","end-test-var",
984198545),Hk=new z("cljs.pprint","*print-right-margin*","cljs.pprint/*print-right-margin*",-56183119,null),Ik=new z("cljs.core","*print-length*","cljs.core/*print-length*",-20766927,null),Jk=new z(null,"cljs.pprint","cljs.pprint",-966900911,null),Kk=new z(null,"meta13998","meta13998",-448892462,null),Lk=new S(null,"fail","fail",1706214930),Mk=new z(null,"deftype*","deftype*",962659890,null),Nk=new z(null,"let*","let*",1920721458,null),Ok=new z(null,"struct-map","struct-map",-1387540878,null),Pk=
new S(null,"padchar","padchar",2018584530),Qk=new z(null,"js*","js*",-1134233646,null),Rk=new S(null,"reporter","reporter",-805360621),Sk=new z(null,"dotimes","dotimes",-818708397,null),Tk=new S(null,"buffer-blob","buffer-blob",-1830112173),Uk=new z(null,"*print-lines*","*print-lines*",75920659,null),Vk=new S(null,"dynamic","dynamic",704819571),Wk=new S(null,"buffering","buffering",-876713613),Xk=new S(null,"line","line",212345235),Yk=new z(null,"with-open","with-open",172119667,null),Zk=new S(null,
"list","list",765357683),$k=new z(null,"fn*","fn*",-752876845,null),al=new S(null,"end-run-tests","end-run-tests",267300563),bl=new S(null,"right-params","right-params",-1790676237),cl=new z(null,"defonce","defonce",-1681484013,null),dl=new z(null,"recur","recur",1202958259,null),el=new z(null,"*print-miser-width*","*print-miser-width*",1206624211,null),fl=new S(null,"result","result",1415092211),gl=new z(null,"defn-","defn-",1097765044,null),qb=new S(null,"print-length","print-length",1931866356),
hl=new S(null,"max","max",61366548),il=new S(null,"trailing-white-space","trailing-white-space",1496006996),jl=new S(null,"mincol","mincol",1230695445),kl=new z("clojure.core","deref","clojure.core/deref",188719157,null),ll=new S(null,"end-test-all-vars","end-test-all-vars",548827253),ml=new S(null,"minpad","minpad",323570901),nl=new S(null,"smallest","smallest",-152623883),ol=new S(null,"current","current",-1088038603),pl=new S(null,"at","at",1476951349),ql=new S(null,"deref","deref",-145586795),
rl=new S("clojure.test.check.clojure-test","property","clojure.test.check.clojure-test/property",1356517781),Kh=new S(null,"parents","parents",-2027538891),sl=new S(null,"count","count",2139924085),tl=new S(null,"per-line-prefix","per-line-prefix",846941813),ul=new S(null,"expected","expected",1583670997),vl=new z(null,"/","/",-1371932971,null),wl=new S(null,"colnum","colnum",2023796854),xl=new z(null,"meta13969","meta13969",-810217226,null),yl=new z("cljs.core","*print-readably*","cljs.core/*print-readably*",
-354670250,null),zl=new S(null,"failing-size","failing-size",-429562538),Al=new S(null,"length","length",588987862),Bl=new z(null,"loop","loop",1244978678,null),Cl=new z("clojure.core","unquote","clojure.core/unquote",843087510,null),Dl=new S(null,"overflowchar","overflowchar",-1620088106),El=new S("cljs.test","default","cljs.test/default",-1581405322),Fl=new S(null,"end-line","end-line",1837326455),Gl=new z(null,"condp","condp",1054325175,null),Hl=new S(null,"right","right",-452581833),Il=new S(null,
"colinc","colinc",-584873385),Jl=new S(null,"begin-test-ns","begin-test-ns",-1701237033),Kl=new z(null,"cond","cond",1606708055,null),Ll=new S("clojure.test.check.clojure-test","shrinking","clojure.test.check.clojure-test/shrinking",372289399),Ml=new S(null,"both","both",-393648840),Nl=new S(null,"d","d",1972142424),Ol=new z(null,"binding","binding",-2114503176,null),Pl=new S(null,"error","error",-978969032),Ql=new S(null,"depth","depth",1768663640),Rl=new z(null,"with-local-vars","with-local-vars",
837642072,null),Sl=new S(null,"def","def",-1043430536),Tl=new z(null,"defmacro","defmacro",2054157304,null),Ul=new z(null,"set!","set!",250714521,null),Vl=new S(null,"clauses","clauses",1454841241),Wl=new S(null,"indent-t","indent-t",528318969),Xl=new S(null,"pass","pass",1574159993),Yl=new S(null,"max-elements","max-elements",433034073),Zl=new z("cljs.pprint","*print-circle*","cljs.pprint/*print-circle*",1606185849,null),$l=new S(null,"linear","linear",872268697),am=new S(null,"seq","seq",-1817803783),
bm=new z(null,"locking","locking",1542862874,null),cm=new z(null,".",".",1975675962,null),dm=new z(null,"*print-right-margin*","*print-right-margin*",-437272454,null),em=new S(null,"first","first",-644103046),fm=new z(null,"var","var",870848730,null),gm=new z(null,"quote","quote",1377916282,null),hm=new S(null,"bracket-info","bracket-info",-1600092774),im=new S(null,"set","set",304602554),jm=new S(null,"base-args","base-args",-1268706822),km=new S(null,"pretty","pretty",-1916372486),lm=new z(null,
"lb","lb",950310490,null),mm=new S(null,"end","end",-268185958),nm=new S(null,"logical-block-callback","logical-block-callback",1612691194),om=new S(null,"base","base",185279322),pm=new S(null,"arglists","arglists",1661989754),qm=new z(null,"if-let","if-let",1803593690,null),rm=new z(null,"*print-readably*","*print-readably*",-761361221,null),sm=new S(null,"hierarchy","hierarchy",-1053470341),tm=new S(null,"actual","actual",107306363),um=new z(null,"catch","catch",-1616370245,null),vm=new S(null,
"buffer-level","buffer-level",928864731),wm=new S(null,"intra-block-nl","intra-block-nl",1808826875),xm=new S(null,"separator","separator",-1628749125),ym=new S(null,"num-elements","num-elements",1960422107),zm=new S(null,"flags","flags",1775418075),xh=new S(null,"alt-impl","alt-impl",670969595),Am=new z(null,"writer","writer",1362963291,null),Bm=new S(null,"doc","doc",1913296891),Cm=new S(null,"directive","directive",793559132),Dm=new S(null,"logical-block","logical-block",-581022564),Em=new S(null,
"last","last",1105735132),Fm=new S(null,"jsdoc","jsdoc",1745183516),Gm=new z("cljs.pprint","*print-lines*","cljs.pprint/*print-lines*",534683484,null),Hm=new S(null,"min-elements","min-elements",949370780),Im=new S(null,"NaN?","NaN?",-1917767651),Jm=new S(null,"end-test-ns","end-test-ns",1620675645),Km=new S(null,"up-arrow","up-arrow",1705310333),Lm=new S(null,"type-tag","type-tag",-1873863267),Mm=new S(null,"map","map",1371690461),Nm=new S(null,"min-remaining","min-remaining",962687677),Om=new S(null,
"test","test",577538877),Pm=new S(null,"rest","rest",-1241696419),Qm=new z(null,"throw","throw",595905694,null),Rm=new S(null,"arg1","arg1",951899358),Sm=new S(null,"nl-t","nl-t",-1608382114),Tm=new S(null,"buffer","buffer",617295198),Um=new S(null,"start-pos","start-pos",668789086),Vm=new S(null,"max-columns","max-columns",1742323262),Wm=new S(null,"start-block-t","start-block-t",-373430594),Xm=new S(null,"exponentchar","exponentchar",1986664222),Ym=new S(null,"message","message",-406056002),Zm=
new S(null,"end-block-t","end-block-t",1544648735),$m=new z(null,"def","def",597100991,null),an=new z(null,"*print-base*","*print-base*",2037937791,null),bn=new S(null,"data","data",-232669377),cn=new S(null,"commachar","commachar",652859327),dn=new S(null,"so-far","so-far",-1973642241),en=new S(null,"end-test-vars","end-test-vars",-1394419713);function fn(a,b){this.root=a;this.children=b;this.o=16;this.G=0}fn.prototype.ca=function(a,b){if(C.b(b,0))return this.root;if(C.b(b,1))return this.children;throw Error("Index out of bounds in rose tree");};fn.prototype.Qa=function(a,b,c){return C.b(b,0)?this.root:C.b(b,1)?this.children:c};function gn(a){return a.root}function hn(a){return a.children}function jn(a,b){return new fn(a,b)}
var kn=function kn(b,c){return new Be(null,function(){var d=E(c),e;if(d)if(0===b)e=Zc(c);else{e=wd;var f=I(d),g;g=b-1;d=Zc(d);g=kn.b?kn.b(g,d):kn.call(null,g,d);e=e(f,g)}else e=null;return e},null,null)},ln=function ln(b){var c=b.root,d=c.children;return jn(c.root,Me.b(mf.b(ln,b.children),d))},mn=function mn(b,c){return jn(function(){var d=c.root;return b.a?b.a(d):b.call(null,d)}(),mf.b(function(c){return mn.b?mn.b(b,c):mn.call(null,b,c)},c.children))},nn=function nn(b,c){return jn(c.root,mf.b(function(c){return nn.b?
nn.b(b,c):nn.call(null,b,c)},xf(function(c){c=c.root;return b.a?b.a(c):b.call(null,c)},c.children)))};
function on(a){return function c(d){return new Be(null,function(){for(var e=d;;){var f=E(e);if(f){var g=f,k=I(g),l=O(k,0,null),p=O(k,1,null);if(f=E(function(c,d,e,f,g,k){return function K(l){return new Be(null,function(c,d,e,f){return function(){for(;;){var c=E(l);if(c){if(Sd(c)){var d=Cc(c),e=M(d),g=Fe(e);a:for(var k=0;;)if(k<e){var p=Jb.b(d,k);Ie(g,Q.c(a,f,p));k+=1}else{d=!0;break a}return d?He(g.ia(),K(Dc(c))):He(g.ia(),null)}g=I(c);return wd(Q.c(a,f,g),K(Zc(c)))}return null}}}(c,d,e,f,g,k),null,
null)}}(e,k,l,p,g,f)(l.children)))return Me.b(f,c(Zc(e)));e=Zc(e)}else return null}},null,null)}(mf.c($f,a,lh(0,Number.MAX_VALUE)))}var pn=function pn(b,c){return jn(Pe(b,mf.b(gn,c)),mf.b(function(c){return pn.b?pn.b(b,c):pn.call(null,b,c)},on(c)))};function qn(a){return Me.b(cf(function(b){return kn(b,a)},a),on(Zf(a)))}
var rn=function rn(b,c){return E(c)?jn(Pe(b,mf.b(gn,c)),mf.b(function(c){return rn.b?rn.b(b,c):rn.call(null,b,c)},qn(c))):jn(b.h?b.h():b.call(null),Fd)},sn=function sn(b){var c=b.root;b=b.children;b=Me.b(mf.b(sn,b),mf.b(sn,wf(hn,N([b],0))));return jn(c,b)};for(var tn=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],un=tn[0]=0;;)if(256>un)tn[un]=tn[un>>1]+(un&1),un+=1;else break;function vn(a){var b=a.ba;a=a.ka;return tn[b&255]+tn[b>>8&255]+tn[b>>16&255]+tn[b>>24&255]+tn[a&255]+tn[a>>8&255]+tn[a>>16&255]+tn[a>>24&255]};function wn(a,b){return a.multiply(b)}var xn=Ra();var yn;a:for(var zn=53,An=1;;){if(0===zn){yn=An;break a}var Bn=An/2,zn=zn-1,An=Bn}var Cn=4294967296*yn;var Dn=function Dn(b){if(null!=b&&null!=b.Rc)return b.Rc();var c=Dn[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Dn._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IRandom.rand-long",b);},En=function En(b){if(null!=b&&null!=b.Qc)return b.Qc();var c=En[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=En._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IRandom.rand-double",b);},Fn=function Fn(b){if(null!=b&&null!=b.Sc)return b.Sc();var c=Fn[ba(null==
b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Fn._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IRandom.split",b);},Gn=function Gn(b,c){if(null!=b&&null!=b.Tc)return b.Tc(0,c);var d=Gn[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=Gn._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IRandom.split-n",b);};function Hn(a,b){return bb(a,b).Gc(a)}var In=Pa("bf58476d1ce4e5b9",16),Jn=Pa("94d049bb133111eb",16);
function Kn(a){return Hn(wn(Hn(wn(Hn(a,30),In),27),Jn),31)}var Ln=Pa("ff51afd7ed558ccd",16),Mn=Pa("c4ceb9fe1a85ec53",16),Nn=Pa("aaaaaaaaaaaaaaaa",16);function On(a){a=Hn(wn(Hn(wn(Hn(a,33),Ln),33),Mn),33).Vc(xn);var b=Hn(a,1);return 24>(vn.a?vn.a(b):vn.call(null,b))?a.Gc(Nn):a}function Pn(a,b){this.gamma=a;this.state=b}Pn.prototype.Rc=function(){return Kn(this.state.add(this.gamma))};Pn.prototype.Qc=function(){var a=Dn(this),a=bb(a,11);return yn*(0<=a.ba?a.ba:Na+a.ba)+Cn*a.ka};
Pn.prototype.Sc=function(){var a=this.gamma.add(this.state),b=this.gamma.add(a),c=On(b);return new V(null,2,5,W,[new Pn(this.gamma,b),new Pn(c,Kn(a))],null)};Pn.prototype.Tc=function(a,b){switch(b){case 0:return Fd;case 1:return new V(null,1,5,W,[this],null);default:for(var c=b-1,d=this.state,e=wc(Fd);;){if(C.b(c,M(e)))return yc(Ne.b(e,new Pn(this.gamma,d)));var f=this.gamma.add(d),d=this.gamma.add(f),g=On(d),f=new Pn(g,Kn(f)),e=Ne.b(e,f)}}};var Qn=Pa("9e3779b97f4a7c15",16);
function Rn(a){var b;b="number"===typeof a?Ga(a):a instanceof Ba?a:null;if(!r(b))throw Yh("Bad random seed!",new q(null,1,[qk,a],null));return new Pn(Qn,b)}var Sn=new q(null,1,[ck,Rn((new Date).valueOf())],null),Tn=function(a){return function(){return Mi.a(kf.b(a,function(){return function(a){a=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a;a=B.b(a,ck);var b=Fn(a);a=O(b,0,null);b=O(b,1,null);return new q(null,2,[ck,a,Mi,b],null)}}(a)))}}(Y?Y(Sn):ef.call(null,Sn));var Un=function Un(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return Un.a(arguments[0]);case 2:return Un.b(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};Un.a=function(a){var b=new ya;for(a=E(a);;)if(null!=a)b=b.append(""+t(I(a))),a=J(a);else return b.toString()};Un.b=function(a,b){for(var c=new ya,d=E(b);;)if(null!=d)c.append(""+t(I(d))),d=J(d),null!=d&&c.append(a);else return c.toString()};
Un.B=2;function Vn(a,b){if(0>=b||b>=2+M(a))return Ed.b(Zf(wd("",mf.b(t,E(a)))),"");if(r(oe?kc(1,b):ne.call(null,1,b)))return new V(null,1,5,W,[a],null);if(r(oe?kc(2,b):ne.call(null,2,b)))return new V(null,2,5,W,["",a],null);var c=b-2;return Ed.b(Zf(wd("",bg(Zf(mf.b(t,E(a))),0,c))),a.substring(c))}
function Wn(a,b,c){if("/(?:)/"===""+t(b))b=Vn(a,c);else if(1>c)b=Zf((""+t(a)).split(b));else a:for(var d=c,e=Fd;;){if(1===d){b=Ed.b(e,a);break a}var f=nh(b,a);if(null!=f){var g=a.indexOf(f),f=a.substring(g+M(f)),d=d-1,e=Ed.b(e,a.substring(0,g));a=f}else{b=Ed.b(e,a);break a}}if(0===c&&1<M(b))a:for(c=b;;)if(""===(null==c?null:Zb(c)))c=null==c?null:$b(c);else break a;else c=b;return c};function Xn(a,b,c,d){this.Sb=a;this.w=b;this.j=c;this.v=d;this.o=2229667594;this.G=8192}h=Xn.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "gen":return this.Sb;default:return B.c(this.j,b,c)}};h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#clojure.test.check.generators.Generator{",", ","}",c,Me.b(new V(null,1,5,W,[new V(null,2,5,W,[Vi,this.Sb],null)],null),this.j))};
h.Ca=function(){return new lg(0,this,1,new V(null,1,5,W,[Vi],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 1+M(this.j)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,1,[Vi,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new Xn(this.Sb,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Vi,b):T.call(null,Vi,b))?new Xn(c,this.w,this.j,null):new Xn(this.Sb,this.w,Q.c(this.j,b,c),null)};h.Y=function(){return E(Me.b(new V(null,1,5,W,[new V(null,2,5,W,[Vi,this.Sb],null)],null),this.j))};h.O=function(a,b){return new Xn(this.Sb,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};function Yn(a){return a instanceof Xn}function Zn(a){return new Xn(a,null,null,null)}
function $n(a,b,c){a=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a;a=B.b(a,Vi);return a.b?a.b(b,c):a.call(null,b,c)}function ao(a){return Zn(function(){return a})}function bo(a,b){var c=null!=b&&(b.o&64||m===b.Ha)?Pe(gf,b):b,d=B.b(c,Vi);return Zn(function(b,c,d){return function(b,c){var e=d.b?d.b(b,c):d.call(null,b,c);return a.a?a.a(e):a.call(null,e)}}(b,c,d))}
function co(a,b){var c=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a,d=B.b(c,Vi);return Zn(function(a,c,d){return function(a,c){var e=Fn(a),f=O(e,0,null),e=O(e,1,null),f=d.b?d.b(f,c):d.call(null,f,c),f=b.a?b.a(f):b.call(null,f),f=null!=f&&(f.o&64||m===f.Ha)?Pe(gf,f):f,f=B.b(f,Vi);return f.b?f.b(e,c):f.call(null,e,c)}}(a,c,d))}var eo=function eo(b){return new Be(null,function(){var c=Fn(b),d=O(c,0,null),c=O(c,1,null);return wd(d,eo.a?eo.a(c):eo.call(null,c))},null,null)};
function fo(a){return Zn(function(b,c){return zf(function(a,b){return $n(a,b,c)},a,Gn(b,M(a)))})}function go(a,b){if(!r(Yn(b)))throw Error([t("Assert failed: "),t("Second arg to fmap must be a generator"),t("\n"),t("(generator? gen)")].join(""));return bo(function(b){return mn(a,b)},b)}function ho(a){return ao(jn(a,Fd))}function io(a){return function(b){return bo(ln,Zn(function(c,d){return mn(function(a){return $n(a,c,d)},mn(a,b))}))}}
function jo(a,b){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("First arg to bind must be a generator"),t("\n"),t("(generator? generator)")].join(""));return co(a,io(b))}function ko(a){var b=Tn.h?Tn.h():Tn.call(null),c=qf(lh(0,100));return mf.c(function(){return function(b,c){return $n(a,b,c).root}}(b,c),eo(b),c)}function lo(a){return ih(function(a){return!C.b(0,a)},tf(function(a){return ke(a,2)},a))}function mo(a){return mf.b(function(b){return a-b},lo(a))}
var no=function no(b){return jn(b,mf.b(no,mo(b)))};function oo(a,b,c){if(!(b<=c))throw Error("Assert failed: (\x3c\x3d lower upper)");a=En(a);return je(Math.floor(b+(a*(1+c)-a*b)))}function po(a){return Zn(function(b,c){var d=a.a?a.a(c):a.call(null,c);return $n(d,b,c)})}
function qo(a,b){if(!r(Yn(b)))throw Error([t("Assert failed: "),t("Second arg to resize must be a generator"),t("\n"),t("(generator? generator)")].join(""));var c=null!=b&&(b.o&64||m===b.Ha)?Pe(gf,b):b,d=B.b(c,Vi);return Zn(function(b,c,d){return function(b){return d.b?d.b(b,a):d.call(null,b,a)}}(b,c,d))}function ro(a,b){return po(function(c){return qo(a.a?a.a(c):a.call(null,c),b)})}
function so(a,b){return Zn(function(c){c=oo(c,a,b);return nn(function(){return function(c){return c>=a&&c<=b}}(c),no(c))})}function to(a){if(!Xe(Yn,a))throw Error([t("Assert failed: "),t("Arg to one-of must be a collection of generators"),t("\n"),t("(every? generator? generators)")].join(""));return jo(so(0,M(a)-1),function(b){return qd(a,b)})}
function uo(a){if(!Xe(function(a){var b=O(a,0,null);a=O(a,1,null);return(b="number"===typeof b)?Yn(a):b},a))throw Error([t("Assert failed: "),t("Arg to frequency must be a list of [num generator] pairs"),t("\n"),t("(every? (fn [[x g]] (and (number? x) (generator? g))) pairs)")].join(""));var b=Pe(fe,mf.b(I,a));return co(so(1,b),function(){return function(b){a:{var c=a;for(b=b.root;;){var c=E(c),e=I(c),c=J(c),f=e,e=O(f,0,null),f=O(f,1,null);if(b<=e)break a;b-=e}}return f}}(b))}
function vo(a){if(!E(a))throw Error([t("Assert failed: "),t("elements cannot be called with an empty collection"),t("\n"),t("(seq coll)")].join(""));a=Zf(a);return co(so(0,M(a)-1),function(a){return function(b){return ao(mn(a,b))}}(a))}function wo(a,b){return xo(a,b,10)}
function xo(a,b,c){if(!r(Yn(b)))throw Error([t("Assert failed: "),t("Second arg to such-that must be a generator"),t("\n"),t("(generator? gen)")].join(""));return Zn(function(d,e){var f;a:{f=c;for(var g=d,k=e;;){if(0===f)throw Yh([t("Couldn't satisfy such-that predicate after "),t(c),t(" tries.")].join(""),X);var g=Fn(g),l=O(g,0,null),g=O(g,1,null),l=$n(b,l,k),p;p=l.root;p=a.a?a.a(p):a.call(null,p);if(r(p)){f=nn(a,l);break a}k+=1;--f}}return f})}
function yo(){var a=zo;if(!r(Yn(a)))throw Error([t("Assert failed: "),t("Arg to not-empty must be a generator"),t("\n"),t("(generator? gen)")].join(""));return wo(Ue,a)}function Ao(a){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("Arg to no-shrink must be a generator"),t("\n"),t("(generator? gen)")].join(""));return co(a,function(a){return ao(jn(a.root,Fd))})}
function Bo(a){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("Arg to shrink-2 must be a generator"),t("\n"),t("(generator? gen)")].join(""));return co(a,Ze.b(ao,sn))}var Co=vo(new V(null,2,5,W,[!1,!0],null)),Do=function Do(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Do.f(0<c.length?new F(c.slice(0),0,null):null)};
Do.f=function(a){if(!Xe(Yn,a))throw Error([t("Assert failed: "),t("Args to tuple must be generators"),t("\n"),t("(every? generator? generators)")].join(""));return co(fo(a),function(a){return ao(pn($f,a))})};Do.B=0;Do.A=function(a){return Do.f(E(a))};var Eo=po(function(a){return so(-a,a)}),Fo=go(function(a){return Math.abs(je(a))},Eo),Go=go(function(a){return-1*a},Fo),Ho=go(hd,Fo),Io=go(he,Go);
function Jo(a){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("Arg to vector must be a generator"),t("\n"),t("(generator? generator)")].join(""));return co(po(function(a){return so(0,a)}),function(b){return co(fo(sf(b.root,a)),function(a){return ao(rn($f,a))})})}function Ko(a,b){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("First arg to vector must be a generator"),t("\n"),t("(generator? generator)")].join(""));return Pe(Do,sf(b,a))}
function Lo(a,b,c){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("First arg to vector must be a generator"),t("\n"),t("(generator? generator)")].join(""));return co(so(b,c),function(d){return co(fo(sf(d.root,a)),function(a){return co(ao(rn($f,a)),function(a){return ao(nn(function(a){return M(a)>=b&&M(a)<=c},a))})})})}
function Mo(a){if(!r(Yn(a)))throw Error([t("Assert failed: "),t("First arg to list must be a generator"),t("\n"),t("(generator? generator)")].join(""));return co(po(function(a){return so(0,a)}),function(b){return co(fo(sf(b.root,a)),function(a){return ao(rn(we,a))})})}
function No(a,b,c,d,e,f,g,k,l){if(!r(d))throw Error("Assert failed: gen");if(!r(Vi.a(d)))throw Error("Assert failed: (:gen gen)");var p=wc(Fd),u=wc(fh),v=e;e=f;for(var w=0;;){if(C.b(l,w)&&M(p)<k)throw Yh("Couldn't generate enough distinct elements!",new q(null,4,[Vi,d,ci,l,ym,g,dn,mf.b(gn,yc(p))],null));if(C.b(l,w)||C.b(M(p),g))return rn(function(){return function(){function b(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,
0)}return c.call(this,b)}function c(b){return yf.b(a,b)}b.B=0;b.A=function(a){a=E(a);return c(a)};b.f=c;return b}()}(p,u,v,e,w),function(){var a=v,b=yc(p);return c.b?c.b(a,b):c.call(null,a,b)}());f=Fn(v);var y=O(f,0,null);f=O(f,1,null);var y=$n(d,y,e),A=y.root,A=b.a?b.a(A):b.call(null,A);r(null!=Qb.b(u,A))?(e+=1,w+=1,v=f):(w=Ne.b(p,y),u=Ne.b(u,A),p=w,v=f,w=0)}}function Oo(a,b){var c=Ld(b);return c?c:Pe(Zd,mf.b(a,b))}
function Po(a,b){var c=null==b?null:Fb(b),d=Zf(b),e=M(b);return yf.b(c,I(ae(function(a,b,c,d){return function(a,b){var c=O(a,0,null),e=O(a,1,null),e=Fn(e),f=O(e,0,null),e=O(e,1,null),g=oo(f,b,d),f=W,k=new V(null,2,5,W,[b,g],null),g=O(k,0,null),k=O(k,1,null),c=Q.f(c,k,c.a?c.a(g):c.call(null,g),N([g,c.a?c.a(k):c.call(null,k)],0));return new V(null,2,5,f,[c,e],null)}}(c,d,e,e-1),new V(null,2,5,W,[d,a],null),lh(0,e))))}
function Qo(a,b,c,d,e,f){var g=null!=f&&(f.o&64||m===f.Ha)?Pe(gf,f):f,k=B.b(g,ym),l=B.b(g,Hm),p=B.b(g,Yl),u=B.c(g,ci,10);d=r(d)?Po:function(){return function(a,b){return b}}(f,g,k,l,p,u);var v=r(k)?k:r(l)?l:1;if(r(k)){var w=function(a,b,c,d,e){return function(a){return C.b(e,M(a))}}(d,v,f,g,k,l,p,u);if(null!=l||null!=p)throw Error("Assert failed: (and (nil? min-elements) (nil? max-elements))");return Zn(function(d,f,g,k,l,p,u,v,w){return function(y,A){return nn(r(c)?lf(d,function(){return function(a){return Oo(b,
a)}}(d,f,g,k,l,p,u,v,w)):d,No(a,b,f,e,y,A,p,g,w))}}(w,d,v,f,g,k,l,p,u))}var y=r(l)?l:0,w=r(p)?function(a,b,c,d,e,f,g,k){return function(b){return a<=M(b)&&M(b)<=k}}(y,d,v,f,g,k,l,p,u):function(a){return function(b){return a<=M(b)}}(y,d,v,f,g,k,l,p,u);return co(r(p)?so(y,p):po(function(a){return function(b){return so(a,a+b)}}(y,w,d,v,f,g,k,l,p,u)),function(d,f,g,k,l,p,u,v,w,y){return function(A){return Zn(function(d,f,g,k,l,p,u,v,w,y,A){return function(G,D){return nn(r(c)?lf(g,function(){return function(a){return Oo(b,
a)}}(d,f,g,k,l,p,u,v,w,y,A)):g,No(a,b,k,e,G,D,d,l,A))}}(A.root,d,f,g,k,l,p,u,v,w,y))}}(y,w,d,v,f,g,k,l,p,u))}function Ro(a,b,c){return Qo(X,I,!1,!1,Do.f(N([a,b],0)),c)}var So=Zn(function(a){return jn(Dn(a),Fd)}),To=Pe(ge,sf(53,2))-1,Uo=-To;
function Vo(a,b,c,d){for(var e=function(){var d=b.vb(64-a).kb();return 0===c?Math.abs(d):d}();;){if(c<=e&&e<=d)return e;var f=-e;if(c<=f&&f<=d)return f;e=function(){var a=e;var b=e;if(!Xd(b))throw Error([t("Argument must be an integer: "),t(b)].join(""));return 0===(b&1)?a:(0>e?hd:he).call(null,a)}()/2}}
function Wo(a,b){return po(function(c){c=1<c?c:1;var d=54>c?c:54;return bo(function(){return function(c){var d=c.root;c=O(d,0,null);d=O(d,1,null);return no(Vo(c,d,a,b))}}(c,d),Do.f(N([so(1,d),So],0)))})}
var Xo=function(a){var b=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a,c=B.b(b,li),d=B.b(b,hl),e=r(c)?c:Uo,f=r(d)?d:To;if(!(e<=f))throw Error("Assert failed: (\x3c\x3d min max)");return wo(function(a,b){return function(c){return a<=c&&c<=b}}(e,f,a,b,c,d),0>=e&&0<=f?Wo(e,f):0>f?go(function(a,b){return function(a){return b+a}}(e,f,a,b,c,d),Wo(e-f,0)):go(function(a){return function(b){return a+b}}(e,f,a,b,c,d),Wo(0,f-e)))}(X),Yo=Number.POSITIVE_INFINITY,Zo=Number.NEGATIVE_INFINITY,$o=Number.MAX_VALUE,ap=-$o,
bp=Number.NaN,cp=function cp(b){return 32>=b?so(0,function(){switch(je(b)){case 32:return 4294967295;case 31:return 2147483647;default:return(1<<b)-1}}()):go(function(b){var c=O(b,0,null);b=O(b,1,null);return 4294967296*c+b},Do.f(N([function(){var c=b-32;return cp.a?cp.a(c):cp.call(null,c)}(),cp.a?cp.a(32):cp.call(null,32)],0)))},dp=go(function(a){for(var b=0,c=Math.pow(2,52);;){if(1>a)return b*c;var d=a/2,c=c/2,b=2*b+(a&1);a=d}},po(function(a){return co(so(0,52>a?a:52),function(a){return cp(a.root)})}));
function ep(a){if(0===a)return-1023;var b=Math.abs(a);a=Math.floor(Math.log(b)*Math.LOG2E);b*=Math.pow(2,-a);return 1>b?a-1:2<=b?a+1:a}
function fp(a,b){function c(a,b){return po(function(c){var d=1<<ke(200<c?200:c,8);return 0>=a&&0<=b?so(function(){var b=-d;return a>b?a:b}(),b<d?b:d):0>b?so(function(){var c=b-d;return a>c?a:c}(),b):so(a,function(){var c=a+d;return b<c?b:c}())})}if(null==a&&null==b)return Do.f(N([c(-1023,1023),vo(new V(null,2,5,W,[1,-1],null))],0));var d=r(a)?a:ap,e=r(b)?b:$o,f=function(){var a=ep(d);return-1023>a?-1023:a}(),g=function(){var a=ep(e);return-1023>a?-1023:a}();return 0<=d?Do.f(N([c(f,g),ho(1)],0)):0>=
e?Do.f(N([c(g,f),ho(-1)],0)):go(function(a,b,c,d){return function(a){var b=O(a,0,null),e=O(a,1,null);return 0>e&&c<b||0<e&&d<b?new V(null,2,5,W,[b,-e],null):a}}(d,e,f,g),Do.f(N([c(-1023,g>f?g:f),vo(new V(null,2,5,W,[1,-1],null))],0)))}
var gp=function gp(b,c){if(0>c){var d,e=-c;d=gp.b?gp.b(b,e):gp.call(null,b,e);e=O(d,0,null);d=O(d,1,null);return new V(null,2,5,W,[-d,-e],null)}return C.b(-1023,b)?new V(null,2,5,W,[0,(1*Math.pow(2,52)-1)*Math.pow(2,-1074)],null):new V(null,2,5,W,[1*Math.pow(2,b),(1*Math.pow(2,52)-1)*Math.pow(2,b-51)],null)};
function hp(a,b){if(!(null==a||null==b||a<=b))throw Error("Assert failed: (or (nil? lower-bound) (nil? upper-bound) (\x3c\x3d lower-bound upper-bound))");var c=r(a)?r(b)?function(c){return a<=c&&c<=b}:function(b){return a<=b}:r(b)?function(a){return a<=b}:null,d=go(function(c){return function(d){var e=O(d,0,null),f=O(e,0,null),e=O(e,1,null);d=O(d,1,null)/Math.pow(2,52)+1;var l=d*Math.pow(2,f)*e,p;p=(p=null==c)?p:c.a?c.a(l):c.call(null,l);if(r(p))return l;e=gp(f,e);f=O(e,0,null);e=O(e,1,null);f=r(a)?
f>a?f:a:f;e=r(b)?e<b?e:b:e;d=f+(e-f)*(d-1);d=d<e?d:e;return d>f?d:f}}(c),Do.f(N([fp(a,b),dp],0)));return r(c)?wo(c,d):d}
function ip(a){var b=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a,c=B.c(b,Ak,!0);a=B.c(b,Im,!0);var d=B.b(b,li),b=B.b(b,hl),e=new V(null,1,5,W,[new V(null,2,5,W,[95,hp(d,b)],null)],null),e=(null==d?null==b||0<=b:null==b?0>=d:0>=d&&0<=b)?Ed.f(e,new V(null,2,5,W,[1,ho(0)],null),N([new V(null,2,5,W,[1,ho(-0)],null)],0)):e,b=r(r(c)?null==b:c)?Ed.b(e,new V(null,2,5,W,[1,ho(Yo)],null)):e,c=r(r(c)?null==d:c)?Ed.b(b,new V(null,2,5,W,[1,ho(Zo)],null)):b;a=r(a)?Ed.b(c,new V(null,2,5,W,[1,ho(bp)],null)):c;return C.b(1,
M(a))?Cd(I(a)):uo(a)}var jp=ip(X),kp=go(ie,so(0,255)),lp=go(ie,so(32,126)),mp=go(ie,to(new V(null,3,5,W,[so(48,57),so(65,90),so(97,122)],null))),np=go(ie,to(new V(null,2,5,W,[so(65,90),so(97,122)],null))),op=vo(new V(null,6,5,W,"*+!-_?".split(""),null)),pp=uo(new V(null,2,5,W,[new V(null,2,5,W,[2,mp],null),new V(null,2,5,W,[1,op],null)],null)),qp=uo(new V(null,2,5,W,[new V(null,2,5,W,[2,np],null),new V(null,2,5,W,[1,op],null)],null)),rp=go(Un,Jo(kp)),sp=go(Un,Jo(lp)),zo=go(Un,Jo(mp));
function tp(a,b){var c;c=r(b)?(c="+"===a||"-"===a)?!/[^0-9]/.test(b):c:b;return Wd(c)}
var up=go(function(a){var b=O(a,0,null);a=O(a,1,null);return Un.a(wd(b,a))},wo(function(a){var b=O(a,0,null);a=O(a,1,null);a=O(a,0,null);return tb(tp(b,a))},Do.f(N([qp,Jo(pp)],0)))),vp=go(function(a){return E(a)?Un.b(".",a):null},Jo(up)),wp=go(function(a){var b=O(a,0,null);a=O(a,1,null);return Un.a(wd(b,a))},Do.f(N([pp,Jo(pp)],0))),xp=go(function(a){var b=O(a,0,null);a=O(a,1,null);return Un.a(wd(b,a))},Do.f(N([qp,Jo(pp)],0))),yp=go(function(a){var b=O(a,0,null);a=O(a,1,null);return ze.a(Un.b(":",
wd(b,a)))},Do.f(N([xp,Jo(wp)],0))),zp=go(function(a){var b=O(a,0,null),c=O(a,1,null);a=O(a,2,null);return ze.b(b,Un.a(wd(c,a)))},Do.f(N([vp,qp,Jo(pp)],0))),Ap=uo(new V(null,3,5,W,[new V(null,2,5,W,[10,np],null),new V(null,2,5,W,[5,op],null),new V(null,2,5,W,[1,ho(".")],null)],null)),Bp=uo(new V(null,3,5,W,[new V(null,2,5,W,[10,mp],null),new V(null,2,5,W,[5,op],null),new V(null,2,5,W,[1,ho(".")],null)],null)),Cp=uo(new V(null,2,5,W,[new V(null,2,5,W,[100,go(function(a){var b=O(a,0,null);a=O(a,1,null);
return Wc.a(Un.a(wd(b,a)))},wo(function(a){var b=O(a,0,null);a=O(a,1,null);a=O(a,0,null);return tb(tp(b,a))},Do.f(N([Ap,Jo(Bp)],0))))],null),new V(null,2,5,W,[1,ho(vl)],null)],null)),Dp=uo(new V(null,2,5,W,[new V(null,2,5,W,[100,go(function(a){var b=O(a,0,null),c=O(a,1,null);a=O(a,2,null);return Wc.b(b,Un.a(wd(c,a)))},wo(function(a){O(a,0,null);var b=O(a,1,null);a=O(a,2,null);a=O(a,0,null);return tb(tp(b,a))},Do.f(N([vp,Ap,Jo(Bp)],0))))],null),new V(null,2,5,W,[1,ho(vl)],null)],null)),Ep=go(function(a){var b=
O(a,0,null);a=O(a,1,null);return b/a},Do.f(N([Eo,wo(function(a){return function(){function b(b,c){return tb(a.b?a.b(b,c):a.call(null,b,c))}function c(b){return tb(a.a?a.a(b):a.call(null,b))}function d(){return tb(a.h?a.h():a.call(null))}var e=null,f=function(){function b(a,b,d){var e=null;if(2<arguments.length){for(var e=0,f=Array(arguments.length-2);e<f.length;)f[e]=arguments[e+2],++e;e=new F(f,0)}return c.call(this,a,b,e)}function c(b,c,d){return tb(Re(a,b,c,d))}b.B=2;b.A=function(a){var b=I(a);
a=J(a);var d=I(a);a=Zc(a);return c(b,d,a)};b.f=c;return b}(),e=function(a,e,l){switch(arguments.length){case 0:return d.call(this);case 1:return c.call(this,a);case 2:return b.call(this,a,e);default:var g=null;if(2<arguments.length){for(var g=0,k=Array(arguments.length-2);g<k.length;)k[g]=arguments[g+2],++g;g=new F(k,0)}return f.f(a,e,g)}throw Error("Invalid arity: "+arguments.length);};e.B=2;e.A=f.A;e.h=d;e.a=c;e.b=b;e.f=f.f;return e}()}(function(a){return 0===a}),Eo)],0))),Fp=Ao(go(function(a){function b(b){return(a.a?
a.a(b):a.call(null,b)).toString(16)}var c=(((a.a?a.a(15):a.call(null,15))&3)+8).toString(16);return new Wh([t(b(0)),t(b(1)),t(b(2)),t(b(3)),t(b(4)),t(b(5)),t(b(6)),t(b(7)),t("-"),t(b(8)),t(b(9)),t(b(10)),t(b(11)),t("-"),t("4"),t(b(12)),t(b(13)),t(b(14)),t("-"),t(c),t(b(16)),t(b(17)),t(b(18)),t("-"),t(b(19)),t(b(20)),t(b(21)),t(b(22)),t(b(23)),t(b(24)),t(b(25)),t(b(26)),t(b(27)),t(b(28)),t(b(29)),t(b(30))].join(""),null)},Ko(so(0,15),31))),Gp=to(new V(null,12,5,W,[Eo,Xo,jp,kp,rp,Ep,Co,yp,zp,Cp,Dp,
Fp],null)),Hp=to(new V(null,12,5,W,[Eo,Xo,jp,lp,sp,Ep,Co,yp,zp,Cp,Dp,Fp],null));function Ip(a){return to(new V(null,3,5,W,[Jo(a),Mo(a),Ro(a,a,X)],null))}var Jp=function Jp(b,c,d,e,f){0===f?e=qo(d,c):(--f,c=Jp.L?Jp.L(b,c,d,e,f):Jp.call(null,b,c,d,e,f),b=b.a?b.a(c):b.call(null,c),e=qo(e,b));return e};
function Kp(a,b){if(!r(Yn(b)))throw Error([t("Assert failed: "),t("Second arg to recursive-gen must be a generator"),t("\n"),t("(generator? scalar-gen)")].join(""));return po(function(c){return jo(so(1,5),function(d){return Jp(a,b,c,Math.pow(c,1/d),d)})})}Kp(Ip,Gp);Kp(Ip,Hp);var Lp,Mp,Np,Op,Pp,Qp,Rp=function Rp(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Rp.f(0<c.length?new F(c.slice(0),0,null):null)};Rp.f=function(a){return x(n,Pe(Bh,a))};Rp.B=0;Rp.A=function(a){return Rp.f(E(a))};var Sp=function Sp(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Sp.f(0<c.length?new F(c.slice(0),0,null):null)};Sp.f=function(a){return x(n,Pe(Ah,a))};Sp.B=0;Sp.A=function(a){return Sp.f(E(a))};
function Tp(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;Pe(Sp,0<b.length?new F(b.slice(0),0,null):null);x(n,"\n")}function Up(a){if("number"===typeof a)return a;if("string"===typeof a&&1===a.length)return a.charCodeAt(0);throw Error("Argument to char must be a character or number");}
function Vp(a,b,c){var d=c;for(c=Fd;;){if(Ld(d))return new V(null,2,5,W,[c,b],null);var e=I(d),d=J(d),e=Pe(a,new V(null,2,5,W,[e,b],null));b=O(e,0,null);e=O(e,1,null);c=Ed.b(c,b);b=e}}function Wp(a,b){for(var c=b,d=Fd;;){var e=Pe(a,new V(null,1,5,W,[c],null)),c=O(e,0,null),e=O(e,1,null);if(tb(c))return new V(null,2,5,W,[d,e],null);d=Ed.b(d,c);c=e}}
function Xp(a){return new V(null,2,5,W,[yf.b(X,function(){return function c(a){return new Be(null,function(){for(;;){var d=E(a);if(d){if(Sd(d)){var f=Cc(d),g=M(f),k=Fe(g);a:for(var l=0;;)if(l<g){var p=Jb.b(f,l),u=O(p,0,null),p=O(p,1,null),v=O(p,0,null);O(p,1,null);Ie(k,new V(null,2,5,W,[u,v],null));l+=1}else{f=!0;break a}return f?He(k.ia(),c(Dc(d))):He(k.ia(),null)}f=I(d);k=O(f,0,null);f=O(f,1,null);g=O(f,0,null);O(f,1,null);return wd(new V(null,2,5,W,[k,g],null),c(Zc(d)))}return null}},null,null)}(a)}()),
yf.b(X,function(){return function c(a){return new Be(null,function(){for(;;){var d=E(a);if(d){if(Sd(d)){var f=Cc(d),g=M(f),k=Fe(g);a:for(var l=0;;)if(l<g){var p=Jb.b(f,l),u=O(p,0,null),p=O(p,1,null);O(p,0,null);p=O(p,1,null);Ie(k,new V(null,2,5,W,[u,p],null));l+=1}else{f=!0;break a}return f?He(k.ia(),c(Dc(d))):He(k.ia(),null)}f=I(d);k=O(f,0,null);f=O(f,1,null);O(f,0,null);f=O(f,1,null);return wd(new V(null,2,5,W,[k,f],null),c(Zc(d)))}return null}},null,null)}(a)}())],null)}
function Yp(a,b){return yf.b(X,function(){return function d(a){return new Be(null,function(){for(;;){var e=E(a);if(e){if(Sd(e)){var g=Cc(e),k=M(g),l=Fe(k);a:for(var p=0;;)if(p<k){var u=Jb.b(g,p),v=O(u,0,null),u=O(u,1,null);Ie(l,new V(null,2,5,W,[v,new V(null,2,5,W,[u,b],null)],null));p+=1}else{g=!0;break a}return g?He(l.ia(),d(Dc(e))):He(l.ia(),null)}g=I(e);l=O(g,0,null);g=O(g,1,null);return wd(new V(null,2,5,W,[l,new V(null,2,5,W,[g,b],null)],null),d(Zc(e)))}return null}},null,null)}(a)}())}
var Zp=function Zp(b){if(null!=b&&null!=b.Pc)return b.Pc(b);var c=Zp[ba(null==b?null:b)];if(null!=c)return c.a?c.a(b):c.call(null,b);c=Zp._;if(null!=c)return c.a?c.a(b):c.call(null,b);throw xb("IPrettyFlush.-ppflush",b);};function $p(a,b){var c;c=L.a?L.a(a):L.call(null,a);c=L.a?L.a(c):L.call(null,c);return b.a?b.a(c):b.call(null,c)}function aq(a,b,c){kf.C(L.a?L.a(a):L.call(null,a),Q,b,c)}function bq(a,b){C.b(b,"\n")?(aq(a,dj,0),aq(a,Xk,$p(a,Xk)+1)):aq(a,dj,$p(a,dj)+1);return x($p(a,om),b)}
function cq(a,b){var c=function(){var c=new q(null,4,[hl,b,dj,0,Xk,0,om,a],null);return Y?Y(c):ef.call(null,c)}();"undefined"===typeof Lp&&(Lp=function(a,b,c,g){this.da=a;this.Dc=b;this.Jb=c;this.sd=g;this.o=1074167808;this.G=0},Lp.prototype.O=function(){return function(a,b){return new Lp(this.da,this.Dc,this.Jb,b)}}(c),Lp.prototype.N=function(){return function(){return this.sd}}(c),Lp.prototype.Xb=function(){return function(){return this.Jb}}(c),Lp.prototype.mb=function(){return function(){return sc(this.da)}}(c),
Lp.prototype.yb=function(a){return function(b,c){var d=wb(c);if(r(C.b?C.b(String,d):C.call(null,String,d))){var e=c.lastIndexOf("\n");0>e?aq(this,dj,$p(this,dj)+M(c)):(aq(this,dj,M(c)-e-1),aq(this,Xk,$p(this,Xk)+M(xf(function(){return function(a){return C.b(a,"\n")}}(c,e,C,d,this,a),c))));return x($p(this,om),c)}if(r(C.b?C.b(Number,d):C.call(null,Number,d)))return bq(this,c);throw Error([t("No matching clause: "),t(d)].join(""));}}(c),Lp.Tb=function(){return function(){return new V(null,4,5,W,[Am,
Ii,Fk,wj],null)}}(c),Lp.zb=!0,Lp.nb="cljs.pprint/t_cljs$pprint13011",Lp.Hb=function(){return function(a,b){return x(b,"cljs.pprint/t_cljs$pprint13011")}}(c));return new Lp(a,b,c,X)}function dq(a,b,c,d,e,f,g,k,l,p,u,v,w){this.parent=a;this.Wa=b;this.Xa=c;this.Sa=d;this.Ra=e;this.Ta=f;this.prefix=g;this.Va=k;this.Ya=l;this.Ua=p;this.w=u;this.j=v;this.v=w;this.o=2229667594;this.G=8192}h=dq.prototype;h.W=function(a,b){return Qb.c(this,b,null)};
h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "suffix":return this.Ya;case "indent":return this.Sa;case "parent":return this.parent;case "section":return this.Wa;case "done-nl":return this.Ra;case "start-col":return this.Xa;case "prefix":return this.prefix;case "per-line-prefix":return this.Va;case "logical-block-callback":return this.Ua;case "intra-block-nl":return this.Ta;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.logical-block{",", ","}",c,Me.b(new V(null,10,5,W,[new V(null,2,5,W,[Oi,this.parent],null),new V(null,2,5,W,[yj,this.Wa],null),new V(null,2,5,W,[mk,this.Xa],null),new V(null,2,5,W,[ui,this.Sa],null),new V(null,2,5,W,[Yj,this.Ra],null),new V(null,2,5,W,[wm,this.Ta],null),new V(null,2,5,W,[uk,this.prefix],null),new V(null,2,5,W,[tl,this.Va],null),new V(null,2,5,W,[ji,this.Ya],null),new V(null,
2,5,W,[nm,this.Ua],null)],null),this.j))};h.Ca=function(){return new lg(0,this,10,new V(null,10,5,W,[Oi,yj,mk,ui,Yj,wm,uk,tl,ji,nm],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 10+M(this.j)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};
h.bb=function(a,b){return Yd(new dh(null,new q(null,10,[ji,null,ui,null,Oi,null,yj,null,Yj,null,mk,null,uk,null,tl,null,nm,null,wm,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Oi,b):T.call(null,Oi,b))?new dq(c,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(yj,b):T.call(null,yj,b))?new dq(this.parent,c,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(mk,b):T.call(null,mk,b))?new dq(this.parent,this.Wa,c,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(ui,b):T.call(null,ui,b))?new dq(this.parent,
this.Wa,this.Xa,c,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(Yj,b):T.call(null,Yj,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,c,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(wm,b):T.call(null,wm,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,c,this.prefix,this.Va,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(uk,b):T.call(null,uk,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,c,this.Va,this.Ya,this.Ua,this.w,
this.j,null):r(T.b?T.b(tl,b):T.call(null,tl,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,c,this.Ya,this.Ua,this.w,this.j,null):r(T.b?T.b(ji,b):T.call(null,ji,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,c,this.Ua,this.w,this.j,null):r(T.b?T.b(nm,b):T.call(null,nm,b))?new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,c,this.w,this.j,null):new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,
this.prefix,this.Va,this.Ya,this.Ua,this.w,Q.c(this.j,b,c),null)};h.Y=function(){return E(Me.b(new V(null,10,5,W,[new V(null,2,5,W,[Oi,this.parent],null),new V(null,2,5,W,[yj,this.Wa],null),new V(null,2,5,W,[mk,this.Xa],null),new V(null,2,5,W,[ui,this.Sa],null),new V(null,2,5,W,[Yj,this.Ra],null),new V(null,2,5,W,[wm,this.Ta],null),new V(null,2,5,W,[uk,this.prefix],null),new V(null,2,5,W,[tl,this.Va],null),new V(null,2,5,W,[ji,this.Ya],null),new V(null,2,5,W,[nm,this.Ua],null)],null),this.j))};
h.O=function(a,b){return new dq(this.parent,this.Wa,this.Xa,this.Sa,this.Ra,this.Ta,this.prefix,this.Va,this.Ya,this.Ua,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};function eq(a,b){for(var c=Oi.a(b);;){if(null==c)return!1;if(a===c)return!0;c=Oi.a(c)}}function fq(a){return(a=E(a))?Hj.a(Dd(a))-Um.a(I(a)):0}function gq(a,b,c,d,e,f,g,k){this.J=a;this.data=b;this.pb=c;this.I=d;this.H=e;this.w=f;this.j=g;this.v=k;this.o=2229667594;this.G=8192}h=gq.prototype;
h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "type-tag":return this.J;case "data":return this.data;case "trailing-white-space":return this.pb;case "start-pos":return this.I;case "end-pos":return this.H;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.buffer-blob{",", ","}",c,Me.b(new V(null,5,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[bn,this.data],null),new V(null,2,5,W,[il,this.pb],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.Ca=function(){return new lg(0,this,5,new V(null,5,5,W,[Lm,bn,il,Um,Hj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};
h.Z=function(){return 5+M(this.j)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,5,[Hj,null,il,null,Lm,null,Um,null,bn,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new gq(this.J,this.data,this.pb,this.I,this.H,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Lm,b):T.call(null,Lm,b))?new gq(c,this.data,this.pb,this.I,this.H,this.w,this.j,null):r(T.b?T.b(bn,b):T.call(null,bn,b))?new gq(this.J,c,this.pb,this.I,this.H,this.w,this.j,null):r(T.b?T.b(il,b):T.call(null,il,b))?new gq(this.J,this.data,c,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Um,b):T.call(null,Um,b))?new gq(this.J,this.data,this.pb,c,this.H,this.w,this.j,null):r(T.b?T.b(Hj,b):T.call(null,Hj,b))?new gq(this.J,this.data,this.pb,this.I,c,this.w,this.j,null):
new gq(this.J,this.data,this.pb,this.I,this.H,this.w,Q.c(this.j,b,c),null)};h.Y=function(){return E(Me.b(new V(null,5,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[bn,this.data],null),new V(null,2,5,W,[il,this.pb],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.O=function(a,b){return new gq(this.J,this.data,this.pb,this.I,this.H,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};
function hq(a,b,c,d){return new gq(Tk,a,b,c,d,null,null,null)}function iq(a,b,c,d,e,f,g,k){this.J=a;this.type=b;this.M=c;this.I=d;this.H=e;this.w=f;this.j=g;this.v=k;this.o=2229667594;this.G=8192}h=iq.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "type-tag":return this.J;case "type":return this.type;case "logical-block":return this.M;case "start-pos":return this.I;case "end-pos":return this.H;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.nl-t{",", ","}",c,Me.b(new V(null,5,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Uj,this.type],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.Ca=function(){return new lg(0,this,5,new V(null,5,5,W,[Lm,Uj,Dm,Um,Hj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};
h.Z=function(){return 5+M(this.j)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,5,[Hj,null,Uj,null,Dm,null,Lm,null,Um,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new iq(this.J,this.type,this.M,this.I,this.H,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Lm,b):T.call(null,Lm,b))?new iq(c,this.type,this.M,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Uj,b):T.call(null,Uj,b))?new iq(this.J,c,this.M,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Dm,b):T.call(null,Dm,b))?new iq(this.J,this.type,c,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Um,b):T.call(null,Um,b))?new iq(this.J,this.type,this.M,c,this.H,this.w,this.j,null):r(T.b?T.b(Hj,b):T.call(null,Hj,b))?new iq(this.J,this.type,this.M,this.I,c,this.w,this.j,null):new iq(this.J,
this.type,this.M,this.I,this.H,this.w,Q.c(this.j,b,c),null)};h.Y=function(){return E(Me.b(new V(null,5,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Uj,this.type],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.O=function(a,b){return new iq(this.J,this.type,this.M,this.I,this.H,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};
function jq(a,b,c,d){return new iq(Sm,a,b,c,d,null,null,null)}function kq(a,b,c,d,e,f,g){this.J=a;this.M=b;this.I=c;this.H=d;this.w=e;this.j=f;this.v=g;this.o=2229667594;this.G=8192}h=kq.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "type-tag":return this.J;case "logical-block":return this.M;case "start-pos":return this.I;case "end-pos":return this.H;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.start-block-t{",", ","}",c,Me.b(new V(null,4,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.Ca=function(){return new lg(0,this,4,new V(null,4,5,W,[Lm,Dm,Um,Hj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 4+M(this.j)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,4,[Hj,null,Dm,null,Lm,null,Um,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new kq(this.J,this.M,this.I,this.H,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Lm,b):T.call(null,Lm,b))?new kq(c,this.M,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Dm,b):T.call(null,Dm,b))?new kq(this.J,c,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Um,b):T.call(null,Um,b))?new kq(this.J,this.M,c,this.H,this.w,this.j,null):r(T.b?T.b(Hj,b):T.call(null,Hj,b))?new kq(this.J,this.M,this.I,c,this.w,this.j,null):new kq(this.J,this.M,this.I,this.H,this.w,Q.c(this.j,b,c),null)};
h.Y=function(){return E(Me.b(new V(null,4,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.O=function(a,b){return new kq(this.J,this.M,this.I,this.H,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};function lq(a,b,c,d,e,f,g){this.J=a;this.M=b;this.I=c;this.H=d;this.w=e;this.j=f;this.v=g;this.o=2229667594;this.G=8192}h=lq.prototype;
h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "type-tag":return this.J;case "logical-block":return this.M;case "start-pos":return this.I;case "end-pos":return this.H;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.end-block-t{",", ","}",c,Me.b(new V(null,4,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.Ca=function(){return new lg(0,this,4,new V(null,4,5,W,[Lm,Dm,Um,Hj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 4+M(this.j)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,4,[Hj,null,Dm,null,Lm,null,Um,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new lq(this.J,this.M,this.I,this.H,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Lm,b):T.call(null,Lm,b))?new lq(c,this.M,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Dm,b):T.call(null,Dm,b))?new lq(this.J,c,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Um,b):T.call(null,Um,b))?new lq(this.J,this.M,c,this.H,this.w,this.j,null):r(T.b?T.b(Hj,b):T.call(null,Hj,b))?new lq(this.J,this.M,this.I,c,this.w,this.j,null):new lq(this.J,this.M,this.I,this.H,this.w,Q.c(this.j,b,c),null)};
h.Y=function(){return E(Me.b(new V(null,4,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.O=function(a,b){return new lq(this.J,this.M,this.I,this.H,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};
function mq(a,b,c,d,e,f,g,k,l){this.J=a;this.M=b;this.jb=c;this.offset=d;this.I=e;this.H=f;this.w=g;this.j=k;this.v=l;this.o=2229667594;this.G=8192}h=mq.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "type-tag":return this.J;case "logical-block":return this.M;case "relative-to":return this.jb;case "offset":return this.offset;case "start-pos":return this.I;case "end-pos":return this.H;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.indent-t{",", ","}",c,Me.b(new V(null,6,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[dk,this.jb],null),new V(null,2,5,W,[aj,this.offset],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.Ca=function(){return new lg(0,this,6,new V(null,6,5,W,[Lm,Dm,dk,aj,Um,Hj],null),r(this.j)?Kc(this.j):Ve())};
h.N=function(){return this.w};h.Z=function(){return 6+M(this.j)};h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,6,[aj,null,Hj,null,dk,null,Dm,null,Lm,null,Um,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new mq(this.J,this.M,this.jb,this.offset,this.I,this.H,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(Lm,b):T.call(null,Lm,b))?new mq(c,this.M,this.jb,this.offset,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Dm,b):T.call(null,Dm,b))?new mq(this.J,c,this.jb,this.offset,this.I,this.H,this.w,this.j,null):r(T.b?T.b(dk,b):T.call(null,dk,b))?new mq(this.J,this.M,c,this.offset,this.I,this.H,this.w,this.j,null):r(T.b?T.b(aj,b):T.call(null,aj,b))?new mq(this.J,this.M,this.jb,c,this.I,this.H,this.w,this.j,null):r(T.b?T.b(Um,b):T.call(null,Um,b))?new mq(this.J,this.M,this.jb,
this.offset,c,this.H,this.w,this.j,null):r(T.b?T.b(Hj,b):T.call(null,Hj,b))?new mq(this.J,this.M,this.jb,this.offset,this.I,c,this.w,this.j,null):new mq(this.J,this.M,this.jb,this.offset,this.I,this.H,this.w,Q.c(this.j,b,c),null)};
h.Y=function(){return E(Me.b(new V(null,6,5,W,[new V(null,2,5,W,[Lm,this.J],null),new V(null,2,5,W,[Dm,this.M],null),new V(null,2,5,W,[dk,this.jb],null),new V(null,2,5,W,[aj,this.offset],null),new V(null,2,5,W,[Um,this.I],null),new V(null,2,5,W,[Hj,this.H],null)],null),this.j))};h.O=function(a,b){return new mq(this.J,this.M,this.jb,this.offset,this.I,this.H,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};
if("undefined"===typeof nq)var nq=function(){var a=Y?Y(X):ef.call(null,X),b=Y?Y(X):ef.call(null,X),c=Y?Y(X):ef.call(null,X),d=Y?Y(X):ef.call(null,X),e=B.c(X,sm,Jh());return new Vh(Wc.b("cljs.pprint","write-token"),function(){return function(a,b){return Lm.a(b)}}(a,b,c,d,e),gj,e,a,b,c,d)}();
nq.fa(0,Wm,function(a,b){var c=nm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(c)&&(c.a?c.a(Lj):c.call(null,Lj));var c=Dm.a(b),d=uk.a(c);r(d)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d);var d=$p(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),dj),e=mk.a(c);jf.b?jf.b(e,d):jf.call(null,e,d);c=ui.a(c);return jf.b?jf.b(c,d):jf.call(null,c,d)});
nq.fa(0,Zm,function(a,b){var c=nm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(c)&&(c.a?c.a(mm):c.call(null,mm));c=ji.a(Dm.a(b));return r(c)?x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),c):null});
nq.fa(0,Wl,function(a,b){var c=Dm.a(b),d=ui.a(c),e=aj.a(b)+function(){var d=dk.a(b);if(r(C.b?C.b(qi,d):C.call(null,qi,d)))return d=mk.a(c),L.a?L.a(d):L.call(null,d);if(r(C.b?C.b(ol,d):C.call(null,ol,d)))return $p(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),dj);throw Error([t("No matching clause: "),t(d)].join(""));}();return jf.b?jf.b(d,e):jf.call(null,d,e)});
nq.fa(0,Tk,function(a,b){return x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),bn.a(b))});
nq.fa(0,Sm,function(a,b){if(r(function(){var a=C.b(Uj.a(b),ai);return a?a:(a=!C.b(Uj.a(b),xj))?(a=Yj.a(Dm.a(b)),L.a?L.a(a):L.call(null,a)):a}()))oq.b?oq.b(a,b):oq.call(null,a,b);else{var c=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(c)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),c)}return kf.C(L.a?L.a(a):L.call(null,a),Q,il,null)});
function pq(a,b,c){b=E(b);for(var d=null,e=0,f=0;;)if(f<e){var g=d.ca(null,f);if(!C.b(Lm.a(g),Sm)){var k=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(k)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),k)}nq.b?nq.b(a,g):nq.call(null,a,g);kf.C(L.a?L.a(a):L.call(null,a),Q,il,il.a(g));g=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(r(c)?g:c)&&(x(om.a(function(){var b=L.a?L.a(a):L.call(null,
a);return L.a?L.a(b):L.call(null,b)}()),g),kf.C(L.a?L.a(a):L.call(null,a),Q,il,null));f+=1}else if(b=E(b))Sd(b)?(d=Cc(b),b=Dc(b),g=d,e=M(d),d=g):(g=I(b),C.b(Lm.a(g),Sm)||(d=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),r(d)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d)),nq.b?nq.b(a,g):nq.call(null,a,g),kf.C(L.a?L.a(a):L.call(null,a),Q,il,il.a(g)),g=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):
L.call(null,b)}()),r(r(c)?g:c)&&(x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),g),kf.C(L.a?L.a(a):L.call(null,a),Q,il,null)),b=J(b),d=null,e=0),f=0;else break}function qq(a,b){var c=$p(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),hl);return null==c||$p(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),dj)+fq(b)<c}
function rq(a,b,c){b=Yj.a(b);b=L.a?L.a(b):L.call(null,b);return r(b)?b:tb(qq(a,c))}function sq(a,b,c){var d=tq.a?tq.a(a):tq.call(null,a),e=$p(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),hl);return r(d)?r(e)?(d=function(){var a=mk.a(b);return L.a?L.a(a):L.call(null,a)}()>=e-d)?rq(a,b,c):d:e:d}
if("undefined"===typeof uq)var uq=function(){var a=Y?Y(X):ef.call(null,X),b=Y?Y(X):ef.call(null,X),c=Y?Y(X):ef.call(null,X),d=Y?Y(X):ef.call(null,X),e=B.c(X,sm,Jh());return new Vh(Wc.b("cljs.pprint","emit-nl?"),function(){return function(a){return Uj.a(a)}}(a,b,c,d,e),gj,e,a,b,c,d)}();uq.fa(0,$l,function(a,b,c){a=Dm.a(a);return rq(b,a,c)});uq.fa(0,Ti,function(a,b,c){a=Dm.a(a);return sq(b,a,c)});
uq.fa(0,xj,function(a,b,c,d){a=Dm.a(a);var e;e=wm.a(a);e=L.a?L.a(e):L.call(null,e);return r(e)?e:(d=tb(qq(b,d)))?d:sq(b,a,c)});uq.fa(0,ai,function(){return!0});function vq(a){var b=I(a),c=Dm.a(b),b=E(ih(function(a,b){return function(a){var c=C.b(Lm.a(a),Sm);a=r(c)?eq(Dm.a(a),b):c;return tb(a)}}(b,c),J(a)));return new V(null,2,5,W,[b,E(of(M(b)+1,a))],null)}
function wq(a){var b=I(a),c=Dm.a(b);return E(ih(function(a,b){return function(a){var c=Dm.a(a);a=C.b(Lm.a(a),Sm);c=r(a)?(a=C.b(c,b))?a:eq(c,b):a;return tb(c)}}(b,c),J(a)))}function xq(a){var b=wm.a(a);jf.b?jf.b(b,!0):jf.call(null,b,!0);b=Yj.a(a);jf.b?jf.b(b,!0):jf.call(null,b,!0);for(a=Oi.a(a);;)if(r(a))b=Yj.a(a),jf.b?jf.b(b,!0):jf.call(null,b,!0),b=wm.a(a),jf.b?jf.b(b,!0):jf.call(null,b,!0),a=Oi.a(a);else return null}
function oq(a,b){x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),"\n");kf.C(L.a?L.a(a):L.call(null,a),Q,il,null);var c=Dm.a(b),d=tl.a(c);r(d)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d);d=Pe(t,sf(function(){var a=ui.a(c);return L.a?L.a(a):L.call(null,a)}()-M(d)," "));x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d);return xq(c)}
function yq(a){var b=E(ih(function(a){return tb(C.b(Lm.a(a),Sm))},a));return new V(null,2,5,W,[b,E(of(M(b),a))],null)}var zq=function zq(b,c){var d=yq(c),e=O(d,0,null),f=O(d,1,null);r(e)&&pq(b,e,!1);if(r(f)){var d=vq(f),g=O(d,0,null),k=O(d,1,null),l=I(f),d=function(){var c=wq(f);return uq.C?uq.C(l,b,g,c):uq.call(null,l,b,g,c)}();r(d)?(oq(b,l),d=J(f)):d=f;return tb(qq(b,d))?function(){var c=zq.b?zq.b(b,g):zq.call(null,b,g);return C.b(c,g)?(pq(b,g,!1),k):yf.b(Fd,Me.b(c,k))}():d}return null};
function Aq(a){for(var b=Tm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());;)if(kf.C(L.a?L.a(a):L.call(null,a),Q,Tm,yf.b(Fd,b)),tb(qq(a,b))){var c=zq(a,b);if(b!==c)b=c;else return null}else return null}function Bq(a,b){kf.C(L.a?L.a(a):L.call(null,a),Q,Tm,Ed.b(Tm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),b));return tb(qq(a,Tm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}())))?Aq(a):null}
function Cq(a){Aq(a);var b=Tm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(b)&&(pq(a,b,!0),kf.C(L.a?L.a(a):L.call(null,a),Q,Tm,Fd))}function Dq(a){var b=il.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());return r(b)?(x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),b),kf.C(L.a?L.a(a):L.call(null,a),Q,il,null)):null}
function Eq(a,b){var c=Wn(b,"\n",-1);if(C.b(M(c),1))return b;var d=tl.a(I(di.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()))),e=I(c);if(C.b(Wk,Kj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()))){var f=Rj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),g=f+M(e);kf.C(L.a?L.a(a):L.call(null,a),Q,Rj,g);Bq(a,hq(e,null,f,g));Cq(a)}else Dq(a),x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?
L.a(b):L.call(null,b)}()),e);x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),"\n");for(var e=E(J(gh(c))),f=null,k=g=0;;)if(k<g){var l=f.ca(null,k);x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),l);x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),"\n");r(d)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d);k+=1}else if(e=E(e))f=e,Sd(f)?(e=Cc(f),
k=Dc(f),f=e,g=M(e),e=k):(e=I(f),x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),e),x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),"\n"),r(d)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d),e=J(f),f=null,g=0),k=0;else break;kf.C(L.a?L.a(a):L.call(null,a),Q,Wk,Sj);return Dd(c)}
function Fq(a,b){if(C.b(Kj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),Sj))return Dq(a),x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),b);if(C.b(b,"\n"))return Eq(a,"\n");var c=Rj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),d=c+1;kf.C(L.a?L.a(a):L.call(null,a),Q,Rj,d);return Bq(a,hq(ie(b),null,c,d))}
function Gq(a){var b=Hq,c=Iq,d=new dq(null,null,Y?Y(0):ef.call(null,0),Y?Y(0):ef.call(null,0),Y?Y(!1):ef.call(null,!1),Y?Y(!1):ef.call(null,!1),null,null,null,null,null,null,null),e=function(){var e=Hd([di,zi,Hi,Ni,Pi,Kj,Rj,il,om,vm,Tm],[d,c,d,!0,null,Sj,0,null,cq(a,b),1,Fd]);return Y?Y(e):ef.call(null,e)}();"undefined"===typeof Mp&&(Mp=function(a,b,c,d,e,u){this.da=a;this.Dc=b;this.yd=c;this.qd=d;this.Jb=e;this.td=u;this.o=1074167808;this.G=0},Mp.prototype.O=function(){return function(a,b){return new Mp(this.da,
this.Dc,this.yd,this.qd,this.Jb,b)}}(d,e),Mp.prototype.N=function(){return function(){return this.td}}(d,e),Mp.prototype.Xb=function(){return function(){return this.Jb}}(d,e),Mp.prototype.yb=function(){return function(a,b){var c=this,d=wb(b);if(r(C.b?C.b(String,d):C.call(null,String,d))){var e=Eq(c,b),d=e.replace(/\s+$/,""),f=pe(e,M(d)),g=Kj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}());if(C.b(g,Sj))return Dq(c),x(om.a(function(){var a=L.a?L.a(c):L.call(null,c);
return L.a?L.a(a):L.call(null,a)}()),d),kf.C(L.a?L.a(c):L.call(null,c),Q,il,f);g=Rj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}());e=g+M(e);kf.C(L.a?L.a(c):L.call(null,c),Q,Rj,e);return Bq(c,hq(d,f,g,e))}if(r(C.b?C.b(Number,d):C.call(null,Number,d)))return Fq(c,b);throw Error([t("No matching clause: "),t(d)].join(""));}}(d,e),Mp.prototype.mb=function(){return function(){var a=this;Zp(a);return sc(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):
L.call(null,b)}()))}}(d,e),Mp.prototype.Pc=function(){return function(){var a=this;return C.b(Kj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),Wk)?(pq(a,Tm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),!0),kf.C(L.a?L.a(a):L.call(null,a),Q,Tm,Fd)):Dq(a)}}(d,e),Mp.Tb=function(){return function(){return new V(null,6,5,W,[Am,Ii,Cj,lm,Fk,vi],null)}}(d,e),Mp.zb=!0,Mp.nb="cljs.pprint/t_cljs$pprint13392",Mp.Hb=function(){return function(a,
b){return x(b,"cljs.pprint/t_cljs$pprint13392")}}(d,e));return new Mp(a,b,c,d,e,X)}
function Jq(a,b){var c=n,d=new dq(di.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),null,Y?Y(0):ef.call(null,0),Y?Y(0):ef.call(null,0),Y?Y(!1):ef.call(null,!1),Y?Y(!1):ef.call(null,!1),a,null,b,null,null,null,null);kf.C(L.a?L.a(c):L.call(null,c),Q,di,d);if(C.b(Kj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),Sj)){Dq(c);var e=nm.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}());r(e)&&(e.a?e.a(Lj):
e.call(null,Lj));r(a)&&x(om.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),a);var e=$p(om.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),dj),f=mk.a(d);jf.b?jf.b(f,e):jf.call(null,f,e);d=ui.a(d);jf.b?jf.b(d,e):jf.call(null,d,e)}else e=Rj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),f=e+(r(a)?M(a):0),kf.C(L.a?L.a(c):L.call(null,c),Q,Rj,f),Bq(c,new kq(Wm,d,e,f,null,null,null))}
function Kq(){var a=n,b=di.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),c=ji.a(b);if(C.b(Kj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),Sj)){Dq(a);r(c)&&x(om.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()),c);var d=nm.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}());r(d)&&(d.a?d.a(mm):d.call(null,mm))}else d=Rj.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?
L.a(b):L.call(null,b)}()),c=d+(r(c)?M(c):0),kf.C(L.a?L.a(a):L.call(null,a),Q,Rj,c),Bq(a,new lq(Zm,b,d,c,null,null,null));kf.C(L.a?L.a(a):L.call(null,a),Q,di,Oi.a(b))}function Lq(a){var b=n;kf.C(L.a?L.a(b):L.call(null,b),Q,Kj,Wk);var c=Rj.a(function(){var a=L.a?L.a(b):L.call(null,b);return L.a?L.a(a):L.call(null,a)}());Bq(b,jq(a,di.a(function(){var a=L.a?L.a(b):L.call(null,b);return L.a?L.a(a):L.call(null,a)}()),c,c))}
function Mq(a,b){var c=n,d=di.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}());if(C.b(Kj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),Sj)){Dq(c);var e=ui.a(d),f=b+function(){if(r(C.b?C.b(qi,a):C.call(null,qi,a))){var b=mk.a(d);return L.a?L.a(b):L.call(null,b)}if(r(C.b?C.b(ol,a):C.call(null,ol,a)))return $p(om.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),dj);throw Error([t("No matching clause: "),
t(a)].join(""));}();jf.b?jf.b(e,f):jf.call(null,e,f)}else e=Rj.a(function(){var a=L.a?L.a(c):L.call(null,c);return L.a?L.a(a):L.call(null,a)}()),Bq(c,new mq(Wl,d,a,b,e,e,null,null,null))}function tq(a){return zi.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}())}var Nq=!0;if("undefined"===typeof Oq)var Oq=null;var Hq=72,Iq=40,Pq=null,Qq=null,Rq=null,Sq=null,Tq=10,Uq=0,Vq=null;
Hd([zi,Wi,Ij,Mj,ak,ok,yk,nb,Ek,Al,km,om],[new Xc(function(){return Iq},Aj,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],["1.2",Jk,el,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",21,1,!0,632,637,$c,"The column at which to enter miser style. Depending on the dispatch table,\nmiser style add newlines in more places to try to keep lines short allowing for further\nlevels of nesting.",r(Iq)?Iq.fb:null])),new Xc(function(){return Hq},Hk,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,
Om],["1.2",Jk,dm,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",22,1,!0,625,630,$c,"Pretty printing will try to avoid anything going beyond this column.\nSet it to nil to have pprint let the line be arbitrarily long. This will ignore all\nnon-mandatory newlines.",r(Hq)?Hq.fb:null])),new Xc(function(){return Qq},Zl,Hd([Ri,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],[!0,Jk,oi,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",15,1,!0,646,649,$c,"Mark circular structures (N.B. This is not yet used)",
r(Qq)?Qq.fb:null])),new Xc(function(){return Pq},Gm,Hd([Ri,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],[!0,Jk,Uk,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",14,1,!0,640,643,$c,"Maximum number of lines to print in a pretty print instance (N.B. This is not yet used)",r(Pq)?Pq.fb:null])),new Xc(function(){return Rq},Tj,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],["1.2",Jk,yi,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",28,1,!0,657,661,$c,"Don't print namespaces with symbols. This is particularly useful when\npretty printing the results of macro expansions",
r(Rq)?Rq.fb:null])),new Xc(function(){return Sq},pj,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],["1.2",Jk,zk,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",14,1,!0,665,670,$c,"Print a radix specifier in front of integers and rationals. If *print-base* is 2, 8,\nor 16, then the radix specifier used is #b, #o, or #x, respectively. Otherwise the\nradix specifier is in the form #XXr where XX is the decimal value of *print-base* ",r(Sq)?Sq.fb:null])),new Xc(function(){return ib},
ni,Hd([lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Fm,Om],[Bj,bj,"cljs/core.cljs",16,1,!0,121,132,$c,"*print-level* controls how many levels deep the printer will\n print nested objects. If it is bound to logical false, there is no\n limit. Otherwise, it must be bound to an integer indicating the maximum\n level to print. Each argument to print is at level 0; if an argument is a\n collection, its items are at level 1; and so on. If an object is a\n collection and is at a level greater than or equal to the value bound to\n *print-level*, the printer prints '#' to represent it. The root binding\n is nil indicating no limit.",
new V(null,1,5,W,["@type {null|number}"],null),r(ib)?ib.fb:null])),new Xc(function(){return gb},yl,Hd([lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],[Bj,rm,"cljs/core.cljs",19,1,!0,85,91,$c,"When set to logical false, strings and characters will be printed with\n non-alphanumeric characters converted to the appropriate escape sequences.\n\n Defaults to true",r(gb)?gb.fb:null])),new Xc(function(){return Oq},xi,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],["1.2",Jk,Gi,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",
25,1,!0,619,623,$c,"The pretty print dispatch function. Use with-pprint-dispatch or\nset-pprint-dispatch to modify.",r(Oq)?Oq.fb:null])),new Xc(function(){return hb},Ik,Hd([lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Fm,Om],[Bj,zj,"cljs/core.cljs",17,1,!0,109,119,$c,"*print-length* controls how many items of each collection the\n printer will print. If it is bound to logical false, there is no\n limit. Otherwise, it must be bound to an integer indicating the maximum\n number of items of each collection to print. If a collection contains\n more items, the printer will print items up to the limit followed by\n '...' to represent the remaining items. The root binding is nil\n indicating no limit.",
new V(null,1,5,W,["@type {null|number}"],null),r(hb)?hb.fb:null])),new Xc(function(){return Nq},wi,Hd([lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],[Jk,Fi,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",16,1,!0,615,617,$c,"Bind to true if you want write to use pretty printing",r(Nq)?Nq.fb:null])),new Xc(function(){return Tq},Xi,Hd([hj,lj,oj,Ej,Jj,vk,Vk,Xk,Fl,pm,Bm,Om],["1.2",Jk,an,"/Users/leebyron/src/testcheck-js/target/cljsbuild-compiler-0/cljs/pprint.cljs",13,1,!0,672,675,
$c,"The base to use for printing integers and rationals.",r(Tq)?Tq.fb:null]))]);function Wq(a){var b=null!=a?a.o&32768||m===a.Kc?!0:a.o?!1:vb(cc,a):vb(cc,a);return b?Ni.a(function(){var b=L.a?L.a(a):L.call(null,a);return L.a?L.a(b):L.call(null,b)}()):b}function Xq(a){var b;b=Vq;r(b)&&(b=hb,b=r(b)?Vq>=hb:b);tb(Nq)?Sp.a?Sp.a(a):Sp.call(null,a):r(b)?x(n,"..."):(r(Vq)&&(Vq+=1),Oq.a?Oq.a(a):Oq.call(null,a));return b}
var Yq=function Yq(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;return Yq.f(arguments[0],1<c.length?new F(c.slice(1),0,null):null)};
Yq.f=function(a,b){var c=ah(N([new q(null,1,[xk,!0],null),Pe(gf,b)],0)),d=Tq,e=Qq,f=hb,g=ib,k=Pq,l=Iq,p=Oq,u=Nq,v=Sq,w=gb,y=Hq,A=Rq;Tq=om.b(c,Tq);Qq=Ij.b(c,Qq);hb=Al.b(c,hb);ib=yk.b(c,ib);Pq=Mj.b(c,Pq);Iq=zi.b(c,Iq);Oq=Ek.b(c,Oq);Nq=km.b(c,Nq);Sq=ok.b(c,Sq);gb=nb.b(c,gb);Hq=Wi.b(c,Hq);Rq=ak.b(c,Rq);try{var D=new ya,H=Yd(c,xk)?xk.a(c):!0,K=!0===H||null==H?new Lc(D):H;if(r(Nq)){var R=tb(Wq(K)),c=n;n=R?Gq(K):K;try{Xq(a),Zp(n)}finally{n=c}}else{R=n;n=K;try{Sp.a?Sp.a(a):Sp.call(null,a)}finally{n=R}}!0===
H&&(db.a?db.a(""+t(D)):db.call(null,""+t(D)));return null==H?""+t(D):null}finally{Rq=A,Hq=y,gb=w,Sq=v,Nq=u,Oq=p,Iq=l,Pq=k,ib=g,hb=f,Qq=e,Tq=d}};Yq.B=1;Yq.A=function(a){var b=I(a);a=J(a);return Yq.f(b,a)};var Zq=function Zq(b){for(var c=[],d=arguments.length,e=0;;)if(e<d)c.push(arguments[e]),e+=1;else break;switch(c.length){case 1:return Zq.a(arguments[0]);case 2:return Zq.b(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(c.length)].join(""));}};
Zq.a=function(a){var b=new ya,c=n;n=new Lc(b);try{return Zq.b(a,n),db.a?db.a(""+t(b)):db.call(null,""+t(b))}finally{n=c}};Zq.b=function(a,b){var c=tb(Wq(b)),d=n;n=c?Gq(b):b;try{c=Nq;Nq=!0;try{Xq(a)}finally{Nq=c}C.b(0,$p(n,dj))||x(n,"\n");return Zp(n)}finally{n=d}};Zq.B=2;function $q(a,b){if(tb(b.a?b.a(a):b.call(null,a)))throw Error([t("Bad argument: "),t(a),t(". It must be one of "),t(b)].join(""));}function ar(){var a=ib;return r(a)?Uq>=ib:a}
function br(a){$q(a,new dh(null,new q(null,4,[ai,null,Ti,null,xj,null,$l,null],null),null));Lq(a)}function cr(a,b){$q(a,new dh(null,new q(null,2,[qi,null,ol,null],null),null));Mq(a,b)}function dr(a,b,c){b="string"===typeof b?er.a?er.a(b):er.call(null,b):b;c=fr.a?fr.a(c):fr.call(null,c);return gr?gr(a,b,c):hr.call(null,a,b,c)}var ir=null;function jr(a,b){var c=[t(a),t("\n"),t(ir),t("\n"),t(Pe(t,sf(b," "))),t("^"),t("\n")].join("");throw Error(c);}
function kr(a,b,c,d,e,f){this.Db=a;this.Ja=b;this.Cb=c;this.w=d;this.j=e;this.v=f;this.o=2229667594;this.G=8192}h=kr.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "seq":return this.Db;case "rest":return this.Ja;case "pos":return this.Cb;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.arg-navigator{",", ","}",c,Me.b(new V(null,3,5,W,[new V(null,2,5,W,[am,this.Db],null),new V(null,2,5,W,[Pm,this.Ja],null),new V(null,2,5,W,[Rj,this.Cb],null)],null),this.j))};h.Ca=function(){return new lg(0,this,3,new V(null,3,5,W,[am,Pm,Rj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 3+M(this.j)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,3,[Rj,null,am,null,Pm,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new kr(this.Db,this.Ja,this.Cb,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(am,b):T.call(null,am,b))?new kr(c,this.Ja,this.Cb,this.w,this.j,null):r(T.b?T.b(Pm,b):T.call(null,Pm,b))?new kr(this.Db,c,this.Cb,this.w,this.j,null):r(T.b?T.b(Rj,b):T.call(null,Rj,b))?new kr(this.Db,this.Ja,c,this.w,this.j,null):new kr(this.Db,this.Ja,this.Cb,this.w,Q.c(this.j,b,c),null)};h.Y=function(){return E(Me.b(new V(null,3,5,W,[new V(null,2,5,W,[am,this.Db],null),new V(null,2,5,W,[Pm,this.Ja],null),new V(null,2,5,W,[Rj,this.Cb],null)],null),this.j))};
h.O=function(a,b){return new kr(this.Db,this.Ja,this.Cb,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};function fr(a){a=E(a);return new kr(a,a,0,null,null,null)}function lr(a){var b=Pm.a(a);if(r(b))return new V(null,2,5,W,[I(b),new kr(am.a(a),J(b),Rj.a(a)+1,null,null,null)],null);throw Error("Not enough arguments for format definition");}
function mr(a){var b=lr(a);a=O(b,0,null);b=O(b,1,null);a="string"===typeof a?er.a?er.a(a):er.call(null,a):a;return new V(null,2,5,W,[a,b],null)}function nr(a,b){if(b>=Rj.a(a)){var c=Rj.a(a)-b;return or.b?or.b(a,c):or.call(null,a,c)}return new kr(am.a(a),of(b,am.a(a)),b,null,null,null)}function or(a,b){var c=Rj.a(a)+b;return 0>b?nr(a,c):new kr(am.a(a),of(b,Pm.a(a)),c,null,null,null)}
function pr(a,b,c,d,e,f,g){this.tb=a;this.sb=b;this.ub=c;this.offset=d;this.w=e;this.j=f;this.v=g;this.o=2229667594;this.G=8192}h=pr.prototype;h.W=function(a,b){return Qb.c(this,b,null)};h.T=function(a,b,c){switch(b instanceof S?b.La:null){case "func":return this.tb;case "def":return this.sb;case "params":return this.ub;case "offset":return this.offset;default:return B.c(this.j,b,c)}};
h.U=function(a,b,c){return oh(b,function(){return function(a){return oh(b,vh,""," ","",c,a)}}(this),"#cljs.pprint.compiled-directive{",", ","}",c,Me.b(new V(null,4,5,W,[new V(null,2,5,W,[jj,this.tb],null),new V(null,2,5,W,[Sl,this.sb],null),new V(null,2,5,W,[Nj,this.ub],null),new V(null,2,5,W,[aj,this.offset],null)],null),this.j))};h.Ca=function(){return new lg(0,this,4,new V(null,4,5,W,[jj,Sl,Nj,aj],null),r(this.j)?Kc(this.j):Ve())};h.N=function(){return this.w};h.Z=function(){return 4+M(this.j)};
h.S=function(){var a=this.v;return null!=a?a:this.v=a=qe(this)};h.F=function(a,b){var c;c=r(b)?(c=this.constructor===b.constructor)?kg(this,b):c:b;return r(c)?!0:!1};h.bb=function(a,b){return Yd(new dh(null,new q(null,4,[aj,null,jj,null,Nj,null,Sl,null],null),null),b)?Id.b(yd(yf.b(X,this),this.w),b):new pr(this.tb,this.sb,this.ub,this.offset,this.w,Ue(Id.b(this.j,b)),null)};
h.Za=function(a,b,c){return r(T.b?T.b(jj,b):T.call(null,jj,b))?new pr(c,this.sb,this.ub,this.offset,this.w,this.j,null):r(T.b?T.b(Sl,b):T.call(null,Sl,b))?new pr(this.tb,c,this.ub,this.offset,this.w,this.j,null):r(T.b?T.b(Nj,b):T.call(null,Nj,b))?new pr(this.tb,this.sb,c,this.offset,this.w,this.j,null):r(T.b?T.b(aj,b):T.call(null,aj,b))?new pr(this.tb,this.sb,this.ub,c,this.w,this.j,null):new pr(this.tb,this.sb,this.ub,this.offset,this.w,Q.c(this.j,b,c),null)};
h.Y=function(){return E(Me.b(new V(null,4,5,W,[new V(null,2,5,W,[jj,this.tb],null),new V(null,2,5,W,[Sl,this.sb],null),new V(null,2,5,W,[Nj,this.ub],null),new V(null,2,5,W,[aj,this.offset],null)],null),this.j))};h.O=function(a,b){return new pr(this.tb,this.sb,this.ub,this.offset,b,this.j,this.v)};h.X=function(a,b){return Rd(b)?Sb(this,Jb.b(b,0),Jb.b(b,1)):ae(Hb,this,b)};
function qr(a,b){var c=O(a,0,null),d=O(a,1,null),e=O(d,0,null),d=O(d,1,null),f=Yd(new dh(null,new q(null,2,[wk,null,pl,null],null),null),c)?new V(null,2,5,W,[e,b],null):C.b(e,Vj)?lr(b):C.b(e,tj)?new V(null,2,5,W,[M(Pm.a(b)),b],null):new V(null,2,5,W,[e,b],null),e=O(f,0,null),f=O(f,1,null);return new V(null,2,5,W,[new V(null,2,5,W,[c,new V(null,2,5,W,[e,d],null)],null),f],null)}function rr(a,b){var c=Vp(qr,b,a),d=O(c,0,null),c=O(c,1,null);return new V(null,2,5,W,[yf.b(X,d),c],null)}
var sr=new q(null,3,[2,"#b",8,"#o",16,"#x"],null);function tr(a){return Xd(a)?C.b(Tq,10)?[t(a),t(r(Sq)?".":null)].join(""):[t(r(Sq)?function(){var a=B.b(sr,Tq);return r(a)?a:[t("#"),t(Tq),t("r")].join("")}():null),t(ur.b?ur.b(Tq,a):ur.call(null,Tq,a))].join(""):null}
function vr(a,b,c){c=lr(c);var d=O(c,0,null);c=O(c,1,null);var e=tr(d);a=r(e)?e:a.a?a.a(d):a.call(null,d);d=a.length;e=d+ml.a(b);e=e>=jl.a(b)?e:e+(ke(jl.a(b)-e-1,Il.a(b))+1)*Il.a(b);d=Pe(t,sf(e-d,Pk.a(b)));r(pl.a(b))?Rp.f(N([[t(d),t(a)].join("")],0)):Rp.f(N([[t(a),t(d)].join("")],0));return c}function wr(a,b){return ve(I(Wp(function(b){return 0<b?new V(null,2,5,W,[le(b,a),ke(b,a)],null):new V(null,2,5,W,[null,null],null)},b)))}
function xr(a,b){return 0===b?"0":Pe(t,mf.b(function(){return function(a){return 10>a?ie(Up("0")+a):ie(Up("a")+(a-10))}}(b),wr(a,b)))}function ur(a,b){return xr(a,b)}function yr(a,b){return ve(I(Wp(function(b){return new V(null,2,5,W,[E(ve(nf(a,b))),E(of(a,b))],null)},ve(b))))}
function zr(a,b,c){var d=lr(c),e=O(d,0,null),f=O(d,1,null);if(r(Xd(e)?!0:"number"!==typeof e||isNaN(e)||Infinity===e||parseFloat(e)===parseInt(e,10)?!1:C.b(e,Math.floor(e)))){var g=0>e,k=g?-e:e,l=xr(a,k);a=r(wk.a(b))?function(){var a=mf.b(function(){return function(a){return Pe(t,a)}}(g,k,l,d,e,f),yr(Li.a(b),l)),c=sf(M(a),cn.a(b));return Pe(t,J(uf.b(c,a)))}():l;a=g?[t("-"),t(a)].join(""):r(pl.a(b))?[t("+"),t(a)].join(""):a;a=a.length<jl.a(b)?[t(Pe(t,sf(jl.a(b)-a.length,Pk.a(b)))),t(a)].join(""):a;
Rp.f(N([a],0))}else vr(Bh,new q(null,5,[jl,jl.a(b),Il,1,ml,0,Pk,Pk.a(b),pl,!0],null),fr(new V(null,1,5,W,[e],null)));return f}
var Ar=new V(null,20,5,W,"zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen".split(" "),null),Br=new V(null,20,5,W,"zeroth first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth thirteenth fourteenth fifteenth sixteenth seventeenth eighteenth nineteenth".split(" "),null),Cr=new V(null,10,5,W," twenty thirty forty fifty sixty seventy eighty ninety".split(" "),null),Dr=new V(null,10,5,W," twentieth thirtieth fortieth fiftieth sixtieth seventieth eightieth ninetieth".split(" "),
null),Er=new V(null,22,5,W," thousand million billion trillion quadrillion quintillion sextillion septillion octillion nonillion decillion undecillion duodecillion tredecillion quattuordecillion quindecillion sexdecillion septendecillion octodecillion novemdecillion vigintillion".split(" "),null);
function Fr(a){var b=ke(a,100),c=le(a,100);return[t(0<b?[t(qd(Ar,b)),t(" hundred")].join(""):null),t(0<b&&0<c?" ":null),t(0<c?20>c?qd(Ar,c):function(){var a=ke(c,10),b=le(c,10);return[t(0<a?qd(Cr,a):null),t(0<a&&0<b?"-":null),t(0<b?qd(Ar,b):null)].join("")}():null)].join("")}
function Gr(a,b){for(var c=M(a),d=Fd,c=c-1,e=I(a),f=J(a);;){if(null==f)return[t(Pe(t,vf(", ",d))),t(Ld(e)||Ld(d)?null:", "),t(e),t(!Ld(e)&&0<c+b?[t(" "),t(qd(Er,c+b))].join(""):null)].join("");d=Ld(e)?d:Ed.b(d,[t(e),t(" "),t(qd(Er,c+b))].join(""));--c;e=I(f);f=J(f)}}
function Hr(a){var b=ke(a,100),c=le(a,100);return[t(0<b?[t(qd(Ar,b)),t(" hundred")].join(""):null),t(0<b&&0<c?" ":null),t(0<c?20>c?qd(Br,c):function(){var a=ke(c,10),b=le(c,10);return 0<a&&!(0<b)?qd(Dr,a):[t(0<a?qd(Cr,a):null),t(0<a&&0<b?"-":null),t(0<b?qd(Br,b):null)].join("")}():0<b?"th":null)].join("")}
var Ir=new V(null,4,5,W,[new V(null,9,5,W,"I II III IIII V VI VII VIII VIIII".split(" "),null),new V(null,9,5,W,"X XX XXX XXXX L LX LXX LXXX LXXXX".split(" "),null),new V(null,9,5,W,"C CC CCC CCCC D DC DCC DCCC DCCCC".split(" "),null),new V(null,3,5,W,["M","MM","MMM"],null)],null),Jr=new V(null,4,5,W,[new V(null,9,5,W,"I II III IV V VI VII VIII IX".split(" "),null),new V(null,9,5,W,"X XX XXX XL L LX LXX LXXX XC".split(" "),null),new V(null,9,5,W,"C CC CCC CD D DC DCC DCCC CM".split(" "),null),new V(null,
3,5,W,["M","MM","MMM"],null)],null);function Kr(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null);if("number"===typeof d&&0<d&&4E3>d)for(var e=wr(10,d),d=Fd,f=M(e)-1;;)if(Ld(e)){Rp.f(N([Pe(t,d)],0));break}else var g=I(e),d=C.b(0,g)?d:Ed.b(d,qd(qd(a,f),g-1)),f=f-1,e=J(e);else zr(10,new q(null,5,[jl,0,Pk," ",cn,",",Li,3,wk,!0],null),fr(new V(null,1,5,W,[d],null)));return c}var Lr=new q(null,5,[8,"Backspace",9,"Tab",10,"Newline",13,"Return",32,"Space"],null);
function Mr(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=Up(d),d=e&127,e=e&128,f=B.b(Lr,d);0<e&&Rp.f(N(["Meta-"],0));Rp.f(N([r(f)?f:32>d?[t("Control-"),t(ie(d+64))].join(""):C.b(d,127)?"Control-?":ie(d)],0));return c}
function Nr(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=lk.a(a);if(r(C.b?C.b("o",e):C.call(null,"o",e)))dr(!0,"\\o~3, '0o",N([Up(d)],0));else if(r(C.b?C.b("u",e):C.call(null,"u",e)))dr(!0,"\\u~4, '0x",N([Up(d)],0));else if(r(C.b?C.b(null,e):C.call(null,null,e)))x(n,r(C.b?C.b("\b",d):C.call(null,"\b",d))?"\\backspace":r(C.b?C.b("\t",d):C.call(null,"\t",d))?"\\tab":r(C.b?C.b("\n",d):C.call(null,"\n",d))?"\\newline":r(C.b?C.b("\f",d):C.call(null,"\f",d))?"\\formfeed":r(C.b?C.b("\r",d):C.call(null,
"\r",d))?"\\return":r(C.b?C.b('"',d):C.call(null,'"',d))?'\\"':r(C.b?C.b("\\",d):C.call(null,"\\",d))?"\\\\":[t("\\"),t(d)].join(""));else throw Error([t("No matching clause: "),t(e)].join(""));return c}function Or(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null);Rp.f(N([d],0));return c}function Pr(a){a=I(a);return C.b(Km,a)||C.b(rk,a)}
function Qr(a,b,c){return Cd(Vp(function(a,b){if(r(Pr(b)))return new V(null,2,5,W,[null,b],null);var d=rr(Nj.a(a),b),e=O(d,0,null),d=O(d,1,null),k=Xp(e),e=O(k,0,null),k=O(k,1,null),e=Q.c(e,jm,c);return new V(null,2,5,W,[null,Pe(jj.a(a),new V(null,3,5,W,[e,d,k],null))],null)},b,a))}
function Rr(a){a=(""+t(a)).toLowerCase();var b=a.indexOf("e"),c=a.indexOf(".");a=0>b?0>c?new V(null,2,5,W,[a,""+t(M(a)-1)],null):new V(null,2,5,W,[[t(a.substring(0,c)),t(a.substring(c+1))].join(""),""+t(c-1)],null):0>c?new V(null,2,5,W,[a.substring(0,b),a.substring(b+1)],null):new V(null,2,5,W,[[t(a.substring(0,1)),t(a.substring(2,b))].join(""),a.substring(b+1)],null);b=O(a,0,null);a=O(a,1,null);a:if(c=M(b),0<c&&C.b(qd(b,M(b)-1),"0"))for(--c;;){if(0>c){b="";break a}if(C.b(qd(b,c),"0"))--c;else{b=
b.substring(0,c+1);break a}}a:{var c=b,d=M(c);if(0<d&&C.b(qd(c,0),"0"))for(var e=0;;){if(C.b(e,d)||!C.b(qd(c,e),"0")){c=c.substring(e);break a}e+=1}}b=M(b)-M(c);a=0<M(a)&&C.b(qd(a,0),"+")?a.substring(1):a;return Ld(c)?new V(null,2,5,W,["0",0],null):new V(null,2,5,W,[c,parseInt(a,10)-b],null)}
function Sr(a,b,c,d){if(r(r(c)?c:d)){var e=M(a);d=r(d)?2>d?2:d:0;r(c)?c=b+c+1:0<=b?(c=b+1,--d,c=c>d?c:d):c=d+b;var f=C.b(c,0)?new V(null,4,5,W,[[t("0"),t(a)].join(""),b+1,1,e+1],null):new V(null,4,5,W,[a,b,c,e],null);c=O(f,0,null);e=O(f,1,null);d=O(f,2,null);f=O(f,3,null);if(r(d)){if(0>d)return new V(null,3,5,W,["0",0,!1],null);if(f>d){b=qd(c,d);a=c.substring(0,d);if(Up(b)>=Up("5")){a:for(b=M(a)-1,c=b|0;;){if(0>c){b=Qe(t,"1",sf(b+1,"0"));break a}if(C.b("9",a.charAt(c)))--c;else{b=Re(t,a.substring(0,
c),ie(Up(a.charAt(c))+1),sf(b-c,"0"));break a}}a=M(b)>M(a);c=W;a&&(d=M(b)-1,b=b.substring(0,d));return new V(null,3,5,c,[b,e,a],null)}return new V(null,3,5,W,[a,e,!1],null)}}}return new V(null,3,5,W,[a,b,!1],null)}
function Tr(a,b,c){var d=0>b?new V(null,2,5,W,[[t(Pe(t,sf(-b-1,"0"))),t(a)].join(""),-1],null):new V(null,2,5,W,[a,b],null);a=O(d,0,null);var e=O(d,1,null),d=M(a);c=r(c)?e+c+1:e+1;c=d<c?[t(a),t(Pe(t,sf(c-d,"0")))].join(""):a;0>b?b=[t("."),t(c)].join(""):(b+=1,b=[t(c.substring(0,b)),t("."),t(c.substring(b))].join(""));return b}function Ur(a,b){return 0>b?[t("."),t(a)].join(""):[t(a.substring(0,b)),t("."),t(a.substring(b))].join("")}
function Vr(a,b){var c=rj.a(a),d=Nl.a(a),e=lr(b),f=O(e,0,null),e=O(e,1,null),g=0>f?new V(null,2,5,W,["-",-f],null):new V(null,2,5,W,["+",f],null),k=O(g,0,null),g=O(g,1,null),g=Rr(g),l=O(g,0,null),p=O(g,1,null)+tk.a(a),g=function(){var b=pl.a(a);return r(b)?b:0>f}(),u=tb(d)&&M(l)-1<=p,v=Sr(l,p,d,r(c)?c-(r(g)?1:0):null),l=O(v,0,null),p=O(v,1,null),v=O(v,2,null),l=Tr(l,r(v)?p+1:p,d),d=r(r(c)?r(d)?1<=d&&C.b(l.charAt(0),"0")&&C.b(l.charAt(1),".")&&M(l)>c-(r(g)?1:0):d:c)?l.substring(1):l,p=C.b(I(d),".");
if(r(c)){var l=M(d),l=r(g)?l+1:l,p=p&&!(l>=c),u=u&&!(l>=c),w=p||u?l+1:l;r(function(){var b=w>c;return b?Dl.a(a):b}())?Rp.f(N([Pe(t,sf(c,Dl.a(a)))],0)):Rp.f(N([[t(Pe(t,sf(c-w,Pk.a(a)))),t(r(g)?k:null),t(p?"0":null),t(d),t(u?"0":null)].join("")],0))}else Rp.f(N([[t(r(g)?k:null),t(p?"0":null),t(d),t(u?"0":null)].join("")],0));return e}
function Wr(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=Rr(0>d?-d:d);O(e,0,null);for(O(e,1,null);;){var f=O(e,0,null),g=O(e,1,null),k=rj.a(a),l=Nl.a(a),p=jk.a(a),u=tk.a(a),v=function(){var b=Xm.a(a);return r(b)?b:"E"}(),e=function(){var b=pl.a(a);return r(b)?b:0>d}(),w=0>=u,y=g-(u-1),A=""+t(Math.abs(y)),v=[t(v),t(0>y?"-":"+"),t(r(p)?Pe(t,sf(p-M(A),"0")):null),t(A)].join(""),D=M(v),y=M(f),f=[t(Pe(t,sf(-u,"0"))),t(f),t(r(l)?Pe(t,sf(l-(y-1)-(0>u?-u:0),"0")):null)].join(""),y=r(k)?k-D:null,f=Sr(f,
0,C.b(u,0)?l-1:0<u?l:0>u?l-1:null,r(y)?y-(r(e)?1:0):null),y=O(f,0,null);O(f,1,null);A=O(f,2,null);f=Ur(y,u);l=C.b(u,M(y))&&null==l;if(tb(A)){if(r(k)){var g=M(f)+D,g=r(e)?g+1:g,H=(w=w&&!C.b(g,k))?g+1:g,g=l&&H<k;r(function(){var b;b=H>k;b||(b=p,b=r(b)?D-2>p:b);return r(b)?Dl.a(a):b}())?Rp.f(N([Pe(t,sf(k,Dl.a(a)))],0)):Rp.f(N([[t(Pe(t,sf(k-H-(g?1:0),Pk.a(a)))),t(r(e)?0>d?"-":"+":null),t(w?"0":null),t(f),t(g?"0":null),t(v)].join("")],0))}else Rp.f(N([[t(r(e)?0>d?"-":"+":null),t(w?"0":null),t(f),t(l?"0":
null),t(v)].join("")],0));break}else e=new V(null,2,5,W,[y,g+1],null)}return c}function Xr(a,b){var c=lr(b),d=O(c,0,null);O(c,1,null);var c=Rr(0>d?-d:d),e=O(c,0,null),c=O(c,1,null),f=rj.a(a),g=Nl.a(a),k=jk.a(a),c=C.b(d,0)?0:c+1,d=r(k)?k+2:4,f=r(f)?f-d:null;r(g)?e=g:(e=M(e),g=7>c?c:7,e=e>g?e:g);c=e-c;return 0<=c&&c<=e?(c=Vr(new q(null,6,[rj,f,Nl,c,tk,0,Dl,Dl.a(a),Pk,Pk.a(a),pl,pl.a(a)],null),b),Rp.f(N([Pe(t,sf(d," "))],0)),c):Wr(a,b)}
function Yr(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=Rr(Math.abs(d)),f=O(e,0,null),g=O(e,1,null),k=Nl.a(a),l=qj.a(a),e=rj.a(a),p=function(){var b=pl.a(a);return r(b)?b:0>d}(),u=Sr(f,g,k,null),f=O(u,0,null),g=O(u,1,null),u=O(u,2,null),k=Tr(f,r(u)?g+1:g,k),l=[t(Pe(t,sf(l-k.indexOf("."),"0"))),t(k)].join(""),k=M(l)+(r(p)?1:0);Rp.f(N([[t(r(function(){var b=wk.a(a);return r(b)?p:b}())?0>d?"-":"+":null),t(Pe(t,sf(e-k,Pk.a(a)))),t(r(function(){var b=tb(wk.a(a));return b?p:b}())?0>d?"-":"+":null),t(l)].join("")],
0));return c}function Zr(a,b){var c=mi.a(a),d=r(c)?new V(null,2,5,W,[c,b],null):lr(b),c=O(d,0,null),d=O(d,1,null),e=Vl.a(a),c=0>c||c>=M(e)?I(Si.a(a)):qd(e,c);return r(c)?Qr(c,d,jm.a(a)):d}function $r(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=Vl.a(a),d=r(d)?Cd(e):I(e);return r(d)?Qr(d,c,jm.a(a)):c}function as(a,b){var c=lr(b),d=O(c,0,null),c=O(c,1,null),e=Vl.a(a),e=r(d)?I(e):null;return r(d)?r(e)?Qr(e,b,jm.a(a)):b:c}
function bs(a,b){for(var c=Qj.a(a),d=I(Vl.a(a)),e=Ld(d)?mr(b):new V(null,2,5,W,[d,b],null),d=O(e,0,null),e=O(e,1,null),e=lr(e),f=O(e,0,null),e=O(e,1,null),g=0,f=fr(f),k=-1;;){if(tb(c)&&C.b(Rj.a(f),k)&&1<g)throw Error("%{ construct not consuming any arguments: Infinite loop!");k=Ld(Pm.a(f))&&(tb(wk.a(bl.a(a)))||0<g);if(r(k?k:r(c)?g>=c:c))return e;k=Qr(d,f,jm.a(a));if(C.b(Km,I(k)))return e;var g=g+1,l=Rj.a(f),f=k,k=l}}
function cs(a,b){for(var c=Qj.a(a),d=I(Vl.a(a)),e=Ld(d)?mr(b):new V(null,2,5,W,[d,b],null),d=O(e,0,null),e=O(e,1,null),e=lr(e),f=O(e,0,null),e=O(e,1,null),g=0;;){var k=Ld(f)&&(tb(wk.a(bl.a(a)))||0<g);if(r(k?k:r(c)?g>=c:c))return e;k=Qr(d,fr(I(f)),fr(J(f)));if(C.b(rk,I(k)))return e;g+=1;f=J(f)}}
function ds(a,b){for(var c=Qj.a(a),d=I(Vl.a(a)),e=Ld(d)?mr(b):new V(null,2,5,W,[d,b],null),d=O(e,0,null),f=0,e=O(e,1,null),g=-1;;){if(tb(c)&&C.b(Rj.a(e),g)&&1<f)throw Error("%@{ construct not consuming any arguments: Infinite loop!");g=Ld(Pm.a(e))&&(tb(wk.a(bl.a(a)))||0<f);if(r(g?g:r(c)?f>=c:c))return e;g=Qr(d,e,jm.a(a));if(C.b(Km,I(g)))return Cd(g);var f=f+1,k=Rj.a(e),e=g,g=k}}
function es(a,b){for(var c=Qj.a(a),d=I(Vl.a(a)),e=Ld(d)?mr(b):new V(null,2,5,W,[d,b],null),d=O(e,0,null),f=0,e=O(e,1,null);;){var g=Ld(Pm.a(e))&&(tb(wk.a(bl.a(a)))||0<f);if(r(g?g:r(c)?f>=c:c))return e;g=Pm.a(e);g=r(g)?new V(null,2,5,W,[I(g),new kr(am.a(e),J(g),Rj.a(e)+1,null,null,null)],null):new V(null,2,5,W,[null,e],null);e=O(g,0,null);g=O(g,1,null);e=Qr(d,fr(e),g);if(C.b(rk,I(e)))return g;e=g;f+=1}}
function fs(a,b,c){return r(wk.a(bl.a(a)))?gs.c?gs.c(a,b,c):gs.call(null,a,b):hs.c?hs.c(a,b,c):hs.call(null,a,b)}function is(a,b,c){for(var d=Fd;;){if(Ld(a))return new V(null,2,5,W,[d,b],null);var e=I(a),f;a:{var g=new ya,k=n;n=new Lc(g);try{f=new V(null,2,5,W,[Qr(e,b,c),""+t(g)],null);break a}finally{n=k}f=void 0}b=O(f,0,null);e=O(f,1,null);if(C.b(Km,I(b)))return new V(null,2,5,W,[d,Cd(b)],null);a=J(a);d=Ed.b(d,e)}}
function hs(a,b){var c=function(){var c=Si.a(a);return r(c)?is(c,b,jm.a(a)):null}(),d=O(c,0,null),e=O(d,0,null),c=O(c,1,null),f=r(c)?c:b,c=function(){var b=pi.a(a);return r(b)?rr(b,f):null}(),g=O(c,0,null),c=O(c,1,null),c=r(c)?c:f,k=function(){var a=I(Nm.a(g));return r(a)?a:0}(),l=function(){var a=I(Vm.a(g));return r(a)?a:$p(n,hl)}(),d=Vl.a(a),c=is(d,c,jm.a(a)),p=O(c,0,null),c=O(c,1,null),u=function(){var b=M(p)-1+(r(wk.a(a))?1:0)+(r(pl.a(a))?1:0);return 1>b?1:b}(),d=ce(fe,mf.b(M,p)),v=jl.a(a),w=
ml.a(a),y=Il.a(a),A=d+u*w,D=A<=v?v:v+y*(1+ke(A-v-1,y)),H=D-d,d=function(){var a=ke(H,u);return w>a?w:a}(),v=H-d*u,d=Pe(t,sf(d,Pk.a(a)));r(function(){return r(e)?$p(om.a(function(){var a=L.a?L.a(n):L.call(null,n);return L.a?L.a(a):L.call(null,a)}()),dj)+k+D>l:e}())&&Rp.f(N([e],0));for(var y=v,K=p,R=function(){var b=wk.a(a);return r(b)?b:C.b(M(K),1)&&tb(pl.a(a))}();;)if(E(K))Rp.f(N([[t(tb(R)?I(K):null),t(r(function(){var b=R;return r(b)?b:(b=J(K))?b:pl.a(a)}())?d:null),t(0<y?Pk.a(a):null)].join("")],
0)),--y,K=v=r(R)?K:J(K),R=!1;else break;return c}
function js(a){"undefined"===typeof Np&&(Np=function(a,c){this.da=a;this.ud=c;this.o=1074135040;this.G=0},Np.prototype.O=function(a,c){return new Np(this.da,c)},Np.prototype.N=function(){return this.ud},Np.prototype.mb=function(){return sc(this.da)},Np.prototype.yb=function(a,c){var b=wb(c);if(r(C.b?C.b(String,b):C.call(null,String,b)))return x(this.da,c.toLowerCase());if(r(C.b?C.b(Number,b):C.call(null,Number,b)))return x(this.da,ie(c).toLowerCase());throw Error([t("No matching clause: "),t(b)].join(""));
},Np.Tb=function(){return new V(null,2,5,W,[Am,xl],null)},Np.zb=!0,Np.nb="cljs.pprint/t_cljs$pprint13968",Np.Hb=function(a,c){return x(c,"cljs.pprint/t_cljs$pprint13968")});return new Np(a,X)}
function ks(a){"undefined"===typeof Op&&(Op=function(a,c){this.da=a;this.vd=c;this.o=1074135040;this.G=0},Op.prototype.O=function(a,c){return new Op(this.da,c)},Op.prototype.N=function(){return this.vd},Op.prototype.mb=function(){return sc(this.da)},Op.prototype.yb=function(a,c){var b=wb(c);if(r(C.b?C.b(String,b):C.call(null,String,b)))return x(this.da,c.toUpperCase());if(r(C.b?C.b(Number,b):C.call(null,Number,b)))return x(this.da,ie(c).toUpperCase());throw Error([t("No matching clause: "),t(b)].join(""));
},Op.Tb=function(){return new V(null,2,5,W,[Am,Ci],null)},Op.zb=!0,Op.nb="cljs.pprint/t_cljs$pprint13980",Op.Hb=function(a,c){return x(c,"cljs.pprint/t_cljs$pprint13980")});return new Op(a,X)}
function ls(a,b){var c=I(a),d=r(r(b)?r(c)?ia(c):c:b)?[t(c.toUpperCase()),t(a.substring(1))].join(""):a;return Pe(t,I(Wp(function(){return function(a){if(Ld(a))return new V(null,2,5,W,[null,null],null);var b=RegExp("\\W\\w","g").exec(a),b=r(b)?b.index+1:b;return r(b)?new V(null,2,5,W,[[t(a.substring(0,b)),t(qd(a,b).toUpperCase())].join(""),a.substring(b+1)],null):new V(null,2,5,W,[a,null],null)}}(c,d),d)))}
function ms(a){var b=Y?Y(!0):ef.call(null,!0);"undefined"===typeof Pp&&(Pp=function(a,b,e){this.da=a;this.Mb=b;this.wd=e;this.o=1074135040;this.G=0},Pp.prototype.O=function(){return function(a,b){return new Pp(this.da,this.Mb,b)}}(b),Pp.prototype.N=function(){return function(){return this.wd}}(b),Pp.prototype.mb=function(){return function(){return sc(this.da)}}(b),Pp.prototype.yb=function(){return function(a,b){var c=wb(b);if(r(C.b?C.b(String,c):C.call(null,String,c))){x(this.da,ls(b.toLowerCase(),
L.a?L.a(this.Mb):L.call(null,this.Mb)));if(0<b.length){var c=this.Mb,d;d=qd(b,M(b)-1);d=ga(d);return jf.b?jf.b(c,d):jf.call(null,c,d)}return null}if(r(C.b?C.b(Number,c):C.call(null,Number,c)))return c=ie(b),d=r(L.a?L.a(this.Mb):L.call(null,this.Mb))?c.toUpperCase():c,x(this.da,d),d=this.Mb,c=ga(c),jf.b?jf.b(d,c):jf.call(null,d,c);throw Error([t("No matching clause: "),t(c)].join(""));}}(b),Pp.Tb=function(){return function(){return new V(null,3,5,W,[Am,ti,Kk],null)}}(b),Pp.zb=!0,Pp.nb="cljs.pprint/t_cljs$pprint13997",
Pp.Hb=function(){return function(a,b){return x(b,"cljs.pprint/t_cljs$pprint13997")}}(b));return new Pp(a,b,X)}
function ns(a){var b=Y?Y(!1):ef.call(null,!1);"undefined"===typeof Qp&&(Qp=function(a,b,e){this.da=a;this.qb=b;this.xd=e;this.o=1074135040;this.G=0},Qp.prototype.O=function(){return function(a,b){return new Qp(this.da,this.qb,b)}}(b),Qp.prototype.N=function(){return function(){return this.xd}}(b),Qp.prototype.mb=function(){return function(){return sc(this.da)}}(b),Qp.prototype.yb=function(){return function(a,b){var c=wb(b);if(r(C.b?C.b(String,c):C.call(null,String,c))){c=b.toLowerCase();if(tb(L.a?
L.a(this.qb):L.call(null,this.qb))){var d=RegExp("\\S","g").exec(c),d=r(d)?d.index:d;return r(d)?(x(this.da,[t(c.substring(0,d)),t(qd(c,d).toUpperCase()),t(c.substring(d+1).toLowerCase())].join("")),jf.b?jf.b(this.qb,!0):jf.call(null,this.qb,!0)):x(this.da,c)}return x(this.da,c.toLowerCase())}if(r(C.b?C.b(Number,c):C.call(null,Number,c)))return c=ie(b),d=tb(L.a?L.a(this.qb):L.call(null,this.qb)),r(d?ia(c):d)?(jf.b?jf.b(this.qb,!0):jf.call(null,this.qb,!0),x(this.da,c.toUpperCase())):x(this.da,c.toLowerCase());
throw Error([t("No matching clause: "),t(c)].join(""));}}(b),Qp.Tb=function(){return function(){return new V(null,3,5,W,[Am,ik,Ck],null)}}(b),Qp.zb=!0,Qp.nb="cljs.pprint/t_cljs$pprint14014",Qp.Hb=function(){return function(a,b){return x(b,"cljs.pprint/t_cljs$pprint14014")}}(b));return new Qp(a,b,X)}function os(){(null!=n?n.o&32768||m===n.Kc||(n.o?0:vb(cc,n)):vb(cc,n))?C.b(0,$p(om.a(function(){var a=L.a?L.a(n):L.call(null,n);return L.a?L.a(a):L.call(null,a)}()),dj))||Tp():Tp()}
function ps(a,b){var c=wl.a(a),d=Il.a(a),e=$p(om.a(function(){var a=L.a?L.a(n):L.call(null,n);return L.a?L.a(a):L.call(null,a)}()),dj),c=e<c?c-e:C.b(d,0)?0:d-le(e-c,d);Rp.f(N([Pe(t,sf(c," "))],0));return b}function qs(a,b){var c=wl.a(a),d=Il.a(a),e=c+$p(om.a(function(){var a=L.a?L.a(n):L.call(null,n);return L.a?L.a(a):L.call(null,a)}()),dj),e=0<d?le(e,d):0,c=c+(C.b(0,e)?0:d-e);Rp.f(N([Pe(t,sf(c," "))],0));return b}
function gs(a,b){var c=Vl.a(a),d=M(c),e=1<d?ek.a(Nj.a(I(I(c)))):r(wk.a(a))?"(":null,f=qd(c,1<d?1:0),c=2<d?ek.a(Nj.a(I(qd(c,2)))):r(wk.a(a))?")":null,g=lr(b),d=O(g,0,null),g=O(g,1,null);if(r(ar()))x(n,"#");else{var k=Uq,l=Vq;Uq+=1;Vq=0;try{Jq(e,c),Qr(f,fr(d),jm.a(a)),Kq()}finally{Vq=l,Uq=k}}return g}function rs(a,b){var c=r(wk.a(a))?ol:qi;cr(c,qj.a(a));return b}function ss(a,b){var c=r(wk.a(a))?r(pl.a(a))?ai:xj:r(pl.a(a))?Ti:$l;br(c);return b}
var ts=Hd("ASDBOXRPCFEG$%\x26|~\nT*?()[;]{}\x3c\x3e^W_I".split(""),[new q(null,5,[Cm,"A",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Il,new V(null,2,5,W,[1,Number],null),ml,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){return vr(Bh,a,b)}}],null),new q(null,5,[Cm,"S",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Il,new V(null,2,5,W,[1,Number],
null),ml,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){return vr(Ah,a,b)}}],null),new q(null,5,[Cm,"D",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null),cn,new V(null,2,5,W,[",",String],null),Li,new V(null,2,5,W,[3,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,
b){return zr(10,a,b)}}],null),new q(null,5,[Cm,"B",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null),cn,new V(null,2,5,W,[",",String],null),Li,new V(null,2,5,W,[3,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){return zr(2,a,b)}}],null),new q(null,5,[Cm,"O",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null),cn,new V(null,2,5,W,[",",String],
null),Li,new V(null,2,5,W,[3,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){return zr(8,a,b)}}],null),new q(null,5,[Cm,"X",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null),cn,new V(null,2,5,W,[",",String],null),Li,new V(null,2,5,W,[3,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){return zr(16,a,b)}}],
null),new q(null,5,[Cm,"R",Nj,new q(null,5,[om,new V(null,2,5,W,[null,Number],null),jl,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null),cn,new V(null,2,5,W,[",",String],null),Li,new V(null,2,5,W,[3,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(a){return r(I(om.a(a)))?function(a,c){return zr(om.a(a),a,c)}:r(function(){var b=pl.a(a);return r(b)?wk.a(a):b}())?function(a,c){return Kr(Ir,c)}:r(pl.a(a))?function(a,c){return Kr(Jr,
c)}:r(wk.a(a))?function(a,c){var b=lr(c),e=O(b,0,null),b=O(b,1,null);if(C.b(0,e))Rp.f(N(["zeroth"],0));else{var f=wr(1E3,0>e?-e:e);if(M(f)<=M(Er)){var g=mf.b(Fr,pf(f)),g=Gr(g,1),f=Hr(Dd(f));Rp.f(N([[t(0>e?"minus ":null),t(Ld(g)||Ld(f)?Ld(g)?f:[t(g),t("th")].join(""):[t(g),t(", "),t(f)].join(""))].join("")],0))}else zr(10,new q(null,5,[jl,0,Pk," ",cn,",",Li,3,wk,!0],null),fr(new V(null,1,5,W,[e],null))),f=le(e,100),e=11<f||19>f,f=le(f,10),Rp.f(N([1===f&&e?"st":2===f&&e?"nd":3===f&&e?"rd":"th"],0))}return b}:
function(a,c){var b=lr(c),e=O(b,0,null),b=O(b,1,null);if(C.b(0,e))Rp.f(N(["zero"],0));else{var f=wr(1E3,0>e?-e:e);M(f)<=M(Er)?(f=mf.b(Fr,f),f=Gr(f,0),Rp.f(N([[t(0>e?"minus ":null),t(f)].join("")],0))):zr(10,new q(null,5,[jl,0,Pk," ",cn,",",Li,3,wk,!0],null),fr(new V(null,1,5,W,[e],null)))}return b}}],null),new q(null,5,[Cm,"P",Nj,X,zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return function(a,b){var c=r(wk.a(a))?or(b,-1):b,d=r(pl.a(a))?new V(null,2,5,W,["y",
"ies"],null):new V(null,2,5,W,["","s"],null),e=lr(c),c=O(e,0,null),e=O(e,1,null);Rp.f(N([C.b(c,1)?I(d):Cd(d)],0));return e}}],null),new q(null,5,[Cm,"C",Nj,new q(null,1,[lk,new V(null,2,5,W,[null,String],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(a){return r(wk.a(a))?Mr:r(pl.a(a))?Nr:Or}],null),new q(null,5,[Cm,"F",Nj,new q(null,5,[rj,new V(null,2,5,W,[null,Number],null),Nl,new V(null,2,5,W,[null,Number],null),tk,new V(null,2,5,W,[0,Number],null),
Dl,new V(null,2,5,W,[null,String],null),Pk,new V(null,2,5,W,[" ",String],null)],null),zm,new dh(null,new q(null,1,[pl,null],null),null),hm,X,nj,function(){return Vr}],null),new q(null,5,[Cm,"E",Nj,new q(null,7,[rj,new V(null,2,5,W,[null,Number],null),Nl,new V(null,2,5,W,[null,Number],null),jk,new V(null,2,5,W,[null,Number],null),tk,new V(null,2,5,W,[1,Number],null),Dl,new V(null,2,5,W,[null,String],null),Pk,new V(null,2,5,W,[" ",String],null),Xm,new V(null,2,5,W,[null,String],null)],null),zm,new dh(null,
new q(null,1,[pl,null],null),null),hm,X,nj,function(){return Wr}],null),new q(null,5,[Cm,"G",Nj,new q(null,7,[rj,new V(null,2,5,W,[null,Number],null),Nl,new V(null,2,5,W,[null,Number],null),jk,new V(null,2,5,W,[null,Number],null),tk,new V(null,2,5,W,[1,Number],null),Dl,new V(null,2,5,W,[null,String],null),Pk,new V(null,2,5,W,[" ",String],null),Xm,new V(null,2,5,W,[null,String],null)],null),zm,new dh(null,new q(null,1,[pl,null],null),null),hm,X,nj,function(){return Xr}],null),new q(null,5,[Cm,"$",
Nj,new q(null,4,[Nl,new V(null,2,5,W,[2,Number],null),qj,new V(null,2,5,W,[1,Number],null),rj,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return Yr}],null),new q(null,5,[Cm,"%",Nj,new q(null,1,[sl,new V(null,2,5,W,[1,Number],null)],null),zm,fh,hm,X,nj,function(){return function(a,b){for(var c=sl.a(a),d=0;;)if(d<c)Tp(),d+=1;else break;return b}}],null),new q(null,5,[Cm,"\x26",Nj,
new q(null,1,[sl,new V(null,2,5,W,[1,Number],null)],null),zm,new dh(null,new q(null,1,[km,null],null),null),hm,X,nj,function(){return function(a,b){var c=sl.a(a);0<c&&os();for(var c=c-1,d=0;;)if(d<c)Tp(),d+=1;else break;return b}}],null),new q(null,5,[Cm,"|",Nj,new q(null,1,[sl,new V(null,2,5,W,[1,Number],null)],null),zm,fh,hm,X,nj,function(){return function(a,b){for(var c=sl.a(a),d=0;;)if(d<c)Rp.f(N(["\f"],0)),d+=1;else break;return b}}],null),new q(null,5,[Cm,"~",Nj,new q(null,1,[qj,new V(null,
2,5,W,[1,Number],null)],null),zm,fh,hm,X,nj,function(){return function(a,b){var c=qj.a(a);Rp.f(N([Pe(t,sf(c,"~"))],0));return b}}],null),new q(null,5,[Cm,"\n",Nj,X,zm,new dh(null,new q(null,2,[wk,null,pl,null],null),null),hm,X,nj,function(){return function(a,b){r(pl.a(a))&&Tp();return b}}],null),new q(null,5,[Cm,"T",Nj,new q(null,2,[wl,new V(null,2,5,W,[1,Number],null),Il,new V(null,2,5,W,[1,Number],null)],null),zm,new dh(null,new q(null,2,[pl,null,km,null],null),null),hm,X,nj,function(a){return r(pl.a(a))?
function(a,c){return qs(a,c)}:function(a,c){return ps(a,c)}}],null),new q(null,5,[Cm,"*",Nj,new q(null,1,[qj,new V(null,2,5,W,[1,Number],null)],null),zm,new dh(null,new q(null,2,[wk,null,pl,null],null),null),hm,X,nj,function(){return function(a,b){var c=qj.a(a);return r(pl.a(a))?nr(b,c):or(b,r(wk.a(a))?-c:c)}}],null),new q(null,5,[Cm,"?",Nj,X,zm,new dh(null,new q(null,1,[pl,null],null),null),hm,X,nj,function(a){return r(pl.a(a))?function(a,c){var b=mr(c),e=O(b,0,null),b=O(b,1,null);return Qr(e,b,
jm.a(a))}:function(a,c){var b=mr(c),e=O(b,0,null),b=O(b,1,null),f=lr(b),b=O(f,0,null),f=O(f,1,null),b=fr(b);Qr(e,b,jm.a(a));return f}}],null),new q(null,5,[Cm,"(",Nj,X,zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,new q(null,3,[Hl,")",si,null,Si,null],null),nj,function(a){return function(a){return function(b,d){var c;a:{var f=I(Vl.a(b)),g=n;n=a.a?a.a(n):a.call(null,n);try{c=Qr(f,d,jm.a(b));break a}finally{n=g}c=void 0}return c}}(r(function(){var b=pl.a(a);return r(b)?wk.a(a):
b}())?ks:r(wk.a(a))?ms:r(pl.a(a))?ns:js)}],null),new q(null,5,[Cm,")",Nj,X,zm,fh,hm,X,nj,function(){return null}],null),new q(null,5,[Cm,"[",Nj,new q(null,1,[mi,new V(null,2,5,W,[null,Number],null)],null),zm,new dh(null,new q(null,2,[wk,null,pl,null],null),null),hm,new q(null,3,[Hl,"]",si,!0,Si,Em],null),nj,function(a){return r(wk.a(a))?$r:r(pl.a(a))?as:Zr}],null),new q(null,5,[Cm,";",Nj,new q(null,2,[Nm,new V(null,2,5,W,[null,Number],null),Vm,new V(null,2,5,W,[null,Number],null)],null),zm,new dh(null,
new q(null,1,[wk,null],null),null),hm,new q(null,1,[xm,!0],null),nj,function(){return null}],null),new q(null,5,[Cm,"]",Nj,X,zm,fh,hm,X,nj,function(){return null}],null),new q(null,5,[Cm,"{",Nj,new q(null,1,[Qj,new V(null,2,5,W,[null,Number],null)],null),zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,new q(null,2,[Hl,"}",si,!1],null),nj,function(a){var b;b=pl.a(a);b=r(b)?wk.a(a):b;return r(b)?es:r(wk.a(a))?cs:r(pl.a(a))?ds:bs}],null),new q(null,5,[Cm,"}",Nj,X,zm,new dh(null,
new q(null,1,[wk,null],null),null),hm,X,nj,function(){return null}],null),new q(null,5,[Cm,"\x3c",Nj,new q(null,4,[jl,new V(null,2,5,W,[0,Number],null),Il,new V(null,2,5,W,[1,Number],null),ml,new V(null,2,5,W,[0,Number],null),Pk,new V(null,2,5,W,[" ",String],null)],null),zm,new dh(null,new q(null,4,[wk,null,pl,null,Ml,null,km,null],null),null),hm,new q(null,3,[Hl,"\x3e",si,!0,Si,em],null),nj,function(){return fs}],null),new q(null,5,[Cm,"\x3e",Nj,X,zm,new dh(null,new q(null,1,[wk,null],null),null),
hm,X,nj,function(){return null}],null),new q(null,5,[Cm,"^",Nj,new q(null,3,[Rm,new V(null,2,5,W,[null,Number],null),Ki,new V(null,2,5,W,[null,Number],null),gi,new V(null,2,5,W,[null,Number],null)],null),zm,new dh(null,new q(null,1,[wk,null],null),null),hm,X,nj,function(){return function(a,b){var c=Rm.a(a),d=Ki.a(a),e=gi.a(a),f=r(wk.a(a))?rk:Km;return r(r(c)?r(d)?e:d:c)?c<=d&&d<=e?new V(null,2,5,W,[f,b],null):b:r(r(c)?d:c)?C.b(c,d)?new V(null,2,5,W,[f,b],null):b:r(c)?C.b(c,0)?new V(null,2,5,W,[f,
b],null):b:(r(wk.a(a))?Ld(Pm.a(jm.a(a))):Ld(Pm.a(b)))?new V(null,2,5,W,[f,b],null):b}}],null),new q(null,5,[Cm,"W",Nj,X,zm,new dh(null,new q(null,4,[wk,null,pl,null,Ml,null,km,null],null),null),hm,X,nj,function(a){return r(function(){var b=pl.a(a);return r(b)?b:wk.a(a)}())?function(a){return function(b,d){var c=lr(d),f=O(c,0,null),c=O(c,1,null);return r(Qe(Yq,f,a))?new V(null,2,5,W,[Km,c],null):c}}(Me.b(r(pl.a(a))?new V(null,4,5,W,[yk,null,Al,null],null):Fd,r(wk.a(a))?new V(null,2,5,W,[km,!0],null):
Fd)):function(a,c){var b=lr(c),e=O(b,0,null),b=O(b,1,null);return r(Xq(e))?new V(null,2,5,W,[Km,b],null):b}}],null),new q(null,5,[Cm,"_",Nj,X,zm,new dh(null,new q(null,3,[wk,null,pl,null,Ml,null],null),null),hm,X,nj,function(){return ss}],null),new q(null,5,[Cm,"I",Nj,new q(null,1,[qj,new V(null,2,5,W,[0,Number],null)],null),zm,new dh(null,new q(null,1,[wk,null],null),null),hm,X,nj,function(){return rs}],null)]),us=/^([vV]|#|('.)|([+-]?\d+)|(?=,))/,vs=new dh(null,new q(null,2,[tj,null,Vj,null],null),
null);function ws(a){var b=O(a,0,null),c=O(a,1,null),d=O(a,2,null);a=new RegExp(us.source,"g");var e=a.exec(b);return r(e)?(d=I(e),b=b.substring(a.lastIndex),a=c+a.lastIndex,C.b(",",qd(b,0))?new V(null,2,5,W,[new V(null,2,5,W,[d,c],null),new V(null,3,5,W,[b.substring(1),a+1,!0],null)],null):new V(null,2,5,W,[new V(null,2,5,W,[d,c],null),new V(null,3,5,W,[b,a,!1],null)],null)):r(d)?jr("Badly formed parameters in format directive",c):new V(null,2,5,W,[null,new V(null,2,5,W,[b,c],null)],null)}
function xs(a){var b=O(a,0,null);a=O(a,1,null);return new V(null,2,5,W,[C.b(b.length,0)?null:C.b(b.length,1)&&Yd(new dh(null,new q(null,2,["V",null,"v",null],null),null),qd(b,0))?Vj:C.b(b.length,1)&&C.b("#",qd(b,0))?tj:C.b(b.length,2)&&C.b("'",qd(b,0))?qd(b,1):parseInt(b,10),a],null)}var ys=new q(null,2,[":",wk,"@",pl],null);
function zs(a,b){return Wp(function(a){var b=O(a,0,null),c=O(a,1,null);a=O(a,2,null);if(Ld(b))return new V(null,2,5,W,[null,new V(null,3,5,W,[b,c,a],null)],null);var f=B.b(ys,I(b));return r(f)?Yd(a,f)?jr([t('Flag "'),t(I(b)),t('" appears more than once in a directive')].join(""),c):new V(null,2,5,W,[!0,new V(null,3,5,W,[b.substring(1),c+1,Q.c(a,f,new V(null,2,5,W,[!0,c],null))],null)],null):new V(null,2,5,W,[null,new V(null,3,5,W,[b,c,a],null)],null)},new V(null,3,5,W,[a,b,X],null))}
function As(a,b){var c=zm.a(a);r(function(){var a=tb(pl.a(c));return a?pl.a(b):a}())&&jr([t('"@" is an illegal flag for format directive "'),t(Cm.a(a)),t('"')].join(""),qd(pl.a(b),1));r(function(){var a=tb(wk.a(c));return a?wk.a(b):a}())&&jr([t('":" is an illegal flag for format directive "'),t(Cm.a(a)),t('"')].join(""),qd(wk.a(b),1));r(function(){var a=tb(Ml.a(c));return a?(a=pl.a(b),r(a)?wk.a(b):a):a}())&&jr([t('Cannot combine "@" and ":" flags for format directive "'),t(Cm.a(a)),t('"')].join(""),
function(){var a=qd(wk.a(b),1),c=qd(pl.a(b),1);return a<c?a:c}())}
function Bs(a,b,c,d){As(a,c);M(b)>M(Nj.a(a))&&jr(dr(null,'Too many parameters for directive "~C": ~D~:* ~[were~;was~:;were~] specified but only ~D~:* ~[are~;is~:;are~] allowed',N([Cm.a(a),M(b),M(Nj.a(a))],0)),Cd(I(b)));mh(mf.c(function(b,c){var d=I(b);return null==d||Yd(vs,d)||C.b(Cd(Cd(c)),wb(d))?null:jr([t("Parameter "),t(Ae(I(c))),t(' has bad type in directive "'),t(Cm.a(a)),t('": '),t(wb(d))].join(""),Cd(b))},b,Nj.a(a)));return ah(N([yf.b(X,ve(function(){return function f(a){return new Be(null,
function(){for(;;){var b=E(a);if(b){if(Sd(b)){var c=Cc(b),g=M(c),u=Fe(g);a:for(var v=0;;)if(v<g){var w=Jb.b(c,v),y=O(w,0,null),w=O(w,1,null),w=O(w,0,null);Ie(u,new V(null,2,5,W,[y,new V(null,2,5,W,[w,d],null)],null));v+=1}else{c=!0;break a}return c?He(u.ia(),f(Dc(b))):He(u.ia(),null)}c=I(b);u=O(c,0,null);c=O(c,1,null);c=O(c,0,null);return wd(new V(null,2,5,W,[u,new V(null,2,5,W,[c,d],null)],null),f(Zc(b)))}return null}},null,null)}(Nj.a(a))}())),ae(function(a,b){return Qe(Q,a,b)},X,xf(function(a){return I(qd(a,
1))},af(rg(Nj.a(a)),b))),c],0))}function Cs(a,b){return new pr(function(b,d){Rp.f(N([a],0));return d},null,new q(null,1,[ek,a],null),b,null,null,null)}function Ds(a,b){var c,d=hm.a(Sl.a(a));c=aj.a(a);c=Es.c?Es.c(d,c,b):Es.call(null,d,c,b);d=O(c,0,null);c=O(c,1,null);return new V(null,2,5,W,[new pr(jj.a(a),Sl.a(a),ah(N([Nj.a(a),Yp(d,aj.a(a))],0)),aj.a(a),null,null,null),c],null)}
function Fs(a,b,c){return Wp(function(c){if(Ld(c))return jr("No closing bracket found.",b);var d=I(c);c=J(c);if(r(Hl.a(hm.a(Sl.a(d)))))d=Ds(d,c);else if(C.b(Hl.a(a),Cm.a(Sl.a(d))))d=new V(null,2,5,W,[null,new V(null,4,5,W,[Dk,Nj.a(d),null,c],null)],null);else{var f;f=xm.a(hm.a(Sl.a(d)));f=r(f)?wk.a(Nj.a(d)):f;d=r(f)?new V(null,2,5,W,[null,new V(null,4,5,W,[Si,null,Nj.a(d),c],null)],null):r(xm.a(hm.a(Sl.a(d))))?new V(null,2,5,W,[null,new V(null,4,5,W,[xm,null,null,c],null)],null):new V(null,2,5,W,
[d,c],null)}return d},c)}
function Es(a,b,c){return Cd(Wp(function(c){var d=O(c,0,null),f=O(c,1,null);c=O(c,2,null);var g=Fs(a,b,c);c=O(g,0,null);var k=O(g,1,null),g=O(k,0,null),l=O(k,1,null),p=O(k,2,null),k=O(k,3,null);return C.b(g,Dk)?new V(null,2,5,W,[null,new V(null,2,5,W,[bh(Me,N([d,wg([r(f)?Si:Vl,new V(null,1,5,W,[c],null),bl,l])],0)),k],null)],null):C.b(g,Si)?r(Si.a(d))?jr('Two else clauses ("~:;") inside bracket construction.',b):tb(Si.a(a))?jr('An else clause ("~:;") is in a bracket type that doesn\'t support it.',b):
C.b(em,Si.a(a))&&E(Vl.a(d))?jr('The else clause ("~:;") is only allowed in the first position for this directive.',b):C.b(em,Si.a(a))?new V(null,2,5,W,[!0,new V(null,3,5,W,[bh(Me,N([d,new q(null,2,[Si,new V(null,1,5,W,[c],null),pi,p],null)],0)),!1,k],null)],null):new V(null,2,5,W,[!0,new V(null,3,5,W,[bh(Me,N([d,new q(null,1,[Vl,new V(null,1,5,W,[c],null)],null)],0)),!0,k],null)],null):C.b(g,xm)?r(f)?jr('A plain clause (with "~;") follows an else clause ("~:;") inside bracket construction.',b):tb(si.a(a))?
jr('A separator ("~;") is in a bracket type that doesn\'t support it.',b):new V(null,2,5,W,[!0,new V(null,3,5,W,[bh(Me,N([d,new q(null,1,[Vl,new V(null,1,5,W,[c],null)],null)],0)),!1,k],null)],null):null},new V(null,3,5,W,[new q(null,1,[Vl,Fd],null),!1,c],null)))}function Gs(a){return I(Wp(function(a){var b=I(a);a=J(a);var d=hm.a(Sl.a(b));return r(Hl.a(d))?Ds(b,a):new V(null,2,5,W,[b,a],null)},a))}
function er(a){var b=ir;ir=a;try{return Gs(I(Wp(function(){return function(a){var b=O(a,0,null);a=O(a,1,null);if(Ld(b))return new V(null,2,5,W,[null,b],null);var c=b.indexOf("~");if(0>c)b=new V(null,2,5,W,[Cs(b,a),new V(null,2,5,W,["",a+b.length],null)],null);else if(0===c){a=Wp(ws,new V(null,3,5,W,[b.substring(1),a+1,!1],null));b=O(a,0,null);c=O(a,1,null);a=O(c,0,null);c=O(c,1,null);a=zs(a,c);O(a,0,null);a=O(a,1,null);var c=O(a,0,null),f=O(a,1,null),g=O(a,2,null);a=I(c);var k=B.b(ts,a.toUpperCase()),
g=r(k)?Bs(k,mf.b(xs,b),g,f):null;tb(a)&&jr("Format string ended in the middle of a directive",f);tb(k)&&jr([t('Directive "'),t(a),t('" is undefined')].join(""),f);b=W;a=new pr(nj.a(k).call(null,g,f),k,g,f,null,null,null);c=c.substring(1);f+=1;if(C.b("\n",Cm.a(k))&&tb(wk.a(g)))a:{k=new V(null,2,5,W,[" ","\t"],null);if(Nd(k))b:if(k=E(k),null==k)k=fh;else if(k instanceof F&&0===k.u){k=k.g;c:for(var g=0,l=wc(fh);;)if(g<k.length)var p=g+1,l=l.Gb(null,k[g]),g=p;else break c;k=l.Qb(null)}else for(p=wc(fh);;)if(null!=
k)g=J(k),p=p.Gb(null,k.Aa(null)),k=g;else{k=yc(p);break b}else k=$d([k]);for(g=0;;){(p=C.b(g,M(c)))||(p=qd(c,g),p=k.a?k.a(p):k.call(null,p),p=tb(p));if(p){k=g;break a}g+=1}}else k=0;b=new V(null,2,5,b,[a,new V(null,2,5,W,[c.substring(k),f+k],null)],null)}else b=new V(null,2,5,W,[Cs(b.substring(0,c),a),new V(null,2,5,W,[b.substring(c),c+a],null)],null);return b}}(b),new V(null,2,5,W,[a,0],null))))}finally{ir=b}}
var Hs=function Hs(b){for(;;){if(Ld(b))return!1;var c;c=km.a(zm.a(Sl.a(I(b))));r(c)||(c=Ye(Hs,I(Vl.a(Nj.a(I(b))))),c=r(c)?c:Ye(Hs,I(Si.a(Nj.a(I(b))))));if(r(c))return!0;b=J(b)}};function hr(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;switch(b.length){case 3:return gr(arguments[0],arguments[1],arguments[2]);case 2:return Is(arguments[0],arguments[1]);default:throw Error([t("Invalid arity: "),t(b.length)].join(""));}}
function gr(a,b,c){var d=new ya,e=tb(a)||!0===a?new Lc(d):a,f;f=Hs(b);f=r(f)?tb(Wq(e)):f;f=r(f)?r(Wq(e))?e:Gq(e):e;var g=n;n=f;try{try{Is(b,c)}finally{e!==f&&sc(f)}return tb(a)?""+t(d):!0===a?db.a?db.a(""+t(d)):db.call(null,""+t(d)):null}finally{n=g}}
function Is(a,b){Vp(function(a,b){if(r(Pr(b)))return new V(null,2,5,W,[null,b],null);var c=rr(Nj.a(a),b),d=O(c,0,null),c=O(c,1,null),g=Xp(d),d=O(g,0,null),g=O(g,1,null),d=Q.c(d,jm,c);return new V(null,2,5,W,[null,Pe(jj.a(a),new V(null,3,5,W,[d,c,g],null))],null)},b,a);return null}
var Z=function(a){return function(b){return function(){function c(a){var b=null;if(0<arguments.length){for(var b=0,c=Array(arguments.length-0);b<c.length;)c[b]=arguments[b+0],++b;b=new F(c,0)}return d.call(this,b)}function d(c){var d=B.c(L.a?L.a(b):L.call(null,b),c,Vd);d===Vd&&(d=Pe(a,c),kf.C(b,Q,c,d));return d}c.B=0;c.A=function(a){a=E(a);return d(a)};c.f=d;return c}()}(Y?Y(X):ef.call(null,X))}(er);function Js(a,b,c){Th(a,b,c)}var Ks=new q(null,6,[gm,"'",fm,"#'",kl,"@",Cl,"~",Zi,"@",ei,"~"],null);
function Ls(a){var b;b=I(a);b=Ks.a?Ks.a(b):Ks.call(null,b);return r(r(b)?C.b(2,M(a)):b)?(x(n,b),Xq(Cd(a)),!0):null}function Ms(a){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("[","]");for(var d=0,e=E(a);;){if(tb(hb)||d<hb){if(e&&(Xq(I(e)),J(e))){x(n," ");br($l);a=d+1;var f=J(e),d=a,e=f;continue}}else x(n,"...");break}Kq()}finally{Vq=c,Uq=b}}return null}Z.a?Z.a("~\x3c[~;~@{~w~^, ~:_~}~;]~:\x3e"):Z.call(null,"~\x3c[~;~@{~w~^, ~:_~}~;]~:\x3e");
function Ns(a){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("{","}");for(var d=0,e=E(a);;){if(tb(hb)||d<hb){if(e){if(r(ar()))x(n,"#");else{a=Uq;var f=Vq;Uq+=1;Vq=0;try{Jq(null,null),Xq(I(I(e))),x(n," "),br($l),Vq=0,Xq(I(J(I(e)))),Kq()}finally{Vq=f,Uq=a}}if(J(e)){x(n,", ");br($l);a=d+1;var g=J(e),d=a,e=g;continue}}}else x(n,"...");break}Kq()}finally{Vq=c,Uq=b}}return null}function Os(a){return x(n,Ah.f(N([a],0)))}
var Ps=function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,c=Array(arguments.length-0);b<c.length;)c[b]=arguments[b+0],++b;b=new F(c,0)}return d.call(this,b)}function d(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return d(a)};a.f=d;return a}()}("~\x3c#{~;~@{~w~^ ~:_~}~;}~:\x3e",Z.a?Z.a("~\x3c#{~;~@{~w~^ ~:_~}~;}~:\x3e"):Z.call(null,"~\x3c#{~;~@{~w~^ ~:_~}~;}~:\x3e")),Qs=new q(null,2,["core$future_call","Future","core$promise","Promise"],null);
function Rs(a){var b;b=nh(/^[^$]+\$[^$]+/,a);b=r(b)?Qs.a?Qs.a(b):Qs.call(null,b):null;return r(b)?b:a}
var Ss=function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,c=Array(arguments.length-0);b<c.length;)c[b]=arguments[b+0],++b;b=new F(c,0)}return d.call(this,b)}function d(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return d(a)};a.f=d;return a}()}("~\x3c\x3c-(~;~@{~w~^ ~_~}~;)-\x3c~:\x3e",Z.a?Z.a("~\x3c\x3c-(~;~@{~w~^ ~_~}~;)-\x3c~:\x3e"):Z.call(null,"~\x3c\x3c-(~;~@{~w~^ ~_~}~;)-\x3c~:\x3e"));
function Ts(a){return(null!=a?a.o&32768||m===a.Kc||(a.o?0:vb(cc,a)):vb(cc,a))?ql:a instanceof z?mj:(null==a?0:null!=a?a.o&64||m===a.Ha||(a.o?0:vb(Kb,a)):vb(Kb,a))?Zk:Qd(a)?Mm:Rd(a)?fk:Od(a)?im:null==a?null:gj}if("undefined"===typeof Us){var Us,Vs=Y?Y(X):ef.call(null,X),Ws=Y?Y(X):ef.call(null,X),Xs=Y?Y(X):ef.call(null,X),Ys=Y?Y(X):ef.call(null,X),Zs=B.c(X,sm,Jh());Us=new Vh(Wc.b("cljs.pprint","simple-dispatch"),Ts,gj,Zs,Vs,Ws,Xs,Ys)}
Js(Us,Zk,function(a){if(tb(Ls(a)))if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("(",")");for(var d=0,e=E(a);;){if(tb(hb)||d<hb){if(e&&(Xq(I(e)),J(e))){x(n," ");br($l);a=d+1;var f=J(e),d=a,e=f;continue}}else x(n,"...");break}Kq()}finally{Vq=c,Uq=b}}return null});Th(Us,fk,Ms);Th(Us,Mm,Ns);Th(Us,im,Ps);Js(Us,null,function(){return x(n,Ah.f(N([null],0)))});Th(Us,gj,Os);Oq=Us;function $s(a){return Rd(a)?new V(null,2,5,W,["[","]"],null):new V(null,2,5,W,["(",")"],null)}
function at(a){if(Pd(a)){var b=$s(a),c=O(b,0,null),d=O(b,1,null),e=E(a),f=I(e),g=J(e);if(r(ar()))x(n,"#");else{var k=Uq,l=Vq;Uq+=1;Vq=0;try{Jq(c,d);(function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w~:i",Z.a?Z.a("~w~:i"):Z.call(null,"~w~:i"),
k,l,b,c,d,a,e,f,g,f,g)})().call(null,f);for(var p=g;;)if(E(p)){(function(){var u=Z.a?Z.a(" "):Z.call(null," ");return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=b;return a}()}(p," ",u,k,l,b,c,d,a,e,f,g,f,g)})().call(null);var u=I(p);if(Pd(u)){var v=$s(u),w=O(v,0,null),
y=O(v,1,null);if(r(ar()))x(n,"#");else{var A=Uq,D=Vq;Uq+=1;Vq=0;try{Jq(w,y);if(C.b(M(u),3)&&Cd(u)instanceof S){var H=u,K=O(H,0,null),R=O(H,1,null),U=O(H,2,null);(function(){var va=Z.a?Z.a("~w ~w "):Z.call(null,"~w ~w ");return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=
b;return a}()}(p,"~w ~w ",va,H,K,R,U,A,D,v,w,y,u,k,l,b,c,d,a,e,f,g,f,g)})().call(null,K,R);Pd(U)?function(){var va=Rd(U)?"~\x3c[~;~@{~w~^ ~:_~}~;]~:\x3e":"~\x3c(~;~@{~w~^ ~:_~}~;)~:\x3e",lb="string"===typeof va?Z.a?Z.a(va):Z.call(null,va):va;return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=
E(a);return b(a)};a.f=b;return a}()}(p,va,lb,H,K,R,U,A,D,v,w,y,u,k,l,b,c,d,a,e,f,g,f,g)}().call(null,U):Xq(U)}else Pe(function(){var H=Z.a?Z.a("~w ~:i~@{~w~^ ~:_~}"):Z.call(null,"~w ~:i~@{~w~^ ~:_~}");return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=b;return a}()}(p,
"~w ~:i~@{~w~^ ~:_~}",H,A,D,v,w,y,u,k,l,b,c,d,a,e,f,g,f,g)}(),u);Kq()}finally{Vq=D,Uq=A}}J(p)&&function(){var A=Z.a?Z.a("~_"):Z.call(null,"~_");return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=b;return a}()}(p,"~_",A,v,w,y,u,k,l,b,c,d,a,e,f,g,f,g)}().call(null)}else Xq(u),
J(p)&&function(){var v=Z.a?Z.a("~:_"):Z.call(null,"~:_");return function(a,b,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=b;return a}()}(p,"~:_",v,u,k,l,b,c,d,a,e,f,g,f,g)}().call(null);p=J(p)}else break;Kq()}finally{Vq=l,Uq=k}}}else Xq(a)}
var bt=function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,c=Array(arguments.length-0);b<c.length;)c[b]=arguments[b+0],++b;b=new F(c,0)}return d.call(this,b)}function d(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return d(a)};a.f=d;return a}()}("~:\x3c~w~^ ~@_~w~^ ~_~@{~w~^ ~_~}~:\x3e",Z.a?Z.a("~:\x3c~w~^ ~@_~w~^ ~_~@{~w~^ ~_~}~:\x3e"):Z.call(null,"~:\x3c~w~^ ~@_~w~^ ~_~@{~w~^ ~_~}~:\x3e"));
function ct(a,b){E(a)&&(r(b)?function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}(" ~_",Z.a?Z.a(" ~_"):Z.call(null," ~_"))}().call(null):function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,
d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}(" ~@_",Z.a?Z.a(" ~@_"):Z.call(null," ~@_"))}().call(null),function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}
a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~{~w~^ ~_~}",Z.a?Z.a("~{~w~^ ~_~}"):Z.call(null,"~{~w~^ ~_~}"))}().call(null,a))}
function dt(a){E(a)&&function(){return function(a,c){return function(){function a(a){var c=null;if(0<arguments.length){for(var c=0,d=Array(arguments.length-0);c<d.length;)d[c]=arguments[c+0],++c;c=new F(d,0)}return b.call(this,c)}function b(a){a=fr(a);return Is(c,a)}a.B=0;a.A=function(a){a=E(a);return b(a)};a.f=b;return a}()}(" ~_~{~w~^ ~_~}",Z.a?Z.a(" ~_~{~w~^ ~_~}"):Z.call(null," ~_~{~w~^ ~_~}"))}().call(null,a)}
function et(a){if(J(a)){var b=E(a),c=I(b),d=J(b),e=I(d),f=J(d),g="string"===typeof I(f)?new V(null,2,5,W,[I(f),J(f)],null):new V(null,2,5,W,[null,f],null),k=O(g,0,null),l=O(g,1,null),p=Qd(I(l))?new V(null,2,5,W,[I(l),J(l)],null):new V(null,2,5,W,[null,l],null),u=O(p,0,null),v=O(p,1,null);if(r(ar()))x(n,"#");else{var w=Uq,y=Vq;Uq+=1;Vq=0;try{Jq("(",")"),function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=
arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w ~1I~@_~w",Z.a?Z.a("~w ~1I~@_~w"):Z.call(null,"~w ~1I~@_~w"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)}().call(null,c,e),r(k)&&function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);
return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}(" ~_~w",Z.a?Z.a(" ~_~w"):Z.call(null," ~_~w"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)}().call(null,k),r(u)&&function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}(" ~_~w",Z.a?Z.a(" ~_~w"):
Z.call(null," ~_~w"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)}().call(null,u),Rd(I(v))?ct(v,r(k)?k:u):dt(v),Kq()}finally{Vq=y,Uq=w}}return null}return ft.a?ft.a(a):ft.call(null,a)}
function gt(a){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("[","]");for(var d=0;;){if(tb(hb)||d<hb){if(E(a)){if(r(ar()))x(n,"#");else{var e=Uq,f=Vq;Uq+=1;Vq=0;try{Jq(null,null),Xq(I(a)),J(a)&&(x(n," "),br(Ti),Xq(Cd(a))),Kq()}finally{Vq=f,Uq=e}}if(J(Zc(a))){x(n," ");br($l);var e=d+1,g=J(Zc(a)),d=e;a=g;continue}}}else x(n,"...");break}Kq()}finally{Vq=c,Uq=b}}}
function ht(a){var b=I(a);if(r(ar()))x(n,"#");else{var c=Uq,d=Vq;Uq+=1;Vq=0;try{Jq("(",")"),J(a)&&Rd(Cd(a))?(function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w ~1I~@_",Z.a?Z.a("~w ~1I~@_"):Z.call(null,"~w ~1I~@_"),c,d,b)}().call(null,b),gt(Cd(a)),
function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}(" ~_~{~w~^ ~_~}",Z.a?Z.a(" ~_~{~w~^ ~_~}"):Z.call(null," ~_~{~w~^ ~_~}"),c,d,b)}().call(null,J(Zc(a)))):ft.a?ft.a(a):ft.call(null,a),Kq()}finally{Vq=d,Uq=c}}return null}
var it=function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,c=Array(arguments.length-0);b<c.length;)c[b]=arguments[b+0],++b;b=new F(c,0)}return d.call(this,b)}function d(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return d(a)};a.f=d;return a}()}("~:\x3c~1I~w~^ ~@_~w~@{ ~_~w~}~:\x3e",Z.a?Z.a("~:\x3c~1I~w~^ ~@_~w~@{ ~_~w~}~:\x3e"):Z.call(null,"~:\x3c~1I~w~^ ~@_~w~@{ ~_~w~}~:\x3e")),jt=X;
function ft(a){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("(",")");cr(qi,1);for(var d=0,e=E(a);;){if(tb(hb)||d<hb){if(e&&(Xq(I(e)),J(e))){x(n," ");br($l);a=d+1;var f=J(e),d=a,e=f;continue}}else x(n,"...");break}Kq()}finally{Vq=c,Uq=b}}return null}
var kt=function(a){return yf.b(X,wf(de,N([function(){return function c(a){return new Be(null,function(){for(;;){var d=E(a);if(d){if(Sd(d)){var f=Cc(d),g=M(f),k=Fe(g);a:for(var l=0;;)if(l<g){var p=Jb.b(f,l);Ie(k,new V(null,2,5,W,[p,new V(null,2,5,W,[Wc.a(Ae(I(p))),Cd(p)],null)],null));l+=1}else{f=!0;break a}return f?He(k.ia(),c(Dc(d))):He(k.ia(),null)}k=I(d);return wd(new V(null,2,5,W,[k,new V(null,2,5,W,[Wc.a(Ae(I(k))),Cd(k)],null)],null),c(Zc(d)))}return null}},null,null)}(a)}()],0)))}(function(a){return yf.b(X,
mf.b(function(a){return function(b){var c=O(b,0,null),e=O(b,1,null),f;f=ye(c);f=r(f)?f:Yd(new dh(null,new q(null,23,[bi,null,ii,null,ki,null,$i,null,fj,null,kj,null,Xj,null,hk,null,kk,null,pk,null,sk,null,Mk,null,Nk,null,Qk,null,$k,null,dl,null,Ul,null,cm,null,fm,null,gm,null,um,null,Qm,null,$m,null],null),null),c);return tb(f)?new V(null,2,5,W,[Wc.b(a,Ae(c)),e],null):b}}("clojure.core"),a))}(Hd([cm,$k,fi,kk,Gl,Ei,Tl,gk,Bl,Ai,cj,Yi,Zj,$m,bk,Yk,Rl,cl,ij,sk,Sk,Kl,Dj,Oj,gl,bm,Gj,qm,Ol,Ok],[bt,function(a){var b=
Cd(a),c=I(Zc(Zc(a)));if(Rd(b)){var d=jt;jt=C.b(1,M(b))?wg([I(b),"%"]):yf.b(X,mf.c(function(){return function(a,b){return new V(null,2,5,W,[a,[t("%"),t(b)].join("")],null)}}(d,b,c),b,lh(1,M(b)+1)));try{return function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;
return a}()}("~\x3c#(~;~@{~w~^ ~_~}~;)~:\x3e",Z.a?Z.a("~\x3c#(~;~@{~w~^ ~_~}~;)~:\x3e"):Z.call(null,"~\x3c#(~;~@{~w~^ ~_~}~;)~:\x3e"),d,b,c)}().call(null,c)}finally{jt=d}}else return ft.a?ft.a(a):ft.call(null,a)},ht,it,function(a){if(3<M(a)){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("(",")");cr(qi,1);Pe(function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,
0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w ~@_~w ~@_~w ~_",Z.a?Z.a("~w ~@_~w ~@_~w ~_"):Z.call(null,"~w ~@_~w ~@_~w ~_"),b,c)}(),a);for(var d=0,e=E(of(3,a));;){if(tb(hb)||d<hb){if(e){if(r(ar()))x(n,"#");else{a=Uq;var f=Vq;Uq+=1;Vq=0;try{Jq(null,null),Xq(I(e)),J(e)&&(x(n," "),br(Ti),Xq(Cd(e))),Kq()}finally{Vq=f,Uq=a}}if(J(Zc(e))){x(n," ");br($l);a=d+1;var g=J(Zc(e)),d=a,e=g;continue}}}else x(n,"...");break}Kq()}finally{Vq=
c,Uq=b}}return null}return ft.a?ft.a(a):ft.call(null,a)},bt,et,et,ht,bt,ht,it,it,bt,it,ht,ht,bt,ht,function(a){if(J(a)){var b=E(a),c=I(b),d=J(b),e=I(d),f=J(d),g="string"===typeof I(f)?new V(null,2,5,W,[I(f),J(f)],null):new V(null,2,5,W,[null,f],null),k=O(g,0,null),l=O(g,1,null),p=Qd(I(l))?new V(null,2,5,W,[I(l),J(l)],null):new V(null,2,5,W,[null,l],null),u=O(p,0,null),v=O(p,1,null);if(r(ar()))x(n,"#");else{var w=Uq,y=Vq;Uq+=1;Vq=0;try{Jq("(",")");(function(){return function(a,b){return function(){function a(a){var b=
null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w ~1I~@_~w",Z.a?Z.a("~w ~1I~@_~w"):Z.call(null,"~w ~1I~@_~w"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)})().call(null,c,e);r(r(k)?k:r(u)?u:E(v))&&function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-
0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~@:_",Z.a?Z.a("~@:_"):Z.call(null,"~@:_"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)}().call(null);r(k)&&dr(!0,'"~a"~:[~;~:@_~]',N([k,r(u)?u:E(v)],0));r(u)&&function(){return function(a,b){return function(){function a(a){var b=null;if(0<arguments.length){for(var b=0,d=Array(arguments.length-0);b<d.length;)d[b]=arguments[b+0],++b;b=new F(d,
0)}return c.call(this,b)}function c(a){a=fr(a);return Is(b,a)}a.B=0;a.A=function(a){a=E(a);return c(a)};a.f=c;return a}()}("~w~:[~;~:@_~]",Z.a?Z.a("~w~:[~;~:@_~]"):Z.call(null,"~w~:[~;~:@_~]"),w,y,a,b,c,d,c,e,f,e,f,g,k,l,p,u,v)}().call(null,u,E(v));for(var A=v;;){at(I(A));var D=J(A);if(D){var H=D;br($l);A=H}else break}Kq()}finally{Vq=y,Uq=w}}return null}return Xq(a)},ht,function(a){if(r(ar()))x(n,"#");else{var b=Uq,c=Vq;Uq+=1;Vq=0;try{Jq("(",")");cr(qi,1);Xq(I(a));if(J(a)){x(n," ");br($l);for(var d=
0,e=J(a);;){if(tb(hb)||d<hb){if(e){if(r(ar()))x(n,"#");else{a=Uq;var f=Vq;Uq+=1;Vq=0;try{Jq(null,null),Xq(I(e)),J(e)&&(x(n," "),br(Ti),Xq(Cd(e))),Kq()}finally{Vq=f,Uq=a}}if(J(Zc(e))){x(n," ");br($l);a=d+1;var g=J(Zc(e)),d=a,e=g;continue}}}else x(n,"...");break}}Kq()}finally{Vq=c,Uq=b}}return null},ht,et,et,bt,bt,ht,ht,bt])));
if("undefined"===typeof lt){var lt,mt=Y?Y(X):ef.call(null,X),nt=Y?Y(X):ef.call(null,X),ot=Y?Y(X):ef.call(null,X),pt=Y?Y(X):ef.call(null,X),qt=B.c(X,sm,Jh());lt=new Vh(Wc.b("cljs.pprint","code-dispatch"),Ts,gj,qt,mt,nt,ot,pt)}Js(lt,Zk,function(a){if(tb(Ls(a))){var b;b=I(a);b=kt.a?kt.a(b):kt.call(null,b);return r(b)?b.a?b.a(a):b.call(null,a):ft(a)}return null});Js(lt,mj,function(a){var b=a.a?a.a(jt):a.call(null,jt);return r(b)?Rp.f(N([b],0)):r(Rq)?Rp.f(N([Ae(a)],0)):Sp.a?Sp.a(a):Sp.call(null,a)});
Th(lt,fk,Ms);Th(lt,Mm,Ns);Th(lt,im,Ps);Th(lt,ej,Ss);Js(lt,ql,function(a){var b=[t("#\x3c"),t(Rs(wb(a).name)),t("@"),t(ca(a)),t(": ")].join("");if(r(ar()))x(n,"#");else{var c=Uq,d=Vq;Uq+=1;Vq=0;try{Jq(b,"\x3e");cr(qi,-(M(b)-2));br($l);var e,f=null!=a?a.G&1||m===a.Id?!0:a.G?!1:vb(tc,a):vb(tc,a);e=f?!uc(a):f;Xq(e?sj:L.a?L.a(a):L.call(null,a));Kq()}finally{Vq=d,Uq=c}}return null});Th(lt,null,Sp);Th(lt,gj,Os);Oq=Us;var rt=null;function st(){var a=rt;r(a)||(a=new q(null,5,[Ui,new q(null,4,[Om,0,Xl,0,Lk,0,Pl,0],null),ri,$c,Ji,$c,vj,Ah,Rk,El],null),a=C.b(uj,El)?Q.f(a,Rk,El,N([vj,Zq],0)):a);return a}function tt(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;c=arguments[0];d=arguments[1];b=2<b.length?new F(b.slice(2),0,null):null;return rt=Se(Af,st(),c,d,b)}
function ut(a){var b=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a,c=B.b(b,Ej),d=B.b(b,Xk),e=B.b(b,vk);return[t(ve(mf.b(function(){return function(a){return oj.a(Kd(a))}}(a,b,c,d,e),ri.a(st())))),t(" ("),t(c),t(":"),t(d),t(r(e)?[t(":"),t(e)].join(""):null),t(")")].join("")}function vt(a){return r(Ui.a(st()))?tt(new V(null,2,5,W,[Ui,a],null),bf()):null}
if("undefined"===typeof wt)var wt=function(){var a=Y?Y(X):ef.call(null,X),b=Y?Y(X):ef.call(null,X),c=Y?Y(X):ef.call(null,X),d=Y?Y(X):ef.call(null,X),e=B.c(X,sm,Jh());return new Vh(Wc.b("cljs.test","report"),function(){return function(a){return new V(null,2,5,W,[Rk.a(st()),Uj.a(a)],null)}}(a,b,c,d,e),gj,e,a,b,c,d)}();wt.fa(0,gj,function(){return null});wt.fa(0,new V(null,2,5,W,[El,Xl],null),function(){return vt(Xl)});
function xt(a){var b=function(){var a=vj.a(st());return r(a)?a:Ah}();Ch(N(["expected:",function(){var c=ul.a(a);return b.a?b.a(c):b.call(null,c)}()],0));return Ch(N([" actual:",function(){var c=tm.a(a);return b.a?b.a(c):b.call(null,c)}()],0))}wt.fa(0,new V(null,2,5,W,[El,Lk],null),function(a){vt(Lk);Ch(N(["\nFAIL in",ut(a)],0));E(Ji.a(st()))&&Ch(N([Pe(t,vf(" ",ve(Ji.a(st()))))],0));var b=Ym.a(a);r(b)&&Ch(N([b],0));return xt(a)});
wt.fa(0,new V(null,2,5,W,[El,Pl],null),function(a){vt(Pl);Ch(N(["\nERROR in",ut(a)],0));E(Ji.a(st()))&&Ch(N([Pe(t,vf(" ",ve(Ji.a(st()))))],0));var b=Ym.a(a);r(b)&&Ch(N([b],0));return xt(a)});wt.fa(0,new V(null,2,5,W,[El,Bk],null),function(a){Ch(N(["\nRan",Om.a(a),"tests containing",Xl.a(a)+Lk.a(a)+Pl.a(a),"assertions."],0));return Ch(N([Lk.a(a),"failures,",Pl.a(a),"errors."],0))});wt.fa(0,new V(null,2,5,W,[El,Jl],null),function(a){return Ch(N(["\nTesting",Ae(lj.a(a))],0))});
wt.fa(0,new V(null,2,5,W,[El,Jm],null),function(){return null});wt.fa(0,new V(null,2,5,W,[El,Di],null),function(){return null});wt.fa(0,new V(null,2,5,W,[El,Gk],null),function(){return null});wt.fa(0,new V(null,2,5,W,[El,al],null),function(){return null});wt.fa(0,new V(null,2,5,W,[El,ll],null),function(){return null});wt.fa(0,new V(null,2,5,W,[El,en],null),function(){return null});var yt=Y?Y(0):ef.call(null,0),zt;zt=function At(b,c){if(null!=b&&null!=b.K)return b.K(0,c);var d=At[ba(null==b?null:b)];if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);d=At._;if(null!=d)return d.b?d.b(b,c):d.call(null,b,c);throw xb("IMultiFn.-get-method",b);}(wt,new V(null,2,5,W,[El,Di],null));wt.fa(0,new V(null,2,5,W,[El,Qi],null),function(a){return function(b){var c=(new Date).valueOf();jf.b?jf.b(yt,c):jf.call(null,yt,c);return r(a)?a.a?a.a(b):a.call(null,b):null}}(zt));
function Bt(a){return a.h?a.h():a.call(null)}wt.fa(0,new V(null,2,5,W,[El,Bi],null),function(a){return r(!1)?(!1).a?(!1).a(a):(!1).call(null,a):null});wt.fa(0,new V(null,2,5,W,[El,Ll],null),function(a){return r(!1)?Bt(function(){var b;b=null!=a&&(a.o&64||m===a.Ha)?Pe(gf,a):a;var c=B.b(b,rl),c=oj.a(Kd(c));b=r(c)?c:ut(b);return Ch(N(["Shrinking",b,"starting with parameters",Ah.f(N([$h.a(a)],0))],0))}):null});
function Ct(a,b,c){a=new q(null,3,[Uj,Bi,rl,a,Bi,new V(null,2,5,W,[b,c],null)],null);wt.a?wt.a(a):wt.call(null,a)};function Dt(a,b,c){var d=null!=c&&(c.o&64||m===c.Ha)?Pe(gf,c):c;c=B.b(d,qk);var e=B.c(d,Wj,200);r(c)||(c=(new Date).valueOf());d=new V(null,2,5,W,[c,Rn(c)],null);c=O(d,0,null);for(var f=O(d,1,null),d=0,e=qf(lh(0,e)),g=f;;){if(d===a)return Ct(b,a,a),new q(null,3,[fl,!0,Fj,a,qk,c],null);var f=E(e),e=I(f),f=J(f),g=Fn(g),k=O(g,0,null),g=O(g,1,null),k=$n(b,k,e),l=k.root,p=fl.a(l);Zh.a(l);if(r(r(p)?tb(p instanceof Error):p))Ct(b,d,a),e=f,f=g,d+=1,g=f;else return Et.L?Et.L(b,k,d,e,c):Et.call(null,b,k,d,
e,c)}}function Et(a,b,c,d,e){var f=b.root,g=fl.a(f),f=Zh.a(f);a=new q(null,3,[Uj,Ll,rl,a,$h,Zf(f)],null);wt.a?wt.a(a):wt.call(null,a);a=Zf(f);a:for(var k=b.children,l=b.root,f=b=0;;){if(Ld(k)){b=new q(null,4,[Ef,b,Ql,f,fl,fl.a(l),nl,Zh.a(l)],null);break a}var p=E(k),k=I(p),u=J(p),p=k,k=u,u=fl.a(p.root);r(r(u)?tb(u instanceof Error):u)?b+=1:(l=E(p.children))?(p=p.root,b+=1,f+=1,k=l,l=p):(l=p.root,b+=1)}return new q(null,6,[fl,g,qk,e,zl,d,Fj,c+1,Lk,a,Cf,b],null)};function Df(a,b){return ae(function(b,d){var c=O(d,0,null),f=O(d,1,null);return Yd(a,c)?Q.c(b,f,B.b(a,c)):b},Qe(Id,a,rg(b)),b)};function Ft(a){return function(b){var c;try{c=Pe(a,b)}catch(d){c=d}return new q(null,3,[fl,c,nk,a,Zh,b],null)}};function Gt(a){var b={};a=E(a);for(var c=null,d=0,e=0;;)if(e<d){var f=c.ca(null,e),g=O(f,0,null),f=O(f,1,null);b[g]=f;e+=1}else if(a=E(a))Sd(a)?(d=Cc(a),a=Dc(a),c=d,d=M(d)):(d=I(a),c=O(d,0,null),d=O(d,1,null),b[c]=d,a=J(a),c=null,d=0),e=0;else break;return b}function Ht(a){var b=O(a,0,null),c=O(a,1,null);a=O(a,2,null);return b.substring(c,a)}function It(a){return a?"number"===typeof a.length?0<a.length:a.constructor===Object?0<Object.keys(a).length:!0:!1}
function Jt(a){return function(){var b=a.apply(null,arguments);return void 0===b?!0:b}}var Kt={};function Lt(a){r(Kt[a])||(Kt[a]=!0,a=[t("DEPRECATED: "),t(a),t("\n"),t(B.b(Wn(Error().stack,/\n/,0),3))].join(""),console.warn(a))}var Mt=uo(new V(null,6,5,W,[new V(null,2,5,W,[1,ho(void 0)],null),new V(null,2,5,W,[2,ho(null)],null),new V(null,2,5,W,[4,Co],null),new V(null,2,5,W,[6,jp],null),new V(null,2,5,W,[20,Eo],null),new V(null,2,5,W,[20,rp],null)],null));
function Nt(a){var b=yo();a=Ro(b,a,X);return go(Gt,a)}function Ot(a){return to(new V(null,2,5,W,[go(Je,Jo(a)),Nt(a)],null))}function Pt(a){return new q(null,3,[ym,a?a.size:a,Hm,a?a.minSize:a,Yl,a?a.maxSize:a],null)}
function Qt(a){for(var b=Td(a),c=[],d=E(b),e=null,f=0,g=0;;)if(g<f){var k=e.ca(null,g);c.push(function(){var b=a[k];return Rt.a?Rt.a(b):Rt.call(null,b)}());g+=1}else if(d=E(d)){e=d;if(Sd(e))d=Cc(e),g=Dc(e),e=d,f=M(d),d=g;else{var l=I(e);c.push(function(){var b=a[l];return Rt.a?Rt.a(b):Rt.call(null,b)}());d=J(e);e=null;f=0}g=0}else break;return go($e(b),Pe(Do,c))}
var St=uo(new V(null,5,5,W,[new V(null,2,5,W,[1,ho(null)],null),new V(null,2,5,W,[2,Co],null),new V(null,2,5,W,[3,ip(new q(null,2,[Ak,!1,Im,!1],null))],null),new V(null,2,5,W,[10,Eo],null),new V(null,2,5,W,[10,rp],null)],null)),Tt=Kp(Ot,St);function Rt(a){if(Yn(a))throw Error("Assert failed: (not (gen/generator? x))");return a&&"undefined"!==typeof a.__clj_gen?a.__clj_gen:ho(a)}function Ut(a){return function(b){b=new Vt(b);b=a.a?a.a(b):a.call(null,b);return Rt(b)}}
exports.Generator=function(a){if(!Yn(a))throw Error("Generator cannot be constructed directly.");return Object.defineProperty(this,"__clj_gen",{value:a})};var Vt=exports.Generator;exports.check=function(a,b){var c=r(b)?b:{},d=Dt(function(){var a=c.numTests;if(r(a))return a;a=c.times;return r(a)?a:100}(),a,N([Wj,function(){var a=c.maxSize;return r(a)?a:200}(),qk,c.seed],0)),d=Df(d,new q(null,2,[zl,hi,Fj,Pj],null)),d=Yd(d,Cf)?Bf(d):d;return Hh(d)};
exports.property=function(){var a=arguments.length-1,b=Jt(arguments[a]);if(1===a&&sb(arguments[0]))return a=mf.b(Rt,arguments[0]),go(Ft(b),Pe(Do,a));for(var c=[],d=0;;)if(d<a)c.push(Rt(arguments[d])),d+=1;else break;return go(Ft(b),Pe(Do,c))};exports.sample=function(a,b){var c;c=Rt(a);var d=r(b)?b:10;if(!r(Yn(c)))throw Error([t("Assert failed: "),t("First arg to sample must be a generator"),t("\n"),t("(generator? generator)")].join(""));c=nf(d,ko(c));return Je(c)};
exports.sampleOne=function(a,b){var c=Rt(a),d=r(b)?b:30,e=Tn.h?Tn.h():Tn.call(null);return $n(c,e,d).root};exports.gen={};exports.gen.any=new Vt(Kp(Ot,Mt));exports.gen.primitive=new Vt(Mt);exports.gen["boolean"]=new Vt(Co);exports.gen["null"]=new Vt(ho(null));exports.gen.undefined=new Vt(ho(void 0));exports.gen.NaN=new Vt(ho(NaN));exports.gen.number=new Vt(jp);exports.gen.posNumber=new Vt(ip(new q(null,2,[li,0,Im,!1],null)));exports.gen.negNumber=new Vt(ip(new q(null,2,[hl,0,Im,!1],null)));
exports.gen.numberWithin=function(a,b){if("number"!==typeof a)throw Error("gen.numberWithin: must provide a number for a minimum size");if("number"!==typeof b)throw Error("gen.numberWithin: must provide a number for a maximum size");return new Vt(ip(new q(null,3,[li,a,hl,b,Im,!1],null)))};exports.gen["int"]=new Vt(Eo);exports.gen.posInt=new Vt(Fo);exports.gen.negInt=new Vt(Go);exports.gen.sPosInt=new Vt(Ho);exports.gen.sNegInt=new Vt(Io);
exports.gen.intWithin=function(a,b){if("number"!==typeof a)throw Error("gen.intWithin: must provide a number for a minimum size");if("number"!==typeof b)throw Error("gen.intWithin: must provide a number for a maximum size");return new Vt(so(a,b))};exports.gen.string=new Vt(rp);exports.gen.asciiString=new Vt(sp);exports.gen.alphaNumString=new Vt(zo);
exports.gen.substring=function(a){if("string"!==typeof a)throw Error("gen.substring: must provide a string to make subtrings from");return new Vt(go(Ht,Do.f(N([ho(a),so(0,a.length),so(0,a.length)],0))))};exports.gen["char"]=new Vt(kp);exports.gen.asciiChar=new Vt(lp);exports.gen.alphaNumChar=new Vt(mp);
exports.gen.array=function(a,b,c){if(!(1<=arguments.length))throw Error("gen.array: must provide a value generator or array of generators");"number"===typeof c?Lt("Use gen.array(vals, { minSize: num, maxSize: num })"):"number"===typeof b&&Lt("Use gen.array(vals, { size: num })");return new Vt(go(Je,Array.isArray(a)?Pe(Do,mf.b(Rt,a)):ub(b)?"undefined"!==typeof b.size?Ko(Rt(a),b.size):"undefined"!==typeof b.maxSize?po(function(c){var d;d=b.minSize;d=r(d)?d:0;c=Math.min(b.maxSize,c+d);return Lo(Rt(a),
d,c)}):"undefined"!==typeof b.minSize?po(function(c){var d=b.minSize;c+=d;return Lo(Rt(a),d,c)}):Jo(Rt(a)):"number"===typeof c?Lo(Rt(a),b,c):"number"===typeof b?Ko(Rt(a),b):Jo(Rt(a))))};
exports.gen.uniqueArray=function(a,b,c){if(!(1<=arguments.length))throw Error("gen.uniqueArray: must provide a value generator");var d=Vt,e;if("function"===typeof b){e=Rt(a);var f=Pt(c);if(!r(Yn(e)))throw Error([t("Assert failed: "),t("First arg to list-distinct-by must be a generator!"),t("\n"),t("(generator? gen)")].join(""));e=Qo($c,b,!0,!0,e,f)}else{e=Rt(a);f=Pt(b);if(!r(Yn(e)))throw Error([t("Assert failed: "),t("First arg to list-distinct must be a generator!"),t("\n"),t("(generator? gen)")].join(""));
e=Qo($c,de,!0,!0,e,f)}return new d(go(Je,e))};exports.gen.object=function(a,b,c){if(!(1<=arguments.length))throw Error("gen.object: must provide a value generator or object of generators");return new Vt(go(Gt,ub(a)?Qt(a):null==b||ub(b)?Ro(yo(),Rt(a),Pt(b)):Ro(Rt(a),Rt(b),Pt(c))))};exports.gen.arrayOrObject=function(a){if(!(1<=arguments.length))throw Error("gen.arrayOrObject: must provide a value generator");return new Vt(Ot(Rt(a)))};
exports.gen.nested=function(a,b){if(2!==arguments.length)throw Error("gen.nested: must provide a value generator");if("function"!==typeof a)throw Error("gen.nested: must provide a function that produces a collection generator");var c=new Vt(Kp(Ut(a),Rt(b)));return a.a?a.a(c):a.call(null,c)};exports.gen.JSON=new Vt(Nt(Tt));exports.gen.JSONValue=new Vt(Tt);exports.gen.JSONPrimitive=new Vt(St);
exports.gen.oneOf=function(a){if("undefined"===typeof a)throw Error("gen.oneOf: must provide generators to choose from");return new Vt(to(mf.b(Rt,a)))};exports.gen.oneOfWeighted=function(a){if("undefined"===typeof a)throw Error("gen.oneOf: must provide generators to choose from");return new Vt(uo(mf.b(function(a){var b=O(a,0,null);a=O(a,1,null);return[b,Rt(a)]},a)))};exports.gen["return"]=function(a){return new Vt(ho(a))};
exports.gen.sized=function(a){if("function"!==typeof a)throw Error("gen.sized: must provide function that returns a generator");return new Vt(po(Ze.b(Rt,a)))};Vt.prototype.nullable=function(){return new Vt(uo(new V(null,2,5,W,[new V(null,2,5,W,[1,ho(null)],null),new V(null,2,5,W,[5,Rt(this)],null)],null)))};Vt.prototype.notEmpty=function(){return new Vt(wo(It,Rt(this)))};
Vt.prototype.suchThat=function(a){if("function"!==typeof a)throw Error(".suchThat(): must provide function that returns a boolean");return new Vt(wo(a,Rt(this)))};Vt.prototype.then=function(a){if("function"!==typeof a)throw Error(".then(): must provide function that returns a value or a generator");return new Vt(jo(Rt(this),Ze.b(Rt,a)))};Vt.prototype.scale=function(a){if("function"!==typeof a)throw Error(".then(): must provide function that returns a new size");return new Vt(ro(a,Rt(this)))};
Vt.prototype.neverShrink=function(){return new Vt(Ao(Rt(this)))};Vt.prototype.alwaysShrink=function(){return new Vt(Bo(Rt(this)))};Vt.prototype[zb]=function(){return bd(ko(Rt(this)))};Object.defineProperty(exports.gen,"strictPosInt",{get:function(){Lt("Use gen.sPosInt instead of gen.strictPosInt");return new Vt(Ho)}});Object.defineProperty(exports.gen,"strictNegInt",{get:function(){Lt("Use gen.sNegInt instead of gen.strictNegInt");return new Vt(Io)}});var Wt=exports.gen;
Object.defineProperty(Wt,"suchThat",{get:function(a,b){return function(){Lt("Use generator.where() instead of gen.suchThat(generator)");return function(){return function(a,b){return new Vt(wo(a,Rt(b)))}}(a,b)}}(Wt,"suchThat")});var Xt=exports.gen;Object.defineProperty(Xt,"notEmpty",{get:function(a,b){return function(){Lt("Use generator.notEmpty() instead of gen.notEmpty(generator)");return function(){return function(a,b){return new Vt(xo(It,Rt(a),r(b)?b:10))}}(a,b)}}(Xt,"notEmpty")});var Yt=exports.gen;
Object.defineProperty(Yt,"map",{get:function(a,b){return function(){Lt("Use generator.then() instead of gen.map(generator)");return function(){return function(a,b){return new Vt(go(a,Rt(b)))}}(a,b)}}(Yt,"map")});var Zt=exports.gen;
Object.defineProperty(Zt,"bind",{get:function(a,b){return function(){Lt("Use generator.then() instead of gen.bind(generator)");return function(a,b){return function(c,d){return new Vt(jo(Rt(c),function(){return function(a){return Rt(d.a?d.a(a):d.call(null,a))}}(a,b)))}}(a,b)}}(Zt,"bind")});var $t=exports.gen;
Object.defineProperty($t,"resize",{get:function(a,b){return function(){Lt("Use generator.scale(() \x3d\x3e size) instead of gen.resize(generator, size)");return function(){return function(a,b){return new Vt(qo(a,Rt(b)))}}(a,b)}}($t,"resize")});var au=exports.gen;Object.defineProperty(au,"noShrink",{get:function(a,b){return function(){Lt("Use generator.neverShrink() instead of gen.noShrink(generator)");return function(){return function(a){return new Vt(Ao(Rt(a)))}}(a,b)}}(au,"noShrink")});var bu=exports.gen;
Object.defineProperty(bu,"shrink",{get:function(a,b){return function(){Lt("Use generator.alwaysShrink() instead of gen.shrink(generator)");return function(){return function(a){return new Vt(Bo(Rt(a)))}}(a,b)}}(bu,"shrink")});var cu=exports.gen;Object.defineProperty(cu,"returnOneOf",{get:function(a,b){return function(){Lt("Use gen.oneOf() instead of gen.returnOneOf()");return function(){return function(a){return new Vt(vo(a))}}(a,b)}}(cu,"returnOneOf")});var du=exports.gen;
Object.defineProperty(du,"returnOneOfWeighted",{get:function(a,b){return function(){Lt("Use gen.oneOfWeighted() instead of gen.returnOneOfWeighted()");return function(a,b){return function(c){return new Vt(uo(mf.b(function(){return function(a){var b=O(a,0,null);a=O(a,1,null);return[b,ho(a)]}}(a,b),c)))}}(a,b)}}(du,"returnOneOfWeighted")});
},{}]},{},[])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2hvbWUvYWRtaW4vYnJvd3NlcmlmeS1jZG4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsInRlc3RjaGVjayJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiaWYodHlwZW9mIE1hdGguaW11bCA9PSBcInVuZGVmaW5lZFwiIHx8IChNYXRoLmltdWwoMHhmZmZmZmZmZiw1KSA9PSAwKSkge1xuICAgIE1hdGguaW11bCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHZhciBhaCAgPSAoYSA+Pj4gMTYpICYgMHhmZmZmO1xuICAgICAgICB2YXIgYWwgPSBhICYgMHhmZmZmO1xuICAgICAgICB2YXIgYmggID0gKGIgPj4+IDE2KSAmIDB4ZmZmZjtcbiAgICAgICAgdmFyIGJsID0gYiAmIDB4ZmZmZjtcbiAgICAgICAgLy8gdGhlIHNoaWZ0IGJ5IDAgZml4ZXMgdGhlIHNpZ24gb24gdGhlIGhpZ2ggcGFydFxuICAgICAgICAvLyB0aGUgZmluYWwgfDAgY29udmVydHMgdGhlIHVuc2lnbmVkIHZhbHVlIGludG8gYSBzaWduZWQgdmFsdWVcbiAgICAgICAgcmV0dXJuICgoYWwgKiBibCkgKyAoKChhaCAqIGJsICsgYWwgKiBiaCkgPDwgMTYpID4+PiAwKXwwKTtcbiAgICB9XG59XG5cblxudmFyIGg7XG5mdW5jdGlvbiBiYShhKXt2YXIgYj10eXBlb2YgYTtpZihcIm9iamVjdFwiPT1iKWlmKGEpe2lmKGEgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm5cImFycmF5XCI7aWYoYSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gYjt2YXIgYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk7aWYoXCJbb2JqZWN0IFdpbmRvd11cIj09YylyZXR1cm5cIm9iamVjdFwiO2lmKFwiW29iamVjdCBBcnJheV1cIj09Y3x8XCJudW1iZXJcIj09dHlwZW9mIGEubGVuZ3RoJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5zcGxpY2UmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhYS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcInNwbGljZVwiKSlyZXR1cm5cImFycmF5XCI7aWYoXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT1jfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5jYWxsJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIWEucHJvcGVydHlJc0VudW1lcmFibGUoXCJjYWxsXCIpKXJldHVyblwiZnVuY3Rpb25cIn1lbHNlIHJldHVyblwibnVsbFwiO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT1cbmImJlwidW5kZWZpbmVkXCI9PXR5cGVvZiBhLmNhbGwpcmV0dXJuXCJvYmplY3RcIjtyZXR1cm4gYn1mdW5jdGlvbiBjYShhKXtyZXR1cm4gYVtlYV18fChhW2VhXT0rK2ZhKX12YXIgZWE9XCJjbG9zdXJlX3VpZF9cIisoMUU5Kk1hdGgucmFuZG9tKCk+Pj4wKSxmYT0wO2Z1bmN0aW9uIGdhKGEpe3JldHVybi9eW1xcc1xceGEwXSokLy50ZXN0KGEpfWZ1bmN0aW9uIGlhKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmXCIgXCI8PWEmJlwiflwiPj1hfHxcIsKAXCI8PWEmJlwi77+9XCI+PWF9O2Z1bmN0aW9uIGphKGEsYil7Zm9yKHZhciBjIGluIGEpYi5jYWxsKHZvaWQgMCxhW2NdLGMsYSl9O2Z1bmN0aW9uIGthKGEsYil7dGhpcy5hYT1bXTt0aGlzLiRhPWI7Zm9yKHZhciBjPSEwLGQ9YS5sZW5ndGgtMTswPD1kO2QtLSl7dmFyIGU9YVtkXXwwO2MmJmU9PWJ8fCh0aGlzLmFhW2RdPWUsYz0hMSl9fXZhciBsYT17fTtmdW5jdGlvbiBtYShhKXtpZigtMTI4PD1hJiYxMjg+YSl7dmFyIGI9bGFbYV07aWYoYilyZXR1cm4gYn1iPW5ldyBrYShbYXwwXSwwPmE/LTE6MCk7LTEyODw9YSYmMTI4PmEmJihsYVthXT1iKTtyZXR1cm4gYn1mdW5jdGlvbiBuYShhKXtpZihpc05hTihhKXx8IWlzRmluaXRlKGEpKXJldHVybiBwYTtpZigwPmEpcmV0dXJuIG5hKC1hKS5WKCk7Zm9yKHZhciBiPVtdLGM9MSxkPTA7YT49YztkKyspYltkXT1hL2N8MCxjKj1xYTtyZXR1cm4gbmV3IGthKGIsMCl9dmFyIHFhPTQyOTQ5NjcyOTYscGE9bWEoMCkscmE9bWEoMSksc2E9bWEoMTY3NzcyMTYpO2g9a2EucHJvdG90eXBlO1xuaC5vYz1mdW5jdGlvbigpe3JldHVybiAwPHRoaXMuYWEubGVuZ3RoP3RoaXMuYWFbMF06dGhpcy4kYX07aC5rYj1mdW5jdGlvbigpe2lmKHRoaXMuZ2EoKSlyZXR1cm4tdGhpcy5WKCkua2IoKTtmb3IodmFyIGE9MCxiPTEsYz0wO2M8dGhpcy5hYS5sZW5ndGg7YysrKXZhciBkPXVhKHRoaXMsYyksYT1hKygwPD1kP2Q6cWErZCkqYixiPWIqcWE7cmV0dXJuIGF9O1xuaC50b1N0cmluZz1mdW5jdGlvbihhKXthPWF8fDEwO2lmKDI+YXx8MzY8YSl0aHJvdyBFcnJvcihcInJhZGl4IG91dCBvZiByYW5nZTogXCIrYSk7aWYodGhpcy5OYSgpKXJldHVyblwiMFwiO2lmKHRoaXMuZ2EoKSlyZXR1cm5cIi1cIit0aGlzLlYoKS50b1N0cmluZyhhKTtmb3IodmFyIGI9bmEoTWF0aC5wb3coYSw2KSksYz10aGlzLGQ9XCJcIjs7KXt2YXIgZT13YShjLGIpLGY9KGMud2IoZS5tdWx0aXBseShiKSkub2MoKT4+PjApLnRvU3RyaW5nKGEpLGM9ZTtpZihjLk5hKCkpcmV0dXJuIGYrZDtmb3IoOzY+Zi5sZW5ndGg7KWY9XCIwXCIrZjtkPVwiXCIrZitkfX07ZnVuY3Rpb24gdWEoYSxiKXtyZXR1cm4gMD5iPzA6YjxhLmFhLmxlbmd0aD9hLmFhW2JdOmEuJGF9aC5OYT1mdW5jdGlvbigpe2lmKDAhPXRoaXMuJGEpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTx0aGlzLmFhLmxlbmd0aDthKyspaWYoMCE9dGhpcy5hYVthXSlyZXR1cm4hMTtyZXR1cm4hMH07XG5oLmdhPWZ1bmN0aW9uKCl7cmV0dXJuLTE9PXRoaXMuJGF9O2guQWM9ZnVuY3Rpb24oKXtyZXR1cm4gMD09dGhpcy5hYS5sZW5ndGgmJi0xPT10aGlzLiRhfHwwPHRoaXMuYWEubGVuZ3RoJiYwIT0odGhpcy5hYVswXSYxKX07aC5jYj1mdW5jdGlvbihhKXtpZih0aGlzLiRhIT1hLiRhKXJldHVybiExO2Zvcih2YXIgYj1NYXRoLm1heCh0aGlzLmFhLmxlbmd0aCxhLmFhLmxlbmd0aCksYz0wO2M8YjtjKyspaWYodWEodGhpcyxjKSE9dWEoYSxjKSlyZXR1cm4hMTtyZXR1cm4hMH07aC55Yz1mdW5jdGlvbihhKXtyZXR1cm4gMDx0aGlzLmNvbXBhcmUoYSl9O2guemM9ZnVuY3Rpb24oYSl7cmV0dXJuIDA8PXRoaXMuY29tcGFyZShhKX07aC5nYz1mdW5jdGlvbihhKXtyZXR1cm4gMD50aGlzLmNvbXBhcmUoYSl9O2guQ2M9ZnVuY3Rpb24oYSl7cmV0dXJuIDA+PXRoaXMuY29tcGFyZShhKX07XG5oLmNvbXBhcmU9ZnVuY3Rpb24oYSl7YT10aGlzLndiKGEpO3JldHVybiBhLmdhKCk/LTE6YS5OYSgpPzA6MX07aC5WPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWMoKS5hZGQocmEpfTtoLmFkZD1mdW5jdGlvbihhKXtmb3IodmFyIGI9TWF0aC5tYXgodGhpcy5hYS5sZW5ndGgsYS5hYS5sZW5ndGgpLGM9W10sZD0wLGU9MDtlPD1iO2UrKyl7dmFyIGY9ZCsodWEodGhpcyxlKSY2NTUzNSkrKHVhKGEsZSkmNjU1MzUpLGc9KGY+Pj4xNikrKHVhKHRoaXMsZSk+Pj4xNikrKHVhKGEsZSk+Pj4xNiksZD1nPj4+MTYsZj1mJjY1NTM1LGc9ZyY2NTUzNTtjW2VdPWc8PDE2fGZ9cmV0dXJuIG5ldyBrYShjLGNbYy5sZW5ndGgtMV0mLTIxNDc0ODM2NDg/LTE6MCl9O2gud2I9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKGEuVigpKX07XG5oLm11bHRpcGx5PWZ1bmN0aW9uKGEpe2lmKHRoaXMuTmEoKXx8YS5OYSgpKXJldHVybiBwYTtpZih0aGlzLmdhKCkpcmV0dXJuIGEuZ2EoKT90aGlzLlYoKS5tdWx0aXBseShhLlYoKSk6dGhpcy5WKCkubXVsdGlwbHkoYSkuVigpO2lmKGEuZ2EoKSlyZXR1cm4gdGhpcy5tdWx0aXBseShhLlYoKSkuVigpO2lmKHRoaXMuZ2Moc2EpJiZhLmdjKHNhKSlyZXR1cm4gbmEodGhpcy5rYigpKmEua2IoKSk7Zm9yKHZhciBiPXRoaXMuYWEubGVuZ3RoK2EuYWEubGVuZ3RoLGM9W10sZD0wO2Q8MipiO2QrKyljW2RdPTA7Zm9yKGQ9MDtkPHRoaXMuYWEubGVuZ3RoO2QrKylmb3IodmFyIGU9MDtlPGEuYWEubGVuZ3RoO2UrKyl7dmFyIGY9dWEodGhpcyxkKT4+PjE2LGc9dWEodGhpcyxkKSY2NTUzNSxrPXVhKGEsZSk+Pj4xNixsPXVhKGEsZSkmNjU1MzU7Y1syKmQrMiplXSs9ZypsO3hhKGMsMipkKzIqZSk7Y1syKmQrMiplKzFdKz1mKmw7eGEoYywyKmQrMiplKzEpO2NbMipkKzIqZSsxXSs9Zypcbms7eGEoYywyKmQrMiplKzEpO2NbMipkKzIqZSsyXSs9ZiprO3hhKGMsMipkKzIqZSsyKX1mb3IoZD0wO2Q8YjtkKyspY1tkXT1jWzIqZCsxXTw8MTZ8Y1syKmRdO2ZvcihkPWI7ZDwyKmI7ZCsrKWNbZF09MDtyZXR1cm4gbmV3IGthKGMsMCl9O2Z1bmN0aW9uIHhhKGEsYil7Zm9yKDsoYVtiXSY2NTUzNSkhPWFbYl07KWFbYisxXSs9YVtiXT4+PjE2LGFbYl0mPTY1NTM1fVxuZnVuY3Rpb24gd2EoYSxiKXtpZihiLk5hKCkpdGhyb3cgRXJyb3IoXCJkaXZpc2lvbiBieSB6ZXJvXCIpO2lmKGEuTmEoKSlyZXR1cm4gcGE7aWYoYS5nYSgpKXJldHVybiBiLmdhKCk/d2EoYS5WKCksYi5WKCkpOndhKGEuVigpLGIpLlYoKTtpZihiLmdhKCkpcmV0dXJuIHdhKGEsYi5WKCkpLlYoKTtpZigzMDxhLmFhLmxlbmd0aCl7aWYoYS5nYSgpfHxiLmdhKCkpdGhyb3cgRXJyb3IoXCJzbG93RGl2aWRlXyBvbmx5IHdvcmtzIHdpdGggcG9zaXRpdmUgaW50ZWdlcnMuXCIpO2Zvcih2YXIgYz1yYSxkPWI7ZC5DYyhhKTspYz1jLnNoaWZ0TGVmdCgxKSxkPWQuc2hpZnRMZWZ0KDEpO2Zvcih2YXIgZT1jLnZiKDEpLGY9ZC52YigxKSxnLGQ9ZC52YigyKSxjPWMudmIoMik7IWQuTmEoKTspZz1mLmFkZChkKSxnLkNjKGEpJiYoZT1lLmFkZChjKSxmPWcpLGQ9ZC52YigxKSxjPWMudmIoMSk7cmV0dXJuIGV9Yz1wYTtmb3IoZD1hO2QuemMoYik7KXtlPU1hdGgubWF4KDEsTWF0aC5mbG9vcihkLmtiKCkvXG5iLmtiKCkpKTtmPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLkxOMik7Zj00OD49Zj8xOk1hdGgucG93KDIsZi00OCk7Zz1uYShlKTtmb3IodmFyIGs9Zy5tdWx0aXBseShiKTtrLmdhKCl8fGsueWMoZCk7KWUtPWYsZz1uYShlKSxrPWcubXVsdGlwbHkoYik7Zy5OYSgpJiYoZz1yYSk7Yz1jLmFkZChnKTtkPWQud2Ioayl9cmV0dXJuIGN9aC5FYz1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmFhLmxlbmd0aCxiPVtdLGM9MDtjPGE7YysrKWJbY109fnRoaXMuYWFbY107cmV0dXJuIG5ldyBrYShiLH50aGlzLiRhKX07aC5WYz1mdW5jdGlvbihhKXtmb3IodmFyIGI9TWF0aC5tYXgodGhpcy5hYS5sZW5ndGgsYS5hYS5sZW5ndGgpLGM9W10sZD0wO2Q8YjtkKyspY1tkXT11YSh0aGlzLGQpfHVhKGEsZCk7cmV0dXJuIG5ldyBrYShjLHRoaXMuJGF8YS4kYSl9O1xuaC5HYz1mdW5jdGlvbihhKXtmb3IodmFyIGI9TWF0aC5tYXgodGhpcy5hYS5sZW5ndGgsYS5hYS5sZW5ndGgpLGM9W10sZD0wO2Q8YjtkKyspY1tkXT11YSh0aGlzLGQpXnVhKGEsZCk7cmV0dXJuIG5ldyBrYShjLHRoaXMuJGFeYS4kYSl9O2guc2hpZnRMZWZ0PWZ1bmN0aW9uKGEpe3ZhciBiPWE+PjU7YSU9MzI7Zm9yKHZhciBjPXRoaXMuYWEubGVuZ3RoK2IrKDA8YT8xOjApLGQ9W10sZT0wO2U8YztlKyspZFtlXT0wPGE/dWEodGhpcyxlLWIpPDxhfHVhKHRoaXMsZS1iLTEpPj4+MzItYTp1YSh0aGlzLGUtYik7cmV0dXJuIG5ldyBrYShkLHRoaXMuJGEpfTtoLnZiPWZ1bmN0aW9uKGEpe3ZhciBiPWE+PjU7YSU9MzI7Zm9yKHZhciBjPXRoaXMuYWEubGVuZ3RoLWIsZD1bXSxlPTA7ZTxjO2UrKylkW2VdPTA8YT91YSh0aGlzLGUrYik+Pj5hfHVhKHRoaXMsZStiKzEpPDwzMi1hOnVhKHRoaXMsZStiKTtyZXR1cm4gbmV3IGthKGQsdGhpcy4kYSl9O2Z1bmN0aW9uIHlhKGEsYil7bnVsbCE9YSYmdGhpcy5hcHBlbmQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWg9eWEucHJvdG90eXBlO2guRmI9XCJcIjtoLnNldD1mdW5jdGlvbihhKXt0aGlzLkZiPVwiXCIrYX07aC5hcHBlbmQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuRmIrPVN0cmluZyhhKTtpZihudWxsIT1iKWZvcih2YXIgZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspdGhpcy5GYis9YXJndW1lbnRzW2RdO3JldHVybiB0aGlzfTtoLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5GYj1cIlwifTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRmJ9O2Z1bmN0aW9uIEFhKGEsYixjKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYik/YVtiXTphW2JdPWMoYil9O2Z1bmN0aW9uIEJhKGEsYil7dGhpcy5iYT1hfDA7dGhpcy5rYT1ifDB9dmFyIENhPXt9LERhPXt9O2Z1bmN0aW9uIEZhKGEpe3JldHVybi0xMjg8PWEmJjEyOD5hP0FhKENhLGEsZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCYShhfDAsMD5hPy0xOjApfSk6bmV3IEJhKGF8MCwwPmE/LTE6MCl9ZnVuY3Rpb24gR2EoYSl7cmV0dXJuIGlzTmFOKGEpP0lhKCk6YTw9LUphP0thKCk6YSsxPj1KYT9MYSgpOjA+YT9HYSgtYSkuVigpOm5ldyBCYShhJU5hfDAsYS9OYXwwKX1mdW5jdGlvbiBPYShhLGIpe3JldHVybiBuZXcgQmEoYSxiKX1cbmZ1bmN0aW9uIFBhKGEsYil7aWYoMD09YS5sZW5ndGgpdGhyb3cgRXJyb3IoXCJudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmdcIik7dmFyIGM9Ynx8MTA7aWYoMj5jfHwzNjxjKXRocm93IEVycm9yKFwicmFkaXggb3V0IG9mIHJhbmdlOiBcIitjKTtpZihcIi1cIj09YS5jaGFyQXQoMCkpcmV0dXJuIFBhKGEuc3Vic3RyaW5nKDEpLGMpLlYoKTtpZigwPD1hLmluZGV4T2YoXCItXCIpKXRocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciBcIi1cIiBjaGFyYWN0ZXI6ICcrYSk7Zm9yKHZhciBkPUdhKE1hdGgucG93KGMsOCkpLGU9SWEoKSxmPTA7ZjxhLmxlbmd0aDtmKz04KXt2YXIgZz1NYXRoLm1pbig4LGEubGVuZ3RoLWYpLGs9cGFyc2VJbnQoYS5zdWJzdHJpbmcoZixmK2cpLGMpOzg+Zz8oZz1HYShNYXRoLnBvdyhjLGcpKSxlPWUubXVsdGlwbHkoZykuYWRkKEdhKGspKSk6KGU9ZS5tdWx0aXBseShkKSxlPWUuYWRkKEdhKGspKSl9cmV0dXJuIGV9XG52YXIgTmE9NDI5NDk2NzI5NixKYT1OYSpOYS8yO2Z1bmN0aW9uIElhKCl7cmV0dXJuIEFhKERhLFFhLGZ1bmN0aW9uKCl7cmV0dXJuIEZhKDApfSl9ZnVuY3Rpb24gUmEoKXtyZXR1cm4gQWEoRGEsU2EsZnVuY3Rpb24oKXtyZXR1cm4gRmEoMSl9KX1mdW5jdGlvbiBUYSgpe3JldHVybiBBYShEYSxVYSxmdW5jdGlvbigpe3JldHVybiBGYSgtMSl9KX1mdW5jdGlvbiBMYSgpe3JldHVybiBBYShEYSxWYSxmdW5jdGlvbigpe3JldHVybiBPYSgtMSwyMTQ3NDgzNjQ3KX0pfWZ1bmN0aW9uIEthKCl7cmV0dXJuIEFhKERhLFdhLGZ1bmN0aW9uKCl7cmV0dXJuIE9hKDAsLTIxNDc0ODM2NDgpfSl9ZnVuY3Rpb24gWGEoKXtyZXR1cm4gQWEoRGEsWWEsZnVuY3Rpb24oKXtyZXR1cm4gRmEoMTY3NzcyMTYpfSl9aD1CYS5wcm90b3R5cGU7aC5vYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhfTtcbmgua2I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYSpOYSsoMDw9dGhpcy5iYT90aGlzLmJhOk5hK3RoaXMuYmEpfTtoLnRvU3RyaW5nPWZ1bmN0aW9uKGEpe2E9YXx8MTA7aWYoMj5hfHwzNjxhKXRocm93IEVycm9yKFwicmFkaXggb3V0IG9mIHJhbmdlOiBcIithKTtpZih0aGlzLk5hKCkpcmV0dXJuXCIwXCI7aWYodGhpcy5nYSgpKXtpZih0aGlzLmNiKEthKCkpKXt2YXIgYj1HYShhKSxjPSRhKHRoaXMsYiksYj1jLm11bHRpcGx5KGIpLndiKHRoaXMpO3JldHVybiBjLnRvU3RyaW5nKGEpK2Iub2MoKS50b1N0cmluZyhhKX1yZXR1cm5cIi1cIit0aGlzLlYoKS50b1N0cmluZyhhKX1mb3IodmFyIGM9R2EoTWF0aC5wb3coYSw2KSksYj10aGlzLGQ9XCJcIjs7KXt2YXIgZT0kYShiLGMpLGY9KGIud2IoZS5tdWx0aXBseShjKSkub2MoKT4+PjApLnRvU3RyaW5nKGEpLGI9ZTtpZihiLk5hKCkpcmV0dXJuIGYrZDtmb3IoOzY+Zi5sZW5ndGg7KWY9XCIwXCIrZjtkPVwiXCIrZitkfX07XG5oLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PXRoaXMua2EmJjA9PXRoaXMuYmF9O2guZ2E9ZnVuY3Rpb24oKXtyZXR1cm4gMD50aGlzLmthfTtoLkFjPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSh0aGlzLmJhJjEpfTtoLmNiPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmthPT1hLmthJiZ0aGlzLmJhPT1hLmJhfTtoLmdjPWZ1bmN0aW9uKGEpe3JldHVybiAwPnRoaXMuY29tcGFyZShhKX07aC5DYz1mdW5jdGlvbihhKXtyZXR1cm4gMD49dGhpcy5jb21wYXJlKGEpfTtoLnljPWZ1bmN0aW9uKGEpe3JldHVybiAwPHRoaXMuY29tcGFyZShhKX07aC56Yz1mdW5jdGlvbihhKXtyZXR1cm4gMDw9dGhpcy5jb21wYXJlKGEpfTtoLmNvbXBhcmU9ZnVuY3Rpb24oYSl7aWYodGhpcy5jYihhKSlyZXR1cm4gMDt2YXIgYj10aGlzLmdhKCksYz1hLmdhKCk7cmV0dXJuIGImJiFjPy0xOiFiJiZjPzE6dGhpcy53YihhKS5nYSgpPy0xOjF9O1xuaC5WPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2IoS2EoKSk/S2EoKTp0aGlzLkVjKCkuYWRkKFJhKCkpfTtoLmFkZD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmthPj4+MTYsYz10aGlzLmthJjY1NTM1LGQ9dGhpcy5iYT4+PjE2LGU9YS5rYT4+PjE2LGY9YS5rYSY2NTUzNSxnPWEuYmE+Pj4xNjthPTArKCh0aGlzLmJhJjY1NTM1KSsoYS5iYSY2NTUzNSkpO2c9MCsoYT4+PjE2KSsoZCtnKTtkPTArKGc+Pj4xNik7ZCs9YytmO2I9MCsoZD4+PjE2KSsoYitlKSY2NTUzNTtyZXR1cm4gT2EoKGcmNjU1MzUpPDwxNnxhJjY1NTM1LGI8PDE2fGQmNjU1MzUpfTtoLndiPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChhLlYoKSl9O1xuaC5tdWx0aXBseT1mdW5jdGlvbihhKXtpZih0aGlzLk5hKCl8fGEuTmEoKSlyZXR1cm4gSWEoKTtpZih0aGlzLmNiKEthKCkpKXJldHVybiBhLkFjKCk/S2EoKTpJYSgpO2lmKGEuY2IoS2EoKSkpcmV0dXJuIHRoaXMuQWMoKT9LYSgpOklhKCk7aWYodGhpcy5nYSgpKXJldHVybiBhLmdhKCk/dGhpcy5WKCkubXVsdGlwbHkoYS5WKCkpOnRoaXMuVigpLm11bHRpcGx5KGEpLlYoKTtpZihhLmdhKCkpcmV0dXJuIHRoaXMubXVsdGlwbHkoYS5WKCkpLlYoKTtpZih0aGlzLmdjKFhhKCkpJiZhLmdjKFhhKCkpKXJldHVybiBHYSh0aGlzLmtiKCkqYS5rYigpKTt2YXIgYj10aGlzLmthPj4+MTYsYz10aGlzLmthJjY1NTM1LGQ9dGhpcy5iYT4+PjE2LGU9dGhpcy5iYSY2NTUzNSxmPWEua2E+Pj4xNixnPWEua2EmNjU1MzUsaz1hLmJhPj4+MTY7YT1hLmJhJjY1NTM1O3ZhciBsLHAsdSx2O3Y9MCtlKmE7dT0wKyh2Pj4+MTYpK2QqYTtwPTArKHU+Pj4xNik7dT0odSY2NTUzNSkrZSprO3ArPXU+Pj5cbjE2O3ArPWMqYTtsPTArKHA+Pj4xNik7cD0ocCY2NTUzNSkrZCprO2wrPXA+Pj4xNjtwPShwJjY1NTM1KStlKmc7bD1sKyhwPj4+MTYpKyhiKmErYyprK2QqZytlKmYpJjY1NTM1O3JldHVybiBPYSgodSY2NTUzNSk8PDE2fHYmNjU1MzUsbDw8MTZ8cCY2NTUzNSl9O1xuZnVuY3Rpb24gJGEoYSxiKXtpZihiLk5hKCkpdGhyb3cgRXJyb3IoXCJkaXZpc2lvbiBieSB6ZXJvXCIpO2lmKGEuTmEoKSlyZXR1cm4gSWEoKTtpZihhLmNiKEthKCkpKXtpZihiLmNiKFJhKCkpfHxiLmNiKFRhKCkpKXJldHVybiBLYSgpO2lmKGIuY2IoS2EoKSkpcmV0dXJuIFJhKCk7dmFyIGM9JGEoYS52YigxKSxiKS5zaGlmdExlZnQoMSk7aWYoYy5jYihJYSgpKSlyZXR1cm4gYi5nYSgpP1JhKCk6VGEoKTt2YXIgZD1hLndiKGIubXVsdGlwbHkoYykpO3JldHVybiBjLmFkZCgkYShkLGIpKX1pZihiLmNiKEthKCkpKXJldHVybiBJYSgpO2lmKGEuZ2EoKSlyZXR1cm4gYi5nYSgpPyRhKGEuVigpLGIuVigpKTokYShhLlYoKSxiKS5WKCk7aWYoYi5nYSgpKXJldHVybiAkYShhLGIuVigpKS5WKCk7Zm9yKHZhciBlPUlhKCksZD1hO2QuemMoYik7KXtmb3IodmFyIGM9TWF0aC5tYXgoMSxNYXRoLmZsb29yKGQua2IoKS9iLmtiKCkpKSxmPU1hdGguY2VpbChNYXRoLmxvZyhjKS9NYXRoLkxOMiksXG5mPTQ4Pj1mPzE6TWF0aC5wb3coMixmLTQ4KSxnPUdhKGMpLGs9Zy5tdWx0aXBseShiKTtrLmdhKCl8fGsueWMoZCk7KWMtPWYsZz1HYShjKSxrPWcubXVsdGlwbHkoYik7Zy5OYSgpJiYoZz1SYSgpKTtlPWUuYWRkKGcpO2Q9ZC53YihrKX1yZXR1cm4gZX1oLkVjPWZ1bmN0aW9uKCl7cmV0dXJuIE9hKH50aGlzLmJhLH50aGlzLmthKX07aC5WYz1mdW5jdGlvbihhKXtyZXR1cm4gT2EodGhpcy5iYXxhLmJhLHRoaXMua2F8YS5rYSl9O2guR2M9ZnVuY3Rpb24oYSl7cmV0dXJuIE9hKHRoaXMuYmFeYS5iYSx0aGlzLmthXmEua2EpfTtoLnNoaWZ0TGVmdD1mdW5jdGlvbihhKXthJj02MztpZigwPT1hKXJldHVybiB0aGlzO3ZhciBiPXRoaXMuYmE7cmV0dXJuIDMyPmE/T2EoYjw8YSx0aGlzLmthPDxhfGI+Pj4zMi1hKTpPYSgwLGI8PGEtMzIpfTtcbmgudmI9ZnVuY3Rpb24oYSl7YSY9NjM7aWYoMD09YSlyZXR1cm4gdGhpczt2YXIgYj10aGlzLmthO3JldHVybiAzMj5hP09hKHRoaXMuYmE+Pj5hfGI8PDMyLWEsYj4+YSk6T2EoYj4+YS0zMiwwPD1iPzA6LTEpfTtmdW5jdGlvbiBiYihhLGIpe2ImPTYzO2lmKDA9PWIpcmV0dXJuIGE7dmFyIGM9YS5rYTtyZXR1cm4gMzI+Yj9PYShhLmJhPj4+YnxjPDwzMi1iLGM+Pj5iKTozMj09Yj9PYShjLDApOk9hKGM+Pj5iLTMyLDApfXZhciBWYT0xLFdhPTIsUWE9MyxTYT00LFVhPTUsWWE9Njt2YXIgY2I7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBtKXZhciBtPXt9O3ZhciBuPW51bGw7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBkYil2YXIgZGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIk5vICpwcmludC1mbiogZm4gc2V0IGZvciBldmFsdWF0aW9uIGVudmlyb25tZW50XCIpO307aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBlYil2YXIgZWI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIk5vICpwcmludC1lcnItZm4qIGZuIHNldCBmb3IgZXZhbHVhdGlvbiBlbnZpcm9ubWVudFwiKTt9O3ZhciBnYj0hMCxoYj1udWxsLGliPW51bGw7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBqYil2YXIgamI9bnVsbDtmdW5jdGlvbiBrYigpe3JldHVybiBuZXcgcShudWxsLDUsW21iLCEwLG5iLGdiLG9iLCExLHBiLCExLHFiLGhiXSxudWxsKX1mdW5jdGlvbiByKGEpe3JldHVybiBudWxsIT1hJiYhMSE9PWF9ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBBcnJheX1cbmZ1bmN0aW9uIHRiKGEpe3JldHVybiBudWxsPT1hPyEwOiExPT09YT8hMDohMX1mdW5jdGlvbiB1YihhKXtyZXR1cm4gbnVsbCE9YT9hLmNvbnN0cnVjdG9yPT09T2JqZWN0OiExfWZ1bmN0aW9uIHZiKGEsYil7cmV0dXJuIGFbYmEobnVsbD09Yj9udWxsOmIpXT8hMDphLl8/ITA6ITF9ZnVuY3Rpb24gd2IoYSl7cmV0dXJuIG51bGw9PWE/bnVsbDphLmNvbnN0cnVjdG9yfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9d2IoYiksYz1yKHIoYyk/Yy56YjpjKT9jLm5iOmJhKGIpO3JldHVybiBFcnJvcihbXCJObyBwcm90b2NvbCBtZXRob2QgXCIsYSxcIiBkZWZpbmVkIGZvciB0eXBlIFwiLGMsXCI6IFwiLGJdLmpvaW4oXCJcIikpfWZ1bmN0aW9uIHliKGEpe3ZhciBiPWEubmI7cmV0dXJuIHIoYik/YjpcIlwiK3QoYSl9dmFyIHpiPVwidW5kZWZpbmVkXCIhPT10eXBlb2YgU3ltYm9sJiZcImZ1bmN0aW9uXCI9PT1iYShTeW1ib2wpP1N5bWJvbC5pdGVyYXRvcjpcIkBAaXRlcmF0b3JcIjtcbmZ1bmN0aW9uIENiKGEpe2Zvcih2YXIgYj1hLmxlbmd0aCxjPUFycmF5KGIpLGQ9MDs7KWlmKGQ8YiljW2RdPWFbZF0sZCs9MTtlbHNlIGJyZWFrO3JldHVybiBjfWZ1bmN0aW9uIERiKCl7fVxudmFyIEViPWZ1bmN0aW9uIEViKGIpe2lmKG51bGwhPWImJm51bGwhPWIuWilyZXR1cm4gYi5aKGIpO3ZhciBjPUViW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPUViLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklDb3VudGVkLi1jb3VudFwiLGIpO30sRmI9ZnVuY3Rpb24gRmIoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi56YSlyZXR1cm4gYi56YShiKTt2YXIgYz1GYltiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1GYi5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJRW1wdHlhYmxlQ29sbGVjdGlvbi4tZW1wdHlcIixiKTt9O2Z1bmN0aW9uIEdiKCl7fVxudmFyIEhiPWZ1bmN0aW9uIEhiKGIsYyl7aWYobnVsbCE9YiYmbnVsbCE9Yi5YKXJldHVybiBiLlgoYixjKTt2YXIgZD1IYltiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO2Q9SGIuXztpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTt0aHJvdyB4YihcIklDb2xsZWN0aW9uLi1jb25qXCIsYik7fTtmdW5jdGlvbiBJYigpe31cbnZhciBKYj1mdW5jdGlvbiBKYihiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIEpiLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7Y2FzZSAzOnJldHVybiBKYi5jKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYy5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fTtcbkpiLmI9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1hJiZudWxsIT1hLmNhKXJldHVybiBhLmNhKGEsYik7dmFyIGM9SmJbYmEobnVsbD09YT9udWxsOmEpXTtpZihudWxsIT1jKXJldHVybiBjLmI/Yy5iKGEsYik6Yy5jYWxsKG51bGwsYSxiKTtjPUpiLl87aWYobnVsbCE9YylyZXR1cm4gYy5iP2MuYihhLGIpOmMuY2FsbChudWxsLGEsYik7dGhyb3cgeGIoXCJJSW5kZXhlZC4tbnRoXCIsYSk7fTtKYi5jPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT1hJiZudWxsIT1hLlFhKXJldHVybiBhLlFhKGEsYixjKTt2YXIgZD1KYltiYShudWxsPT1hP251bGw6YSldO2lmKG51bGwhPWQpcmV0dXJuIGQuYz9kLmMoYSxiLGMpOmQuY2FsbChudWxsLGEsYixjKTtkPUpiLl87aWYobnVsbCE9ZClyZXR1cm4gZC5jP2QuYyhhLGIsYyk6ZC5jYWxsKG51bGwsYSxiLGMpO3Rocm93IHhiKFwiSUluZGV4ZWQuLW50aFwiLGEpO307SmIuQj0zO2Z1bmN0aW9uIEtiKCl7fVxudmFyIExiPWZ1bmN0aW9uIExiKGIpe2lmKG51bGwhPWImJm51bGwhPWIuQWEpcmV0dXJuIGIuQWEoYik7dmFyIGM9TGJbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9TGIuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSVNlcS4tZmlyc3RcIixiKTt9LE1iPWZ1bmN0aW9uIE1iKGIpe2lmKG51bGwhPWImJm51bGwhPWIuT2EpcmV0dXJuIGIuT2EoYik7dmFyIGM9TWJbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9TWIuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSVNlcS4tcmVzdFwiLGIpO307ZnVuY3Rpb24gTmIoKXt9ZnVuY3Rpb24gUGIoKXt9XG52YXIgUWI9ZnVuY3Rpb24gUWIoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBRYi5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gUWIuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGMubGVuZ3RoKV0uam9pbihcIlwiKSk7fX07XG5RYi5iPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YSYmbnVsbCE9YS5XKXJldHVybiBhLlcoYSxiKTt2YXIgYz1RYltiYShudWxsPT1hP251bGw6YSldO2lmKG51bGwhPWMpcmV0dXJuIGMuYj9jLmIoYSxiKTpjLmNhbGwobnVsbCxhLGIpO2M9UWIuXztpZihudWxsIT1jKXJldHVybiBjLmI/Yy5iKGEsYik6Yy5jYWxsKG51bGwsYSxiKTt0aHJvdyB4YihcIklMb29rdXAuLWxvb2t1cFwiLGEpO307UWIuYz1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9YSYmbnVsbCE9YS5UKXJldHVybiBhLlQoYSxiLGMpO3ZhciBkPVFiW2JhKG51bGw9PWE/bnVsbDphKV07aWYobnVsbCE9ZClyZXR1cm4gZC5jP2QuYyhhLGIsYyk6ZC5jYWxsKG51bGwsYSxiLGMpO2Q9UWIuXztpZihudWxsIT1kKXJldHVybiBkLmM/ZC5jKGEsYixjKTpkLmNhbGwobnVsbCxhLGIsYyk7dGhyb3cgeGIoXCJJTG9va3VwLi1sb29rdXBcIixhKTt9O1FiLkI9MztcbnZhciBSYj1mdW5jdGlvbiBSYihiLGMpe2lmKG51bGwhPWImJm51bGwhPWIucmMpcmV0dXJuIGIucmMoYixjKTt2YXIgZD1SYltiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO2Q9UmIuXztpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTt0aHJvdyB4YihcIklBc3NvY2lhdGl2ZS4tY29udGFpbnMta2V5P1wiLGIpO30sU2I9ZnVuY3Rpb24gU2IoYixjLGQpe2lmKG51bGwhPWImJm51bGwhPWIuWmEpcmV0dXJuIGIuWmEoYixjLGQpO3ZhciBlPVNiW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZSlyZXR1cm4gZS5jP2UuYyhiLGMsZCk6ZS5jYWxsKG51bGwsYixjLGQpO2U9U2IuXztpZihudWxsIT1lKXJldHVybiBlLmM/ZS5jKGIsYyxkKTplLmNhbGwobnVsbCxiLGMsZCk7dGhyb3cgeGIoXCJJQXNzb2NpYXRpdmUuLWFzc29jXCIsYik7fTtmdW5jdGlvbiBUYigpe31cbnZhciBVYj1mdW5jdGlvbiBVYihiLGMpe2lmKG51bGwhPWImJm51bGwhPWIuYmIpcmV0dXJuIGIuYmIoYixjKTt2YXIgZD1VYltiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO2Q9VWIuXztpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTt0aHJvdyB4YihcIklNYXAuLWRpc3NvY1wiLGIpO307ZnVuY3Rpb24gVmIoKXt9XG52YXIgV2I9ZnVuY3Rpb24gV2IoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi52YylyZXR1cm4gYi52YygpO3ZhciBjPVdiW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPVdiLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklNYXBFbnRyeS4ta2V5XCIsYik7fSxYYj1mdW5jdGlvbiBYYihiKXtpZihudWxsIT1iJiZudWxsIT1iLndjKXJldHVybiBiLndjKCk7dmFyIGM9WGJbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9WGIuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSU1hcEVudHJ5Li12YWxcIixiKTt9O2Z1bmN0aW9uIFliKCl7fVxudmFyIFpiPWZ1bmN0aW9uIFpiKGIpe2lmKG51bGwhPWImJm51bGwhPWIuYWMpcmV0dXJuIGIuYWMoYik7dmFyIGM9WmJbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9WmIuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSVN0YWNrLi1wZWVrXCIsYik7fSwkYj1mdW5jdGlvbiAkYihiKXtpZihudWxsIT1iJiZudWxsIT1iLmJjKXJldHVybiBiLmJjKGIpO3ZhciBjPSRiW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPSRiLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklTdGFjay4tcG9wXCIsYik7fTtmdW5jdGlvbiBhYygpe31cbnZhciBiYz1mdW5jdGlvbiBiYyhiLGMsZCl7aWYobnVsbCE9YiYmbnVsbCE9Yi54YylyZXR1cm4gYi54YyhiLGMsZCk7dmFyIGU9YmNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1lKXJldHVybiBlLmM/ZS5jKGIsYyxkKTplLmNhbGwobnVsbCxiLGMsZCk7ZT1iYy5fO2lmKG51bGwhPWUpcmV0dXJuIGUuYz9lLmMoYixjLGQpOmUuY2FsbChudWxsLGIsYyxkKTt0aHJvdyB4YihcIklWZWN0b3IuLWFzc29jLW5cIixiKTt9O2Z1bmN0aW9uIGNjKCl7fXZhciBkYz1mdW5jdGlvbiBkYyhiKXtpZihudWxsIT1iJiZudWxsIT1iLlhiKXJldHVybiBiLlhiKGIpO3ZhciBjPWRjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPWRjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklEZXJlZi4tZGVyZWZcIixiKTt9O2Z1bmN0aW9uIGVjKCl7fVxudmFyIGZjPWZ1bmN0aW9uIGZjKGIpe2lmKG51bGwhPWImJm51bGwhPWIuTilyZXR1cm4gYi5OKGIpO3ZhciBjPWZjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPWZjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklNZXRhLi1tZXRhXCIsYik7fSxnYz1mdW5jdGlvbiBnYyhiLGMpe2lmKG51bGwhPWImJm51bGwhPWIuTylyZXR1cm4gYi5PKGIsYyk7dmFyIGQ9Z2NbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTtkPWdjLl87aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7dGhyb3cgeGIoXCJJV2l0aE1ldGEuLXdpdGgtbWV0YVwiLGIpO307ZnVuY3Rpb24gaGMoKXt9XG52YXIgamM9ZnVuY3Rpb24gamMoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBqYy5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gamMuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGMubGVuZ3RoKV0uam9pbihcIlwiKSk7fX07XG5qYy5iPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YSYmbnVsbCE9YS5EYSlyZXR1cm4gYS5EYShhLGIpO3ZhciBjPWpjW2JhKG51bGw9PWE/bnVsbDphKV07aWYobnVsbCE9YylyZXR1cm4gYy5iP2MuYihhLGIpOmMuY2FsbChudWxsLGEsYik7Yz1qYy5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYj9jLmIoYSxiKTpjLmNhbGwobnVsbCxhLGIpO3Rocm93IHhiKFwiSVJlZHVjZS4tcmVkdWNlXCIsYSk7fTtqYy5jPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT1hJiZudWxsIT1hLkVhKXJldHVybiBhLkVhKGEsYixjKTt2YXIgZD1qY1tiYShudWxsPT1hP251bGw6YSldO2lmKG51bGwhPWQpcmV0dXJuIGQuYz9kLmMoYSxiLGMpOmQuY2FsbChudWxsLGEsYixjKTtkPWpjLl87aWYobnVsbCE9ZClyZXR1cm4gZC5jP2QuYyhhLGIsYyk6ZC5jYWxsKG51bGwsYSxiLGMpO3Rocm93IHhiKFwiSVJlZHVjZS4tcmVkdWNlXCIsYSk7fTtqYy5CPTM7XG52YXIga2M9ZnVuY3Rpb24ga2MoYixjKXtpZihudWxsIT1iJiZudWxsIT1iLkYpcmV0dXJuIGIuRihiLGMpO3ZhciBkPWtjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7ZD1rYy5fO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO3Rocm93IHhiKFwiSUVxdWl2Li1lcXVpdlwiLGIpO30sbGM9ZnVuY3Rpb24gbGMoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5TKXJldHVybiBiLlMoYik7dmFyIGM9bGNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9bGMuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSUhhc2guLWhhc2hcIixiKTt9O2Z1bmN0aW9uIG1jKCl7fVxudmFyIG5jPWZ1bmN0aW9uIG5jKGIpe2lmKG51bGwhPWImJm51bGwhPWIuWSlyZXR1cm4gYi5ZKGIpO3ZhciBjPW5jW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPW5jLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklTZXFhYmxlLi1zZXFcIixiKTt9O2Z1bmN0aW9uIG9jKCl7fWZ1bmN0aW9uIHBjKCl7fWZ1bmN0aW9uIHFjKCl7fVxudmFyIHJjPWZ1bmN0aW9uIHJjKGIpe2lmKG51bGwhPWImJm51bGwhPWIubmMpcmV0dXJuIGIubmMoYik7dmFyIGM9cmNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9cmMuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSVJldmVyc2libGUuLXJzZXFcIixiKTt9LHg9ZnVuY3Rpb24geChiLGMpe2lmKG51bGwhPWImJm51bGwhPWIueWIpcmV0dXJuIGIueWIoYixjKTt2YXIgZD14W2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7ZD14Ll87aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7dGhyb3cgeGIoXCJJV3JpdGVyLi13cml0ZVwiLGIpO30sc2M9ZnVuY3Rpb24gc2MoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5tYilyZXR1cm4gYi5tYihiKTt2YXIgYz1zY1tiYShudWxsPT1cbmI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPXNjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklXcml0ZXIuLWZsdXNoXCIsYik7fTtmdW5jdGlvbiB0Yygpe31cbnZhciB1Yz1mdW5jdGlvbiB1YyhiKXtpZihudWxsIT1iJiZudWxsIT1iLk1jKXJldHVybiBiLk1jKCk7dmFyIGM9dWNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9dWMuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSVBlbmRpbmcuLXJlYWxpemVkP1wiLGIpO30sdmM9ZnVuY3Rpb24gdmMoYixjLGQpe2lmKG51bGwhPWImJm51bGwhPWIuT2MpcmV0dXJuIGIuT2MoMCxjLGQpO3ZhciBlPXZjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZSlyZXR1cm4gZS5jP2UuYyhiLGMsZCk6ZS5jYWxsKG51bGwsYixjLGQpO2U9dmMuXztpZihudWxsIT1lKXJldHVybiBlLmM/ZS5jKGIsYyxkKTplLmNhbGwobnVsbCxiLGMsZCk7dGhyb3cgeGIoXCJJV2F0Y2hhYmxlLi1ub3RpZnktd2F0Y2hlc1wiLGIpO30sd2M9ZnVuY3Rpb24gd2MoYil7aWYobnVsbCE9YiYmbnVsbCE9XG5iLlBiKXJldHVybiBiLlBiKGIpO3ZhciBjPXdjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPXdjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklFZGl0YWJsZUNvbGxlY3Rpb24uLWFzLXRyYW5zaWVudFwiLGIpO30seGM9ZnVuY3Rpb24geGMoYixjKXtpZihudWxsIT1iJiZudWxsIT1iLkdiKXJldHVybiBiLkdiKGIsYyk7dmFyIGQ9eGNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTtkPXhjLl87aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7dGhyb3cgeGIoXCJJVHJhbnNpZW50Q29sbGVjdGlvbi4tY29uaiFcIixiKTt9LHljPWZ1bmN0aW9uIHljKGIpe2lmKG51bGwhPWImJm51bGwhPWIuUWIpcmV0dXJuIGIuUWIoYik7dmFyIGM9eWNbYmEobnVsbD09XG5iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz15Yy5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJVHJhbnNpZW50Q29sbGVjdGlvbi4tcGVyc2lzdGVudCFcIixiKTt9LHpjPWZ1bmN0aW9uIHpjKGIsYyxkKXtpZihudWxsIT1iJiZudWxsIT1iLmNjKXJldHVybiBiLmNjKGIsYyxkKTt2YXIgZT16Y1tiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWUpcmV0dXJuIGUuYz9lLmMoYixjLGQpOmUuY2FsbChudWxsLGIsYyxkKTtlPXpjLl87aWYobnVsbCE9ZSlyZXR1cm4gZS5jP2UuYyhiLGMsZCk6ZS5jYWxsKG51bGwsYixjLGQpO3Rocm93IHhiKFwiSVRyYW5zaWVudEFzc29jaWF0aXZlLi1hc3NvYyFcIixiKTt9LEFjPWZ1bmN0aW9uIEFjKGIsYyxkKXtpZihudWxsIT1iJiZudWxsIT1iLk5jKXJldHVybiBiLk5jKDAsYyxkKTt2YXIgZT1BY1tiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPVxuZSlyZXR1cm4gZS5jP2UuYyhiLGMsZCk6ZS5jYWxsKG51bGwsYixjLGQpO2U9QWMuXztpZihudWxsIT1lKXJldHVybiBlLmM/ZS5jKGIsYyxkKTplLmNhbGwobnVsbCxiLGMsZCk7dGhyb3cgeGIoXCJJVHJhbnNpZW50VmVjdG9yLi1hc3NvYy1uIVwiLGIpO30sQmM9ZnVuY3Rpb24gQmMoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5KYylyZXR1cm4gYi5KYygpO3ZhciBjPUJjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPUJjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklDaHVuay4tZHJvcC1maXJzdFwiLGIpO30sQ2M9ZnVuY3Rpb24gQ2MoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi50YylyZXR1cm4gYi50YyhiKTt2YXIgYz1DY1tiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1DYy5fO2lmKG51bGwhPVxuYylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklDaHVua2VkU2VxLi1jaHVua2VkLWZpcnN0XCIsYik7fSxEYz1mdW5jdGlvbiBEYyhiKXtpZihudWxsIT1iJiZudWxsIT1iLnVjKXJldHVybiBiLnVjKGIpO3ZhciBjPURjW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPURjLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklDaHVua2VkU2VxLi1jaHVua2VkLXJlc3RcIixiKTt9LEVjPWZ1bmN0aW9uIEVjKGIpe2lmKG51bGwhPWImJm51bGwhPWIuc2MpcmV0dXJuIGIuc2MoYik7dmFyIGM9RWNbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9RWMuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSUNodW5rZWROZXh0Li1jaHVua2VkLW5leHRcIixcbmIpO30sRmM9ZnVuY3Rpb24gRmMoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5aYilyZXR1cm4gYi5aYihiKTt2YXIgYz1GY1tiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1GYy5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJTmFtZWQuLW5hbWVcIixiKTt9LEdjPWZ1bmN0aW9uIEdjKGIpe2lmKG51bGwhPWImJm51bGwhPWIuJGIpcmV0dXJuIGIuJGIoYik7dmFyIGM9R2NbYmEobnVsbD09Yj9udWxsOmIpXTtpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO2M9R2MuXztpZihudWxsIT1jKXJldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpO3Rocm93IHhiKFwiSU5hbWVkLi1uYW1lc3BhY2VcIixiKTt9LEljPWZ1bmN0aW9uIEljKGIsYyl7aWYobnVsbCE9YiYmbnVsbCE9Yi5oZClyZXR1cm4gYi5oZChiLGMpO3ZhciBkPUljW2JhKG51bGw9PVxuYj9udWxsOmIpXTtpZihudWxsIT1kKXJldHVybiBkLmI/ZC5iKGIsYyk6ZC5jYWxsKG51bGwsYixjKTtkPUljLl87aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7dGhyb3cgeGIoXCJJUmVzZXQuLXJlc2V0IVwiLGIpO30sSmM9ZnVuY3Rpb24gSmMoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBKYy5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gSmMuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7Y2FzZSA0OnJldHVybiBKYy5DKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSk7Y2FzZSA1OnJldHVybiBKYy5MKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxcbmFyZ3VtZW50c1s0XSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGMubGVuZ3RoKV0uam9pbihcIlwiKSk7fX07SmMuYj1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWEmJm51bGwhPWEua2QpcmV0dXJuIGEua2QoYSxiKTt2YXIgYz1KY1tiYShudWxsPT1hP251bGw6YSldO2lmKG51bGwhPWMpcmV0dXJuIGMuYj9jLmIoYSxiKTpjLmNhbGwobnVsbCxhLGIpO2M9SmMuXztpZihudWxsIT1jKXJldHVybiBjLmI/Yy5iKGEsYik6Yy5jYWxsKG51bGwsYSxiKTt0aHJvdyB4YihcIklTd2FwLi1zd2FwIVwiLGEpO307XG5KYy5jPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT1hJiZudWxsIT1hLmxkKXJldHVybiBhLmxkKGEsYixjKTt2YXIgZD1KY1tiYShudWxsPT1hP251bGw6YSldO2lmKG51bGwhPWQpcmV0dXJuIGQuYz9kLmMoYSxiLGMpOmQuY2FsbChudWxsLGEsYixjKTtkPUpjLl87aWYobnVsbCE9ZClyZXR1cm4gZC5jP2QuYyhhLGIsYyk6ZC5jYWxsKG51bGwsYSxiLGMpO3Rocm93IHhiKFwiSVN3YXAuLXN3YXAhXCIsYSk7fTtKYy5DPWZ1bmN0aW9uKGEsYixjLGQpe2lmKG51bGwhPWEmJm51bGwhPWEubWQpcmV0dXJuIGEubWQoYSxiLGMsZCk7dmFyIGU9SmNbYmEobnVsbD09YT9udWxsOmEpXTtpZihudWxsIT1lKXJldHVybiBlLkM/ZS5DKGEsYixjLGQpOmUuY2FsbChudWxsLGEsYixjLGQpO2U9SmMuXztpZihudWxsIT1lKXJldHVybiBlLkM/ZS5DKGEsYixjLGQpOmUuY2FsbChudWxsLGEsYixjLGQpO3Rocm93IHhiKFwiSVN3YXAuLXN3YXAhXCIsYSk7fTtcbkpjLkw9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihudWxsIT1hJiZudWxsIT1hLm5kKXJldHVybiBhLm5kKGEsYixjLGQsZSk7dmFyIGY9SmNbYmEobnVsbD09YT9udWxsOmEpXTtpZihudWxsIT1mKXJldHVybiBmLkw/Zi5MKGEsYixjLGQsZSk6Zi5jYWxsKG51bGwsYSxiLGMsZCxlKTtmPUpjLl87aWYobnVsbCE9ZilyZXR1cm4gZi5MP2YuTChhLGIsYyxkLGUpOmYuY2FsbChudWxsLGEsYixjLGQsZSk7dGhyb3cgeGIoXCJJU3dhcC4tc3dhcCFcIixhKTt9O0pjLkI9NTt2YXIgS2M9ZnVuY3Rpb24gS2MoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5DYSlyZXR1cm4gYi5DYShiKTt2YXIgYz1LY1tiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1LYy5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJSXRlcmFibGUuLWl0ZXJhdG9yXCIsYik7fTtcbmZ1bmN0aW9uIExjKGEpe3RoaXMuQ2Q9YTt0aGlzLm89MTA3Mzc0MTgyNDt0aGlzLkc9MH1MYy5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5DZC5hcHBlbmQoYil9O0xjLnByb3RvdHlwZS5tYj1mdW5jdGlvbigpe3JldHVybiBudWxsfTtmdW5jdGlvbiBNYyhhKXt2YXIgYj1uZXcgeWEsYz1uZXcgTGMoYik7YS5VKG51bGwsYyxrYigpKTtjLm1iKG51bGwpO3JldHVyblwiXCIrdChiKX12YXIgTmM9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNYXRoLmltdWwmJjAhPT1NYXRoLmltdWwoNDI5NDk2NzI5NSw1KT9mdW5jdGlvbihhLGIpe3JldHVybiBNYXRoLmltdWwoYSxiKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hJjY1NTM1LGQ9YiY2NTUzNTtyZXR1cm4gYypkKygoYT4+PjE2JjY1NTM1KSpkK2MqKGI+Pj4xNiY2NTUzNSk8PDE2Pj4+MCl8MH07XG5mdW5jdGlvbiBPYyhhKXthPU5jKGF8MCwtODYyMDQ4OTQzKTtyZXR1cm4gTmMoYTw8MTV8YT4+Pi0xNSw0NjE4NDU5MDcpfWZ1bmN0aW9uIFBjKGEsYil7dmFyIGM9KGF8MCleKGJ8MCk7cmV0dXJuIE5jKGM8PDEzfGM+Pj4tMTMsNSkrLTQzMDY3NTEwMHwwfWZ1bmN0aW9uIFFjKGEsYil7dmFyIGM9KGF8MCleYixjPU5jKGNeYz4+PjE2LC0yMDQ4MTQ0Nzg5KSxjPU5jKGNeYz4+PjEzLC0xMDI4NDc3Mzg3KTtyZXR1cm4gY15jPj4+MTZ9dmFyIFJjPXt9LFNjPTA7XG5mdW5jdGlvbiBUYyhhKXsyNTU8U2MmJihSYz17fSxTYz0wKTtpZihudWxsPT1hKXJldHVybiAwO3ZhciBiPVJjW2FdO2lmKFwibnVtYmVyXCIhPT10eXBlb2YgYil7YTppZihudWxsIT1hKWlmKGI9YS5sZW5ndGgsMDxiKWZvcih2YXIgYz0wLGQ9MDs7KWlmKGM8Yil2YXIgZT1jKzEsZD1OYygzMSxkKSthLmNoYXJDb2RlQXQoYyksYz1lO2Vsc2V7Yj1kO2JyZWFrIGF9ZWxzZSBiPTA7ZWxzZSBiPTA7UmNbYV09YjtTYys9MX1yZXR1cm4gYT1ifVxuZnVuY3Rpb24gVWMoYSl7aWYobnVsbCE9YSYmKGEubyY0MTk0MzA0fHxtPT09YS5HZCkpcmV0dXJuIGEuUyhudWxsKTtpZihcIm51bWJlclwiPT09dHlwZW9mIGEpe2lmKHIoaXNGaW5pdGUoYSkpKXJldHVybiBNYXRoLmZsb29yKGEpJTIxNDc0ODM2NDc7c3dpdGNoKGEpe2Nhc2UgSW5maW5pdHk6cmV0dXJuIDIxNDY0MzUwNzI7Y2FzZSAtSW5maW5pdHk6cmV0dXJuLTEwNDg1NzY7ZGVmYXVsdDpyZXR1cm4gMjE0Njk1OTM2MH19ZWxzZSByZXR1cm4hMD09PWE/YT0xMjMxOiExPT09YT9hPTEyMzc6XCJzdHJpbmdcIj09PXR5cGVvZiBhPyhhPVRjKGEpLDAhPT1hJiYoYT1PYyhhKSxhPVBjKDAsYSksYT1RYyhhLDQpKSk6YT1hIGluc3RhbmNlb2YgRGF0ZT9hLnZhbHVlT2YoKTpudWxsPT1hPzA6bGMoYSksYX1cbmZ1bmN0aW9uIFZjKGEpe3ZhciBiO2I9YS5uYW1lO3ZhciBjO2E6e2M9MTtmb3IodmFyIGQ9MDs7KWlmKGM8Yi5sZW5ndGgpe3ZhciBlPWMrMixkPVBjKGQsT2MoYi5jaGFyQ29kZUF0KGMtMSl8Yi5jaGFyQ29kZUF0KGMpPDwxNikpO2M9ZX1lbHNle2M9ZDticmVhayBhfX1jPTE9PT0oYi5sZW5ndGgmMSk/Y15PYyhiLmNoYXJDb2RlQXQoYi5sZW5ndGgtMSkpOmM7Yj1RYyhjLE5jKDIsYi5sZW5ndGgpKTthPVRjKGEuamMpO3JldHVybiBiXmErMjY1NDQzNTc2OSsoYjw8NikrKGI+PjIpfWZ1bmN0aW9uIHooYSxiLGMsZCxlKXt0aGlzLmpjPWE7dGhpcy5uYW1lPWI7dGhpcy5FYj1jO3RoaXMuT2I9ZDt0aGlzLkdhPWU7dGhpcy5vPTIxNTQxNjgzMjE7dGhpcy5HPTQwOTZ9aD16LnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWJ9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtcbmguRj1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluc3RhbmNlb2Ygej90aGlzLkViPT09Yi5FYjohMX07aC5jYWxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsYyl7cmV0dXJuIEIuYz9CLmMoYix0aGlzLGMpOkIuY2FsbChudWxsLGIsdGhpcyxjKX1mdW5jdGlvbiBiKGEsYil7cmV0dXJuIEIuYj9CLmIoYix0aGlzKTpCLmNhbGwobnVsbCxiLHRoaXMpfXZhciBjPW51bGwsYz1mdW5jdGlvbihjLGUsZil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gYi5jYWxsKHRoaXMsMCxlKTtjYXNlIDM6cmV0dXJuIGEuY2FsbCh0aGlzLDAsZSxmKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Yy5iPWI7Yy5jPWE7cmV0dXJuIGN9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O1xuaC5hPWZ1bmN0aW9uKGEpe3JldHVybiBCLmI/Qi5iKGEsdGhpcyk6Qi5jYWxsKG51bGwsYSx0aGlzKX07aC5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEIuYz9CLmMoYSx0aGlzLGIpOkIuY2FsbChudWxsLGEsdGhpcyxiKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgeih0aGlzLmpjLHRoaXMubmFtZSx0aGlzLkViLHRoaXMuT2IsYil9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuT2I7cmV0dXJuIG51bGwhPWE/YTp0aGlzLk9iPWE9VmModGhpcyl9O2guWmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfTtoLiRiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuamN9O2guVT1mdW5jdGlvbihhLGIpe3JldHVybiB4KGIsdGhpcy5FYil9O1xudmFyIFdjPWZ1bmN0aW9uIFdjKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gV2MuYShhcmd1bWVudHNbMF0pO2Nhc2UgMjpyZXR1cm4gV2MuYihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYy5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fTtXYy5hPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiB6KXJldHVybiBhO3ZhciBiPWEuaW5kZXhPZihcIi9cIik7cmV0dXJuIDE+Yj9XYy5iKG51bGwsYSk6V2MuYihhLnN1YnN0cmluZygwLGIpLGEuc3Vic3RyaW5nKGIrMSxhLmxlbmd0aCkpfTtXYy5iPWZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbCE9YT9bdChhKSx0KFwiL1wiKSx0KGIpXS5qb2luKFwiXCIpOmI7cmV0dXJuIG5ldyB6KGEsYixjLG51bGwsbnVsbCl9O1xuV2MuQj0yO2Z1bmN0aW9uIFhjKGEsYixjKXt0aGlzLmk9YTt0aGlzLlZiPWI7dGhpcy5HYT1jO3RoaXMubz02NzE3NDQxO3RoaXMuRz0wfWg9WGMucHJvdG90eXBlO2gudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5bdChcIiMnXCIpLHQodGhpcy5WYildLmpvaW4oXCJcIil9O2guWGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgWGModGhpcy5pLHRoaXMuVmIsYil9O2guRj1mdW5jdGlvbihhLGIpe2lmKGIgaW5zdGFuY2VvZiBYYyl7dmFyIGM9dGhpcy5WYixkPWIuVmI7cmV0dXJuIEMuYj9DLmIoYyxkKTpDLmNhbGwobnVsbCxjLGQpfXJldHVybiExfTtoLlM9ZnVuY3Rpb24oKXtyZXR1cm4gVmModGhpcy5WYil9O1xuaC5jYWxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxVLEcsUix2YSl7YT10aGlzO2E9YS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKTtyZXR1cm4gWWMubGI/WWMubGIoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssVSxHLFIsdmEpOlljLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxVLEcsUix2YSl9ZnVuY3Rpb24gYihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxVLEcsUil7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFUsRyxSKX1mdW5jdGlvbiBjKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFUsRyl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLFxuZyxrLGwscCx1LHYsdyx5LEEsRCxILEssVSxHKX1mdW5jdGlvbiBkKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFUpe2E9dGhpcztyZXR1cm4oYS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxVKX1mdW5jdGlvbiBlKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEspfWZ1bmN0aW9uIGYoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKX1mdW5jdGlvbiBnKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpe2E9dGhpcztyZXR1cm4oYS5pLmg/XG5hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpfWZ1bmN0aW9uIGsoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpe2E9dGhpcztyZXR1cm4oYS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSl9ZnVuY3Rpb24gbChhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpe2E9dGhpcztyZXR1cm4oYS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpfWZ1bmN0aW9uIHAoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcpfWZ1bmN0aW9uIHUoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYpe2E9dGhpcztyZXR1cm4oYS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKSkuY2FsbChudWxsLFxuYixjLGQsZSxmLGcsayxsLHAsdSx2KX1mdW5jdGlvbiB2KGEsYixjLGQsZSxmLGcsayxsLHAsdSl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSl9ZnVuY3Rpb24gdyhhLGIsYyxkLGUsZixnLGssbCxwKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCl9ZnVuY3Rpb24geShhLGIsYyxkLGUsZixnLGssbCl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsKX1mdW5jdGlvbiBBKGEsYixjLGQsZSxmLGcsayl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayl9ZnVuY3Rpb24gRChhLGIsYyxkLGUsZixnKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxcbmIsYyxkLGUsZixnKX1mdW5jdGlvbiBIKGEsYixjLGQsZSxmKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMsZCxlLGYpfWZ1bmN0aW9uIEsoYSxiLGMsZCxlKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMsZCxlKX1mdW5jdGlvbiBSKGEsYixjLGQpe2E9dGhpcztyZXR1cm4oYS5pLmg/YS5pLmgoKTphLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGIsYyxkKX1mdW5jdGlvbiBVKGEsYixjKXthPXRoaXM7cmV0dXJuKGEuaS5oP2EuaS5oKCk6YS5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxiLGMpfWZ1bmN0aW9uIHZhKGEsYil7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYil9ZnVuY3Rpb24gbGIoYSl7YT10aGlzO3JldHVybihhLmkuaD9hLmkuaCgpOmEuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwpfXZhciBHPW51bGwsRz1cbmZ1bmN0aW9uKGFhLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsRyxhYixmYixyYixCYixPYixpYyxIYyxNZCxmZixoaCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gbGIuY2FsbCh0aGlzLGFhKTtjYXNlIDI6cmV0dXJuIHZhLmNhbGwodGhpcyxhYSxkYSk7Y2FzZSAzOnJldHVybiBVLmNhbGwodGhpcyxhYSxkYSxoYSk7Y2FzZSA0OnJldHVybiBSLmNhbGwodGhpcyxhYSxkYSxoYSxQKTtjYXNlIDU6cmV0dXJuIEsuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EpO2Nhc2UgNjpyZXR1cm4gSC5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSk7Y2FzZSA3OnJldHVybiBELmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLFphKTtjYXNlIDg6cmV0dXJuIEEuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsWmEsemEpO2Nhc2UgOTpyZXR1cm4geS5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSk7Y2FzZSAxMDpyZXR1cm4gdy5jYWxsKHRoaXMsYWEsXG5kYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhKTtjYXNlIDExOnJldHVybiB2LmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hKTtjYXNlIDEyOnJldHVybiB1LmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEcpO2Nhc2UgMTM6cmV0dXJuIHAuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsRyxhYik7Y2FzZSAxNDpyZXR1cm4gbC5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxHLGFiLGZiKTtjYXNlIDE1OnJldHVybiBrLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEcsYWIsZmIscmIpO2Nhc2UgMTY6cmV0dXJuIGcuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsRyxhYixmYixyYixCYik7Y2FzZSAxNzpyZXR1cm4gZi5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxHLGFiLGZiLHJiLEJiLE9iKTtcbmNhc2UgMTg6cmV0dXJuIGUuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsRyxhYixmYixyYixCYixPYixpYyk7Y2FzZSAxOTpyZXR1cm4gZC5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxHLGFiLGZiLHJiLEJiLE9iLGljLEhjKTtjYXNlIDIwOnJldHVybiBjLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEcsYWIsZmIscmIsQmIsT2IsaWMsSGMsTWQpO2Nhc2UgMjE6cmV0dXJuIGIuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsRyxhYixmYixyYixCYixPYixpYyxIYyxNZCxmZik7Y2FzZSAyMjpyZXR1cm4gYS5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxHLGFiLGZiLHJiLEJiLE9iLGljLEhjLE1kLGZmLGhoKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Ry5hPWxiO0cuYj12YTtHLmM9VTtHLkM9XG5SO0cuTD1LO0cuaGE9SDtHLmphPUQ7Ry54YT1BO0cueWE9eTtHLm1hPXc7Ry5uYT12O0cub2E9dTtHLnBhPXA7Ry5xYT1sO0cucmE9aztHLnNhPWc7Ry50YT1mO0cudWE9ZTtHLnZhPWQ7Ry53YT1jO0cuWWI9YjtHLmxiPWE7cmV0dXJuIEd9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O2guaD1mdW5jdGlvbigpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwpfTtoLmE9ZnVuY3Rpb24oYSl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhKX07aC5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIpfTtcbmguYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyl9O2guQz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4odGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGEsYixjLGQpfTtoLkw9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4odGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGEsYixjLGQsZSl9O2guaGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYpfTtoLmphPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyl9O1xuaC54YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGspe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrKX07aC55YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCl9O2gubWE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwKX07aC5uYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1KX07XG5oLm9hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KXtyZXR1cm4odGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KX07aC5wYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KXtyZXR1cm4odGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcpfTtoLnFhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpfTtcbmgucmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpfTtoLnNhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCl9O2gudGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKXtyZXR1cm4odGhpcy5pLmg/dGhpcy5pLmgoKTp0aGlzLmkuY2FsbChudWxsKSkuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCl9O1xuaC51YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyl7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyl9O2gudmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUil7cmV0dXJuKHRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCkpLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSKX07aC53YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUpe3JldHVybih0aGlzLmkuaD90aGlzLmkuaCgpOnRoaXMuaS5jYWxsKG51bGwpKS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVKX07XG5oLlliPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSx2YSl7dmFyIGxiPXRoaXMuaS5oP3RoaXMuaS5oKCk6dGhpcy5pLmNhbGwobnVsbCk7cmV0dXJuIFljLmxiP1ljLmxiKGxiLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSx2YSk6WWMuY2FsbChudWxsLGxiLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSx2YSl9O2Z1bmN0aW9uIEUoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihudWxsIT1hJiYoYS5vJjgzODg2MDh8fG09PT1hLmpkKSlyZXR1cm4gYS5ZKG51bGwpO2lmKHNiKGEpfHxcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOm5ldyBGKGEsMCxudWxsKTtpZih2YihtYyxhKSlyZXR1cm4gbmMoYSk7dGhyb3cgRXJyb3IoW3QoYSksdChcIiBpcyBub3QgSVNlcWFibGVcIildLmpvaW4oXCJcIikpO31cbmZ1bmN0aW9uIEkoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihudWxsIT1hJiYoYS5vJjY0fHxtPT09YS5IYSkpcmV0dXJuIGEuQWEobnVsbCk7YT1FKGEpO3JldHVybiBudWxsPT1hP251bGw6TGIoYSl9ZnVuY3Rpb24gWmMoYSl7cmV0dXJuIG51bGwhPWE/bnVsbCE9YSYmKGEubyY2NHx8bT09PWEuSGEpP2EuT2EobnVsbCk6KGE9RShhKSk/TWIoYSk6JGM6JGN9ZnVuY3Rpb24gSihhKXtyZXR1cm4gbnVsbD09YT9udWxsOm51bGwhPWEmJihhLm8mMTI4fHxtPT09YS5tYyk/YS5LYShudWxsKTpFKFpjKGEpKX1cbnZhciBDPWZ1bmN0aW9uIEMoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBDLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIEMuYihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtkZWZhdWx0OnJldHVybiBDLmYoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxuZXcgRihjLnNsaWNlKDIpLDAsbnVsbCkpfX07Qy5hPWZ1bmN0aW9uKCl7cmV0dXJuITB9O0MuYj1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hP251bGw9PWI6YT09PWJ8fGtjKGEsYil9O0MuZj1mdW5jdGlvbihhLGIsYyl7Zm9yKDs7KWlmKEMuYihhLGIpKWlmKEooYykpYT1iLGI9SShjKSxjPUooYyk7ZWxzZSByZXR1cm4gQy5iKGIsSShjKSk7ZWxzZSByZXR1cm4hMX07XG5DLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO2M9SihjKTtyZXR1cm4gQy5mKGIsYSxjKX07Qy5CPTI7ZnVuY3Rpb24gYWQoYSl7dGhpcy5QPWF9YWQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLlApe3ZhciBhPUkodGhpcy5QKTt0aGlzLlA9Sih0aGlzLlApO3JldHVybnt2YWx1ZTphLGRvbmU6ITF9fXJldHVybnt2YWx1ZTpudWxsLGRvbmU6ITB9fTtmdW5jdGlvbiBiZChhKXtyZXR1cm4gbmV3IGFkKEUoYSkpfWZ1bmN0aW9uIGNkKGEsYil7dmFyIGM9T2MoYSksYz1QYygwLGMpO3JldHVybiBRYyhjLGIpfWZ1bmN0aW9uIGRkKGEpe3ZhciBiPTAsYz0xO2ZvcihhPUUoYSk7OylpZihudWxsIT1hKWIrPTEsYz1OYygzMSxjKStVYyhJKGEpKXwwLGE9SihhKTtlbHNlIHJldHVybiBjZChjLGIpfXZhciBlZD1jZCgxLDApO1xuZnVuY3Rpb24gZmQoYSl7dmFyIGI9MCxjPTA7Zm9yKGE9RShhKTs7KWlmKG51bGwhPWEpYis9MSxjPWMrVWMoSShhKSl8MCxhPUooYSk7ZWxzZSByZXR1cm4gY2QoYyxiKX12YXIgZ2Q9Y2QoMCwwKTtEYltcIm51bGxcIl09ITA7RWJbXCJudWxsXCJdPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O0RhdGUucHJvdG90eXBlLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIERhdGUmJnRoaXMudmFsdWVPZigpPT09Yi52YWx1ZU9mKCl9O2tjLm51bWJlcj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07ZWNbXCJmdW5jdGlvblwiXT0hMDtmY1tcImZ1bmN0aW9uXCJdPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2xjLl89ZnVuY3Rpb24oYSl7cmV0dXJuIGNhKGEpfTtmdW5jdGlvbiBoZChhKXtyZXR1cm4gYSsxfWZ1bmN0aW9uIEwoYSl7cmV0dXJuIGRjKGEpfVxuZnVuY3Rpb24gaWQoYSxiKXt2YXIgYz1FYihhKTtpZigwPT09YylyZXR1cm4gYi5oP2IuaCgpOmIuY2FsbChudWxsKTtmb3IodmFyIGQ9SmIuYihhLDApLGU9MTs7KWlmKGU8Yyl2YXIgZj1KYi5iKGEsZSksZD1iLmI/Yi5iKGQsZik6Yi5jYWxsKG51bGwsZCxmKSxlPWUrMTtlbHNlIHJldHVybiBkfWZ1bmN0aW9uIGpkKGEsYixjKXt2YXIgZD1FYihhKSxlPWM7Zm9yKGM9MDs7KWlmKGM8ZCl7dmFyIGY9SmIuYihhLGMpLGU9Yi5iP2IuYihlLGYpOmIuY2FsbChudWxsLGUsZik7Yys9MX1lbHNlIHJldHVybiBlfWZ1bmN0aW9uIGtkKGEsYil7dmFyIGM9YS5sZW5ndGg7aWYoMD09PWEubGVuZ3RoKXJldHVybiBiLmg/Yi5oKCk6Yi5jYWxsKG51bGwpO2Zvcih2YXIgZD1hWzBdLGU9MTs7KWlmKGU8Yyl2YXIgZj1hW2VdLGQ9Yi5iP2IuYihkLGYpOmIuY2FsbChudWxsLGQsZiksZT1lKzE7ZWxzZSByZXR1cm4gZH1cbmZ1bmN0aW9uIGxkKGEsYixjKXt2YXIgZD1hLmxlbmd0aCxlPWM7Zm9yKGM9MDs7KWlmKGM8ZCl7dmFyIGY9YVtjXSxlPWIuYj9iLmIoZSxmKTpiLmNhbGwobnVsbCxlLGYpO2MrPTF9ZWxzZSByZXR1cm4gZX1mdW5jdGlvbiBtZChhLGIsYyxkKXtmb3IodmFyIGU9YS5sZW5ndGg7OylpZihkPGUpe3ZhciBmPWFbZF07Yz1iLmI/Yi5iKGMsZik6Yi5jYWxsKG51bGwsYyxmKTtkKz0xfWVsc2UgcmV0dXJuIGN9ZnVuY3Rpb24gbmQoYSl7cmV0dXJuIG51bGwhPWE/YS5vJjJ8fG09PT1hLlljPyEwOmEubz8hMTp2YihEYixhKTp2YihEYixhKX1mdW5jdGlvbiBvZChhKXtyZXR1cm4gbnVsbCE9YT9hLm8mMTZ8fG09PT1hLkxjPyEwOmEubz8hMTp2YihJYixhKTp2YihJYixhKX1cbmZ1bmN0aW9uIHBkKGEsYixjKXt2YXIgZD1NLmE/TS5hKGEpOk0uY2FsbChudWxsLGEpO2lmKGM+PWQpcmV0dXJuLTE7ISgwPGMpJiYwPmMmJihjKz1kLGM9MD5jPzA6Yyk7Zm9yKDs7KWlmKGM8ZCl7aWYoQy5iKHFkP3FkKGEsYyk6cmQuY2FsbChudWxsLGEsYyksYikpcmV0dXJuIGM7Yys9MX1lbHNlIHJldHVybi0xfWZ1bmN0aW9uIHNkKGEsYixjKXt2YXIgZD1NLmE/TS5hKGEpOk0uY2FsbChudWxsLGEpO2lmKDA9PT1kKXJldHVybi0xOzA8Yz8oLS1kLGM9ZDxjP2Q6Yyk6Yz0wPmM/ZCtjOmM7Zm9yKDs7KWlmKDA8PWMpe2lmKEMuYihxZD9xZChhLGMpOnJkLmNhbGwobnVsbCxhLGMpLGIpKXJldHVybiBjOy0tY31lbHNlIHJldHVybi0xfWZ1bmN0aW9uIHRkKGEsYil7dGhpcy5nPWE7dGhpcy51PWJ9dGQucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudTx0aGlzLmcubGVuZ3RofTtcbnRkLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nW3RoaXMudV07dGhpcy51Kz0xO3JldHVybiBhfTtmdW5jdGlvbiBGKGEsYixjKXt0aGlzLmc9YTt0aGlzLnU9Yjt0aGlzLkQ9Yzt0aGlzLm89MTY2NTkyNzY2O3RoaXMuRz04MTkyfWg9Ri5wcm90b3R5cGU7aC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBNYyh0aGlzKX07aC5lcXVpdj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GKG51bGwsYSl9O2guaW5kZXhPZj1mdW5jdGlvbigpe3ZhciBhPW51bGwsYT1mdW5jdGlvbihhLGMpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHBkKHRoaXMsYSwwKTtjYXNlIDI6cmV0dXJuIHBkKHRoaXMsYSxjKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307YS5hPWZ1bmN0aW9uKGEpe3JldHVybiBwZCh0aGlzLGEsMCl9O2EuYj1mdW5jdGlvbihhLGMpe3JldHVybiBwZCh0aGlzLGEsYyl9O3JldHVybiBhfSgpO1xuaC5sYXN0SW5kZXhPZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIHNkKHRoaXMsYSxNLmE/TS5hKHRoaXMpOk0uY2FsbChudWxsLHRoaXMpKX12YXIgYj1udWxsLGI9ZnVuY3Rpb24oYixkKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBhLmNhbGwodGhpcyxiKTtjYXNlIDI6cmV0dXJuIHNkKHRoaXMsYixkKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Yi5hPWE7Yi5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHNkKHRoaXMsYSxiKX07cmV0dXJuIGJ9KCk7aC5jYT1mdW5jdGlvbihhLGIpe3ZhciBjPWIrdGhpcy51O3JldHVybiBjPHRoaXMuZy5sZW5ndGg/dGhpcy5nW2NdOm51bGx9O2guUWE9ZnVuY3Rpb24oYSxiLGMpe2E9Yit0aGlzLnU7cmV0dXJuIGE8dGhpcy5nLmxlbmd0aD90aGlzLmdbYV06Y307aC5DYT1mdW5jdGlvbigpe3JldHVybiBuZXcgdGQodGhpcy5nLHRoaXMudSl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O1xuaC5LYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnUrMTx0aGlzLmcubGVuZ3RoP25ldyBGKHRoaXMuZyx0aGlzLnUrMSxudWxsKTpudWxsfTtoLlo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmcubGVuZ3RoLXRoaXMudTtyZXR1cm4gMD5hPzA6YX07aC5uYz1mdW5jdGlvbigpe3ZhciBhPUViKHRoaXMpO3JldHVybiAwPGE/bmV3IHVkKHRoaXMsYS0xLG51bGwpOm51bGx9O2guUz1mdW5jdGlvbigpe3JldHVybiBkZCh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZkLmI/dmQuYih0aGlzLGIpOnZkLmNhbGwobnVsbCx0aGlzLGIpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuICRjfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG1kKHRoaXMuZyxiLHRoaXMuZ1t0aGlzLnVdLHRoaXMudSsxKX07aC5FYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG1kKHRoaXMuZyxiLGMsdGhpcy51KX07aC5BYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdbdGhpcy51XX07XG5oLk9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudSsxPHRoaXMuZy5sZW5ndGg/bmV3IEYodGhpcy5nLHRoaXMudSsxLG51bGwpOiRjfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51PHRoaXMuZy5sZW5ndGg/dGhpczpudWxsfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEYodGhpcy5nLHRoaXMudSxiKX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHdkLmI/d2QuYihiLHRoaXMpOndkLmNhbGwobnVsbCxiLHRoaXMpfTtGLnByb3RvdHlwZVt6Yl09ZnVuY3Rpb24oKXtyZXR1cm4gYmQodGhpcyl9O2Z1bmN0aW9uIHhkKGEsYil7cmV0dXJuIGI8YS5sZW5ndGg/bmV3IEYoYSxiLG51bGwpOm51bGx9XG5mdW5jdGlvbiBOKGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4geGQoYXJndW1lbnRzWzBdLDApO2Nhc2UgMjpyZXR1cm4geGQoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGIubGVuZ3RoKV0uam9pbihcIlwiKSk7fX1mdW5jdGlvbiB1ZChhLGIsYyl7dGhpcy5sYz1hO3RoaXMudT1iO3RoaXMuRD1jO3RoaXMubz0zMjM3NDk5MDt0aGlzLkc9ODE5Mn1oPXVkLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07XG5oLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTS5hP00uYSh0aGlzKTpNLmNhbGwobnVsbCx0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guS2E9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLnU/bmV3IHVkKHRoaXMubGMsdGhpcy51LTEsbnVsbCk6bnVsbH07aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudSsxfTtoLlM9ZnVuY3Rpb24oKXtyZXR1cm4gZGQodGhpcyl9O1xuaC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZkLmI/dmQuYih0aGlzLGIpOnZkLmNhbGwobnVsbCx0aGlzLGIpfTtoLnphPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5EO3JldHVybiB5ZC5iP3lkLmIoJGMsYSk6eWQuY2FsbChudWxsLCRjLGEpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpkP3pkKGIsdGhpcyk6QWQuY2FsbChudWxsLGIsdGhpcyl9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCZD9CZChiLGMsdGhpcyk6QWQuY2FsbChudWxsLGIsYyx0aGlzKX07aC5BYT1mdW5jdGlvbigpe3JldHVybiBKYi5iKHRoaXMubGMsdGhpcy51KX07aC5PYT1mdW5jdGlvbigpe3JldHVybiAwPHRoaXMudT9uZXcgdWQodGhpcy5sYyx0aGlzLnUtMSxudWxsKTokY307aC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgdWQodGhpcy5sYyx0aGlzLnUsYil9O1xuaC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHdkLmI/d2QuYihiLHRoaXMpOndkLmNhbGwobnVsbCxiLHRoaXMpfTt1ZC5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtmdW5jdGlvbiBDZChhKXtyZXR1cm4gSShKKGEpKX1mdW5jdGlvbiBEZChhKXtmb3IoOzspe3ZhciBiPUooYSk7aWYobnVsbCE9YilhPWI7ZWxzZSByZXR1cm4gSShhKX19a2MuXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07XG52YXIgRWQ9ZnVuY3Rpb24gRWQoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBFZC5oKCk7Y2FzZSAxOnJldHVybiBFZC5hKGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiBFZC5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2RlZmF1bHQ6cmV0dXJuIEVkLmYoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxuZXcgRihjLnNsaWNlKDIpLDAsbnVsbCkpfX07RWQuaD1mdW5jdGlvbigpe3JldHVybiBGZH07RWQuYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07RWQuYj1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT1hP0hiKGEsYik6SGIoJGMsYil9O0VkLmY9ZnVuY3Rpb24oYSxiLGMpe2Zvcig7OylpZihyKGMpKWE9RWQuYihhLGIpLGI9SShjKSxjPUooYyk7ZWxzZSByZXR1cm4gRWQuYihhLGIpfTtcbkVkLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO2M9SihjKTtyZXR1cm4gRWQuZihiLGEsYyl9O0VkLkI9MjtmdW5jdGlvbiBNKGEpe2lmKG51bGwhPWEpaWYobnVsbCE9YSYmKGEubyYyfHxtPT09YS5ZYykpYT1hLloobnVsbCk7ZWxzZSBpZihzYihhKSlhPWEubGVuZ3RoO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWE9YS5sZW5ndGg7ZWxzZSBpZihudWxsIT1hJiYoYS5vJjgzODg2MDh8fG09PT1hLmpkKSlhOnthPUUoYSk7Zm9yKHZhciBiPTA7Oyl7aWYobmQoYSkpe2E9YitFYihhKTticmVhayBhfWE9SihhKTtiKz0xfX1lbHNlIGE9RWIoYSk7ZWxzZSBhPTA7cmV0dXJuIGF9ZnVuY3Rpb24gR2QoYSxiLGMpe2Zvcig7Oyl7aWYobnVsbD09YSlyZXR1cm4gYztpZigwPT09YilyZXR1cm4gRShhKT9JKGEpOmM7aWYob2QoYSkpcmV0dXJuIEpiLmMoYSxiLGMpO2lmKEUoYSkpYT1KKGEpLC0tYjtlbHNlIHJldHVybiBjfX1cbmZ1bmN0aW9uIHJkKGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gcWQoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7Y2FzZSAzOnJldHVybiBPKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYi5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fVxuZnVuY3Rpb24gcWQoYSxiKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGIpdGhyb3cgRXJyb3IoXCJJbmRleCBhcmd1bWVudCB0byBudGggbXVzdCBiZSBhIG51bWJlclwiKTtpZihudWxsPT1hKXJldHVybiBhO2lmKG51bGwhPWEmJihhLm8mMTZ8fG09PT1hLkxjKSlyZXR1cm4gYS5jYShudWxsLGIpO2lmKHNiKGEpKXtpZigwPD1iJiZiPGEubGVuZ3RoKXJldHVybiBhW2JdO3Rocm93IEVycm9yKFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKTt9aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXtpZigwPD1iJiZiPGEubGVuZ3RoKXJldHVybiBhLmNoYXJBdChiKTt0aHJvdyBFcnJvcihcIkluZGV4IG91dCBvZiBib3VuZHNcIik7fWlmKG51bGwhPWEmJihhLm8mNjR8fG09PT1hLkhhKSl7dmFyIGM7YTp7Yz1hO2Zvcih2YXIgZD1iOzspe2lmKG51bGw9PWMpdGhyb3cgRXJyb3IoXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpO2lmKDA9PT1kKXtpZihFKGMpKXtjPUkoYyk7YnJlYWsgYX10aHJvdyBFcnJvcihcIkluZGV4IG91dCBvZiBib3VuZHNcIik7XG59aWYob2QoYykpe2M9SmIuYihjLGQpO2JyZWFrIGF9aWYoRShjKSljPUooYyksLS1kO2Vsc2UgdGhyb3cgRXJyb3IoXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpO319cmV0dXJuIGN9aWYodmIoSWIsYSkpcmV0dXJuIEpiLmIoYSxiKTt0aHJvdyBFcnJvcihbdChcIm50aCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdHlwZSBcIiksdCh5Yih3YihhKSkpXS5qb2luKFwiXCIpKTt9XG5mdW5jdGlvbiBPKGEsYixjKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGIpdGhyb3cgRXJyb3IoXCJJbmRleCBhcmd1bWVudCB0byBudGggbXVzdCBiZSBhIG51bWJlci5cIik7aWYobnVsbD09YSlyZXR1cm4gYztpZihudWxsIT1hJiYoYS5vJjE2fHxtPT09YS5MYykpcmV0dXJuIGEuUWEobnVsbCxiLGMpO2lmKHNiKGEpKXJldHVybiAwPD1iJiZiPGEubGVuZ3RoP2FbYl06YztpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIDA8PWImJmI8YS5sZW5ndGg/YS5jaGFyQXQoYik6YztpZihudWxsIT1hJiYoYS5vJjY0fHxtPT09YS5IYSkpcmV0dXJuIEdkKGEsYixjKTtpZih2YihJYixhKSlyZXR1cm4gSmIuYihhLGIpO3Rocm93IEVycm9yKFt0KFwibnRoIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0eXBlIFwiKSx0KHliKHdiKGEpKSldLmpvaW4oXCJcIikpO31cbnZhciBCPWZ1bmN0aW9uIEIoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBCLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7Y2FzZSAzOnJldHVybiBCLmMoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pO2RlZmF1bHQ6dGhyb3cgRXJyb3IoW3QoXCJJbnZhbGlkIGFyaXR5OiBcIiksdChjLmxlbmd0aCldLmpvaW4oXCJcIikpO319O0IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hP251bGw6bnVsbCE9YSYmKGEubyYyNTZ8fG09PT1hLmJkKT9hLlcobnVsbCxiKTpzYihhKT9iPGEubGVuZ3RoP2FbYnwwXTpudWxsOlwic3RyaW5nXCI9PT10eXBlb2YgYT9udWxsIT1iJiZiPGEubGVuZ3RoP2FbYnwwXTpudWxsOnZiKFBiLGEpP1FiLmIoYSxiKTpudWxsfTtcbkIuYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGwhPWE/bnVsbCE9YSYmKGEubyYyNTZ8fG09PT1hLmJkKT9hLlQobnVsbCxiLGMpOnNiKGEpP2I8YS5sZW5ndGg/YVtifDBdOmM6XCJzdHJpbmdcIj09PXR5cGVvZiBhP2I8YS5sZW5ndGg/YVtifDBdOmM6dmIoUGIsYSk/UWIuYyhhLGIsYyk6YzpjfTtCLkI9Mzt2YXIgUT1mdW5jdGlvbiBRKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMzpyZXR1cm4gUS5jKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OnJldHVybiBRLmYoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sbmV3IEYoYy5zbGljZSgzKSwwLG51bGwpKX19O1EuYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGwhPWE/U2IoYSxiLGMpOkhkKFtiXSxbY10pfTtcblEuZj1mdW5jdGlvbihhLGIsYyxkKXtmb3IoOzspaWYoYT1RLmMoYSxiLGMpLHIoZCkpYj1JKGQpLGM9Q2QoZCksZD1KKEooZCkpO2Vsc2UgcmV0dXJuIGF9O1EuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpLGM9SihhKTthPUkoYyk7dmFyIGQ9SihjKSxjPUkoZCksZD1KKGQpO3JldHVybiBRLmYoYixhLGMsZCl9O1EuQj0zO3ZhciBJZD1mdW5jdGlvbiBJZChiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIElkLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIElkLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gSWQuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtJZC5hPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtcbklkLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YT9udWxsOlViKGEsYil9O0lkLmY9ZnVuY3Rpb24oYSxiLGMpe2Zvcig7Oyl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDthPUlkLmIoYSxiKTtpZihyKGMpKWI9SShjKSxjPUooYyk7ZWxzZSByZXR1cm4gYX19O0lkLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO2M9SihjKTtyZXR1cm4gSWQuZihiLGEsYyl9O0lkLkI9MjtmdW5jdGlvbiBKZChhLGIpe3RoaXMubD1hO3RoaXMuRD1iO3RoaXMubz0zOTMyMTc7dGhpcy5HPTB9aD1KZC5wcm90b3R5cGU7aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRH07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBKZCh0aGlzLmwsYil9O1xuaC5jYWxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHLFUsUix2YSl7YT10aGlzO3JldHVybiBZYy5sYj9ZYy5sYihhLmwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLEcsVSxSLHZhKTpZYy5jYWxsKG51bGwsYS5sLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHLFUsUix2YSl9ZnVuY3Rpb24gYihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHLFUsUil7YT10aGlzO3JldHVybiBhLmwud2E/YS5sLndhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHLFUsUik6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssRyxVLFIpfWZ1bmN0aW9uIGMoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssRyxVKXthPXRoaXM7cmV0dXJuIGEubC52YT9hLmwudmEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFxuRyxVKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHLFUpfWZ1bmN0aW9uIGQoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssRyl7YT10aGlzO3JldHVybiBhLmwudWE/YS5sLnVhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxHKX1mdW5jdGlvbiBlKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKXthPXRoaXM7cmV0dXJuIGEubC50YT9hLmwudGEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyl9ZnVuY3Rpb24gZihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgpe2E9dGhpcztyZXR1cm4gYS5sLnNhP2EubC5zYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKTphLmwuY2FsbChudWxsLFxuYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCl9ZnVuY3Rpb24gZyhhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKXthPXRoaXM7cmV0dXJuIGEubC5yYT9hLmwucmEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpOmEubC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpfWZ1bmN0aW9uIGsoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpe2E9dGhpcztyZXR1cm4gYS5sLnFhP2EubC5xYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpOmEubC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKX1mdW5jdGlvbiBsKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl7YT10aGlzO3JldHVybiBhLmwucGE/YS5sLnBhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpOmEubC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl9ZnVuY3Rpb24gcChhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KXthPXRoaXM7XG5yZXR1cm4gYS5sLm9hP2EubC5vYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyk6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyl9ZnVuY3Rpb24gdShhLGIsYyxkLGUsZixnLGssbCxwLHUsdil7YT10aGlzO3JldHVybiBhLmwubmE/YS5sLm5hKGIsYyxkLGUsZixnLGssbCxwLHUsdik6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYpfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyxrLGwscCx1KXthPXRoaXM7cmV0dXJuIGEubC5tYT9hLmwubWEoYixjLGQsZSxmLGcsayxsLHAsdSk6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1KX1mdW5jdGlvbiB3KGEsYixjLGQsZSxmLGcsayxsLHApe2E9dGhpcztyZXR1cm4gYS5sLnlhP2EubC55YShiLGMsZCxlLGYsZyxrLGwscCk6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCl9ZnVuY3Rpb24geShhLGIsYyxkLGUsZixnLGssbCl7YT10aGlzO3JldHVybiBhLmwueGE/YS5sLnhhKGIsYyxcbmQsZSxmLGcsayxsKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCl9ZnVuY3Rpb24gQShhLGIsYyxkLGUsZixnLGspe2E9dGhpcztyZXR1cm4gYS5sLmphP2EubC5qYShiLGMsZCxlLGYsZyxrKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnLGspfWZ1bmN0aW9uIEQoYSxiLGMsZCxlLGYsZyl7YT10aGlzO3JldHVybiBhLmwuaGE/YS5sLmhhKGIsYyxkLGUsZixnKTphLmwuY2FsbChudWxsLGIsYyxkLGUsZixnKX1mdW5jdGlvbiBIKGEsYixjLGQsZSxmKXthPXRoaXM7cmV0dXJuIGEubC5MP2EubC5MKGIsYyxkLGUsZik6YS5sLmNhbGwobnVsbCxiLGMsZCxlLGYpfWZ1bmN0aW9uIEsoYSxiLGMsZCxlKXthPXRoaXM7cmV0dXJuIGEubC5DP2EubC5DKGIsYyxkLGUpOmEubC5jYWxsKG51bGwsYixjLGQsZSl9ZnVuY3Rpb24gUihhLGIsYyxkKXthPXRoaXM7cmV0dXJuIGEubC5jP2EubC5jKGIsYyxkKTphLmwuY2FsbChudWxsLGIsYyxkKX1mdW5jdGlvbiBVKGEsYixjKXthPXRoaXM7XG5yZXR1cm4gYS5sLmI/YS5sLmIoYixjKTphLmwuY2FsbChudWxsLGIsYyl9ZnVuY3Rpb24gdmEoYSxiKXthPXRoaXM7cmV0dXJuIGEubC5hP2EubC5hKGIpOmEubC5jYWxsKG51bGwsYil9ZnVuY3Rpb24gbGIoYSl7YT10aGlzO3JldHVybiBhLmwuaD9hLmwuaCgpOmEubC5jYWxsKG51bGwpfXZhciBHPW51bGwsRz1mdW5jdGlvbihhYSxkYSxoYSxQLG9hLHRhLEcsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIsQmIsT2IsaWMsSGMsTWQsZmYsaGgpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGxiLmNhbGwodGhpcyxhYSk7Y2FzZSAyOnJldHVybiB2YS5jYWxsKHRoaXMsYWEsZGEpO2Nhc2UgMzpyZXR1cm4gVS5jYWxsKHRoaXMsYWEsZGEsaGEpO2Nhc2UgNDpyZXR1cm4gUi5jYWxsKHRoaXMsYWEsZGEsaGEsUCk7Y2FzZSA1OnJldHVybiBLLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hKTtjYXNlIDY6cmV0dXJuIEguY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEpO2Nhc2UgNzpyZXR1cm4gRC5jYWxsKHRoaXMsXG5hYSxkYSxoYSxQLG9hLHRhLEcpO2Nhc2UgODpyZXR1cm4gQS5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxHLHphKTtjYXNlIDk6cmV0dXJuIHkuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSk7Y2FzZSAxMDpyZXR1cm4gdy5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxHLHphLEVhLEhhKTtjYXNlIDExOnJldHVybiB2LmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLEcsemEsRWEsSGEsTWEpO2Nhc2UgMTI6cmV0dXJuIHUuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSxIYSxNYSxBYik7Y2FzZSAxMzpyZXR1cm4gcC5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxHLHphLEVhLEhhLE1hLEFiLGFiKTtjYXNlIDE0OnJldHVybiBsLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLEcsemEsRWEsSGEsTWEsQWIsYWIsZmIpO2Nhc2UgMTU6cmV0dXJuIGsuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSxIYSxNYSxBYixhYixmYixyYik7XG5jYXNlIDE2OnJldHVybiBnLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLEcsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIsQmIpO2Nhc2UgMTc6cmV0dXJuIGYuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYik7Y2FzZSAxODpyZXR1cm4gZS5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxHLHphLEVhLEhhLE1hLEFiLGFiLGZiLHJiLEJiLE9iLGljKTtjYXNlIDE5OnJldHVybiBkLmNhbGwodGhpcyxhYSxkYSxoYSxQLG9hLHRhLEcsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIsQmIsT2IsaWMsSGMpO2Nhc2UgMjA6cmV0dXJuIGMuY2FsbCh0aGlzLGFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYixpYyxIYyxNZCk7Y2FzZSAyMTpyZXR1cm4gYi5jYWxsKHRoaXMsYWEsZGEsaGEsUCxvYSx0YSxHLHphLEVhLEhhLE1hLEFiLGFiLGZiLHJiLEJiLE9iLGljLEhjLE1kLGZmKTtjYXNlIDIyOnJldHVybiBhLmNhbGwodGhpcyxcbmFhLGRhLGhhLFAsb2EsdGEsRyx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYixpYyxIYyxNZCxmZixoaCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O0cuYT1sYjtHLmI9dmE7Ry5jPVU7Ry5DPVI7Ry5MPUs7Ry5oYT1IO0cuamE9RDtHLnhhPUE7Ry55YT15O0cubWE9dztHLm5hPXY7Ry5vYT11O0cucGE9cDtHLnFhPWw7Ry5yYT1rO0cuc2E9ZztHLnRhPWY7Ry51YT1lO0cudmE9ZDtHLndhPWM7Ry5ZYj1iO0cubGI9YTtyZXR1cm4gR30oKTtoLmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY2FsbC5hcHBseSh0aGlzLFt0aGlzXS5jb25jYXQoQ2IoYikpKX07aC5oPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubC5oP3RoaXMubC5oKCk6dGhpcy5sLmNhbGwobnVsbCl9O2guYT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sLmE/dGhpcy5sLmEoYSk6dGhpcy5sLmNhbGwobnVsbCxhKX07XG5oLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5sLmI/dGhpcy5sLmIoYSxiKTp0aGlzLmwuY2FsbChudWxsLGEsYil9O2guYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMubC5jP3RoaXMubC5jKGEsYixjKTp0aGlzLmwuY2FsbChudWxsLGEsYixjKX07aC5DPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmwuQz90aGlzLmwuQyhhLGIsYyxkKTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQpfTtoLkw9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gdGhpcy5sLkw/dGhpcy5sLkwoYSxiLGMsZCxlKTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQsZSl9O2guaGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3JldHVybiB0aGlzLmwuaGE/dGhpcy5sLmhhKGEsYixjLGQsZSxmKTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQsZSxmKX07XG5oLmphPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3JldHVybiB0aGlzLmwuamE/dGhpcy5sLmphKGEsYixjLGQsZSxmLGcpOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyl9O2gueGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrKXtyZXR1cm4gdGhpcy5sLnhhP3RoaXMubC54YShhLGIsYyxkLGUsZixnLGspOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrKX07aC55YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCl7cmV0dXJuIHRoaXMubC55YT90aGlzLmwueWEoYSxiLGMsZCxlLGYsZyxrLGwpOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwpfTtoLm1hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHApe3JldHVybiB0aGlzLmwubWE/dGhpcy5sLm1hKGEsYixjLGQsZSxmLGcsayxsLHApOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCl9O1xuaC5uYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUpe3JldHVybiB0aGlzLmwubmE/dGhpcy5sLm5hKGEsYixjLGQsZSxmLGcsayxsLHAsdSk6dGhpcy5sLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUpfTtoLm9hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KXtyZXR1cm4gdGhpcy5sLm9hP3RoaXMubC5vYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdik6dGhpcy5sLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdil9O2gucGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyl7cmV0dXJuIHRoaXMubC5wYT90aGlzLmwucGEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyk6dGhpcy5sLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KX07XG5oLnFhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl7cmV0dXJuIHRoaXMubC5xYT90aGlzLmwucWEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl9O2gucmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpe3JldHVybiB0aGlzLmwucmE/dGhpcy5sLnJhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKX07aC5zYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKXtyZXR1cm4gdGhpcy5sLnNhP3RoaXMubC5zYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKTp0aGlzLmwuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpfTtcbmgudGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKXtyZXR1cm4gdGhpcy5sLnRhP3RoaXMubC50YShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgpOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKX07aC51YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyl7cmV0dXJuIHRoaXMubC51YT90aGlzLmwudWEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEspOnRoaXMubC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEspfTtcbmgudmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUil7cmV0dXJuIHRoaXMubC52YT90aGlzLmwudmEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUik6dGhpcy5sLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSKX07aC53YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUpe3JldHVybiB0aGlzLmwud2E/dGhpcy5sLndhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSk6dGhpcy5sLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUpfTtcbmguWWI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVLHZhKXtyZXR1cm4gWWMubGI/WWMubGIodGhpcy5sLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSx2YSk6WWMuY2FsbChudWxsLHRoaXMubCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmEpfTtmdW5jdGlvbiB5ZChhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09YmEoYSk/bmV3IEpkKGEsYik6bnVsbD09YT9udWxsOmdjKGEsYil9ZnVuY3Rpb24gS2QoYSl7dmFyIGI9bnVsbCE9YTtyZXR1cm4oYj9udWxsIT1hP2EubyYxMzEwNzJ8fG09PT1hLmVkfHwoYS5vPzA6dmIoZWMsYSkpOnZiKGVjLGEpOmIpP2ZjKGEpOm51bGx9ZnVuY3Rpb24gTGQoYSl7cmV0dXJuIG51bGw9PWF8fHRiKEUoYSkpfWZ1bmN0aW9uIE5kKGEpe3JldHVybiBudWxsPT1hPyExOm51bGwhPWE/YS5vJjh8fG09PT1hLkZkPyEwOmEubz8hMTp2YihHYixhKTp2YihHYixhKX1cbmZ1bmN0aW9uIE9kKGEpe3JldHVybiBudWxsPT1hPyExOm51bGwhPWE/YS5vJjQwOTZ8fG09PT1hLkxkPyEwOmEubz8hMTp2YihZYixhKTp2YihZYixhKX1mdW5jdGlvbiBQZChhKXtyZXR1cm4gbnVsbCE9YT9hLm8mMTY3NzcyMTZ8fG09PT1hLktkPyEwOmEubz8hMTp2YihvYyxhKTp2YihvYyxhKX1mdW5jdGlvbiBRZChhKXtyZXR1cm4gbnVsbD09YT8hMTpudWxsIT1hP2EubyYxMDI0fHxtPT09YS5jZD8hMDphLm8/ITE6dmIoVGIsYSk6dmIoVGIsYSl9ZnVuY3Rpb24gUmQoYSl7cmV0dXJuIG51bGwhPWE/YS5vJjE2Mzg0fHxtPT09YS5NZD8hMDphLm8/ITE6dmIoYWMsYSk6dmIoYWMsYSl9ZnVuY3Rpb24gU2QoYSl7cmV0dXJuIG51bGwhPWE/YS5HJjUxMnx8bT09PWEuRWQ/ITA6ITE6ITF9ZnVuY3Rpb24gVGQoYSl7dmFyIGI9W107amEoYSxmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbihhLGMpe3JldHVybiBiLnB1c2goYyl9fShhLGIpKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIFVkKGEsYixjLGQsZSl7Zm9yKDswIT09ZTspY1tkXT1hW2JdLGQrPTEsLS1lLGIrPTF9dmFyIFZkPXt9O2Z1bmN0aW9uIFdkKGEpe3JldHVybiBudWxsPT1hPyExOiExPT09YT8hMTohMH1mdW5jdGlvbiBYZChhKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGEmJiFpc05hTihhKSYmSW5maW5pdHkhPT1hJiZwYXJzZUZsb2F0KGEpPT09cGFyc2VJbnQoYSwxMCl9ZnVuY3Rpb24gWWQoYSxiKXtyZXR1cm4gQi5jKGEsYixWZCk9PT1WZD8hMTohMH1cbnZhciBaZD1mdW5jdGlvbiBaZChiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIFpkLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIFpkLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gWmQuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtaZC5hPWZ1bmN0aW9uKCl7cmV0dXJuITB9O1pkLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hQy5iKGEsYil9O1pkLmY9ZnVuY3Rpb24oYSxiLGMpe2lmKEMuYihhLGIpKXJldHVybiExO2E9JGQoW2EsYl0pO2ZvcihiPWM7Oyl7dmFyIGQ9SShiKTtjPUooYik7aWYocihiKSl7aWYoWWQoYSxkKSlyZXR1cm4hMTthPUVkLmIoYSxkKTtiPWN9ZWxzZSByZXR1cm4hMH19O1xuWmQuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpLGM9SihhKTthPUkoYyk7Yz1KKGMpO3JldHVybiBaZC5mKGIsYSxjKX07WmQuQj0yO2Z1bmN0aW9uIEFkKGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gemQoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7Y2FzZSAzOnJldHVybiBCZChhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGIubGVuZ3RoKV0uam9pbihcIlwiKSk7fX1mdW5jdGlvbiB6ZChhLGIpe3ZhciBjPUUoYik7aWYoYyl7dmFyIGQ9SShjKSxjPUooYyk7cmV0dXJuIGFlP2FlKGEsZCxjKTpiZS5jYWxsKG51bGwsYSxkLGMpfXJldHVybiBhLmg/YS5oKCk6YS5jYWxsKG51bGwpfVxuZnVuY3Rpb24gQmQoYSxiLGMpe2ZvcihjPUUoYyk7OylpZihjKXt2YXIgZD1JKGMpO2I9YS5iP2EuYihiLGQpOmEuY2FsbChudWxsLGIsZCk7Yz1KKGMpfWVsc2UgcmV0dXJuIGJ9ZnVuY3Rpb24gYmUoYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO3N3aXRjaChiLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBjZShhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtjYXNlIDM6cmV0dXJuIGFlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYi5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fVxuZnVuY3Rpb24gY2UoYSxiKXtyZXR1cm4gbnVsbCE9YiYmKGIubyY1MjQyODh8fG09PT1iLmdkKT9iLkRhKG51bGwsYSk6c2IoYik/a2QoYixhKTpcInN0cmluZ1wiPT09dHlwZW9mIGI/a2QoYixhKTp2YihoYyxiKT9qYy5iKGIsYSk6emQoYSxiKX1mdW5jdGlvbiBhZShhLGIsYyl7cmV0dXJuIG51bGwhPWMmJihjLm8mNTI0Mjg4fHxtPT09Yy5nZCk/Yy5FYShudWxsLGEsYik6c2IoYyk/bGQoYyxhLGIpOlwic3RyaW5nXCI9PT10eXBlb2YgYz9sZChjLGEsYik6dmIoaGMsYyk/amMuYyhjLGEsYik6QmQoYSxiLGMpfWZ1bmN0aW9uIGRlKGEpe3JldHVybiBhfWZ1bmN0aW9uIGVlKGEsYixjLGQpe2E9YS5hP2EuYShiKTphLmNhbGwobnVsbCxiKTtjPWFlKGEsYyxkKTtyZXR1cm4gYS5hP2EuYShjKTphLmNhbGwobnVsbCxjKX1cbnZhciBmZT1mdW5jdGlvbiBmZShiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGZlLmgoKTtjYXNlIDE6cmV0dXJuIGZlLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIGZlLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gZmUuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtmZS5oPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O2ZlLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O2ZlLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifTtmZS5mPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYWUoZmUsYStiLGMpfTtmZS5BPWZ1bmN0aW9uKGEpe3ZhciBiPUkoYSksYz1KKGEpO2E9SShjKTtjPUooYyk7cmV0dXJuIGZlLmYoYixhLGMpfTtmZS5CPTI7XG52YXIgZ2U9ZnVuY3Rpb24gZ2UoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBnZS5oKCk7Y2FzZSAxOnJldHVybiBnZS5hKGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiBnZS5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2RlZmF1bHQ6cmV0dXJuIGdlLmYoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxuZXcgRihjLnNsaWNlKDIpLDAsbnVsbCkpfX07Z2UuaD1mdW5jdGlvbigpe3JldHVybiAxfTtnZS5hPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtnZS5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEqYn07Z2UuZj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFlKGdlLGEqYixjKX07Z2UuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpLGM9SihhKTthPUkoYyk7Yz1KKGMpO3JldHVybiBnZS5mKGIsYSxjKX07Z2UuQj0yO1xuZnVuY3Rpb24gaGUoYSl7cmV0dXJuIGEtMX1mdW5jdGlvbiBpZShhKXtpZihcIm51bWJlclwiPT09dHlwZW9mIGEpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYSk7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYxPT09YS5sZW5ndGgpcmV0dXJuIGE7dGhyb3cgRXJyb3IoXCJBcmd1bWVudCB0byBjaGFyIG11c3QgYmUgYSBjaGFyYWN0ZXIgb3IgbnVtYmVyXCIpO31mdW5jdGlvbiBqZShhKXtyZXR1cm4gMDw9YT9NYXRoLmZsb29yKGEpOk1hdGguY2VpbChhKX1mdW5jdGlvbiBrZShhLGIpe3JldHVybiBqZSgoYS1hJWIpL2IpfWZ1bmN0aW9uIGxlKGEsYil7cmV0dXJuIGEtYiprZShhLGIpfWZ1bmN0aW9uIG1lKGEpe2EtPWE+PjEmMTQzMTY1NTc2NTthPShhJjg1ODk5MzQ1OSkrKGE+PjImODU4OTkzNDU5KTtyZXR1cm4gMTY4NDMwMDkqKGErKGE+PjQpJjI1MjY0NTEzNSk+PjI0fVxuZnVuY3Rpb24gbmUoYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO3N3aXRjaChiLmxlbmd0aCl7Y2FzZSAxOnJldHVybiEwO2Nhc2UgMjpyZXR1cm4ga2MoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDphOmZvcihjPWFyZ3VtZW50c1swXSxkPWFyZ3VtZW50c1sxXSxiPW5ldyBGKGIuc2xpY2UoMiksMCxudWxsKTs7KWlmKGM9PT1kKWlmKEooYikpYz1kLGQ9SShiKSxiPUooYik7ZWxzZXtjPWQ9PT1JKGIpO2JyZWFrIGF9ZWxzZXtjPSExO2JyZWFrIGF9cmV0dXJuIGN9fWZ1bmN0aW9uIG9lKGEsYil7cmV0dXJuIGtjKGEsYil9XG52YXIgdD1mdW5jdGlvbiB0KGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdC5oKCk7Y2FzZSAxOnJldHVybiB0LmEoYXJndW1lbnRzWzBdKTtkZWZhdWx0OnJldHVybiB0LmYoYXJndW1lbnRzWzBdLG5ldyBGKGMuc2xpY2UoMSksMCxudWxsKSl9fTt0Lmg9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifTt0LmE9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/XCJcIjpcIlwiK2F9O3QuZj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1uZXcgeWEoXCJcIit0KGEpKSxkPWI7OylpZihyKGQpKWM9Yy5hcHBlbmQoXCJcIit0KEkoZCkpKSxkPUooZCk7ZWxzZSByZXR1cm4gYy50b1N0cmluZygpfTt0LkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKTthPUooYSk7cmV0dXJuIHQuZihiLGEpfTt0LkI9MTtcbmZ1bmN0aW9uIHBlKGEsYil7cmV0dXJuIGEuc3Vic3RyaW5nKGIpfWZ1bmN0aW9uIHZkKGEsYil7dmFyIGM7aWYoUGQoYikpaWYobmQoYSkmJm5kKGIpJiZNKGEpIT09TShiKSljPSExO2Vsc2UgYTp7Yz1FKGEpO2Zvcih2YXIgZD1FKGIpOzspe2lmKG51bGw9PWMpe2M9bnVsbD09ZDticmVhayBhfWlmKG51bGwhPWQmJkMuYihJKGMpLEkoZCkpKWM9SihjKSxkPUooZCk7ZWxzZXtjPSExO2JyZWFrIGF9fX1lbHNlIGM9bnVsbDtyZXR1cm4gV2QoYyl9ZnVuY3Rpb24gcWUoYSl7dmFyIGI9MDtmb3IoYT1FKGEpOzspaWYoYSl7dmFyIGM9SShhKSxiPShiKyhVYyhyZS5hP3JlLmEoYyk6cmUuY2FsbChudWxsLGMpKV5VYyhzZS5hP3NlLmEoYyk6c2UuY2FsbChudWxsLGMpKSkpJTQ1MDM1OTk2MjczNzA0OTY7YT1KKGEpfWVsc2UgcmV0dXJuIGJ9XG5mdW5jdGlvbiB0ZShhLGIsYyxkLGUpe3RoaXMuRD1hO3RoaXMuZmlyc3Q9Yjt0aGlzLkphPWM7dGhpcy5jb3VudD1kO3RoaXMudj1lO3RoaXMubz02NTkzNzY0Njt0aGlzLkc9ODE5Mn1oPXRlLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLHRoaXMuY291bnQpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EfTtoLkthPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmNvdW50P251bGw6dGhpcy5KYX07aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnR9O2guYWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdH07aC5iYz1mdW5jdGlvbigpe3JldHVybiBNYih0aGlzKX07XG5oLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1kZCh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZkKHRoaXMsYil9O2guemE9ZnVuY3Rpb24oKXtyZXR1cm4gZ2MoJGMsdGhpcy5EKX07aC5EYT1mdW5jdGlvbihhLGIpe3JldHVybiB6ZChiLHRoaXMpfTtoLkVhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gQmQoYixjLHRoaXMpfTtoLkFhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3R9O2guT2E9ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMuY291bnQ/JGM6dGhpcy5KYX07aC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgdGUoYix0aGlzLmZpcnN0LHRoaXMuSmEsdGhpcy5jb3VudCx0aGlzLnYpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHRlKHRoaXMuRCxiLHRoaXMsdGhpcy5jb3VudCsxLG51bGwpfTt0ZS5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtcbmZ1bmN0aW9uIHVlKGEpe3RoaXMuRD1hO3RoaXMubz02NTkzNzYxNDt0aGlzLkc9ODE5Mn1oPXVlLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EfTtoLkthPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2guWj1mdW5jdGlvbigpe3JldHVybiAwfTtoLmFjPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2guYmM9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIkNhbid0IHBvcCBlbXB0eSBsaXN0XCIpO307aC5TPWZ1bmN0aW9uKCl7cmV0dXJuIGVkfTtcbmguRj1mdW5jdGlvbihhLGIpe3JldHVybihudWxsIT1iP2IubyYzMzU1NDQzMnx8bT09PWIuSGR8fChiLm8/MDp2YihwYyxiKSk6dmIocGMsYikpfHxQZChiKT9udWxsPT1FKGIpOiExfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2guRGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gemQoYix0aGlzKX07aC5FYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEJkKGIsYyx0aGlzKX07aC5BYT1mdW5jdGlvbigpe3JldHVybiBudWxsfTtoLk9hPWZ1bmN0aW9uKCl7cmV0dXJuICRjfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB1ZShiKX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB0ZSh0aGlzLkQsYixudWxsLDEsbnVsbCl9O3ZhciAkYz1uZXcgdWUobnVsbCk7dWUucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07XG5mdW5jdGlvbiB2ZShhKXtyZXR1cm4obnVsbCE9YT9hLm8mMTM0MjE3NzI4fHxtPT09YS5KZHx8KGEubz8wOnZiKHFjLGEpKTp2YihxYyxhKSk/cmMoYSk6YWUoRWQsJGMsYSl9dmFyIHdlPWZ1bmN0aW9uIHdlKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztyZXR1cm4gd2UuZigwPGMubGVuZ3RoP25ldyBGKGMuc2xpY2UoMCksMCxudWxsKTpudWxsKX07d2UuZj1mdW5jdGlvbihhKXt2YXIgYjtpZihhIGluc3RhbmNlb2YgRiYmMD09PWEudSliPWEuZztlbHNlIGE6Zm9yKGI9W107OylpZihudWxsIT1hKWIucHVzaChhLkFhKG51bGwpKSxhPWEuS2EobnVsbCk7ZWxzZSBicmVhayBhO2E9Yi5sZW5ndGg7Zm9yKHZhciBjPSRjOzspaWYoMDxhKXt2YXIgZD1hLTEsYz1jLlgobnVsbCxiW2EtMV0pO2E9ZH1lbHNlIHJldHVybiBjfTt3ZS5CPTA7d2UuQT1mdW5jdGlvbihhKXtyZXR1cm4gd2UuZihFKGEpKX07XG5mdW5jdGlvbiB4ZShhLGIsYyxkKXt0aGlzLkQ9YTt0aGlzLmZpcnN0PWI7dGhpcy5KYT1jO3RoaXMudj1kO3RoaXMubz02NTkyOTQ1Mjt0aGlzLkc9ODE5Mn1oPXhlLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EfTtoLkthPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuSmE/bnVsbDpFKHRoaXMuSmEpfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1kZCh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZkKHRoaXMsYil9O2guemE9ZnVuY3Rpb24oKXtyZXR1cm4geWQoJGMsdGhpcy5EKX07XG5oLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpkKGIsdGhpcyl9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCZChiLGMsdGhpcyl9O2guQWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdH07aC5PYT1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLkphPyRjOnRoaXMuSmF9O2guWT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHhlKGIsdGhpcy5maXJzdCx0aGlzLkphLHRoaXMudil9O2guWD1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgeGUobnVsbCxiLHRoaXMsbnVsbCl9O3hlLnByb3RvdHlwZVt6Yl09ZnVuY3Rpb24oKXtyZXR1cm4gYmQodGhpcyl9O2Z1bmN0aW9uIHdkKGEsYil7dmFyIGM9bnVsbD09YjtyZXR1cm4oYz9jOm51bGwhPWImJihiLm8mNjR8fG09PT1iLkhhKSk/bmV3IHhlKG51bGwsYSxiLG51bGwpOm5ldyB4ZShudWxsLGEsRShiKSxudWxsKX1cbmZ1bmN0aW9uIFMoYSxiLGMsZCl7dGhpcy5qYz1hO3RoaXMubmFtZT1iO3RoaXMuTGE9Yzt0aGlzLk9iPWQ7dGhpcy5vPTIxNTM3NzUxMDU7dGhpcy5HPTQwOTZ9aD1TLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuW3QoXCI6XCIpLHQodGhpcy5MYSldLmpvaW4oXCJcIil9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIFM/dGhpcy5MYT09PWIuTGE6ITF9O1xuaC5jYWxsPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyxkKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBCLmIoYyx0aGlzKTtjYXNlIDM6cmV0dXJuIEIuYyhjLHRoaXMsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYj1mdW5jdGlvbihhLGMpe3JldHVybiBCLmIoYyx0aGlzKX07YS5jPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gQi5jKGMsdGhpcyxkKX07cmV0dXJuIGF9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O2guYT1mdW5jdGlvbihhKXtyZXR1cm4gQi5iKGEsdGhpcyl9O2guYj1mdW5jdGlvbihhLGIpe3JldHVybiBCLmMoYSx0aGlzLGIpfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLk9iO3JldHVybiBudWxsIT1hP2E6dGhpcy5PYj1hPVZjKHRoaXMpKzI2NTQ0MzU3Njl8MH07XG5oLlpiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX07aC4kYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpjfTtoLlU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4geChiLFt0KFwiOlwiKSx0KHRoaXMuTGEpXS5qb2luKFwiXCIpKX07ZnVuY3Rpb24gVChhLGIpe3JldHVybiBhPT09Yj8hMDphIGluc3RhbmNlb2YgUyYmYiBpbnN0YW5jZW9mIFM/YS5MYT09PWIuTGE6ITF9ZnVuY3Rpb24geWUoYSl7aWYobnVsbCE9YSYmKGEuRyY0MDk2fHxtPT09YS5mZCkpcmV0dXJuIGEuJGIobnVsbCk7dGhyb3cgRXJyb3IoW3QoXCJEb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlOiBcIiksdChhKV0uam9pbihcIlwiKSk7fVxudmFyIHplPWZ1bmN0aW9uIHplKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gemUuYShhcmd1bWVudHNbMF0pO2Nhc2UgMjpyZXR1cm4gemUuYihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYy5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fTt6ZS5hPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBTKXJldHVybiBhO2lmKGEgaW5zdGFuY2VvZiB6KXJldHVybiBuZXcgUyh5ZShhKSxBZS5hP0FlLmEoYSk6QWUuY2FsbChudWxsLGEpLGEuRWIsbnVsbCk7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXt2YXIgYj1hLnNwbGl0KFwiL1wiKTtyZXR1cm4gMj09PWIubGVuZ3RoP25ldyBTKGJbMF0sYlsxXSxhLG51bGwpOm5ldyBTKG51bGwsYlswXSxhLG51bGwpfXJldHVybiBudWxsfTtcbnplLmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hIGluc3RhbmNlb2YgUz9BZS5hP0FlLmEoYSk6QWUuY2FsbChudWxsLGEpOmEgaW5zdGFuY2VvZiB6P0FlLmE/QWUuYShhKTpBZS5jYWxsKG51bGwsYSk6YSxkPWIgaW5zdGFuY2VvZiBTP0FlLmE/QWUuYShiKTpBZS5jYWxsKG51bGwsYik6YiBpbnN0YW5jZW9mIHo/QWUuYT9BZS5hKGIpOkFlLmNhbGwobnVsbCxiKTpiO3JldHVybiBuZXcgUyhjLGQsW3QocihjKT9bdChjKSx0KFwiL1wiKV0uam9pbihcIlwiKTpudWxsKSx0KGQpXS5qb2luKFwiXCIpLG51bGwpfTt6ZS5CPTI7ZnVuY3Rpb24gQmUoYSxiLGMsZCl7dGhpcy5EPWE7dGhpcy5LYj1iO3RoaXMuUD1jO3RoaXMudj1kO3RoaXMubz0zMjM3NDk4ODt0aGlzLkc9MX1oPUJlLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07XG5mdW5jdGlvbiBDZShhKXtudWxsIT1hLktiJiYoYS5QPWEuS2IuaD9hLktiLmgoKTphLktiLmNhbGwobnVsbCksYS5LYj1udWxsKTtyZXR1cm4gYS5QfWguaW5kZXhPZj1mdW5jdGlvbigpe3ZhciBhPW51bGwsYT1mdW5jdGlvbihhLGMpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHBkKHRoaXMsYSwwKTtjYXNlIDI6cmV0dXJuIHBkKHRoaXMsYSxjKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307YS5hPWZ1bmN0aW9uKGEpe3JldHVybiBwZCh0aGlzLGEsMCl9O2EuYj1mdW5jdGlvbihhLGMpe3JldHVybiBwZCh0aGlzLGEsYyl9O3JldHVybiBhfSgpO1xuaC5sYXN0SW5kZXhPZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIHNkKHRoaXMsYSxNKHRoaXMpKX12YXIgYj1udWxsLGI9ZnVuY3Rpb24oYixkKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBhLmNhbGwodGhpcyxiKTtjYXNlIDI6cmV0dXJuIHNkKHRoaXMsYixkKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Yi5hPWE7Yi5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHNkKHRoaXMsYSxiKX07cmV0dXJuIGJ9KCk7aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRH07aC5LYT1mdW5jdGlvbigpe25jKHRoaXMpO3JldHVybiBudWxsPT10aGlzLlA/bnVsbDpKKHRoaXMuUCl9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWRkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07XG5oLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHlkKCRjLHRoaXMuRCl9O2guTWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGIodGhpcy5LYil9O2guRGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gemQoYix0aGlzKX07aC5FYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEJkKGIsYyx0aGlzKX07aC5BYT1mdW5jdGlvbigpe25jKHRoaXMpO3JldHVybiBudWxsPT10aGlzLlA/bnVsbDpJKHRoaXMuUCl9O2guT2E9ZnVuY3Rpb24oKXtuYyh0aGlzKTtyZXR1cm4gbnVsbCE9dGhpcy5QP1pjKHRoaXMuUCk6JGN9O2guWT1mdW5jdGlvbigpe0NlKHRoaXMpO2lmKG51bGw9PXRoaXMuUClyZXR1cm4gbnVsbDtmb3IodmFyIGE9dGhpcy5QOzspaWYoYSBpbnN0YW5jZW9mIEJlKWE9Q2UoYSk7ZWxzZSByZXR1cm4gdGhpcy5QPWEsRSh0aGlzLlApfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEJlKGIsdGhpcy5LYix0aGlzLlAsdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHdkKGIsdGhpcyl9O1xuQmUucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07ZnVuY3Rpb24gRGUoYSxiKXt0aGlzLnFjPWE7dGhpcy5lbmQ9Yjt0aGlzLm89Mjt0aGlzLkc9MH1EZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMucWNbdGhpcy5lbmRdPWE7cmV0dXJuIHRoaXMuZW5kKz0xfTtEZS5wcm90b3R5cGUuaWE9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgRWUodGhpcy5xYywwLHRoaXMuZW5kKTt0aGlzLnFjPW51bGw7cmV0dXJuIGF9O0RlLnByb3RvdHlwZS5aPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kfTtmdW5jdGlvbiBGZShhKXtyZXR1cm4gbmV3IERlKEFycmF5KGEpLDApfWZ1bmN0aW9uIEVlKGEsYixjKXt0aGlzLmc9YTt0aGlzLkJhPWI7dGhpcy5lbmQ9Yzt0aGlzLm89NTI0MzA2O3RoaXMuRz0wfWg9RWUucHJvdG90eXBlO2guWj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC10aGlzLkJhfTtcbmguY2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5nW3RoaXMuQmErYl19O2guUWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAwPD1iJiZiPHRoaXMuZW5kLXRoaXMuQmE/dGhpcy5nW3RoaXMuQmErYl06Y307aC5KYz1mdW5jdGlvbigpe2lmKHRoaXMuQmE9PT10aGlzLmVuZCl0aHJvdyBFcnJvcihcIi1kcm9wLWZpcnN0IG9mIGVtcHR5IGNodW5rXCIpO3JldHVybiBuZXcgRWUodGhpcy5nLHRoaXMuQmErMSx0aGlzLmVuZCl9O2guRGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbWQodGhpcy5nLGIsdGhpcy5nW3RoaXMuQmFdLHRoaXMuQmErMSl9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtZCh0aGlzLmcsYixjLHRoaXMuQmEpfTtmdW5jdGlvbiBHZShhLGIsYyxkKXt0aGlzLmlhPWE7dGhpcy5vYj1iO3RoaXMuRD1jO3RoaXMudj1kO3RoaXMubz0zMTg1MDczMjt0aGlzLkc9MTUzNn1oPUdlLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtcbmguZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTSh0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guS2E9ZnVuY3Rpb24oKXtpZigxPEViKHRoaXMuaWEpKXJldHVybiBuZXcgR2UoQmModGhpcy5pYSksdGhpcy5vYix0aGlzLkQsbnVsbCk7dmFyIGE9bmModGhpcy5vYik7cmV0dXJuIG51bGw9PWE/bnVsbDphfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1kZCh0aGlzKX07XG5oLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZCgkYyx0aGlzLkQpfTtoLkFhPWZ1bmN0aW9uKCl7cmV0dXJuIEpiLmIodGhpcy5pYSwwKX07aC5PYT1mdW5jdGlvbigpe3JldHVybiAxPEViKHRoaXMuaWEpP25ldyBHZShCYyh0aGlzLmlhKSx0aGlzLm9iLHRoaXMuRCxudWxsKTpudWxsPT10aGlzLm9iPyRjOnRoaXMub2J9O2guWT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtoLnRjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWF9O2gudWM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5vYj8kYzp0aGlzLm9ifTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEdlKHRoaXMuaWEsdGhpcy5vYixiLHRoaXMudil9O2guWD1mdW5jdGlvbihhLGIpe3JldHVybiB3ZChiLHRoaXMpfTtoLnNjPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMub2I/bnVsbDp0aGlzLm9ifTtHZS5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtcbmZ1bmN0aW9uIEhlKGEsYil7cmV0dXJuIDA9PT1FYihhKT9iOm5ldyBHZShhLGIsbnVsbCxudWxsKX1mdW5jdGlvbiBJZShhLGIpe2EuYWRkKGIpfWZ1bmN0aW9uIEplKGEpe2Zvcih2YXIgYj1bXTs7KWlmKEUoYSkpYi5wdXNoKEkoYSkpLGE9SihhKTtlbHNlIHJldHVybiBifWZ1bmN0aW9uIEtlKGEsYil7aWYobmQoYikpcmV0dXJuIE0oYik7Zm9yKHZhciBjPTAsZD1FKGIpOzspaWYobnVsbCE9ZCYmYzxhKWMrPTEsZD1KKGQpO2Vsc2UgcmV0dXJuIGN9XG52YXIgTGU9ZnVuY3Rpb24gTGUoYil7dmFyIGM7aWYobnVsbD09YiljPW51bGw7ZWxzZSBpZihudWxsPT1KKGIpKWM9RShJKGIpKTtlbHNle2M9d2Q7dmFyIGQ9SShiKTtiPUooYik7Yj1MZS5hP0xlLmEoYik6TGUuY2FsbChudWxsLGIpO2M9YyhkLGIpfXJldHVybiBjfSxNZT1mdW5jdGlvbiBNZShiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIE1lLmgoKTtjYXNlIDE6cmV0dXJuIE1lLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIE1lLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gTWUuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtcbk1lLmg9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbnVsbCxudWxsKX07TWUuYT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXtyZXR1cm4gYX0sbnVsbCxudWxsKX07TWUuYj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3ZhciBjPUUoYSk7cmV0dXJuIGM/U2QoYyk/SGUoQ2MoYyksTWUuYihEYyhjKSxiKSk6d2QoSShjKSxNZS5iKFpjKGMpLGIpKTpifSxudWxsLG51bGwpfTtNZS5mPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24gZShhLGIpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3ZhciBjPUUoYSk7cmV0dXJuIGM/U2QoYyk/SGUoQ2MoYyksZShEYyhjKSxiKSk6d2QoSShjKSxlKFpjKGMpLGIpKTpyKGIpP2UoSShiKSxKKGIpKTpudWxsfSxudWxsLG51bGwpfShNZS5iKGEsYiksYyl9O1xuTWUuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpLGM9SihhKTthPUkoYyk7Yz1KKGMpO3JldHVybiBNZS5mKGIsYSxjKX07TWUuQj0yO3ZhciBOZT1mdW5jdGlvbiBOZShiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIE5lLmgoKTtjYXNlIDE6cmV0dXJuIE5lLmEoYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIE5lLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gTmUuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtOZS5oPWZ1bmN0aW9uKCl7cmV0dXJuIHdjKEZkKX07TmUuYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07TmUuYj1mdW5jdGlvbihhLGIpe3JldHVybiB4YyhhLGIpfTtcbk5lLmY9ZnVuY3Rpb24oYSxiLGMpe2Zvcig7OylpZihhPXhjKGEsYikscihjKSliPUkoYyksYz1KKGMpO2Vsc2UgcmV0dXJuIGF9O05lLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO2M9SihjKTtyZXR1cm4gTmUuZihiLGEsYyl9O05lLkI9MjtcbmZ1bmN0aW9uIE9lKGEsYixjKXt2YXIgZD1FKGMpO2lmKDA9PT1iKXJldHVybiBhLmg/YS5oKCk6YS5jYWxsKG51bGwpO2M9TGIoZCk7dmFyIGU9TWIoZCk7aWYoMT09PWIpcmV0dXJuIGEuYT9hLmEoYyk6YS5hP2EuYShjKTphLmNhbGwobnVsbCxjKTt2YXIgZD1MYihlKSxmPU1iKGUpO2lmKDI9PT1iKXJldHVybiBhLmI/YS5iKGMsZCk6YS5iP2EuYihjLGQpOmEuY2FsbChudWxsLGMsZCk7dmFyIGU9TGIoZiksZz1NYihmKTtpZigzPT09YilyZXR1cm4gYS5jP2EuYyhjLGQsZSk6YS5jP2EuYyhjLGQsZSk6YS5jYWxsKG51bGwsYyxkLGUpO3ZhciBmPUxiKGcpLGs9TWIoZyk7aWYoND09PWIpcmV0dXJuIGEuQz9hLkMoYyxkLGUsZik6YS5DP2EuQyhjLGQsZSxmKTphLmNhbGwobnVsbCxjLGQsZSxmKTt2YXIgZz1MYihrKSxsPU1iKGspO2lmKDU9PT1iKXJldHVybiBhLkw/YS5MKGMsZCxlLGYsZyk6YS5MP2EuTChjLGQsZSxmLGcpOmEuY2FsbChudWxsLGMsZCxlLGYsZyk7dmFyIGs9TGIobCksXG5wPU1iKGwpO2lmKDY9PT1iKXJldHVybiBhLmhhP2EuaGEoYyxkLGUsZixnLGspOmEuaGE/YS5oYShjLGQsZSxmLGcsayk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGspO3ZhciBsPUxiKHApLHU9TWIocCk7aWYoNz09PWIpcmV0dXJuIGEuamE/YS5qYShjLGQsZSxmLGcsayxsKTphLmphP2EuamEoYyxkLGUsZixnLGssbCk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCk7dmFyIHA9TGIodSksdj1NYih1KTtpZig4PT09YilyZXR1cm4gYS54YT9hLnhhKGMsZCxlLGYsZyxrLGwscCk6YS54YT9hLnhhKGMsZCxlLGYsZyxrLGwscCk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxwKTt2YXIgdT1MYih2KSx3PU1iKHYpO2lmKDk9PT1iKXJldHVybiBhLnlhP2EueWEoYyxkLGUsZixnLGssbCxwLHUpOmEueWE/YS55YShjLGQsZSxmLGcsayxsLHAsdSk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxwLHUpO3ZhciB2PUxiKHcpLHk9TWIodyk7aWYoMTA9PT1iKXJldHVybiBhLm1hP2EubWEoYyxcbmQsZSxmLGcsayxsLHAsdSx2KTphLm1hP2EubWEoYyxkLGUsZixnLGssbCxwLHUsdik6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxwLHUsdik7dmFyIHc9TGIoeSksQT1NYih5KTtpZigxMT09PWIpcmV0dXJuIGEubmE/YS5uYShjLGQsZSxmLGcsayxsLHAsdSx2LHcpOmEubmE/YS5uYShjLGQsZSxmLGcsayxsLHAsdSx2LHcpOmEuY2FsbChudWxsLGMsZCxlLGYsZyxrLGwscCx1LHYsdyk7dmFyIHk9TGIoQSksRD1NYihBKTtpZigxMj09PWIpcmV0dXJuIGEub2E/YS5vYShjLGQsZSxmLGcsayxsLHAsdSx2LHcseSk6YS5vYT9hLm9hKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KTphLmNhbGwobnVsbCxjLGQsZSxmLGcsayxsLHAsdSx2LHcseSk7dmFyIEE9TGIoRCksSD1NYihEKTtpZigxMz09PWIpcmV0dXJuIGEucGE/YS5wYShjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKTphLnBhP2EucGEoYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxcbnAsdSx2LHcseSxBKTt2YXIgRD1MYihIKSxLPU1iKEgpO2lmKDE0PT09YilyZXR1cm4gYS5xYT9hLnFhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCk6YS5xYT9hLnFhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCk6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKTt2YXIgSD1MYihLKSxSPU1iKEspO2lmKDE1PT09YilyZXR1cm4gYS5yYT9hLnJhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKTphLnJhP2EucmEoYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgpOmEuY2FsbChudWxsLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKTt2YXIgSz1MYihSKSxVPU1iKFIpO2lmKDE2PT09YilyZXR1cm4gYS5zYT9hLnNhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEspOmEuc2E/YS5zYShjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKTphLmNhbGwobnVsbCxjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKTt2YXIgUj1cbkxiKFUpLHZhPU1iKFUpO2lmKDE3PT09YilyZXR1cm4gYS50YT9hLnRhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUik6YS50YT9hLnRhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUik6YS5jYWxsKG51bGwsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSKTt2YXIgVT1MYih2YSksbGI9TWIodmEpO2lmKDE4PT09YilyZXR1cm4gYS51YT9hLnVhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVKTphLnVhP2EudWEoYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUpOmEuY2FsbChudWxsLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVKTt2YT1MYihsYik7bGI9TWIobGIpO2lmKDE5PT09YilyZXR1cm4gYS52YT9hLnZhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVLHZhKTphLnZhP2EudmEoYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmEpOmEuY2FsbChudWxsLFxuYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmEpO3ZhciBHPUxiKGxiKTtNYihsYik7aWYoMjA9PT1iKXJldHVybiBhLndhP2Eud2EoYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmEsRyk6YS53YT9hLndhKGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVLHZhLEcpOmEuY2FsbChudWxsLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVLHZhLEcpO3Rocm93IEVycm9yKFwiT25seSB1cCB0byAyMCBhcmd1bWVudHMgc3VwcG9ydGVkIG9uIGZ1bmN0aW9uc1wiKTt9XG5mdW5jdGlvbiBZYyhhKXtmb3IodmFyIGI9W10sYz1hcmd1bWVudHMubGVuZ3RoLGQ9MDs7KWlmKGQ8YyliLnB1c2goYXJndW1lbnRzW2RdKSxkKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGIubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIFBlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gUWUoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pO2Nhc2UgNDpyZXR1cm4gUmUoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdKTtjYXNlIDU6cmV0dXJuIFNlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0pO2RlZmF1bHQ6cmV0dXJuIFRlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sbmV3IEYoYi5zbGljZSg1KSwwLG51bGwpKX19XG5mdW5jdGlvbiBQZShhLGIpe3ZhciBjPWEuQjtpZihhLkEpe3ZhciBkPUtlKGMrMSxiKTtyZXR1cm4gZDw9Yz9PZShhLGQsYik6YS5BKGIpfXJldHVybiBhLmFwcGx5KGEsSmUoYikpfWZ1bmN0aW9uIFFlKGEsYixjKXtiPXdkKGIsYyk7Yz1hLkI7aWYoYS5BKXt2YXIgZD1LZShjKzEsYik7cmV0dXJuIGQ8PWM/T2UoYSxkLGIpOmEuQShiKX1yZXR1cm4gYS5hcHBseShhLEplKGIpKX1mdW5jdGlvbiBSZShhLGIsYyxkKXtiPXdkKGIsd2QoYyxkKSk7Yz1hLkI7cmV0dXJuIGEuQT8oZD1LZShjKzEsYiksZDw9Yz9PZShhLGQsYik6YS5BKGIpKTphLmFwcGx5KGEsSmUoYikpfWZ1bmN0aW9uIFNlKGEsYixjLGQsZSl7Yj13ZChiLHdkKGMsd2QoZCxlKSkpO2M9YS5CO3JldHVybiBhLkE/KGQ9S2UoYysxLGIpLGQ8PWM/T2UoYSxkLGIpOmEuQShiKSk6YS5hcHBseShhLEplKGIpKX1cbmZ1bmN0aW9uIFRlKGEsYixjLGQsZSxmKXtiPXdkKGIsd2QoYyx3ZChkLHdkKGUsTGUoZikpKSkpO2M9YS5CO3JldHVybiBhLkE/KGQ9S2UoYysxLGIpLGQ8PWM/T2UoYSxkLGIpOmEuQShiKSk6YS5hcHBseShhLEplKGIpKX1mdW5jdGlvbiBVZShhKXtyZXR1cm4gRShhKT9hOm51bGx9XG5mdW5jdGlvbiBWZSgpe1widW5kZWZpbmVkXCI9PT10eXBlb2YgY2ImJihjYj1mdW5jdGlvbihhKXt0aGlzLnJkPWE7dGhpcy5vPTM5MzIxNjt0aGlzLkc9MH0sY2IucHJvdG90eXBlLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGNiKGIpfSxjYi5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJkfSxjYi5wcm90b3R5cGUuSWE9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sY2IucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gRXJyb3IoXCJObyBzdWNoIGVsZW1lbnRcIil9LGNiLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb25cIil9LGNiLlRiPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWKG51bGwsMSw1LFcsW1dlXSxudWxsKX0sY2IuemI9ITAsY2IubmI9XCJjbGpzLmNvcmUvdF9jbGpzJGNvcmUxMDU5OFwiLGNiLkhiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHgoYixcImNsanMuY29yZS90X2NsanMkY29yZTEwNTk4XCIpfSk7XG5yZXR1cm4gbmV3IGNiKFgpfWZ1bmN0aW9uIFhlKGEsYil7Zm9yKDs7KXtpZihudWxsPT1FKGIpKXJldHVybiEwO3ZhciBjO2M9SShiKTtjPWEuYT9hLmEoYyk6YS5jYWxsKG51bGwsYyk7aWYocihjKSl7Yz1hO3ZhciBkPUooYik7YT1jO2I9ZH1lbHNlIHJldHVybiExfX1mdW5jdGlvbiBZZShhLGIpe2Zvcig7OylpZihFKGIpKXt2YXIgYztjPUkoYik7Yz1hLmE/YS5hKGMpOmEuY2FsbChudWxsLGMpO2lmKHIoYykpcmV0dXJuIGM7Yz1hO3ZhciBkPUooYik7YT1jO2I9ZH1lbHNlIHJldHVybiBudWxsfVxudmFyIFplPWZ1bmN0aW9uIFplKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gWmUuaCgpO2Nhc2UgMTpyZXR1cm4gWmUuYShhcmd1bWVudHNbMF0pO2Nhc2UgMjpyZXR1cm4gWmUuYihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtjYXNlIDM6cmV0dXJuIFplLmMoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pO2RlZmF1bHQ6cmV0dXJuIFplLmYoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sbmV3IEYoYy5zbGljZSgzKSwwLG51bGwpKX19O1plLmg9ZnVuY3Rpb24oKXtyZXR1cm4gZGV9O1plLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O1xuWmUuYj1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxkLGUpe2M9Yi5jP2IuYyhjLGQsZSk6Yi5jYWxsKG51bGwsYyxkLGUpO3JldHVybiBhLmE/YS5hKGMpOmEuY2FsbChudWxsLGMpfWZ1bmN0aW9uIGQoYyxkKXt2YXIgZT1iLmI/Yi5iKGMsZCk6Yi5jYWxsKG51bGwsYyxkKTtyZXR1cm4gYS5hP2EuYShlKTphLmNhbGwobnVsbCxlKX1mdW5jdGlvbiBlKGMpe2M9Yi5hP2IuYShjKTpiLmNhbGwobnVsbCxjKTtyZXR1cm4gYS5hP2EuYShjKTphLmNhbGwobnVsbCxjKX1mdW5jdGlvbiBmKCl7dmFyIGM9Yi5oP2IuaCgpOmIuY2FsbChudWxsKTtyZXR1cm4gYS5hP2EuYShjKTphLmNhbGwobnVsbCxjKX12YXIgZz1udWxsLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjLGUpe3ZhciBmPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGY9MCxnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7ZjxnLmxlbmd0aDspZ1tmXT1hcmd1bWVudHNbZitcbjNdLCsrZjtmPW5ldyBGKGcsMCl9cmV0dXJuIGQuY2FsbCh0aGlzLGEsYixjLGYpfWZ1bmN0aW9uIGQoYyxkLGUsZil7Yz1TZShiLGMsZCxlLGYpO3JldHVybiBhLmE/YS5hKGMpOmEuY2FsbChudWxsLGMpfWMuQj0zO2MuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpO2E9SihhKTt2YXIgYz1JKGEpO2E9SihhKTt2YXIgZT1JKGEpO2E9WmMoYSk7cmV0dXJuIGQoYixjLGUsYSl9O2MuZj1kO3JldHVybiBjfSgpLGc9ZnVuY3Rpb24oYSxiLGcsdil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZi5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHRoaXMsYSk7Y2FzZSAyOnJldHVybiBkLmNhbGwodGhpcyxhLGIpO2Nhc2UgMzpyZXR1cm4gYy5jYWxsKHRoaXMsYSxiLGcpO2RlZmF1bHQ6dmFyIGw9bnVsbDtpZigzPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgbD0wLHA9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0zKTtsPHAubGVuZ3RoOylwW2xdPWFyZ3VtZW50c1tsK1xuM10sKytsO2w9bmV3IEYocCwwKX1yZXR1cm4gay5mKGEsYixnLGwpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtnLkI9MztnLkE9ay5BO2cuaD1mO2cuYT1lO2cuYj1kO2cuYz1jO2cuZj1rLmY7cmV0dXJuIGd9KCl9O1xuWmUuYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChkLGUsZil7ZD1jLmM/Yy5jKGQsZSxmKTpjLmNhbGwobnVsbCxkLGUsZik7ZD1iLmE/Yi5hKGQpOmIuY2FsbChudWxsLGQpO3JldHVybiBhLmE/YS5hKGQpOmEuY2FsbChudWxsLGQpfWZ1bmN0aW9uIGUoZCxlKXt2YXIgZjtmPWMuYj9jLmIoZCxlKTpjLmNhbGwobnVsbCxkLGUpO2Y9Yi5hP2IuYShmKTpiLmNhbGwobnVsbCxmKTtyZXR1cm4gYS5hP2EuYShmKTphLmNhbGwobnVsbCxmKX1mdW5jdGlvbiBmKGQpe2Q9Yy5hP2MuYShkKTpjLmNhbGwobnVsbCxkKTtkPWIuYT9iLmEoZCk6Yi5jYWxsKG51bGwsZCk7cmV0dXJuIGEuYT9hLmEoZCk6YS5jYWxsKG51bGwsZCl9ZnVuY3Rpb24gZygpe3ZhciBkO2Q9Yy5oP2MuaCgpOmMuY2FsbChudWxsKTtkPWIuYT9iLmEoZCk6Yi5jYWxsKG51bGwsZCk7cmV0dXJuIGEuYT9hLmEoZCk6YS5jYWxsKG51bGwsZCl9dmFyIGs9bnVsbCxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChhLFxuYixjLGQpe3ZhciBmPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGY9MCxnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7ZjxnLmxlbmd0aDspZ1tmXT1hcmd1bWVudHNbZiszXSwrK2Y7Zj1uZXcgRihnLDApfXJldHVybiBlLmNhbGwodGhpcyxhLGIsYyxmKX1mdW5jdGlvbiBlKGQsZSxmLGcpe2Q9U2UoYyxkLGUsZixnKTtkPWIuYT9iLmEoZCk6Yi5jYWxsKG51bGwsZCk7cmV0dXJuIGEuYT9hLmEoZCk6YS5jYWxsKG51bGwsZCl9ZC5CPTM7ZC5BPWZ1bmN0aW9uKGEpe3ZhciBiPUkoYSk7YT1KKGEpO3ZhciBjPUkoYSk7YT1KKGEpO3ZhciBkPUkoYSk7YT1aYyhhKTtyZXR1cm4gZShiLGMsZCxhKX07ZC5mPWU7cmV0dXJuIGR9KCksaz1mdW5jdGlvbihhLGIsYyxrKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBnLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiBmLmNhbGwodGhpcyxhKTtjYXNlIDI6cmV0dXJuIGUuY2FsbCh0aGlzLGEsYik7XG5jYXNlIDM6cmV0dXJuIGQuY2FsbCh0aGlzLGEsYixjKTtkZWZhdWx0OnZhciBwPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIHA9MCx1PUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7cDx1Lmxlbmd0aDspdVtwXT1hcmd1bWVudHNbcCszXSwrK3A7cD1uZXcgRih1LDApfXJldHVybiBsLmYoYSxiLGMscCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2suQj0zO2suQT1sLkE7ay5oPWc7ay5hPWY7ay5iPWU7ay5jPWQ7ay5mPWwuZjtyZXR1cm4ga30oKX07XG5aZS5mPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxkPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YjxkLmxlbmd0aDspZFtiXT1hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihkLDApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGIpe2I9UGUoSShhKSxiKTtmb3IodmFyIGM9SihhKTs7KWlmKGMpYj1JKGMpLmNhbGwobnVsbCxiKSxjPUooYyk7ZWxzZSByZXR1cm4gYn1iLkI9MDtiLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBjKGEpfTtiLmY9YztyZXR1cm4gYn0oKX0odmUod2QoYSx3ZChiLHdkKGMsZCkpKSkpfTtaZS5BPWZ1bmN0aW9uKGEpe3ZhciBiPUkoYSksYz1KKGEpO2E9SShjKTt2YXIgZD1KKGMpLGM9SShkKSxkPUooZCk7cmV0dXJuIFplLmYoYixhLGMsZCl9O1plLkI9MztcbmZ1bmN0aW9uICRlKGEpe3ZhciBiPWFmO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxkLGUpe3JldHVybiBiLkM/Yi5DKGEsYyxkLGUpOmIuY2FsbChudWxsLGEsYyxkLGUpfWZ1bmN0aW9uIGQoYyxkKXtyZXR1cm4gYi5jP2IuYyhhLGMsZCk6Yi5jYWxsKG51bGwsYSxjLGQpfWZ1bmN0aW9uIGUoYyl7cmV0dXJuIGIuYj9iLmIoYSxjKTpiLmNhbGwobnVsbCxhLGMpfWZ1bmN0aW9uIGYoKXtyZXR1cm4gYi5hP2IuYShhKTpiLmNhbGwobnVsbCxhKX12YXIgZz1udWxsLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjLGUpe3ZhciBmPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGY9MCxnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7ZjxnLmxlbmd0aDspZ1tmXT1hcmd1bWVudHNbZiszXSwrK2Y7Zj1uZXcgRihnLDApfXJldHVybiBkLmNhbGwodGhpcyxhLGIsYyxmKX1mdW5jdGlvbiBkKGMsZCxlLGYpe3JldHVybiBUZShiLGEsYyxkLGUsTihbZl0sMCkpfVxuYy5CPTM7Yy5BPWZ1bmN0aW9uKGEpe3ZhciBiPUkoYSk7YT1KKGEpO3ZhciBjPUkoYSk7YT1KKGEpO3ZhciBlPUkoYSk7YT1aYyhhKTtyZXR1cm4gZChiLGMsZSxhKX07Yy5mPWQ7cmV0dXJuIGN9KCksZz1mdW5jdGlvbihhLGIsZyx2KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBmLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiBlLmNhbGwodGhpcyxhKTtjYXNlIDI6cmV0dXJuIGQuY2FsbCh0aGlzLGEsYik7Y2FzZSAzOnJldHVybiBjLmNhbGwodGhpcyxhLGIsZyk7ZGVmYXVsdDp2YXIgbD1udWxsO2lmKDM8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBsPTAscD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTMpO2w8cC5sZW5ndGg7KXBbbF09YXJndW1lbnRzW2wrM10sKytsO2w9bmV3IEYocCwwKX1yZXR1cm4gay5mKGEsYixnLGwpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtnLkI9MztnLkE9ay5BO2cuaD1mO2cuYT1cbmU7Zy5iPWQ7Zy5jPWM7Zy5mPWsuZjtyZXR1cm4gZ30oKX1cbmZ1bmN0aW9uIGJmKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsYyl7YT1udWxsPT1hPzA6YTtyZXR1cm4gaGQuYz9oZC5jKGEsYixjKTpoZC5jYWxsKG51bGwsYSl9ZnVuY3Rpb24gYihhLGIpe3ZhciBjPW51bGw9PWE/MDphO3JldHVybiBoZC5iP2hkLmIoYyxiKTpoZC5jYWxsKG51bGwsYyl9ZnVuY3Rpb24gYyhhKXthPW51bGw9PWE/MDphO3JldHVybiBoZC5hP2hkLmEoYSk6aGQuY2FsbChudWxsLGEpfXZhciBkPW51bGwsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjLGQsZSl7dmFyIGY9bnVsbDtpZigzPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgZj0wLGc9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0zKTtmPGcubGVuZ3RoOylnW2ZdPWFyZ3VtZW50c1tmKzNdLCsrZjtmPW5ldyBGKGcsMCl9cmV0dXJuIGIuY2FsbCh0aGlzLGEsYyxkLGYpfWZ1bmN0aW9uIGIoYSxiLGMsZCl7cmV0dXJuIFNlKGhkLG51bGw9PWE/MDphLGIsYyxkKX1hLkI9MzthLkE9ZnVuY3Rpb24oYSl7dmFyIGM9XG5JKGEpO2E9SihhKTt2YXIgZD1JKGEpO2E9SihhKTt2YXIgZT1JKGEpO2E9WmMoYSk7cmV0dXJuIGIoYyxkLGUsYSl9O2EuZj1iO3JldHVybiBhfSgpLGQ9ZnVuY3Rpb24oZCxnLGssbCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYy5jYWxsKHRoaXMsZCk7Y2FzZSAyOnJldHVybiBiLmNhbGwodGhpcyxkLGcpO2Nhc2UgMzpyZXR1cm4gYS5jYWxsKHRoaXMsZCxnLGspO2RlZmF1bHQ6dmFyIGY9bnVsbDtpZigzPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgZj0wLHU9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0zKTtmPHUubGVuZ3RoOyl1W2ZdPWFyZ3VtZW50c1tmKzNdLCsrZjtmPW5ldyBGKHUsMCl9cmV0dXJuIGUuZihkLGcsayxmKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307ZC5CPTM7ZC5BPWUuQTtkLmE9YztkLmI9YjtkLmM9YTtkLmY9ZS5mO3JldHVybiBkfSgpfVxuZnVuY3Rpb24gY2YoYSxiKXtyZXR1cm4gZnVuY3Rpb24gZChiLGYpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3ZhciBlPUUoZik7aWYoZSl7aWYoU2QoZSkpe2Zvcih2YXIgaz1DYyhlKSxsPU0oaykscD1GZShsKSx1PTA7OylpZih1PGwpSWUocCxmdW5jdGlvbigpe3ZhciBkPWIrdSxlPUpiLmIoayx1KTtyZXR1cm4gYS5iP2EuYihkLGUpOmEuY2FsbChudWxsLGQsZSl9KCkpLHUrPTE7ZWxzZSBicmVhaztyZXR1cm4gSGUocC5pYSgpLGQoYitsLERjKGUpKSl9cmV0dXJuIHdkKGZ1bmN0aW9uKCl7dmFyIGQ9SShlKTtyZXR1cm4gYS5iP2EuYihiLGQpOmEuY2FsbChudWxsLGIsZCl9KCksZChiKzEsWmMoZSkpKX1yZXR1cm4gbnVsbH0sbnVsbCxudWxsKX0oMCxiKX1mdW5jdGlvbiBkZihhLGIsYyxkKXt0aGlzLnN0YXRlPWE7dGhpcy5EPWI7dGhpcy5EZD1jO3RoaXMuWGM9ZDt0aGlzLkc9MTYzODY7dGhpcy5vPTY0NTUyOTZ9aD1kZi5wcm90b3R5cGU7XG5oLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXM9PT1ifTtoLlhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGV9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guT2M9ZnVuY3Rpb24oYSxiLGMpe2E9RSh0aGlzLlhjKTtmb3IodmFyIGQ9bnVsbCxlPTAsZj0wOzspaWYoZjxlKXt2YXIgZz1kLmNhKG51bGwsZiksaz1PKGcsMCxudWxsKSxnPU8oZywxLG51bGwpO2cuQz9nLkMoayx0aGlzLGIsYyk6Zy5jYWxsKG51bGwsayx0aGlzLGIsYyk7Zis9MX1lbHNlIGlmKGE9RShhKSlTZChhKT8oZD1DYyhhKSxhPURjKGEpLGs9ZCxlPU0oZCksZD1rKTooZD1JKGEpLGs9TyhkLDAsbnVsbCksZz1PKGQsMSxudWxsKSxnLkM/Zy5DKGssdGhpcyxiLGMpOmcuY2FsbChudWxsLGssdGhpcyxiLGMpLGE9SihhKSxkPW51bGwsZT0wKSxmPTA7ZWxzZSByZXR1cm4gbnVsbH07aC5TPWZ1bmN0aW9uKCl7cmV0dXJuIGNhKHRoaXMpfTtcbmZ1bmN0aW9uIGVmKGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gWShhcmd1bWVudHNbMF0pO2RlZmF1bHQ6cmV0dXJuIGM9YXJndW1lbnRzWzBdLGI9bmV3IEYoYi5zbGljZSgxKSwwLG51bGwpLGQ9bnVsbCE9YiYmKGIubyY2NHx8bT09PWIuSGEpP1BlKGdmLGIpOmIsYj1CLmIoZCxvYiksZD1CLmIoZCxoZiksbmV3IGRmKGMsYixkLG51bGwpfX1mdW5jdGlvbiBZKGEpe3JldHVybiBuZXcgZGYoYSxudWxsLG51bGwsbnVsbCl9XG5mdW5jdGlvbiBqZihhLGIpe2lmKGEgaW5zdGFuY2VvZiBkZil7dmFyIGM9YS5EZDtpZihudWxsIT1jJiYhcihjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpKSl0aHJvdyBFcnJvcihcIlZhbGlkYXRvciByZWplY3RlZCByZWZlcmVuY2Ugc3RhdGVcIik7Yz1hLnN0YXRlO2Euc3RhdGU9YjtudWxsIT1hLlhjJiZ2YyhhLGMsYik7cmV0dXJuIGJ9cmV0dXJuIEljKGEsYil9XG52YXIga2Y9ZnVuY3Rpb24ga2YoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBrZi5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4ga2YuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7Y2FzZSA0OnJldHVybiBrZi5DKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSk7ZGVmYXVsdDpyZXR1cm4ga2YuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10sbmV3IEYoYy5zbGljZSg0KSwwLG51bGwpKX19O1xua2YuYj1mdW5jdGlvbihhLGIpe3ZhciBjO2EgaW5zdGFuY2VvZiBkZj8oYz1hLnN0YXRlLGM9Yi5hP2IuYShjKTpiLmNhbGwobnVsbCxjKSxjPWpmKGEsYykpOmM9SmMuYihhLGIpO3JldHVybiBjfTtrZi5jPWZ1bmN0aW9uKGEsYixjKXtpZihhIGluc3RhbmNlb2YgZGYpe3ZhciBkPWEuc3RhdGU7Yj1iLmI/Yi5iKGQsYyk6Yi5jYWxsKG51bGwsZCxjKTthPWpmKGEsYil9ZWxzZSBhPUpjLmMoYSxiLGMpO3JldHVybiBhfTtrZi5DPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEgaW5zdGFuY2VvZiBkZil7dmFyIGU9YS5zdGF0ZTtiPWIuYz9iLmMoZSxjLGQpOmIuY2FsbChudWxsLGUsYyxkKTthPWpmKGEsYil9ZWxzZSBhPUpjLkMoYSxiLGMsZCk7cmV0dXJuIGF9O2tmLmY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGRmP2pmKGEsU2UoYixhLnN0YXRlLGMsZCxlKSk6SmMuTChhLGIsYyxkLGUpfTtcbmtmLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO3ZhciBkPUooYyksYz1JKGQpLGU9SihkKSxkPUkoZSksZT1KKGUpO3JldHVybiBrZi5mKGIsYSxjLGQsZSl9O2tmLkI9NDtcbmZ1bmN0aW9uIGxmKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjLGQsZSl7cmV0dXJuIFdkKGZ1bmN0aW9uKCl7dmFyIGY9YS5hP2EuYShjKTphLmNhbGwobnVsbCxjKTtyZXR1cm4gcihmKSYmKGY9YS5hP2EuYShkKTphLmNhbGwobnVsbCxkKSxyKGYpJiYoZj1hLmE/YS5hKGUpOmEuY2FsbChudWxsLGUpLHIoZikmJihmPWIuYT9iLmEoYyk6Yi5jYWxsKG51bGwsYykscihmKSkpKT8oZj1iLmE/Yi5hKGQpOmIuY2FsbChudWxsLGQpLHIoZik/Yi5hP2IuYShlKTpiLmNhbGwobnVsbCxlKTpmKTpmfSgpKX1mdW5jdGlvbiBkKGMsZCl7cmV0dXJuIFdkKGZ1bmN0aW9uKCl7dmFyIGU9YS5hP2EuYShjKTphLmNhbGwobnVsbCxjKTtyZXR1cm4gcihlKSYmKGU9YS5hP2EuYShkKTphLmNhbGwobnVsbCxkKSxyKGUpKT8oZT1iLmE/Yi5hKGMpOmIuY2FsbChudWxsLGMpLHIoZSk/Yi5hP2IuYShkKTpiLmNhbGwobnVsbCxkKTplKTplfSgpKX1mdW5jdGlvbiBlKGMpe3ZhciBkPVxuYS5hP2EuYShjKTphLmNhbGwobnVsbCxjKTtjPXIoZCk/Yi5hP2IuYShjKTpiLmNhbGwobnVsbCxjKTpkO3JldHVybiBXZChjKX12YXIgZj1udWxsLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjLGUpe3ZhciBmPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGY9MCxnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7ZjxnLmxlbmd0aDspZ1tmXT1hcmd1bWVudHNbZiszXSwrK2Y7Zj1uZXcgRihnLDApfXJldHVybiBkLmNhbGwodGhpcyxhLGIsYyxmKX1mdW5jdGlvbiBkKGMsZCxlLGcpe3JldHVybiBXZChmdW5jdGlvbigpe3ZhciBrPWYuYyhjLGQsZSk7cmV0dXJuIHIoayk/WGUoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIGQ9YS5hP2EuYShjKTphLmNhbGwobnVsbCxjKTtyZXR1cm4gcihkKT9iLmE/Yi5hKGMpOmIuY2FsbChudWxsLGMpOmR9fShrKSxnKTprfSgpKX1jLkI9MztjLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKTthPUooYSk7dmFyIGM9XG5JKGEpO2E9SihhKTt2YXIgZT1JKGEpO2E9WmMoYSk7cmV0dXJuIGQoYixjLGUsYSl9O2MuZj1kO3JldHVybiBjfSgpLGY9ZnVuY3Rpb24oYSxiLGYsdSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hMDtjYXNlIDE6cmV0dXJuIGUuY2FsbCh0aGlzLGEpO2Nhc2UgMjpyZXR1cm4gZC5jYWxsKHRoaXMsYSxiKTtjYXNlIDM6cmV0dXJuIGMuY2FsbCh0aGlzLGEsYixmKTtkZWZhdWx0OnZhciBrPW51bGw7aWYoMzxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGs9MCxsPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMyk7azxsLmxlbmd0aDspbFtrXT1hcmd1bWVudHNbayszXSwrK2s7az1uZXcgRihsLDApfXJldHVybiBnLmYoYSxiLGYsayl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2YuQj0zO2YuQT1nLkE7Zi5oPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2YuYT1lO2YuYj1kO2YuYz1jO2YuZj1nLmY7cmV0dXJuIGZ9KCl9XG52YXIgbWY9ZnVuY3Rpb24gbWYoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBtZi5hKGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiBtZi5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gbWYuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7Y2FzZSA0OnJldHVybiBtZi5DKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSk7ZGVmYXVsdDpyZXR1cm4gbWYuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10sbmV3IEYoYy5zbGljZSg0KSwwLG51bGwpKX19O1xubWYuYT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjLGQpe3ZhciBlPWEuYT9hLmEoZCk6YS5jYWxsKG51bGwsZCk7cmV0dXJuIGIuYj9iLmIoYyxlKTpiLmNhbGwobnVsbCxjLGUpfWZ1bmN0aW9uIGQoYSl7cmV0dXJuIGIuYT9iLmEoYSk6Yi5jYWxsKG51bGwsYSl9ZnVuY3Rpb24gZSgpe3JldHVybiBiLmg/Yi5oKCk6Yi5jYWxsKG51bGwpfXZhciBmPW51bGwsZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGMpe3ZhciBlPW51bGw7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGU9MCxmPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMik7ZTxmLmxlbmd0aDspZltlXT1hcmd1bWVudHNbZSsyXSwrK2U7ZT1uZXcgRihmLDApfXJldHVybiBkLmNhbGwodGhpcyxhLGIsZSl9ZnVuY3Rpb24gZChjLGQsZSl7ZD1RZShhLGQsZSk7cmV0dXJuIGIuYj9iLmIoYyxkKTpiLmNhbGwobnVsbCxjLGQpfWMuQj0yO2MuQT1mdW5jdGlvbihhKXt2YXIgYj1cbkkoYSk7YT1KKGEpO3ZhciBjPUkoYSk7YT1aYyhhKTtyZXR1cm4gZChiLGMsYSl9O2MuZj1kO3JldHVybiBjfSgpLGY9ZnVuY3Rpb24oYSxiLGYpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGUuY2FsbCh0aGlzKTtjYXNlIDE6cmV0dXJuIGQuY2FsbCh0aGlzLGEpO2Nhc2UgMjpyZXR1cm4gYy5jYWxsKHRoaXMsYSxiKTtkZWZhdWx0OnZhciBrPW51bGw7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGs9MCxsPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMik7azxsLmxlbmd0aDspbFtrXT1hcmd1bWVudHNbaysyXSwrK2s7az1uZXcgRihsLDApfXJldHVybiBnLmYoYSxiLGspfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtmLkI9MjtmLkE9Zy5BO2YuaD1lO2YuYT1kO2YuYj1jO2YuZj1nLmY7cmV0dXJuIGZ9KCl9fTtcbm1mLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYz1FKGIpO2lmKGMpe2lmKFNkKGMpKXtmb3IodmFyIGQ9Q2MoYyksZT1NKGQpLGY9RmUoZSksZz0wOzspaWYoZzxlKUllKGYsZnVuY3Rpb24oKXt2YXIgYj1KYi5iKGQsZyk7cmV0dXJuIGEuYT9hLmEoYik6YS5jYWxsKG51bGwsYil9KCkpLGcrPTE7ZWxzZSBicmVhaztyZXR1cm4gSGUoZi5pYSgpLG1mLmIoYSxEYyhjKSkpfXJldHVybiB3ZChmdW5jdGlvbigpe3ZhciBiPUkoYyk7cmV0dXJuIGEuYT9hLmEoYik6YS5jYWxsKG51bGwsYil9KCksbWYuYihhLFpjKGMpKSl9cmV0dXJuIG51bGx9LG51bGwsbnVsbCl9O1xubWYuYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG5ldyBCZShudWxsLGZ1bmN0aW9uKCl7dmFyIGQ9RShiKSxlPUUoYyk7aWYoZCYmZSl7dmFyIGY9d2QsZztnPUkoZCk7dmFyIGs9SShlKTtnPWEuYj9hLmIoZyxrKTphLmNhbGwobnVsbCxnLGspO2Q9ZihnLG1mLmMoYSxaYyhkKSxaYyhlKSkpfWVsc2UgZD1udWxsO3JldHVybiBkfSxudWxsLG51bGwpfTttZi5DPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3ZhciBlPUUoYiksZj1FKGMpLGc9RShkKTtpZihlJiZmJiZnKXt2YXIgaz13ZCxsO2w9SShlKTt2YXIgcD1JKGYpLHU9SShnKTtsPWEuYz9hLmMobCxwLHUpOmEuY2FsbChudWxsLGwscCx1KTtlPWsobCxtZi5DKGEsWmMoZSksWmMoZiksWmMoZykpKX1lbHNlIGU9bnVsbDtyZXR1cm4gZX0sbnVsbCxudWxsKX07XG5tZi5mPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZnVuY3Rpb24gayhhKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYj1tZi5iKEUsYSk7cmV0dXJuIFhlKGRlLGIpP3dkKG1mLmIoSSxiKSxrKG1mLmIoWmMsYikpKTpudWxsfSxudWxsLG51bGwpfTtyZXR1cm4gbWYuYihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gUGUoYSxiKX19KGYpLGYoRWQuZihlLGQsTihbYyxiXSwwKSkpKX07bWYuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpLGM9SihhKTthPUkoYyk7dmFyIGQ9SihjKSxjPUkoZCksZT1KKGQpLGQ9SShlKSxlPUooZSk7cmV0dXJuIG1mLmYoYixhLGMsZCxlKX07bWYuQj00O1xuZnVuY3Rpb24gbmYoYSxiKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJBc3NlcnQgZmFpbGVkOiAobnVtYmVyPyBuKVwiKTtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXtpZigwPGEpe3ZhciBjPUUoYik7cmV0dXJuIGM/d2QoSShjKSxuZihhLTEsWmMoYykpKTpudWxsfXJldHVybiBudWxsfSxudWxsLG51bGwpfWZ1bmN0aW9uIG9mKGEsYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQXNzZXJ0IGZhaWxlZDogKG51bWJlcj8gbilcIik7cmV0dXJuIG5ldyBCZShudWxsLGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjKGEsYil9fShmdW5jdGlvbihhLGIpe2Zvcig7Oyl7dmFyIGM9RShiKTtpZigwPGEmJmMpe3ZhciBkPWEtMSxjPVpjKGMpO2E9ZDtiPWN9ZWxzZSByZXR1cm4gY319KSxudWxsLG51bGwpfWZ1bmN0aW9uIHBmKGEpe3JldHVybiBtZi5jKGZ1bmN0aW9uKGEpe3JldHVybiBhfSxhLG9mKDEsYSkpfVxudmFyIHFmPWZ1bmN0aW9uIHFmKGIpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3ZhciBjPUUoYik7cmV0dXJuIGM/TWUuYihjLHFmLmE/cWYuYShjKTpxZi5jYWxsKG51bGwsYykpOm51bGx9LG51bGwsbnVsbCl9O2Z1bmN0aW9uIHJmKGEpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe3JldHVybiB3ZChhLHJmKGEpKX0sbnVsbCxudWxsKX1mdW5jdGlvbiBzZihhLGIpe3JldHVybiBuZihhLHJmKGIpKX1cbnZhciB0Zj1mdW5jdGlvbiB0ZihiLGMpe3JldHVybiB3ZChjLG5ldyBCZShudWxsLGZ1bmN0aW9uKCl7dmFyIGQ9Yi5hP2IuYShjKTpiLmNhbGwobnVsbCxjKTtyZXR1cm4gdGYuYj90Zi5iKGIsZCk6dGYuY2FsbChudWxsLGIsZCl9LG51bGwsbnVsbCkpfSx1Zj1mdW5jdGlvbiB1ZihiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIHVmLmIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk7ZGVmYXVsdDpyZXR1cm4gdWYuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLG5ldyBGKGMuc2xpY2UoMiksMCxudWxsKSl9fTtcbnVmLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYz1FKGEpLGQ9RShiKTtyZXR1cm4gYyYmZD93ZChJKGMpLHdkKEkoZCksdWYuYihaYyhjKSxaYyhkKSkpKTpudWxsfSxudWxsLG51bGwpfTt1Zi5mPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgZD1tZi5iKEUsRWQuZihjLGIsTihbYV0sMCkpKTtyZXR1cm4gWGUoZGUsZCk/TWUuYihtZi5iKEksZCksUGUodWYsbWYuYihaYyxkKSkpOm51bGx9LG51bGwsbnVsbCl9O3VmLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKSxjPUooYSk7YT1JKGMpO2M9SihjKTtyZXR1cm4gdWYuZihiLGEsYyl9O3VmLkI9MjtmdW5jdGlvbiB2ZihhLGIpe3JldHVybiBvZigxLHVmLmIocmYoYSksYikpfWZ1bmN0aW9uIHdmKGEsYil7cmV0dXJuIFBlKE1lLFFlKG1mLGEsYikpfVxuZnVuY3Rpb24geGYoYSxiKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYz1FKGIpO2lmKGMpe2lmKFNkKGMpKXtmb3IodmFyIGQ9Q2MoYyksZT1NKGQpLGY9RmUoZSksZz0wOzspaWYoZzxlKXt2YXIgaztrPUpiLmIoZCxnKTtrPWEuYT9hLmEoayk6YS5jYWxsKG51bGwsayk7cihrKSYmSWUoZixKYi5iKGQsZykpO2crPTF9ZWxzZSBicmVhaztyZXR1cm4gSGUoZi5pYSgpLHhmKGEsRGMoYykpKX1kPUkoYyk7Yz1aYyhjKTtyZXR1cm4gcihhLmE/YS5hKGQpOmEuY2FsbChudWxsLGQpKT93ZChkLHhmKGEsYykpOnhmKGEsYyl9cmV0dXJuIG51bGx9LG51bGwsbnVsbCl9XG52YXIgeWY9ZnVuY3Rpb24geWYoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB5Zi5oKCk7Y2FzZSAxOnJldHVybiB5Zi5hKGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiB5Zi5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4geWYuYyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGMubGVuZ3RoKV0uam9pbihcIlwiKSk7fX07eWYuaD1mdW5jdGlvbigpe3JldHVybiBGZH07eWYuYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07XG55Zi5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGwhPWE/bnVsbCE9YSYmKGEuRyY0fHxtPT09YS5aYyk/eWQoeWMoYWUoeGMsd2MoYSksYikpLEtkKGEpKTphZShIYixhLGIpOmFlKEVkLCRjLGIpfTt5Zi5jPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbCE9YSYmKGEuRyY0fHxtPT09YS5aYyk/eWQoeWMoZWUoYixOZSx3YyhhKSxjKSksS2QoYSkpOmVlKGIsRWQsYSxjKX07eWYuQj0zO2Z1bmN0aW9uIHpmKGEsYixjKXtyZXR1cm4geWYuYihGZCxtZi5jKGEsYixjKSl9XG52YXIgQWY9ZnVuY3Rpb24gQWYoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAzOnJldHVybiBBZi5jKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtjYXNlIDQ6cmV0dXJuIEFmLkMoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdKTtjYXNlIDU6cmV0dXJuIEFmLkwoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSk7Y2FzZSA2OnJldHVybiBBZi5oYShhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSk7ZGVmYXVsdDpyZXR1cm4gQWYuZihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10sXG5hcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdLG5ldyBGKGMuc2xpY2UoNiksMCxudWxsKSl9fTtBZi5jPWZ1bmN0aW9uKGEsYixjKXtiPUUoYik7dmFyIGQ9SShiKTtyZXR1cm4oYj1KKGIpKT9RLmMoYSxkLEFmLmMoQi5iKGEsZCksYixjKSk6US5jKGEsZCxmdW5jdGlvbigpe3ZhciBiPUIuYihhLGQpO3JldHVybiBjLmE/Yy5hKGIpOmMuY2FsbChudWxsLGIpfSgpKX07QWYuQz1mdW5jdGlvbihhLGIsYyxkKXtiPUUoYik7dmFyIGU9SShiKTtyZXR1cm4oYj1KKGIpKT9RLmMoYSxlLEFmLkMoQi5iKGEsZSksYixjLGQpKTpRLmMoYSxlLGZ1bmN0aW9uKCl7dmFyIGI9Qi5iKGEsZSk7cmV0dXJuIGMuYj9jLmIoYixkKTpjLmNhbGwobnVsbCxiLGQpfSgpKX07XG5BZi5MPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1FKGIpO3ZhciBmPUkoYik7cmV0dXJuKGI9SihiKSk/US5jKGEsZixBZi5MKEIuYihhLGYpLGIsYyxkLGUpKTpRLmMoYSxmLGZ1bmN0aW9uKCl7dmFyIGI9Qi5iKGEsZik7cmV0dXJuIGMuYz9jLmMoYixkLGUpOmMuY2FsbChudWxsLGIsZCxlKX0oKSl9O0FmLmhhPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtiPUUoYik7dmFyIGc9SShiKTtyZXR1cm4oYj1KKGIpKT9RLmMoYSxnLEFmLmhhKEIuYihhLGcpLGIsYyxkLGUsZikpOlEuYyhhLGcsZnVuY3Rpb24oKXt2YXIgYj1CLmIoYSxnKTtyZXR1cm4gYy5DP2MuQyhiLGQsZSxmKTpjLmNhbGwobnVsbCxiLGQsZSxmKX0oKSl9O0FmLmY9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGs9RShiKTtiPUkoayk7cmV0dXJuKGs9SihrKSk/US5jKGEsYixUZShBZixCLmIoYSxiKSxrLGMsZCxOKFtlLGYsZ10sMCkpKTpRLmMoYSxiLFRlKGMsQi5iKGEsYiksZCxlLGYsTihbZ10sMCkpKX07XG5BZi5BPWZ1bmN0aW9uKGEpe3ZhciBiPUkoYSksYz1KKGEpO2E9SShjKTt2YXIgZD1KKGMpLGM9SShkKSxlPUooZCksZD1JKGUpLGY9SihlKSxlPUkoZiksZz1KKGYpLGY9SShnKSxnPUooZyk7cmV0dXJuIEFmLmYoYixhLGMsZCxlLGYsZyl9O0FmLkI9NjtmdW5jdGlvbiBCZihhKXt2YXIgYj1DZixjPURmLGQ9bmV3IHEobnVsbCwxLFtFZixGZl0sbnVsbCk7cmV0dXJuIFEuYyhhLGIsZnVuY3Rpb24oKXt2YXIgZT1CLmIoYSxiKTtyZXR1cm4gYy5iP2MuYihlLGQpOmMuY2FsbChudWxsLGUsZCl9KCkpfWZ1bmN0aW9uIEdmKGEsYil7dGhpcy4kPWE7dGhpcy5nPWJ9XG5mdW5jdGlvbiBIZihhKXtyZXR1cm4gbmV3IEdmKGEsW251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0pfWZ1bmN0aW9uIElmKGEsYixjKXthLmdbYl09Y31mdW5jdGlvbiBKZihhKXtyZXR1cm4gbmV3IEdmKGEuJCxDYihhLmcpKX1mdW5jdGlvbiBLZihhKXthPWEucztyZXR1cm4gMzI+YT8wOmEtMT4+PjU8PDV9ZnVuY3Rpb24gTGYoYSxiLGMpe2Zvcig7Oyl7aWYoMD09PWIpcmV0dXJuIGM7dmFyIGQ9SGYoYSk7ZC5nWzBdPWM7Yz1kO2ItPTV9fVxudmFyIE1mPWZ1bmN0aW9uIE1mKGIsYyxkLGUpe3ZhciBmPUpmKGQpLGc9Yi5zLTE+Pj5jJjMxOzU9PT1jP2YuZ1tnXT1lOihkPWQuZ1tnXSxudWxsIT1kPyhjLT01LGI9TWYuQz9NZi5DKGIsYyxkLGUpOk1mLmNhbGwobnVsbCxiLGMsZCxlKSk6Yj1MZihudWxsLGMtNSxlKSxmLmdbZ109Yik7cmV0dXJuIGZ9O2Z1bmN0aW9uIE5mKGEsYil7dGhyb3cgRXJyb3IoW3QoXCJObyBpdGVtIFwiKSx0KGEpLHQoXCIgaW4gdmVjdG9yIG9mIGxlbmd0aCBcIiksdChiKV0uam9pbihcIlwiKSk7fWZ1bmN0aW9uIE9mKGEsYil7aWYoYj49S2YoYSkpcmV0dXJuIGEuRmE7Zm9yKHZhciBjPWEucm9vdCxkPWEuc2hpZnQ7OylpZigwPGQpdmFyIGU9ZC01LGM9Yy5nW2I+Pj5kJjMxXSxkPWU7ZWxzZSByZXR1cm4gYy5nfWZ1bmN0aW9uIFBmKGEsYil7cmV0dXJuIDA8PWImJmI8YS5zP09mKGEsYik6TmYoYixhLnMpfVxudmFyIFFmPWZ1bmN0aW9uIFFmKGIsYyxkLGUsZil7dmFyIGc9SmYoZCk7aWYoMD09PWMpZy5nW2UmMzFdPWY7ZWxzZXt2YXIgaz1lPj4+YyYzMTtjLT01O2Q9ZC5nW2tdO2I9UWYuTD9RZi5MKGIsYyxkLGUsZik6UWYuY2FsbChudWxsLGIsYyxkLGUsZik7SWYoZyxrLGIpfXJldHVybiBnfSxSZj1mdW5jdGlvbiBSZihiLGMsZCl7dmFyIGU9Yi5zLTI+Pj5jJjMxO2lmKDU8Yyl7Yy09NTt2YXIgZj1kLmdbZV07Yj1SZi5jP1JmLmMoYixjLGYpOlJmLmNhbGwobnVsbCxiLGMsZik7aWYobnVsbD09YiYmMD09PWUpcmV0dXJuIG51bGw7ZD1KZihkKTtkLmdbZV09YjtyZXR1cm4gZH1pZigwPT09ZSlyZXR1cm4gbnVsbDtkPUpmKGQpO2QuZ1tlXT1udWxsO3JldHVybiBkfTtmdW5jdGlvbiBTZihhLGIsYyxkLGUsZil7dGhpcy51PWE7dGhpcy5wYz1iO3RoaXMuZz1jO3RoaXMuZWI9ZDt0aGlzLnN0YXJ0PWU7dGhpcy5lbmQ9Zn1cblNmLnByb3RvdHlwZS5JYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnU8dGhpcy5lbmR9O1NmLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7MzI9PT10aGlzLnUtdGhpcy5wYyYmKHRoaXMuZz1PZih0aGlzLmViLHRoaXMudSksdGhpcy5wYys9MzIpO3ZhciBhPXRoaXMuZ1t0aGlzLnUmMzFdO3RoaXMudSs9MTtyZXR1cm4gYX07ZnVuY3Rpb24gVihhLGIsYyxkLGUsZil7dGhpcy5EPWE7dGhpcy5zPWI7dGhpcy5zaGlmdD1jO3RoaXMucm9vdD1kO3RoaXMuRmE9ZTt0aGlzLnY9Zjt0aGlzLm89MTY3NjY4NTExO3RoaXMuRz04MTk2fWg9Vi5wcm90b3R5cGU7aC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBNYyh0aGlzKX07aC5lcXVpdj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GKG51bGwsYSl9O1xuaC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLlc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUWIuYyh0aGlzLGIsbnVsbCl9O2guVD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBiP0piLmModGhpcyxiLGMpOmN9O2guY2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUGYodGhpcyxiKVtiJjMxXX07aC5RYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIDA8PWImJmI8dGhpcy5zP09mKHRoaXMsYilbYiYzMV06Y307XG5oLnhjPWZ1bmN0aW9uKGEsYixjKXtpZigwPD1iJiZiPHRoaXMucylyZXR1cm4gS2YodGhpcyk8PWI/KGE9Q2IodGhpcy5GYSksYVtiJjMxXT1jLG5ldyBWKHRoaXMuRCx0aGlzLnMsdGhpcy5zaGlmdCx0aGlzLnJvb3QsYSxudWxsKSk6bmV3IFYodGhpcy5ELHRoaXMucyx0aGlzLnNoaWZ0LFFmKHRoaXMsdGhpcy5zaGlmdCx0aGlzLnJvb3QsYixjKSx0aGlzLkZhLG51bGwpO2lmKGI9PT10aGlzLnMpcmV0dXJuIEhiKHRoaXMsYyk7dGhyb3cgRXJyb3IoW3QoXCJJbmRleCBcIiksdChiKSx0KFwiIG91dCBvZiBib3VuZHMgIFswLFwiKSx0KHRoaXMucyksdChcIl1cIildLmpvaW4oXCJcIikpO307aC5DYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucztyZXR1cm4gbmV3IFNmKDAsMCwwPE0odGhpcyk/T2YodGhpcywwKTpudWxsLHRoaXMsMCxhKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRH07aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc307XG5oLnZjPWZ1bmN0aW9uKCl7cmV0dXJuIEpiLmIodGhpcywwKX07aC53Yz1mdW5jdGlvbigpe3JldHVybiBKYi5iKHRoaXMsMSl9O2guYWM9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLnM/SmIuYih0aGlzLHRoaXMucy0xKTpudWxsfTtcbmguYmM9ZnVuY3Rpb24oKXtpZigwPT09dGhpcy5zKXRocm93IEVycm9yKFwiQ2FuJ3QgcG9wIGVtcHR5IHZlY3RvclwiKTtpZigxPT09dGhpcy5zKXJldHVybiBnYyhGZCx0aGlzLkQpO2lmKDE8dGhpcy5zLUtmKHRoaXMpKXJldHVybiBuZXcgVih0aGlzLkQsdGhpcy5zLTEsdGhpcy5zaGlmdCx0aGlzLnJvb3QsdGhpcy5GYS5zbGljZSgwLC0xKSxudWxsKTt2YXIgYT1PZih0aGlzLHRoaXMucy0yKSxiPVJmKHRoaXMsdGhpcy5zaGlmdCx0aGlzLnJvb3QpLGI9bnVsbD09Yj9XOmIsYz10aGlzLnMtMTtyZXR1cm4gNTx0aGlzLnNoaWZ0JiZudWxsPT1iLmdbMV0/bmV3IFYodGhpcy5ELGMsdGhpcy5zaGlmdC01LGIuZ1swXSxhLG51bGwpOm5ldyBWKHRoaXMuRCxjLHRoaXMuc2hpZnQsYixhLG51bGwpfTtoLm5jPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5zP25ldyB1ZCh0aGlzLHRoaXMucy0xLG51bGwpOm51bGx9O1xuaC5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52O3JldHVybiBudWxsIT1hP2E6dGhpcy52PWE9ZGQodGhpcyl9O2guRj1mdW5jdGlvbihhLGIpe2lmKGIgaW5zdGFuY2VvZiBWKWlmKHRoaXMucz09PU0oYikpZm9yKHZhciBjPUtjKHRoaXMpLGQ9S2MoYik7OylpZihyKGMuSWEoKSkpe3ZhciBlPWMubmV4dCgpLGY9ZC5uZXh0KCk7aWYoIUMuYihlLGYpKXJldHVybiExfWVsc2UgcmV0dXJuITA7ZWxzZSByZXR1cm4hMTtlbHNlIHJldHVybiB2ZCh0aGlzLGIpfTtoLlBiPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBUZih0aGlzLnMsdGhpcy5zaGlmdCxVZi5hP1VmLmEodGhpcy5yb290KTpVZi5jYWxsKG51bGwsdGhpcy5yb290KSxWZi5hP1ZmLmEodGhpcy5GYSk6VmYuY2FsbChudWxsLHRoaXMuRmEpKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZChGZCx0aGlzLkQpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGlkKHRoaXMsYil9O1xuaC5FYT1mdW5jdGlvbihhLGIsYyl7YT0wO2Zvcih2YXIgZD1jOzspaWYoYTx0aGlzLnMpe3ZhciBlPU9mKHRoaXMsYSk7Yz1lLmxlbmd0aDthOmZvcih2YXIgZj0wOzspaWYoZjxjKXZhciBnPWVbZl0sZD1iLmI/Yi5iKGQsZyk6Yi5jYWxsKG51bGwsZCxnKSxmPWYrMTtlbHNle2U9ZDticmVhayBhfWErPWM7ZD1lfWVsc2UgcmV0dXJuIGR9O2guWmE9ZnVuY3Rpb24oYSxiLGMpe2lmKFwibnVtYmVyXCI9PT10eXBlb2YgYilyZXR1cm4gYmModGhpcyxiLGMpO3Rocm93IEVycm9yKFwiVmVjdG9yJ3Mga2V5IGZvciBhc3NvYyBtdXN0IGJlIGEgbnVtYmVyLlwiKTt9O1xuaC5ZPWZ1bmN0aW9uKCl7aWYoMD09PXRoaXMucylyZXR1cm4gbnVsbDtpZigzMj49dGhpcy5zKXJldHVybiBuZXcgRih0aGlzLkZhLDAsbnVsbCk7dmFyIGE7YTp7YT10aGlzLnJvb3Q7Zm9yKHZhciBiPXRoaXMuc2hpZnQ7OylpZigwPGIpYi09NSxhPWEuZ1swXTtlbHNle2E9YS5nO2JyZWFrIGF9fXJldHVybiBXZj9XZih0aGlzLGEsMCwwKTpYZi5jYWxsKG51bGwsdGhpcyxhLDAsMCl9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgVihiLHRoaXMucyx0aGlzLnNoaWZ0LHRoaXMucm9vdCx0aGlzLkZhLHRoaXMudil9O1xuaC5YPWZ1bmN0aW9uKGEsYil7aWYoMzI+dGhpcy5zLUtmKHRoaXMpKXtmb3IodmFyIGM9dGhpcy5GYS5sZW5ndGgsZD1BcnJheShjKzEpLGU9MDs7KWlmKGU8YylkW2VdPXRoaXMuRmFbZV0sZSs9MTtlbHNlIGJyZWFrO2RbY109YjtyZXR1cm4gbmV3IFYodGhpcy5ELHRoaXMucysxLHRoaXMuc2hpZnQsdGhpcy5yb290LGQsbnVsbCl9Yz0oZD10aGlzLnM+Pj41PjE8PHRoaXMuc2hpZnQpP3RoaXMuc2hpZnQrNTp0aGlzLnNoaWZ0O2Q/KGQ9SGYobnVsbCksSWYoZCwwLHRoaXMucm9vdCksSWYoZCwxLExmKG51bGwsdGhpcy5zaGlmdCxuZXcgR2YobnVsbCx0aGlzLkZhKSkpKTpkPU1mKHRoaXMsdGhpcy5zaGlmdCx0aGlzLnJvb3QsbmV3IEdmKG51bGwsdGhpcy5GYSkpO3JldHVybiBuZXcgVih0aGlzLkQsdGhpcy5zKzEsYyxkLFtiXSxudWxsKX07XG5oLmNhbGw9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIHRoaXMuY2EobnVsbCxjKTtjYXNlIDM6cmV0dXJuIHRoaXMuUWEobnVsbCxjLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5jYShudWxsLGMpfTthLmM9ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLlFhKG51bGwsYyxkKX07cmV0dXJuIGF9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O2guYT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jYShudWxsLGEpfTtoLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5RYShudWxsLGEsYil9O1xudmFyIFc9bmV3IEdmKG51bGwsW251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0pLEZkPW5ldyBWKG51bGwsMCw1LFcsW10sZWQpO2Z1bmN0aW9uIFlmKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDMyPmIpcmV0dXJuIG5ldyBWKG51bGwsYiw1LFcsYSxudWxsKTtmb3IodmFyIGM9MzIsZD0obmV3IFYobnVsbCwzMiw1LFcsYS5zbGljZSgwLDMyKSxudWxsKSkuUGIobnVsbCk7OylpZihjPGIpdmFyIGU9YysxLGQ9TmUuYihkLGFbY10pLGM9ZTtlbHNlIHJldHVybiB5YyhkKX1WLnByb3RvdHlwZVt6Yl09ZnVuY3Rpb24oKXtyZXR1cm4gYmQodGhpcyl9O2Z1bmN0aW9uIFpmKGEpe3JldHVybiBzYihhKT9ZZihhKTp5YyhhZSh4Yyx3YyhGZCksYSkpfVxudmFyICRmPWZ1bmN0aW9uICRmKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztyZXR1cm4gJGYuZigwPGMubGVuZ3RoP25ldyBGKGMuc2xpY2UoMCksMCxudWxsKTpudWxsKX07JGYuZj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEYmJjA9PT1hLnU/WWYoYS5nKTpaZihhKX07JGYuQj0wOyRmLkE9ZnVuY3Rpb24oYSl7cmV0dXJuICRmLmYoRShhKSl9O2Z1bmN0aW9uIGFnKGEsYixjLGQsZSxmKXt0aGlzLmFiPWE7dGhpcy5ub2RlPWI7dGhpcy51PWM7dGhpcy5CYT1kO3RoaXMuRD1lO3RoaXMudj1mO3RoaXMubz0zMjM3NTAyMDt0aGlzLkc9MTUzNn1oPWFnLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07XG5oLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTSh0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guS2E9ZnVuY3Rpb24oKXtpZih0aGlzLkJhKzE8dGhpcy5ub2RlLmxlbmd0aCl7dmFyIGE7YT10aGlzLmFiO3ZhciBiPXRoaXMubm9kZSxjPXRoaXMudSxkPXRoaXMuQmErMTthPVdmP1dmKGEsYixjLGQpOlhmLmNhbGwobnVsbCxhLGIsYyxkKTtyZXR1cm4gbnVsbD09YT9udWxsOmF9cmV0dXJuIEVjKHRoaXMpfTtcbmguUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWRkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZChGZCx0aGlzLkQpfTtoLkRhPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz10aGlzLmFiO3ZhciBkPXRoaXMudSt0aGlzLkJhLGU9TSh0aGlzLmFiKTtjPWJnP2JnKGMsZCxlKTpjZy5jYWxsKG51bGwsYyxkLGUpO3JldHVybiBpZChjLGIpfTtoLkVhPWZ1bmN0aW9uKGEsYixjKXthPXRoaXMuYWI7dmFyIGQ9dGhpcy51K3RoaXMuQmEsZT1NKHRoaXMuYWIpO2E9Ymc/YmcoYSxkLGUpOmNnLmNhbGwobnVsbCxhLGQsZSk7cmV0dXJuIGpkKGEsYixjKX07aC5BYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbdGhpcy5CYV19O1xuaC5PYT1mdW5jdGlvbigpe2lmKHRoaXMuQmErMTx0aGlzLm5vZGUubGVuZ3RoKXt2YXIgYTthPXRoaXMuYWI7dmFyIGI9dGhpcy5ub2RlLGM9dGhpcy51LGQ9dGhpcy5CYSsxO2E9V2Y/V2YoYSxiLGMsZCk6WGYuY2FsbChudWxsLGEsYixjLGQpO3JldHVybiBudWxsPT1hPyRjOmF9cmV0dXJuIERjKHRoaXMpfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307aC50Yz1mdW5jdGlvbigpe3ZhciBhPXRoaXMubm9kZTtyZXR1cm4gbmV3IEVlKGEsdGhpcy5CYSxhLmxlbmd0aCl9O2gudWM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnUrdGhpcy5ub2RlLmxlbmd0aDtpZihhPEViKHRoaXMuYWIpKXt2YXIgYj10aGlzLmFiLGM9T2YodGhpcy5hYixhKTtyZXR1cm4gV2Y/V2YoYixjLGEsMCk6WGYuY2FsbChudWxsLGIsYyxhLDApfXJldHVybiAkY307XG5oLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZGc/ZGcodGhpcy5hYix0aGlzLm5vZGUsdGhpcy51LHRoaXMuQmEsYik6WGYuY2FsbChudWxsLHRoaXMuYWIsdGhpcy5ub2RlLHRoaXMudSx0aGlzLkJhLGIpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2QoYix0aGlzKX07aC5zYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudSt0aGlzLm5vZGUubGVuZ3RoO2lmKGE8RWIodGhpcy5hYikpe3ZhciBiPXRoaXMuYWIsYz1PZih0aGlzLmFiLGEpO3JldHVybiBXZj9XZihiLGMsYSwwKTpYZi5jYWxsKG51bGwsYixjLGEsMCl9cmV0dXJuIG51bGx9O2FnLnByb3RvdHlwZVt6Yl09ZnVuY3Rpb24oKXtyZXR1cm4gYmQodGhpcyl9O1xuZnVuY3Rpb24gWGYoYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO3N3aXRjaChiLmxlbmd0aCl7Y2FzZSAzOnJldHVybiBiPWFyZ3VtZW50c1swXSxjPWFyZ3VtZW50c1sxXSxkPWFyZ3VtZW50c1syXSxuZXcgYWcoYixQZihiLGMpLGMsZCxudWxsLG51bGwpO2Nhc2UgNDpyZXR1cm4gV2YoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdKTtjYXNlIDU6cmV0dXJuIGRnKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0pO2RlZmF1bHQ6dGhyb3cgRXJyb3IoW3QoXCJJbnZhbGlkIGFyaXR5OiBcIiksdChiLmxlbmd0aCldLmpvaW4oXCJcIikpO319ZnVuY3Rpb24gV2YoYSxiLGMsZCl7cmV0dXJuIG5ldyBhZyhhLGIsYyxkLG51bGwsbnVsbCl9XG5mdW5jdGlvbiBkZyhhLGIsYyxkLGUpe3JldHVybiBuZXcgYWcoYSxiLGMsZCxlLG51bGwpfWZ1bmN0aW9uIGVnKGEsYixjLGQsZSl7dGhpcy5EPWE7dGhpcy5lYj1iO3RoaXMuc3RhcnQ9Yzt0aGlzLmVuZD1kO3RoaXMudj1lO3RoaXMubz0xNjc2NjY0NjM7dGhpcy5HPTgxOTJ9aD1lZy5wcm90b3R5cGU7aC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBNYyh0aGlzKX07aC5lcXVpdj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GKG51bGwsYSl9O1xuaC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLlc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUWIuYyh0aGlzLGIsbnVsbCl9O2guVD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBiP0piLmModGhpcyxiLGMpOmN9O2guY2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD5ifHx0aGlzLmVuZDw9dGhpcy5zdGFydCtiP05mKGIsdGhpcy5lbmQtdGhpcy5zdGFydCk6SmIuYih0aGlzLmViLHRoaXMuc3RhcnQrYil9O1xuaC5RYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIDA+Ynx8dGhpcy5lbmQ8PXRoaXMuc3RhcnQrYj9jOkpiLmModGhpcy5lYix0aGlzLnN0YXJ0K2IsYyl9O2gueGM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc3RhcnQrYjthPXRoaXMuRDtjPVEuYyh0aGlzLmViLGQsYyk7Yj10aGlzLnN0YXJ0O3ZhciBlPXRoaXMuZW5kLGQ9ZCsxLGQ9ZT5kP2U6ZDtyZXR1cm4gZmcuTD9mZy5MKGEsYyxiLGQsbnVsbCk6ZmcuY2FsbChudWxsLGEsYyxiLGQsbnVsbCl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guWj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fTtoLmFjPWZ1bmN0aW9uKCl7cmV0dXJuIEpiLmIodGhpcy5lYix0aGlzLmVuZC0xKX07XG5oLmJjPWZ1bmN0aW9uKCl7aWYodGhpcy5zdGFydD09PXRoaXMuZW5kKXRocm93IEVycm9yKFwiQ2FuJ3QgcG9wIGVtcHR5IHZlY3RvclwiKTt2YXIgYT10aGlzLkQsYj10aGlzLmViLGM9dGhpcy5zdGFydCxkPXRoaXMuZW5kLTE7cmV0dXJuIGZnLkw/ZmcuTChhLGIsYyxkLG51bGwpOmZnLmNhbGwobnVsbCxhLGIsYyxkLG51bGwpfTtoLm5jPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQhPT10aGlzLmVuZD9uZXcgdWQodGhpcyx0aGlzLmVuZC10aGlzLnN0YXJ0LTEsbnVsbCk6bnVsbH07aC5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52O3JldHVybiBudWxsIT1hP2E6dGhpcy52PWE9ZGQodGhpcyl9O2guRj1mdW5jdGlvbihhLGIpe3JldHVybiB2ZCh0aGlzLGIpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHlkKEZkLHRoaXMuRCl9O2guRGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaWQodGhpcyxiKX07aC5FYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGpkKHRoaXMsYixjKX07XG5oLlphPWZ1bmN0aW9uKGEsYixjKXtpZihcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGJjKHRoaXMsYixjKTt0aHJvdyBFcnJvcihcIlN1YnZlYydzIGtleSBmb3IgYXNzb2MgbXVzdCBiZSBhIG51bWJlci5cIik7fTtoLlk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24gZChlKXtyZXR1cm4gZT09PWEuZW5kP251bGw6d2QoSmIuYihhLmViLGUpLG5ldyBCZShudWxsLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQoZSsxKX19KGIpLG51bGwsbnVsbCkpfX0odGhpcykoYS5zdGFydCl9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBmZy5MP2ZnLkwoYix0aGlzLmViLHRoaXMuc3RhcnQsdGhpcy5lbmQsdGhpcy52KTpmZy5jYWxsKG51bGwsYix0aGlzLmViLHRoaXMuc3RhcnQsdGhpcy5lbmQsdGhpcy52KX07XG5oLlg9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkQsZD1iYyh0aGlzLmViLHRoaXMuZW5kLGIpLGU9dGhpcy5zdGFydCxmPXRoaXMuZW5kKzE7cmV0dXJuIGZnLkw/ZmcuTChjLGQsZSxmLG51bGwpOmZnLmNhbGwobnVsbCxjLGQsZSxmLG51bGwpfTtoLmNhbGw9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIHRoaXMuY2EobnVsbCxjKTtjYXNlIDM6cmV0dXJuIHRoaXMuUWEobnVsbCxjLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5jYShudWxsLGMpfTthLmM9ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLlFhKG51bGwsYyxkKX07cmV0dXJuIGF9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O1xuaC5hPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNhKG51bGwsYSl9O2guYj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlFhKG51bGwsYSxiKX07ZWcucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07ZnVuY3Rpb24gZmcoYSxiLGMsZCxlKXtmb3IoOzspaWYoYiBpbnN0YW5jZW9mIGVnKWM9Yi5zdGFydCtjLGQ9Yi5zdGFydCtkLGI9Yi5lYjtlbHNle3ZhciBmPU0oYik7aWYoMD5jfHwwPmR8fGM+Znx8ZD5mKXRocm93IEVycm9yKFwiSW5kZXggb3V0IG9mIGJvdW5kc1wiKTtyZXR1cm4gbmV3IGVnKGEsYixjLGQsZSl9fVxuZnVuY3Rpb24gY2coYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO3N3aXRjaChiLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBiPWFyZ3VtZW50c1swXSxiZyhiLGFyZ3VtZW50c1sxXSxNKGIpKTtjYXNlIDM6cmV0dXJuIGJnKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYi5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fWZ1bmN0aW9uIGJnKGEsYixjKXtyZXR1cm4gZmcobnVsbCxhLGIsYyxudWxsKX1mdW5jdGlvbiBnZyhhLGIpe3JldHVybiBhPT09Yi4kP2I6bmV3IEdmKGEsQ2IoYi5nKSl9ZnVuY3Rpb24gVWYoYSl7cmV0dXJuIG5ldyBHZih7fSxDYihhLmcpKX1cbmZ1bmN0aW9uIFZmKGEpe3ZhciBiPVtudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdO1VkKGEsMCxiLDAsYS5sZW5ndGgpO3JldHVybiBifXZhciBoZz1mdW5jdGlvbiBoZyhiLGMsZCxlKXtkPWdnKGIucm9vdC4kLGQpO3ZhciBmPWIucy0xPj4+YyYzMTtpZig1PT09YyliPWU7ZWxzZXt2YXIgZz1kLmdbZl07bnVsbCE9Zz8oYy09NSxiPWhnLkM/aGcuQyhiLGMsZyxlKTpoZy5jYWxsKG51bGwsYixjLGcsZSkpOmI9TGYoYi5yb290LiQsYy01LGUpfUlmKGQsZixiKTtyZXR1cm4gZH07ZnVuY3Rpb24gVGYoYSxiLGMsZCl7dGhpcy5zPWE7dGhpcy5zaGlmdD1iO3RoaXMucm9vdD1jO3RoaXMuRmE9ZDt0aGlzLkc9ODg7dGhpcy5vPTI3NX1oPVRmLnByb3RvdHlwZTtcbmguR2I9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnJvb3QuJCl7aWYoMzI+dGhpcy5zLUtmKHRoaXMpKXRoaXMuRmFbdGhpcy5zJjMxXT1iO2Vsc2V7dmFyIGM9bmV3IEdmKHRoaXMucm9vdC4kLHRoaXMuRmEpLGQ9W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF07ZFswXT1iO3RoaXMuRmE9ZDtpZih0aGlzLnM+Pj41PjE8PHRoaXMuc2hpZnQpe3ZhciBkPVtudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGU9dGhpcy5zaGlmdCtcbjU7ZFswXT10aGlzLnJvb3Q7ZFsxXT1MZih0aGlzLnJvb3QuJCx0aGlzLnNoaWZ0LGMpO3RoaXMucm9vdD1uZXcgR2YodGhpcy5yb290LiQsZCk7dGhpcy5zaGlmdD1lfWVsc2UgdGhpcy5yb290PWhnKHRoaXMsdGhpcy5zaGlmdCx0aGlzLnJvb3QsYyl9dGhpcy5zKz0xO3JldHVybiB0aGlzfXRocm93IEVycm9yKFwiY29uaiEgYWZ0ZXIgcGVyc2lzdGVudCFcIik7fTtoLlFiPWZ1bmN0aW9uKCl7aWYodGhpcy5yb290LiQpe3RoaXMucm9vdC4kPW51bGw7dmFyIGE9dGhpcy5zLUtmKHRoaXMpLGI9QXJyYXkoYSk7VWQodGhpcy5GYSwwLGIsMCxhKTtyZXR1cm4gbmV3IFYobnVsbCx0aGlzLnMsdGhpcy5zaGlmdCx0aGlzLnJvb3QsYixudWxsKX10aHJvdyBFcnJvcihcInBlcnNpc3RlbnQhIGNhbGxlZCB0d2ljZVwiKTt9O1xuaC5jYz1mdW5jdGlvbihhLGIsYyl7aWYoXCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBBYyh0aGlzLGIsYyk7dGhyb3cgRXJyb3IoXCJUcmFuc2llbnRWZWN0b3IncyBrZXkgZm9yIGFzc29jISBtdXN0IGJlIGEgbnVtYmVyLlwiKTt9O1xuaC5OYz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcztpZihkLnJvb3QuJCl7aWYoMDw9YiYmYjxkLnMpcmV0dXJuIEtmKHRoaXMpPD1iP2QuRmFbYiYzMV09YzooYT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBmKGEsayl7dmFyIGc9Z2coZC5yb290LiQsayk7aWYoMD09PWEpZy5nW2ImMzFdPWM7ZWxzZXt2YXIgcD1iPj4+YSYzMTtJZihnLHAsZihhLTUsZy5nW3BdKSl9cmV0dXJuIGd9fSh0aGlzKS5jYWxsKG51bGwsZC5zaGlmdCxkLnJvb3QpLGQucm9vdD1hKSx0aGlzO2lmKGI9PT1kLnMpcmV0dXJuIHhjKHRoaXMsYyk7dGhyb3cgRXJyb3IoW3QoXCJJbmRleCBcIiksdChiKSx0KFwiIG91dCBvZiBib3VuZHMgZm9yIFRyYW5zaWVudFZlY3RvciBvZiBsZW5ndGhcIiksdChkLnMpXS5qb2luKFwiXCIpKTt9dGhyb3cgRXJyb3IoXCJhc3NvYyEgYWZ0ZXIgcGVyc2lzdGVudCFcIik7fTtcbmguWj1mdW5jdGlvbigpe2lmKHRoaXMucm9vdC4kKXJldHVybiB0aGlzLnM7dGhyb3cgRXJyb3IoXCJjb3VudCBhZnRlciBwZXJzaXN0ZW50IVwiKTt9O2guY2E9ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnJvb3QuJClyZXR1cm4gUGYodGhpcyxiKVtiJjMxXTt0aHJvdyBFcnJvcihcIm50aCBhZnRlciBwZXJzaXN0ZW50IVwiKTt9O2guUWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAwPD1iJiZiPHRoaXMucz9KYi5iKHRoaXMsYik6Y307aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYj9KYi5jKHRoaXMsYixjKTpjfTtcbmguY2FsbD1mdW5jdGlvbigpe3ZhciBhPW51bGwsYT1mdW5jdGlvbihhLGMsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gdGhpcy5XKG51bGwsYyk7Y2FzZSAzOnJldHVybiB0aGlzLlQobnVsbCxjLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5XKG51bGwsYyl9O2EuYz1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuVChudWxsLGMsZCl9O3JldHVybiBhfSgpO2guYXBwbHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jYWxsLmFwcGx5KHRoaXMsW3RoaXNdLmNvbmNhdChDYihiKSkpfTtoLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuVyhudWxsLGEpfTtoLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5UKG51bGwsYSxiKX07ZnVuY3Rpb24gaWcoKXt0aGlzLm89MjA5NzE1Mjt0aGlzLkc9MH1cbmlnLnByb3RvdHlwZS5lcXVpdj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GKG51bGwsYSl9O2lnLnByb3RvdHlwZS5GPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBqZz1uZXcgaWc7ZnVuY3Rpb24ga2coYSxiKXtyZXR1cm4gV2QoUWQoYik/TShhKT09PU0oYik/WGUoZnVuY3Rpb24oYSl7cmV0dXJuIEMuYihCLmMoYixJKGEpLGpnKSxDZChhKSl9LGEpOm51bGw6bnVsbCl9ZnVuY3Rpb24gbGcoYSxiLGMsZCxlKXt0aGlzLnU9YTt0aGlzLkJkPWI7dGhpcy5IYz1jO3RoaXMuSmI9ZDt0aGlzLlVjPWV9bGcucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51PHRoaXMuSGM7cmV0dXJuIGE/YTp0aGlzLlVjLklhKCl9O2xnLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy51PHRoaXMuSGMpe3ZhciBhPXFkKHRoaXMuSmIsdGhpcy51KTt0aGlzLnUrPTE7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW2EsUWIuYih0aGlzLkJkLGEpXSxudWxsKX1yZXR1cm4gdGhpcy5VYy5uZXh0KCl9O1xubGcucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiBFcnJvcihcIlVuc3VwcG9ydGVkIG9wZXJhdGlvblwiKX07ZnVuY3Rpb24gbWcoYSl7dGhpcy5QPWF9bWcucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLlApe3ZhciBhPUkodGhpcy5QKSxiPU8oYSwwLG51bGwpLGE9TyhhLDEsbnVsbCk7dGhpcy5QPUoodGhpcy5QKTtyZXR1cm57dmFsdWU6W2IsYV0sZG9uZTohMX19cmV0dXJue3ZhbHVlOm51bGwsZG9uZTohMH19O2Z1bmN0aW9uIG5nKGEpe3RoaXMuUD1hfW5nLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5QKXt2YXIgYT1JKHRoaXMuUCk7dGhpcy5QPUoodGhpcy5QKTtyZXR1cm57dmFsdWU6W2EsYV0sZG9uZTohMX19cmV0dXJue3ZhbHVlOm51bGwsZG9uZTohMH19O1xuZnVuY3Rpb24gb2coYSxiKXt2YXIgYztpZihiIGluc3RhbmNlb2YgUylhOntjPWEubGVuZ3RoO2Zvcih2YXIgZD1iLkxhLGU9MDs7KXtpZihjPD1lKXtjPS0xO2JyZWFrIGF9aWYoYVtlXWluc3RhbmNlb2YgUyYmZD09PWFbZV0uTGEpe2M9ZTticmVhayBhfWUrPTJ9fWVsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIGJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYilhOmZvcihjPWEubGVuZ3RoLGQ9MDs7KXtpZihjPD1kKXtjPS0xO2JyZWFrIGF9aWYoYj09PWFbZF0pe2M9ZDticmVhayBhfWQrPTJ9ZWxzZSBpZihiIGluc3RhbmNlb2YgeilhOmZvcihjPWEubGVuZ3RoLGQ9Yi5FYixlPTA7Oyl7aWYoYzw9ZSl7Yz0tMTticmVhayBhfWlmKGFbZV1pbnN0YW5jZW9mIHomJmQ9PT1hW2VdLkViKXtjPWU7YnJlYWsgYX1lKz0yfWVsc2UgaWYobnVsbD09YilhOmZvcihjPWEubGVuZ3RoLGQ9MDs7KXtpZihjPD1kKXtjPS0xO2JyZWFrIGF9aWYobnVsbD09YVtkXSl7Yz1kO2JyZWFrIGF9ZCs9Mn1lbHNlIGE6Zm9yKGM9XG5hLmxlbmd0aCxkPTA7Oyl7aWYoYzw9ZCl7Yz0tMTticmVhayBhfWlmKEMuYihiLGFbZF0pKXtjPWQ7YnJlYWsgYX1kKz0yfXJldHVybiBjfWZ1bmN0aW9uIHBnKGEsYixjKXt0aGlzLmc9YTt0aGlzLnU9Yjt0aGlzLkdhPWM7dGhpcy5vPTMyMzc0OTkwO3RoaXMuRz0wfWg9cGcucHJvdG90eXBlO2gudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtcbmguaW5kZXhPZj1mdW5jdGlvbigpe3ZhciBhPW51bGwsYT1mdW5jdGlvbihhLGMpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHBkKHRoaXMsYSwwKTtjYXNlIDI6cmV0dXJuIHBkKHRoaXMsYSxjKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307YS5hPWZ1bmN0aW9uKGEpe3JldHVybiBwZCh0aGlzLGEsMCl9O2EuYj1mdW5jdGlvbihhLGMpe3JldHVybiBwZCh0aGlzLGEsYyl9O3JldHVybiBhfSgpO1xuaC5sYXN0SW5kZXhPZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIHNkKHRoaXMsYSxNKHRoaXMpKX12YXIgYj1udWxsLGI9ZnVuY3Rpb24oYixkKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBhLmNhbGwodGhpcyxiKTtjYXNlIDI6cmV0dXJuIHNkKHRoaXMsYixkKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Yi5hPWE7Yi5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHNkKHRoaXMsYSxiKX07cmV0dXJuIGJ9KCk7aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O2guS2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51PHRoaXMuZy5sZW5ndGgtMj9uZXcgcGcodGhpcy5nLHRoaXMudSsyLHRoaXMuR2EpOm51bGx9O2guWj1mdW5jdGlvbigpe3JldHVybih0aGlzLmcubGVuZ3RoLXRoaXMudSkvMn07aC5TPWZ1bmN0aW9uKCl7cmV0dXJuIGRkKHRoaXMpfTtcbmguRj1mdW5jdGlvbihhLGIpe3JldHVybiB2ZCh0aGlzLGIpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHlkKCRjLHRoaXMuR2EpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpkKGIsdGhpcyl9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCZChiLGMsdGhpcyl9O2guQWE9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbdGhpcy5nW3RoaXMudV0sdGhpcy5nW3RoaXMudSsxXV0sbnVsbCl9O2guT2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51PHRoaXMuZy5sZW5ndGgtMj9uZXcgcGcodGhpcy5nLHRoaXMudSsyLHRoaXMuR2EpOiRjfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBwZyh0aGlzLmcsdGhpcy51LGIpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2QoYix0aGlzKX07cGcucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07XG5mdW5jdGlvbiBxZyhhLGIsYyl7dGhpcy5nPWE7dGhpcy51PWI7dGhpcy5zPWN9cWcucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudTx0aGlzLnN9O3FnLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFYobnVsbCwyLDUsVyxbdGhpcy5nW3RoaXMudV0sdGhpcy5nW3RoaXMudSsxXV0sbnVsbCk7dGhpcy51Kz0yO3JldHVybiBhfTtmdW5jdGlvbiBxKGEsYixjLGQpe3RoaXMuRD1hO3RoaXMucz1iO3RoaXMuZz1jO3RoaXMudj1kO3RoaXMubz0xNjY0Nzk1MTt0aGlzLkc9ODE5Nn1oPXEucHJvdG90eXBlO2gudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gYmQocmcuYT9yZy5hKHRoaXMpOnJnLmNhbGwobnVsbCx0aGlzKSl9O2guZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBuZXcgbWcoRShFKHRoaXMpKSl9O1xuaC52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYmQoc2cuYT9zZy5hKHRoaXMpOnNnLmNhbGwobnVsbCx0aGlzKSl9O2guaGFzPWZ1bmN0aW9uKGEpe3JldHVybiBZZCh0aGlzLGEpfTtoLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlQobnVsbCxhLGIpfTtoLmZvckVhY2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUUodGhpcyksYz1udWxsLGQ9MCxlPTA7OylpZihlPGQpe3ZhciBmPWMuY2EobnVsbCxlKSxnPU8oZiwwLG51bGwpLGY9TyhmLDEsbnVsbCk7YS5iP2EuYihmLGcpOmEuY2FsbChudWxsLGYsZyk7ZSs9MX1lbHNlIGlmKGI9RShiKSlTZChiKT8oYz1DYyhiKSxiPURjKGIpLGc9YyxkPU0oYyksYz1nKTooYz1JKGIpLGc9TyhjLDAsbnVsbCksZj1PKGMsMSxudWxsKSxhLmI/YS5iKGYsZyk6YS5jYWxsKG51bGwsZixnKSxiPUooYiksYz1udWxsLGQ9MCksZT0wO2Vsc2UgcmV0dXJuIG51bGx9O2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07XG5oLlQ9ZnVuY3Rpb24oYSxiLGMpe2E9b2codGhpcy5nLGIpO3JldHVybi0xPT09YT9jOnRoaXMuZ1thKzFdfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBxZyh0aGlzLmcsMCwyKnRoaXMucyl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guWj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWZkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiYoYi5vJjEwMjR8fG09PT1iLmNkKSl7dmFyIGM9dGhpcy5nLmxlbmd0aDtpZih0aGlzLnM9PT1iLloobnVsbCkpZm9yKHZhciBkPTA7OylpZihkPGMpe3ZhciBlPWIuVChudWxsLHRoaXMuZ1tkXSxWZCk7aWYoZSE9PVZkKWlmKEMuYih0aGlzLmdbZCsxXSxlKSlkKz0yO2Vsc2UgcmV0dXJuITE7ZWxzZSByZXR1cm4hMX1lbHNlIHJldHVybiEwO2Vsc2UgcmV0dXJuITF9ZWxzZSByZXR1cm4ga2codGhpcyxiKX07XG5oLlBiPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0Zyh7fSx0aGlzLmcubGVuZ3RoLENiKHRoaXMuZykpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIGdjKFgsdGhpcy5EKX07aC5EYT1mdW5jdGlvbihhLGIpe3JldHVybiB6ZChiLHRoaXMpfTtoLkVhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gQmQoYixjLHRoaXMpfTtoLmJiPWZ1bmN0aW9uKGEsYil7aWYoMDw9b2codGhpcy5nLGIpKXt2YXIgYz10aGlzLmcubGVuZ3RoLGQ9Yy0yO2lmKDA9PT1kKXJldHVybiBGYih0aGlzKTtmb3IodmFyIGQ9QXJyYXkoZCksZT0wLGY9MDs7KXtpZihlPj1jKXJldHVybiBuZXcgcSh0aGlzLkQsdGhpcy5zLTEsZCxudWxsKTtDLmIoYix0aGlzLmdbZV0pfHwoZFtmXT10aGlzLmdbZV0sZFtmKzFdPXRoaXMuZ1tlKzFdLGYrPTIpO2UrPTJ9fWVsc2UgcmV0dXJuIHRoaXN9O1xuaC5aYT1mdW5jdGlvbihhLGIsYyl7YT1vZyh0aGlzLmcsYik7aWYoLTE9PT1hKXtpZih0aGlzLnM8dWcpe2E9dGhpcy5nO2Zvcih2YXIgZD1hLmxlbmd0aCxlPUFycmF5KGQrMiksZj0wOzspaWYoZjxkKWVbZl09YVtmXSxmKz0xO2Vsc2UgYnJlYWs7ZVtkXT1iO2VbZCsxXT1jO3JldHVybiBuZXcgcSh0aGlzLkQsdGhpcy5zKzEsZSxudWxsKX1yZXR1cm4gZ2MoU2IoeWYuYih2Zyx0aGlzKSxiLGMpLHRoaXMuRCl9aWYoYz09PXRoaXMuZ1thKzFdKXJldHVybiB0aGlzO2I9Q2IodGhpcy5nKTtiW2ErMV09YztyZXR1cm4gbmV3IHEodGhpcy5ELHRoaXMucyxiLG51bGwpfTtoLnJjPWZ1bmN0aW9uKGEsYil7cmV0dXJuLTEhPT1vZyh0aGlzLmcsYil9O2guWT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZztyZXR1cm4gMDw9YS5sZW5ndGgtMj9uZXcgcGcoYSwwLG51bGwpOm51bGx9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgcShiLHRoaXMucyx0aGlzLmcsdGhpcy52KX07XG5oLlg9ZnVuY3Rpb24oYSxiKXtpZihSZChiKSlyZXR1cm4gU2IodGhpcyxKYi5iKGIsMCksSmIuYihiLDEpKTtmb3IodmFyIGM9dGhpcyxkPUUoYik7Oyl7aWYobnVsbD09ZClyZXR1cm4gYzt2YXIgZT1JKGQpO2lmKFJkKGUpKWM9U2IoYyxKYi5iKGUsMCksSmIuYihlLDEpKSxkPUooZCk7ZWxzZSB0aHJvdyBFcnJvcihcImNvbmogb24gYSBtYXAgdGFrZXMgbWFwIGVudHJpZXMgb3Igc2VxYWJsZXMgb2YgbWFwIGVudHJpZXNcIik7fX07XG5oLmNhbGw9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIHRoaXMuVyhudWxsLGMpO2Nhc2UgMzpyZXR1cm4gdGhpcy5UKG51bGwsYyxkKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuVyhudWxsLGMpfTthLmM9ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLlQobnVsbCxjLGQpfTtyZXR1cm4gYX0oKTtoLmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY2FsbC5hcHBseSh0aGlzLFt0aGlzXS5jb25jYXQoQ2IoYikpKX07aC5hPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlcobnVsbCxhKX07aC5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuVChudWxsLGEsYil9O3ZhciBYPW5ldyBxKG51bGwsMCxbXSxnZCksdWc9ODtcbmZ1bmN0aW9uIHdnKGEpe2Zvcih2YXIgYj1bXSxjPTA7OylpZihjPGEubGVuZ3RoKXt2YXIgZD1hW2NdLGU9YVtjKzFdOy0xPT09b2coYixkKSYmKGIucHVzaChkKSxiLnB1c2goZSkpO2MrPTJ9ZWxzZSBicmVhaztyZXR1cm4gbmV3IHEobnVsbCxiLmxlbmd0aC8yLGIsbnVsbCl9cS5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtmdW5jdGlvbiB0ZyhhLGIsYyl7dGhpcy5SYj1hO3RoaXMuTmI9Yjt0aGlzLmc9Yzt0aGlzLm89MjU4O3RoaXMuRz01Nn1oPXRnLnByb3RvdHlwZTtoLlo9ZnVuY3Rpb24oKXtpZihyKHRoaXMuUmIpKXJldHVybiBrZSh0aGlzLk5iLDIpO3Rocm93IEVycm9yKFwiY291bnQgYWZ0ZXIgcGVyc2lzdGVudCFcIik7fTtoLlc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUWIuYyh0aGlzLGIsbnVsbCl9O1xuaC5UPWZ1bmN0aW9uKGEsYixjKXtpZihyKHRoaXMuUmIpKXJldHVybiBhPW9nKHRoaXMuZyxiKSwtMT09PWE/Yzp0aGlzLmdbYSsxXTt0aHJvdyBFcnJvcihcImxvb2t1cCBhZnRlciBwZXJzaXN0ZW50IVwiKTt9O2guR2I9ZnVuY3Rpb24oYSxiKXtpZihyKHRoaXMuUmIpKXtpZihudWxsIT1iP2IubyYyMDQ4fHxtPT09Yi5kZHx8KGIubz8wOnZiKFZiLGIpKTp2YihWYixiKSlyZXR1cm4gemModGhpcyxyZS5hP3JlLmEoYik6cmUuY2FsbChudWxsLGIpLHNlLmE/c2UuYShiKTpzZS5jYWxsKG51bGwsYikpO2Zvcih2YXIgYz1FKGIpLGQ9dGhpczs7KXt2YXIgZT1JKGMpO2lmKHIoZSkpYz1KKGMpLGQ9emMoZCxyZS5hP3JlLmEoZSk6cmUuY2FsbChudWxsLGUpLHNlLmE/c2UuYShlKTpzZS5jYWxsKG51bGwsZSkpO2Vsc2UgcmV0dXJuIGR9fWVsc2UgdGhyb3cgRXJyb3IoXCJjb25qISBhZnRlciBwZXJzaXN0ZW50IVwiKTt9O1xuaC5RYj1mdW5jdGlvbigpe2lmKHIodGhpcy5SYikpcmV0dXJuIHRoaXMuUmI9ITEsbmV3IHEobnVsbCxrZSh0aGlzLk5iLDIpLHRoaXMuZyxudWxsKTt0aHJvdyBFcnJvcihcInBlcnNpc3RlbnQhIGNhbGxlZCB0d2ljZVwiKTt9O2guY2M9ZnVuY3Rpb24oYSxiLGMpe2lmKHIodGhpcy5SYikpe2E9b2codGhpcy5nLGIpO2lmKC0xPT09YSl7aWYodGhpcy5OYisyPD0yKnVnKXJldHVybiB0aGlzLk5iKz0yLHRoaXMuZy5wdXNoKGIpLHRoaXMuZy5wdXNoKGMpLHRoaXM7YT14Zy5iP3hnLmIodGhpcy5OYix0aGlzLmcpOnhnLmNhbGwobnVsbCx0aGlzLk5iLHRoaXMuZyk7cmV0dXJuIHpjKGEsYixjKX1jIT09dGhpcy5nW2ErMV0mJih0aGlzLmdbYSsxXT1jKTtyZXR1cm4gdGhpc310aHJvdyBFcnJvcihcImFzc29jISBhZnRlciBwZXJzaXN0ZW50IVwiKTt9O1xuZnVuY3Rpb24geGcoYSxiKXtmb3IodmFyIGM9d2ModmcpLGQ9MDs7KWlmKGQ8YSljPXpjKGMsYltkXSxiW2QrMV0pLGQrPTI7ZWxzZSByZXR1cm4gY31mdW5jdGlvbiB5Zygpe3RoaXMuaT0hMX1mdW5jdGlvbiB6ZyhhLGIpe3JldHVybiBhPT09Yj8hMDpUKGEsYik/ITA6Qy5iKGEsYil9ZnVuY3Rpb24gQWcoYSxiLGMpe2E9Q2IoYSk7YVtiXT1jO3JldHVybiBhfWZ1bmN0aW9uIEJnKGEsYil7dmFyIGM9QXJyYXkoYS5sZW5ndGgtMik7VWQoYSwwLGMsMCwyKmIpO1VkKGEsMiooYisxKSxjLDIqYixjLmxlbmd0aC0yKmIpO3JldHVybiBjfWZ1bmN0aW9uIENnKGEsYixjLGQpe2E9YS5JYihiKTthLmdbY109ZDtyZXR1cm4gYX1mdW5jdGlvbiBEZyhhLGIsYyxkKXt0aGlzLmc9YTt0aGlzLnU9Yjt0aGlzLmljPWM7dGhpcy5pYj1kfVxuRGcucHJvdG90eXBlLmFkdmFuY2U9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5nLmxlbmd0aDs7KWlmKHRoaXMudTxhKXt2YXIgYj10aGlzLmdbdGhpcy51XSxjPXRoaXMuZ1t0aGlzLnUrMV07bnVsbCE9Yj9iPXRoaXMuaWM9bmV3IFYobnVsbCwyLDUsVyxbYixjXSxudWxsKTpudWxsIT1jPyhiPUtjKGMpLGI9Yi5JYSgpP3RoaXMuaWI9YjohMSk6Yj0hMTt0aGlzLnUrPTI7aWYoYilyZXR1cm4hMH1lbHNlIHJldHVybiExfTtEZy5wcm90b3R5cGUuSWE9ZnVuY3Rpb24oKXt2YXIgYT1udWxsIT10aGlzLmljO3JldHVybiBhP2E6KGE9bnVsbCE9dGhpcy5pYik/YTp0aGlzLmFkdmFuY2UoKX07XG5EZy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuaWMpe3ZhciBhPXRoaXMuaWM7dGhpcy5pYz1udWxsO3JldHVybiBhfWlmKG51bGwhPXRoaXMuaWIpcmV0dXJuIGE9dGhpcy5pYi5uZXh0KCksdGhpcy5pYi5JYSgpfHwodGhpcy5pYj1udWxsKSxhO2lmKHRoaXMuYWR2YW5jZSgpKXJldHVybiB0aGlzLm5leHQoKTt0aHJvdyBFcnJvcihcIk5vIHN1Y2ggZWxlbWVudFwiKTt9O0RnLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb25cIil9O2Z1bmN0aW9uIEVnKGEsYixjKXt0aGlzLiQ9YTt0aGlzLmVhPWI7dGhpcy5nPWN9aD1FZy5wcm90b3R5cGU7aC5JYj1mdW5jdGlvbihhKXtpZihhPT09dGhpcy4kKXJldHVybiB0aGlzO3ZhciBiPW1lKHRoaXMuZWEpLGM9QXJyYXkoMD5iPzQ6MiooYisxKSk7VWQodGhpcy5nLDAsYywwLDIqYik7cmV0dXJuIG5ldyBFZyhhLHRoaXMuZWEsYyl9O1xuaC5lYz1mdW5jdGlvbigpe3JldHVybiBGZz9GZyh0aGlzLmcpOkdnLmNhbGwobnVsbCx0aGlzLmcpfTtoLkFiPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPTE8PChiPj4+YSYzMSk7aWYoMD09PSh0aGlzLmVhJmUpKXJldHVybiBkO3ZhciBmPW1lKHRoaXMuZWEmZS0xKSxlPXRoaXMuZ1syKmZdLGY9dGhpcy5nWzIqZisxXTtyZXR1cm4gbnVsbD09ZT9mLkFiKGErNSxiLGMsZCk6emcoYyxlKT9mOmR9O1xuaC5oYj1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9MTw8KGM+Pj5iJjMxKSxrPW1lKHRoaXMuZWEmZy0xKTtpZigwPT09KHRoaXMuZWEmZykpe3ZhciBsPW1lKHRoaXMuZWEpO2lmKDIqbDx0aGlzLmcubGVuZ3RoKXthPXRoaXMuSWIoYSk7Yj1hLmc7Zi5pPSEwO2E6Zm9yKGM9MioobC1rKSxmPTIqaysoYy0xKSxsPTIqKGsrMSkrKGMtMSk7Oyl7aWYoMD09PWMpYnJlYWsgYTtiW2xdPWJbZl07LS1sOy0tYzstLWZ9YlsyKmtdPWQ7YlsyKmsrMV09ZTthLmVhfD1nO3JldHVybiBhfWlmKDE2PD1sKXtrPVtudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdO2tbYz4+PmImMzFdPUhnLmhiKGEsYis1LGMsZCxlLGYpO2ZvcihlPWQ9MDs7KWlmKDMyPmQpMCE9PVxuKHRoaXMuZWE+Pj5kJjEpJiYoa1tkXT1udWxsIT10aGlzLmdbZV0/SGcuaGIoYSxiKzUsVWModGhpcy5nW2VdKSx0aGlzLmdbZV0sdGhpcy5nW2UrMV0sZik6dGhpcy5nW2UrMV0sZSs9MiksZCs9MTtlbHNlIGJyZWFrO3JldHVybiBuZXcgSWcoYSxsKzEsayl9Yj1BcnJheSgyKihsKzQpKTtVZCh0aGlzLmcsMCxiLDAsMiprKTtiWzIqa109ZDtiWzIqaysxXT1lO1VkKHRoaXMuZywyKmssYiwyKihrKzEpLDIqKGwtaykpO2YuaT0hMDthPXRoaXMuSWIoYSk7YS5nPWI7YS5lYXw9ZztyZXR1cm4gYX1sPXRoaXMuZ1syKmtdO2c9dGhpcy5nWzIqaysxXTtpZihudWxsPT1sKXJldHVybiBsPWcuaGIoYSxiKzUsYyxkLGUsZiksbD09PWc/dGhpczpDZyh0aGlzLGEsMiprKzEsbCk7aWYoemcoZCxsKSlyZXR1cm4gZT09PWc/dGhpczpDZyh0aGlzLGEsMiprKzEsZSk7Zi5pPSEwO2Y9Yis1O2Q9Smc/SmcoYSxmLGwsZyxjLGQsZSk6S2cuY2FsbChudWxsLGEsZixsLGcsYyxkLGUpO2U9MiprO2s9XG4yKmsrMTthPXRoaXMuSWIoYSk7YS5nW2VdPW51bGw7YS5nW2tdPWQ7cmV0dXJuIGF9O1xuaC5nYj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPTE8PChiPj4+YSYzMSksZz1tZSh0aGlzLmVhJmYtMSk7aWYoMD09PSh0aGlzLmVhJmYpKXt2YXIgaz1tZSh0aGlzLmVhKTtpZigxNjw9ayl7Zz1bbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXTtnW2I+Pj5hJjMxXT1IZy5nYihhKzUsYixjLGQsZSk7Zm9yKGQ9Yz0wOzspaWYoMzI+YykwIT09KHRoaXMuZWE+Pj5jJjEpJiYoZ1tjXT1udWxsIT10aGlzLmdbZF0/SGcuZ2IoYSs1LFVjKHRoaXMuZ1tkXSksdGhpcy5nW2RdLHRoaXMuZ1tkKzFdLGUpOnRoaXMuZ1tkKzFdLGQrPTIpLGMrPTE7ZWxzZSBicmVhaztyZXR1cm4gbmV3IElnKG51bGwsaysxLGcpfWE9QXJyYXkoMiooaysxKSk7VWQodGhpcy5nLFxuMCxhLDAsMipnKTthWzIqZ109YzthWzIqZysxXT1kO1VkKHRoaXMuZywyKmcsYSwyKihnKzEpLDIqKGstZykpO2UuaT0hMDtyZXR1cm4gbmV3IEVnKG51bGwsdGhpcy5lYXxmLGEpfXZhciBsPXRoaXMuZ1syKmddLGY9dGhpcy5nWzIqZysxXTtpZihudWxsPT1sKXJldHVybiBrPWYuZ2IoYSs1LGIsYyxkLGUpLGs9PT1mP3RoaXM6bmV3IEVnKG51bGwsdGhpcy5lYSxBZyh0aGlzLmcsMipnKzEsaykpO2lmKHpnKGMsbCkpcmV0dXJuIGQ9PT1mP3RoaXM6bmV3IEVnKG51bGwsdGhpcy5lYSxBZyh0aGlzLmcsMipnKzEsZCkpO2UuaT0hMDtlPXRoaXMuZWE7az10aGlzLmc7YSs9NTthPUxnP0xnKGEsbCxmLGIsYyxkKTpLZy5jYWxsKG51bGwsYSxsLGYsYixjLGQpO2M9MipnO2c9MipnKzE7ZD1DYihrKTtkW2NdPW51bGw7ZFtnXT1hO3JldHVybiBuZXcgRWcobnVsbCxlLGQpfTtcbmguZmM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTE8PChiPj4+YSYzMSk7aWYoMD09PSh0aGlzLmVhJmQpKXJldHVybiB0aGlzO3ZhciBlPW1lKHRoaXMuZWEmZC0xKSxmPXRoaXMuZ1syKmVdLGc9dGhpcy5nWzIqZSsxXTtyZXR1cm4gbnVsbD09Zj8oYT1nLmZjKGErNSxiLGMpLGE9PT1nP3RoaXM6bnVsbCE9YT9uZXcgRWcobnVsbCx0aGlzLmVhLEFnKHRoaXMuZywyKmUrMSxhKSk6dGhpcy5lYT09PWQ/bnVsbDpuZXcgRWcobnVsbCx0aGlzLmVhXmQsQmcodGhpcy5nLGUpKSk6emcoYyxmKT9uZXcgRWcobnVsbCx0aGlzLmVhXmQsQmcodGhpcy5nLGUpKTp0aGlzfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEZyh0aGlzLmcsMCxudWxsLG51bGwpfTt2YXIgSGc9bmV3IEVnKG51bGwsMCxbXSk7ZnVuY3Rpb24gTWcoYSxiLGMpe3RoaXMuZz1hO3RoaXMudT1iO3RoaXMuaWI9Y31cbk1nLnByb3RvdHlwZS5JYT1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmcubGVuZ3RoOzspe2lmKG51bGwhPXRoaXMuaWImJnRoaXMuaWIuSWEoKSlyZXR1cm4hMDtpZih0aGlzLnU8YSl7dmFyIGI9dGhpcy5nW3RoaXMudV07dGhpcy51Kz0xO251bGwhPWImJih0aGlzLmliPUtjKGIpKX1lbHNlIHJldHVybiExfX07TWcucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZih0aGlzLklhKCkpcmV0dXJuIHRoaXMuaWIubmV4dCgpO3Rocm93IEVycm9yKFwiTm8gc3VjaCBlbGVtZW50XCIpO307TWcucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiBFcnJvcihcIlVuc3VwcG9ydGVkIG9wZXJhdGlvblwiKX07ZnVuY3Rpb24gSWcoYSxiLGMpe3RoaXMuJD1hO3RoaXMucz1iO3RoaXMuZz1jfWg9SWcucHJvdG90eXBlO2guSWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT10aGlzLiQ/dGhpczpuZXcgSWcoYSx0aGlzLnMsQ2IodGhpcy5nKSl9O1xuaC5lYz1mdW5jdGlvbigpe3JldHVybiBOZz9OZyh0aGlzLmcpOk9nLmNhbGwobnVsbCx0aGlzLmcpfTtoLkFiPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuZ1tiPj4+YSYzMV07cmV0dXJuIG51bGwhPWU/ZS5BYihhKzUsYixjLGQpOmR9O2guaGI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWM+Pj5iJjMxLGs9dGhpcy5nW2ddO2lmKG51bGw9PWspcmV0dXJuIGE9Q2codGhpcyxhLGcsSGcuaGIoYSxiKzUsYyxkLGUsZikpLGEucys9MSxhO2I9ay5oYihhLGIrNSxjLGQsZSxmKTtyZXR1cm4gYj09PWs/dGhpczpDZyh0aGlzLGEsZyxiKX07XG5oLmdiPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Yj4+PmEmMzEsZz10aGlzLmdbZl07aWYobnVsbD09ZylyZXR1cm4gbmV3IElnKG51bGwsdGhpcy5zKzEsQWcodGhpcy5nLGYsSGcuZ2IoYSs1LGIsYyxkLGUpKSk7YT1nLmdiKGErNSxiLGMsZCxlKTtyZXR1cm4gYT09PWc/dGhpczpuZXcgSWcobnVsbCx0aGlzLnMsQWcodGhpcy5nLGYsYSkpfTtcbmguZmM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWI+Pj5hJjMxLGU9dGhpcy5nW2RdO2lmKG51bGwhPWUpe2E9ZS5mYyhhKzUsYixjKTtpZihhPT09ZSlkPXRoaXM7ZWxzZSBpZihudWxsPT1hKWlmKDg+PXRoaXMucylhOntlPXRoaXMuZzthPWUubGVuZ3RoO2I9QXJyYXkoMioodGhpcy5zLTEpKTtjPTA7Zm9yKHZhciBmPTEsZz0wOzspaWYoYzxhKWMhPT1kJiZudWxsIT1lW2NdJiYoYltmXT1lW2NdLGYrPTIsZ3w9MTw8YyksYys9MTtlbHNle2Q9bmV3IEVnKG51bGwsZyxiKTticmVhayBhfX1lbHNlIGQ9bmV3IElnKG51bGwsdGhpcy5zLTEsQWcodGhpcy5nLGQsYSkpO2Vsc2UgZD1uZXcgSWcobnVsbCx0aGlzLnMsQWcodGhpcy5nLGQsYSkpO3JldHVybiBkfXJldHVybiB0aGlzfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNZyh0aGlzLmcsMCxudWxsKX07XG5mdW5jdGlvbiBQZyhhLGIsYyl7Yio9Mjtmb3IodmFyIGQ9MDs7KWlmKGQ8Yil7aWYoemcoYyxhW2RdKSlyZXR1cm4gZDtkKz0yfWVsc2UgcmV0dXJuLTF9ZnVuY3Rpb24gUWcoYSxiLGMsZCl7dGhpcy4kPWE7dGhpcy5yYj1iO3RoaXMucz1jO3RoaXMuZz1kfWg9UWcucHJvdG90eXBlO2guSWI9ZnVuY3Rpb24oYSl7aWYoYT09PXRoaXMuJClyZXR1cm4gdGhpczt2YXIgYj1BcnJheSgyKih0aGlzLnMrMSkpO1VkKHRoaXMuZywwLGIsMCwyKnRoaXMucyk7cmV0dXJuIG5ldyBRZyhhLHRoaXMucmIsdGhpcy5zLGIpfTtoLmVjPWZ1bmN0aW9uKCl7cmV0dXJuIEZnP0ZnKHRoaXMuZyk6R2cuY2FsbChudWxsLHRoaXMuZyl9O2guQWI9ZnVuY3Rpb24oYSxiLGMsZCl7YT1QZyh0aGlzLmcsdGhpcy5zLGMpO3JldHVybiAwPmE/ZDp6ZyhjLHRoaXMuZ1thXSk/dGhpcy5nW2ErMV06ZH07XG5oLmhiPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihjPT09dGhpcy5yYil7Yj1QZyh0aGlzLmcsdGhpcy5zLGQpO2lmKC0xPT09Yil7aWYodGhpcy5nLmxlbmd0aD4yKnRoaXMucylyZXR1cm4gYj0yKnRoaXMucyxjPTIqdGhpcy5zKzEsYT10aGlzLkliKGEpLGEuZ1tiXT1kLGEuZ1tjXT1lLGYuaT0hMCxhLnMrPTEsYTtjPXRoaXMuZy5sZW5ndGg7Yj1BcnJheShjKzIpO1VkKHRoaXMuZywwLGIsMCxjKTtiW2NdPWQ7YltjKzFdPWU7Zi5pPSEwO2Q9dGhpcy5zKzE7YT09PXRoaXMuJD8odGhpcy5nPWIsdGhpcy5zPWQsYT10aGlzKTphPW5ldyBRZyh0aGlzLiQsdGhpcy5yYixkLGIpO3JldHVybiBhfXJldHVybiB0aGlzLmdbYisxXT09PWU/dGhpczpDZyh0aGlzLGEsYisxLGUpfXJldHVybihuZXcgRWcoYSwxPDwodGhpcy5yYj4+PmImMzEpLFtudWxsLHRoaXMsbnVsbCxudWxsXSkpLmhiKGEsYixjLGQsZSxmKX07XG5oLmdiPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGI9PT10aGlzLnJiPyhhPVBnKHRoaXMuZyx0aGlzLnMsYyksLTE9PT1hPyhhPTIqdGhpcy5zLGI9QXJyYXkoYSsyKSxVZCh0aGlzLmcsMCxiLDAsYSksYlthXT1jLGJbYSsxXT1kLGUuaT0hMCxuZXcgUWcobnVsbCx0aGlzLnJiLHRoaXMucysxLGIpKTpDLmIodGhpcy5nW2ErMV0sZCk/dGhpczpuZXcgUWcobnVsbCx0aGlzLnJiLHRoaXMucyxBZyh0aGlzLmcsYSsxLGQpKSk6KG5ldyBFZyhudWxsLDE8PCh0aGlzLnJiPj4+YSYzMSksW251bGwsdGhpc10pKS5nYihhLGIsYyxkLGUpfTtoLmZjPWZ1bmN0aW9uKGEsYixjKXthPVBnKHRoaXMuZyx0aGlzLnMsYyk7cmV0dXJuLTE9PT1hP3RoaXM6MT09PXRoaXMucz9udWxsOm5ldyBRZyhudWxsLHRoaXMucmIsdGhpcy5zLTEsQmcodGhpcy5nLGtlKGEsMikpKX07aC5DYT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGcodGhpcy5nLDAsbnVsbCxudWxsKX07XG5mdW5jdGlvbiBLZyhhKXtmb3IodmFyIGI9W10sYz1hcmd1bWVudHMubGVuZ3RoLGQ9MDs7KWlmKGQ8YyliLnB1c2goYXJndW1lbnRzW2RdKSxkKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGIubGVuZ3RoKXtjYXNlIDY6cmV0dXJuIExnKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdKTtjYXNlIDc6cmV0dXJuIEpnKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdLGFyZ3VtZW50c1s2XSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGIubGVuZ3RoKV0uam9pbihcIlwiKSk7fX1cbmZ1bmN0aW9uIExnKGEsYixjLGQsZSxmKXt2YXIgZz1VYyhiKTtpZihnPT09ZClyZXR1cm4gbmV3IFFnKG51bGwsZywyLFtiLGMsZSxmXSk7dmFyIGs9bmV3IHlnO3JldHVybiBIZy5nYihhLGcsYixjLGspLmdiKGEsZCxlLGYsayl9ZnVuY3Rpb24gSmcoYSxiLGMsZCxlLGYsZyl7dmFyIGs9VWMoYyk7aWYoaz09PWUpcmV0dXJuIG5ldyBRZyhudWxsLGssMixbYyxkLGYsZ10pO3ZhciBsPW5ldyB5ZztyZXR1cm4gSGcuaGIoYSxiLGssYyxkLGwpLmhiKGEsYixlLGYsZyxsKX1mdW5jdGlvbiBSZyhhLGIsYyxkLGUpe3RoaXMuRD1hO3RoaXMuQmI9Yjt0aGlzLnU9Yzt0aGlzLlA9ZDt0aGlzLnY9ZTt0aGlzLm89MzIzNzQ4NjA7dGhpcy5HPTB9aD1SZy5wcm90b3R5cGU7aC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBNYyh0aGlzKX07aC5lcXVpdj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GKG51bGwsYSl9O1xuaC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1kZCh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZkKHRoaXMsYil9O2guemE9ZnVuY3Rpb24oKXtyZXR1cm4geWQoJGMsdGhpcy5EKX07aC5EYT1mdW5jdGlvbihhLGIpe3JldHVybiB6ZChiLHRoaXMpfTtcbmguRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCZChiLGMsdGhpcyl9O2guQWE9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5QP25ldyBWKG51bGwsMiw1LFcsW3RoaXMuQmJbdGhpcy51XSx0aGlzLkJiW3RoaXMudSsxXV0sbnVsbCk6SSh0aGlzLlApfTtoLk9hPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPW51bGw9PWEuUD9mdW5jdGlvbigpe3ZhciBiPWEuQmIsZD1hLnUrMjtyZXR1cm4gU2c/U2coYixkLG51bGwpOkdnLmNhbGwobnVsbCxiLGQsbnVsbCl9KCk6ZnVuY3Rpb24oKXt2YXIgYj1hLkJiLGQ9YS51LGU9SihhLlApO3JldHVybiBTZz9TZyhiLGQsZSk6R2cuY2FsbChudWxsLGIsZCxlKX0oKTtyZXR1cm4gbnVsbCE9Yj9iOiRjfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBSZyhiLHRoaXMuQmIsdGhpcy51LHRoaXMuUCx0aGlzLnYpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2QoYix0aGlzKX07XG5SZy5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtmdW5jdGlvbiBHZyhhKXtmb3IodmFyIGI9W10sYz1hcmd1bWVudHMubGVuZ3RoLGQ9MDs7KWlmKGQ8YyliLnB1c2goYXJndW1lbnRzW2RdKSxkKz0xO2Vsc2UgYnJlYWs7c3dpdGNoKGIubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIEZnKGFyZ3VtZW50c1swXSk7Y2FzZSAzOnJldHVybiBTZyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGIubGVuZ3RoKV0uam9pbihcIlwiKSk7fX1mdW5jdGlvbiBGZyhhKXtyZXR1cm4gU2coYSwwLG51bGwpfVxuZnVuY3Rpb24gU2coYSxiLGMpe2lmKG51bGw9PWMpZm9yKGM9YS5sZW5ndGg7OylpZihiPGMpe2lmKG51bGwhPWFbYl0pcmV0dXJuIG5ldyBSZyhudWxsLGEsYixudWxsLG51bGwpO3ZhciBkPWFbYisxXTtpZihyKGQpJiYoZD1kLmVjKCkscihkKSkpcmV0dXJuIG5ldyBSZyhudWxsLGEsYisyLGQsbnVsbCk7Yis9Mn1lbHNlIHJldHVybiBudWxsO2Vsc2UgcmV0dXJuIG5ldyBSZyhudWxsLGEsYixjLG51bGwpfWZ1bmN0aW9uIFRnKGEsYixjLGQsZSl7dGhpcy5EPWE7dGhpcy5CYj1iO3RoaXMudT1jO3RoaXMuUD1kO3RoaXMudj1lO3RoaXMubz0zMjM3NDg2MDt0aGlzLkc9MH1oPVRnLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07XG5oLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTSh0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWRkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZCgkYyx0aGlzLkQpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpkKGIsdGhpcyl9O1xuaC5FYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEJkKGIsYyx0aGlzKX07aC5BYT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMuUCl9O2guT2E9ZnVuY3Rpb24oKXt2YXIgYTthPXRoaXMuQmI7dmFyIGI9dGhpcy51LGM9Sih0aGlzLlApO2E9VWc/VWcobnVsbCxhLGIsYyk6T2cuY2FsbChudWxsLG51bGwsYSxiLGMpO3JldHVybiBudWxsIT1hP2E6JGN9O2guWT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFRnKGIsdGhpcy5CYix0aGlzLnUsdGhpcy5QLHRoaXMudil9O2guWD1mdW5jdGlvbihhLGIpe3JldHVybiB3ZChiLHRoaXMpfTtUZy5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtcbmZ1bmN0aW9uIE9nKGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gTmcoYXJndW1lbnRzWzBdKTtjYXNlIDQ6cmV0dXJuIFVnKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSk7ZGVmYXVsdDp0aHJvdyBFcnJvcihbdChcIkludmFsaWQgYXJpdHk6IFwiKSx0KGIubGVuZ3RoKV0uam9pbihcIlwiKSk7fX1mdW5jdGlvbiBOZyhhKXtyZXR1cm4gVWcobnVsbCxhLDAsbnVsbCl9ZnVuY3Rpb24gVWcoYSxiLGMsZCl7aWYobnVsbD09ZClmb3IoZD1iLmxlbmd0aDs7KWlmKGM8ZCl7dmFyIGU9YltjXTtpZihyKGUpJiYoZT1lLmVjKCkscihlKSkpcmV0dXJuIG5ldyBUZyhhLGIsYysxLGUsbnVsbCk7Yys9MX1lbHNlIHJldHVybiBudWxsO2Vsc2UgcmV0dXJuIG5ldyBUZyhhLGIsYyxkLG51bGwpfVxuZnVuY3Rpb24gVmcoYSxiLGMpe3RoaXMuUGE9YTt0aGlzLldjPWI7dGhpcy5GYz1jfVZnLnByb3RvdHlwZS5JYT1mdW5jdGlvbigpe3JldHVybiB0Yih0aGlzLkZjKXx8dGhpcy5XYy5JYSgpfTtWZy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKHRoaXMuRmMpcmV0dXJuIHRoaXMuV2MubmV4dCgpO3RoaXMuRmM9ITA7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW251bGwsdGhpcy5QYV0sbnVsbCl9O1ZnLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb25cIil9O2Z1bmN0aW9uIFdnKGEsYixjLGQsZSxmKXt0aGlzLkQ9YTt0aGlzLnM9Yjt0aGlzLnJvb3Q9Yzt0aGlzLk1hPWQ7dGhpcy5QYT1lO3RoaXMudj1mO3RoaXMubz0xNjEyMzY2Mzt0aGlzLkc9ODE5Nn1oPVdnLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtcbmguZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gYmQocmcuYT9yZy5hKHRoaXMpOnJnLmNhbGwobnVsbCx0aGlzKSl9O2guZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBuZXcgbWcoRShFKHRoaXMpKSl9O2gudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHNnLmE/c2cuYSh0aGlzKTpzZy5jYWxsKG51bGwsdGhpcykpfTtoLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gWWQodGhpcyxhKX07aC5nZXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5UKG51bGwsYSxiKX07XG5oLmZvckVhY2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUUodGhpcyksYz1udWxsLGQ9MCxlPTA7OylpZihlPGQpe3ZhciBmPWMuY2EobnVsbCxlKSxnPU8oZiwwLG51bGwpLGY9TyhmLDEsbnVsbCk7YS5iP2EuYihmLGcpOmEuY2FsbChudWxsLGYsZyk7ZSs9MX1lbHNlIGlmKGI9RShiKSlTZChiKT8oYz1DYyhiKSxiPURjKGIpLGc9YyxkPU0oYyksYz1nKTooYz1JKGIpLGc9TyhjLDAsbnVsbCksZj1PKGMsMSxudWxsKSxhLmI/YS5iKGYsZyk6YS5jYWxsKG51bGwsZixnKSxiPUooYiksYz1udWxsLGQ9MCksZT0wO2Vsc2UgcmV0dXJuIG51bGx9O2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07aC5UPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbD09Yj90aGlzLk1hP3RoaXMuUGE6YzpudWxsPT10aGlzLnJvb3Q/Yzp0aGlzLnJvb3QuQWIoMCxVYyhiKSxiLGMpfTtcbmguQ2E9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJvb3Q/S2ModGhpcy5yb290KTpWZSgpO3JldHVybiB0aGlzLk1hP25ldyBWZyh0aGlzLlBhLGEsITEpOmF9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guWj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWZkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4ga2codGhpcyxiKX07aC5QYj1mdW5jdGlvbigpe3JldHVybiBuZXcgWGcoe30sdGhpcy5yb290LHRoaXMucyx0aGlzLk1hLHRoaXMuUGEpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIGdjKHZnLHRoaXMuRCl9O1xuaC5iYj1mdW5jdGlvbihhLGIpe2lmKG51bGw9PWIpcmV0dXJuIHRoaXMuTWE/bmV3IFdnKHRoaXMuRCx0aGlzLnMtMSx0aGlzLnJvb3QsITEsbnVsbCxudWxsKTp0aGlzO2lmKG51bGw9PXRoaXMucm9vdClyZXR1cm4gdGhpczt2YXIgYz10aGlzLnJvb3QuZmMoMCxVYyhiKSxiKTtyZXR1cm4gYz09PXRoaXMucm9vdD90aGlzOm5ldyBXZyh0aGlzLkQsdGhpcy5zLTEsYyx0aGlzLk1hLHRoaXMuUGEsbnVsbCl9O2guWmE9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWIpcmV0dXJuIHRoaXMuTWEmJmM9PT10aGlzLlBhP3RoaXM6bmV3IFdnKHRoaXMuRCx0aGlzLk1hP3RoaXMuczp0aGlzLnMrMSx0aGlzLnJvb3QsITAsYyxudWxsKTthPW5ldyB5ZztiPShudWxsPT10aGlzLnJvb3Q/SGc6dGhpcy5yb290KS5nYigwLFVjKGIpLGIsYyxhKTtyZXR1cm4gYj09PXRoaXMucm9vdD90aGlzOm5ldyBXZyh0aGlzLkQsYS5pP3RoaXMucysxOnRoaXMucyxiLHRoaXMuTWEsdGhpcy5QYSxudWxsKX07XG5oLnJjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWI/dGhpcy5NYTpudWxsPT10aGlzLnJvb3Q/ITE6dGhpcy5yb290LkFiKDAsVWMoYiksYixWZCkhPT1WZH07aC5ZPWZ1bmN0aW9uKCl7aWYoMDx0aGlzLnMpe3ZhciBhPW51bGwhPXRoaXMucm9vdD90aGlzLnJvb3QuZWMoKTpudWxsO3JldHVybiB0aGlzLk1hP3dkKG5ldyBWKG51bGwsMiw1LFcsW251bGwsdGhpcy5QYV0sbnVsbCksYSk6YX1yZXR1cm4gbnVsbH07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBXZyhiLHRoaXMucyx0aGlzLnJvb3QsdGhpcy5NYSx0aGlzLlBhLHRoaXMudil9O1xuaC5YPWZ1bmN0aW9uKGEsYil7aWYoUmQoYikpcmV0dXJuIFNiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk7Zm9yKHZhciBjPXRoaXMsZD1FKGIpOzspe2lmKG51bGw9PWQpcmV0dXJuIGM7dmFyIGU9SShkKTtpZihSZChlKSljPVNiKGMsSmIuYihlLDApLEpiLmIoZSwxKSksZD1KKGQpO2Vsc2UgdGhyb3cgRXJyb3IoXCJjb25qIG9uIGEgbWFwIHRha2VzIG1hcCBlbnRyaWVzIG9yIHNlcWFibGVzIG9mIG1hcCBlbnRyaWVzXCIpO319O1xuaC5jYWxsPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyxkKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAyOnJldHVybiB0aGlzLlcobnVsbCxjKTtjYXNlIDM6cmV0dXJuIHRoaXMuVChudWxsLGMsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYj1mdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLlcobnVsbCxjKX07YS5jPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5UKG51bGwsYyxkKX07cmV0dXJuIGF9KCk7aC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O2guYT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5XKG51bGwsYSl9O2guYj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlQobnVsbCxhLGIpfTt2YXIgdmc9bmV3IFdnKG51bGwsMCxudWxsLCExLG51bGwsZ2QpO1xuZnVuY3Rpb24gSGQoYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD0wLGU9d2ModmcpOzspaWYoZDxjKXZhciBmPWQrMSxlPWUuY2MobnVsbCxhW2RdLGJbZF0pLGQ9ZjtlbHNlIHJldHVybiB5YyhlKX1XZy5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtmdW5jdGlvbiBYZyhhLGIsYyxkLGUpe3RoaXMuJD1hO3RoaXMucm9vdD1iO3RoaXMuY291bnQ9Yzt0aGlzLk1hPWQ7dGhpcy5QYT1lO3RoaXMubz0yNTg7dGhpcy5HPTU2fWZ1bmN0aW9uIFlnKGEsYixjKXtpZihhLiQpe2lmKG51bGw9PWIpYS5QYSE9PWMmJihhLlBhPWMpLGEuTWF8fChhLmNvdW50Kz0xLGEuTWE9ITApO2Vsc2V7dmFyIGQ9bmV3IHlnO2I9KG51bGw9PWEucm9vdD9IZzphLnJvb3QpLmhiKGEuJCwwLFVjKGIpLGIsYyxkKTtiIT09YS5yb290JiYoYS5yb290PWIpO2QuaSYmKGEuY291bnQrPTEpfXJldHVybiBhfXRocm93IEVycm9yKFwiYXNzb2MhIGFmdGVyIHBlcnNpc3RlbnQhXCIpO31oPVhnLnByb3RvdHlwZTtcbmguWj1mdW5jdGlvbigpe2lmKHRoaXMuJClyZXR1cm4gdGhpcy5jb3VudDt0aHJvdyBFcnJvcihcImNvdW50IGFmdGVyIHBlcnNpc3RlbnQhXCIpO307aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWI/dGhpcy5NYT90aGlzLlBhOm51bGw6bnVsbD09dGhpcy5yb290P251bGw6dGhpcy5yb290LkFiKDAsVWMoYiksYil9O2guVD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/dGhpcy5NYT90aGlzLlBhOmM6bnVsbD09dGhpcy5yb290P2M6dGhpcy5yb290LkFiKDAsVWMoYiksYixjKX07XG5oLkdiPWZ1bmN0aW9uKGEsYil7dmFyIGM7YTppZih0aGlzLiQpaWYobnVsbCE9Yj9iLm8mMjA0OHx8bT09PWIuZGR8fChiLm8/MDp2YihWYixiKSk6dmIoVmIsYikpYz1ZZyh0aGlzLHJlLmE/cmUuYShiKTpyZS5jYWxsKG51bGwsYiksc2UuYT9zZS5hKGIpOnNlLmNhbGwobnVsbCxiKSk7ZWxzZXtjPUUoYik7Zm9yKHZhciBkPXRoaXM7Oyl7dmFyIGU9SShjKTtpZihyKGUpKWM9SihjKSxkPVlnKGQscmUuYT9yZS5hKGUpOnJlLmNhbGwobnVsbCxlKSxzZS5hP3NlLmEoZSk6c2UuY2FsbChudWxsLGUpKTtlbHNle2M9ZDticmVhayBhfX19ZWxzZSB0aHJvdyBFcnJvcihcImNvbmohIGFmdGVyIHBlcnNpc3RlbnRcIik7cmV0dXJuIGN9O1xuaC5RYj1mdW5jdGlvbigpe3ZhciBhO2lmKHRoaXMuJCl0aGlzLiQ9bnVsbCxhPW5ldyBXZyhudWxsLHRoaXMuY291bnQsdGhpcy5yb290LHRoaXMuTWEsdGhpcy5QYSxudWxsKTtlbHNlIHRocm93IEVycm9yKFwicGVyc2lzdGVudCEgY2FsbGVkIHR3aWNlXCIpO3JldHVybiBhfTtoLmNjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gWWcodGhpcyxiLGMpfTt2YXIgZ2Y9ZnVuY3Rpb24gZ2YoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3JldHVybiBnZi5mKDA8Yy5sZW5ndGg/bmV3IEYoYy5zbGljZSgwKSwwLG51bGwpOm51bGwpfTtnZi5mPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1FKGEpLGM9d2ModmcpOzspaWYoYil7YT1KKEooYikpO3ZhciBkPUkoYiksYj1DZChiKSxjPXpjKGMsZCxiKSxiPWF9ZWxzZSByZXR1cm4geWMoYyl9O2dmLkI9MDtnZi5BPWZ1bmN0aW9uKGEpe3JldHVybiBnZi5mKEUoYSkpfTtcbmZ1bmN0aW9uIFpnKGEsYil7dGhpcy5SPWE7dGhpcy5HYT1iO3RoaXMubz0zMjM3NDk4ODt0aGlzLkc9MH1oPVpnLnByb3RvdHlwZTtoLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1jKHRoaXMpfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5pbmRleE9mPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbCxhPWZ1bmN0aW9uKGEsYyl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gcGQodGhpcyxhLDApO2Nhc2UgMjpyZXR1cm4gcGQodGhpcyxhLGMpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTthLmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBkKHRoaXMsYSwwKX07YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHBkKHRoaXMsYSxjKX07cmV0dXJuIGF9KCk7XG5oLmxhc3RJbmRleE9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gc2QodGhpcyxhLE0odGhpcykpfXZhciBiPW51bGwsYj1mdW5jdGlvbihiLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIGEuY2FsbCh0aGlzLGIpO2Nhc2UgMjpyZXR1cm4gc2QodGhpcyxiLGQpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtiLmE9YTtiLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gc2QodGhpcyxhLGIpfTtyZXR1cm4gYn0oKTtoLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HYX07aC5LYT1mdW5jdGlvbigpe3ZhciBhPShudWxsIT10aGlzLlI/dGhpcy5SLm8mMTI4fHxtPT09dGhpcy5SLm1jfHwodGhpcy5SLm8/MDp2YihOYix0aGlzLlIpKTp2YihOYix0aGlzLlIpKT90aGlzLlIuS2EobnVsbCk6Sih0aGlzLlIpO3JldHVybiBudWxsPT1hP251bGw6bmV3IFpnKGEsdGhpcy5HYSl9O2guUz1mdW5jdGlvbigpe3JldHVybiBkZCh0aGlzKX07XG5oLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZCgkYyx0aGlzLkdhKX07aC5EYT1mdW5jdGlvbihhLGIpe3JldHVybiB6ZChiLHRoaXMpfTtoLkVhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gQmQoYixjLHRoaXMpfTtoLkFhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUi5BYShudWxsKS52YygpfTtoLk9hPWZ1bmN0aW9uKCl7dmFyIGE9KG51bGwhPXRoaXMuUj90aGlzLlIubyYxMjh8fG09PT10aGlzLlIubWN8fCh0aGlzLlIubz8wOnZiKE5iLHRoaXMuUikpOnZiKE5iLHRoaXMuUikpP3RoaXMuUi5LYShudWxsKTpKKHRoaXMuUik7cmV0dXJuIG51bGwhPWE/bmV3IFpnKGEsdGhpcy5HYSk6JGN9O2guWT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFpnKHRoaXMuUixiKX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHdkKGIsdGhpcyl9O1pnLnByb3RvdHlwZVt6Yl09ZnVuY3Rpb24oKXtyZXR1cm4gYmQodGhpcyl9O1xuZnVuY3Rpb24gcmcoYSl7cmV0dXJuKGE9RShhKSk/bmV3IFpnKGEsbnVsbCk6bnVsbH1mdW5jdGlvbiByZShhKXtyZXR1cm4gV2IoYSl9ZnVuY3Rpb24gJGcoYSxiKXt0aGlzLlI9YTt0aGlzLkdhPWI7dGhpcy5vPTMyMzc0OTg4O3RoaXMuRz0wfWg9JGcucHJvdG90eXBlO2gudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTSh0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkdhfTtoLkthPWZ1bmN0aW9uKCl7dmFyIGE9KG51bGwhPXRoaXMuUj90aGlzLlIubyYxMjh8fG09PT10aGlzLlIubWN8fCh0aGlzLlIubz8wOnZiKE5iLHRoaXMuUikpOnZiKE5iLHRoaXMuUikpP3RoaXMuUi5LYShudWxsKTpKKHRoaXMuUik7cmV0dXJuIG51bGw9PWE/bnVsbDpuZXcgJGcoYSx0aGlzLkdhKX07aC5TPWZ1bmN0aW9uKCl7cmV0dXJuIGRkKHRoaXMpfTtcbmguRj1mdW5jdGlvbihhLGIpe3JldHVybiB2ZCh0aGlzLGIpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHlkKCRjLHRoaXMuR2EpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpkKGIsdGhpcyl9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCZChiLGMsdGhpcyl9O2guQWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SLkFhKG51bGwpLndjKCl9O2guT2E9ZnVuY3Rpb24oKXt2YXIgYT0obnVsbCE9dGhpcy5SP3RoaXMuUi5vJjEyOHx8bT09PXRoaXMuUi5tY3x8KHRoaXMuUi5vPzA6dmIoTmIsdGhpcy5SKSk6dmIoTmIsdGhpcy5SKSk/dGhpcy5SLkthKG51bGwpOkoodGhpcy5SKTtyZXR1cm4gbnVsbCE9YT9uZXcgJGcoYSx0aGlzLkdhKTokY307aC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgJGcodGhpcy5SLGIpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2QoYix0aGlzKX07JGcucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07XG5mdW5jdGlvbiBzZyhhKXtyZXR1cm4oYT1FKGEpKT9uZXcgJGcoYSxudWxsKTpudWxsfWZ1bmN0aW9uIHNlKGEpe3JldHVybiBYYihhKX1mdW5jdGlvbiBhaChhKXtyZXR1cm4gcihZZShkZSxhKSk/Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gRWQuYihyKGEpP2E6WCxjKX0sYSk6bnVsbH1mdW5jdGlvbiBiaChhLGIpe3JldHVybiByKFllKGRlLGIpKT9jZShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXtyZXR1cm4gYWUoYSxyKGIpP2I6WCxFKGMpKX19KGZ1bmN0aW9uKGIsZCl7dmFyIGM9SShkKSxmPUNkKGQpO3JldHVybiBZZChiLGMpP1EuYyhiLGMsZnVuY3Rpb24oKXt2YXIgZD1CLmIoYixjKTtyZXR1cm4gYS5iP2EuYihkLGYpOmEuY2FsbChudWxsLGQsZil9KCkpOlEuYyhiLGMsZil9KSxiKTpudWxsfWZ1bmN0aW9uIGNoKGEpe3RoaXMuQmM9YX1jaC5wcm90b3R5cGUuSWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYy5JYSgpfTtcbmNoLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5CYy5JYSgpKXJldHVybiB0aGlzLkJjLm5leHQoKS5GYVswXTt0aHJvdyBFcnJvcihcIk5vIHN1Y2ggZWxlbWVudFwiKTt9O2NoLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb25cIil9O2Z1bmN0aW9uIGRoKGEsYixjKXt0aGlzLkQ9YTt0aGlzLkxiPWI7dGhpcy52PWM7dGhpcy5vPTE1MDc3NjQ3O3RoaXMuRz04MTk2fWg9ZGgucHJvdG90eXBlO2gudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gYmQoRSh0aGlzKSl9O2guZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBuZXcgbmcoRShFKHRoaXMpKSl9O2gudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKEUodGhpcykpfTtcbmguaGFzPWZ1bmN0aW9uKGEpe3JldHVybiBZZCh0aGlzLGEpfTtoLmZvckVhY2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUUodGhpcyksYz1udWxsLGQ9MCxlPTA7OylpZihlPGQpe3ZhciBmPWMuY2EobnVsbCxlKSxnPU8oZiwwLG51bGwpLGY9TyhmLDEsbnVsbCk7YS5iP2EuYihmLGcpOmEuY2FsbChudWxsLGYsZyk7ZSs9MX1lbHNlIGlmKGI9RShiKSlTZChiKT8oYz1DYyhiKSxiPURjKGIpLGc9YyxkPU0oYyksYz1nKTooYz1JKGIpLGc9TyhjLDAsbnVsbCksZj1PKGMsMSxudWxsKSxhLmI/YS5iKGYsZyk6YS5jYWxsKG51bGwsZixnKSxiPUooYiksYz1udWxsLGQ9MCksZT0wO2Vsc2UgcmV0dXJuIG51bGx9O2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07aC5UPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUmIodGhpcy5MYixiKT9iOmN9O2guQ2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGNoKEtjKHRoaXMuTGIpKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRH07XG5oLlo9ZnVuY3Rpb24oKXtyZXR1cm4gRWIodGhpcy5MYil9O2guUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWZkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gT2QoYikmJk0odGhpcyk9PT1NKGIpJiZYZShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIFlkKGEsYil9fSh0aGlzKSxiKX07aC5QYj1mdW5jdGlvbigpe3JldHVybiBuZXcgZWgod2ModGhpcy5MYikpfTtoLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHlkKGZoLHRoaXMuRCl9O2guWT1mdW5jdGlvbigpe3JldHVybiByZyh0aGlzLkxiKX07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkaChiLHRoaXMuTGIsdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkaCh0aGlzLkQsUS5jKHRoaXMuTGIsYixudWxsKSxudWxsKX07XG5oLmNhbGw9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjLGQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIHRoaXMuVyhudWxsLGMpO2Nhc2UgMzpyZXR1cm4gdGhpcy5UKG51bGwsYyxkKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307YS5iPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuVyhudWxsLGMpfTthLmM9ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLlQobnVsbCxjLGQpfTtyZXR1cm4gYX0oKTtoLmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY2FsbC5hcHBseSh0aGlzLFt0aGlzXS5jb25jYXQoQ2IoYikpKX07aC5hPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlcobnVsbCxhKX07aC5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuVChudWxsLGEsYil9O3ZhciBmaD1uZXcgZGgobnVsbCxYLGdkKTtcbmZ1bmN0aW9uICRkKGEpe3ZhciBiPWEubGVuZ3RoO2lmKGI8PXVnKWZvcih2YXIgYz0wLGQ9d2MoWCk7OylpZihjPGIpdmFyIGU9YysxLGQ9emMoZCxhW2NdLG51bGwpLGM9ZTtlbHNlIHJldHVybiBuZXcgZGgobnVsbCx5YyhkKSxudWxsKTtlbHNlIGZvcihjPTAsZD13YyhmaCk7OylpZihjPGIpZT1jKzEsZD14YyhkLGFbY10pLGM9ZTtlbHNlIHJldHVybiB5YyhkKX1kaC5wcm90b3R5cGVbemJdPWZ1bmN0aW9uKCl7cmV0dXJuIGJkKHRoaXMpfTtmdW5jdGlvbiBlaChhKXt0aGlzLnhiPWE7dGhpcy5HPTEzNjt0aGlzLm89MjU5fWg9ZWgucHJvdG90eXBlO2guR2I9ZnVuY3Rpb24oYSxiKXt0aGlzLnhiPXpjKHRoaXMueGIsYixudWxsKTtyZXR1cm4gdGhpc307aC5RYj1mdW5jdGlvbigpe3JldHVybiBuZXcgZGgobnVsbCx5Yyh0aGlzLnhiKSxudWxsKX07aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIE0odGhpcy54Yil9O2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07XG5oLlQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRYi5jKHRoaXMueGIsYixWZCk9PT1WZD9jOmJ9O2guY2FsbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGMpe3JldHVybiBRYi5jKHRoaXMueGIsYixWZCk9PT1WZD9jOmJ9ZnVuY3Rpb24gYihhLGIpe3JldHVybiBRYi5jKHRoaXMueGIsYixWZCk9PT1WZD9udWxsOmJ9dmFyIGM9bnVsbCxjPWZ1bmN0aW9uKGMsZSxmKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBiLmNhbGwodGhpcywwLGUpO2Nhc2UgMzpyZXR1cm4gYS5jYWxsKHRoaXMsMCxlLGYpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtjLmI9YjtjLmM9YTtyZXR1cm4gY30oKTtoLmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY2FsbC5hcHBseSh0aGlzLFt0aGlzXS5jb25jYXQoQ2IoYikpKX07aC5hPWZ1bmN0aW9uKGEpe3JldHVybiBRYi5jKHRoaXMueGIsYSxWZCk9PT1WZD9udWxsOmF9O1xuaC5iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcy54YixhLFZkKT09PVZkP2I6YX07ZnVuY3Rpb24gZ2goYSl7Zm9yKHZhciBiPUZkOzspaWYoSihhKSliPUVkLmIoYixJKGEpKSxhPUooYSk7ZWxzZSByZXR1cm4gRShiKX1mdW5jdGlvbiBBZShhKXtpZihudWxsIT1hJiYoYS5HJjQwOTZ8fG09PT1hLmZkKSlyZXR1cm4gYS5aYihudWxsKTtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoW3QoXCJEb2Vzbid0IHN1cHBvcnQgbmFtZTogXCIpLHQoYSldLmpvaW4oXCJcIikpO31mdW5jdGlvbiBhZihhLGIpe2Zvcih2YXIgYz13YyhYKSxkPUUoYSksZT1FKGIpOzspaWYoZCYmZSl2YXIgZj1JKGQpLGc9SShlKSxjPXpjKGMsZixnKSxkPUooZCksZT1KKGUpO2Vsc2UgcmV0dXJuIHljKGMpfVxuZnVuY3Rpb24gaWgoYSxiKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYz1FKGIpO2lmKGMpe3ZhciBkO2Q9SShjKTtkPWEuYT9hLmEoZCk6YS5jYWxsKG51bGwsZCk7Yz1yKGQpP3dkKEkoYyksaWgoYSxaYyhjKSkpOm51bGx9ZWxzZSBjPW51bGw7cmV0dXJuIGN9LG51bGwsbnVsbCl9ZnVuY3Rpb24gamgoYSxiLGMpe3RoaXMudT1hO3RoaXMuZW5kPWI7dGhpcy5zdGVwPWN9amgucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5zdGVwP3RoaXMudTx0aGlzLmVuZDp0aGlzLnU+dGhpcy5lbmR9O2poLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51O3RoaXMudSs9dGhpcy5zdGVwO3JldHVybiBhfTtmdW5jdGlvbiBraChhLGIsYyxkLGUpe3RoaXMuRD1hO3RoaXMuc3RhcnQ9Yjt0aGlzLmVuZD1jO3RoaXMuc3RlcD1kO3RoaXMudj1lO3RoaXMubz0zMjM3NTAwNjt0aGlzLkc9ODE5Mn1oPWtoLnByb3RvdHlwZTtcbmgudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2guZXF1aXY9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRihudWxsLGEpfTtoLmluZGV4T2Y9ZnVuY3Rpb24oKXt2YXIgYT1udWxsLGE9ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBwZCh0aGlzLGEsMCk7Y2FzZSAyOnJldHVybiBwZCh0aGlzLGEsYyl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2EuYT1mdW5jdGlvbihhKXtyZXR1cm4gcGQodGhpcyxhLDApfTthLmI9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gcGQodGhpcyxhLGMpfTtyZXR1cm4gYX0oKTtcbmgubGFzdEluZGV4T2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBzZCh0aGlzLGEsTSh0aGlzKSl9dmFyIGI9bnVsbCxiPWZ1bmN0aW9uKGIsZCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gYS5jYWxsKHRoaXMsYik7Y2FzZSAyOnJldHVybiBzZCh0aGlzLGIsZCl9dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFyaXR5OiBcIithcmd1bWVudHMubGVuZ3RoKTt9O2IuYT1hO2IuYj1mdW5jdGlvbihhLGIpe3JldHVybiBzZCh0aGlzLGEsYil9O3JldHVybiBifSgpO2guY2E9ZnVuY3Rpb24oYSxiKXtpZihiPEViKHRoaXMpKXJldHVybiB0aGlzLnN0YXJ0K2IqdGhpcy5zdGVwO2lmKHRoaXMuc3RhcnQ+dGhpcy5lbmQmJjA9PT10aGlzLnN0ZXApcmV0dXJuIHRoaXMuc3RhcnQ7dGhyb3cgRXJyb3IoXCJJbmRleCBvdXQgb2YgYm91bmRzXCIpO307XG5oLlFhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxFYih0aGlzKT90aGlzLnN0YXJ0K2IqdGhpcy5zdGVwOnRoaXMuc3RhcnQ+dGhpcy5lbmQmJjA9PT10aGlzLnN0ZXA/dGhpcy5zdGFydDpjfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBqaCh0aGlzLnN0YXJ0LHRoaXMuZW5kLHRoaXMuc3RlcCl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR9O2guS2E9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLnN0ZXA/dGhpcy5zdGFydCt0aGlzLnN0ZXA8dGhpcy5lbmQ/bmV3IGtoKHRoaXMuRCx0aGlzLnN0YXJ0K3RoaXMuc3RlcCx0aGlzLmVuZCx0aGlzLnN0ZXAsbnVsbCk6bnVsbDp0aGlzLnN0YXJ0K3RoaXMuc3RlcD50aGlzLmVuZD9uZXcga2godGhpcy5ELHRoaXMuc3RhcnQrdGhpcy5zdGVwLHRoaXMuZW5kLHRoaXMuc3RlcCxudWxsKTpudWxsfTtoLlo9ZnVuY3Rpb24oKXtyZXR1cm4gdGIobmModGhpcykpPzA6TWF0aC5jZWlsKCh0aGlzLmVuZC10aGlzLnN0YXJ0KS90aGlzLnN0ZXApfTtcbmguUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPWRkKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmQodGhpcyxiKX07aC56YT1mdW5jdGlvbigpe3JldHVybiB5ZCgkYyx0aGlzLkQpfTtoLkRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGlkKHRoaXMsYil9O2guRWE9ZnVuY3Rpb24oYSxiLGMpe2ZvcihhPXRoaXMuc3RhcnQ7OylpZigwPHRoaXMuc3RlcD9hPHRoaXMuZW5kOmE+dGhpcy5lbmQpYz1iLmI/Yi5iKGMsYSk6Yi5jYWxsKG51bGwsYyxhKSxhKz10aGlzLnN0ZXA7ZWxzZSByZXR1cm4gY307aC5BYT1mdW5jdGlvbigpe3JldHVybiBudWxsPT1uYyh0aGlzKT9udWxsOnRoaXMuc3RhcnR9O2guT2E9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9bmModGhpcyk/bmV3IGtoKHRoaXMuRCx0aGlzLnN0YXJ0K3RoaXMuc3RlcCx0aGlzLmVuZCx0aGlzLnN0ZXAsbnVsbCk6JGN9O1xuaC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5zdGVwP3RoaXMuc3RhcnQ8dGhpcy5lbmQ/dGhpczpudWxsOjA+dGhpcy5zdGVwP3RoaXMuc3RhcnQ+dGhpcy5lbmQ/dGhpczpudWxsOnRoaXMuc3RhcnQ9PT10aGlzLmVuZD9udWxsOnRoaXN9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcga2goYix0aGlzLnN0YXJ0LHRoaXMuZW5kLHRoaXMuc3RlcCx0aGlzLnYpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2QoYix0aGlzKX07a2gucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZCh0aGlzKX07ZnVuY3Rpb24gbGgoYSxiKXtyZXR1cm4gbmV3IGtoKG51bGwsYSxiLDEsbnVsbCl9ZnVuY3Rpb24gbWgoYSl7YTpmb3IoOzspaWYoRShhKSlhPUooYSk7ZWxzZSBicmVhayBhfVxuZnVuY3Rpb24gbmgoYSxiKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpe3ZhciBjPWEuZXhlYyhiKTtyZXR1cm4gbnVsbD09Yz9udWxsOjE9PT1NKGMpP0koYyk6WmYoYyl9dGhyb3cgbmV3IFR5cGVFcnJvcihcInJlLWZpbmQgbXVzdCBtYXRjaCBhZ2FpbnN0IGEgc3RyaW5nLlwiKTt9XG5mdW5jdGlvbiBvaChhLGIsYyxkLGUsZixnKXt2YXIgaz1pYjtpYj1udWxsPT1pYj9udWxsOmliLTE7dHJ5e2lmKG51bGwhPWliJiYwPmliKXJldHVybiB4KGEsXCIjXCIpO3goYSxjKTtpZigwPT09cWIuYShmKSlFKGcpJiZ4KGEsZnVuY3Rpb24oKXt2YXIgYT1waC5hKGYpO3JldHVybiByKGEpP2E6XCIuLi5cIn0oKSk7ZWxzZXtpZihFKGcpKXt2YXIgbD1JKGcpO2IuYz9iLmMobCxhLGYpOmIuY2FsbChudWxsLGwsYSxmKX1mb3IodmFyIHA9SihnKSx1PXFiLmEoZiktMTs7KWlmKCFwfHxudWxsIT11JiYwPT09dSl7RShwKSYmMD09PXUmJih4KGEsZCkseChhLGZ1bmN0aW9uKCl7dmFyIGE9cGguYShmKTtyZXR1cm4gcihhKT9hOlwiLi4uXCJ9KCkpKTticmVha31lbHNle3goYSxkKTt2YXIgdj1JKHApO2M9YTtnPWY7Yi5jP2IuYyh2LGMsZyk6Yi5jYWxsKG51bGwsdixjLGcpO3ZhciB3PUoocCk7Yz11LTE7cD13O3U9Y319cmV0dXJuIHgoYSxlKX1maW5hbGx5e2liPWt9fVxuZnVuY3Rpb24gcWgoYSxiKXtmb3IodmFyIGM9RShiKSxkPW51bGwsZT0wLGY9MDs7KWlmKGY8ZSl7dmFyIGc9ZC5jYShudWxsLGYpO3goYSxnKTtmKz0xfWVsc2UgaWYoYz1FKGMpKWQ9YyxTZChkKT8oYz1DYyhkKSxlPURjKGQpLGQ9YyxnPU0oYyksYz1lLGU9Zyk6KGc9SShkKSx4KGEsZyksYz1KKGQpLGQ9bnVsbCxlPTApLGY9MDtlbHNlIHJldHVybiBudWxsfXZhciByaD17J1wiJzonXFxcXFwiJyxcIlxcXFxcIjpcIlxcXFxcXFxcXCIsXCJcXGJcIjpcIlxcXFxiXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXHJcIjpcIlxcXFxyXCIsXCJcXHRcIjpcIlxcXFx0XCJ9O2Z1bmN0aW9uIHNoKGEpe3JldHVyblt0KCdcIicpLHQoYS5yZXBsYWNlKFJlZ0V4cCgnW1xcXFxcXFxcXCJcXGJcXGZcXG5cXHJcXHRdJyxcImdcIiksZnVuY3Rpb24oYSl7cmV0dXJuIHJoW2FdfSkpLHQoJ1wiJyldLmpvaW4oXCJcIil9XG5mdW5jdGlvbiB0aChhLGIpe3ZhciBjPVdkKEIuYihhLG9iKSk7cmV0dXJuIGM/KGM9bnVsbCE9Yj9iLm8mMTMxMDcyfHxtPT09Yi5lZD8hMDohMTohMSk/bnVsbCE9S2QoYik6YzpjfVxuZnVuY3Rpb24gdWgoYSxiLGMpe2lmKG51bGw9PWEpcmV0dXJuIHgoYixcIm5pbFwiKTtpZih0aChjLGEpKXt4KGIsXCJeXCIpO3ZhciBkPUtkKGEpO3ZoLmM/dmguYyhkLGIsYyk6dmguY2FsbChudWxsLGQsYixjKTt4KGIsXCIgXCIpfWlmKGEuemIpcmV0dXJuIGEuSGIoYSxiLGMpO2lmKG51bGwhPWEmJihhLm8mMjE0NzQ4MzY0OHx8bT09PWEubGEpKXJldHVybiBhLlUobnVsbCxiLGMpO2lmKCEwPT09YXx8ITE9PT1hfHxcIm51bWJlclwiPT09dHlwZW9mIGEpcmV0dXJuIHgoYixcIlwiK3QoYSkpO2lmKHViKGEpKXJldHVybiB4KGIsXCIjanMgXCIpLGQ9bWYuYihmdW5jdGlvbihiKXtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbemUuYShiKSxhW2JdXSxudWxsKX0sVGQoYSkpLHdoLkM/d2guQyhkLHZoLGIsYyk6d2guY2FsbChudWxsLGQsdmgsYixjKTtpZihzYihhKSlyZXR1cm4gb2goYix2aCxcIiNqcyBbXCIsXCIgXCIsXCJdXCIsYyxhKTtpZihcInN0cmluZ1wiPT10eXBlb2YgYSlyZXR1cm4gcihuYi5hKGMpKT9cbngoYixzaChhKSk6eChiLGEpO2lmKFwiZnVuY3Rpb25cIj09YmEoYSkpe3ZhciBlPWEubmFtZTtjPXIoZnVuY3Rpb24oKXt2YXIgYT1udWxsPT1lO3JldHVybiBhP2E6Z2EoZSl9KCkpP1wiRnVuY3Rpb25cIjplO3JldHVybiBxaChiLE4oW1wiI29iamVjdFtcIixjLCcgXCInLFwiXCIrdChhKSwnXCJdJ10sMCkpfWlmKGEgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBjPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVwiXCIrdChhKTs7KWlmKE0oYyk8YiljPVt0KFwiMFwiKSx0KGMpXS5qb2luKFwiXCIpO2Vsc2UgcmV0dXJuIGN9LHFoKGIsTihbJyNpbnN0IFwiJyxcIlwiK3QoYS5nZXRVVENGdWxsWWVhcigpKSxcIi1cIixjKGEuZ2V0VVRDTW9udGgoKSsxLDIpLFwiLVwiLGMoYS5nZXRVVENEYXRlKCksMiksXCJUXCIsYyhhLmdldFVUQ0hvdXJzKCksMiksXCI6XCIsYyhhLmdldFVUQ01pbnV0ZXMoKSwyKSxcIjpcIixjKGEuZ2V0VVRDU2Vjb25kcygpLDIpLFwiLlwiLGMoYS5nZXRVVENNaWxsaXNlY29uZHMoKSwzKSxcIi1cIiwnMDA6MDBcIiddLDApKTtcbmlmKGEgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIHFoKGIsTihbJyNcIicsYS5zb3VyY2UsJ1wiJ10sMCkpO2lmKHIoYS5jb25zdHJ1Y3Rvci5uYikpcmV0dXJuIHFoKGIsTihbXCIjb2JqZWN0W1wiLGEuY29uc3RydWN0b3IubmIucmVwbGFjZShSZWdFeHAoXCIvXCIsXCJnXCIpLFwiLlwiKSxcIl1cIl0sMCkpO2U9YS5jb25zdHJ1Y3Rvci5uYW1lO2M9cihmdW5jdGlvbigpe3ZhciBhPW51bGw9PWU7cmV0dXJuIGE/YTpnYShlKX0oKSk/XCJPYmplY3RcIjplO3JldHVybiBxaChiLE4oW1wiI29iamVjdFtcIixjLFwiIFwiLFwiXCIrdChhKSxcIl1cIl0sMCkpfWZ1bmN0aW9uIHZoKGEsYixjKXt2YXIgZD14aC5hKGMpO3JldHVybiByKGQpPyhjPVEuYyhjLHloLHVoKSxkLmM/ZC5jKGEsYixjKTpkLmNhbGwobnVsbCxhLGIsYykpOnVoKGEsYixjKX1cbmZ1bmN0aW9uIHpoKGEsYil7dmFyIGM7aWYoTGQoYSkpYz1cIlwiO2Vsc2V7Yz10O3ZhciBkPW5ldyB5YSxlPW5ldyBMYyhkKTthOnt2aChJKGEpLGUsYik7Zm9yKHZhciBmPUUoSihhKSksZz1udWxsLGs9MCxsPTA7OylpZihsPGspe3ZhciBwPWcuY2EobnVsbCxsKTt4KGUsXCIgXCIpO3ZoKHAsZSxiKTtsKz0xfWVsc2UgaWYoZj1FKGYpKWc9ZixTZChnKT8oZj1DYyhnKSxrPURjKGcpLGc9ZixwPU0oZiksZj1rLGs9cCk6KHA9SShnKSx4KGUsXCIgXCIpLHZoKHAsZSxiKSxmPUooZyksZz1udWxsLGs9MCksbD0wO2Vsc2UgYnJlYWsgYX1lLm1iKG51bGwpO2M9XCJcIitjKGQpfXJldHVybiBjfXZhciBBaD1mdW5jdGlvbiBBaChiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7cmV0dXJuIEFoLmYoMDxjLmxlbmd0aD9uZXcgRihjLnNsaWNlKDApLDAsbnVsbCk6bnVsbCl9O1xuQWguZj1mdW5jdGlvbihhKXtyZXR1cm4gemgoYSxrYigpKX07QWguQj0wO0FoLkE9ZnVuY3Rpb24oYSl7cmV0dXJuIEFoLmYoRShhKSl9O3ZhciBCaD1mdW5jdGlvbiBCaChiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7cmV0dXJuIEJoLmYoMDxjLmxlbmd0aD9uZXcgRihjLnNsaWNlKDApLDAsbnVsbCk6bnVsbCl9O0JoLmY9ZnVuY3Rpb24oYSl7cmV0dXJuIHpoKGEsUS5jKGtiKCksbmIsITEpKX07QmguQj0wO0JoLkE9ZnVuY3Rpb24oYSl7cmV0dXJuIEJoLmYoRShhKSl9O2Z1bmN0aW9uIENoKGEpe3ZhciBiPVEuYyhrYigpLG5iLCExKTthPXpoKGEsYik7ZGIuYT9kYi5hKGEpOmRiLmNhbGwobnVsbCk7cighMCk/KGE9a2IoKSxkYi5hP2RiLmEoXCJcXG5cIik6ZGIuY2FsbChudWxsKSxhPShCLmIoYSxtYiksbnVsbCkpOmE9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHdoKGEsYixjLGQpe3JldHVybiBvaChjLGZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1XYihhKTtiLmM/Yi5jKGUsYyxkKTpiLmNhbGwobnVsbCxlLGMsZCk7eChjLFwiIFwiKTthPVhiKGEpO3JldHVybiBiLmM/Yi5jKGEsYyxkKTpiLmNhbGwobnVsbCxhLGMsZCl9LFwie1wiLFwiLCBcIixcIn1cIixkLEUoYSkpfVhjLnByb3RvdHlwZS5sYT1tO1hjLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXt4KGIsXCIjJ1wiKTtyZXR1cm4gdmgodGhpcy5WYixiLGMpfTtGLnByb3RvdHlwZS5sYT1tO0YucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLHZoLFwiKFwiLFwiIFwiLFwiKVwiLGMsdGhpcyl9O0JlLnByb3RvdHlwZS5sYT1tO0JlLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIihcIixcIiBcIixcIilcIixjLHRoaXMpfTtSZy5wcm90b3R5cGUubGE9bTtcblJnLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIihcIixcIiBcIixcIilcIixjLHRoaXMpfTtwZy5wcm90b3R5cGUubGE9bTtwZy5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsdmgsXCIoXCIsXCIgXCIsXCIpXCIsYyx0aGlzKX07YWcucHJvdG90eXBlLmxhPW07YWcucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLHZoLFwiKFwiLFwiIFwiLFwiKVwiLGMsdGhpcyl9O3hlLnByb3RvdHlwZS5sYT1tO3hlLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIihcIixcIiBcIixcIilcIixjLHRoaXMpfTt1ZC5wcm90b3R5cGUubGE9bTt1ZC5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsdmgsXCIoXCIsXCIgXCIsXCIpXCIsYyx0aGlzKX07V2cucHJvdG90eXBlLmxhPW07V2cucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB3aCh0aGlzLHZoLGIsYyl9O1RnLnByb3RvdHlwZS5sYT1tO1xuVGcucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLHZoLFwiKFwiLFwiIFwiLFwiKVwiLGMsdGhpcyl9O2VnLnByb3RvdHlwZS5sYT1tO2VnLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIltcIixcIiBcIixcIl1cIixjLHRoaXMpfTtkaC5wcm90b3R5cGUubGE9bTtkaC5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsdmgsXCIje1wiLFwiIFwiLFwifVwiLGMsdGhpcyl9O0dlLnByb3RvdHlwZS5sYT1tO0dlLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIihcIixcIiBcIixcIilcIixjLHRoaXMpfTtkZi5wcm90b3R5cGUubGE9bTtkZi5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7eChiLFwiI29iamVjdCBbY2xqcy5jb3JlLkF0b20gXCIpO3ZoKG5ldyBxKG51bGwsMSxbRGgsdGhpcy5zdGF0ZV0sbnVsbCksYixjKTtyZXR1cm4geChiLFwiXVwiKX07JGcucHJvdG90eXBlLmxhPW07XG4kZy5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsdmgsXCIoXCIsXCIgXCIsXCIpXCIsYyx0aGlzKX07Vi5wcm90b3R5cGUubGE9bTtWLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYix2aCxcIltcIixcIiBcIixcIl1cIixjLHRoaXMpfTt1ZS5wcm90b3R5cGUubGE9bTt1ZS5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIpe3JldHVybiB4KGIsXCIoKVwiKX07cS5wcm90b3R5cGUubGE9bTtxLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gd2godGhpcyx2aCxiLGMpfTtraC5wcm90b3R5cGUubGE9bTtraC5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsdmgsXCIoXCIsXCIgXCIsXCIpXCIsYyx0aGlzKX07WmcucHJvdG90eXBlLmxhPW07WmcucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLHZoLFwiKFwiLFwiIFwiLFwiKVwiLGMsdGhpcyl9O3RlLnByb3RvdHlwZS5sYT1tO1xudGUucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLHZoLFwiKFwiLFwiIFwiLFwiKVwiLGMsdGhpcyl9O2Z1bmN0aW9uIEVoKCl7fXZhciBGaD1mdW5jdGlvbiBGaChiKXtpZihudWxsIT1iJiZudWxsIT1iLmFkKXJldHVybiBiLmFkKGIpO3ZhciBjPUZoW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPUZoLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklFbmNvZGVKUy4tY2xqLVxceDNlanNcIixiKTt9O2Z1bmN0aW9uIEdoKGEpe3JldHVybihudWxsIT1hP209PT1hLiRjfHwoYS5vZD8wOnZiKEVoLGEpKTp2YihFaCxhKSk/RmgoYSk6XCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcIm51bWJlclwiPT09dHlwZW9mIGF8fGEgaW5zdGFuY2VvZiBTfHxhIGluc3RhbmNlb2Ygej9IaC5hP0hoLmEoYSk6SGguY2FsbChudWxsLGEpOkFoLmYoTihbYV0sMCkpfVxudmFyIEhoPWZ1bmN0aW9uIEhoKGIpe2lmKG51bGw9PWIpcmV0dXJuIG51bGw7aWYobnVsbCE9Yj9tPT09Yi4kY3x8KGIub2Q/MDp2YihFaCxiKSk6dmIoRWgsYikpcmV0dXJuIEZoKGIpO2lmKGIgaW5zdGFuY2VvZiBTKXJldHVybiBBZShiKTtpZihiIGluc3RhbmNlb2YgeilyZXR1cm5cIlwiK3QoYik7aWYoUWQoYikpe3ZhciBjPXt9O2I9RShiKTtmb3IodmFyIGQ9bnVsbCxlPTAsZj0wOzspaWYoZjxlKXt2YXIgZz1kLmNhKG51bGwsZiksaz1PKGcsMCxudWxsKSxnPU8oZywxLG51bGwpO2NbR2goayldPUhoLmE/SGguYShnKTpIaC5jYWxsKG51bGwsZyk7Zis9MX1lbHNlIGlmKGI9RShiKSlTZChiKT8oZT1DYyhiKSxiPURjKGIpLGQ9ZSxlPU0oZSkpOihlPUkoYiksZD1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpLGNbR2goZCldPUhoLmE/SGguYShlKTpIaC5jYWxsKG51bGwsZSksYj1KKGIpLGQ9bnVsbCxlPTApLGY9MDtlbHNlIGJyZWFrO3JldHVybiBjfWlmKE5kKGIpKXtjPVtdO2I9XG5FKG1mLmIoSGgsYikpO2Q9bnVsbDtmb3IoZj1lPTA7OylpZihmPGUpaz1kLmNhKG51bGwsZiksYy5wdXNoKGspLGYrPTE7ZWxzZSBpZihiPUUoYikpZD1iLFNkKGQpPyhiPUNjKGQpLGY9RGMoZCksZD1iLGU9TShiKSxiPWYpOihiPUkoZCksYy5wdXNoKGIpLGI9SihkKSxkPW51bGwsZT0wKSxmPTA7ZWxzZSBicmVhaztyZXR1cm4gY31yZXR1cm4gYn0sSWg9bnVsbDtmdW5jdGlvbiBKaCgpe2lmKG51bGw9PUloKXt2YXIgYT1uZXcgcShudWxsLDMsW0toLFgsTGgsWCxNaCxYXSxudWxsKTtJaD1ZP1koYSk6ZWYuY2FsbChudWxsLGEpfXJldHVybiBJaH1cbmZ1bmN0aW9uIE5oKGEsYixjKXt2YXIgZD1DLmIoYixjKTtpZighZCYmIShkPVlkKE1oLmEoYSkuY2FsbChudWxsLGIpLGMpKSYmKGQ9UmQoYykpJiYoZD1SZChiKSkpaWYoZD1NKGMpPT09TShiKSlmb3IodmFyIGQ9ITAsZT0wOzspaWYoZCYmZSE9PU0oYykpZD1OaChhLGIuYT9iLmEoZSk6Yi5jYWxsKG51bGwsZSksYy5hP2MuYShlKTpjLmNhbGwobnVsbCxlKSksZSs9MTtlbHNlIHJldHVybiBkO2Vsc2UgcmV0dXJuIGQ7ZWxzZSByZXR1cm4gZH1mdW5jdGlvbiBPaChhKXt2YXIgYjtiPUpoKCk7Yj1MLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpO3JldHVybiBVZShCLmIoS2guYShiKSxhKSl9ZnVuY3Rpb24gUGgoYSxiLGMsZCl7a2YuYihhLGZ1bmN0aW9uKCl7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KTtrZi5iKGMsZnVuY3Rpb24oKXtyZXR1cm4gTC5hP0wuYShkKTpMLmNhbGwobnVsbCxkKX0pfVxudmFyIFFoPWZ1bmN0aW9uIFFoKGIsYyxkKXt2YXIgZT0oTC5hP0wuYShkKTpMLmNhbGwobnVsbCxkKSkuY2FsbChudWxsLGIpLGU9cihyKGUpP2UuYT9lLmEoYyk6ZS5jYWxsKG51bGwsYyk6ZSk/ITA6bnVsbDtpZihyKGUpKXJldHVybiBlO2U9ZnVuY3Rpb24oKXtmb3IodmFyIGU9T2goYyk7OylpZigwPE0oZSkpe3ZhciBnPUkoZSk7UWguYz9RaC5jKGIsZyxkKTpRaC5jYWxsKG51bGwsYixnLGQpO2U9WmMoZSl9ZWxzZSByZXR1cm4gbnVsbH0oKTtpZihyKGUpKXJldHVybiBlO2U9ZnVuY3Rpb24oKXtmb3IodmFyIGU9T2goYik7OylpZigwPE0oZSkpe3ZhciBnPUkoZSk7UWguYz9RaC5jKGcsYyxkKTpRaC5jYWxsKG51bGwsZyxjLGQpO2U9WmMoZSl9ZWxzZSByZXR1cm4gbnVsbH0oKTtyZXR1cm4gcihlKT9lOiExfTtmdW5jdGlvbiBSaChhLGIsYyxkKXtjPVFoKGEsYixjKTtyZXR1cm4gcihjKT9jOk5oKGQsYSxiKX1cbnZhciBTaD1mdW5jdGlvbiBTaChiLGMsZCxlLGYsZyxrKXt2YXIgbD1hZShmdW5jdGlvbihlLGcpe3ZhciBrPU8oZywwLG51bGwpO08oZywxLG51bGwpO2lmKE5oKEwuYT9MLmEoZCk6TC5jYWxsKG51bGwsZCksYyxrKSl7dmFyIGw7bD0obD1udWxsPT1lKT9sOlJoKGssSShlKSxmLEwuYT9MLmEoZCk6TC5jYWxsKG51bGwsZCkpO2w9cihsKT9nOmU7aWYoIXIoUmgoSShsKSxrLGYsTC5hP0wuYShkKTpMLmNhbGwobnVsbCxkKSkpKXRocm93IEVycm9yKFt0KFwiTXVsdGlwbGUgbWV0aG9kcyBpbiBtdWx0aW1ldGhvZCAnXCIpLHQoYiksdChcIicgbWF0Y2ggZGlzcGF0Y2ggdmFsdWU6IFwiKSx0KGMpLHQoXCIgLVxceDNlIFwiKSx0KGspLHQoXCIgYW5kIFwiKSx0KEkobCkpLHQoXCIsIGFuZCBuZWl0aGVyIGlzIHByZWZlcnJlZFwiKV0uam9pbihcIlwiKSk7cmV0dXJuIGx9cmV0dXJuIGV9LG51bGwsTC5hP0wuYShlKTpMLmNhbGwobnVsbCxlKSk7aWYocihsKSl7aWYoQy5iKEwuYT9MLmEoayk6TC5jYWxsKG51bGwsXG5rKSxMLmE/TC5hKGQpOkwuY2FsbChudWxsLGQpKSlyZXR1cm4ga2YuQyhnLFEsYyxDZChsKSksQ2QobCk7UGgoZyxlLGssZCk7cmV0dXJuIFNoLmphP1NoLmphKGIsYyxkLGUsZixnLGspOlNoLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrKX1yZXR1cm4gbnVsbH0sVGg9ZnVuY3Rpb24gVGgoYixjLGQpe2lmKG51bGwhPWImJm51bGwhPWIuZmEpcmV0dXJuIGIuZmEoMCxjLGQpO3ZhciBlPVRoW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZSlyZXR1cm4gZS5jP2UuYyhiLGMsZCk6ZS5jYWxsKG51bGwsYixjLGQpO2U9VGguXztpZihudWxsIT1lKXJldHVybiBlLmM/ZS5jKGIsYyxkKTplLmNhbGwobnVsbCxiLGMsZCk7dGhyb3cgeGIoXCJJTXVsdGlGbi4tYWRkLW1ldGhvZFwiLGIpO307XG5mdW5jdGlvbiBVaChhLGIpe3Rocm93IEVycm9yKFt0KFwiTm8gbWV0aG9kIGluIG11bHRpbWV0aG9kICdcIiksdChhKSx0KFwiJyBmb3IgZGlzcGF0Y2ggdmFsdWU6IFwiKSx0KGIpXS5qb2luKFwiXCIpKTt9ZnVuY3Rpb24gVmgoYSxiLGMsZCxlLGYsZyxrKXt0aGlzLm5hbWU9YTt0aGlzLm09Yjt0aGlzLnBkPWM7dGhpcy5kYz1kO3RoaXMuVWI9ZTt0aGlzLkFkPWY7dGhpcy5oYz1nO3RoaXMuV2I9azt0aGlzLm89NDE5NDMwNTt0aGlzLkc9NDM1Mn1oPVZoLnByb3RvdHlwZTtcbmguY2FsbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgsSyxVLFIsdmEpe2E9dGhpczt2YXIgYWE9VGUoYS5tLGIsYyxkLGUsTihbZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUsUix2YV0sMCkpLFA9dGhpcy5LKDAsYWEpO3IoUCl8fFVoKGEubmFtZSxhYSk7cmV0dXJuIFRlKFAsYixjLGQsZSxOKFtmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEssVSxSLHZhXSwwKSl9ZnVuY3Rpb24gYihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUsUil7YT10aGlzO3ZhciBhYT1hLm0ud2E/YS5tLndhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUsUik6YS5tLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgsSyxVLFIpLFA9dGhpcy5LKDAsYWEpO3IoUCl8fFVoKGEubmFtZSxhYSk7cmV0dXJuIFAud2E/UC53YShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LFxuQSxELEcsSCxLLFUsUik6UC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEssVSxSKX1mdW5jdGlvbiBjKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEssVSl7YT10aGlzO3ZhciBhYT1hLm0udmE/YS5tLnZhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUpOmEubS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEssVSksUD10aGlzLksoMCxhYSk7cihQKXx8VWgoYS5uYW1lLGFhKTtyZXR1cm4gUC52YT9QLnZhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUpOlAuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLLFUpfWZ1bmN0aW9uIGQoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgsSyl7YT10aGlzO3ZhciBhYT1hLm0udWE/YS5tLnVhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcsSCxLKTphLm0uY2FsbChudWxsLFxuYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEspLFA9dGhpcy5LKDAsYWEpO3IoUCl8fFVoKGEubmFtZSxhYSk7cmV0dXJuIFAudWE/UC51YShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgsSyk6UC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxILEspfWZ1bmN0aW9uIGUoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgpe2E9dGhpczt2YXIgYWE9YS5tLnRhP2EubS50YShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgpOmEubS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxIKSxQPXRoaXMuSygwLGFhKTtyKFApfHxVaChhLm5hbWUsYWEpO3JldHVybiBQLnRhP1AudGEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsRyxIKTpQLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHLEgpfWZ1bmN0aW9uIGYoYSxiLGMsZCxlLGYsZyxrLGwscCx1LFxudix3LHksQSxELEcpe2E9dGhpczt2YXIgYWE9YS5tLnNhP2EubS5zYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHKTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEcpLFA9dGhpcy5LKDAsYWEpO3IoUCl8fFVoKGEubmFtZSxhYSk7cmV0dXJuIFAuc2E/UC5zYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHKTpQLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxHKX1mdW5jdGlvbiBnKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpe2E9dGhpczt2YXIgUD1hLm0ucmE/YS5tLnJhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKSxhYT10aGlzLksoMCxQKTtyKGFhKXx8VWgoYS5uYW1lLFApO3JldHVybiBhYS5yYT9hYS5yYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCk6YWEuY2FsbChudWxsLGIsYyxkLFxuZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpfWZ1bmN0aW9uIGsoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpe2E9dGhpczt2YXIgRD1hLm0ucWE/YS5tLnFhKGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSk6YS5tLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpLFA9dGhpcy5LKDAsRCk7cihQKXx8VWgoYS5uYW1lLEQpO3JldHVybiBQLnFhP1AucWEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKTpQLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEpfWZ1bmN0aW9uIGwoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KXthPXRoaXM7dmFyIEE9YS5tLnBhP2EubS5wYShiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpLEQ9dGhpcy5LKDAsQSk7cihEKXx8VWgoYS5uYW1lLEEpO3JldHVybiBELnBhP0QucGEoYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSk6RC5jYWxsKG51bGwsXG5iLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KX1mdW5jdGlvbiBwKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcpe2E9dGhpczt2YXIgeT1hLm0ub2E/YS5tLm9hKGIsYyxkLGUsZixnLGssbCxwLHUsdix3KTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KSxBPXRoaXMuSygwLHkpO3IoQSl8fFVoKGEubmFtZSx5KTtyZXR1cm4gQS5vYT9BLm9hKGIsYyxkLGUsZixnLGssbCxwLHUsdix3KTpBLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyl9ZnVuY3Rpb24gdShhLGIsYyxkLGUsZixnLGssbCxwLHUsdil7YT10aGlzO3ZhciB3PWEubS5uYT9hLm0ubmEoYixjLGQsZSxmLGcsayxsLHAsdSx2KTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdikseT10aGlzLksoMCx3KTtyKHkpfHxVaChhLm5hbWUsdyk7cmV0dXJuIHkubmE/eS5uYShiLGMsZCxlLGYsZyxrLGwscCx1LHYpOnkuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUsdil9ZnVuY3Rpb24gdihhLFxuYixjLGQsZSxmLGcsayxsLHAsdSl7YT10aGlzO3ZhciB2PWEubS5tYT9hLm0ubWEoYixjLGQsZSxmLGcsayxsLHAsdSk6YS5tLmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwscCx1KSx3PXRoaXMuSygwLHYpO3Iodyl8fFVoKGEubmFtZSx2KTtyZXR1cm4gdy5tYT93Lm1hKGIsYyxkLGUsZixnLGssbCxwLHUpOncuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwLHUpfWZ1bmN0aW9uIHcoYSxiLGMsZCxlLGYsZyxrLGwscCl7YT10aGlzO3ZhciB1PWEubS55YT9hLm0ueWEoYixjLGQsZSxmLGcsayxsLHApOmEubS5jYWxsKG51bGwsYixjLGQsZSxmLGcsayxsLHApLHY9dGhpcy5LKDAsdSk7cih2KXx8VWgoYS5uYW1lLHUpO3JldHVybiB2LnlhP3YueWEoYixjLGQsZSxmLGcsayxsLHApOnYuY2FsbChudWxsLGIsYyxkLGUsZixnLGssbCxwKX1mdW5jdGlvbiB5KGEsYixjLGQsZSxmLGcsayxsKXthPXRoaXM7dmFyIHA9YS5tLnhhP2EubS54YShiLGMsZCxlLGYsZyxrLGwpOmEubS5jYWxsKG51bGwsXG5iLGMsZCxlLGYsZyxrLGwpLHU9dGhpcy5LKDAscCk7cih1KXx8VWgoYS5uYW1lLHApO3JldHVybiB1LnhhP3UueGEoYixjLGQsZSxmLGcsayxsKTp1LmNhbGwobnVsbCxiLGMsZCxlLGYsZyxrLGwpfWZ1bmN0aW9uIEEoYSxiLGMsZCxlLGYsZyxrKXthPXRoaXM7dmFyIGw9YS5tLmphP2EubS5qYShiLGMsZCxlLGYsZyxrKTphLm0uY2FsbChudWxsLGIsYyxkLGUsZixnLGspLHA9dGhpcy5LKDAsbCk7cihwKXx8VWgoYS5uYW1lLGwpO3JldHVybiBwLmphP3AuamEoYixjLGQsZSxmLGcsayk6cC5jYWxsKG51bGwsYixjLGQsZSxmLGcsayl9ZnVuY3Rpb24gRChhLGIsYyxkLGUsZixnKXthPXRoaXM7dmFyIGs9YS5tLmhhP2EubS5oYShiLGMsZCxlLGYsZyk6YS5tLmNhbGwobnVsbCxiLGMsZCxlLGYsZyksbD10aGlzLksoMCxrKTtyKGwpfHxVaChhLm5hbWUsayk7cmV0dXJuIGwuaGE/bC5oYShiLGMsZCxlLGYsZyk6bC5jYWxsKG51bGwsYixjLGQsZSxmLGcpfWZ1bmN0aW9uIEgoYSxiLGMsXG5kLGUsZil7YT10aGlzO3ZhciBnPWEubS5MP2EubS5MKGIsYyxkLGUsZik6YS5tLmNhbGwobnVsbCxiLGMsZCxlLGYpLGs9dGhpcy5LKDAsZyk7cihrKXx8VWgoYS5uYW1lLGcpO3JldHVybiBrLkw/ay5MKGIsYyxkLGUsZik6ay5jYWxsKG51bGwsYixjLGQsZSxmKX1mdW5jdGlvbiBLKGEsYixjLGQsZSl7YT10aGlzO3ZhciBmPWEubS5DP2EubS5DKGIsYyxkLGUpOmEubS5jYWxsKG51bGwsYixjLGQsZSksZz10aGlzLksoMCxmKTtyKGcpfHxVaChhLm5hbWUsZik7cmV0dXJuIGcuQz9nLkMoYixjLGQsZSk6Zy5jYWxsKG51bGwsYixjLGQsZSl9ZnVuY3Rpb24gUihhLGIsYyxkKXthPXRoaXM7dmFyIGU9YS5tLmM/YS5tLmMoYixjLGQpOmEubS5jYWxsKG51bGwsYixjLGQpLGY9dGhpcy5LKDAsZSk7cihmKXx8VWgoYS5uYW1lLGUpO3JldHVybiBmLmM/Zi5jKGIsYyxkKTpmLmNhbGwobnVsbCxiLGMsZCl9ZnVuY3Rpb24gVShhLGIsYyl7YT10aGlzO3ZhciBkPWEubS5iP2EubS5iKGIsYyk6XG5hLm0uY2FsbChudWxsLGIsYyksZT10aGlzLksoMCxkKTtyKGUpfHxVaChhLm5hbWUsZCk7cmV0dXJuIGUuYj9lLmIoYixjKTplLmNhbGwobnVsbCxiLGMpfWZ1bmN0aW9uIHZhKGEsYil7YT10aGlzO3ZhciBjPWEubS5hP2EubS5hKGIpOmEubS5jYWxsKG51bGwsYiksZD10aGlzLksoMCxjKTtyKGQpfHxVaChhLm5hbWUsYyk7cmV0dXJuIGQuYT9kLmEoYik6ZC5jYWxsKG51bGwsYil9ZnVuY3Rpb24gbGIoYSl7YT10aGlzO3ZhciBiPWEubS5oP2EubS5oKCk6YS5tLmNhbGwobnVsbCksYz10aGlzLksoMCxiKTtyKGMpfHxVaChhLm5hbWUsYik7cmV0dXJuIGMuaD9jLmgoKTpjLmNhbGwobnVsbCl9dmFyIEc9bnVsbCxHPWZ1bmN0aW9uKEcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYixpYyxIYyxNZCxmZixoaCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gbGIuY2FsbCh0aGlzLEcpO2Nhc2UgMjpyZXR1cm4gdmEuY2FsbCh0aGlzLFxuRyxkYSk7Y2FzZSAzOnJldHVybiBVLmNhbGwodGhpcyxHLGRhLGhhKTtjYXNlIDQ6cmV0dXJuIFIuY2FsbCh0aGlzLEcsZGEsaGEsUCk7Y2FzZSA1OnJldHVybiBLLmNhbGwodGhpcyxHLGRhLGhhLFAsb2EpO2Nhc2UgNjpyZXR1cm4gSC5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhKTtjYXNlIDc6cmV0dXJuIEQuY2FsbCh0aGlzLEcsZGEsaGEsUCxvYSx0YSxaYSk7Y2FzZSA4OnJldHVybiBBLmNhbGwodGhpcyxHLGRhLGhhLFAsb2EsdGEsWmEsemEpO2Nhc2UgOTpyZXR1cm4geS5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhLFphLHphLEVhKTtjYXNlIDEwOnJldHVybiB3LmNhbGwodGhpcyxHLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEpO2Nhc2UgMTE6cmV0dXJuIHYuY2FsbCh0aGlzLEcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSk7Y2FzZSAxMjpyZXR1cm4gdS5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEFiKTtjYXNlIDEzOnJldHVybiBwLmNhbGwodGhpcyxcbkcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxBYixhYik7Y2FzZSAxNDpyZXR1cm4gbC5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEFiLGFiLGZiKTtjYXNlIDE1OnJldHVybiBrLmNhbGwodGhpcyxHLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIpO2Nhc2UgMTY6cmV0dXJuIGcuY2FsbCh0aGlzLEcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYik7Y2FzZSAxNzpyZXR1cm4gZi5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEFiLGFiLGZiLHJiLEJiLE9iKTtjYXNlIDE4OnJldHVybiBlLmNhbGwodGhpcyxHLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIsQmIsT2IsaWMpO2Nhc2UgMTk6cmV0dXJuIGQuY2FsbCh0aGlzLEcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYixpYyxIYyk7Y2FzZSAyMDpyZXR1cm4gYy5jYWxsKHRoaXMsXG5HLGRhLGhhLFAsb2EsdGEsWmEsemEsRWEsSGEsTWEsQWIsYWIsZmIscmIsQmIsT2IsaWMsSGMsTWQpO2Nhc2UgMjE6cmV0dXJuIGIuY2FsbCh0aGlzLEcsZGEsaGEsUCxvYSx0YSxaYSx6YSxFYSxIYSxNYSxBYixhYixmYixyYixCYixPYixpYyxIYyxNZCxmZik7Y2FzZSAyMjpyZXR1cm4gYS5jYWxsKHRoaXMsRyxkYSxoYSxQLG9hLHRhLFphLHphLEVhLEhhLE1hLEFiLGFiLGZiLHJiLEJiLE9iLGljLEhjLE1kLGZmLGhoKX10aHJvdyBFcnJvcihcIkludmFsaWQgYXJpdHk6IFwiK2FyZ3VtZW50cy5sZW5ndGgpO307Ry5hPWxiO0cuYj12YTtHLmM9VTtHLkM9UjtHLkw9SztHLmhhPUg7Ry5qYT1EO0cueGE9QTtHLnlhPXk7Ry5tYT13O0cubmE9djtHLm9hPXU7Ry5wYT1wO0cucWE9bDtHLnJhPWs7Ry5zYT1nO0cudGE9ZjtHLnVhPWU7Ry52YT1kO0cud2E9YztHLlliPWI7Ry5sYj1hO3JldHVybiBHfSgpO1xuaC5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmNhbGwuYXBwbHkodGhpcyxbdGhpc10uY29uY2F0KENiKGIpKSl9O2guaD1mdW5jdGlvbigpe3ZhciBhPXRoaXMubS5oP3RoaXMubS5oKCk6dGhpcy5tLmNhbGwobnVsbCksYj10aGlzLksoMCxhKTtyKGIpfHxVaCh0aGlzLm5hbWUsYSk7cmV0dXJuIGIuaD9iLmgoKTpiLmNhbGwobnVsbCl9O2guYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm0uYT90aGlzLm0uYShhKTp0aGlzLm0uY2FsbChudWxsLGEpLGM9dGhpcy5LKDAsYik7cihjKXx8VWgodGhpcy5uYW1lLGIpO3JldHVybiBjLmE/Yy5hKGEpOmMuY2FsbChudWxsLGEpfTtoLmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLm0uYj90aGlzLm0uYihhLGIpOnRoaXMubS5jYWxsKG51bGwsYSxiKSxkPXRoaXMuSygwLGMpO3IoZCl8fFVoKHRoaXMubmFtZSxjKTtyZXR1cm4gZC5iP2QuYihhLGIpOmQuY2FsbChudWxsLGEsYil9O1xuaC5jPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLm0uYz90aGlzLm0uYyhhLGIsYyk6dGhpcy5tLmNhbGwobnVsbCxhLGIsYyksZT10aGlzLksoMCxkKTtyKGUpfHxVaCh0aGlzLm5hbWUsZCk7cmV0dXJuIGUuYz9lLmMoYSxiLGMpOmUuY2FsbChudWxsLGEsYixjKX07aC5DPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMubS5DP3RoaXMubS5DKGEsYixjLGQpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCksZj10aGlzLksoMCxlKTtyKGYpfHxVaCh0aGlzLm5hbWUsZSk7cmV0dXJuIGYuQz9mLkMoYSxiLGMsZCk6Zi5jYWxsKG51bGwsYSxiLGMsZCl9O2guTD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXRoaXMubS5MP3RoaXMubS5MKGEsYixjLGQsZSk6dGhpcy5tLmNhbGwobnVsbCxhLGIsYyxkLGUpLGc9dGhpcy5LKDAsZik7cihnKXx8VWgodGhpcy5uYW1lLGYpO3JldHVybiBnLkw/Zy5MKGEsYixjLGQsZSk6Zy5jYWxsKG51bGwsYSxiLGMsZCxlKX07XG5oLmhhPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz10aGlzLm0uaGE/dGhpcy5tLmhhKGEsYixjLGQsZSxmKTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmKSxrPXRoaXMuSygwLGcpO3Ioayl8fFVoKHRoaXMubmFtZSxnKTtyZXR1cm4gay5oYT9rLmhhKGEsYixjLGQsZSxmKTprLmNhbGwobnVsbCxhLGIsYyxkLGUsZil9O2guamE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGs9dGhpcy5tLmphP3RoaXMubS5qYShhLGIsYyxkLGUsZixnKTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmLGcpLGw9dGhpcy5LKDAsayk7cihsKXx8VWgodGhpcy5uYW1lLGspO3JldHVybiBsLmphP2wuamEoYSxiLGMsZCxlLGYsZyk6bC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyl9O1xuaC54YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGspe3ZhciBsPXRoaXMubS54YT90aGlzLm0ueGEoYSxiLGMsZCxlLGYsZyxrKTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmLGcsaykscD10aGlzLksoMCxsKTtyKHApfHxVaCh0aGlzLm5hbWUsbCk7cmV0dXJuIHAueGE/cC54YShhLGIsYyxkLGUsZixnLGspOnAuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayl9O2gueWE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwpe3ZhciBwPXRoaXMubS55YT90aGlzLm0ueWEoYSxiLGMsZCxlLGYsZyxrLGwpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwpLHU9dGhpcy5LKDAscCk7cih1KXx8VWgodGhpcy5uYW1lLHApO3JldHVybiB1LnlhP3UueWEoYSxiLGMsZCxlLGYsZyxrLGwpOnUuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsKX07XG5oLm1hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHApe3ZhciB1PXRoaXMubS5tYT90aGlzLm0ubWEoYSxiLGMsZCxlLGYsZyxrLGwscCk6dGhpcy5tLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwKSx2PXRoaXMuSygwLHUpO3Iodil8fFVoKHRoaXMubmFtZSx1KTtyZXR1cm4gdi5tYT92Lm1hKGEsYixjLGQsZSxmLGcsayxsLHApOnYuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHApfTtoLm5hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSl7dmFyIHY9dGhpcy5tLm5hP3RoaXMubS5uYShhLGIsYyxkLGUsZixnLGssbCxwLHUpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1KSx3PXRoaXMuSygwLHYpO3Iodyl8fFVoKHRoaXMubmFtZSx2KTtyZXR1cm4gdy5uYT93Lm5hKGEsYixjLGQsZSxmLGcsayxsLHAsdSk6dy5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1KX07XG5oLm9hPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KXt2YXIgdz10aGlzLm0ub2E/dGhpcy5tLm9hKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KSx5PXRoaXMuSygwLHcpO3IoeSl8fFVoKHRoaXMubmFtZSx3KTtyZXR1cm4geS5vYT95Lm9hKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2KTp5LmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdil9O1xuaC5wYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KXt2YXIgeT10aGlzLm0ucGE/dGhpcy5tLnBhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyksQT10aGlzLksoMCx5KTtyKEEpfHxVaCh0aGlzLm5hbWUseSk7cmV0dXJuIEEucGE/QS5wYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KTpBLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3KX07XG5oLnFhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSl7dmFyIEE9dGhpcy5tLnFhP3RoaXMubS5xYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHkpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KSxEPXRoaXMuSygwLEEpO3IoRCl8fFVoKHRoaXMubmFtZSxBKTtyZXR1cm4gRC5xYT9ELnFhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSk6RC5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5KX07XG5oLnJhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKXt2YXIgRD10aGlzLm0ucmE/dGhpcy5tLnJhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKSxIPXRoaXMuSygwLEQpO3IoSCl8fFVoKHRoaXMubmFtZSxEKTtyZXR1cm4gSC5yYT9ILnJhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBKTpILmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSl9O1xuaC5zYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKXt2YXIgSD10aGlzLm0uc2E/dGhpcy5tLnNhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCksSz10aGlzLksoMCxIKTtyKEspfHxVaCh0aGlzLm5hbWUsSCk7cmV0dXJuIEsuc2E/Sy5zYShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKTpLLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxEKX07XG5oLnRhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCl7dmFyIEs9dGhpcy5tLnRhP3RoaXMubS50YShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKSxSPXRoaXMuSygwLEspO3IoUil8fFVoKHRoaXMubmFtZSxLKTtyZXR1cm4gUi50YT9SLnRhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCk6Ui5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxIKX07XG5oLnVhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKXt2YXIgUj10aGlzLm0udWE/dGhpcy5tLnVhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKTp0aGlzLm0uY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKSxVPXRoaXMuSygwLFIpO3IoVSl8fFVoKHRoaXMubmFtZSxSKTtyZXR1cm4gVS51YT9VLnVhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLKTpVLmNhbGwobnVsbCxhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyl9O1xuaC52YT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSKXt2YXIgVT10aGlzLm0udmE/dGhpcy5tLnZhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUiksdmE9dGhpcy5LKDAsVSk7cih2YSl8fFVoKHRoaXMubmFtZSxVKTtyZXR1cm4gdmEudmE/dmEudmEoYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUik6dmEuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIpfTtcbmgud2E9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVKXt2YXIgdmE9dGhpcy5tLndhP3RoaXMubS53YShhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUpOnRoaXMubS5jYWxsKG51bGwsYSxiLGMsZCxlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVKSxsYj10aGlzLksoMCx2YSk7cihsYil8fFVoKHRoaXMubmFtZSx2YSk7cmV0dXJuIGxiLndhP2xiLndhKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSk6bGIuY2FsbChudWxsLGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcseSxBLEQsSCxLLFIsVSl9O1xuaC5ZYj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmEpe3ZhciBsYj1UZSh0aGlzLm0sYSxiLGMsZCxOKFtlLGYsZyxrLGwscCx1LHYsdyx5LEEsRCxILEssUixVLHZhXSwwKSksRz10aGlzLksoMCxsYik7cihHKXx8VWgodGhpcy5uYW1lLGxiKTtyZXR1cm4gVGUoRyxhLGIsYyxkLE4oW2UsZixnLGssbCxwLHUsdix3LHksQSxELEgsSyxSLFUsdmFdLDApKX07aC5mYT1mdW5jdGlvbihhLGIsYyl7a2YuQyh0aGlzLlViLFEsYixjKTtQaCh0aGlzLmhjLHRoaXMuVWIsdGhpcy5XYix0aGlzLmRjKTtyZXR1cm4gdGhpc307XG5oLks9ZnVuY3Rpb24oYSxiKXtDLmIoTC5hP0wuYSh0aGlzLldiKTpMLmNhbGwobnVsbCx0aGlzLldiKSxMLmE/TC5hKHRoaXMuZGMpOkwuY2FsbChudWxsLHRoaXMuZGMpKXx8UGgodGhpcy5oYyx0aGlzLlViLHRoaXMuV2IsdGhpcy5kYyk7dmFyIGM9KEwuYT9MLmEodGhpcy5oYyk6TC5jYWxsKG51bGwsdGhpcy5oYykpLmNhbGwobnVsbCxiKTtpZihyKGMpKXJldHVybiBjO2M9U2godGhpcy5uYW1lLGIsdGhpcy5kYyx0aGlzLlViLHRoaXMuQWQsdGhpcy5oYyx0aGlzLldiKTtyZXR1cm4gcihjKT9jOihMLmE/TC5hKHRoaXMuVWIpOkwuY2FsbChudWxsLHRoaXMuVWIpKS5jYWxsKG51bGwsdGhpcy5wZCl9O2guWmI9ZnVuY3Rpb24oKXtyZXR1cm4gRmModGhpcy5uYW1lKX07aC4kYj1mdW5jdGlvbigpe3JldHVybiBHYyh0aGlzLm5hbWUpfTtoLlM9ZnVuY3Rpb24oKXtyZXR1cm4gY2EodGhpcyl9O1xuZnVuY3Rpb24gV2goYSxiKXt0aGlzLmtjPWE7dGhpcy52PWI7dGhpcy5vPTIxNTM3NzUxMDQ7dGhpcy5HPTIwNDh9aD1XaC5wcm90b3R5cGU7aC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtjfTtoLmVxdWl2PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkYobnVsbCxhKX07aC5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIgaW5zdGFuY2VvZiBXaCYmdGhpcy5rYz09PWIua2N9O2guVT1mdW5jdGlvbihhLGIpe3JldHVybiB4KGIsW3QoJyN1dWlkIFwiJyksdCh0aGlzLmtjKSx0KCdcIicpXS5qb2luKFwiXCIpKX07aC5TPWZ1bmN0aW9uKCl7bnVsbD09dGhpcy52JiYodGhpcy52PVVjKHRoaXMua2MpKTtyZXR1cm4gdGhpcy52fTtcbmZ1bmN0aW9uIFhoKGEsYixjKXt2YXIgZD1FcnJvcihhKTt0aGlzLm1lc3NhZ2U9YTt0aGlzLmRhdGE9Yjt0aGlzLkljPWM7dGhpcy5uYW1lPWQubmFtZTt0aGlzLmRlc2NyaXB0aW9uPWQuZGVzY3JpcHRpb247dGhpcy56ZD1kLnpkO3RoaXMuZmlsZU5hbWU9ZC5maWxlTmFtZTt0aGlzLmxpbmVOdW1iZXI9ZC5saW5lTnVtYmVyO3RoaXMuY29sdW1uTnVtYmVyPWQuY29sdW1uTnVtYmVyO3RoaXMuc3RhY2s9ZC5zdGFjaztyZXR1cm4gdGhpc31YaC5wcm90b3R5cGUuX19wcm90b19fPUVycm9yLnByb3RvdHlwZTtYaC5wcm90b3R5cGUubGE9bTtYaC5wcm90b3R5cGUuVT1mdW5jdGlvbihhLGIsYyl7eChiLFwiI2Vycm9yIHs6bWVzc2FnZSBcIik7dmgodGhpcy5tZXNzYWdlLGIsYyk7cih0aGlzLmRhdGEpJiYoeChiLFwiLCA6ZGF0YSBcIiksdmgodGhpcy5kYXRhLGIsYykpO3IodGhpcy5JYykmJih4KGIsXCIsIDpjYXVzZSBcIiksdmgodGhpcy5JYyxiLGMpKTtyZXR1cm4geChiLFwifVwiKX07XG5YaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWModGhpcyl9O2Z1bmN0aW9uIFloKGEsYil7cmV0dXJuIG5ldyBYaChhLGIsbnVsbCl9O3ZhciBaaD1uZXcgUyhudWxsLFwiYXJnc1wiLFwiYXJnc1wiLDEzMTU1NTY1NzYpLCRoPW5ldyBTKFwiY2xvanVyZS50ZXN0LmNoZWNrLmNsb2p1cmUtdGVzdFwiLFwicGFyYW1zXCIsXCJjbG9qdXJlLnRlc3QuY2hlY2suY2xvanVyZS10ZXN0L3BhcmFtc1wiLDE4NTE3MjA5OTIpLGFpPW5ldyBTKG51bGwsXCJtYW5kYXRvcnlcIixcIm1hbmRhdG9yeVwiLDU0MjgwMjMzNiksYmk9bmV3IHoobnVsbCxcIlxceDI2XCIsXCJcXHgyNlwiLC0yMTQ0ODU1NjQ4LG51bGwpLGNpPW5ldyBTKG51bGwsXCJtYXgtdHJpZXNcIixcIm1heC10cmllc1wiLC0xODI0NDQxNzkyKSxkaT1uZXcgUyhudWxsLFwibG9naWNhbC1ibG9ja3NcIixcImxvZ2ljYWwtYmxvY2tzXCIsLTE0NjYzMzk3NzYpLGVpPW5ldyB6KFwiY2xqcy5jb3JlXCIsXCJ1bnF1b3RlXCIsXCJjbGpzLmNvcmUvdW5xdW90ZVwiLDEwMTMwODU3NjAsbnVsbCksZmk9bmV3IHoobnVsbCxcIndoZW4tZmlyc3RcIixcIndoZW4tZmlyc3RcIiw4MjE2OTkxNjgsbnVsbCksZ2k9bmV3IFMobnVsbCxcImFyZzNcIixcblwiYXJnM1wiLC0xNDg2ODIyNDk2KSxoaT1uZXcgUyhudWxsLFwiZmFpbGluZ1NpemVcIixcImZhaWxpbmdTaXplXCIsLTI2OTE0OTA1NSksaWk9bmV3IHoobnVsbCxcImRlZnJlY29yZCpcIixcImRlZnJlY29yZCpcIiwtMTkzNjM2NjIwNyxudWxsKSxqaT1uZXcgUyhudWxsLFwic3VmZml4XCIsXCJzdWZmaXhcIiwzNjczNzMwNTcpLGtpPW5ldyB6KG51bGwsXCJ0cnlcIixcInRyeVwiLC0xMjczNjkzMjQ3LG51bGwpLGxpPW5ldyBTKG51bGwsXCJtaW5cIixcIm1pblwiLDQ0NDk5MTUyMiksbWk9bmV3IFMobnVsbCxcInNlbGVjdG9yXCIsXCJzZWxlY3RvclwiLDc2MjUyODg2Niksbmk9bmV3IHooXCJjbGpzLmNvcmVcIixcIipwcmludC1sZXZlbCpcIixcImNsanMuY29yZS8qcHJpbnQtbGV2ZWwqXCIsNjU4NDg0ODIsbnVsbCksb2k9bmV3IHoobnVsbCxcIipwcmludC1jaXJjbGUqXCIsXCIqcHJpbnQtY2lyY2xlKlwiLDExNDg0MDQ5OTQsbnVsbCkscGk9bmV3IFMobnVsbCxcImVsc2UtcGFyYW1zXCIsXCJlbHNlLXBhcmFtc1wiLC04MzIxNzE2NDYpLHFpPVxubmV3IFMobnVsbCxcImJsb2NrXCIsXCJibG9ja1wiLDY2NDY4NjIxMCkscmk9bmV3IFMobnVsbCxcInRlc3RpbmctdmFyc1wiLFwidGVzdGluZy12YXJzXCIsLTIxMTQ3NjkxNTApLHNpPW5ldyBTKG51bGwsXCJhbGxvd3Mtc2VwYXJhdG9yXCIsXCJhbGxvd3Mtc2VwYXJhdG9yXCIsLTgxODk2Nzc0MiksRmY9bmV3IFMobnVsbCxcInRvdGFsTm9kZXNWaXNpdGVkXCIsXCJ0b3RhbE5vZGVzVmlzaXRlZFwiLC01NzU4MjQ4MjkpLHRpPW5ldyB6KG51bGwsXCJsYXN0LXdhcy13aGl0ZXNwYWNlP1wiLFwibGFzdC13YXMtd2hpdGVzcGFjZT9cIiwtMTA3MzkyODA5MyxudWxsKSx1aT1uZXcgUyhudWxsLFwiaW5kZW50XCIsXCJpbmRlbnRcIiwtMTQ4MjAwMTI1KSx2aT1uZXcgeihudWxsLFwibWV0YTEzMzkzXCIsXCJtZXRhMTMzOTNcIiwzNzQ4ODk4OTEsbnVsbCksd2k9bmV3IHooXCJjbGpzLnBwcmludFwiLFwiKnByaW50LXByZXR0eSpcIixcImNsanMucHByaW50LypwcmludC1wcmV0dHkqXCIsLTc2MjYzNjg2MSxudWxsKSx4aT1uZXcgeihcImNsanMucHByaW50XCIsXG5cIipwcmludC1wcHJpbnQtZGlzcGF0Y2gqXCIsXCJjbGpzLnBwcmludC8qcHJpbnQtcHByaW50LWRpc3BhdGNoKlwiLC0xODIwNzM0MDEzLG51bGwpLHlpPW5ldyB6KG51bGwsXCIqcHJpbnQtc3VwcHJlc3MtbmFtZXNwYWNlcypcIixcIipwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlwiLDE3OTU4MjgzNTUsbnVsbCksemk9bmV3IFMobnVsbCxcIm1pc2VyLXdpZHRoXCIsXCJtaXNlci13aWR0aFwiLC0xMzEwMDQ5NDM3KSxBaT1uZXcgeihudWxsLFwic3RydWN0XCIsXCJzdHJ1Y3RcIiwzMjU5NzI5MzEsbnVsbCksQmk9bmV3IFMoXCJjbG9qdXJlLnRlc3QuY2hlY2suY2xvanVyZS10ZXN0XCIsXCJ0cmlhbFwiLFwiY2xvanVyZS50ZXN0LmNoZWNrLmNsb2p1cmUtdGVzdC90cmlhbFwiLDg2NjQzMzA2MCksQ2Y9bmV3IFMobnVsbCxcInNocnVua1wiLFwic2hydW5rXCIsLTIwNDE2NjQ0MTIpLENpPW5ldyB6KG51bGwsXCJtZXRhMTM5ODFcIixcIm1ldGExMzk4MVwiLC0xNzEyMDgwMzQ4LG51bGwpLERpPW5ldyBTKG51bGwsXCJiZWdpbi10ZXN0LXZhclwiLFxuXCJiZWdpbi10ZXN0LXZhclwiLC05MDg1NzExMDApLG9iPW5ldyBTKG51bGwsXCJtZXRhXCIsXCJtZXRhXCIsMTQ5OTUzNjk2NCksRWk9bmV3IHoobnVsbCxcIi4uXCIsXCIuLlwiLC0zMDA1MDc0MjAsbnVsbCksRmk9bmV3IHoobnVsbCxcIipwcmludC1wcmV0dHkqXCIsXCIqcHJpbnQtcHJldHR5KlwiLDcyNjc5NTE0MCxudWxsKSxHaT1uZXcgeihudWxsLFwiKnByaW50LXBwcmludC1kaXNwYXRjaCpcIixcIipwcmludC1wcHJpbnQtZGlzcGF0Y2gqXCIsLTE3MDkxMTQ0OTIsbnVsbCksSGk9bmV3IFMobnVsbCxcImJ1ZmZlci1ibG9ja1wiLFwiYnVmZmVyLWJsb2NrXCIsLTEwOTM3MzA3KSxJaT1uZXcgeihudWxsLFwibWF4LWNvbHVtbnNcIixcIm1heC1jb2x1bW5zXCIsLTkxMjExMjUwNyxudWxsKSxwYj1uZXcgUyhudWxsLFwiZHVwXCIsXCJkdXBcIiw1NTYyOTg1MzMpLEppPW5ldyBTKG51bGwsXCJ0ZXN0aW5nLWNvbnRleHRzXCIsXCJ0ZXN0aW5nLWNvbnRleHRzXCIsLTE0ODU2NDY1MjMpLEtpPW5ldyBTKG51bGwsXCJhcmcyXCIsXCJhcmcyXCIsXG4xNzI5NTUwOTE3KSxMaT1uZXcgUyhudWxsLFwiY29tbWFpbnRlcnZhbFwiLFwiY29tbWFpbnRlcnZhbFwiLC0xOTgwMDYxMDgzKSxNaT1uZXcgUyhudWxsLFwicmV0dXJuZWRcIixcInJldHVybmVkXCIsLTIwMjA0MzkxNjMpLEVmPW5ldyBTKG51bGwsXCJ0b3RhbC1ub2Rlcy12aXNpdGVkXCIsXCJ0b3RhbC1ub2Rlcy12aXNpdGVkXCIsLTYyMDEzMjQ0MyksTmk9bmV3IFMobnVsbCxcInByZXR0eS13cml0ZXJcIixcInByZXR0eS13cml0ZXJcIiwtMTIyMjgzNDI2NyksT2k9bmV3IFMobnVsbCxcInBhcmVudFwiLFwicGFyZW50XCIsLTg3ODg3ODc3OSksUGk9bmV3IFMobnVsbCxcInNlY3Rpb25zXCIsXCJzZWN0aW9uc1wiLC04ODY3MTAxMDYpLFFpPW5ldyBTKG51bGwsXCJiZWdpbi10ZXN0XCIsXCJiZWdpbi10ZXN0XCIsMTgzMTI3Mjc3NCksUmk9bmV3IFMobnVsbCxcInByaXZhdGVcIixcInByaXZhdGVcIiwtNTU4OTQ3OTk0KSxTaT1uZXcgUyhudWxsLFwiZWxzZVwiLFwiZWxzZVwiLC0xNTA4Mzc3MTQ2KSxUaT1uZXcgUyhudWxsLFwibWlzZXJcIixcblwibWlzZXJcIiwtNTU2MDYwMTg2KSxVaT1uZXcgUyhudWxsLFwicmVwb3J0LWNvdW50ZXJzXCIsXCJyZXBvcnQtY291bnRlcnNcIiwtMTcwMjYwOTI0MiksVmk9bmV3IFMobnVsbCxcImdlblwiLFwiZ2VuXCIsMTQyNTc1MzAyKSxXaT1uZXcgUyhudWxsLFwicmlnaHQtbWFyZ2luXCIsXCJyaWdodC1tYXJnaW5cIiwtODEwNDEzMzA2KSxYaT1uZXcgeihcImNsanMucHByaW50XCIsXCIqcHJpbnQtYmFzZSpcIixcImNsanMucHByaW50LypwcmludC1iYXNlKlwiLDE4ODc1MjY3OTAsbnVsbCksWWk9bmV3IHoobnVsbCxcImlmLW5vdFwiLFwiaWYtbm90XCIsLTI2NTQxNTYwOSxudWxsKSxaaT1uZXcgeihcImNsanMuY29yZVwiLFwiZGVyZWZcIixcImNsanMuY29yZS9kZXJlZlwiLDE5MDE5NjMzMzUsbnVsbCksJGk9bmV3IHoobnVsbCxcIm5zKlwiLFwibnMqXCIsMTg0MDk0OTM4MyxudWxsKSxhaj1uZXcgUyhudWxsLFwib2Zmc2V0XCIsXCJvZmZzZXRcIiwyOTY0OTgzMTEpLGJqPW5ldyB6KG51bGwsXCIqcHJpbnQtbGV2ZWwqXCIsXCIqcHJpbnQtbGV2ZWwqXCIsXG4tNjM0NDg4NTA1LG51bGwpLGNqPW5ldyB6KG51bGwsXCJkb3NlcVwiLFwiZG9zZXFcIiwyMjExNjQxMzUsbnVsbCksZGo9bmV3IFMobnVsbCxcImN1clwiLFwiY3VyXCIsMTE1MzE5MDU5OSksZWo9bmV3IFMobnVsbCxcInF1ZXVlXCIsXCJxdWV1ZVwiLDE0NTU4MzU4NzkpLGhmPW5ldyBTKG51bGwsXCJ2YWxpZGF0b3JcIixcInZhbGlkYXRvclwiLC0xOTY2MTkwNjgxKSxmaj1uZXcgeihudWxsLFwiZmluYWxseVwiLFwiZmluYWxseVwiLC0xMDY1MzQ3MDY0LG51bGwpLGdqPW5ldyBTKG51bGwsXCJkZWZhdWx0XCIsXCJkZWZhdWx0XCIsLTE5ODc4MjIzMjgpLGhqPW5ldyBTKG51bGwsXCJhZGRlZFwiLFwiYWRkZWRcIiwyMDU3NjUxNjg4KSxpaj1uZXcgeihudWxsLFwid2hlbi1sZXRcIixcIndoZW4tbGV0XCIsLTEzODMwNDM0ODAsbnVsbCksamo9bmV3IFMobnVsbCxcImZ1bmNcIixcImZ1bmNcIiwtMjM4NzA2MDQwKSxraj1uZXcgeihudWxsLFwibG9vcCpcIixcImxvb3AqXCIsNjE1MDI5NDE2LG51bGwpLGxqPW5ldyBTKG51bGwsXCJuc1wiLFwibnNcIiw0NDE1OTg3NjApLFxubWo9bmV3IFMobnVsbCxcInN5bWJvbFwiLFwic3ltYm9sXCIsLTEwMzg1NzI2OTYpLG5qPW5ldyBTKG51bGwsXCJnZW5lcmF0b3ItZm5cIixcImdlbmVyYXRvci1mblwiLDgxMTg1MTY1Niksb2o9bmV3IFMobnVsbCxcIm5hbWVcIixcIm5hbWVcIiwxODQzNjc1MTc3KSxwaj1uZXcgeihcImNsanMucHByaW50XCIsXCIqcHJpbnQtcmFkaXgqXCIsXCJjbGpzLnBwcmludC8qcHJpbnQtcmFkaXgqXCIsMTU1ODI1MzY0MSxudWxsKSxxaj1uZXcgUyhudWxsLFwiblwiLFwiblwiLDU2MjEzMDAyNSkscmo9bmV3IFMobnVsbCxcIndcIixcIndcIiwzNTQxNjkwMDEpLHNqPW5ldyBTKG51bGwsXCJub3QtZGVsaXZlcmVkXCIsXCJub3QtZGVsaXZlcmVkXCIsMTU5OTE1ODY5NyksdGo9bmV3IFMobnVsbCxcInJlbWFpbmluZy1hcmctY291bnRcIixcInJlbWFpbmluZy1hcmctY291bnRcIiwtMTIxNjU4OTMzNSksdWo9bmV3IFMoXCJjbGpzLnRlc3RcIixcInBwcmludFwiLFwiY2xqcy50ZXN0L3BwcmludFwiLDE2MjczOTM2NDEpLHZqPW5ldyBTKG51bGwsXCJmb3JtYXR0ZXJcIixcblwiZm9ybWF0dGVyXCIsLTQ4MzAwODgyMyksd2o9bmV3IHoobnVsbCxcIm1ldGExMzAxMlwiLFwibWV0YTEzMDEyXCIsMjczMDE1NDk3LG51bGwpLHhqPW5ldyBTKG51bGwsXCJmaWxsXCIsXCJmaWxsXCIsODgzNDYyODg5KSx5aj1uZXcgUyhudWxsLFwic2VjdGlvblwiLFwic2VjdGlvblwiLC0zMDAxNDE1MjYpLHpqPW5ldyB6KG51bGwsXCIqcHJpbnQtbGVuZ3RoKlwiLFwiKnByaW50LWxlbmd0aCpcIiwtNjg3NjkzNjU0LG51bGwpLEFqPW5ldyB6KFwiY2xqcy5wcHJpbnRcIixcIipwcmludC1taXNlci13aWR0aCpcIixcImNsanMucHByaW50LypwcmludC1taXNlci13aWR0aCpcIiwxNTg4OTEzNDUwLG51bGwpLEJqPW5ldyB6KG51bGwsXCJjbGpzLmNvcmVcIixcImNsanMuY29yZVwiLDc3MDU0NjA1OCxudWxsKSxDaj1uZXcgeihudWxsLFwibWlzZXItd2lkdGhcIixcIm1pc2VyLXdpZHRoXCIsMzMwNDgyMDkwLG51bGwpLERqPW5ldyB6KG51bGwsXCJsZXRcIixcImxldFwiLDM1ODExODgyNixudWxsKSxFaj1uZXcgUyhudWxsLFwiZmlsZVwiLFwiZmlsZVwiLFxuLTEyNjk2NDU4NzgpLEZqPW5ldyBTKG51bGwsXCJudW0tdGVzdHNcIixcIm51bS10ZXN0c1wiLDIwNTAwNDEzNTQpLEdqPW5ldyB6KG51bGwsXCItXFx4M2VcIixcIi1cXHgzZVwiLC0yMTM5NjA1NDMwLG51bGwpLEhqPW5ldyBTKG51bGwsXCJlbmQtcG9zXCIsXCJlbmQtcG9zXCIsLTE2NDM4ODM5MjYpLElqPW5ldyBTKG51bGwsXCJjaXJjbGVcIixcImNpcmNsZVwiLDE5MDMyMTIzNjIpLEpqPW5ldyBTKG51bGwsXCJlbmQtY29sdW1uXCIsXCJlbmQtY29sdW1uXCIsMTQyNTM4OTUxNCksS2o9bmV3IFMobnVsbCxcIm1vZGVcIixcIm1vZGVcIiw2NTQ0MDM2OTEpLExqPW5ldyBTKG51bGwsXCJzdGFydFwiLFwic3RhcnRcIiwtMzU1MjA4OTgxKSxNaj1uZXcgUyhudWxsLFwibGluZXNcIixcImxpbmVzXCIsLTcwMDE2NTc4MSksTmo9bmV3IFMobnVsbCxcInBhcmFtc1wiLFwicGFyYW1zXCIsNzEwNTE2MjM1KSxPaj1uZXcgeihudWxsLFwiZm5cIixcImZuXCIsNDY1MjY1MzIzLG51bGwpLFdlPW5ldyB6KG51bGwsXCJtZXRhMTA1OTlcIixcIm1ldGExMDU5OVwiLDk2NTgzMzUxNSxcbm51bGwpLFBqPW5ldyBTKG51bGwsXCJudW1UZXN0c1wiLFwibnVtVGVzdHNcIiw0MzE4MzA4OTEpLFFqPW5ldyBTKG51bGwsXCJtYXgtaXRlcmF0aW9uc1wiLFwibWF4LWl0ZXJhdGlvbnNcIiwyMDIxMjc1NTYzKSxSaj1uZXcgUyhudWxsLFwicG9zXCIsXCJwb3NcIiwtODY0NjA3MjIwKSxEaD1uZXcgUyhudWxsLFwidmFsXCIsXCJ2YWxcIiwxMjg3MDE2MTIpLFNqPW5ldyBTKG51bGwsXCJ3cml0aW5nXCIsXCJ3cml0aW5nXCIsLTE0ODY4NjUxMDgpLFRqPW5ldyB6KFwiY2xqcy5wcHJpbnRcIixcIipwcmludC1zdXBwcmVzcy1uYW1lc3BhY2VzKlwiLFwiY2xqcy5wcHJpbnQvKnByaW50LXN1cHByZXNzLW5hbWVzcGFjZXMqXCIsMTY0OTQ4ODIwNCxudWxsKSxVaj1uZXcgUyhudWxsLFwidHlwZVwiLFwidHlwZVwiLDExNzQyNzAzNDgpLFZqPW5ldyBTKG51bGwsXCJwYXJhbWV0ZXItZnJvbS1hcmdzXCIsXCJwYXJhbWV0ZXItZnJvbS1hcmdzXCIsLTc1ODQ0NjE5NiksV2o9bmV3IFMobnVsbCxcIm1heC1zaXplXCIsXCJtYXgtc2l6ZVwiLC04NzQ5NjYxMzIpLFxuWGo9bmV3IHoobnVsbCxcImRvXCIsXCJkb1wiLDE2ODY4NDIyNTIsbnVsbCksWWo9bmV3IFMobnVsbCxcImRvbmUtbmxcIixcImRvbmUtbmxcIiwtMzgxMDI0MzQwKSxaaj1uZXcgeihudWxsLFwid2hlbi1ub3RcIixcIndoZW4tbm90XCIsLTEyMjMxMzYzNDAsbnVsbCksYWs9bmV3IFMobnVsbCxcInN1cHByZXNzLW5hbWVzcGFjZXNcIixcInN1cHByZXNzLW5hbWVzcGFjZXNcIiwyMTMwNjg2OTU2KSxiaz1uZXcgeihudWxsLFwid2hlblwiLFwid2hlblwiLDEwNjQxMTQyMjEsbnVsbCksY2s9bmV3IFMobnVsbCxcInN0YXRlXCIsXCJzdGF0ZVwiLC0xOTg4NjE4MDk5KSx5aD1uZXcgUyhudWxsLFwiZmFsbGJhY2staW1wbFwiLFwiZmFsbGJhY2staW1wbFwiLC0xNTAxMjg2OTk1KSxtYj1uZXcgUyhudWxsLFwiZmx1c2gtb24tbmV3bGluZVwiLFwiZmx1c2gtb24tbmV3bGluZVwiLC0xNTE0NTc5MzkpLGRrPW5ldyBTKG51bGwsXCJyZWxhdGl2ZS10b1wiLFwicmVsYXRpdmUtdG9cIiwtNDcwMTAwMDUxKSxlaz1uZXcgUyhudWxsLFwic3RyaW5nXCIsXCJzdHJpbmdcIixcbi0xOTg5NTQxNTg2KSxmaz1uZXcgUyhudWxsLFwidmVjdG9yXCIsXCJ2ZWN0b3JcIiwxOTAyOTY2MTU4KSxnaz1uZXcgeihudWxsLFwiZGVmblwiLFwiZGVmblwiLC0xMjYwMTA4MDIsbnVsbCksaGs9bmV3IHoobnVsbCxcImxldGZuKlwiLFwibGV0Zm4qXCIsLTExMDA5NzgxMCxudWxsKSxpaz1uZXcgeihudWxsLFwiY2FwcGVkXCIsXCJjYXBwZWRcIiwtMTY1MDk4ODQwMixudWxsKSxqaz1uZXcgUyhudWxsLFwiZVwiLFwiZVwiLDEzODEyNjkxOTgpLGtrPW5ldyB6KG51bGwsXCJpZlwiLFwiaWZcIiwxMTgxNzE3MjYyLG51bGwpLGxrPW5ldyBTKG51bGwsXCJjaGFyLWZvcm1hdFwiLFwiY2hhci1mb3JtYXRcIiwtMTAxNjQ5OTIxOCksbWs9bmV3IFMobnVsbCxcInN0YXJ0LWNvbFwiLFwic3RhcnQtY29sXCIsNjY4MDgwMTQzKSxuaz1uZXcgUyhudWxsLFwiZnVuY3Rpb25cIixcImZ1bmN0aW9uXCIsLTIxMjcyNTU0NzMpLG9rPW5ldyBTKG51bGwsXCJyYWRpeFwiLFwicmFkaXhcIiw4NTcwMTY0NjMpLHBrPW5ldyB6KG51bGwsXCJuZXdcIixcIm5ld1wiLC00NDQ5MDYzMjEsXG5udWxsKSxxaz1uZXcgUyhudWxsLFwic2VlZFwiLFwic2VlZFwiLDY4NjEzMzI3KSxMaD1uZXcgUyhudWxsLFwiZGVzY2VuZGFudHNcIixcImRlc2NlbmRhbnRzXCIsMTgyNDg4NjAzMSkscms9bmV3IFMobnVsbCxcImNvbG9uLXVwLWFycm93XCIsXCJjb2xvbi11cC1hcnJvd1wiLDI0NDg1MzAwNyksc2s9bmV3IHoobnVsbCxcIm5zXCIsXCJuc1wiLDIwODIxMzAyODcsbnVsbCksdGs9bmV3IFMobnVsbCxcImtcIixcImtcIiwtMjE0NjI5NzM5MyksdWs9bmV3IFMobnVsbCxcInByZWZpeFwiLFwicHJlZml4XCIsLTI2NTkwODQ2NSksdms9bmV3IFMobnVsbCxcImNvbHVtblwiLFwiY29sdW1uXCIsMjA3ODIyMjA5NSksd2s9bmV3IFMobnVsbCxcImNvbG9uXCIsXCJjb2xvblwiLC05NjUyMDA5NDUpLE1oPW5ldyBTKG51bGwsXCJhbmNlc3RvcnNcIixcImFuY2VzdG9yc1wiLC03NzYwNDU0MjQpLHhrPW5ldyBTKG51bGwsXCJzdHJlYW1cIixcInN0cmVhbVwiLDE1MzQ5NDE2NDgpLHlrPW5ldyBTKG51bGwsXCJsZXZlbFwiLFwibGV2ZWxcIiwxMjkwNDk3NTUyKSx6az1cbm5ldyB6KG51bGwsXCIqcHJpbnQtcmFkaXgqXCIsXCIqcHJpbnQtcmFkaXgqXCIsMTE2ODUxNzc0NCxudWxsKSxBaz1uZXcgUyhudWxsLFwiaW5maW5pdGU/XCIsXCJpbmZpbml0ZT9cIiwtMjAxNzg4NjYwOCksbmI9bmV3IFMobnVsbCxcInJlYWRhYmx5XCIsXCJyZWFkYWJseVwiLDExMjk1OTk3NjApLEJrPW5ldyBTKG51bGwsXCJzdW1tYXJ5XCIsXCJzdW1tYXJ5XCIsMzgwODQ3OTUyKSxDaz1uZXcgeihudWxsLFwibWV0YTE0MDE1XCIsXCJtZXRhMTQwMTVcIiw0OTM1MTM1NTIsbnVsbCksRGs9bmV3IFMobnVsbCxcInJpZ2h0LWJyYWNrZXRcIixcInJpZ2h0LWJyYWNrZXRcIiw5NTE4NTYwODApLHBoPW5ldyBTKG51bGwsXCJtb3JlLW1hcmtlclwiLFwibW9yZS1tYXJrZXJcIiwtMTQ3MTc5MzUpLEVrPW5ldyBTKG51bGwsXCJkaXNwYXRjaFwiLFwiZGlzcGF0Y2hcIiwxMzE5MzM3MDA5KSxGaz1uZXcgeihudWxsLFwiZmllbGRzXCIsXCJmaWVsZHNcIiwtMjkxNTM0NzAzLG51bGwpLEdrPW5ldyBTKG51bGwsXCJlbmQtdGVzdC12YXJcIixcImVuZC10ZXN0LXZhclwiLFxuOTg0MTk4NTQ1KSxIaz1uZXcgeihcImNsanMucHByaW50XCIsXCIqcHJpbnQtcmlnaHQtbWFyZ2luKlwiLFwiY2xqcy5wcHJpbnQvKnByaW50LXJpZ2h0LW1hcmdpbipcIiwtNTYxODMxMTksbnVsbCksSWs9bmV3IHooXCJjbGpzLmNvcmVcIixcIipwcmludC1sZW5ndGgqXCIsXCJjbGpzLmNvcmUvKnByaW50LWxlbmd0aCpcIiwtMjA3NjY5MjcsbnVsbCksSms9bmV3IHoobnVsbCxcImNsanMucHByaW50XCIsXCJjbGpzLnBwcmludFwiLC05NjY5MDA5MTEsbnVsbCksS2s9bmV3IHoobnVsbCxcIm1ldGExMzk5OFwiLFwibWV0YTEzOTk4XCIsLTQ0ODg5MjQ2MixudWxsKSxMaz1uZXcgUyhudWxsLFwiZmFpbFwiLFwiZmFpbFwiLDE3MDYyMTQ5MzApLE1rPW5ldyB6KG51bGwsXCJkZWZ0eXBlKlwiLFwiZGVmdHlwZSpcIiw5NjI2NTk4OTAsbnVsbCksTms9bmV3IHoobnVsbCxcImxldCpcIixcImxldCpcIiwxOTIwNzIxNDU4LG51bGwpLE9rPW5ldyB6KG51bGwsXCJzdHJ1Y3QtbWFwXCIsXCJzdHJ1Y3QtbWFwXCIsLTEzODc1NDA4NzgsbnVsbCksUGs9XG5uZXcgUyhudWxsLFwicGFkY2hhclwiLFwicGFkY2hhclwiLDIwMTg1ODQ1MzApLFFrPW5ldyB6KG51bGwsXCJqcypcIixcImpzKlwiLC0xMTM0MjMzNjQ2LG51bGwpLFJrPW5ldyBTKG51bGwsXCJyZXBvcnRlclwiLFwicmVwb3J0ZXJcIiwtODA1MzYwNjIxKSxTaz1uZXcgeihudWxsLFwiZG90aW1lc1wiLFwiZG90aW1lc1wiLC04MTg3MDgzOTcsbnVsbCksVGs9bmV3IFMobnVsbCxcImJ1ZmZlci1ibG9iXCIsXCJidWZmZXItYmxvYlwiLC0xODMwMTEyMTczKSxVaz1uZXcgeihudWxsLFwiKnByaW50LWxpbmVzKlwiLFwiKnByaW50LWxpbmVzKlwiLDc1OTIwNjU5LG51bGwpLFZrPW5ldyBTKG51bGwsXCJkeW5hbWljXCIsXCJkeW5hbWljXCIsNzA0ODE5NTcxKSxXaz1uZXcgUyhudWxsLFwiYnVmZmVyaW5nXCIsXCJidWZmZXJpbmdcIiwtODc2NzEzNjEzKSxYaz1uZXcgUyhudWxsLFwibGluZVwiLFwibGluZVwiLDIxMjM0NTIzNSksWWs9bmV3IHoobnVsbCxcIndpdGgtb3BlblwiLFwid2l0aC1vcGVuXCIsMTcyMTE5NjY3LG51bGwpLFprPW5ldyBTKG51bGwsXG5cImxpc3RcIixcImxpc3RcIiw3NjUzNTc2ODMpLCRrPW5ldyB6KG51bGwsXCJmbipcIixcImZuKlwiLC03NTI4NzY4NDUsbnVsbCksYWw9bmV3IFMobnVsbCxcImVuZC1ydW4tdGVzdHNcIixcImVuZC1ydW4tdGVzdHNcIiwyNjczMDA1NjMpLGJsPW5ldyBTKG51bGwsXCJyaWdodC1wYXJhbXNcIixcInJpZ2h0LXBhcmFtc1wiLC0xNzkwNjc2MjM3KSxjbD1uZXcgeihudWxsLFwiZGVmb25jZVwiLFwiZGVmb25jZVwiLC0xNjgxNDg0MDEzLG51bGwpLGRsPW5ldyB6KG51bGwsXCJyZWN1clwiLFwicmVjdXJcIiwxMjAyOTU4MjU5LG51bGwpLGVsPW5ldyB6KG51bGwsXCIqcHJpbnQtbWlzZXItd2lkdGgqXCIsXCIqcHJpbnQtbWlzZXItd2lkdGgqXCIsMTIwNjYyNDIxMSxudWxsKSxmbD1uZXcgUyhudWxsLFwicmVzdWx0XCIsXCJyZXN1bHRcIiwxNDE1MDkyMjExKSxnbD1uZXcgeihudWxsLFwiZGVmbi1cIixcImRlZm4tXCIsMTA5Nzc2NTA0NCxudWxsKSxxYj1uZXcgUyhudWxsLFwicHJpbnQtbGVuZ3RoXCIsXCJwcmludC1sZW5ndGhcIiwxOTMxODY2MzU2KSxcbmhsPW5ldyBTKG51bGwsXCJtYXhcIixcIm1heFwiLDYxMzY2NTQ4KSxpbD1uZXcgUyhudWxsLFwidHJhaWxpbmctd2hpdGUtc3BhY2VcIixcInRyYWlsaW5nLXdoaXRlLXNwYWNlXCIsMTQ5NjAwNjk5Niksamw9bmV3IFMobnVsbCxcIm1pbmNvbFwiLFwibWluY29sXCIsMTIzMDY5NTQ0NSksa2w9bmV3IHooXCJjbG9qdXJlLmNvcmVcIixcImRlcmVmXCIsXCJjbG9qdXJlLmNvcmUvZGVyZWZcIiwxODg3MTkxNTcsbnVsbCksbGw9bmV3IFMobnVsbCxcImVuZC10ZXN0LWFsbC12YXJzXCIsXCJlbmQtdGVzdC1hbGwtdmFyc1wiLDU0ODgyNzI1MyksbWw9bmV3IFMobnVsbCxcIm1pbnBhZFwiLFwibWlucGFkXCIsMzIzNTcwOTAxKSxubD1uZXcgUyhudWxsLFwic21hbGxlc3RcIixcInNtYWxsZXN0XCIsLTE1MjYyMzg4Myksb2w9bmV3IFMobnVsbCxcImN1cnJlbnRcIixcImN1cnJlbnRcIiwtMTA4ODAzODYwMykscGw9bmV3IFMobnVsbCxcImF0XCIsXCJhdFwiLDE0NzY5NTEzNDkpLHFsPW5ldyBTKG51bGwsXCJkZXJlZlwiLFwiZGVyZWZcIiwtMTQ1NTg2Nzk1KSxcbnJsPW5ldyBTKFwiY2xvanVyZS50ZXN0LmNoZWNrLmNsb2p1cmUtdGVzdFwiLFwicHJvcGVydHlcIixcImNsb2p1cmUudGVzdC5jaGVjay5jbG9qdXJlLXRlc3QvcHJvcGVydHlcIiwxMzU2NTE3NzgxKSxLaD1uZXcgUyhudWxsLFwicGFyZW50c1wiLFwicGFyZW50c1wiLC0yMDI3NTM4ODkxKSxzbD1uZXcgUyhudWxsLFwiY291bnRcIixcImNvdW50XCIsMjEzOTkyNDA4NSksdGw9bmV3IFMobnVsbCxcInBlci1saW5lLXByZWZpeFwiLFwicGVyLWxpbmUtcHJlZml4XCIsODQ2OTQxODEzKSx1bD1uZXcgUyhudWxsLFwiZXhwZWN0ZWRcIixcImV4cGVjdGVkXCIsMTU4MzY3MDk5Nyksdmw9bmV3IHoobnVsbCxcIi9cIixcIi9cIiwtMTM3MTkzMjk3MSxudWxsKSx3bD1uZXcgUyhudWxsLFwiY29sbnVtXCIsXCJjb2xudW1cIiwyMDIzNzk2ODU0KSx4bD1uZXcgeihudWxsLFwibWV0YTEzOTY5XCIsXCJtZXRhMTM5NjlcIiwtODEwMjE3MjI2LG51bGwpLHlsPW5ldyB6KFwiY2xqcy5jb3JlXCIsXCIqcHJpbnQtcmVhZGFibHkqXCIsXCJjbGpzLmNvcmUvKnByaW50LXJlYWRhYmx5KlwiLFxuLTM1NDY3MDI1MCxudWxsKSx6bD1uZXcgUyhudWxsLFwiZmFpbGluZy1zaXplXCIsXCJmYWlsaW5nLXNpemVcIiwtNDI5NTYyNTM4KSxBbD1uZXcgUyhudWxsLFwibGVuZ3RoXCIsXCJsZW5ndGhcIiw1ODg5ODc4NjIpLEJsPW5ldyB6KG51bGwsXCJsb29wXCIsXCJsb29wXCIsMTI0NDk3ODY3OCxudWxsKSxDbD1uZXcgeihcImNsb2p1cmUuY29yZVwiLFwidW5xdW90ZVwiLFwiY2xvanVyZS5jb3JlL3VucXVvdGVcIiw4NDMwODc1MTAsbnVsbCksRGw9bmV3IFMobnVsbCxcIm92ZXJmbG93Y2hhclwiLFwib3ZlcmZsb3djaGFyXCIsLTE2MjAwODgxMDYpLEVsPW5ldyBTKFwiY2xqcy50ZXN0XCIsXCJkZWZhdWx0XCIsXCJjbGpzLnRlc3QvZGVmYXVsdFwiLC0xNTgxNDA1MzIyKSxGbD1uZXcgUyhudWxsLFwiZW5kLWxpbmVcIixcImVuZC1saW5lXCIsMTgzNzMyNjQ1NSksR2w9bmV3IHoobnVsbCxcImNvbmRwXCIsXCJjb25kcFwiLDEwNTQzMjUxNzUsbnVsbCksSGw9bmV3IFMobnVsbCxcInJpZ2h0XCIsXCJyaWdodFwiLC00NTI1ODE4MzMpLElsPW5ldyBTKG51bGwsXG5cImNvbGluY1wiLFwiY29saW5jXCIsLTU4NDg3MzM4NSksSmw9bmV3IFMobnVsbCxcImJlZ2luLXRlc3QtbnNcIixcImJlZ2luLXRlc3QtbnNcIiwtMTcwMTIzNzAzMyksS2w9bmV3IHoobnVsbCxcImNvbmRcIixcImNvbmRcIiwxNjA2NzA4MDU1LG51bGwpLExsPW5ldyBTKFwiY2xvanVyZS50ZXN0LmNoZWNrLmNsb2p1cmUtdGVzdFwiLFwic2hyaW5raW5nXCIsXCJjbG9qdXJlLnRlc3QuY2hlY2suY2xvanVyZS10ZXN0L3Nocmlua2luZ1wiLDM3MjI4OTM5OSksTWw9bmV3IFMobnVsbCxcImJvdGhcIixcImJvdGhcIiwtMzkzNjQ4ODQwKSxObD1uZXcgUyhudWxsLFwiZFwiLFwiZFwiLDE5NzIxNDI0MjQpLE9sPW5ldyB6KG51bGwsXCJiaW5kaW5nXCIsXCJiaW5kaW5nXCIsLTIxMTQ1MDMxNzYsbnVsbCksUGw9bmV3IFMobnVsbCxcImVycm9yXCIsXCJlcnJvclwiLC05Nzg5NjkwMzIpLFFsPW5ldyBTKG51bGwsXCJkZXB0aFwiLFwiZGVwdGhcIiwxNzY4NjYzNjQwKSxSbD1uZXcgeihudWxsLFwid2l0aC1sb2NhbC12YXJzXCIsXCJ3aXRoLWxvY2FsLXZhcnNcIixcbjgzNzY0MjA3MixudWxsKSxTbD1uZXcgUyhudWxsLFwiZGVmXCIsXCJkZWZcIiwtMTA0MzQzMDUzNiksVGw9bmV3IHoobnVsbCxcImRlZm1hY3JvXCIsXCJkZWZtYWNyb1wiLDIwNTQxNTczMDQsbnVsbCksVWw9bmV3IHoobnVsbCxcInNldCFcIixcInNldCFcIiwyNTA3MTQ1MjEsbnVsbCksVmw9bmV3IFMobnVsbCxcImNsYXVzZXNcIixcImNsYXVzZXNcIiwxNDU0ODQxMjQxKSxXbD1uZXcgUyhudWxsLFwiaW5kZW50LXRcIixcImluZGVudC10XCIsNTI4MzE4OTY5KSxYbD1uZXcgUyhudWxsLFwicGFzc1wiLFwicGFzc1wiLDE1NzQxNTk5OTMpLFlsPW5ldyBTKG51bGwsXCJtYXgtZWxlbWVudHNcIixcIm1heC1lbGVtZW50c1wiLDQzMzAzNDA3MyksWmw9bmV3IHooXCJjbGpzLnBwcmludFwiLFwiKnByaW50LWNpcmNsZSpcIixcImNsanMucHByaW50LypwcmludC1jaXJjbGUqXCIsMTYwNjE4NTg0OSxudWxsKSwkbD1uZXcgUyhudWxsLFwibGluZWFyXCIsXCJsaW5lYXJcIiw4NzIyNjg2OTcpLGFtPW5ldyBTKG51bGwsXCJzZXFcIixcInNlcVwiLC0xODE3ODAzNzgzKSxcbmJtPW5ldyB6KG51bGwsXCJsb2NraW5nXCIsXCJsb2NraW5nXCIsMTU0Mjg2Mjg3NCxudWxsKSxjbT1uZXcgeihudWxsLFwiLlwiLFwiLlwiLDE5NzU2NzU5NjIsbnVsbCksZG09bmV3IHoobnVsbCxcIipwcmludC1yaWdodC1tYXJnaW4qXCIsXCIqcHJpbnQtcmlnaHQtbWFyZ2luKlwiLC00MzcyNzI0NTQsbnVsbCksZW09bmV3IFMobnVsbCxcImZpcnN0XCIsXCJmaXJzdFwiLC02NDQxMDMwNDYpLGZtPW5ldyB6KG51bGwsXCJ2YXJcIixcInZhclwiLDg3MDg0ODczMCxudWxsKSxnbT1uZXcgeihudWxsLFwicXVvdGVcIixcInF1b3RlXCIsMTM3NzkxNjI4MixudWxsKSxobT1uZXcgUyhudWxsLFwiYnJhY2tldC1pbmZvXCIsXCJicmFja2V0LWluZm9cIiwtMTYwMDA5Mjc3NCksaW09bmV3IFMobnVsbCxcInNldFwiLFwic2V0XCIsMzA0NjAyNTU0KSxqbT1uZXcgUyhudWxsLFwiYmFzZS1hcmdzXCIsXCJiYXNlLWFyZ3NcIiwtMTI2ODcwNjgyMiksa209bmV3IFMobnVsbCxcInByZXR0eVwiLFwicHJldHR5XCIsLTE5MTYzNzI0ODYpLGxtPW5ldyB6KG51bGwsXG5cImxiXCIsXCJsYlwiLDk1MDMxMDQ5MCxudWxsKSxtbT1uZXcgUyhudWxsLFwiZW5kXCIsXCJlbmRcIiwtMjY4MTg1OTU4KSxubT1uZXcgUyhudWxsLFwibG9naWNhbC1ibG9jay1jYWxsYmFja1wiLFwibG9naWNhbC1ibG9jay1jYWxsYmFja1wiLDE2MTI2OTExOTQpLG9tPW5ldyBTKG51bGwsXCJiYXNlXCIsXCJiYXNlXCIsMTg1Mjc5MzIyKSxwbT1uZXcgUyhudWxsLFwiYXJnbGlzdHNcIixcImFyZ2xpc3RzXCIsMTY2MTk4OTc1NCkscW09bmV3IHoobnVsbCxcImlmLWxldFwiLFwiaWYtbGV0XCIsMTgwMzU5MzY5MCxudWxsKSxybT1uZXcgeihudWxsLFwiKnByaW50LXJlYWRhYmx5KlwiLFwiKnByaW50LXJlYWRhYmx5KlwiLC03NjEzNjEyMjEsbnVsbCksc209bmV3IFMobnVsbCxcImhpZXJhcmNoeVwiLFwiaGllcmFyY2h5XCIsLTEwNTM0NzAzNDEpLHRtPW5ldyBTKG51bGwsXCJhY3R1YWxcIixcImFjdHVhbFwiLDEwNzMwNjM2MyksdW09bmV3IHoobnVsbCxcImNhdGNoXCIsXCJjYXRjaFwiLC0xNjE2MzcwMjQ1LG51bGwpLHZtPW5ldyBTKG51bGwsXG5cImJ1ZmZlci1sZXZlbFwiLFwiYnVmZmVyLWxldmVsXCIsOTI4ODY0NzMxKSx3bT1uZXcgUyhudWxsLFwiaW50cmEtYmxvY2stbmxcIixcImludHJhLWJsb2NrLW5sXCIsMTgwODgyNjg3NSkseG09bmV3IFMobnVsbCxcInNlcGFyYXRvclwiLFwic2VwYXJhdG9yXCIsLTE2Mjg3NDkxMjUpLHltPW5ldyBTKG51bGwsXCJudW0tZWxlbWVudHNcIixcIm51bS1lbGVtZW50c1wiLDE5NjA0MjIxMDcpLHptPW5ldyBTKG51bGwsXCJmbGFnc1wiLFwiZmxhZ3NcIiwxNzc1NDE4MDc1KSx4aD1uZXcgUyhudWxsLFwiYWx0LWltcGxcIixcImFsdC1pbXBsXCIsNjcwOTY5NTk1KSxBbT1uZXcgeihudWxsLFwid3JpdGVyXCIsXCJ3cml0ZXJcIiwxMzYyOTYzMjkxLG51bGwpLEJtPW5ldyBTKG51bGwsXCJkb2NcIixcImRvY1wiLDE5MTMyOTY4OTEpLENtPW5ldyBTKG51bGwsXCJkaXJlY3RpdmVcIixcImRpcmVjdGl2ZVwiLDc5MzU1OTEzMiksRG09bmV3IFMobnVsbCxcImxvZ2ljYWwtYmxvY2tcIixcImxvZ2ljYWwtYmxvY2tcIiwtNTgxMDIyNTY0KSxFbT1uZXcgUyhudWxsLFxuXCJsYXN0XCIsXCJsYXN0XCIsMTEwNTczNTEzMiksRm09bmV3IFMobnVsbCxcImpzZG9jXCIsXCJqc2RvY1wiLDE3NDUxODM1MTYpLEdtPW5ldyB6KFwiY2xqcy5wcHJpbnRcIixcIipwcmludC1saW5lcypcIixcImNsanMucHByaW50LypwcmludC1saW5lcypcIiw1MzQ2ODM0ODQsbnVsbCksSG09bmV3IFMobnVsbCxcIm1pbi1lbGVtZW50c1wiLFwibWluLWVsZW1lbnRzXCIsOTQ5MzcwNzgwKSxJbT1uZXcgUyhudWxsLFwiTmFOP1wiLFwiTmFOP1wiLC0xOTE3NzY3NjUxKSxKbT1uZXcgUyhudWxsLFwiZW5kLXRlc3QtbnNcIixcImVuZC10ZXN0LW5zXCIsMTYyMDY3NTY0NSksS209bmV3IFMobnVsbCxcInVwLWFycm93XCIsXCJ1cC1hcnJvd1wiLDE3MDUzMTAzMzMpLExtPW5ldyBTKG51bGwsXCJ0eXBlLXRhZ1wiLFwidHlwZS10YWdcIiwtMTg3Mzg2MzI2NyksTW09bmV3IFMobnVsbCxcIm1hcFwiLFwibWFwXCIsMTM3MTY5MDQ2MSksTm09bmV3IFMobnVsbCxcIm1pbi1yZW1haW5pbmdcIixcIm1pbi1yZW1haW5pbmdcIiw5NjI2ODc2NzcpLE9tPW5ldyBTKG51bGwsXG5cInRlc3RcIixcInRlc3RcIiw1Nzc1Mzg4NzcpLFBtPW5ldyBTKG51bGwsXCJyZXN0XCIsXCJyZXN0XCIsLTEyNDE2OTY0MTkpLFFtPW5ldyB6KG51bGwsXCJ0aHJvd1wiLFwidGhyb3dcIiw1OTU5MDU2OTQsbnVsbCksUm09bmV3IFMobnVsbCxcImFyZzFcIixcImFyZzFcIiw5NTE4OTkzNTgpLFNtPW5ldyBTKG51bGwsXCJubC10XCIsXCJubC10XCIsLTE2MDgzODIxMTQpLFRtPW5ldyBTKG51bGwsXCJidWZmZXJcIixcImJ1ZmZlclwiLDYxNzI5NTE5OCksVW09bmV3IFMobnVsbCxcInN0YXJ0LXBvc1wiLFwic3RhcnQtcG9zXCIsNjY4Nzg5MDg2KSxWbT1uZXcgUyhudWxsLFwibWF4LWNvbHVtbnNcIixcIm1heC1jb2x1bW5zXCIsMTc0MjMyMzI2MiksV209bmV3IFMobnVsbCxcInN0YXJ0LWJsb2NrLXRcIixcInN0YXJ0LWJsb2NrLXRcIiwtMzczNDMwNTk0KSxYbT1uZXcgUyhudWxsLFwiZXhwb25lbnRjaGFyXCIsXCJleHBvbmVudGNoYXJcIiwxOTg2NjY0MjIyKSxZbT1uZXcgUyhudWxsLFwibWVzc2FnZVwiLFwibWVzc2FnZVwiLC00MDYwNTYwMDIpLFptPVxubmV3IFMobnVsbCxcImVuZC1ibG9jay10XCIsXCJlbmQtYmxvY2stdFwiLDE1NDQ2NDg3MzUpLCRtPW5ldyB6KG51bGwsXCJkZWZcIixcImRlZlwiLDU5NzEwMDk5MSxudWxsKSxhbj1uZXcgeihudWxsLFwiKnByaW50LWJhc2UqXCIsXCIqcHJpbnQtYmFzZSpcIiwyMDM3OTM3NzkxLG51bGwpLGJuPW5ldyBTKG51bGwsXCJkYXRhXCIsXCJkYXRhXCIsLTIzMjY2OTM3NyksY249bmV3IFMobnVsbCxcImNvbW1hY2hhclwiLFwiY29tbWFjaGFyXCIsNjUyODU5MzI3KSxkbj1uZXcgUyhudWxsLFwic28tZmFyXCIsXCJzby1mYXJcIiwtMTk3MzY0MjI0MSksZW49bmV3IFMobnVsbCxcImVuZC10ZXN0LXZhcnNcIixcImVuZC10ZXN0LXZhcnNcIiwtMTM5NDQxOTcxMyk7ZnVuY3Rpb24gZm4oYSxiKXt0aGlzLnJvb3Q9YTt0aGlzLmNoaWxkcmVuPWI7dGhpcy5vPTE2O3RoaXMuRz0wfWZuLnByb3RvdHlwZS5jYT1mdW5jdGlvbihhLGIpe2lmKEMuYihiLDApKXJldHVybiB0aGlzLnJvb3Q7aWYoQy5iKGIsMSkpcmV0dXJuIHRoaXMuY2hpbGRyZW47dGhyb3cgRXJyb3IoXCJJbmRleCBvdXQgb2YgYm91bmRzIGluIHJvc2UgdHJlZVwiKTt9O2ZuLnByb3RvdHlwZS5RYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEMuYihiLDApP3RoaXMucm9vdDpDLmIoYiwxKT90aGlzLmNoaWxkcmVuOmN9O2Z1bmN0aW9uIGduKGEpe3JldHVybiBhLnJvb3R9ZnVuY3Rpb24gaG4oYSl7cmV0dXJuIGEuY2hpbGRyZW59ZnVuY3Rpb24gam4oYSxiKXtyZXR1cm4gbmV3IGZuKGEsYil9XG52YXIga249ZnVuY3Rpb24ga24oYixjKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgZD1FKGMpLGU7aWYoZClpZigwPT09YillPVpjKGMpO2Vsc2V7ZT13ZDt2YXIgZj1JKGQpLGc7Zz1iLTE7ZD1aYyhkKTtnPWtuLmI/a24uYihnLGQpOmtuLmNhbGwobnVsbCxnLGQpO2U9ZShmLGcpfWVsc2UgZT1udWxsO3JldHVybiBlfSxudWxsLG51bGwpfSxsbj1mdW5jdGlvbiBsbihiKXt2YXIgYz1iLnJvb3QsZD1jLmNoaWxkcmVuO3JldHVybiBqbihjLnJvb3QsTWUuYihtZi5iKGxuLGIuY2hpbGRyZW4pLGQpKX0sbW49ZnVuY3Rpb24gbW4oYixjKXtyZXR1cm4gam4oZnVuY3Rpb24oKXt2YXIgZD1jLnJvb3Q7cmV0dXJuIGIuYT9iLmEoZCk6Yi5jYWxsKG51bGwsZCl9KCksbWYuYihmdW5jdGlvbihjKXtyZXR1cm4gbW4uYj9tbi5iKGIsYyk6bW4uY2FsbChudWxsLGIsYyl9LGMuY2hpbGRyZW4pKX0sbm49ZnVuY3Rpb24gbm4oYixjKXtyZXR1cm4gam4oYy5yb290LG1mLmIoZnVuY3Rpb24oYyl7cmV0dXJuIG5uLmI/XG5ubi5iKGIsYyk6bm4uY2FsbChudWxsLGIsYyl9LHhmKGZ1bmN0aW9uKGMpe2M9Yy5yb290O3JldHVybiBiLmE/Yi5hKGMpOmIuY2FsbChudWxsLGMpfSxjLmNoaWxkcmVuKSkpfTtcbmZ1bmN0aW9uIG9uKGEpe3JldHVybiBmdW5jdGlvbiBjKGQpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe2Zvcih2YXIgZT1kOzspe3ZhciBmPUUoZSk7aWYoZil7dmFyIGc9ZixrPUkoZyksbD1PKGssMCxudWxsKSxwPU8oaywxLG51bGwpO2lmKGY9RShmdW5jdGlvbihjLGQsZSxmLGcsayl7cmV0dXJuIGZ1bmN0aW9uIEsobCl7cmV0dXJuIG5ldyBCZShudWxsLGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBmdW5jdGlvbigpe2Zvcig7Oyl7dmFyIGM9RShsKTtpZihjKXtpZihTZChjKSl7dmFyIGQ9Q2MoYyksZT1NKGQpLGc9RmUoZSk7YTpmb3IodmFyIGs9MDs7KWlmKGs8ZSl7dmFyIHA9SmIuYihkLGspO0llKGcsUS5jKGEsZixwKSk7ays9MX1lbHNle2Q9ITA7YnJlYWsgYX1yZXR1cm4gZD9IZShnLmlhKCksSyhEYyhjKSkpOkhlKGcuaWEoKSxudWxsKX1nPUkoYyk7cmV0dXJuIHdkKFEuYyhhLGYsZyksSyhaYyhjKSkpfXJldHVybiBudWxsfX19KGMsZCxlLGYsZyxrKSxudWxsLFxubnVsbCl9fShlLGssbCxwLGcsZikobC5jaGlsZHJlbikpKXJldHVybiBNZS5iKGYsYyhaYyhlKSkpO2U9WmMoZSl9ZWxzZSByZXR1cm4gbnVsbH19LG51bGwsbnVsbCl9KG1mLmMoJGYsYSxsaCgwLE51bWJlci5NQVhfVkFMVUUpKSl9dmFyIHBuPWZ1bmN0aW9uIHBuKGIsYyl7cmV0dXJuIGpuKFBlKGIsbWYuYihnbixjKSksbWYuYihmdW5jdGlvbihjKXtyZXR1cm4gcG4uYj9wbi5iKGIsYyk6cG4uY2FsbChudWxsLGIsYyl9LG9uKGMpKSl9O2Z1bmN0aW9uIHFuKGEpe3JldHVybiBNZS5iKGNmKGZ1bmN0aW9uKGIpe3JldHVybiBrbihiLGEpfSxhKSxvbihaZihhKSkpfVxudmFyIHJuPWZ1bmN0aW9uIHJuKGIsYyl7cmV0dXJuIEUoYyk/am4oUGUoYixtZi5iKGduLGMpKSxtZi5iKGZ1bmN0aW9uKGMpe3JldHVybiBybi5iP3JuLmIoYixjKTpybi5jYWxsKG51bGwsYixjKX0scW4oYykpKTpqbihiLmg/Yi5oKCk6Yi5jYWxsKG51bGwpLEZkKX0sc249ZnVuY3Rpb24gc24oYil7dmFyIGM9Yi5yb290O2I9Yi5jaGlsZHJlbjtiPU1lLmIobWYuYihzbixiKSxtZi5iKHNuLHdmKGhuLE4oW2JdLDApKSkpO3JldHVybiBqbihjLGIpfTtmb3IodmFyIHRuPVtudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsXG5udWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsXG5udWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sdW49dG5bMF09MDs7KWlmKDI1Nj51bil0blt1bl09dG5bdW4+PjFdKyh1biYxKSx1bis9MTtlbHNlIGJyZWFrO2Z1bmN0aW9uIHZuKGEpe3ZhciBiPWEuYmE7YT1hLmthO3JldHVybiB0bltiJjI1NV0rdG5bYj4+OCYyNTVdK3RuW2I+PjE2JjI1NV0rdG5bYj4+MjQmMjU1XSt0blthJjI1NV0rdG5bYT4+OCYyNTVdK3RuW2E+PjE2JjI1NV0rdG5bYT4+MjQmMjU1XX07ZnVuY3Rpb24gd24oYSxiKXtyZXR1cm4gYS5tdWx0aXBseShiKX12YXIgeG49UmEoKTt2YXIgeW47YTpmb3IodmFyIHpuPTUzLEFuPTE7Oyl7aWYoMD09PXpuKXt5bj1BbjticmVhayBhfXZhciBCbj1Bbi8yLHpuPXpuLTEsQW49Qm59dmFyIENuPTQyOTQ5NjcyOTYqeW47dmFyIERuPWZ1bmN0aW9uIERuKGIpe2lmKG51bGwhPWImJm51bGwhPWIuUmMpcmV0dXJuIGIuUmMoKTt2YXIgYz1EbltiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1Ebi5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJUmFuZG9tLnJhbmQtbG9uZ1wiLGIpO30sRW49ZnVuY3Rpb24gRW4oYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5RYylyZXR1cm4gYi5RYygpO3ZhciBjPUVuW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPUVuLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklSYW5kb20ucmFuZC1kb3VibGVcIixiKTt9LEZuPWZ1bmN0aW9uIEZuKGIpe2lmKG51bGwhPWImJm51bGwhPWIuU2MpcmV0dXJuIGIuU2MoKTt2YXIgYz1GbltiYShudWxsPT1cbmI/bnVsbDpiKV07aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTtjPUZuLl87aWYobnVsbCE9YylyZXR1cm4gYy5hP2MuYShiKTpjLmNhbGwobnVsbCxiKTt0aHJvdyB4YihcIklSYW5kb20uc3BsaXRcIixiKTt9LEduPWZ1bmN0aW9uIEduKGIsYyl7aWYobnVsbCE9YiYmbnVsbCE9Yi5UYylyZXR1cm4gYi5UYygwLGMpO3ZhciBkPUduW2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7ZD1Hbi5fO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO3Rocm93IHhiKFwiSVJhbmRvbS5zcGxpdC1uXCIsYik7fTtmdW5jdGlvbiBIbihhLGIpe3JldHVybiBiYihhLGIpLkdjKGEpfXZhciBJbj1QYShcImJmNTg0NzZkMWNlNGU1YjlcIiwxNiksSm49UGEoXCI5NGQwNDliYjEzMzExMWViXCIsMTYpO1xuZnVuY3Rpb24gS24oYSl7cmV0dXJuIEhuKHduKEhuKHduKEhuKGEsMzApLEluKSwyNyksSm4pLDMxKX12YXIgTG49UGEoXCJmZjUxYWZkN2VkNTU4Y2NkXCIsMTYpLE1uPVBhKFwiYzRjZWI5ZmUxYTg1ZWM1M1wiLDE2KSxObj1QYShcImFhYWFhYWFhYWFhYWFhYWFcIiwxNik7ZnVuY3Rpb24gT24oYSl7YT1Ibih3bihIbih3bihIbihhLDMzKSxMbiksMzMpLE1uKSwzMykuVmMoeG4pO3ZhciBiPUhuKGEsMSk7cmV0dXJuIDI0Pih2bi5hP3ZuLmEoYik6dm4uY2FsbChudWxsLGIpKT9hLkdjKE5uKTphfWZ1bmN0aW9uIFBuKGEsYil7dGhpcy5nYW1tYT1hO3RoaXMuc3RhdGU9Yn1Qbi5wcm90b3R5cGUuUmM9ZnVuY3Rpb24oKXtyZXR1cm4gS24odGhpcy5zdGF0ZS5hZGQodGhpcy5nYW1tYSkpfTtQbi5wcm90b3R5cGUuUWM9ZnVuY3Rpb24oKXt2YXIgYT1Ebih0aGlzKSxhPWJiKGEsMTEpO3JldHVybiB5biooMDw9YS5iYT9hLmJhOk5hK2EuYmEpK0NuKmEua2F9O1xuUG4ucHJvdG90eXBlLlNjPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nYW1tYS5hZGQodGhpcy5zdGF0ZSksYj10aGlzLmdhbW1hLmFkZChhKSxjPU9uKGIpO3JldHVybiBuZXcgVihudWxsLDIsNSxXLFtuZXcgUG4odGhpcy5nYW1tYSxiKSxuZXcgUG4oYyxLbihhKSldLG51bGwpfTtQbi5wcm90b3R5cGUuVGM9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiBGZDtjYXNlIDE6cmV0dXJuIG5ldyBWKG51bGwsMSw1LFcsW3RoaXNdLG51bGwpO2RlZmF1bHQ6Zm9yKHZhciBjPWItMSxkPXRoaXMuc3RhdGUsZT13YyhGZCk7Oyl7aWYoQy5iKGMsTShlKSkpcmV0dXJuIHljKE5lLmIoZSxuZXcgUG4odGhpcy5nYW1tYSxkKSkpO3ZhciBmPXRoaXMuZ2FtbWEuYWRkKGQpLGQ9dGhpcy5nYW1tYS5hZGQoZiksZz1PbihkKSxmPW5ldyBQbihnLEtuKGYpKSxlPU5lLmIoZSxmKX19fTt2YXIgUW49UGEoXCI5ZTM3NzliOTdmNGE3YzE1XCIsMTYpO1xuZnVuY3Rpb24gUm4oYSl7dmFyIGI7Yj1cIm51bWJlclwiPT09dHlwZW9mIGE/R2EoYSk6YSBpbnN0YW5jZW9mIEJhP2E6bnVsbDtpZighcihiKSl0aHJvdyBZaChcIkJhZCByYW5kb20gc2VlZCFcIixuZXcgcShudWxsLDEsW3FrLGFdLG51bGwpKTtyZXR1cm4gbmV3IFBuKFFuLGIpfXZhciBTbj1uZXcgcShudWxsLDEsW2NrLFJuKChuZXcgRGF0ZSkudmFsdWVPZigpKV0sbnVsbCksVG49ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1pLmEoa2YuYihhLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe2E9bnVsbCE9YSYmKGEubyY2NHx8bT09PWEuSGEpP1BlKGdmLGEpOmE7YT1CLmIoYSxjayk7dmFyIGI9Rm4oYSk7YT1PKGIsMCxudWxsKTtiPU8oYiwxLG51bGwpO3JldHVybiBuZXcgcShudWxsLDIsW2NrLGEsTWksYl0sbnVsbCl9fShhKSkpfX0oWT9ZKFNuKTplZi5jYWxsKG51bGwsU24pKTt2YXIgVW49ZnVuY3Rpb24gVW4oYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3N3aXRjaChjLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBVbi5hKGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiBVbi5iKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2RlZmF1bHQ6dGhyb3cgRXJyb3IoW3QoXCJJbnZhbGlkIGFyaXR5OiBcIiksdChjLmxlbmd0aCldLmpvaW4oXCJcIikpO319O1VuLmE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHlhO2ZvcihhPUUoYSk7OylpZihudWxsIT1hKWI9Yi5hcHBlbmQoXCJcIit0KEkoYSkpKSxhPUooYSk7ZWxzZSByZXR1cm4gYi50b1N0cmluZygpfTtVbi5iPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW5ldyB5YSxkPUUoYik7OylpZihudWxsIT1kKWMuYXBwZW5kKFwiXCIrdChJKGQpKSksZD1KKGQpLG51bGwhPWQmJmMuYXBwZW5kKGEpO2Vsc2UgcmV0dXJuIGMudG9TdHJpbmcoKX07XG5Vbi5CPTI7ZnVuY3Rpb24gVm4oYSxiKXtpZigwPj1ifHxiPj0yK00oYSkpcmV0dXJuIEVkLmIoWmYod2QoXCJcIixtZi5iKHQsRShhKSkpKSxcIlwiKTtpZihyKG9lP2tjKDEsYik6bmUuY2FsbChudWxsLDEsYikpKXJldHVybiBuZXcgVihudWxsLDEsNSxXLFthXSxudWxsKTtpZihyKG9lP2tjKDIsYik6bmUuY2FsbChudWxsLDIsYikpKXJldHVybiBuZXcgVihudWxsLDIsNSxXLFtcIlwiLGFdLG51bGwpO3ZhciBjPWItMjtyZXR1cm4gRWQuYihaZih3ZChcIlwiLGJnKFpmKG1mLmIodCxFKGEpKSksMCxjKSkpLGEuc3Vic3RyaW5nKGMpKX1cbmZ1bmN0aW9uIFduKGEsYixjKXtpZihcIi8oPzopL1wiPT09XCJcIit0KGIpKWI9Vm4oYSxjKTtlbHNlIGlmKDE+YyliPVpmKChcIlwiK3QoYSkpLnNwbGl0KGIpKTtlbHNlIGE6Zm9yKHZhciBkPWMsZT1GZDs7KXtpZigxPT09ZCl7Yj1FZC5iKGUsYSk7YnJlYWsgYX12YXIgZj1uaChiLGEpO2lmKG51bGwhPWYpe3ZhciBnPWEuaW5kZXhPZihmKSxmPWEuc3Vic3RyaW5nKGcrTShmKSksZD1kLTEsZT1FZC5iKGUsYS5zdWJzdHJpbmcoMCxnKSk7YT1mfWVsc2V7Yj1FZC5iKGUsYSk7YnJlYWsgYX19aWYoMD09PWMmJjE8TShiKSlhOmZvcihjPWI7OylpZihcIlwiPT09KG51bGw9PWM/bnVsbDpaYihjKSkpYz1udWxsPT1jP251bGw6JGIoYyk7ZWxzZSBicmVhayBhO2Vsc2UgYz1iO3JldHVybiBjfTtmdW5jdGlvbiBYbihhLGIsYyxkKXt0aGlzLlNiPWE7dGhpcy53PWI7dGhpcy5qPWM7dGhpcy52PWQ7dGhpcy5vPTIyMjk2Njc1OTQ7dGhpcy5HPTgxOTJ9aD1Ybi5wcm90b3R5cGU7aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJnZW5cIjpyZXR1cm4gdGhpcy5TYjtkZWZhdWx0OnJldHVybiBCLmModGhpcy5qLGIsYyl9fTtoLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBvaChiLHZoLFwiXCIsXCIgXCIsXCJcIixjLGEpfX0odGhpcyksXCIjY2xvanVyZS50ZXN0LmNoZWNrLmdlbmVyYXRvcnMuR2VuZXJhdG9ye1wiLFwiLCBcIixcIn1cIixjLE1lLmIobmV3IFYobnVsbCwxLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbVmksdGhpcy5TYl0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtcbmguQ2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxnKDAsdGhpcywxLG5ldyBWKG51bGwsMSw1LFcsW1ZpXSxudWxsKSxyKHRoaXMuaik/S2ModGhpcy5qKTpWZSgpKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDErTSh0aGlzLmopfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDEsW1ZpLG51bGxdLG51bGwpLG51bGwpLGIpP0lkLmIoeWQoeWYuYihYLHRoaXMpLHRoaXMudyksYik6bmV3IFhuKHRoaXMuU2IsdGhpcy53LFVlKElkLmIodGhpcy5qLGIpKSxudWxsKX07XG5oLlphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcihULmI/VC5iKFZpLGIpOlQuY2FsbChudWxsLFZpLGIpKT9uZXcgWG4oYyx0aGlzLncsdGhpcy5qLG51bGwpOm5ldyBYbih0aGlzLlNiLHRoaXMudyxRLmModGhpcy5qLGIsYyksbnVsbCl9O2guWT1mdW5jdGlvbigpe3JldHVybiBFKE1lLmIobmV3IFYobnVsbCwxLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbVmksdGhpcy5TYl0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFhuKHRoaXMuU2IsYix0aGlzLmosdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJkKGIpP1NiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk6YWUoSGIsdGhpcyxiKX07ZnVuY3Rpb24gWW4oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBYbn1mdW5jdGlvbiBabihhKXtyZXR1cm4gbmV3IFhuKGEsbnVsbCxudWxsLG51bGwpfVxuZnVuY3Rpb24gJG4oYSxiLGMpe2E9bnVsbCE9YSYmKGEubyY2NHx8bT09PWEuSGEpP1BlKGdmLGEpOmE7YT1CLmIoYSxWaSk7cmV0dXJuIGEuYj9hLmIoYixjKTphLmNhbGwobnVsbCxiLGMpfWZ1bmN0aW9uIGFvKGEpe3JldHVybiBabihmdW5jdGlvbigpe3JldHVybiBhfSl9ZnVuY3Rpb24gYm8oYSxiKXt2YXIgYz1udWxsIT1iJiYoYi5vJjY0fHxtPT09Yi5IYSk/UGUoZ2YsYik6YixkPUIuYihjLFZpKTtyZXR1cm4gWm4oZnVuY3Rpb24oYixjLGQpe3JldHVybiBmdW5jdGlvbihiLGMpe3ZhciBlPWQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO3JldHVybiBhLmE/YS5hKGUpOmEuY2FsbChudWxsLGUpfX0oYixjLGQpKX1cbmZ1bmN0aW9uIGNvKGEsYil7dmFyIGM9bnVsbCE9YSYmKGEubyY2NHx8bT09PWEuSGEpP1BlKGdmLGEpOmEsZD1CLmIoYyxWaSk7cmV0dXJuIFpuKGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oYSxjKXt2YXIgZT1GbihhKSxmPU8oZSwwLG51bGwpLGU9TyhlLDEsbnVsbCksZj1kLmI/ZC5iKGYsYyk6ZC5jYWxsKG51bGwsZixjKSxmPWIuYT9iLmEoZik6Yi5jYWxsKG51bGwsZiksZj1udWxsIT1mJiYoZi5vJjY0fHxtPT09Zi5IYSk/UGUoZ2YsZik6ZixmPUIuYihmLFZpKTtyZXR1cm4gZi5iP2YuYihlLGMpOmYuY2FsbChudWxsLGUsYyl9fShhLGMsZCkpfXZhciBlbz1mdW5jdGlvbiBlbyhiKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXt2YXIgYz1GbihiKSxkPU8oYywwLG51bGwpLGM9TyhjLDEsbnVsbCk7cmV0dXJuIHdkKGQsZW8uYT9lby5hKGMpOmVvLmNhbGwobnVsbCxjKSl9LG51bGwsbnVsbCl9O1xuZnVuY3Rpb24gZm8oYSl7cmV0dXJuIFpuKGZ1bmN0aW9uKGIsYyl7cmV0dXJuIHpmKGZ1bmN0aW9uKGEsYil7cmV0dXJuICRuKGEsYixjKX0sYSxHbihiLE0oYSkpKX0pfWZ1bmN0aW9uIGdvKGEsYil7aWYoIXIoWW4oYikpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJTZWNvbmQgYXJnIHRvIGZtYXAgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW4pXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gYm8oZnVuY3Rpb24oYil7cmV0dXJuIG1uKGEsYil9LGIpfWZ1bmN0aW9uIGhvKGEpe3JldHVybiBhbyhqbihhLEZkKSl9ZnVuY3Rpb24gaW8oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBibyhsbixabihmdW5jdGlvbihjLGQpe3JldHVybiBtbihmdW5jdGlvbihhKXtyZXR1cm4gJG4oYSxjLGQpfSxtbihhLGIpKX0pKX19XG5mdW5jdGlvbiBqbyhhLGIpe2lmKCFyKFluKGEpKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiRmlyc3QgYXJnIHRvIGJpbmQgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW5lcmF0b3IpXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gY28oYSxpbyhiKSl9ZnVuY3Rpb24ga28oYSl7dmFyIGI9VG4uaD9Ubi5oKCk6VG4uY2FsbChudWxsKSxjPXFmKGxoKDAsMTAwKSk7cmV0dXJuIG1mLmMoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYixjKXtyZXR1cm4gJG4oYSxiLGMpLnJvb3R9fShiLGMpLGVvKGIpLGMpfWZ1bmN0aW9uIGxvKGEpe3JldHVybiBpaChmdW5jdGlvbihhKXtyZXR1cm4hQy5iKDAsYSl9LHRmKGZ1bmN0aW9uKGEpe3JldHVybiBrZShhLDIpfSxhKSl9ZnVuY3Rpb24gbW8oYSl7cmV0dXJuIG1mLmIoZnVuY3Rpb24oYil7cmV0dXJuIGEtYn0sbG8oYSkpfVxudmFyIG5vPWZ1bmN0aW9uIG5vKGIpe3JldHVybiBqbihiLG1mLmIobm8sbW8oYikpKX07ZnVuY3Rpb24gb28oYSxiLGMpe2lmKCEoYjw9YykpdGhyb3cgRXJyb3IoXCJBc3NlcnQgZmFpbGVkOiAoXFx4M2NcXHgzZCBsb3dlciB1cHBlcilcIik7YT1FbihhKTtyZXR1cm4gamUoTWF0aC5mbG9vcihiKyhhKigxK2MpLWEqYikpKX1mdW5jdGlvbiBwbyhhKXtyZXR1cm4gWm4oZnVuY3Rpb24oYixjKXt2YXIgZD1hLmE/YS5hKGMpOmEuY2FsbChudWxsLGMpO3JldHVybiAkbihkLGIsYyl9KX1cbmZ1bmN0aW9uIHFvKGEsYil7aWYoIXIoWW4oYikpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJTZWNvbmQgYXJnIHRvIHJlc2l6ZSBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpLHQoXCJcXG5cIiksdChcIihnZW5lcmF0b3I/IGdlbmVyYXRvcilcIildLmpvaW4oXCJcIikpO3ZhciBjPW51bGwhPWImJihiLm8mNjR8fG09PT1iLkhhKT9QZShnZixiKTpiLGQ9Qi5iKGMsVmkpO3JldHVybiBabihmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBkLmI/ZC5iKGIsYSk6ZC5jYWxsKG51bGwsYixhKX19KGIsYyxkKSl9ZnVuY3Rpb24gcm8oYSxiKXtyZXR1cm4gcG8oZnVuY3Rpb24oYyl7cmV0dXJuIHFvKGEuYT9hLmEoYyk6YS5jYWxsKG51bGwsYyksYil9KX1cbmZ1bmN0aW9uIHNvKGEsYil7cmV0dXJuIFpuKGZ1bmN0aW9uKGMpe2M9b28oYyxhLGIpO3JldHVybiBubihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYz49YSYmYzw9Yn19KGMpLG5vKGMpKX0pfWZ1bmN0aW9uIHRvKGEpe2lmKCFYZShZbixhKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiQXJnIHRvIG9uZS1vZiBtdXN0IGJlIGEgY29sbGVjdGlvbiBvZiBnZW5lcmF0b3JzXCIpLHQoXCJcXG5cIiksdChcIihldmVyeT8gZ2VuZXJhdG9yPyBnZW5lcmF0b3JzKVwiKV0uam9pbihcIlwiKSk7cmV0dXJuIGpvKHNvKDAsTShhKS0xKSxmdW5jdGlvbihiKXtyZXR1cm4gcWQoYSxiKX0pfVxuZnVuY3Rpb24gdW8oYSl7aWYoIVhlKGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpO2E9TyhhLDEsbnVsbCk7cmV0dXJuKGI9XCJudW1iZXJcIj09PXR5cGVvZiBiKT9ZbihhKTpifSxhKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiQXJnIHRvIGZyZXF1ZW5jeSBtdXN0IGJlIGEgbGlzdCBvZiBbbnVtIGdlbmVyYXRvcl0gcGFpcnNcIiksdChcIlxcblwiKSx0KFwiKGV2ZXJ5PyAoZm4gW1t4IGddXSAoYW5kIChudW1iZXI/IHgpIChnZW5lcmF0b3I/IGcpKSkgcGFpcnMpXCIpXS5qb2luKFwiXCIpKTt2YXIgYj1QZShmZSxtZi5iKEksYSkpO3JldHVybiBjbyhzbygxLGIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGIpe2E6e3ZhciBjPWE7Zm9yKGI9Yi5yb290Ozspe3ZhciBjPUUoYyksZT1JKGMpLGM9SihjKSxmPWUsZT1PKGYsMCxudWxsKSxmPU8oZiwxLG51bGwpO2lmKGI8PWUpYnJlYWsgYTtiLT1lfX1yZXR1cm4gZn19KGIpKX1cbmZ1bmN0aW9uIHZvKGEpe2lmKCFFKGEpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJlbGVtZW50cyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYW4gZW1wdHkgY29sbGVjdGlvblwiKSx0KFwiXFxuXCIpLHQoXCIoc2VxIGNvbGwpXCIpXS5qb2luKFwiXCIpKTthPVpmKGEpO3JldHVybiBjbyhzbygwLE0oYSktMSksZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBhbyhtbihhLGIpKX19KGEpKX1mdW5jdGlvbiB3byhhLGIpe3JldHVybiB4byhhLGIsMTApfVxuZnVuY3Rpb24geG8oYSxiLGMpe2lmKCFyKFluKGIpKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiU2Vjb25kIGFyZyB0byBzdWNoLXRoYXQgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW4pXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gWm4oZnVuY3Rpb24oZCxlKXt2YXIgZjthOntmPWM7Zm9yKHZhciBnPWQsaz1lOzspe2lmKDA9PT1mKXRocm93IFloKFt0KFwiQ291bGRuJ3Qgc2F0aXNmeSBzdWNoLXRoYXQgcHJlZGljYXRlIGFmdGVyIFwiKSx0KGMpLHQoXCIgdHJpZXMuXCIpXS5qb2luKFwiXCIpLFgpO3ZhciBnPUZuKGcpLGw9TyhnLDAsbnVsbCksZz1PKGcsMSxudWxsKSxsPSRuKGIsbCxrKSxwO3A9bC5yb290O3A9YS5hP2EuYShwKTphLmNhbGwobnVsbCxwKTtpZihyKHApKXtmPW5uKGEsbCk7YnJlYWsgYX1rKz0xOy0tZn19cmV0dXJuIGZ9KX1cbmZ1bmN0aW9uIHlvKCl7dmFyIGE9em87aWYoIXIoWW4oYSkpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJBcmcgdG8gbm90LWVtcHR5IG11c3QgYmUgYSBnZW5lcmF0b3JcIiksdChcIlxcblwiKSx0KFwiKGdlbmVyYXRvcj8gZ2VuKVwiKV0uam9pbihcIlwiKSk7cmV0dXJuIHdvKFVlLGEpfWZ1bmN0aW9uIEFvKGEpe2lmKCFyKFluKGEpKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiQXJnIHRvIG5vLXNocmluayBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpLHQoXCJcXG5cIiksdChcIihnZW5lcmF0b3I/IGdlbilcIildLmpvaW4oXCJcIikpO3JldHVybiBjbyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhbyhqbihhLnJvb3QsRmQpKX0pfVxuZnVuY3Rpb24gQm8oYSl7aWYoIXIoWW4oYSkpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJBcmcgdG8gc2hyaW5rLTIgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW4pXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gY28oYSxaZS5iKGFvLHNuKSl9dmFyIENvPXZvKG5ldyBWKG51bGwsMiw1LFcsWyExLCEwXSxudWxsKSksRG89ZnVuY3Rpb24gRG8oYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3JldHVybiBEby5mKDA8Yy5sZW5ndGg/bmV3IEYoYy5zbGljZSgwKSwwLG51bGwpOm51bGwpfTtcbkRvLmY9ZnVuY3Rpb24oYSl7aWYoIVhlKFluLGEpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJBcmdzIHRvIHR1cGxlIG11c3QgYmUgZ2VuZXJhdG9yc1wiKSx0KFwiXFxuXCIpLHQoXCIoZXZlcnk/IGdlbmVyYXRvcj8gZ2VuZXJhdG9ycylcIildLmpvaW4oXCJcIikpO3JldHVybiBjbyhmbyhhKSxmdW5jdGlvbihhKXtyZXR1cm4gYW8ocG4oJGYsYSkpfSl9O0RvLkI9MDtEby5BPWZ1bmN0aW9uKGEpe3JldHVybiBEby5mKEUoYSkpfTt2YXIgRW89cG8oZnVuY3Rpb24oYSl7cmV0dXJuIHNvKC1hLGEpfSksRm89Z28oZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguYWJzKGplKGEpKX0sRW8pLEdvPWdvKGZ1bmN0aW9uKGEpe3JldHVybi0xKmF9LEZvKSxIbz1nbyhoZCxGbyksSW89Z28oaGUsR28pO1xuZnVuY3Rpb24gSm8oYSl7aWYoIXIoWW4oYSkpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJBcmcgdG8gdmVjdG9yIG11c3QgYmUgYSBnZW5lcmF0b3JcIiksdChcIlxcblwiKSx0KFwiKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVwiKV0uam9pbihcIlwiKSk7cmV0dXJuIGNvKHBvKGZ1bmN0aW9uKGEpe3JldHVybiBzbygwLGEpfSksZnVuY3Rpb24oYil7cmV0dXJuIGNvKGZvKHNmKGIucm9vdCxhKSksZnVuY3Rpb24oYSl7cmV0dXJuIGFvKHJuKCRmLGEpKX0pfSl9ZnVuY3Rpb24gS28oYSxiKXtpZighcihZbihhKSkpdGhyb3cgRXJyb3IoW3QoXCJBc3NlcnQgZmFpbGVkOiBcIiksdChcIkZpcnN0IGFyZyB0byB2ZWN0b3IgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW5lcmF0b3IpXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gUGUoRG8sc2YoYixhKSl9XG5mdW5jdGlvbiBMbyhhLGIsYyl7aWYoIXIoWW4oYSkpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJGaXJzdCBhcmcgdG8gdmVjdG9yIG11c3QgYmUgYSBnZW5lcmF0b3JcIiksdChcIlxcblwiKSx0KFwiKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVwiKV0uam9pbihcIlwiKSk7cmV0dXJuIGNvKHNvKGIsYyksZnVuY3Rpb24oZCl7cmV0dXJuIGNvKGZvKHNmKGQucm9vdCxhKSksZnVuY3Rpb24oYSl7cmV0dXJuIGNvKGFvKHJuKCRmLGEpKSxmdW5jdGlvbihhKXtyZXR1cm4gYW8obm4oZnVuY3Rpb24oYSl7cmV0dXJuIE0oYSk+PWImJk0oYSk8PWN9LGEpKX0pfSl9KX1cbmZ1bmN0aW9uIE1vKGEpe2lmKCFyKFluKGEpKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiRmlyc3QgYXJnIHRvIGxpc3QgbXVzdCBiZSBhIGdlbmVyYXRvclwiKSx0KFwiXFxuXCIpLHQoXCIoZ2VuZXJhdG9yPyBnZW5lcmF0b3IpXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gY28ocG8oZnVuY3Rpb24oYSl7cmV0dXJuIHNvKDAsYSl9KSxmdW5jdGlvbihiKXtyZXR1cm4gY28oZm8oc2YoYi5yb290LGEpKSxmdW5jdGlvbihhKXtyZXR1cm4gYW8ocm4od2UsYSkpfSl9KX1cbmZ1bmN0aW9uIE5vKGEsYixjLGQsZSxmLGcsayxsKXtpZighcihkKSl0aHJvdyBFcnJvcihcIkFzc2VydCBmYWlsZWQ6IGdlblwiKTtpZighcihWaS5hKGQpKSl0aHJvdyBFcnJvcihcIkFzc2VydCBmYWlsZWQ6ICg6Z2VuIGdlbilcIik7dmFyIHA9d2MoRmQpLHU9d2MoZmgpLHY9ZTtlPWY7Zm9yKHZhciB3PTA7Oyl7aWYoQy5iKGwsdykmJk0ocCk8ayl0aHJvdyBZaChcIkNvdWxkbid0IGdlbmVyYXRlIGVub3VnaCBkaXN0aW5jdCBlbGVtZW50cyFcIixuZXcgcShudWxsLDQsW1ZpLGQsY2ksbCx5bSxnLGRuLG1mLmIoZ24seWMocCkpXSxudWxsKSk7aWYoQy5iKGwsdyl8fEMuYihNKHApLGcpKXJldHVybiBybihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGQubGVuZ3RoOylkW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGQsXG4wKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhiKXtyZXR1cm4geWYuYihhLGIpfWIuQj0wO2IuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGMoYSl9O2IuZj1jO3JldHVybiBifSgpfShwLHUsdixlLHcpLGZ1bmN0aW9uKCl7dmFyIGE9dixiPXljKHApO3JldHVybiBjLmI/Yy5iKGEsYik6Yy5jYWxsKG51bGwsYSxiKX0oKSk7Zj1Gbih2KTt2YXIgeT1PKGYsMCxudWxsKTtmPU8oZiwxLG51bGwpO3ZhciB5PSRuKGQseSxlKSxBPXkucm9vdCxBPWIuYT9iLmEoQSk6Yi5jYWxsKG51bGwsQSk7cihudWxsIT1RYi5iKHUsQSkpPyhlKz0xLHcrPTEsdj1mKToodz1OZS5iKHAseSksdT1OZS5iKHUsQSkscD13LHY9Zix3PTApfX1mdW5jdGlvbiBPbyhhLGIpe3ZhciBjPUxkKGIpO3JldHVybiBjP2M6UGUoWmQsbWYuYihhLGIpKX1cbmZ1bmN0aW9uIFBvKGEsYil7dmFyIGM9bnVsbD09Yj9udWxsOkZiKGIpLGQ9WmYoYiksZT1NKGIpO3JldHVybiB5Zi5iKGMsSShhZShmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYz1PKGEsMCxudWxsKSxlPU8oYSwxLG51bGwpLGU9Rm4oZSksZj1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpLGc9b28oZixiLGQpLGY9VyxrPW5ldyBWKG51bGwsMiw1LFcsW2IsZ10sbnVsbCksZz1PKGssMCxudWxsKSxrPU8oaywxLG51bGwpLGM9US5mKGMsayxjLmE/Yy5hKGcpOmMuY2FsbChudWxsLGcpLE4oW2csYy5hP2MuYShrKTpjLmNhbGwobnVsbCxrKV0sMCkpO3JldHVybiBuZXcgVihudWxsLDIsNSxmLFtjLGVdLG51bGwpfX0oYyxkLGUsZS0xKSxuZXcgVihudWxsLDIsNSxXLFtkLGFdLG51bGwpLGxoKDAsZSkpKSl9XG5mdW5jdGlvbiBRbyhhLGIsYyxkLGUsZil7dmFyIGc9bnVsbCE9ZiYmKGYubyY2NHx8bT09PWYuSGEpP1BlKGdmLGYpOmYsaz1CLmIoZyx5bSksbD1CLmIoZyxIbSkscD1CLmIoZyxZbCksdT1CLmMoZyxjaSwxMCk7ZD1yKGQpP1BvOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJ9fShmLGcsayxsLHAsdSk7dmFyIHY9cihrKT9rOnIobCk/bDoxO2lmKHIoaykpe3ZhciB3PWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBDLmIoZSxNKGEpKX19KGQsdixmLGcsayxsLHAsdSk7aWYobnVsbCE9bHx8bnVsbCE9cCl0aHJvdyBFcnJvcihcIkFzc2VydCBmYWlsZWQ6IChhbmQgKG5pbD8gbWluLWVsZW1lbnRzKSAobmlsPyBtYXgtZWxlbWVudHMpKVwiKTtyZXR1cm4gWm4oZnVuY3Rpb24oZCxmLGcsayxsLHAsdSx2LHcpe3JldHVybiBmdW5jdGlvbih5LEEpe3JldHVybiBubihyKGMpP2xmKGQsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIE9vKGIsXG5hKX19KGQsZixnLGssbCxwLHUsdix3KSk6ZCxObyhhLGIsZixlLHksQSxwLGcsdykpfX0odyxkLHYsZixnLGssbCxwLHUpKX12YXIgeT1yKGwpP2w6MCx3PXIocCk/ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxrKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGE8PU0oYikmJk0oYik8PWt9fSh5LGQsdixmLGcsayxsLHAsdSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBhPD1NKGIpfX0oeSxkLHYsZixnLGssbCxwLHUpO3JldHVybiBjbyhyKHApP3NvKHkscCk6cG8oZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBzbyhhLGErYil9fSh5LHcsZCx2LGYsZyxrLGwscCx1KSksZnVuY3Rpb24oZCxmLGcsayxsLHAsdSx2LHcseSl7cmV0dXJuIGZ1bmN0aW9uKEEpe3JldHVybiBabihmdW5jdGlvbihkLGYsZyxrLGwscCx1LHYsdyx5LEEpe3JldHVybiBmdW5jdGlvbihHLEQpe3JldHVybiBubihyKGMpP2xmKGcsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIE9vKGIsXG5hKX19KGQsZixnLGssbCxwLHUsdix3LHksQSkpOmcsTm8oYSxiLGssZSxHLEQsZCxsLEEpKX19KEEucm9vdCxkLGYsZyxrLGwscCx1LHYsdyx5KSl9fSh5LHcsZCx2LGYsZyxrLGwscCx1KSl9ZnVuY3Rpb24gUm8oYSxiLGMpe3JldHVybiBRbyhYLEksITEsITEsRG8uZihOKFthLGJdLDApKSxjKX12YXIgU289Wm4oZnVuY3Rpb24oYSl7cmV0dXJuIGpuKERuKGEpLEZkKX0pLFRvPVBlKGdlLHNmKDUzLDIpKS0xLFVvPS1UbztcbmZ1bmN0aW9uIFZvKGEsYixjLGQpe2Zvcih2YXIgZT1mdW5jdGlvbigpe3ZhciBkPWIudmIoNjQtYSkua2IoKTtyZXR1cm4gMD09PWM/TWF0aC5hYnMoZCk6ZH0oKTs7KXtpZihjPD1lJiZlPD1kKXJldHVybiBlO3ZhciBmPS1lO2lmKGM8PWYmJmY8PWQpcmV0dXJuIGY7ZT1mdW5jdGlvbigpe3ZhciBhPWU7dmFyIGI9ZTtpZighWGQoYikpdGhyb3cgRXJyb3IoW3QoXCJBcmd1bWVudCBtdXN0IGJlIGFuIGludGVnZXI6IFwiKSx0KGIpXS5qb2luKFwiXCIpKTtyZXR1cm4gMD09PShiJjEpP2E6KDA+ZT9oZDpoZSkuY2FsbChudWxsLGEpfSgpLzJ9fVxuZnVuY3Rpb24gV28oYSxiKXtyZXR1cm4gcG8oZnVuY3Rpb24oYyl7Yz0xPGM/YzoxO3ZhciBkPTU0PmM/Yzo1NDtyZXR1cm4gYm8oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIGQ9Yy5yb290O2M9TyhkLDAsbnVsbCk7ZD1PKGQsMSxudWxsKTtyZXR1cm4gbm8oVm8oYyxkLGEsYikpfX0oYyxkKSxEby5mKE4oW3NvKDEsZCksU29dLDApKSl9KX1cbnZhciBYbz1mdW5jdGlvbihhKXt2YXIgYj1udWxsIT1hJiYoYS5vJjY0fHxtPT09YS5IYSk/UGUoZ2YsYSk6YSxjPUIuYihiLGxpKSxkPUIuYihiLGhsKSxlPXIoYyk/YzpVbyxmPXIoZCk/ZDpUbztpZighKGU8PWYpKXRocm93IEVycm9yKFwiQXNzZXJ0IGZhaWxlZDogKFxceDNjXFx4M2QgbWluIG1heClcIik7cmV0dXJuIHdvKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBhPD1jJiZjPD1ifX0oZSxmLGEsYixjLGQpLDA+PWUmJjA8PWY/V28oZSxmKTowPmY/Z28oZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGIrYX19KGUsZixhLGIsYyxkKSxXbyhlLWYsMCkpOmdvKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYStifX0oZSxmLGEsYixjLGQpLFdvKDAsZi1lKSkpfShYKSxZbz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksWm89TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCRvPU51bWJlci5NQVhfVkFMVUUsYXA9LSRvLFxuYnA9TnVtYmVyLk5hTixjcD1mdW5jdGlvbiBjcChiKXtyZXR1cm4gMzI+PWI/c28oMCxmdW5jdGlvbigpe3N3aXRjaChqZShiKSl7Y2FzZSAzMjpyZXR1cm4gNDI5NDk2NzI5NTtjYXNlIDMxOnJldHVybiAyMTQ3NDgzNjQ3O2RlZmF1bHQ6cmV0dXJuKDE8PGIpLTF9fSgpKTpnbyhmdW5jdGlvbihiKXt2YXIgYz1PKGIsMCxudWxsKTtiPU8oYiwxLG51bGwpO3JldHVybiA0Mjk0OTY3Mjk2KmMrYn0sRG8uZihOKFtmdW5jdGlvbigpe3ZhciBjPWItMzI7cmV0dXJuIGNwLmE/Y3AuYShjKTpjcC5jYWxsKG51bGwsYyl9KCksY3AuYT9jcC5hKDMyKTpjcC5jYWxsKG51bGwsMzIpXSwwKSkpfSxkcD1nbyhmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPU1hdGgucG93KDIsNTIpOzspe2lmKDE+YSlyZXR1cm4gYipjO3ZhciBkPWEvMixjPWMvMixiPTIqYisoYSYxKTthPWR9fSxwbyhmdW5jdGlvbihhKXtyZXR1cm4gY28oc28oMCw1Mj5hP2E6NTIpLGZ1bmN0aW9uKGEpe3JldHVybiBjcChhLnJvb3QpfSl9KSk7XG5mdW5jdGlvbiBlcChhKXtpZigwPT09YSlyZXR1cm4tMTAyMzt2YXIgYj1NYXRoLmFicyhhKTthPU1hdGguZmxvb3IoTWF0aC5sb2coYikqTWF0aC5MT0cyRSk7Yio9TWF0aC5wb3coMiwtYSk7cmV0dXJuIDE+Yj9hLTE6Mjw9Yj9hKzE6YX1cbmZ1bmN0aW9uIGZwKGEsYil7ZnVuY3Rpb24gYyhhLGIpe3JldHVybiBwbyhmdW5jdGlvbihjKXt2YXIgZD0xPDxrZSgyMDA8Yz8yMDA6Yyw4KTtyZXR1cm4gMD49YSYmMDw9Yj9zbyhmdW5jdGlvbigpe3ZhciBiPS1kO3JldHVybiBhPmI/YTpifSgpLGI8ZD9iOmQpOjA+Yj9zbyhmdW5jdGlvbigpe3ZhciBjPWItZDtyZXR1cm4gYT5jP2E6Y30oKSxiKTpzbyhhLGZ1bmN0aW9uKCl7dmFyIGM9YStkO3JldHVybiBiPGM/YjpjfSgpKX0pfWlmKG51bGw9PWEmJm51bGw9PWIpcmV0dXJuIERvLmYoTihbYygtMTAyMywxMDIzKSx2byhuZXcgVihudWxsLDIsNSxXLFsxLC0xXSxudWxsKSldLDApKTt2YXIgZD1yKGEpP2E6YXAsZT1yKGIpP2I6JG8sZj1mdW5jdGlvbigpe3ZhciBhPWVwKGQpO3JldHVybi0xMDIzPmE/LTEwMjM6YX0oKSxnPWZ1bmN0aW9uKCl7dmFyIGE9ZXAoZSk7cmV0dXJuLTEwMjM+YT8tMTAyMzphfSgpO3JldHVybiAwPD1kP0RvLmYoTihbYyhmLGcpLGhvKDEpXSwwKSk6MD49XG5lP0RvLmYoTihbYyhnLGYpLGhvKC0xKV0sMCkpOmdvKGZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKSxlPU8oYSwxLG51bGwpO3JldHVybiAwPmUmJmM8Ynx8MDxlJiZkPGI/bmV3IFYobnVsbCwyLDUsVyxbYiwtZV0sbnVsbCk6YX19KGQsZSxmLGcpLERvLmYoTihbYygtMTAyMyxnPmY/ZzpmKSx2byhuZXcgVihudWxsLDIsNSxXLFsxLC0xXSxudWxsKSldLDApKSl9XG52YXIgZ3A9ZnVuY3Rpb24gZ3AoYixjKXtpZigwPmMpe3ZhciBkLGU9LWM7ZD1ncC5iP2dwLmIoYixlKTpncC5jYWxsKG51bGwsYixlKTtlPU8oZCwwLG51bGwpO2Q9TyhkLDEsbnVsbCk7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsWy1kLC1lXSxudWxsKX1yZXR1cm4gQy5iKC0xMDIzLGIpP25ldyBWKG51bGwsMiw1LFcsWzAsKDEqTWF0aC5wb3coMiw1MiktMSkqTWF0aC5wb3coMiwtMTA3NCldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsWzEqTWF0aC5wb3coMixiKSwoMSpNYXRoLnBvdygyLDUyKS0xKSpNYXRoLnBvdygyLGItNTEpXSxudWxsKX07XG5mdW5jdGlvbiBocChhLGIpe2lmKCEobnVsbD09YXx8bnVsbD09Ynx8YTw9YikpdGhyb3cgRXJyb3IoXCJBc3NlcnQgZmFpbGVkOiAob3IgKG5pbD8gbG93ZXItYm91bmQpIChuaWw/IHVwcGVyLWJvdW5kKSAoXFx4M2NcXHgzZCBsb3dlci1ib3VuZCB1cHBlci1ib3VuZCkpXCIpO3ZhciBjPXIoYSk/cihiKT9mdW5jdGlvbihjKXtyZXR1cm4gYTw9YyYmYzw9Yn06ZnVuY3Rpb24oYil7cmV0dXJuIGE8PWJ9OnIoYik/ZnVuY3Rpb24oYSl7cmV0dXJuIGE8PWJ9Om51bGwsZD1nbyhmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9TyhkLDAsbnVsbCksZj1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpO2Q9TyhkLDEsbnVsbCkvTWF0aC5wb3coMiw1MikrMTt2YXIgbD1kKk1hdGgucG93KDIsZikqZSxwO3A9KHA9bnVsbD09Yyk/cDpjLmE/Yy5hKGwpOmMuY2FsbChudWxsLGwpO2lmKHIocCkpcmV0dXJuIGw7ZT1ncChmLGUpO2Y9TyhlLDAsbnVsbCk7ZT1PKGUsMSxudWxsKTtmPXIoYSk/XG5mPmE/ZjphOmY7ZT1yKGIpP2U8Yj9lOmI6ZTtkPWYrKGUtZikqKGQtMSk7ZD1kPGU/ZDplO3JldHVybiBkPmY/ZDpmfX0oYyksRG8uZihOKFtmcChhLGIpLGRwXSwwKSkpO3JldHVybiByKGMpP3dvKGMsZCk6ZH1cbmZ1bmN0aW9uIGlwKGEpe3ZhciBiPW51bGwhPWEmJihhLm8mNjR8fG09PT1hLkhhKT9QZShnZixhKTphLGM9Qi5jKGIsQWssITApO2E9Qi5jKGIsSW0sITApO3ZhciBkPUIuYihiLGxpKSxiPUIuYihiLGhsKSxlPW5ldyBWKG51bGwsMSw1LFcsW25ldyBWKG51bGwsMiw1LFcsWzk1LGhwKGQsYildLG51bGwpXSxudWxsKSxlPShudWxsPT1kP251bGw9PWJ8fDA8PWI6bnVsbD09Yj8wPj1kOjA+PWQmJjA8PWIpP0VkLmYoZSxuZXcgVihudWxsLDIsNSxXLFsxLGhvKDApXSxudWxsKSxOKFtuZXcgVihudWxsLDIsNSxXLFsxLGhvKC0wKV0sbnVsbCldLDApKTplLGI9cihyKGMpP251bGw9PWI6Yyk/RWQuYihlLG5ldyBWKG51bGwsMiw1LFcsWzEsaG8oWW8pXSxudWxsKSk6ZSxjPXIocihjKT9udWxsPT1kOmMpP0VkLmIoYixuZXcgVihudWxsLDIsNSxXLFsxLGhvKFpvKV0sbnVsbCkpOmI7YT1yKGEpP0VkLmIoYyxuZXcgVihudWxsLDIsNSxXLFsxLGhvKGJwKV0sbnVsbCkpOmM7cmV0dXJuIEMuYigxLFxuTShhKSk/Q2QoSShhKSk6dW8oYSl9dmFyIGpwPWlwKFgpLGtwPWdvKGllLHNvKDAsMjU1KSksbHA9Z28oaWUsc28oMzIsMTI2KSksbXA9Z28oaWUsdG8obmV3IFYobnVsbCwzLDUsVyxbc28oNDgsNTcpLHNvKDY1LDkwKSxzbyg5NywxMjIpXSxudWxsKSkpLG5wPWdvKGllLHRvKG5ldyBWKG51bGwsMiw1LFcsW3NvKDY1LDkwKSxzbyg5NywxMjIpXSxudWxsKSkpLG9wPXZvKG5ldyBWKG51bGwsNiw1LFcsXCIqKyEtXz9cIi5zcGxpdChcIlwiKSxudWxsKSkscHA9dW8obmV3IFYobnVsbCwyLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbMixtcF0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbMSxvcF0sbnVsbCldLG51bGwpKSxxcD11byhuZXcgVihudWxsLDIsNSxXLFtuZXcgVihudWxsLDIsNSxXLFsyLG5wXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFsxLG9wXSxudWxsKV0sbnVsbCkpLHJwPWdvKFVuLEpvKGtwKSksc3A9Z28oVW4sSm8obHApKSx6bz1nbyhVbixKbyhtcCkpO1xuZnVuY3Rpb24gdHAoYSxiKXt2YXIgYztjPXIoYik/KGM9XCIrXCI9PT1hfHxcIi1cIj09PWEpPyEvW14wLTldLy50ZXN0KGIpOmM6YjtyZXR1cm4gV2QoYyl9XG52YXIgdXA9Z28oZnVuY3Rpb24oYSl7dmFyIGI9TyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTtyZXR1cm4gVW4uYSh3ZChiLGEpKX0sd28oZnVuY3Rpb24oYSl7dmFyIGI9TyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTthPU8oYSwwLG51bGwpO3JldHVybiB0Yih0cChiLGEpKX0sRG8uZihOKFtxcCxKbyhwcCldLDApKSkpLHZwPWdvKGZ1bmN0aW9uKGEpe3JldHVybiBFKGEpP1VuLmIoXCIuXCIsYSk6bnVsbH0sSm8odXApKSx3cD1nbyhmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKTthPU8oYSwxLG51bGwpO3JldHVybiBVbi5hKHdkKGIsYSkpfSxEby5mKE4oW3BwLEpvKHBwKV0sMCkpKSx4cD1nbyhmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKTthPU8oYSwxLG51bGwpO3JldHVybiBVbi5hKHdkKGIsYSkpfSxEby5mKE4oW3FwLEpvKHBwKV0sMCkpKSx5cD1nbyhmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKTthPU8oYSwxLG51bGwpO3JldHVybiB6ZS5hKFVuLmIoXCI6XCIsXG53ZChiLGEpKSl9LERvLmYoTihbeHAsSm8od3ApXSwwKSkpLHpwPWdvKGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpLGM9TyhhLDEsbnVsbCk7YT1PKGEsMixudWxsKTtyZXR1cm4gemUuYihiLFVuLmEod2QoYyxhKSkpfSxEby5mKE4oW3ZwLHFwLEpvKHBwKV0sMCkpKSxBcD11byhuZXcgVihudWxsLDMsNSxXLFtuZXcgVihudWxsLDIsNSxXLFsxMCxucF0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbNSxvcF0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbMSxobyhcIi5cIildLG51bGwpXSxudWxsKSksQnA9dW8obmV3IFYobnVsbCwzLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbMTAsbXBdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzUsb3BdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzEsaG8oXCIuXCIpXSxudWxsKV0sbnVsbCkpLENwPXVvKG5ldyBWKG51bGwsMiw1LFcsW25ldyBWKG51bGwsMiw1LFcsWzEwMCxnbyhmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKTthPU8oYSwxLG51bGwpO1xucmV0dXJuIFdjLmEoVW4uYSh3ZChiLGEpKSl9LHdvKGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpO2E9TyhhLDEsbnVsbCk7YT1PKGEsMCxudWxsKTtyZXR1cm4gdGIodHAoYixhKSl9LERvLmYoTihbQXAsSm8oQnApXSwwKSkpKV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbMSxobyh2bCldLG51bGwpXSxudWxsKSksRHA9dW8obmV3IFYobnVsbCwyLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbMTAwLGdvKGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpLGM9TyhhLDEsbnVsbCk7YT1PKGEsMixudWxsKTtyZXR1cm4gV2MuYihiLFVuLmEod2QoYyxhKSkpfSx3byhmdW5jdGlvbihhKXtPKGEsMCxudWxsKTt2YXIgYj1PKGEsMSxudWxsKTthPU8oYSwyLG51bGwpO2E9TyhhLDAsbnVsbCk7cmV0dXJuIHRiKHRwKGIsYSkpfSxEby5mKE4oW3ZwLEFwLEpvKEJwKV0sMCkpKSldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzEsaG8odmwpXSxudWxsKV0sbnVsbCkpLEVwPWdvKGZ1bmN0aW9uKGEpe3ZhciBiPVxuTyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTtyZXR1cm4gYi9hfSxEby5mKE4oW0VvLHdvKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYixjKXtyZXR1cm4gdGIoYS5iP2EuYihiLGMpOmEuY2FsbChudWxsLGIsYykpfWZ1bmN0aW9uIGMoYil7cmV0dXJuIHRiKGEuYT9hLmEoYik6YS5jYWxsKG51bGwsYikpfWZ1bmN0aW9uIGQoKXtyZXR1cm4gdGIoYS5oP2EuaCgpOmEuY2FsbChudWxsKSl9dmFyIGU9bnVsbCxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGIsZCl7dmFyIGU9bnVsbDtpZigyPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgZT0wLGY9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0yKTtlPGYubGVuZ3RoOylmW2VdPWFyZ3VtZW50c1tlKzJdLCsrZTtlPW5ldyBGKGYsMCl9cmV0dXJuIGMuY2FsbCh0aGlzLGEsYixlKX1mdW5jdGlvbiBjKGIsYyxkKXtyZXR1cm4gdGIoUmUoYSxiLGMsZCkpfWIuQj0yO2IuQT1mdW5jdGlvbihhKXt2YXIgYj1JKGEpO1xuYT1KKGEpO3ZhciBkPUkoYSk7YT1aYyhhKTtyZXR1cm4gYyhiLGQsYSl9O2IuZj1jO3JldHVybiBifSgpLGU9ZnVuY3Rpb24oYSxlLGwpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGQuY2FsbCh0aGlzKTtjYXNlIDE6cmV0dXJuIGMuY2FsbCh0aGlzLGEpO2Nhc2UgMjpyZXR1cm4gYi5jYWxsKHRoaXMsYSxlKTtkZWZhdWx0OnZhciBnPW51bGw7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGc9MCxrPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMik7ZzxrLmxlbmd0aDspa1tnXT1hcmd1bWVudHNbZysyXSwrK2c7Zz1uZXcgRihrLDApfXJldHVybiBmLmYoYSxlLGcpfXRocm93IEVycm9yKFwiSW52YWxpZCBhcml0eTogXCIrYXJndW1lbnRzLmxlbmd0aCk7fTtlLkI9MjtlLkE9Zi5BO2UuaD1kO2UuYT1jO2UuYj1iO2UuZj1mLmY7cmV0dXJuIGV9KCl9KGZ1bmN0aW9uKGEpe3JldHVybiAwPT09YX0pLEVvKV0sMCkpKSxGcD1BbyhnbyhmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3JldHVybihhLmE/XG5hLmEoYik6YS5jYWxsKG51bGwsYikpLnRvU3RyaW5nKDE2KX12YXIgYz0oKChhLmE/YS5hKDE1KTphLmNhbGwobnVsbCwxNSkpJjMpKzgpLnRvU3RyaW5nKDE2KTtyZXR1cm4gbmV3IFdoKFt0KGIoMCkpLHQoYigxKSksdChiKDIpKSx0KGIoMykpLHQoYig0KSksdChiKDUpKSx0KGIoNikpLHQoYig3KSksdChcIi1cIiksdChiKDgpKSx0KGIoOSkpLHQoYigxMCkpLHQoYigxMSkpLHQoXCItXCIpLHQoXCI0XCIpLHQoYigxMikpLHQoYigxMykpLHQoYigxNCkpLHQoXCItXCIpLHQoYyksdChiKDE2KSksdChiKDE3KSksdChiKDE4KSksdChcIi1cIiksdChiKDE5KSksdChiKDIwKSksdChiKDIxKSksdChiKDIyKSksdChiKDIzKSksdChiKDI0KSksdChiKDI1KSksdChiKDI2KSksdChiKDI3KSksdChiKDI4KSksdChiKDI5KSksdChiKDMwKSldLmpvaW4oXCJcIiksbnVsbCl9LEtvKHNvKDAsMTUpLDMxKSkpLEdwPXRvKG5ldyBWKG51bGwsMTIsNSxXLFtFbyxYbyxqcCxrcCxycCxFcCxDbyx5cCx6cCxDcCxEcCxcbkZwXSxudWxsKSksSHA9dG8obmV3IFYobnVsbCwxMiw1LFcsW0VvLFhvLGpwLGxwLHNwLEVwLENvLHlwLHpwLENwLERwLEZwXSxudWxsKSk7ZnVuY3Rpb24gSXAoYSl7cmV0dXJuIHRvKG5ldyBWKG51bGwsMyw1LFcsW0pvKGEpLE1vKGEpLFJvKGEsYSxYKV0sbnVsbCkpfXZhciBKcD1mdW5jdGlvbiBKcChiLGMsZCxlLGYpezA9PT1mP2U9cW8oZCxjKTooLS1mLGM9SnAuTD9KcC5MKGIsYyxkLGUsZik6SnAuY2FsbChudWxsLGIsYyxkLGUsZiksYj1iLmE/Yi5hKGMpOmIuY2FsbChudWxsLGMpLGU9cW8oZSxiKSk7cmV0dXJuIGV9O1xuZnVuY3Rpb24gS3AoYSxiKXtpZighcihZbihiKSkpdGhyb3cgRXJyb3IoW3QoXCJBc3NlcnQgZmFpbGVkOiBcIiksdChcIlNlY29uZCBhcmcgdG8gcmVjdXJzaXZlLWdlbiBtdXN0IGJlIGEgZ2VuZXJhdG9yXCIpLHQoXCJcXG5cIiksdChcIihnZW5lcmF0b3I/IHNjYWxhci1nZW4pXCIpXS5qb2luKFwiXCIpKTtyZXR1cm4gcG8oZnVuY3Rpb24oYyl7cmV0dXJuIGpvKHNvKDEsNSksZnVuY3Rpb24oZCl7cmV0dXJuIEpwKGEsYixjLE1hdGgucG93KGMsMS9kKSxkKX0pfSl9S3AoSXAsR3ApO0twKElwLEhwKTt2YXIgTHAsTXAsTnAsT3AsUHAsUXAsUnA9ZnVuY3Rpb24gUnAoYil7Zm9yKHZhciBjPVtdLGQ9YXJndW1lbnRzLmxlbmd0aCxlPTA7OylpZihlPGQpYy5wdXNoKGFyZ3VtZW50c1tlXSksZSs9MTtlbHNlIGJyZWFrO3JldHVybiBScC5mKDA8Yy5sZW5ndGg/bmV3IEYoYy5zbGljZSgwKSwwLG51bGwpOm51bGwpfTtScC5mPWZ1bmN0aW9uKGEpe3JldHVybiB4KG4sUGUoQmgsYSkpfTtScC5CPTA7UnAuQT1mdW5jdGlvbihhKXtyZXR1cm4gUnAuZihFKGEpKX07dmFyIFNwPWZ1bmN0aW9uIFNwKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztyZXR1cm4gU3AuZigwPGMubGVuZ3RoP25ldyBGKGMuc2xpY2UoMCksMCxudWxsKTpudWxsKX07U3AuZj1mdW5jdGlvbihhKXtyZXR1cm4geChuLFBlKEFoLGEpKX07U3AuQj0wO1NwLkE9ZnVuY3Rpb24oYSl7cmV0dXJuIFNwLmYoRShhKSl9O1xuZnVuY3Rpb24gVHAoYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO1BlKFNwLDA8Yi5sZW5ndGg/bmV3IEYoYi5zbGljZSgwKSwwLG51bGwpOm51bGwpO3gobixcIlxcblwiKX1mdW5jdGlvbiBVcChhKXtpZihcIm51bWJlclwiPT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYxPT09YS5sZW5ndGgpcmV0dXJuIGEuY2hhckNvZGVBdCgwKTt0aHJvdyBFcnJvcihcIkFyZ3VtZW50IHRvIGNoYXIgbXVzdCBiZSBhIGNoYXJhY3RlciBvciBudW1iZXJcIik7fVxuZnVuY3Rpb24gVnAoYSxiLGMpe3ZhciBkPWM7Zm9yKGM9RmQ7Oyl7aWYoTGQoZCkpcmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW2MsYl0sbnVsbCk7dmFyIGU9SShkKSxkPUooZCksZT1QZShhLG5ldyBWKG51bGwsMiw1LFcsW2UsYl0sbnVsbCkpO2I9TyhlLDAsbnVsbCk7ZT1PKGUsMSxudWxsKTtjPUVkLmIoYyxiKTtiPWV9fWZ1bmN0aW9uIFdwKGEsYil7Zm9yKHZhciBjPWIsZD1GZDs7KXt2YXIgZT1QZShhLG5ldyBWKG51bGwsMSw1LFcsW2NdLG51bGwpKSxjPU8oZSwwLG51bGwpLGU9TyhlLDEsbnVsbCk7aWYodGIoYykpcmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW2QsZV0sbnVsbCk7ZD1FZC5iKGQsYyk7Yz1lfX1cbmZ1bmN0aW9uIFhwKGEpe3JldHVybiBuZXcgVihudWxsLDIsNSxXLFt5Zi5iKFgsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gYyhhKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXtmb3IoOzspe3ZhciBkPUUoYSk7aWYoZCl7aWYoU2QoZCkpe3ZhciBmPUNjKGQpLGc9TShmKSxrPUZlKGcpO2E6Zm9yKHZhciBsPTA7OylpZihsPGcpe3ZhciBwPUpiLmIoZixsKSx1PU8ocCwwLG51bGwpLHA9TyhwLDEsbnVsbCksdj1PKHAsMCxudWxsKTtPKHAsMSxudWxsKTtJZShrLG5ldyBWKG51bGwsMiw1LFcsW3Usdl0sbnVsbCkpO2wrPTF9ZWxzZXtmPSEwO2JyZWFrIGF9cmV0dXJuIGY/SGUoay5pYSgpLGMoRGMoZCkpKTpIZShrLmlhKCksbnVsbCl9Zj1JKGQpO2s9TyhmLDAsbnVsbCk7Zj1PKGYsMSxudWxsKTtnPU8oZiwwLG51bGwpO08oZiwxLG51bGwpO3JldHVybiB3ZChuZXcgVihudWxsLDIsNSxXLFtrLGddLG51bGwpLGMoWmMoZCkpKX1yZXR1cm4gbnVsbH19LG51bGwsbnVsbCl9KGEpfSgpKSxcbnlmLmIoWCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBjKGEpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe2Zvcig7Oyl7dmFyIGQ9RShhKTtpZihkKXtpZihTZChkKSl7dmFyIGY9Q2MoZCksZz1NKGYpLGs9RmUoZyk7YTpmb3IodmFyIGw9MDs7KWlmKGw8Zyl7dmFyIHA9SmIuYihmLGwpLHU9TyhwLDAsbnVsbCkscD1PKHAsMSxudWxsKTtPKHAsMCxudWxsKTtwPU8ocCwxLG51bGwpO0llKGssbmV3IFYobnVsbCwyLDUsVyxbdSxwXSxudWxsKSk7bCs9MX1lbHNle2Y9ITA7YnJlYWsgYX1yZXR1cm4gZj9IZShrLmlhKCksYyhEYyhkKSkpOkhlKGsuaWEoKSxudWxsKX1mPUkoZCk7az1PKGYsMCxudWxsKTtmPU8oZiwxLG51bGwpO08oZiwwLG51bGwpO2Y9TyhmLDEsbnVsbCk7cmV0dXJuIHdkKG5ldyBWKG51bGwsMiw1LFcsW2ssZl0sbnVsbCksYyhaYyhkKSkpfXJldHVybiBudWxsfX0sbnVsbCxudWxsKX0oYSl9KCkpXSxudWxsKX1cbmZ1bmN0aW9uIFlwKGEsYil7cmV0dXJuIHlmLmIoWCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBkKGEpe3JldHVybiBuZXcgQmUobnVsbCxmdW5jdGlvbigpe2Zvcig7Oyl7dmFyIGU9RShhKTtpZihlKXtpZihTZChlKSl7dmFyIGc9Q2MoZSksaz1NKGcpLGw9RmUoayk7YTpmb3IodmFyIHA9MDs7KWlmKHA8ayl7dmFyIHU9SmIuYihnLHApLHY9Tyh1LDAsbnVsbCksdT1PKHUsMSxudWxsKTtJZShsLG5ldyBWKG51bGwsMiw1LFcsW3YsbmV3IFYobnVsbCwyLDUsVyxbdSxiXSxudWxsKV0sbnVsbCkpO3ArPTF9ZWxzZXtnPSEwO2JyZWFrIGF9cmV0dXJuIGc/SGUobC5pYSgpLGQoRGMoZSkpKTpIZShsLmlhKCksbnVsbCl9Zz1JKGUpO2w9TyhnLDAsbnVsbCk7Zz1PKGcsMSxudWxsKTtyZXR1cm4gd2QobmV3IFYobnVsbCwyLDUsVyxbbCxuZXcgVihudWxsLDIsNSxXLFtnLGJdLG51bGwpXSxudWxsKSxkKFpjKGUpKSl9cmV0dXJuIG51bGx9fSxudWxsLG51bGwpfShhKX0oKSl9XG52YXIgWnA9ZnVuY3Rpb24gWnAoYil7aWYobnVsbCE9YiYmbnVsbCE9Yi5QYylyZXR1cm4gYi5QYyhiKTt2YXIgYz1acFtiYShudWxsPT1iP251bGw6YildO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7Yz1acC5fO2lmKG51bGwhPWMpcmV0dXJuIGMuYT9jLmEoYik6Yy5jYWxsKG51bGwsYik7dGhyb3cgeGIoXCJJUHJldHR5Rmx1c2guLXBwZmx1c2hcIixiKTt9O2Z1bmN0aW9uICRwKGEsYil7dmFyIGM7Yz1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO2M9TC5hP0wuYShjKTpMLmNhbGwobnVsbCxjKTtyZXR1cm4gYi5hP2IuYShjKTpiLmNhbGwobnVsbCxjKX1mdW5jdGlvbiBhcShhLGIsYyl7a2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsYixjKX1mdW5jdGlvbiBicShhLGIpe0MuYihiLFwiXFxuXCIpPyhhcShhLGRqLDApLGFxKGEsWGssJHAoYSxYaykrMSkpOmFxKGEsZGosJHAoYSxkaikrMSk7cmV0dXJuIHgoJHAoYSxvbSksYil9XG5mdW5jdGlvbiBjcShhLGIpe3ZhciBjPWZ1bmN0aW9uKCl7dmFyIGM9bmV3IHEobnVsbCw0LFtobCxiLGRqLDAsWGssMCxvbSxhXSxudWxsKTtyZXR1cm4gWT9ZKGMpOmVmLmNhbGwobnVsbCxjKX0oKTtcInVuZGVmaW5lZFwiPT09dHlwZW9mIExwJiYoTHA9ZnVuY3Rpb24oYSxiLGMsZyl7dGhpcy5kYT1hO3RoaXMuRGM9Yjt0aGlzLkpiPWM7dGhpcy5zZD1nO3RoaXMubz0xMDc0MTY3ODA4O3RoaXMuRz0wfSxMcC5wcm90b3R5cGUuTz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgTHAodGhpcy5kYSx0aGlzLkRjLHRoaXMuSmIsYil9fShjKSxMcC5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLnNkfX0oYyksTHAucHJvdG90eXBlLlhiPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSmJ9fShjKSxMcC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gc2ModGhpcy5kYSl9fShjKSxcbkxwLnByb3RvdHlwZS55Yj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXt2YXIgZD13YihjKTtpZihyKEMuYj9DLmIoU3RyaW5nLGQpOkMuY2FsbChudWxsLFN0cmluZyxkKSkpe3ZhciBlPWMubGFzdEluZGV4T2YoXCJcXG5cIik7MD5lP2FxKHRoaXMsZGosJHAodGhpcyxkaikrTShjKSk6KGFxKHRoaXMsZGosTShjKS1lLTEpLGFxKHRoaXMsWGssJHAodGhpcyxYaykrTSh4ZihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gQy5iKGEsXCJcXG5cIil9fShjLGUsQyxkLHRoaXMsYSksYykpKSk7cmV0dXJuIHgoJHAodGhpcyxvbSksYyl9aWYocihDLmI/Qy5iKE51bWJlcixkKTpDLmNhbGwobnVsbCxOdW1iZXIsZCkpKXJldHVybiBicSh0aGlzLGMpO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksdChkKV0uam9pbihcIlwiKSk7fX0oYyksTHAuVGI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFYobnVsbCw0LDUsVyxbQW0sXG5JaSxGayx3al0sbnVsbCl9fShjKSxMcC56Yj0hMCxMcC5uYj1cImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxMzAxMVwiLExwLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIHgoYixcImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxMzAxMVwiKX19KGMpKTtyZXR1cm4gbmV3IExwKGEsYixjLFgpfWZ1bmN0aW9uIGRxKGEsYixjLGQsZSxmLGcsayxsLHAsdSx2LHcpe3RoaXMucGFyZW50PWE7dGhpcy5XYT1iO3RoaXMuWGE9Yzt0aGlzLlNhPWQ7dGhpcy5SYT1lO3RoaXMuVGE9Zjt0aGlzLnByZWZpeD1nO3RoaXMuVmE9azt0aGlzLllhPWw7dGhpcy5VYT1wO3RoaXMudz11O3RoaXMuaj12O3RoaXMudj13O3RoaXMubz0yMjI5NjY3NTk0O3RoaXMuRz04MTkyfWg9ZHEucHJvdG90eXBlO2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07XG5oLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJzdWZmaXhcIjpyZXR1cm4gdGhpcy5ZYTtjYXNlIFwiaW5kZW50XCI6cmV0dXJuIHRoaXMuU2E7Y2FzZSBcInBhcmVudFwiOnJldHVybiB0aGlzLnBhcmVudDtjYXNlIFwic2VjdGlvblwiOnJldHVybiB0aGlzLldhO2Nhc2UgXCJkb25lLW5sXCI6cmV0dXJuIHRoaXMuUmE7Y2FzZSBcInN0YXJ0LWNvbFwiOnJldHVybiB0aGlzLlhhO2Nhc2UgXCJwcmVmaXhcIjpyZXR1cm4gdGhpcy5wcmVmaXg7Y2FzZSBcInBlci1saW5lLXByZWZpeFwiOnJldHVybiB0aGlzLlZhO2Nhc2UgXCJsb2dpY2FsLWJsb2NrLWNhbGxiYWNrXCI6cmV0dXJuIHRoaXMuVWE7Y2FzZSBcImludHJhLWJsb2NrLW5sXCI6cmV0dXJuIHRoaXMuVGE7ZGVmYXVsdDpyZXR1cm4gQi5jKHRoaXMuaixiLGMpfX07XG5oLlU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBvaChiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBvaChiLHZoLFwiXCIsXCIgXCIsXCJcIixjLGEpfX0odGhpcyksXCIjY2xqcy5wcHJpbnQubG9naWNhbC1ibG9ja3tcIixcIiwgXCIsXCJ9XCIsYyxNZS5iKG5ldyBWKG51bGwsMTAsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtPaSx0aGlzLnBhcmVudF0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbeWosdGhpcy5XYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbbWssdGhpcy5YYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbdWksdGhpcy5TYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbWWosdGhpcy5SYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbd20sdGhpcy5UYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbdWssdGhpcy5wcmVmaXhdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW3RsLHRoaXMuVmFdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2ppLHRoaXMuWWFdLG51bGwpLG5ldyBWKG51bGwsXG4yLDUsVyxbbm0sdGhpcy5VYV0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsMTAsbmV3IFYobnVsbCwxMCw1LFcsW09pLHlqLG1rLHVpLFlqLHdtLHVrLHRsLGppLG5tXSxudWxsKSxyKHRoaXMuaik/S2ModGhpcy5qKTpWZSgpKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDEwK00odGhpcy5qKX07aC5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52O3JldHVybiBudWxsIT1hP2E6dGhpcy52PWE9cWUodGhpcyl9O2guRj1mdW5jdGlvbihhLGIpe3ZhciBjO2M9cihiKT8oYz10aGlzLmNvbnN0cnVjdG9yPT09Yi5jb25zdHJ1Y3Rvcik/a2codGhpcyxiKTpjOmI7cmV0dXJuIHIoYyk/ITA6ITF9O1xuaC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDEwLFtqaSxudWxsLHVpLG51bGwsT2ksbnVsbCx5aixudWxsLFlqLG51bGwsbWssbnVsbCx1ayxudWxsLHRsLG51bGwsbm0sbnVsbCx3bSxudWxsXSxudWxsKSxudWxsKSxiKT9JZC5iKHlkKHlmLmIoWCx0aGlzKSx0aGlzLncpLGIpOm5ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsdGhpcy53LFVlKElkLmIodGhpcy5qLGIpKSxudWxsKX07XG5oLlphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcihULmI/VC5iKE9pLGIpOlQuY2FsbChudWxsLE9pLGIpKT9uZXcgZHEoYyx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoeWosYik6VC5jYWxsKG51bGwseWosYikpP25ldyBkcSh0aGlzLnBhcmVudCxjLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIobWssYik6VC5jYWxsKG51bGwsbWssYikpP25ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLGMsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIodWksYik6VC5jYWxsKG51bGwsdWksYikpP25ldyBkcSh0aGlzLnBhcmVudCxcbnRoaXMuV2EsdGhpcy5YYSxjLHRoaXMuUmEsdGhpcy5UYSx0aGlzLnByZWZpeCx0aGlzLlZhLHRoaXMuWWEsdGhpcy5VYSx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihZaixiKTpULmNhbGwobnVsbCxZaixiKSk/bmV3IGRxKHRoaXMucGFyZW50LHRoaXMuV2EsdGhpcy5YYSx0aGlzLlNhLGMsdGhpcy5UYSx0aGlzLnByZWZpeCx0aGlzLlZhLHRoaXMuWWEsdGhpcy5VYSx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYih3bSxiKTpULmNhbGwobnVsbCx3bSxiKSk/bmV3IGRxKHRoaXMucGFyZW50LHRoaXMuV2EsdGhpcy5YYSx0aGlzLlNhLHRoaXMuUmEsYyx0aGlzLnByZWZpeCx0aGlzLlZhLHRoaXMuWWEsdGhpcy5VYSx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYih1ayxiKTpULmNhbGwobnVsbCx1ayxiKSk/bmV3IGRxKHRoaXMucGFyZW50LHRoaXMuV2EsdGhpcy5YYSx0aGlzLlNhLHRoaXMuUmEsdGhpcy5UYSxjLHRoaXMuVmEsdGhpcy5ZYSx0aGlzLlVhLHRoaXMudyxcbnRoaXMuaixudWxsKTpyKFQuYj9ULmIodGwsYik6VC5jYWxsKG51bGwsdGwsYikpP25ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsYyx0aGlzLllhLHRoaXMuVWEsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoamksYik6VC5jYWxsKG51bGwsamksYikpP25ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSxjLHRoaXMuVWEsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIobm0sYik6VC5jYWxsKG51bGwsbm0sYikpP25ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLGMsdGhpcy53LHRoaXMuaixudWxsKTpuZXcgZHEodGhpcy5wYXJlbnQsdGhpcy5XYSx0aGlzLlhhLHRoaXMuU2EsdGhpcy5SYSx0aGlzLlRhLFxudGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsdGhpcy53LFEuYyh0aGlzLmosYixjKSxudWxsKX07aC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIEUoTWUuYihuZXcgVihudWxsLDEwLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbT2ksdGhpcy5wYXJlbnRdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW3lqLHRoaXMuV2FdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW21rLHRoaXMuWGFdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW3VpLHRoaXMuU2FdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1lqLHRoaXMuUmFdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW3dtLHRoaXMuVGFdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW3VrLHRoaXMucHJlZml4XSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFt0bCx0aGlzLlZhXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtqaSx0aGlzLllhXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtubSx0aGlzLlVhXSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O1xuaC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkcSh0aGlzLnBhcmVudCx0aGlzLldhLHRoaXMuWGEsdGhpcy5TYSx0aGlzLlJhLHRoaXMuVGEsdGhpcy5wcmVmaXgsdGhpcy5WYSx0aGlzLllhLHRoaXMuVWEsYix0aGlzLmosdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJkKGIpP1NiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk6YWUoSGIsdGhpcyxiKX07ZnVuY3Rpb24gZXEoYSxiKXtmb3IodmFyIGM9T2kuYShiKTs7KXtpZihudWxsPT1jKXJldHVybiExO2lmKGE9PT1jKXJldHVybiEwO2M9T2kuYShjKX19ZnVuY3Rpb24gZnEoYSl7cmV0dXJuKGE9RShhKSk/SGouYShEZChhKSktVW0uYShJKGEpKTowfWZ1bmN0aW9uIGdxKGEsYixjLGQsZSxmLGcsayl7dGhpcy5KPWE7dGhpcy5kYXRhPWI7dGhpcy5wYj1jO3RoaXMuST1kO3RoaXMuSD1lO3RoaXMudz1mO3RoaXMuaj1nO3RoaXMudj1rO3RoaXMubz0yMjI5NjY3NTk0O3RoaXMuRz04MTkyfWg9Z3EucHJvdG90eXBlO1xuaC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJ0eXBlLXRhZ1wiOnJldHVybiB0aGlzLko7Y2FzZSBcImRhdGFcIjpyZXR1cm4gdGhpcy5kYXRhO2Nhc2UgXCJ0cmFpbGluZy13aGl0ZS1zcGFjZVwiOnJldHVybiB0aGlzLnBiO2Nhc2UgXCJzdGFydC1wb3NcIjpyZXR1cm4gdGhpcy5JO2Nhc2UgXCJlbmQtcG9zXCI6cmV0dXJuIHRoaXMuSDtkZWZhdWx0OnJldHVybiBCLmModGhpcy5qLGIsYyl9fTtcbmguVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIG9oKGIsdmgsXCJcIixcIiBcIixcIlwiLGMsYSl9fSh0aGlzKSxcIiNjbGpzLnBwcmludC5idWZmZXItYmxvYntcIixcIiwgXCIsXCJ9XCIsYyxNZS5iKG5ldyBWKG51bGwsNSw1LFcsW25ldyBWKG51bGwsMiw1LFcsW0xtLHRoaXMuSl0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbYm4sdGhpcy5kYXRhXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtpbCx0aGlzLnBiXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtVbSx0aGlzLkldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0hqLHRoaXMuSF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsNSxuZXcgVihudWxsLDUsNSxXLFtMbSxibixpbCxVbSxIal0sbnVsbCkscih0aGlzLmopP0tjKHRoaXMuaik6VmUoKSl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnd9O1xuaC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDUrTSh0aGlzLmopfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDUsW0hqLG51bGwsaWwsbnVsbCxMbSxudWxsLFVtLG51bGwsYm4sbnVsbF0sbnVsbCksbnVsbCksYik/SWQuYih5ZCh5Zi5iKFgsdGhpcyksdGhpcy53KSxiKTpuZXcgZ3EodGhpcy5KLHRoaXMuZGF0YSx0aGlzLnBiLHRoaXMuSSx0aGlzLkgsdGhpcy53LFVlKElkLmIodGhpcy5qLGIpKSxudWxsKX07XG5oLlphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcihULmI/VC5iKExtLGIpOlQuY2FsbChudWxsLExtLGIpKT9uZXcgZ3EoYyx0aGlzLmRhdGEsdGhpcy5wYix0aGlzLkksdGhpcy5ILHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKGJuLGIpOlQuY2FsbChudWxsLGJuLGIpKT9uZXcgZ3EodGhpcy5KLGMsdGhpcy5wYix0aGlzLkksdGhpcy5ILHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKGlsLGIpOlQuY2FsbChudWxsLGlsLGIpKT9uZXcgZ3EodGhpcy5KLHRoaXMuZGF0YSxjLHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoVW0sYik6VC5jYWxsKG51bGwsVW0sYikpP25ldyBncSh0aGlzLkosdGhpcy5kYXRhLHRoaXMucGIsYyx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoSGosYik6VC5jYWxsKG51bGwsSGosYikpP25ldyBncSh0aGlzLkosdGhpcy5kYXRhLHRoaXMucGIsdGhpcy5JLGMsdGhpcy53LHRoaXMuaixudWxsKTpcbm5ldyBncSh0aGlzLkosdGhpcy5kYXRhLHRoaXMucGIsdGhpcy5JLHRoaXMuSCx0aGlzLncsUS5jKHRoaXMuaixiLGMpLG51bGwpfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gRShNZS5iKG5ldyBWKG51bGwsNSw1LFcsW25ldyBWKG51bGwsMiw1LFcsW0xtLHRoaXMuSl0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbYm4sdGhpcy5kYXRhXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtpbCx0aGlzLnBiXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtVbSx0aGlzLkldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0hqLHRoaXMuSF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGdxKHRoaXMuSix0aGlzLmRhdGEsdGhpcy5wYix0aGlzLkksdGhpcy5ILGIsdGhpcy5qLHRoaXMudil9O2guWD1mdW5jdGlvbihhLGIpe3JldHVybiBSZChiKT9TYih0aGlzLEpiLmIoYiwwKSxKYi5iKGIsMSkpOmFlKEhiLHRoaXMsYil9O1xuZnVuY3Rpb24gaHEoYSxiLGMsZCl7cmV0dXJuIG5ldyBncShUayxhLGIsYyxkLG51bGwsbnVsbCxudWxsKX1mdW5jdGlvbiBpcShhLGIsYyxkLGUsZixnLGspe3RoaXMuSj1hO3RoaXMudHlwZT1iO3RoaXMuTT1jO3RoaXMuST1kO3RoaXMuSD1lO3RoaXMudz1mO3RoaXMuaj1nO3RoaXMudj1rO3RoaXMubz0yMjI5NjY3NTk0O3RoaXMuRz04MTkyfWg9aXEucHJvdG90eXBlO2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07aC5UPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYiBpbnN0YW5jZW9mIFM/Yi5MYTpudWxsKXtjYXNlIFwidHlwZS10YWdcIjpyZXR1cm4gdGhpcy5KO2Nhc2UgXCJ0eXBlXCI6cmV0dXJuIHRoaXMudHlwZTtjYXNlIFwibG9naWNhbC1ibG9ja1wiOnJldHVybiB0aGlzLk07Y2FzZSBcInN0YXJ0LXBvc1wiOnJldHVybiB0aGlzLkk7Y2FzZSBcImVuZC1wb3NcIjpyZXR1cm4gdGhpcy5IO2RlZmF1bHQ6cmV0dXJuIEIuYyh0aGlzLmosYixjKX19O1xuaC5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gb2goYix2aCxcIlwiLFwiIFwiLFwiXCIsYyxhKX19KHRoaXMpLFwiI2NsanMucHByaW50Lm5sLXR7XCIsXCIsIFwiLFwifVwiLGMsTWUuYihuZXcgVihudWxsLDUsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtMbSx0aGlzLkpdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1VqLHRoaXMudHlwZV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbRG0sdGhpcy5NXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtVbSx0aGlzLkldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0hqLHRoaXMuSF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsNSxuZXcgVihudWxsLDUsNSxXLFtMbSxVaixEbSxVbSxIal0sbnVsbCkscih0aGlzLmopP0tjKHRoaXMuaik6VmUoKSl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnd9O1xuaC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDUrTSh0aGlzLmopfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDUsW0hqLG51bGwsVWosbnVsbCxEbSxudWxsLExtLG51bGwsVW0sbnVsbF0sbnVsbCksbnVsbCksYik/SWQuYih5ZCh5Zi5iKFgsdGhpcyksdGhpcy53KSxiKTpuZXcgaXEodGhpcy5KLHRoaXMudHlwZSx0aGlzLk0sdGhpcy5JLHRoaXMuSCx0aGlzLncsVWUoSWQuYih0aGlzLmosYikpLG51bGwpfTtcbmguWmE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByKFQuYj9ULmIoTG0sYik6VC5jYWxsKG51bGwsTG0sYikpP25ldyBpcShjLHRoaXMudHlwZSx0aGlzLk0sdGhpcy5JLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihVaixiKTpULmNhbGwobnVsbCxVaixiKSk/bmV3IGlxKHRoaXMuSixjLHRoaXMuTSx0aGlzLkksdGhpcy5ILHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKERtLGIpOlQuY2FsbChudWxsLERtLGIpKT9uZXcgaXEodGhpcy5KLHRoaXMudHlwZSxjLHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoVW0sYik6VC5jYWxsKG51bGwsVW0sYikpP25ldyBpcSh0aGlzLkosdGhpcy50eXBlLHRoaXMuTSxjLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihIaixiKTpULmNhbGwobnVsbCxIaixiKSk/bmV3IGlxKHRoaXMuSix0aGlzLnR5cGUsdGhpcy5NLHRoaXMuSSxjLHRoaXMudyx0aGlzLmosbnVsbCk6bmV3IGlxKHRoaXMuSixcbnRoaXMudHlwZSx0aGlzLk0sdGhpcy5JLHRoaXMuSCx0aGlzLncsUS5jKHRoaXMuaixiLGMpLG51bGwpfTtoLlk9ZnVuY3Rpb24oKXtyZXR1cm4gRShNZS5iKG5ldyBWKG51bGwsNSw1LFcsW25ldyBWKG51bGwsMiw1LFcsW0xtLHRoaXMuSl0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbVWosdGhpcy50eXBlXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtEbSx0aGlzLk1dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1VtLHRoaXMuSV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbSGosdGhpcy5IXSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgaXEodGhpcy5KLHRoaXMudHlwZSx0aGlzLk0sdGhpcy5JLHRoaXMuSCxiLHRoaXMuaix0aGlzLnYpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUmQoYik/U2IodGhpcyxKYi5iKGIsMCksSmIuYihiLDEpKTphZShIYix0aGlzLGIpfTtcbmZ1bmN0aW9uIGpxKGEsYixjLGQpe3JldHVybiBuZXcgaXEoU20sYSxiLGMsZCxudWxsLG51bGwsbnVsbCl9ZnVuY3Rpb24ga3EoYSxiLGMsZCxlLGYsZyl7dGhpcy5KPWE7dGhpcy5NPWI7dGhpcy5JPWM7dGhpcy5IPWQ7dGhpcy53PWU7dGhpcy5qPWY7dGhpcy52PWc7dGhpcy5vPTIyMjk2Njc1OTQ7dGhpcy5HPTgxOTJ9aD1rcS5wcm90b3R5cGU7aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJ0eXBlLXRhZ1wiOnJldHVybiB0aGlzLko7Y2FzZSBcImxvZ2ljYWwtYmxvY2tcIjpyZXR1cm4gdGhpcy5NO2Nhc2UgXCJzdGFydC1wb3NcIjpyZXR1cm4gdGhpcy5JO2Nhc2UgXCJlbmQtcG9zXCI6cmV0dXJuIHRoaXMuSDtkZWZhdWx0OnJldHVybiBCLmModGhpcy5qLGIsYyl9fTtcbmguVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIG9oKGIsdmgsXCJcIixcIiBcIixcIlwiLGMsYSl9fSh0aGlzKSxcIiNjbGpzLnBwcmludC5zdGFydC1ibG9jay10e1wiLFwiLCBcIixcIn1cIixjLE1lLmIobmV3IFYobnVsbCw0LDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbTG0sdGhpcy5KXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtEbSx0aGlzLk1dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1VtLHRoaXMuSV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbSGosdGhpcy5IXSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O2guQ2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxnKDAsdGhpcyw0LG5ldyBWKG51bGwsNCw1LFcsW0xtLERtLFVtLEhqXSxudWxsKSxyKHRoaXMuaik/S2ModGhpcy5qKTpWZSgpKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDQrTSh0aGlzLmopfTtcbmguUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPXFlKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXt2YXIgYztjPXIoYik/KGM9dGhpcy5jb25zdHJ1Y3Rvcj09PWIuY29uc3RydWN0b3IpP2tnKHRoaXMsYik6YzpiO3JldHVybiByKGMpPyEwOiExfTtoLmJiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFlkKG5ldyBkaChudWxsLG5ldyBxKG51bGwsNCxbSGosbnVsbCxEbSxudWxsLExtLG51bGwsVW0sbnVsbF0sbnVsbCksbnVsbCksYik/SWQuYih5ZCh5Zi5iKFgsdGhpcyksdGhpcy53KSxiKTpuZXcga3EodGhpcy5KLHRoaXMuTSx0aGlzLkksdGhpcy5ILHRoaXMudyxVZShJZC5iKHRoaXMuaixiKSksbnVsbCl9O1xuaC5aYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHIoVC5iP1QuYihMbSxiKTpULmNhbGwobnVsbCxMbSxiKSk/bmV3IGtxKGMsdGhpcy5NLHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoRG0sYik6VC5jYWxsKG51bGwsRG0sYikpP25ldyBrcSh0aGlzLkosYyx0aGlzLkksdGhpcy5ILHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKFVtLGIpOlQuY2FsbChudWxsLFVtLGIpKT9uZXcga3EodGhpcy5KLHRoaXMuTSxjLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihIaixiKTpULmNhbGwobnVsbCxIaixiKSk/bmV3IGtxKHRoaXMuSix0aGlzLk0sdGhpcy5JLGMsdGhpcy53LHRoaXMuaixudWxsKTpuZXcga3EodGhpcy5KLHRoaXMuTSx0aGlzLkksdGhpcy5ILHRoaXMudyxRLmModGhpcy5qLGIsYyksbnVsbCl9O1xuaC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIEUoTWUuYihuZXcgVihudWxsLDQsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtMbSx0aGlzLkpdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0RtLHRoaXMuTV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbVW0sdGhpcy5JXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtIaix0aGlzLkhdLG51bGwpXSxudWxsKSx0aGlzLmopKX07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBrcSh0aGlzLkosdGhpcy5NLHRoaXMuSSx0aGlzLkgsYix0aGlzLmosdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJkKGIpP1NiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk6YWUoSGIsdGhpcyxiKX07ZnVuY3Rpb24gbHEoYSxiLGMsZCxlLGYsZyl7dGhpcy5KPWE7dGhpcy5NPWI7dGhpcy5JPWM7dGhpcy5IPWQ7dGhpcy53PWU7dGhpcy5qPWY7dGhpcy52PWc7dGhpcy5vPTIyMjk2Njc1OTQ7dGhpcy5HPTgxOTJ9aD1scS5wcm90b3R5cGU7XG5oLlc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUWIuYyh0aGlzLGIsbnVsbCl9O2guVD1mdW5jdGlvbihhLGIsYyl7c3dpdGNoKGIgaW5zdGFuY2VvZiBTP2IuTGE6bnVsbCl7Y2FzZSBcInR5cGUtdGFnXCI6cmV0dXJuIHRoaXMuSjtjYXNlIFwibG9naWNhbC1ibG9ja1wiOnJldHVybiB0aGlzLk07Y2FzZSBcInN0YXJ0LXBvc1wiOnJldHVybiB0aGlzLkk7Y2FzZSBcImVuZC1wb3NcIjpyZXR1cm4gdGhpcy5IO2RlZmF1bHQ6cmV0dXJuIEIuYyh0aGlzLmosYixjKX19O1xuaC5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gb2goYix2aCxcIlwiLFwiIFwiLFwiXCIsYyxhKX19KHRoaXMpLFwiI2NsanMucHByaW50LmVuZC1ibG9jay10e1wiLFwiLCBcIixcIn1cIixjLE1lLmIobmV3IFYobnVsbCw0LDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbTG0sdGhpcy5KXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtEbSx0aGlzLk1dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1VtLHRoaXMuSV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbSGosdGhpcy5IXSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O2guQ2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxnKDAsdGhpcyw0LG5ldyBWKG51bGwsNCw1LFcsW0xtLERtLFVtLEhqXSxudWxsKSxyKHRoaXMuaik/S2ModGhpcy5qKTpWZSgpKX07aC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDQrTSh0aGlzLmopfTtcbmguUz1mdW5jdGlvbigpe3ZhciBhPXRoaXMudjtyZXR1cm4gbnVsbCE9YT9hOnRoaXMudj1hPXFlKHRoaXMpfTtoLkY9ZnVuY3Rpb24oYSxiKXt2YXIgYztjPXIoYik/KGM9dGhpcy5jb25zdHJ1Y3Rvcj09PWIuY29uc3RydWN0b3IpP2tnKHRoaXMsYik6YzpiO3JldHVybiByKGMpPyEwOiExfTtoLmJiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFlkKG5ldyBkaChudWxsLG5ldyBxKG51bGwsNCxbSGosbnVsbCxEbSxudWxsLExtLG51bGwsVW0sbnVsbF0sbnVsbCksbnVsbCksYik/SWQuYih5ZCh5Zi5iKFgsdGhpcyksdGhpcy53KSxiKTpuZXcgbHEodGhpcy5KLHRoaXMuTSx0aGlzLkksdGhpcy5ILHRoaXMudyxVZShJZC5iKHRoaXMuaixiKSksbnVsbCl9O1xuaC5aYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHIoVC5iP1QuYihMbSxiKTpULmNhbGwobnVsbCxMbSxiKSk/bmV3IGxxKGMsdGhpcy5NLHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoRG0sYik6VC5jYWxsKG51bGwsRG0sYikpP25ldyBscSh0aGlzLkosYyx0aGlzLkksdGhpcy5ILHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKFVtLGIpOlQuY2FsbChudWxsLFVtLGIpKT9uZXcgbHEodGhpcy5KLHRoaXMuTSxjLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihIaixiKTpULmNhbGwobnVsbCxIaixiKSk/bmV3IGxxKHRoaXMuSix0aGlzLk0sdGhpcy5JLGMsdGhpcy53LHRoaXMuaixudWxsKTpuZXcgbHEodGhpcy5KLHRoaXMuTSx0aGlzLkksdGhpcy5ILHRoaXMudyxRLmModGhpcy5qLGIsYyksbnVsbCl9O1xuaC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIEUoTWUuYihuZXcgVihudWxsLDQsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtMbSx0aGlzLkpdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0RtLHRoaXMuTV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbVW0sdGhpcy5JXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtIaix0aGlzLkhdLG51bGwpXSxudWxsKSx0aGlzLmopKX07aC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBscSh0aGlzLkosdGhpcy5NLHRoaXMuSSx0aGlzLkgsYix0aGlzLmosdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJkKGIpP1NiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk6YWUoSGIsdGhpcyxiKX07XG5mdW5jdGlvbiBtcShhLGIsYyxkLGUsZixnLGssbCl7dGhpcy5KPWE7dGhpcy5NPWI7dGhpcy5qYj1jO3RoaXMub2Zmc2V0PWQ7dGhpcy5JPWU7dGhpcy5IPWY7dGhpcy53PWc7dGhpcy5qPWs7dGhpcy52PWw7dGhpcy5vPTIyMjk2Njc1OTQ7dGhpcy5HPTgxOTJ9aD1tcS5wcm90b3R5cGU7aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJ0eXBlLXRhZ1wiOnJldHVybiB0aGlzLko7Y2FzZSBcImxvZ2ljYWwtYmxvY2tcIjpyZXR1cm4gdGhpcy5NO2Nhc2UgXCJyZWxhdGl2ZS10b1wiOnJldHVybiB0aGlzLmpiO2Nhc2UgXCJvZmZzZXRcIjpyZXR1cm4gdGhpcy5vZmZzZXQ7Y2FzZSBcInN0YXJ0LXBvc1wiOnJldHVybiB0aGlzLkk7Y2FzZSBcImVuZC1wb3NcIjpyZXR1cm4gdGhpcy5IO2RlZmF1bHQ6cmV0dXJuIEIuYyh0aGlzLmosYixjKX19O1xuaC5VPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gb2goYixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gb2goYix2aCxcIlwiLFwiIFwiLFwiXCIsYyxhKX19KHRoaXMpLFwiI2NsanMucHByaW50LmluZGVudC10e1wiLFwiLCBcIixcIn1cIixjLE1lLmIobmV3IFYobnVsbCw2LDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbTG0sdGhpcy5KXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtEbSx0aGlzLk1dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2RrLHRoaXMuamJdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2FqLHRoaXMub2Zmc2V0XSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtVbSx0aGlzLkldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0hqLHRoaXMuSF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsNixuZXcgVihudWxsLDYsNSxXLFtMbSxEbSxkayxhaixVbSxIal0sbnVsbCkscih0aGlzLmopP0tjKHRoaXMuaik6VmUoKSl9O1xuaC5OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307aC5aPWZ1bmN0aW9uKCl7cmV0dXJuIDYrTSh0aGlzLmopfTtoLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDYsW2FqLG51bGwsSGosbnVsbCxkayxudWxsLERtLG51bGwsTG0sbnVsbCxVbSxudWxsXSxudWxsKSxudWxsKSxiKT9JZC5iKHlkKHlmLmIoWCx0aGlzKSx0aGlzLncpLGIpOm5ldyBtcSh0aGlzLkosdGhpcy5NLHRoaXMuamIsdGhpcy5vZmZzZXQsdGhpcy5JLHRoaXMuSCx0aGlzLncsVWUoSWQuYih0aGlzLmosYikpLG51bGwpfTtcbmguWmE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByKFQuYj9ULmIoTG0sYik6VC5jYWxsKG51bGwsTG0sYikpP25ldyBtcShjLHRoaXMuTSx0aGlzLmpiLHRoaXMub2Zmc2V0LHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoRG0sYik6VC5jYWxsKG51bGwsRG0sYikpP25ldyBtcSh0aGlzLkosYyx0aGlzLmpiLHRoaXMub2Zmc2V0LHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoZGssYik6VC5jYWxsKG51bGwsZGssYikpP25ldyBtcSh0aGlzLkosdGhpcy5NLGMsdGhpcy5vZmZzZXQsdGhpcy5JLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihhaixiKTpULmNhbGwobnVsbCxhaixiKSk/bmV3IG1xKHRoaXMuSix0aGlzLk0sdGhpcy5qYixjLHRoaXMuSSx0aGlzLkgsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoVW0sYik6VC5jYWxsKG51bGwsVW0sYikpP25ldyBtcSh0aGlzLkosdGhpcy5NLHRoaXMuamIsXG50aGlzLm9mZnNldCxjLHRoaXMuSCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihIaixiKTpULmNhbGwobnVsbCxIaixiKSk/bmV3IG1xKHRoaXMuSix0aGlzLk0sdGhpcy5qYix0aGlzLm9mZnNldCx0aGlzLkksYyx0aGlzLncsdGhpcy5qLG51bGwpOm5ldyBtcSh0aGlzLkosdGhpcy5NLHRoaXMuamIsdGhpcy5vZmZzZXQsdGhpcy5JLHRoaXMuSCx0aGlzLncsUS5jKHRoaXMuaixiLGMpLG51bGwpfTtcbmguWT1mdW5jdGlvbigpe3JldHVybiBFKE1lLmIobmV3IFYobnVsbCw2LDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbTG0sdGhpcy5KXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtEbSx0aGlzLk1dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2RrLHRoaXMuamJdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2FqLHRoaXMub2Zmc2V0XSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtVbSx0aGlzLkldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW0hqLHRoaXMuSF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLk89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IG1xKHRoaXMuSix0aGlzLk0sdGhpcy5qYix0aGlzLm9mZnNldCx0aGlzLkksdGhpcy5ILGIsdGhpcy5qLHRoaXMudil9O2guWD1mdW5jdGlvbihhLGIpe3JldHVybiBSZChiKT9TYih0aGlzLEpiLmIoYiwwKSxKYi5iKGIsMSkpOmFlKEhiLHRoaXMsYil9O1xuaWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBucSl2YXIgbnE9ZnVuY3Rpb24oKXt2YXIgYT1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLGI9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxjPVk/WShYKTplZi5jYWxsKG51bGwsWCksZD1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLGU9Qi5jKFgsc20sSmgoKSk7cmV0dXJuIG5ldyBWaChXYy5iKFwiY2xqcy5wcHJpbnRcIixcIndyaXRlLXRva2VuXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIExtLmEoYil9fShhLGIsYyxkLGUpLGdqLGUsYSxiLGMsZCl9KCk7XG5ucS5mYSgwLFdtLGZ1bmN0aW9uKGEsYil7dmFyIGM9bm0uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpO3IoYykmJihjLmE/Yy5hKExqKTpjLmNhbGwobnVsbCxMaikpO3ZhciBjPURtLmEoYiksZD11ay5hKGMpO3IoZCkmJngob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGQpO3ZhciBkPSRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxkaiksZT1tay5hKGMpO2pmLmI/amYuYihlLGQpOmpmLmNhbGwobnVsbCxlLGQpO2M9dWkuYShjKTtyZXR1cm4gamYuYj9qZi5iKGMsZCk6amYuY2FsbChudWxsLGMsZCl9KTtcbm5xLmZhKDAsWm0sZnVuY3Rpb24oYSxiKXt2YXIgYz1ubS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSk7cihjKSYmKGMuYT9jLmEobW0pOmMuY2FsbChudWxsLG1tKSk7Yz1qaS5hKERtLmEoYikpO3JldHVybiByKGMpP3gob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGMpOm51bGx9KTtcbm5xLmZhKDAsV2wsZnVuY3Rpb24oYSxiKXt2YXIgYz1EbS5hKGIpLGQ9dWkuYShjKSxlPWFqLmEoYikrZnVuY3Rpb24oKXt2YXIgZD1kay5hKGIpO2lmKHIoQy5iP0MuYihxaSxkKTpDLmNhbGwobnVsbCxxaSxkKSkpcmV0dXJuIGQ9bWsuYShjKSxMLmE/TC5hKGQpOkwuY2FsbChudWxsLGQpO2lmKHIoQy5iP0MuYihvbCxkKTpDLmNhbGwobnVsbCxvbCxkKSkpcmV0dXJuICRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxkaik7dGhyb3cgRXJyb3IoW3QoXCJObyBtYXRjaGluZyBjbGF1c2U6IFwiKSx0KGQpXS5qb2luKFwiXCIpKTt9KCk7cmV0dXJuIGpmLmI/amYuYihkLGUpOmpmLmNhbGwobnVsbCxkLGUpfSk7XG5ucS5mYSgwLFRrLGZ1bmN0aW9uKGEsYil7cmV0dXJuIHgob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGJuLmEoYikpfSk7XG5ucS5mYSgwLFNtLGZ1bmN0aW9uKGEsYil7aWYocihmdW5jdGlvbigpe3ZhciBhPUMuYihVai5hKGIpLGFpKTtyZXR1cm4gYT9hOihhPSFDLmIoVWouYShiKSx4aikpPyhhPVlqLmEoRG0uYShiKSksTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSk6YX0oKSkpb3EuYj9vcS5iKGEsYik6b3EuY2FsbChudWxsLGEsYik7ZWxzZXt2YXIgYz1pbC5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSk7cihjKSYmeChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksYyl9cmV0dXJuIGtmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLGlsLG51bGwpfSk7XG5mdW5jdGlvbiBwcShhLGIsYyl7Yj1FKGIpO2Zvcih2YXIgZD1udWxsLGU9MCxmPTA7OylpZihmPGUpe3ZhciBnPWQuY2EobnVsbCxmKTtpZighQy5iKExtLmEoZyksU20pKXt2YXIgaz1pbC5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSk7cihrKSYmeChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksayl9bnEuYj9ucS5iKGEsZyk6bnEuY2FsbChudWxsLGEsZyk7a2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsaWwsaWwuYShnKSk7Zz1pbC5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSk7cihyKGMpP2c6YykmJih4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLFxuYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGcpLGtmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLGlsLG51bGwpKTtmKz0xfWVsc2UgaWYoYj1FKGIpKVNkKGIpPyhkPUNjKGIpLGI9RGMoYiksZz1kLGU9TShkKSxkPWcpOihnPUkoYiksQy5iKExtLmEoZyksU20pfHwoZD1pbC5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSkscihkKSYmeChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksZCkpLG5xLmI/bnEuYihhLGcpOm5xLmNhbGwobnVsbCxhLGcpLGtmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLGlsLGlsLmEoZykpLGc9aWwuYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6XG5MLmNhbGwobnVsbCxiKX0oKSkscihyKGMpP2c6YykmJih4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxnKSxrZi5DKEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSksUSxpbCxudWxsKSksYj1KKGIpLGQ9bnVsbCxlPTApLGY9MDtlbHNlIGJyZWFrfWZ1bmN0aW9uIHFxKGEsYil7dmFyIGM9JHAob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGhsKTtyZXR1cm4gbnVsbD09Y3x8JHAob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGRqKStmcShiKTxjfVxuZnVuY3Rpb24gcnEoYSxiLGMpe2I9WWouYShiKTtiPUwuYT9MLmEoYik6TC5jYWxsKG51bGwsYik7cmV0dXJuIHIoYik/Yjp0YihxcShhLGMpKX1mdW5jdGlvbiBzcShhLGIsYyl7dmFyIGQ9dHEuYT90cS5hKGEpOnRxLmNhbGwobnVsbCxhKSxlPSRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxobCk7cmV0dXJuIHIoZCk/cihlKT8oZD1mdW5jdGlvbigpe3ZhciBhPW1rLmEoYik7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCk+PWUtZCk/cnEoYSxiLGMpOmQ6ZTpkfVxuaWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiB1cSl2YXIgdXE9ZnVuY3Rpb24oKXt2YXIgYT1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLGI9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxjPVk/WShYKTplZi5jYWxsKG51bGwsWCksZD1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLGU9Qi5jKFgsc20sSmgoKSk7cmV0dXJuIG5ldyBWaChXYy5iKFwiY2xqcy5wcHJpbnRcIixcImVtaXQtbmw/XCIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBVai5hKGEpfX0oYSxiLGMsZCxlKSxnaixlLGEsYixjLGQpfSgpO3VxLmZhKDAsJGwsZnVuY3Rpb24oYSxiLGMpe2E9RG0uYShhKTtyZXR1cm4gcnEoYixhLGMpfSk7dXEuZmEoMCxUaSxmdW5jdGlvbihhLGIsYyl7YT1EbS5hKGEpO3JldHVybiBzcShiLGEsYyl9KTtcbnVxLmZhKDAseGosZnVuY3Rpb24oYSxiLGMsZCl7YT1EbS5hKGEpO3ZhciBlO2U9d20uYShhKTtlPUwuYT9MLmEoZSk6TC5jYWxsKG51bGwsZSk7cmV0dXJuIHIoZSk/ZTooZD10YihxcShiLGQpKSk/ZDpzcShiLGEsYyl9KTt1cS5mYSgwLGFpLGZ1bmN0aW9uKCl7cmV0dXJuITB9KTtmdW5jdGlvbiB2cShhKXt2YXIgYj1JKGEpLGM9RG0uYShiKSxiPUUoaWgoZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9Qy5iKExtLmEoYSksU20pO2E9cihjKT9lcShEbS5hKGEpLGIpOmM7cmV0dXJuIHRiKGEpfX0oYixjKSxKKGEpKSk7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW2IsRShvZihNKGIpKzEsYSkpXSxudWxsKX1cbmZ1bmN0aW9uIHdxKGEpe3ZhciBiPUkoYSksYz1EbS5hKGIpO3JldHVybiBFKGloKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPURtLmEoYSk7YT1DLmIoTG0uYShhKSxTbSk7Yz1yKGEpPyhhPUMuYihjLGIpKT9hOmVxKGMsYik6YTtyZXR1cm4gdGIoYyl9fShiLGMpLEooYSkpKX1mdW5jdGlvbiB4cShhKXt2YXIgYj13bS5hKGEpO2pmLmI/amYuYihiLCEwKTpqZi5jYWxsKG51bGwsYiwhMCk7Yj1Zai5hKGEpO2pmLmI/amYuYihiLCEwKTpqZi5jYWxsKG51bGwsYiwhMCk7Zm9yKGE9T2kuYShhKTs7KWlmKHIoYSkpYj1Zai5hKGEpLGpmLmI/amYuYihiLCEwKTpqZi5jYWxsKG51bGwsYiwhMCksYj13bS5hKGEpLGpmLmI/amYuYihiLCEwKTpqZi5jYWxsKG51bGwsYiwhMCksYT1PaS5hKGEpO2Vsc2UgcmV0dXJuIG51bGx9XG5mdW5jdGlvbiBvcShhLGIpe3gob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLFwiXFxuXCIpO2tmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLGlsLG51bGwpO3ZhciBjPURtLmEoYiksZD10bC5hKGMpO3IoZCkmJngob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGQpO2Q9UGUodCxzZihmdW5jdGlvbigpe3ZhciBhPXVpLmEoYyk7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCktTShkKSxcIiBcIikpO3gob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGQpO3JldHVybiB4cShjKX1cbmZ1bmN0aW9uIHlxKGEpe3ZhciBiPUUoaWgoZnVuY3Rpb24oYSl7cmV0dXJuIHRiKEMuYihMbS5hKGEpLFNtKSl9LGEpKTtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbYixFKG9mKE0oYiksYSkpXSxudWxsKX12YXIgenE9ZnVuY3Rpb24genEoYixjKXt2YXIgZD15cShjKSxlPU8oZCwwLG51bGwpLGY9TyhkLDEsbnVsbCk7cihlKSYmcHEoYixlLCExKTtpZihyKGYpKXt2YXIgZD12cShmKSxnPU8oZCwwLG51bGwpLGs9TyhkLDEsbnVsbCksbD1JKGYpLGQ9ZnVuY3Rpb24oKXt2YXIgYz13cShmKTtyZXR1cm4gdXEuQz91cS5DKGwsYixnLGMpOnVxLmNhbGwobnVsbCxsLGIsZyxjKX0oKTtyKGQpPyhvcShiLGwpLGQ9SihmKSk6ZD1mO3JldHVybiB0YihxcShiLGQpKT9mdW5jdGlvbigpe3ZhciBjPXpxLmI/enEuYihiLGcpOnpxLmNhbGwobnVsbCxiLGcpO3JldHVybiBDLmIoYyxnKT8ocHEoYixnLCExKSxrKTp5Zi5iKEZkLE1lLmIoYyxrKSl9KCk6ZH1yZXR1cm4gbnVsbH07XG5mdW5jdGlvbiBBcShhKXtmb3IodmFyIGI9VG0uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpOzspaWYoa2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsVG0seWYuYihGZCxiKSksdGIocXEoYSxiKSkpe3ZhciBjPXpxKGEsYik7aWYoYiE9PWMpYj1jO2Vsc2UgcmV0dXJuIG51bGx9ZWxzZSByZXR1cm4gbnVsbH1mdW5jdGlvbiBCcShhLGIpe2tmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLFRtLEVkLmIoVG0uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGIpKTtyZXR1cm4gdGIocXEoYSxUbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSkpKT9BcShhKTpudWxsfVxuZnVuY3Rpb24gQ3EoYSl7QXEoYSk7dmFyIGI9VG0uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpO3IoYikmJihwcShhLGIsITApLGtmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLFRtLEZkKSl9ZnVuY3Rpb24gRHEoYSl7dmFyIGI9aWwuYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpO3JldHVybiByKGIpPyh4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxiKSxrZi5DKEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSksUSxpbCxudWxsKSk6bnVsbH1cbmZ1bmN0aW9uIEVxKGEsYil7dmFyIGM9V24oYixcIlxcblwiLC0xKTtpZihDLmIoTShjKSwxKSlyZXR1cm4gYjt2YXIgZD10bC5hKEkoZGkuYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpKSksZT1JKGMpO2lmKEMuYihXayxLai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSkpKXt2YXIgZj1Sai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksZz1mK00oZSk7a2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsUmosZyk7QnEoYSxocShlLG51bGwsZixnKSk7Q3EoYSl9ZWxzZSBEcShhKSx4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/XG5MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGUpO3gob20uYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLFwiXFxuXCIpO2Zvcih2YXIgZT1FKEooZ2goYykpKSxmPW51bGwsaz1nPTA7OylpZihrPGcpe3ZhciBsPWYuY2EobnVsbCxrKTt4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxsKTt4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxcIlxcblwiKTtyKGQpJiZ4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxkKTtrKz0xfWVsc2UgaWYoZT1FKGUpKWY9ZSxTZChmKT8oZT1DYyhmKSxcbms9RGMoZiksZj1lLGc9TShlKSxlPWspOihlPUkoZikseChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksZSkseChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksXCJcXG5cIikscihkKSYmeChvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksZCksZT1KKGYpLGY9bnVsbCxnPTApLGs9MDtlbHNlIGJyZWFrO2tmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLFdrLFNqKTtyZXR1cm4gRGQoYyl9XG5mdW5jdGlvbiBGcShhLGIpe2lmKEMuYihLai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksU2opKXJldHVybiBEcShhKSx4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxiKTtpZihDLmIoYixcIlxcblwiKSlyZXR1cm4gRXEoYSxcIlxcblwiKTt2YXIgYz1Sai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksZD1jKzE7a2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsUmosZCk7cmV0dXJuIEJxKGEsaHEoaWUoYiksbnVsbCxjLGQpKX1cbmZ1bmN0aW9uIEdxKGEpe3ZhciBiPUhxLGM9SXEsZD1uZXcgZHEobnVsbCxudWxsLFk/WSgwKTplZi5jYWxsKG51bGwsMCksWT9ZKDApOmVmLmNhbGwobnVsbCwwKSxZP1koITEpOmVmLmNhbGwobnVsbCwhMSksWT9ZKCExKTplZi5jYWxsKG51bGwsITEpLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLGU9ZnVuY3Rpb24oKXt2YXIgZT1IZChbZGksemksSGksTmksUGksS2osUmosaWwsb20sdm0sVG1dLFtkLGMsZCwhMCxudWxsLFNqLDAsbnVsbCxjcShhLGIpLDEsRmRdKTtyZXR1cm4gWT9ZKGUpOmVmLmNhbGwobnVsbCxlKX0oKTtcInVuZGVmaW5lZFwiPT09dHlwZW9mIE1wJiYoTXA9ZnVuY3Rpb24oYSxiLGMsZCxlLHUpe3RoaXMuZGE9YTt0aGlzLkRjPWI7dGhpcy55ZD1jO3RoaXMucWQ9ZDt0aGlzLkpiPWU7dGhpcy50ZD11O3RoaXMubz0xMDc0MTY3ODA4O3RoaXMuRz0wfSxNcC5wcm90b3R5cGUuTz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgTXAodGhpcy5kYSxcbnRoaXMuRGMsdGhpcy55ZCx0aGlzLnFkLHRoaXMuSmIsYil9fShkLGUpLE1wLnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGR9fShkLGUpLE1wLnByb3RvdHlwZS5YYj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLkpifX0oZCxlKSxNcC5wcm90b3R5cGUueWI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9d2IoYik7aWYocihDLmI/Qy5iKFN0cmluZyxkKTpDLmNhbGwobnVsbCxTdHJpbmcsZCkpKXt2YXIgZT1FcShjLGIpLGQ9ZS5yZXBsYWNlKC9cXHMrJC8sXCJcIiksZj1wZShlLE0oZCkpLGc9S2ouYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyk7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpO2lmKEMuYihnLFNqKSlyZXR1cm4gRHEoYykseChvbS5hKGZ1bmN0aW9uKCl7dmFyIGE9TC5hP0wuYShjKTpMLmNhbGwobnVsbCxjKTtcbnJldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxkKSxrZi5DKEwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyksUSxpbCxmKTtnPVJqLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKTtlPWcrTShlKTtrZi5DKEwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyksUSxSaixlKTtyZXR1cm4gQnEoYyxocShkLGYsZyxlKSl9aWYocihDLmI/Qy5iKE51bWJlcixkKTpDLmNhbGwobnVsbCxOdW1iZXIsZCkpKXJldHVybiBGcShjLGIpO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksdChkKV0uam9pbihcIlwiKSk7fX0oZCxlKSxNcC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzO1pwKGEpO3JldHVybiBzYyhvbS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpcbkwuY2FsbChudWxsLGIpfSgpKSl9fShkLGUpLE1wLnByb3RvdHlwZS5QYz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuIEMuYihLai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksV2spPyhwcShhLFRtLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSwhMCksa2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsVG0sRmQpKTpEcShhKX19KGQsZSksTXAuVGI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFYobnVsbCw2LDUsVyxbQW0sSWksQ2osbG0sRmssdmldLG51bGwpfX0oZCxlKSxNcC56Yj0hMCxNcC5uYj1cImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxMzM5MlwiLE1wLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsXG5iKXtyZXR1cm4geChiLFwiY2xqcy5wcHJpbnQvdF9jbGpzJHBwcmludDEzMzkyXCIpfX0oZCxlKSk7cmV0dXJuIG5ldyBNcChhLGIsYyxkLGUsWCl9XG5mdW5jdGlvbiBKcShhLGIpe3ZhciBjPW4sZD1uZXcgZHEoZGkuYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyk7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpLG51bGwsWT9ZKDApOmVmLmNhbGwobnVsbCwwKSxZP1koMCk6ZWYuY2FsbChudWxsLDApLFk/WSghMSk6ZWYuY2FsbChudWxsLCExKSxZP1koITEpOmVmLmNhbGwobnVsbCwhMSksYSxudWxsLGIsbnVsbCxudWxsLG51bGwsbnVsbCk7a2YuQyhMLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpLFEsZGksZCk7aWYoQy5iKEtqLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxTaikpe0RxKGMpO3ZhciBlPW5tLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKTtyKGUpJiYoZS5hP2UuYShMaik6XG5lLmNhbGwobnVsbCxMaikpO3IoYSkmJngob20uYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyk7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpLGEpO3ZhciBlPSRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxkaiksZj1tay5hKGQpO2pmLmI/amYuYihmLGUpOmpmLmNhbGwobnVsbCxmLGUpO2Q9dWkuYShkKTtqZi5iP2pmLmIoZCxlKTpqZi5jYWxsKG51bGwsZCxlKX1lbHNlIGU9UmouYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEoYyk6TC5jYWxsKG51bGwsYyk7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpLGY9ZSsocihhKT9NKGEpOjApLGtmLkMoTC5hP0wuYShjKTpMLmNhbGwobnVsbCxjKSxRLFJqLGYpLEJxKGMsbmV3IGtxKFdtLGQsZSxmLG51bGwsbnVsbCxudWxsKSl9XG5mdW5jdGlvbiBLcSgpe3ZhciBhPW4sYj1kaS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksYz1qaS5hKGIpO2lmKEMuYihLai5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSksU2opKXtEcShhKTtyKGMpJiZ4KG9tLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/TC5hKGIpOkwuY2FsbChudWxsLGIpfSgpKSxjKTt2YXIgZD1ubS5hKGZ1bmN0aW9uKCl7dmFyIGI9TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX0oKSk7cihkKSYmKGQuYT9kLmEobW0pOmQuY2FsbChudWxsLG1tKSl9ZWxzZSBkPVJqLmEoZnVuY3Rpb24oKXt2YXIgYj1MLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpO3JldHVybiBMLmE/XG5MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpLGM9ZCsocihjKT9NKGMpOjApLGtmLkMoTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSxRLFJqLGMpLEJxKGEsbmV3IGxxKFptLGIsZCxjLG51bGwsbnVsbCxudWxsKSk7a2YuQyhMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpLFEsZGksT2kuYShiKSl9ZnVuY3Rpb24gTHEoYSl7dmFyIGI9bjtrZi5DKEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYiksUSxLaixXayk7dmFyIGM9UmouYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEoYik6TC5jYWxsKG51bGwsYik7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpO0JxKGIsanEoYSxkaS5hKGZ1bmN0aW9uKCl7dmFyIGE9TC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKTtyZXR1cm4gTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKX0oKSksYyxjKSl9XG5mdW5jdGlvbiBNcShhLGIpe3ZhciBjPW4sZD1kaS5hKGZ1bmN0aW9uKCl7dmFyIGE9TC5hP0wuYShjKTpMLmNhbGwobnVsbCxjKTtyZXR1cm4gTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKX0oKSk7aWYoQy5iKEtqLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxTaikpe0RxKGMpO3ZhciBlPXVpLmEoZCksZj1iK2Z1bmN0aW9uKCl7aWYocihDLmI/Qy5iKHFpLGEpOkMuY2FsbChudWxsLHFpLGEpKSl7dmFyIGI9bWsuYShkKTtyZXR1cm4gTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKX1pZihyKEMuYj9DLmIob2wsYSk6Qy5jYWxsKG51bGwsb2wsYSkpKXJldHVybiAkcChvbS5hKGZ1bmN0aW9uKCl7dmFyIGE9TC5hP0wuYShjKTpMLmNhbGwobnVsbCxjKTtyZXR1cm4gTC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKX0oKSksZGopO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksXG50KGEpXS5qb2luKFwiXCIpKTt9KCk7amYuYj9qZi5iKGUsZik6amYuY2FsbChudWxsLGUsZil9ZWxzZSBlPVJqLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKGMpOkwuY2FsbChudWxsLGMpO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxCcShjLG5ldyBtcShXbCxkLGEsYixlLGUsbnVsbCxudWxsLG51bGwpKX1mdW5jdGlvbiB0cShhKXtyZXR1cm4gemkuYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpfXZhciBOcT0hMDtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIE9xKXZhciBPcT1udWxsO3ZhciBIcT03MixJcT00MCxQcT1udWxsLFFxPW51bGwsUnE9bnVsbCxTcT1udWxsLFRxPTEwLFVxPTAsVnE9bnVsbDtcbkhkKFt6aSxXaSxJaixNaixhayxvayx5ayxuYixFayxBbCxrbSxvbV0sW25ldyBYYyhmdW5jdGlvbigpe3JldHVybiBJcX0sQWosSGQoW2hqLGxqLG9qLEVqLEpqLHZrLFZrLFhrLEZsLHBtLEJtLE9tXSxbXCIxLjJcIixKayxlbCxcIi9Vc2Vycy9sZWVieXJvbi9zcmMvdGVzdGNoZWNrLWpzL3RhcmdldC9jbGpzYnVpbGQtY29tcGlsZXItMC9jbGpzL3BwcmludC5jbGpzXCIsMjEsMSwhMCw2MzIsNjM3LCRjLFwiVGhlIGNvbHVtbiBhdCB3aGljaCB0byBlbnRlciBtaXNlciBzdHlsZS4gRGVwZW5kaW5nIG9uIHRoZSBkaXNwYXRjaCB0YWJsZSxcXG5taXNlciBzdHlsZSBhZGQgbmV3bGluZXMgaW4gbW9yZSBwbGFjZXMgdG8gdHJ5IHRvIGtlZXAgbGluZXMgc2hvcnQgYWxsb3dpbmcgZm9yIGZ1cnRoZXJcXG5sZXZlbHMgb2YgbmVzdGluZy5cIixyKElxKT9JcS5mYjpudWxsXSkpLG5ldyBYYyhmdW5jdGlvbigpe3JldHVybiBIcX0sSGssSGQoW2hqLGxqLG9qLEVqLEpqLHZrLFZrLFhrLEZsLHBtLEJtLFxuT21dLFtcIjEuMlwiLEprLGRtLFwiL1VzZXJzL2xlZWJ5cm9uL3NyYy90ZXN0Y2hlY2stanMvdGFyZ2V0L2NsanNidWlsZC1jb21waWxlci0wL2NsanMvcHByaW50LmNsanNcIiwyMiwxLCEwLDYyNSw2MzAsJGMsXCJQcmV0dHkgcHJpbnRpbmcgd2lsbCB0cnkgdG8gYXZvaWQgYW55dGhpbmcgZ29pbmcgYmV5b25kIHRoaXMgY29sdW1uLlxcblNldCBpdCB0byBuaWwgdG8gaGF2ZSBwcHJpbnQgbGV0IHRoZSBsaW5lIGJlIGFyYml0cmFyaWx5IGxvbmcuIFRoaXMgd2lsbCBpZ25vcmUgYWxsXFxubm9uLW1hbmRhdG9yeSBuZXdsaW5lcy5cIixyKEhxKT9IcS5mYjpudWxsXSkpLG5ldyBYYyhmdW5jdGlvbigpe3JldHVybiBRcX0sWmwsSGQoW1JpLGxqLG9qLEVqLEpqLHZrLFZrLFhrLEZsLHBtLEJtLE9tXSxbITAsSmssb2ksXCIvVXNlcnMvbGVlYnlyb24vc3JjL3Rlc3RjaGVjay1qcy90YXJnZXQvY2xqc2J1aWxkLWNvbXBpbGVyLTAvY2xqcy9wcHJpbnQuY2xqc1wiLDE1LDEsITAsNjQ2LDY0OSwkYyxcIk1hcmsgY2lyY3VsYXIgc3RydWN0dXJlcyAoTi5CLiBUaGlzIGlzIG5vdCB5ZXQgdXNlZClcIixcbnIoUXEpP1FxLmZiOm51bGxdKSksbmV3IFhjKGZ1bmN0aW9uKCl7cmV0dXJuIFBxfSxHbSxIZChbUmksbGosb2osRWosSmosdmssVmssWGssRmwscG0sQm0sT21dLFshMCxKayxVayxcIi9Vc2Vycy9sZWVieXJvbi9zcmMvdGVzdGNoZWNrLWpzL3RhcmdldC9jbGpzYnVpbGQtY29tcGlsZXItMC9jbGpzL3BwcmludC5jbGpzXCIsMTQsMSwhMCw2NDAsNjQzLCRjLFwiTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gcHJpbnQgaW4gYSBwcmV0dHkgcHJpbnQgaW5zdGFuY2UgKE4uQi4gVGhpcyBpcyBub3QgeWV0IHVzZWQpXCIscihQcSk/UHEuZmI6bnVsbF0pKSxuZXcgWGMoZnVuY3Rpb24oKXtyZXR1cm4gUnF9LFRqLEhkKFtoaixsaixvaixFaixKaix2ayxWayxYayxGbCxwbSxCbSxPbV0sW1wiMS4yXCIsSmsseWksXCIvVXNlcnMvbGVlYnlyb24vc3JjL3Rlc3RjaGVjay1qcy90YXJnZXQvY2xqc2J1aWxkLWNvbXBpbGVyLTAvY2xqcy9wcHJpbnQuY2xqc1wiLDI4LDEsITAsNjU3LDY2MSwkYyxcIkRvbid0IHByaW50IG5hbWVzcGFjZXMgd2l0aCBzeW1ib2xzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlblxcbnByZXR0eSBwcmludGluZyB0aGUgcmVzdWx0cyBvZiBtYWNybyBleHBhbnNpb25zXCIsXG5yKFJxKT9ScS5mYjpudWxsXSkpLG5ldyBYYyhmdW5jdGlvbigpe3JldHVybiBTcX0scGosSGQoW2hqLGxqLG9qLEVqLEpqLHZrLFZrLFhrLEZsLHBtLEJtLE9tXSxbXCIxLjJcIixKayx6ayxcIi9Vc2Vycy9sZWVieXJvbi9zcmMvdGVzdGNoZWNrLWpzL3RhcmdldC9jbGpzYnVpbGQtY29tcGlsZXItMC9jbGpzL3BwcmludC5jbGpzXCIsMTQsMSwhMCw2NjUsNjcwLCRjLFwiUHJpbnQgYSByYWRpeCBzcGVjaWZpZXIgaW4gZnJvbnQgb2YgaW50ZWdlcnMgYW5kIHJhdGlvbmFscy4gSWYgKnByaW50LWJhc2UqIGlzIDIsIDgsXFxub3IgMTYsIHRoZW4gdGhlIHJhZGl4IHNwZWNpZmllciB1c2VkIGlzICNiLCAjbywgb3IgI3gsIHJlc3BlY3RpdmVseS4gT3RoZXJ3aXNlIHRoZVxcbnJhZGl4IHNwZWNpZmllciBpcyBpbiB0aGUgZm9ybSAjWFhyIHdoZXJlIFhYIGlzIHRoZSBkZWNpbWFsIHZhbHVlIG9mICpwcmludC1iYXNlKiBcIixyKFNxKT9TcS5mYjpudWxsXSkpLG5ldyBYYyhmdW5jdGlvbigpe3JldHVybiBpYn0sXG5uaSxIZChbbGosb2osRWosSmosdmssVmssWGssRmwscG0sQm0sRm0sT21dLFtCaixiaixcImNsanMvY29yZS5jbGpzXCIsMTYsMSwhMCwxMjEsMTMyLCRjLFwiKnByaW50LWxldmVsKiBjb250cm9scyBob3cgbWFueSBsZXZlbHMgZGVlcCB0aGUgcHJpbnRlciB3aWxsXFxuICBwcmludCBuZXN0ZWQgb2JqZWN0cy4gSWYgaXQgaXMgYm91bmQgdG8gbG9naWNhbCBmYWxzZSwgdGhlcmUgaXMgbm9cXG4gIGxpbWl0LiBPdGhlcndpc2UsIGl0IG11c3QgYmUgYm91bmQgdG8gYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtXFxuICBsZXZlbCB0byBwcmludC4gRWFjaCBhcmd1bWVudCB0byBwcmludCBpcyBhdCBsZXZlbCAwOyBpZiBhbiBhcmd1bWVudCBpcyBhXFxuICBjb2xsZWN0aW9uLCBpdHMgaXRlbXMgYXJlIGF0IGxldmVsIDE7IGFuZCBzbyBvbi4gSWYgYW4gb2JqZWN0IGlzIGFcXG4gIGNvbGxlY3Rpb24gYW5kIGlzIGF0IGEgbGV2ZWwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBib3VuZCB0b1xcbiAgKnByaW50LWxldmVsKiwgdGhlIHByaW50ZXIgcHJpbnRzICcjJyB0byByZXByZXNlbnQgaXQuIFRoZSByb290IGJpbmRpbmdcXG4gIGlzIG5pbCBpbmRpY2F0aW5nIG5vIGxpbWl0LlwiLFxubmV3IFYobnVsbCwxLDUsVyxbXCJAdHlwZSB7bnVsbHxudW1iZXJ9XCJdLG51bGwpLHIoaWIpP2liLmZiOm51bGxdKSksbmV3IFhjKGZ1bmN0aW9uKCl7cmV0dXJuIGdifSx5bCxIZChbbGosb2osRWosSmosdmssVmssWGssRmwscG0sQm0sT21dLFtCaixybSxcImNsanMvY29yZS5jbGpzXCIsMTksMSwhMCw4NSw5MSwkYyxcIldoZW4gc2V0IHRvIGxvZ2ljYWwgZmFsc2UsIHN0cmluZ3MgYW5kIGNoYXJhY3RlcnMgd2lsbCBiZSBwcmludGVkIHdpdGhcXG4gIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZXMuXFxuXFxuICBEZWZhdWx0cyB0byB0cnVlXCIscihnYik/Z2IuZmI6bnVsbF0pKSxuZXcgWGMoZnVuY3Rpb24oKXtyZXR1cm4gT3F9LHhpLEhkKFtoaixsaixvaixFaixKaix2ayxWayxYayxGbCxwbSxCbSxPbV0sW1wiMS4yXCIsSmssR2ksXCIvVXNlcnMvbGVlYnlyb24vc3JjL3Rlc3RjaGVjay1qcy90YXJnZXQvY2xqc2J1aWxkLWNvbXBpbGVyLTAvY2xqcy9wcHJpbnQuY2xqc1wiLFxuMjUsMSwhMCw2MTksNjIzLCRjLFwiVGhlIHByZXR0eSBwcmludCBkaXNwYXRjaCBmdW5jdGlvbi4gVXNlIHdpdGgtcHByaW50LWRpc3BhdGNoIG9yXFxuc2V0LXBwcmludC1kaXNwYXRjaCB0byBtb2RpZnkuXCIscihPcSk/T3EuZmI6bnVsbF0pKSxuZXcgWGMoZnVuY3Rpb24oKXtyZXR1cm4gaGJ9LElrLEhkKFtsaixvaixFaixKaix2ayxWayxYayxGbCxwbSxCbSxGbSxPbV0sW0JqLHpqLFwiY2xqcy9jb3JlLmNsanNcIiwxNywxLCEwLDEwOSwxMTksJGMsXCIqcHJpbnQtbGVuZ3RoKiBjb250cm9scyBob3cgbWFueSBpdGVtcyBvZiBlYWNoIGNvbGxlY3Rpb24gdGhlXFxuICBwcmludGVyIHdpbGwgcHJpbnQuIElmIGl0IGlzIGJvdW5kIHRvIGxvZ2ljYWwgZmFsc2UsIHRoZXJlIGlzIG5vXFxuICBsaW1pdC4gT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJvdW5kIHRvIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW11bVxcbiAgbnVtYmVyIG9mIGl0ZW1zIG9mIGVhY2ggY29sbGVjdGlvbiB0byBwcmludC4gSWYgYSBjb2xsZWN0aW9uIGNvbnRhaW5zXFxuICBtb3JlIGl0ZW1zLCB0aGUgcHJpbnRlciB3aWxsIHByaW50IGl0ZW1zIHVwIHRvIHRoZSBsaW1pdCBmb2xsb3dlZCBieVxcbiAgJy4uLicgdG8gcmVwcmVzZW50IHRoZSByZW1haW5pbmcgaXRlbXMuIFRoZSByb290IGJpbmRpbmcgaXMgbmlsXFxuICBpbmRpY2F0aW5nIG5vIGxpbWl0LlwiLFxubmV3IFYobnVsbCwxLDUsVyxbXCJAdHlwZSB7bnVsbHxudW1iZXJ9XCJdLG51bGwpLHIoaGIpP2hiLmZiOm51bGxdKSksbmV3IFhjKGZ1bmN0aW9uKCl7cmV0dXJuIE5xfSx3aSxIZChbbGosb2osRWosSmosdmssVmssWGssRmwscG0sQm0sT21dLFtKayxGaSxcIi9Vc2Vycy9sZWVieXJvbi9zcmMvdGVzdGNoZWNrLWpzL3RhcmdldC9jbGpzYnVpbGQtY29tcGlsZXItMC9jbGpzL3BwcmludC5jbGpzXCIsMTYsMSwhMCw2MTUsNjE3LCRjLFwiQmluZCB0byB0cnVlIGlmIHlvdSB3YW50IHdyaXRlIHRvIHVzZSBwcmV0dHkgcHJpbnRpbmdcIixyKE5xKT9OcS5mYjpudWxsXSkpLG5ldyBYYyhmdW5jdGlvbigpe3JldHVybiBUcX0sWGksSGQoW2hqLGxqLG9qLEVqLEpqLHZrLFZrLFhrLEZsLHBtLEJtLE9tXSxbXCIxLjJcIixKayxhbixcIi9Vc2Vycy9sZWVieXJvbi9zcmMvdGVzdGNoZWNrLWpzL3RhcmdldC9jbGpzYnVpbGQtY29tcGlsZXItMC9jbGpzL3BwcmludC5jbGpzXCIsMTMsMSwhMCw2NzIsNjc1LFxuJGMsXCJUaGUgYmFzZSB0byB1c2UgZm9yIHByaW50aW5nIGludGVnZXJzIGFuZCByYXRpb25hbHMuXCIscihUcSk/VHEuZmI6bnVsbF0pKV0pO2Z1bmN0aW9uIFdxKGEpe3ZhciBiPW51bGwhPWE/YS5vJjMyNzY4fHxtPT09YS5LYz8hMDphLm8/ITE6dmIoY2MsYSk6dmIoY2MsYSk7cmV0dXJuIGI/TmkuYShmdW5jdGlvbigpe3ZhciBiPUwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSk7cmV0dXJuIEwuYT9MLmEoYik6TC5jYWxsKG51bGwsYil9KCkpOmJ9ZnVuY3Rpb24gWHEoYSl7dmFyIGI7Yj1WcTtyKGIpJiYoYj1oYixiPXIoYik/VnE+PWhiOmIpO3RiKE5xKT9TcC5hP1NwLmEoYSk6U3AuY2FsbChudWxsLGEpOnIoYik/eChuLFwiLi4uXCIpOihyKFZxKSYmKFZxKz0xKSxPcS5hP09xLmEoYSk6T3EuY2FsbChudWxsLGEpKTtyZXR1cm4gYn1cbnZhciBZcT1mdW5jdGlvbiBZcShiKXtmb3IodmFyIGM9W10sZD1hcmd1bWVudHMubGVuZ3RoLGU9MDs7KWlmKGU8ZCljLnB1c2goYXJndW1lbnRzW2VdKSxlKz0xO2Vsc2UgYnJlYWs7cmV0dXJuIFlxLmYoYXJndW1lbnRzWzBdLDE8Yy5sZW5ndGg/bmV3IEYoYy5zbGljZSgxKSwwLG51bGwpOm51bGwpfTtcbllxLmY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1haChOKFtuZXcgcShudWxsLDEsW3hrLCEwXSxudWxsKSxQZShnZixiKV0sMCkpLGQ9VHEsZT1RcSxmPWhiLGc9aWIsaz1QcSxsPUlxLHA9T3EsdT1OcSx2PVNxLHc9Z2IseT1IcSxBPVJxO1RxPW9tLmIoYyxUcSk7UXE9SWouYihjLFFxKTtoYj1BbC5iKGMsaGIpO2liPXlrLmIoYyxpYik7UHE9TWouYihjLFBxKTtJcT16aS5iKGMsSXEpO09xPUVrLmIoYyxPcSk7TnE9a20uYihjLE5xKTtTcT1vay5iKGMsU3EpO2diPW5iLmIoYyxnYik7SHE9V2kuYihjLEhxKTtScT1hay5iKGMsUnEpO3RyeXt2YXIgRD1uZXcgeWEsSD1ZZChjLHhrKT94ay5hKGMpOiEwLEs9ITA9PT1IfHxudWxsPT1IP25ldyBMYyhEKTpIO2lmKHIoTnEpKXt2YXIgUj10YihXcShLKSksYz1uO249Uj9HcShLKTpLO3RyeXtYcShhKSxacChuKX1maW5hbGx5e249Y319ZWxzZXtSPW47bj1LO3RyeXtTcC5hP1NwLmEoYSk6U3AuY2FsbChudWxsLGEpfWZpbmFsbHl7bj1SfX0hMD09PVxuSCYmKGRiLmE/ZGIuYShcIlwiK3QoRCkpOmRiLmNhbGwobnVsbCxcIlwiK3QoRCkpKTtyZXR1cm4gbnVsbD09SD9cIlwiK3QoRCk6bnVsbH1maW5hbGx5e1JxPUEsSHE9eSxnYj13LFNxPXYsTnE9dSxPcT1wLElxPWwsUHE9ayxpYj1nLGhiPWYsUXE9ZSxUcT1kfX07WXEuQj0xO1lxLkE9ZnVuY3Rpb24oYSl7dmFyIGI9SShhKTthPUooYSk7cmV0dXJuIFlxLmYoYixhKX07dmFyIFpxPWZ1bmN0aW9uIFpxKGIpe2Zvcih2YXIgYz1bXSxkPWFyZ3VtZW50cy5sZW5ndGgsZT0wOzspaWYoZTxkKWMucHVzaChhcmd1bWVudHNbZV0pLGUrPTE7ZWxzZSBicmVhaztzd2l0Y2goYy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gWnEuYShhcmd1bWVudHNbMF0pO2Nhc2UgMjpyZXR1cm4gWnEuYihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYy5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fTtcblpxLmE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHlhLGM9bjtuPW5ldyBMYyhiKTt0cnl7cmV0dXJuIFpxLmIoYSxuKSxkYi5hP2RiLmEoXCJcIit0KGIpKTpkYi5jYWxsKG51bGwsXCJcIit0KGIpKX1maW5hbGx5e249Y319O1pxLmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10YihXcShiKSksZD1uO249Yz9HcShiKTpiO3RyeXtjPU5xO05xPSEwO3RyeXtYcShhKX1maW5hbGx5e05xPWN9Qy5iKDAsJHAobixkaikpfHx4KG4sXCJcXG5cIik7cmV0dXJuIFpwKG4pfWZpbmFsbHl7bj1kfX07WnEuQj0yO2Z1bmN0aW9uICRxKGEsYil7aWYodGIoYi5hP2IuYShhKTpiLmNhbGwobnVsbCxhKSkpdGhyb3cgRXJyb3IoW3QoXCJCYWQgYXJndW1lbnQ6IFwiKSx0KGEpLHQoXCIuIEl0IG11c3QgYmUgb25lIG9mIFwiKSx0KGIpXS5qb2luKFwiXCIpKTt9ZnVuY3Rpb24gYXIoKXt2YXIgYT1pYjtyZXR1cm4gcihhKT9VcT49aWI6YX1cbmZ1bmN0aW9uIGJyKGEpeyRxKGEsbmV3IGRoKG51bGwsbmV3IHEobnVsbCw0LFthaSxudWxsLFRpLG51bGwseGosbnVsbCwkbCxudWxsXSxudWxsKSxudWxsKSk7THEoYSl9ZnVuY3Rpb24gY3IoYSxiKXskcShhLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMixbcWksbnVsbCxvbCxudWxsXSxudWxsKSxudWxsKSk7TXEoYSxiKX1mdW5jdGlvbiBkcihhLGIsYyl7Yj1cInN0cmluZ1wiPT09dHlwZW9mIGI/ZXIuYT9lci5hKGIpOmVyLmNhbGwobnVsbCxiKTpiO2M9ZnIuYT9mci5hKGMpOmZyLmNhbGwobnVsbCxjKTtyZXR1cm4gZ3I/Z3IoYSxiLGMpOmhyLmNhbGwobnVsbCxhLGIsYyl9dmFyIGlyPW51bGw7ZnVuY3Rpb24ganIoYSxiKXt2YXIgYz1bdChhKSx0KFwiXFxuXCIpLHQoaXIpLHQoXCJcXG5cIiksdChQZSh0LHNmKGIsXCIgXCIpKSksdChcIl5cIiksdChcIlxcblwiKV0uam9pbihcIlwiKTt0aHJvdyBFcnJvcihjKTt9XG5mdW5jdGlvbiBrcihhLGIsYyxkLGUsZil7dGhpcy5EYj1hO3RoaXMuSmE9Yjt0aGlzLkNiPWM7dGhpcy53PWQ7dGhpcy5qPWU7dGhpcy52PWY7dGhpcy5vPTIyMjk2Njc1OTQ7dGhpcy5HPTgxOTJ9aD1rci5wcm90b3R5cGU7aC5XPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFFiLmModGhpcyxiLG51bGwpfTtoLlQ9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiIGluc3RhbmNlb2YgUz9iLkxhOm51bGwpe2Nhc2UgXCJzZXFcIjpyZXR1cm4gdGhpcy5EYjtjYXNlIFwicmVzdFwiOnJldHVybiB0aGlzLkphO2Nhc2UgXCJwb3NcIjpyZXR1cm4gdGhpcy5DYjtkZWZhdWx0OnJldHVybiBCLmModGhpcy5qLGIsYyl9fTtcbmguVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIG9oKGIsdmgsXCJcIixcIiBcIixcIlwiLGMsYSl9fSh0aGlzKSxcIiNjbGpzLnBwcmludC5hcmctbmF2aWdhdG9ye1wiLFwiLCBcIixcIn1cIixjLE1lLmIobmV3IFYobnVsbCwzLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbYW0sdGhpcy5EYl0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbUG0sdGhpcy5KYV0sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbUmosdGhpcy5DYl0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsMyxuZXcgVihudWxsLDMsNSxXLFthbSxQbSxSal0sbnVsbCkscih0aGlzLmopP0tjKHRoaXMuaik6VmUoKSl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnd9O2guWj1mdW5jdGlvbigpe3JldHVybiAzK00odGhpcy5qKX07XG5oLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDMsW1JqLG51bGwsYW0sbnVsbCxQbSxudWxsXSxudWxsKSxudWxsKSxiKT9JZC5iKHlkKHlmLmIoWCx0aGlzKSx0aGlzLncpLGIpOm5ldyBrcih0aGlzLkRiLHRoaXMuSmEsdGhpcy5DYix0aGlzLncsVWUoSWQuYih0aGlzLmosYikpLG51bGwpfTtcbmguWmE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByKFQuYj9ULmIoYW0sYik6VC5jYWxsKG51bGwsYW0sYikpP25ldyBrcihjLHRoaXMuSmEsdGhpcy5DYix0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihQbSxiKTpULmNhbGwobnVsbCxQbSxiKSk/bmV3IGtyKHRoaXMuRGIsYyx0aGlzLkNiLHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKFJqLGIpOlQuY2FsbChudWxsLFJqLGIpKT9uZXcga3IodGhpcy5EYix0aGlzLkphLGMsdGhpcy53LHRoaXMuaixudWxsKTpuZXcga3IodGhpcy5EYix0aGlzLkphLHRoaXMuQ2IsdGhpcy53LFEuYyh0aGlzLmosYixjKSxudWxsKX07aC5ZPWZ1bmN0aW9uKCl7cmV0dXJuIEUoTWUuYihuZXcgVihudWxsLDMsNSxXLFtuZXcgVihudWxsLDIsNSxXLFthbSx0aGlzLkRiXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtQbSx0aGlzLkphXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtSaix0aGlzLkNiXSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O1xuaC5PPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBrcih0aGlzLkRiLHRoaXMuSmEsdGhpcy5DYixiLHRoaXMuaix0aGlzLnYpfTtoLlg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUmQoYik/U2IodGhpcyxKYi5iKGIsMCksSmIuYihiLDEpKTphZShIYix0aGlzLGIpfTtmdW5jdGlvbiBmcihhKXthPUUoYSk7cmV0dXJuIG5ldyBrcihhLGEsMCxudWxsLG51bGwsbnVsbCl9ZnVuY3Rpb24gbHIoYSl7dmFyIGI9UG0uYShhKTtpZihyKGIpKXJldHVybiBuZXcgVihudWxsLDIsNSxXLFtJKGIpLG5ldyBrcihhbS5hKGEpLEooYiksUmouYShhKSsxLG51bGwsbnVsbCxudWxsKV0sbnVsbCk7dGhyb3cgRXJyb3IoXCJOb3QgZW5vdWdoIGFyZ3VtZW50cyBmb3IgZm9ybWF0IGRlZmluaXRpb25cIik7fVxuZnVuY3Rpb24gbXIoYSl7dmFyIGI9bHIoYSk7YT1PKGIsMCxudWxsKTtiPU8oYiwxLG51bGwpO2E9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2VyLmE/ZXIuYShhKTplci5jYWxsKG51bGwsYSk6YTtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbYSxiXSxudWxsKX1mdW5jdGlvbiBucihhLGIpe2lmKGI+PVJqLmEoYSkpe3ZhciBjPVJqLmEoYSktYjtyZXR1cm4gb3IuYj9vci5iKGEsYyk6b3IuY2FsbChudWxsLGEsYyl9cmV0dXJuIG5ldyBrcihhbS5hKGEpLG9mKGIsYW0uYShhKSksYixudWxsLG51bGwsbnVsbCl9ZnVuY3Rpb24gb3IoYSxiKXt2YXIgYz1Sai5hKGEpK2I7cmV0dXJuIDA+Yj9ucihhLGMpOm5ldyBrcihhbS5hKGEpLG9mKGIsUG0uYShhKSksYyxudWxsLG51bGwsbnVsbCl9XG5mdW5jdGlvbiBwcihhLGIsYyxkLGUsZixnKXt0aGlzLnRiPWE7dGhpcy5zYj1iO3RoaXMudWI9Yzt0aGlzLm9mZnNldD1kO3RoaXMudz1lO3RoaXMuaj1mO3RoaXMudj1nO3RoaXMubz0yMjI5NjY3NTk0O3RoaXMuRz04MTkyfWg9cHIucHJvdG90eXBlO2guVz1mdW5jdGlvbihhLGIpe3JldHVybiBRYi5jKHRoaXMsYixudWxsKX07aC5UPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYiBpbnN0YW5jZW9mIFM/Yi5MYTpudWxsKXtjYXNlIFwiZnVuY1wiOnJldHVybiB0aGlzLnRiO2Nhc2UgXCJkZWZcIjpyZXR1cm4gdGhpcy5zYjtjYXNlIFwicGFyYW1zXCI6cmV0dXJuIHRoaXMudWI7Y2FzZSBcIm9mZnNldFwiOnJldHVybiB0aGlzLm9mZnNldDtkZWZhdWx0OnJldHVybiBCLmModGhpcy5qLGIsYyl9fTtcbmguVT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG9oKGIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIG9oKGIsdmgsXCJcIixcIiBcIixcIlwiLGMsYSl9fSh0aGlzKSxcIiNjbGpzLnBwcmludC5jb21waWxlZC1kaXJlY3RpdmV7XCIsXCIsIFwiLFwifVwiLGMsTWUuYihuZXcgVihudWxsLDQsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtqaix0aGlzLnRiXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtTbCx0aGlzLnNiXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFtOaix0aGlzLnViXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFthaix0aGlzLm9mZnNldF0sbnVsbCldLG51bGwpLHRoaXMuaikpfTtoLkNhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsZygwLHRoaXMsNCxuZXcgVihudWxsLDQsNSxXLFtqaixTbCxOaixhal0sbnVsbCkscih0aGlzLmopP0tjKHRoaXMuaik6VmUoKSl9O2guTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnd9O2guWj1mdW5jdGlvbigpe3JldHVybiA0K00odGhpcy5qKX07XG5oLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnY7cmV0dXJuIG51bGwhPWE/YTp0aGlzLnY9YT1xZSh0aGlzKX07aC5GPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1yKGIpPyhjPXRoaXMuY29uc3RydWN0b3I9PT1iLmNvbnN0cnVjdG9yKT9rZyh0aGlzLGIpOmM6YjtyZXR1cm4gcihjKT8hMDohMX07aC5iYj1mdW5jdGlvbihhLGIpe3JldHVybiBZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDQsW2FqLG51bGwsamosbnVsbCxOaixudWxsLFNsLG51bGxdLG51bGwpLG51bGwpLGIpP0lkLmIoeWQoeWYuYihYLHRoaXMpLHRoaXMudyksYik6bmV3IHByKHRoaXMudGIsdGhpcy5zYix0aGlzLnViLHRoaXMub2Zmc2V0LHRoaXMudyxVZShJZC5iKHRoaXMuaixiKSksbnVsbCl9O1xuaC5aYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHIoVC5iP1QuYihqaixiKTpULmNhbGwobnVsbCxqaixiKSk/bmV3IHByKGMsdGhpcy5zYix0aGlzLnViLHRoaXMub2Zmc2V0LHRoaXMudyx0aGlzLmosbnVsbCk6cihULmI/VC5iKFNsLGIpOlQuY2FsbChudWxsLFNsLGIpKT9uZXcgcHIodGhpcy50YixjLHRoaXMudWIsdGhpcy5vZmZzZXQsdGhpcy53LHRoaXMuaixudWxsKTpyKFQuYj9ULmIoTmosYik6VC5jYWxsKG51bGwsTmosYikpP25ldyBwcih0aGlzLnRiLHRoaXMuc2IsYyx0aGlzLm9mZnNldCx0aGlzLncsdGhpcy5qLG51bGwpOnIoVC5iP1QuYihhaixiKTpULmNhbGwobnVsbCxhaixiKSk/bmV3IHByKHRoaXMudGIsdGhpcy5zYix0aGlzLnViLGMsdGhpcy53LHRoaXMuaixudWxsKTpuZXcgcHIodGhpcy50Yix0aGlzLnNiLHRoaXMudWIsdGhpcy5vZmZzZXQsdGhpcy53LFEuYyh0aGlzLmosYixjKSxudWxsKX07XG5oLlk9ZnVuY3Rpb24oKXtyZXR1cm4gRShNZS5iKG5ldyBWKG51bGwsNCw1LFcsW25ldyBWKG51bGwsMiw1LFcsW2pqLHRoaXMudGJdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW1NsLHRoaXMuc2JdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW05qLHRoaXMudWJdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsW2FqLHRoaXMub2Zmc2V0XSxudWxsKV0sbnVsbCksdGhpcy5qKSl9O2guTz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgcHIodGhpcy50Yix0aGlzLnNiLHRoaXMudWIsdGhpcy5vZmZzZXQsYix0aGlzLmosdGhpcy52KX07aC5YPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJkKGIpP1NiKHRoaXMsSmIuYihiLDApLEpiLmIoYiwxKSk6YWUoSGIsdGhpcyxiKX07XG5mdW5jdGlvbiBxcihhLGIpe3ZhciBjPU8oYSwwLG51bGwpLGQ9TyhhLDEsbnVsbCksZT1PKGQsMCxudWxsKSxkPU8oZCwxLG51bGwpLGY9WWQobmV3IGRoKG51bGwsbmV3IHEobnVsbCwyLFt3ayxudWxsLHBsLG51bGxdLG51bGwpLG51bGwpLGMpP25ldyBWKG51bGwsMiw1LFcsW2UsYl0sbnVsbCk6Qy5iKGUsVmopP2xyKGIpOkMuYihlLHRqKT9uZXcgVihudWxsLDIsNSxXLFtNKFBtLmEoYikpLGJdLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW2UsYl0sbnVsbCksZT1PKGYsMCxudWxsKSxmPU8oZiwxLG51bGwpO3JldHVybiBuZXcgVihudWxsLDIsNSxXLFtuZXcgVihudWxsLDIsNSxXLFtjLG5ldyBWKG51bGwsMiw1LFcsW2UsZF0sbnVsbCldLG51bGwpLGZdLG51bGwpfWZ1bmN0aW9uIHJyKGEsYil7dmFyIGM9VnAocXIsYixhKSxkPU8oYywwLG51bGwpLGM9TyhjLDEsbnVsbCk7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW3lmLmIoWCxkKSxjXSxudWxsKX1cbnZhciBzcj1uZXcgcShudWxsLDMsWzIsXCIjYlwiLDgsXCIjb1wiLDE2LFwiI3hcIl0sbnVsbCk7ZnVuY3Rpb24gdHIoYSl7cmV0dXJuIFhkKGEpP0MuYihUcSwxMCk/W3QoYSksdChyKFNxKT9cIi5cIjpudWxsKV0uam9pbihcIlwiKTpbdChyKFNxKT9mdW5jdGlvbigpe3ZhciBhPUIuYihzcixUcSk7cmV0dXJuIHIoYSk/YTpbdChcIiNcIiksdChUcSksdChcInJcIildLmpvaW4oXCJcIil9KCk6bnVsbCksdCh1ci5iP3VyLmIoVHEsYSk6dXIuY2FsbChudWxsLFRxLGEpKV0uam9pbihcIlwiKTpudWxsfVxuZnVuY3Rpb24gdnIoYSxiLGMpe2M9bHIoYyk7dmFyIGQ9TyhjLDAsbnVsbCk7Yz1PKGMsMSxudWxsKTt2YXIgZT10cihkKTthPXIoZSk/ZTphLmE/YS5hKGQpOmEuY2FsbChudWxsLGQpO2Q9YS5sZW5ndGg7ZT1kK21sLmEoYik7ZT1lPj1qbC5hKGIpP2U6ZSsoa2UoamwuYShiKS1lLTEsSWwuYShiKSkrMSkqSWwuYShiKTtkPVBlKHQsc2YoZS1kLFBrLmEoYikpKTtyKHBsLmEoYikpP1JwLmYoTihbW3QoZCksdChhKV0uam9pbihcIlwiKV0sMCkpOlJwLmYoTihbW3QoYSksdChkKV0uam9pbihcIlwiKV0sMCkpO3JldHVybiBjfWZ1bmN0aW9uIHdyKGEsYil7cmV0dXJuIHZlKEkoV3AoZnVuY3Rpb24oYil7cmV0dXJuIDA8Yj9uZXcgVihudWxsLDIsNSxXLFtsZShiLGEpLGtlKGIsYSldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW251bGwsbnVsbF0sbnVsbCl9LGIpKSl9XG5mdW5jdGlvbiB4cihhLGIpe3JldHVybiAwPT09Yj9cIjBcIjpQZSh0LG1mLmIoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDEwPmE/aWUoVXAoXCIwXCIpK2EpOmllKFVwKFwiYVwiKSsoYS0xMCkpfX0oYiksd3IoYSxiKSkpfWZ1bmN0aW9uIHVyKGEsYil7cmV0dXJuIHhyKGEsYil9ZnVuY3Rpb24geXIoYSxiKXtyZXR1cm4gdmUoSShXcChmdW5jdGlvbihiKXtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbRSh2ZShuZihhLGIpKSksRShvZihhLGIpKV0sbnVsbCl9LHZlKGIpKSkpfVxuZnVuY3Rpb24genIoYSxiLGMpe3ZhciBkPWxyKGMpLGU9TyhkLDAsbnVsbCksZj1PKGQsMSxudWxsKTtpZihyKFhkKGUpPyEwOlwibnVtYmVyXCIhPT10eXBlb2YgZXx8aXNOYU4oZSl8fEluZmluaXR5PT09ZXx8cGFyc2VGbG9hdChlKT09PXBhcnNlSW50KGUsMTApPyExOkMuYihlLE1hdGguZmxvb3IoZSkpKSl7dmFyIGc9MD5lLGs9Zz8tZTplLGw9eHIoYSxrKTthPXIod2suYShiKSk/ZnVuY3Rpb24oKXt2YXIgYT1tZi5iKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBQZSh0LGEpfX0oZyxrLGwsZCxlLGYpLHlyKExpLmEoYiksbCkpLGM9c2YoTShhKSxjbi5hKGIpKTtyZXR1cm4gUGUodCxKKHVmLmIoYyxhKSkpfSgpOmw7YT1nP1t0KFwiLVwiKSx0KGEpXS5qb2luKFwiXCIpOnIocGwuYShiKSk/W3QoXCIrXCIpLHQoYSldLmpvaW4oXCJcIik6YTthPWEubGVuZ3RoPGpsLmEoYik/W3QoUGUodCxzZihqbC5hKGIpLWEubGVuZ3RoLFBrLmEoYikpKSksdChhKV0uam9pbihcIlwiKTphO1xuUnAuZihOKFthXSwwKSl9ZWxzZSB2cihCaCxuZXcgcShudWxsLDUsW2psLGpsLmEoYiksSWwsMSxtbCwwLFBrLFBrLmEoYikscGwsITBdLG51bGwpLGZyKG5ldyBWKG51bGwsMSw1LFcsW2VdLG51bGwpKSk7cmV0dXJuIGZ9XG52YXIgQXI9bmV3IFYobnVsbCwyMCw1LFcsXCJ6ZXJvIG9uZSB0d28gdGhyZWUgZm91ciBmaXZlIHNpeCBzZXZlbiBlaWdodCBuaW5lIHRlbiBlbGV2ZW4gdHdlbHZlIHRoaXJ0ZWVuIGZvdXJ0ZWVuIGZpZnRlZW4gc2l4dGVlbiBzZXZlbnRlZW4gZWlnaHRlZW4gbmluZXRlZW5cIi5zcGxpdChcIiBcIiksbnVsbCksQnI9bmV3IFYobnVsbCwyMCw1LFcsXCJ6ZXJvdGggZmlyc3Qgc2Vjb25kIHRoaXJkIGZvdXJ0aCBmaWZ0aCBzaXh0aCBzZXZlbnRoIGVpZ2h0aCBuaW50aCB0ZW50aCBlbGV2ZW50aCB0d2VsZnRoIHRoaXJ0ZWVudGggZm91cnRlZW50aCBmaWZ0ZWVudGggc2l4dGVlbnRoIHNldmVudGVlbnRoIGVpZ2h0ZWVudGggbmluZXRlZW50aFwiLnNwbGl0KFwiIFwiKSxudWxsKSxDcj1uZXcgVihudWxsLDEwLDUsVyxcIiAgdHdlbnR5IHRoaXJ0eSBmb3J0eSBmaWZ0eSBzaXh0eSBzZXZlbnR5IGVpZ2h0eSBuaW5ldHlcIi5zcGxpdChcIiBcIiksbnVsbCksRHI9bmV3IFYobnVsbCwxMCw1LFcsXCIgIHR3ZW50aWV0aCB0aGlydGlldGggZm9ydGlldGggZmlmdGlldGggc2l4dGlldGggc2V2ZW50aWV0aCBlaWdodGlldGggbmluZXRpZXRoXCIuc3BsaXQoXCIgXCIpLFxubnVsbCksRXI9bmV3IFYobnVsbCwyMiw1LFcsXCIgdGhvdXNhbmQgbWlsbGlvbiBiaWxsaW9uIHRyaWxsaW9uIHF1YWRyaWxsaW9uIHF1aW50aWxsaW9uIHNleHRpbGxpb24gc2VwdGlsbGlvbiBvY3RpbGxpb24gbm9uaWxsaW9uIGRlY2lsbGlvbiB1bmRlY2lsbGlvbiBkdW9kZWNpbGxpb24gdHJlZGVjaWxsaW9uIHF1YXR0dW9yZGVjaWxsaW9uIHF1aW5kZWNpbGxpb24gc2V4ZGVjaWxsaW9uIHNlcHRlbmRlY2lsbGlvbiBvY3RvZGVjaWxsaW9uIG5vdmVtZGVjaWxsaW9uIHZpZ2ludGlsbGlvblwiLnNwbGl0KFwiIFwiKSxudWxsKTtcbmZ1bmN0aW9uIEZyKGEpe3ZhciBiPWtlKGEsMTAwKSxjPWxlKGEsMTAwKTtyZXR1cm5bdCgwPGI/W3QocWQoQXIsYikpLHQoXCIgaHVuZHJlZFwiKV0uam9pbihcIlwiKTpudWxsKSx0KDA8YiYmMDxjP1wiIFwiOm51bGwpLHQoMDxjPzIwPmM/cWQoQXIsYyk6ZnVuY3Rpb24oKXt2YXIgYT1rZShjLDEwKSxiPWxlKGMsMTApO3JldHVyblt0KDA8YT9xZChDcixhKTpudWxsKSx0KDA8YSYmMDxiP1wiLVwiOm51bGwpLHQoMDxiP3FkKEFyLGIpOm51bGwpXS5qb2luKFwiXCIpfSgpOm51bGwpXS5qb2luKFwiXCIpfVxuZnVuY3Rpb24gR3IoYSxiKXtmb3IodmFyIGM9TShhKSxkPUZkLGM9Yy0xLGU9SShhKSxmPUooYSk7Oyl7aWYobnVsbD09ZilyZXR1cm5bdChQZSh0LHZmKFwiLCBcIixkKSkpLHQoTGQoZSl8fExkKGQpP251bGw6XCIsIFwiKSx0KGUpLHQoIUxkKGUpJiYwPGMrYj9bdChcIiBcIiksdChxZChFcixjK2IpKV0uam9pbihcIlwiKTpudWxsKV0uam9pbihcIlwiKTtkPUxkKGUpP2Q6RWQuYihkLFt0KGUpLHQoXCIgXCIpLHQocWQoRXIsYytiKSldLmpvaW4oXCJcIikpOy0tYztlPUkoZik7Zj1KKGYpfX1cbmZ1bmN0aW9uIEhyKGEpe3ZhciBiPWtlKGEsMTAwKSxjPWxlKGEsMTAwKTtyZXR1cm5bdCgwPGI/W3QocWQoQXIsYikpLHQoXCIgaHVuZHJlZFwiKV0uam9pbihcIlwiKTpudWxsKSx0KDA8YiYmMDxjP1wiIFwiOm51bGwpLHQoMDxjPzIwPmM/cWQoQnIsYyk6ZnVuY3Rpb24oKXt2YXIgYT1rZShjLDEwKSxiPWxlKGMsMTApO3JldHVybiAwPGEmJiEoMDxiKT9xZChEcixhKTpbdCgwPGE/cWQoQ3IsYSk6bnVsbCksdCgwPGEmJjA8Yj9cIi1cIjpudWxsKSx0KDA8Yj9xZChCcixiKTpudWxsKV0uam9pbihcIlwiKX0oKTowPGI/XCJ0aFwiOm51bGwpXS5qb2luKFwiXCIpfVxudmFyIElyPW5ldyBWKG51bGwsNCw1LFcsW25ldyBWKG51bGwsOSw1LFcsXCJJIElJIElJSSBJSUlJIFYgVkkgVklJIFZJSUkgVklJSUlcIi5zcGxpdChcIiBcIiksbnVsbCksbmV3IFYobnVsbCw5LDUsVyxcIlggWFggWFhYIFhYWFggTCBMWCBMWFggTFhYWCBMWFhYWFwiLnNwbGl0KFwiIFwiKSxudWxsKSxuZXcgVihudWxsLDksNSxXLFwiQyBDQyBDQ0MgQ0NDQyBEIERDIERDQyBEQ0NDIERDQ0NDXCIuc3BsaXQoXCIgXCIpLG51bGwpLG5ldyBWKG51bGwsMyw1LFcsW1wiTVwiLFwiTU1cIixcIk1NTVwiXSxudWxsKV0sbnVsbCksSnI9bmV3IFYobnVsbCw0LDUsVyxbbmV3IFYobnVsbCw5LDUsVyxcIkkgSUkgSUlJIElWIFYgVkkgVklJIFZJSUkgSVhcIi5zcGxpdChcIiBcIiksbnVsbCksbmV3IFYobnVsbCw5LDUsVyxcIlggWFggWFhYIFhMIEwgTFggTFhYIExYWFggWENcIi5zcGxpdChcIiBcIiksbnVsbCksbmV3IFYobnVsbCw5LDUsVyxcIkMgQ0MgQ0NDIENEIEQgREMgRENDIERDQ0MgQ01cIi5zcGxpdChcIiBcIiksbnVsbCksbmV3IFYobnVsbCxcbjMsNSxXLFtcIk1cIixcIk1NXCIsXCJNTU1cIl0sbnVsbCldLG51bGwpO2Z1bmN0aW9uIEtyKGEsYil7dmFyIGM9bHIoYiksZD1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpO2lmKFwibnVtYmVyXCI9PT10eXBlb2YgZCYmMDxkJiY0RTM+ZClmb3IodmFyIGU9d3IoMTAsZCksZD1GZCxmPU0oZSktMTs7KWlmKExkKGUpKXtScC5mKE4oW1BlKHQsZCldLDApKTticmVha31lbHNlIHZhciBnPUkoZSksZD1DLmIoMCxnKT9kOkVkLmIoZCxxZChxZChhLGYpLGctMSkpLGY9Zi0xLGU9SihlKTtlbHNlIHpyKDEwLG5ldyBxKG51bGwsNSxbamwsMCxQayxcIiBcIixjbixcIixcIixMaSwzLHdrLCEwXSxudWxsKSxmcihuZXcgVihudWxsLDEsNSxXLFtkXSxudWxsKSkpO3JldHVybiBjfXZhciBMcj1uZXcgcShudWxsLDUsWzgsXCJCYWNrc3BhY2VcIiw5LFwiVGFiXCIsMTAsXCJOZXdsaW5lXCIsMTMsXCJSZXR1cm5cIiwzMixcIlNwYWNlXCJdLG51bGwpO1xuZnVuY3Rpb24gTXIoYSxiKXt2YXIgYz1scihiKSxkPU8oYywwLG51bGwpLGM9TyhjLDEsbnVsbCksZT1VcChkKSxkPWUmMTI3LGU9ZSYxMjgsZj1CLmIoTHIsZCk7MDxlJiZScC5mKE4oW1wiTWV0YS1cIl0sMCkpO1JwLmYoTihbcihmKT9mOjMyPmQ/W3QoXCJDb250cm9sLVwiKSx0KGllKGQrNjQpKV0uam9pbihcIlwiKTpDLmIoZCwxMjcpP1wiQ29udHJvbC0/XCI6aWUoZCldLDApKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE5yKGEsYil7dmFyIGM9bHIoYiksZD1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpLGU9bGsuYShhKTtpZihyKEMuYj9DLmIoXCJvXCIsZSk6Qy5jYWxsKG51bGwsXCJvXCIsZSkpKWRyKCEwLFwiXFxcXG9+MywgJzBvXCIsTihbVXAoZCldLDApKTtlbHNlIGlmKHIoQy5iP0MuYihcInVcIixlKTpDLmNhbGwobnVsbCxcInVcIixlKSkpZHIoITAsXCJcXFxcdX40LCAnMHhcIixOKFtVcChkKV0sMCkpO2Vsc2UgaWYocihDLmI/Qy5iKG51bGwsZSk6Qy5jYWxsKG51bGwsbnVsbCxlKSkpeChuLHIoQy5iP0MuYihcIlxcYlwiLGQpOkMuY2FsbChudWxsLFwiXFxiXCIsZCkpP1wiXFxcXGJhY2tzcGFjZVwiOnIoQy5iP0MuYihcIlxcdFwiLGQpOkMuY2FsbChudWxsLFwiXFx0XCIsZCkpP1wiXFxcXHRhYlwiOnIoQy5iP0MuYihcIlxcblwiLGQpOkMuY2FsbChudWxsLFwiXFxuXCIsZCkpP1wiXFxcXG5ld2xpbmVcIjpyKEMuYj9DLmIoXCJcXGZcIixkKTpDLmNhbGwobnVsbCxcIlxcZlwiLGQpKT9cIlxcXFxmb3JtZmVlZFwiOnIoQy5iP0MuYihcIlxcclwiLGQpOkMuY2FsbChudWxsLFxuXCJcXHJcIixkKSk/XCJcXFxccmV0dXJuXCI6cihDLmI/Qy5iKCdcIicsZCk6Qy5jYWxsKG51bGwsJ1wiJyxkKSk/J1xcXFxcIic6cihDLmI/Qy5iKFwiXFxcXFwiLGQpOkMuY2FsbChudWxsLFwiXFxcXFwiLGQpKT9cIlxcXFxcXFxcXCI6W3QoXCJcXFxcXCIpLHQoZCldLmpvaW4oXCJcIikpO2Vsc2UgdGhyb3cgRXJyb3IoW3QoXCJObyBtYXRjaGluZyBjbGF1c2U6IFwiKSx0KGUpXS5qb2luKFwiXCIpKTtyZXR1cm4gY31mdW5jdGlvbiBPcihhLGIpe3ZhciBjPWxyKGIpLGQ9TyhjLDAsbnVsbCksYz1PKGMsMSxudWxsKTtScC5mKE4oW2RdLDApKTtyZXR1cm4gY31mdW5jdGlvbiBQcihhKXthPUkoYSk7cmV0dXJuIEMuYihLbSxhKXx8Qy5iKHJrLGEpfVxuZnVuY3Rpb24gUXIoYSxiLGMpe3JldHVybiBDZChWcChmdW5jdGlvbihhLGIpe2lmKHIoUHIoYikpKXJldHVybiBuZXcgVihudWxsLDIsNSxXLFtudWxsLGJdLG51bGwpO3ZhciBkPXJyKE5qLmEoYSksYiksZT1PKGQsMCxudWxsKSxkPU8oZCwxLG51bGwpLGs9WHAoZSksZT1PKGssMCxudWxsKSxrPU8oaywxLG51bGwpLGU9US5jKGUsam0sYyk7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW251bGwsUGUoamouYShhKSxuZXcgVihudWxsLDMsNSxXLFtlLGQsa10sbnVsbCkpXSxudWxsKX0sYixhKSl9XG5mdW5jdGlvbiBScihhKXthPShcIlwiK3QoYSkpLnRvTG93ZXJDYXNlKCk7dmFyIGI9YS5pbmRleE9mKFwiZVwiKSxjPWEuaW5kZXhPZihcIi5cIik7YT0wPmI/MD5jP25ldyBWKG51bGwsMiw1LFcsW2EsXCJcIit0KE0oYSktMSldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW1t0KGEuc3Vic3RyaW5nKDAsYykpLHQoYS5zdWJzdHJpbmcoYysxKSldLmpvaW4oXCJcIiksXCJcIit0KGMtMSldLG51bGwpOjA+Yz9uZXcgVihudWxsLDIsNSxXLFthLnN1YnN0cmluZygwLGIpLGEuc3Vic3RyaW5nKGIrMSldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW1t0KGEuc3Vic3RyaW5nKDAsMSkpLHQoYS5zdWJzdHJpbmcoMixiKSldLmpvaW4oXCJcIiksYS5zdWJzdHJpbmcoYisxKV0sbnVsbCk7Yj1PKGEsMCxudWxsKTthPU8oYSwxLG51bGwpO2E6aWYoYz1NKGIpLDA8YyYmQy5iKHFkKGIsTShiKS0xKSxcIjBcIikpZm9yKC0tYzs7KXtpZigwPmMpe2I9XCJcIjticmVhayBhfWlmKEMuYihxZChiLGMpLFwiMFwiKSktLWM7ZWxzZXtiPVxuYi5zdWJzdHJpbmcoMCxjKzEpO2JyZWFrIGF9fWE6e3ZhciBjPWIsZD1NKGMpO2lmKDA8ZCYmQy5iKHFkKGMsMCksXCIwXCIpKWZvcih2YXIgZT0wOzspe2lmKEMuYihlLGQpfHwhQy5iKHFkKGMsZSksXCIwXCIpKXtjPWMuc3Vic3RyaW5nKGUpO2JyZWFrIGF9ZSs9MX19Yj1NKGIpLU0oYyk7YT0wPE0oYSkmJkMuYihxZChhLDApLFwiK1wiKT9hLnN1YnN0cmluZygxKTphO3JldHVybiBMZChjKT9uZXcgVihudWxsLDIsNSxXLFtcIjBcIiwwXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFtjLHBhcnNlSW50KGEsMTApLWJdLG51bGwpfVxuZnVuY3Rpb24gU3IoYSxiLGMsZCl7aWYocihyKGMpP2M6ZCkpe3ZhciBlPU0oYSk7ZD1yKGQpPzI+ZD8yOmQ6MDtyKGMpP2M9YitjKzE6MDw9Yj8oYz1iKzEsLS1kLGM9Yz5kP2M6ZCk6Yz1kK2I7dmFyIGY9Qy5iKGMsMCk/bmV3IFYobnVsbCw0LDUsVyxbW3QoXCIwXCIpLHQoYSldLmpvaW4oXCJcIiksYisxLDEsZSsxXSxudWxsKTpuZXcgVihudWxsLDQsNSxXLFthLGIsYyxlXSxudWxsKTtjPU8oZiwwLG51bGwpO2U9TyhmLDEsbnVsbCk7ZD1PKGYsMixudWxsKTtmPU8oZiwzLG51bGwpO2lmKHIoZCkpe2lmKDA+ZClyZXR1cm4gbmV3IFYobnVsbCwzLDUsVyxbXCIwXCIsMCwhMV0sbnVsbCk7aWYoZj5kKXtiPXFkKGMsZCk7YT1jLnN1YnN0cmluZygwLGQpO2lmKFVwKGIpPj1VcChcIjVcIikpe2E6Zm9yKGI9TShhKS0xLGM9YnwwOzspe2lmKDA+Yyl7Yj1RZSh0LFwiMVwiLHNmKGIrMSxcIjBcIikpO2JyZWFrIGF9aWYoQy5iKFwiOVwiLGEuY2hhckF0KGMpKSktLWM7ZWxzZXtiPVJlKHQsYS5zdWJzdHJpbmcoMCxcbmMpLGllKFVwKGEuY2hhckF0KGMpKSsxKSxzZihiLWMsXCIwXCIpKTticmVhayBhfX1hPU0oYik+TShhKTtjPVc7YSYmKGQ9TShiKS0xLGI9Yi5zdWJzdHJpbmcoMCxkKSk7cmV0dXJuIG5ldyBWKG51bGwsMyw1LGMsW2IsZSxhXSxudWxsKX1yZXR1cm4gbmV3IFYobnVsbCwzLDUsVyxbYSxlLCExXSxudWxsKX19fXJldHVybiBuZXcgVihudWxsLDMsNSxXLFthLGIsITFdLG51bGwpfVxuZnVuY3Rpb24gVHIoYSxiLGMpe3ZhciBkPTA+Yj9uZXcgVihudWxsLDIsNSxXLFtbdChQZSh0LHNmKC1iLTEsXCIwXCIpKSksdChhKV0uam9pbihcIlwiKSwtMV0sbnVsbCk6bmV3IFYobnVsbCwyLDUsVyxbYSxiXSxudWxsKTthPU8oZCwwLG51bGwpO3ZhciBlPU8oZCwxLG51bGwpLGQ9TShhKTtjPXIoYyk/ZStjKzE6ZSsxO2M9ZDxjP1t0KGEpLHQoUGUodCxzZihjLWQsXCIwXCIpKSldLmpvaW4oXCJcIik6YTswPmI/Yj1bdChcIi5cIiksdChjKV0uam9pbihcIlwiKTooYis9MSxiPVt0KGMuc3Vic3RyaW5nKDAsYikpLHQoXCIuXCIpLHQoYy5zdWJzdHJpbmcoYikpXS5qb2luKFwiXCIpKTtyZXR1cm4gYn1mdW5jdGlvbiBVcihhLGIpe3JldHVybiAwPmI/W3QoXCIuXCIpLHQoYSldLmpvaW4oXCJcIik6W3QoYS5zdWJzdHJpbmcoMCxiKSksdChcIi5cIiksdChhLnN1YnN0cmluZyhiKSldLmpvaW4oXCJcIil9XG5mdW5jdGlvbiBWcihhLGIpe3ZhciBjPXJqLmEoYSksZD1ObC5hKGEpLGU9bHIoYiksZj1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpLGc9MD5mP25ldyBWKG51bGwsMiw1LFcsW1wiLVwiLC1mXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFtcIitcIixmXSxudWxsKSxrPU8oZywwLG51bGwpLGc9TyhnLDEsbnVsbCksZz1ScihnKSxsPU8oZywwLG51bGwpLHA9TyhnLDEsbnVsbCkrdGsuYShhKSxnPWZ1bmN0aW9uKCl7dmFyIGI9cGwuYShhKTtyZXR1cm4gcihiKT9iOjA+Zn0oKSx1PXRiKGQpJiZNKGwpLTE8PXAsdj1TcihsLHAsZCxyKGMpP2MtKHIoZyk/MTowKTpudWxsKSxsPU8odiwwLG51bGwpLHA9Tyh2LDEsbnVsbCksdj1PKHYsMixudWxsKSxsPVRyKGwscih2KT9wKzE6cCxkKSxkPXIocihjKT9yKGQpPzE8PWQmJkMuYihsLmNoYXJBdCgwKSxcIjBcIikmJkMuYihsLmNoYXJBdCgxKSxcIi5cIikmJk0obCk+Yy0ocihnKT8xOjApOmQ6Yyk/bC5zdWJzdHJpbmcoMSk6bCxwPUMuYihJKGQpLFwiLlwiKTtcbmlmKHIoYykpe3ZhciBsPU0oZCksbD1yKGcpP2wrMTpsLHA9cCYmIShsPj1jKSx1PXUmJiEobD49Yyksdz1wfHx1P2wrMTpsO3IoZnVuY3Rpb24oKXt2YXIgYj13PmM7cmV0dXJuIGI/RGwuYShhKTpifSgpKT9ScC5mKE4oW1BlKHQsc2YoYyxEbC5hKGEpKSldLDApKTpScC5mKE4oW1t0KFBlKHQsc2YoYy13LFBrLmEoYSkpKSksdChyKGcpP2s6bnVsbCksdChwP1wiMFwiOm51bGwpLHQoZCksdCh1P1wiMFwiOm51bGwpXS5qb2luKFwiXCIpXSwwKSl9ZWxzZSBScC5mKE4oW1t0KHIoZyk/azpudWxsKSx0KHA/XCIwXCI6bnVsbCksdChkKSx0KHU/XCIwXCI6bnVsbCldLmpvaW4oXCJcIildLDApKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFdyKGEsYil7dmFyIGM9bHIoYiksZD1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpLGU9UnIoMD5kPy1kOmQpO08oZSwwLG51bGwpO2ZvcihPKGUsMSxudWxsKTs7KXt2YXIgZj1PKGUsMCxudWxsKSxnPU8oZSwxLG51bGwpLGs9cmouYShhKSxsPU5sLmEoYSkscD1qay5hKGEpLHU9dGsuYShhKSx2PWZ1bmN0aW9uKCl7dmFyIGI9WG0uYShhKTtyZXR1cm4gcihiKT9iOlwiRVwifSgpLGU9ZnVuY3Rpb24oKXt2YXIgYj1wbC5hKGEpO3JldHVybiByKGIpP2I6MD5kfSgpLHc9MD49dSx5PWctKHUtMSksQT1cIlwiK3QoTWF0aC5hYnMoeSkpLHY9W3QodiksdCgwPnk/XCItXCI6XCIrXCIpLHQocihwKT9QZSh0LHNmKHAtTShBKSxcIjBcIikpOm51bGwpLHQoQSldLmpvaW4oXCJcIiksRD1NKHYpLHk9TShmKSxmPVt0KFBlKHQsc2YoLXUsXCIwXCIpKSksdChmKSx0KHIobCk/UGUodCxzZihsLSh5LTEpLSgwPnU/LXU6MCksXCIwXCIpKTpudWxsKV0uam9pbihcIlwiKSx5PXIoayk/ay1EOm51bGwsZj1TcihmLFxuMCxDLmIodSwwKT9sLTE6MDx1P2w6MD51P2wtMTpudWxsLHIoeSk/eS0ocihlKT8xOjApOm51bGwpLHk9TyhmLDAsbnVsbCk7TyhmLDEsbnVsbCk7QT1PKGYsMixudWxsKTtmPVVyKHksdSk7bD1DLmIodSxNKHkpKSYmbnVsbD09bDtpZih0YihBKSl7aWYocihrKSl7dmFyIGc9TShmKStELGc9cihlKT9nKzE6ZyxIPSh3PXcmJiFDLmIoZyxrKSk/ZysxOmcsZz1sJiZIPGs7cihmdW5jdGlvbigpe3ZhciBiO2I9SD5rO2J8fChiPXAsYj1yKGIpP0QtMj5wOmIpO3JldHVybiByKGIpP0RsLmEoYSk6Yn0oKSk/UnAuZihOKFtQZSh0LHNmKGssRGwuYShhKSkpXSwwKSk6UnAuZihOKFtbdChQZSh0LHNmKGstSC0oZz8xOjApLFBrLmEoYSkpKSksdChyKGUpPzA+ZD9cIi1cIjpcIitcIjpudWxsKSx0KHc/XCIwXCI6bnVsbCksdChmKSx0KGc/XCIwXCI6bnVsbCksdCh2KV0uam9pbihcIlwiKV0sMCkpfWVsc2UgUnAuZihOKFtbdChyKGUpPzA+ZD9cIi1cIjpcIitcIjpudWxsKSx0KHc/XCIwXCI6bnVsbCksdChmKSx0KGw/XCIwXCI6XG5udWxsKSx0KHYpXS5qb2luKFwiXCIpXSwwKSk7YnJlYWt9ZWxzZSBlPW5ldyBWKG51bGwsMiw1LFcsW3ksZysxXSxudWxsKX1yZXR1cm4gY31mdW5jdGlvbiBYcihhLGIpe3ZhciBjPWxyKGIpLGQ9TyhjLDAsbnVsbCk7TyhjLDEsbnVsbCk7dmFyIGM9UnIoMD5kPy1kOmQpLGU9TyhjLDAsbnVsbCksYz1PKGMsMSxudWxsKSxmPXJqLmEoYSksZz1ObC5hKGEpLGs9amsuYShhKSxjPUMuYihkLDApPzA6YysxLGQ9cihrKT9rKzI6NCxmPXIoZik/Zi1kOm51bGw7cihnKT9lPWc6KGU9TShlKSxnPTc+Yz9jOjcsZT1lPmc/ZTpnKTtjPWUtYztyZXR1cm4gMDw9YyYmYzw9ZT8oYz1WcihuZXcgcShudWxsLDYsW3JqLGYsTmwsYyx0aywwLERsLERsLmEoYSksUGssUGsuYShhKSxwbCxwbC5hKGEpXSxudWxsKSxiKSxScC5mKE4oW1BlKHQsc2YoZCxcIiBcIikpXSwwKSksYyk6V3IoYSxiKX1cbmZ1bmN0aW9uIFlyKGEsYil7dmFyIGM9bHIoYiksZD1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpLGU9UnIoTWF0aC5hYnMoZCkpLGY9TyhlLDAsbnVsbCksZz1PKGUsMSxudWxsKSxrPU5sLmEoYSksbD1xai5hKGEpLGU9cmouYShhKSxwPWZ1bmN0aW9uKCl7dmFyIGI9cGwuYShhKTtyZXR1cm4gcihiKT9iOjA+ZH0oKSx1PVNyKGYsZyxrLG51bGwpLGY9Tyh1LDAsbnVsbCksZz1PKHUsMSxudWxsKSx1PU8odSwyLG51bGwpLGs9VHIoZixyKHUpP2crMTpnLGspLGw9W3QoUGUodCxzZihsLWsuaW5kZXhPZihcIi5cIiksXCIwXCIpKSksdChrKV0uam9pbihcIlwiKSxrPU0obCkrKHIocCk/MTowKTtScC5mKE4oW1t0KHIoZnVuY3Rpb24oKXt2YXIgYj13ay5hKGEpO3JldHVybiByKGIpP3A6Yn0oKSk/MD5kP1wiLVwiOlwiK1wiOm51bGwpLHQoUGUodCxzZihlLWssUGsuYShhKSkpKSx0KHIoZnVuY3Rpb24oKXt2YXIgYj10Yih3ay5hKGEpKTtyZXR1cm4gYj9wOmJ9KCkpPzA+ZD9cIi1cIjpcIitcIjpudWxsKSx0KGwpXS5qb2luKFwiXCIpXSxcbjApKTtyZXR1cm4gY31mdW5jdGlvbiBacihhLGIpe3ZhciBjPW1pLmEoYSksZD1yKGMpP25ldyBWKG51bGwsMiw1LFcsW2MsYl0sbnVsbCk6bHIoYiksYz1PKGQsMCxudWxsKSxkPU8oZCwxLG51bGwpLGU9VmwuYShhKSxjPTA+Y3x8Yz49TShlKT9JKFNpLmEoYSkpOnFkKGUsYyk7cmV0dXJuIHIoYyk/UXIoYyxkLGptLmEoYSkpOmR9ZnVuY3Rpb24gJHIoYSxiKXt2YXIgYz1scihiKSxkPU8oYywwLG51bGwpLGM9TyhjLDEsbnVsbCksZT1WbC5hKGEpLGQ9cihkKT9DZChlKTpJKGUpO3JldHVybiByKGQpP1FyKGQsYyxqbS5hKGEpKTpjfWZ1bmN0aW9uIGFzKGEsYil7dmFyIGM9bHIoYiksZD1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpLGU9VmwuYShhKSxlPXIoZCk/SShlKTpudWxsO3JldHVybiByKGQpP3IoZSk/UXIoZSxiLGptLmEoYSkpOmI6Y31cbmZ1bmN0aW9uIGJzKGEsYil7Zm9yKHZhciBjPVFqLmEoYSksZD1JKFZsLmEoYSkpLGU9TGQoZCk/bXIoYik6bmV3IFYobnVsbCwyLDUsVyxbZCxiXSxudWxsKSxkPU8oZSwwLG51bGwpLGU9TyhlLDEsbnVsbCksZT1scihlKSxmPU8oZSwwLG51bGwpLGU9TyhlLDEsbnVsbCksZz0wLGY9ZnIoZiksaz0tMTs7KXtpZih0YihjKSYmQy5iKFJqLmEoZiksaykmJjE8Zyl0aHJvdyBFcnJvcihcIiV7IGNvbnN0cnVjdCBub3QgY29uc3VtaW5nIGFueSBhcmd1bWVudHM6IEluZmluaXRlIGxvb3AhXCIpO2s9TGQoUG0uYShmKSkmJih0Yih3ay5hKGJsLmEoYSkpKXx8MDxnKTtpZihyKGs/azpyKGMpP2c+PWM6YykpcmV0dXJuIGU7az1RcihkLGYsam0uYShhKSk7aWYoQy5iKEttLEkoaykpKXJldHVybiBlO3ZhciBnPWcrMSxsPVJqLmEoZiksZj1rLGs9bH19XG5mdW5jdGlvbiBjcyhhLGIpe2Zvcih2YXIgYz1Rai5hKGEpLGQ9SShWbC5hKGEpKSxlPUxkKGQpP21yKGIpOm5ldyBWKG51bGwsMiw1LFcsW2QsYl0sbnVsbCksZD1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpLGU9bHIoZSksZj1PKGUsMCxudWxsKSxlPU8oZSwxLG51bGwpLGc9MDs7KXt2YXIgaz1MZChmKSYmKHRiKHdrLmEoYmwuYShhKSkpfHwwPGcpO2lmKHIoaz9rOnIoYyk/Zz49YzpjKSlyZXR1cm4gZTtrPVFyKGQsZnIoSShmKSksZnIoSihmKSkpO2lmKEMuYihyayxJKGspKSlyZXR1cm4gZTtnKz0xO2Y9SihmKX19XG5mdW5jdGlvbiBkcyhhLGIpe2Zvcih2YXIgYz1Rai5hKGEpLGQ9SShWbC5hKGEpKSxlPUxkKGQpP21yKGIpOm5ldyBWKG51bGwsMiw1LFcsW2QsYl0sbnVsbCksZD1PKGUsMCxudWxsKSxmPTAsZT1PKGUsMSxudWxsKSxnPS0xOzspe2lmKHRiKGMpJiZDLmIoUmouYShlKSxnKSYmMTxmKXRocm93IEVycm9yKFwiJUB7IGNvbnN0cnVjdCBub3QgY29uc3VtaW5nIGFueSBhcmd1bWVudHM6IEluZmluaXRlIGxvb3AhXCIpO2c9TGQoUG0uYShlKSkmJih0Yih3ay5hKGJsLmEoYSkpKXx8MDxmKTtpZihyKGc/ZzpyKGMpP2Y+PWM6YykpcmV0dXJuIGU7Zz1RcihkLGUsam0uYShhKSk7aWYoQy5iKEttLEkoZykpKXJldHVybiBDZChnKTt2YXIgZj1mKzEsaz1Sai5hKGUpLGU9ZyxnPWt9fVxuZnVuY3Rpb24gZXMoYSxiKXtmb3IodmFyIGM9UWouYShhKSxkPUkoVmwuYShhKSksZT1MZChkKT9tcihiKTpuZXcgVihudWxsLDIsNSxXLFtkLGJdLG51bGwpLGQ9TyhlLDAsbnVsbCksZj0wLGU9TyhlLDEsbnVsbCk7Oyl7dmFyIGc9TGQoUG0uYShlKSkmJih0Yih3ay5hKGJsLmEoYSkpKXx8MDxmKTtpZihyKGc/ZzpyKGMpP2Y+PWM6YykpcmV0dXJuIGU7Zz1QbS5hKGUpO2c9cihnKT9uZXcgVihudWxsLDIsNSxXLFtJKGcpLG5ldyBrcihhbS5hKGUpLEooZyksUmouYShlKSsxLG51bGwsbnVsbCxudWxsKV0sbnVsbCk6bmV3IFYobnVsbCwyLDUsVyxbbnVsbCxlXSxudWxsKTtlPU8oZywwLG51bGwpO2c9TyhnLDEsbnVsbCk7ZT1RcihkLGZyKGUpLGcpO2lmKEMuYihyayxJKGUpKSlyZXR1cm4gZztlPWc7Zis9MX19XG5mdW5jdGlvbiBmcyhhLGIsYyl7cmV0dXJuIHIod2suYShibC5hKGEpKSk/Z3MuYz9ncy5jKGEsYixjKTpncy5jYWxsKG51bGwsYSxiKTpocy5jP2hzLmMoYSxiLGMpOmhzLmNhbGwobnVsbCxhLGIpfWZ1bmN0aW9uIGlzKGEsYixjKXtmb3IodmFyIGQ9RmQ7Oyl7aWYoTGQoYSkpcmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW2QsYl0sbnVsbCk7dmFyIGU9SShhKSxmO2E6e3ZhciBnPW5ldyB5YSxrPW47bj1uZXcgTGMoZyk7dHJ5e2Y9bmV3IFYobnVsbCwyLDUsVyxbUXIoZSxiLGMpLFwiXCIrdChnKV0sbnVsbCk7YnJlYWsgYX1maW5hbGx5e249a31mPXZvaWQgMH1iPU8oZiwwLG51bGwpO2U9TyhmLDEsbnVsbCk7aWYoQy5iKEttLEkoYikpKXJldHVybiBuZXcgVihudWxsLDIsNSxXLFtkLENkKGIpXSxudWxsKTthPUooYSk7ZD1FZC5iKGQsZSl9fVxuZnVuY3Rpb24gaHMoYSxiKXt2YXIgYz1mdW5jdGlvbigpe3ZhciBjPVNpLmEoYSk7cmV0dXJuIHIoYyk/aXMoYyxiLGptLmEoYSkpOm51bGx9KCksZD1PKGMsMCxudWxsKSxlPU8oZCwwLG51bGwpLGM9TyhjLDEsbnVsbCksZj1yKGMpP2M6YixjPWZ1bmN0aW9uKCl7dmFyIGI9cGkuYShhKTtyZXR1cm4gcihiKT9ycihiLGYpOm51bGx9KCksZz1PKGMsMCxudWxsKSxjPU8oYywxLG51bGwpLGM9cihjKT9jOmYsaz1mdW5jdGlvbigpe3ZhciBhPUkoTm0uYShnKSk7cmV0dXJuIHIoYSk/YTowfSgpLGw9ZnVuY3Rpb24oKXt2YXIgYT1JKFZtLmEoZykpO3JldHVybiByKGEpP2E6JHAobixobCl9KCksZD1WbC5hKGEpLGM9aXMoZCxjLGptLmEoYSkpLHA9TyhjLDAsbnVsbCksYz1PKGMsMSxudWxsKSx1PWZ1bmN0aW9uKCl7dmFyIGI9TShwKS0xKyhyKHdrLmEoYSkpPzE6MCkrKHIocGwuYShhKSk/MTowKTtyZXR1cm4gMT5iPzE6Yn0oKSxkPWNlKGZlLG1mLmIoTSxwKSksdj1qbC5hKGEpLHc9XG5tbC5hKGEpLHk9SWwuYShhKSxBPWQrdSp3LEQ9QTw9dj92OnYreSooMStrZShBLXYtMSx5KSksSD1ELWQsZD1mdW5jdGlvbigpe3ZhciBhPWtlKEgsdSk7cmV0dXJuIHc+YT93OmF9KCksdj1ILWQqdSxkPVBlKHQsc2YoZCxQay5hKGEpKSk7cihmdW5jdGlvbigpe3JldHVybiByKGUpPyRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKG4pOkwuY2FsbChudWxsLG4pO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxkaikraytEPmw6ZX0oKSkmJlJwLmYoTihbZV0sMCkpO2Zvcih2YXIgeT12LEs9cCxSPWZ1bmN0aW9uKCl7dmFyIGI9d2suYShhKTtyZXR1cm4gcihiKT9iOkMuYihNKEspLDEpJiZ0YihwbC5hKGEpKX0oKTs7KWlmKEUoSykpUnAuZihOKFtbdCh0YihSKT9JKEspOm51bGwpLHQocihmdW5jdGlvbigpe3ZhciBiPVI7cmV0dXJuIHIoYik/YjooYj1KKEspKT9iOnBsLmEoYSl9KCkpP2Q6bnVsbCksdCgwPHk/UGsuYShhKTpudWxsKV0uam9pbihcIlwiKV0sXG4wKSksLS15LEs9dj1yKFIpP0s6SihLKSxSPSExO2Vsc2UgYnJlYWs7cmV0dXJuIGN9XG5mdW5jdGlvbiBqcyhhKXtcInVuZGVmaW5lZFwiPT09dHlwZW9mIE5wJiYoTnA9ZnVuY3Rpb24oYSxjKXt0aGlzLmRhPWE7dGhpcy51ZD1jO3RoaXMubz0xMDc0MTM1MDQwO3RoaXMuRz0wfSxOcC5wcm90b3R5cGUuTz1mdW5jdGlvbihhLGMpe3JldHVybiBuZXcgTnAodGhpcy5kYSxjKX0sTnAucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51ZH0sTnAucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7cmV0dXJuIHNjKHRoaXMuZGEpfSxOcC5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSxjKXt2YXIgYj13YihjKTtpZihyKEMuYj9DLmIoU3RyaW5nLGIpOkMuY2FsbChudWxsLFN0cmluZyxiKSkpcmV0dXJuIHgodGhpcy5kYSxjLnRvTG93ZXJDYXNlKCkpO2lmKHIoQy5iP0MuYihOdW1iZXIsYik6Qy5jYWxsKG51bGwsTnVtYmVyLGIpKSlyZXR1cm4geCh0aGlzLmRhLGllKGMpLnRvTG93ZXJDYXNlKCkpO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksdChiKV0uam9pbihcIlwiKSk7XG59LE5wLlRiPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW0FtLHhsXSxudWxsKX0sTnAuemI9ITAsTnAubmI9XCJjbGpzLnBwcmludC90X2NsanMkcHByaW50MTM5NjhcIixOcC5IYj1mdW5jdGlvbihhLGMpe3JldHVybiB4KGMsXCJjbGpzLnBwcmludC90X2NsanMkcHByaW50MTM5NjhcIil9KTtyZXR1cm4gbmV3IE5wKGEsWCl9XG5mdW5jdGlvbiBrcyhhKXtcInVuZGVmaW5lZFwiPT09dHlwZW9mIE9wJiYoT3A9ZnVuY3Rpb24oYSxjKXt0aGlzLmRhPWE7dGhpcy52ZD1jO3RoaXMubz0xMDc0MTM1MDQwO3RoaXMuRz0wfSxPcC5wcm90b3R5cGUuTz1mdW5jdGlvbihhLGMpe3JldHVybiBuZXcgT3AodGhpcy5kYSxjKX0sT3AucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52ZH0sT3AucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7cmV0dXJuIHNjKHRoaXMuZGEpfSxPcC5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSxjKXt2YXIgYj13YihjKTtpZihyKEMuYj9DLmIoU3RyaW5nLGIpOkMuY2FsbChudWxsLFN0cmluZyxiKSkpcmV0dXJuIHgodGhpcy5kYSxjLnRvVXBwZXJDYXNlKCkpO2lmKHIoQy5iP0MuYihOdW1iZXIsYik6Qy5jYWxsKG51bGwsTnVtYmVyLGIpKSlyZXR1cm4geCh0aGlzLmRhLGllKGMpLnRvVXBwZXJDYXNlKCkpO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksdChiKV0uam9pbihcIlwiKSk7XG59LE9wLlRiPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW0FtLENpXSxudWxsKX0sT3AuemI9ITAsT3AubmI9XCJjbGpzLnBwcmludC90X2NsanMkcHByaW50MTM5ODBcIixPcC5IYj1mdW5jdGlvbihhLGMpe3JldHVybiB4KGMsXCJjbGpzLnBwcmludC90X2NsanMkcHByaW50MTM5ODBcIil9KTtyZXR1cm4gbmV3IE9wKGEsWCl9XG5mdW5jdGlvbiBscyhhLGIpe3ZhciBjPUkoYSksZD1yKHIoYik/cihjKT9pYShjKTpjOmIpP1t0KGMudG9VcHBlckNhc2UoKSksdChhLnN1YnN0cmluZygxKSldLmpvaW4oXCJcIik6YTtyZXR1cm4gUGUodCxJKFdwKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKExkKGEpKXJldHVybiBuZXcgVihudWxsLDIsNSxXLFtudWxsLG51bGxdLG51bGwpO3ZhciBiPVJlZ0V4cChcIlxcXFxXXFxcXHdcIixcImdcIikuZXhlYyhhKSxiPXIoYik/Yi5pbmRleCsxOmI7cmV0dXJuIHIoYik/bmV3IFYobnVsbCwyLDUsVyxbW3QoYS5zdWJzdHJpbmcoMCxiKSksdChxZChhLGIpLnRvVXBwZXJDYXNlKCkpXS5qb2luKFwiXCIpLGEuc3Vic3RyaW5nKGIrMSldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW2EsbnVsbF0sbnVsbCl9fShjLGQpLGQpKSl9XG5mdW5jdGlvbiBtcyhhKXt2YXIgYj1ZP1koITApOmVmLmNhbGwobnVsbCwhMCk7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBQcCYmKFBwPWZ1bmN0aW9uKGEsYixlKXt0aGlzLmRhPWE7dGhpcy5NYj1iO3RoaXMud2Q9ZTt0aGlzLm89MTA3NDEzNTA0MDt0aGlzLkc9MH0sUHAucHJvdG90eXBlLk89ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFBwKHRoaXMuZGEsdGhpcy5NYixiKX19KGIpLFBwLnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2R9fShiKSxQcC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gc2ModGhpcy5kYSl9fShiKSxQcC5wcm90b3R5cGUueWI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYz13YihiKTtpZihyKEMuYj9DLmIoU3RyaW5nLGMpOkMuY2FsbChudWxsLFN0cmluZyxjKSkpe3godGhpcy5kYSxscyhiLnRvTG93ZXJDYXNlKCksXG5MLmE/TC5hKHRoaXMuTWIpOkwuY2FsbChudWxsLHRoaXMuTWIpKSk7aWYoMDxiLmxlbmd0aCl7dmFyIGM9dGhpcy5NYixkO2Q9cWQoYixNKGIpLTEpO2Q9Z2EoZCk7cmV0dXJuIGpmLmI/amYuYihjLGQpOmpmLmNhbGwobnVsbCxjLGQpfXJldHVybiBudWxsfWlmKHIoQy5iP0MuYihOdW1iZXIsYyk6Qy5jYWxsKG51bGwsTnVtYmVyLGMpKSlyZXR1cm4gYz1pZShiKSxkPXIoTC5hP0wuYSh0aGlzLk1iKTpMLmNhbGwobnVsbCx0aGlzLk1iKSk/Yy50b1VwcGVyQ2FzZSgpOmMseCh0aGlzLmRhLGQpLGQ9dGhpcy5NYixjPWdhKGMpLGpmLmI/amYuYihkLGMpOmpmLmNhbGwobnVsbCxkLGMpO3Rocm93IEVycm9yKFt0KFwiTm8gbWF0Y2hpbmcgY2xhdXNlOiBcIiksdChjKV0uam9pbihcIlwiKSk7fX0oYiksUHAuVGI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFYobnVsbCwzLDUsVyxbQW0sdGksS2tdLG51bGwpfX0oYiksUHAuemI9ITAsUHAubmI9XCJjbGpzLnBwcmludC90X2NsanMkcHByaW50MTM5OTdcIixcblBwLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIHgoYixcImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxMzk5N1wiKX19KGIpKTtyZXR1cm4gbmV3IFBwKGEsYixYKX1cbmZ1bmN0aW9uIG5zKGEpe3ZhciBiPVk/WSghMSk6ZWYuY2FsbChudWxsLCExKTtcInVuZGVmaW5lZFwiPT09dHlwZW9mIFFwJiYoUXA9ZnVuY3Rpb24oYSxiLGUpe3RoaXMuZGE9YTt0aGlzLnFiPWI7dGhpcy54ZD1lO3RoaXMubz0xMDc0MTM1MDQwO3RoaXMuRz0wfSxRcC5wcm90b3R5cGUuTz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUXAodGhpcy5kYSx0aGlzLnFiLGIpfX0oYiksUXAucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZH19KGIpLFFwLnByb3RvdHlwZS5tYj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzYyh0aGlzLmRhKX19KGIpLFFwLnByb3RvdHlwZS55Yj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPXdiKGIpO2lmKHIoQy5iP0MuYihTdHJpbmcsYyk6Qy5jYWxsKG51bGwsU3RyaW5nLGMpKSl7Yz1iLnRvTG93ZXJDYXNlKCk7aWYodGIoTC5hP1xuTC5hKHRoaXMucWIpOkwuY2FsbChudWxsLHRoaXMucWIpKSl7dmFyIGQ9UmVnRXhwKFwiXFxcXFNcIixcImdcIikuZXhlYyhjKSxkPXIoZCk/ZC5pbmRleDpkO3JldHVybiByKGQpPyh4KHRoaXMuZGEsW3QoYy5zdWJzdHJpbmcoMCxkKSksdChxZChjLGQpLnRvVXBwZXJDYXNlKCkpLHQoYy5zdWJzdHJpbmcoZCsxKS50b0xvd2VyQ2FzZSgpKV0uam9pbihcIlwiKSksamYuYj9qZi5iKHRoaXMucWIsITApOmpmLmNhbGwobnVsbCx0aGlzLnFiLCEwKSk6eCh0aGlzLmRhLGMpfXJldHVybiB4KHRoaXMuZGEsYy50b0xvd2VyQ2FzZSgpKX1pZihyKEMuYj9DLmIoTnVtYmVyLGMpOkMuY2FsbChudWxsLE51bWJlcixjKSkpcmV0dXJuIGM9aWUoYiksZD10YihMLmE/TC5hKHRoaXMucWIpOkwuY2FsbChudWxsLHRoaXMucWIpKSxyKGQ/aWEoYyk6ZCk/KGpmLmI/amYuYih0aGlzLnFiLCEwKTpqZi5jYWxsKG51bGwsdGhpcy5xYiwhMCkseCh0aGlzLmRhLGMudG9VcHBlckNhc2UoKSkpOngodGhpcy5kYSxjLnRvTG93ZXJDYXNlKCkpO1xudGhyb3cgRXJyb3IoW3QoXCJObyBtYXRjaGluZyBjbGF1c2U6IFwiKSx0KGMpXS5qb2luKFwiXCIpKTt9fShiKSxRcC5UYj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgVihudWxsLDMsNSxXLFtBbSxpayxDa10sbnVsbCl9fShiKSxRcC56Yj0hMCxRcC5uYj1cImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxNDAxNFwiLFFwLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIHgoYixcImNsanMucHByaW50L3RfY2xqcyRwcHJpbnQxNDAxNFwiKX19KGIpKTtyZXR1cm4gbmV3IFFwKGEsYixYKX1mdW5jdGlvbiBvcygpeyhudWxsIT1uP24ubyYzMjc2OHx8bT09PW4uS2N8fChuLm8/MDp2YihjYyxuKSk6dmIoY2MsbikpP0MuYigwLCRwKG9tLmEoZnVuY3Rpb24oKXt2YXIgYT1MLmE/TC5hKG4pOkwuY2FsbChudWxsLG4pO3JldHVybiBMLmE/TC5hKGEpOkwuY2FsbChudWxsLGEpfSgpKSxkaikpfHxUcCgpOlRwKCl9XG5mdW5jdGlvbiBwcyhhLGIpe3ZhciBjPXdsLmEoYSksZD1JbC5hKGEpLGU9JHAob20uYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEobik6TC5jYWxsKG51bGwsbik7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpLGRqKSxjPWU8Yz9jLWU6Qy5iKGQsMCk/MDpkLWxlKGUtYyxkKTtScC5mKE4oW1BlKHQsc2YoYyxcIiBcIikpXSwwKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcXMoYSxiKXt2YXIgYz13bC5hKGEpLGQ9SWwuYShhKSxlPWMrJHAob20uYShmdW5jdGlvbigpe3ZhciBhPUwuYT9MLmEobik6TC5jYWxsKG51bGwsbik7cmV0dXJuIEwuYT9MLmEoYSk6TC5jYWxsKG51bGwsYSl9KCkpLGRqKSxlPTA8ZD9sZShlLGQpOjAsYz1jKyhDLmIoMCxlKT8wOmQtZSk7UnAuZihOKFtQZSh0LHNmKGMsXCIgXCIpKV0sMCkpO3JldHVybiBifVxuZnVuY3Rpb24gZ3MoYSxiKXt2YXIgYz1WbC5hKGEpLGQ9TShjKSxlPTE8ZD9lay5hKE5qLmEoSShJKGMpKSkpOnIod2suYShhKSk/XCIoXCI6bnVsbCxmPXFkKGMsMTxkPzE6MCksYz0yPGQ/ZWsuYShOai5hKEkocWQoYywyKSkpKTpyKHdrLmEoYSkpP1wiKVwiOm51bGwsZz1scihiKSxkPU8oZywwLG51bGwpLGc9TyhnLDEsbnVsbCk7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIGs9VXEsbD1WcTtVcSs9MTtWcT0wO3RyeXtKcShlLGMpLFFyKGYsZnIoZCksam0uYShhKSksS3EoKX1maW5hbGx5e1ZxPWwsVXE9a319cmV0dXJuIGd9ZnVuY3Rpb24gcnMoYSxiKXt2YXIgYz1yKHdrLmEoYSkpP29sOnFpO2NyKGMscWouYShhKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gc3MoYSxiKXt2YXIgYz1yKHdrLmEoYSkpP3IocGwuYShhKSk/YWk6eGo6cihwbC5hKGEpKT9UaTokbDticihjKTtyZXR1cm4gYn1cbnZhciB0cz1IZChcIkFTREJPWFJQQ0ZFRyQlXFx4MjZ8flxcblQqPygpWztde31cXHgzY1xceDNlXldfSVwiLnNwbGl0KFwiXCIpLFtuZXcgcShudWxsLDUsW0NtLFwiQVwiLE5qLG5ldyBxKG51bGwsNCxbamwsbmV3IFYobnVsbCwyLDUsVyxbMCxOdW1iZXJdLG51bGwpLElsLG5ldyBWKG51bGwsMiw1LFcsWzEsTnVtYmVyXSxudWxsKSxtbCxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiB2cihCaCxhLGIpfX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJTXCIsTmosbmV3IHEobnVsbCw0LFtqbCxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksSWwsbmV3IFYobnVsbCwyLDUsVyxbMSxOdW1iZXJdLFxubnVsbCksbWwsbmV3IFYobnVsbCwyLDUsVyxbMCxOdW1iZXJdLG51bGwpLFBrLG5ldyBWKG51bGwsMiw1LFcsW1wiIFwiLFN0cmluZ10sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMyxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gdnIoQWgsYSxiKX19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiRFwiLE5qLG5ldyBxKG51bGwsNCxbamwsbmV3IFYobnVsbCwyLDUsVyxbMCxOdW1iZXJdLG51bGwpLFBrLG5ldyBWKG51bGwsMiw1LFcsW1wiIFwiLFN0cmluZ10sbnVsbCksY24sbmV3IFYobnVsbCwyLDUsVyxbXCIsXCIsU3RyaW5nXSxudWxsKSxMaSxuZXcgVihudWxsLDIsNSxXLFszLE51bWJlcl0sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMyxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxcbmIpe3JldHVybiB6cigxMCxhLGIpfX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJCXCIsTmosbmV3IHEobnVsbCw0LFtqbCxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKSxjbixuZXcgVihudWxsLDIsNSxXLFtcIixcIixTdHJpbmddLG51bGwpLExpLG5ldyBWKG51bGwsMiw1LFcsWzMsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiB6cigyLGEsYil9fV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIk9cIixOaixuZXcgcShudWxsLDQsW2psLG5ldyBWKG51bGwsMiw1LFcsWzAsTnVtYmVyXSxudWxsKSxQayxuZXcgVihudWxsLDIsNSxXLFtcIiBcIixTdHJpbmddLG51bGwpLGNuLG5ldyBWKG51bGwsMiw1LFcsW1wiLFwiLFN0cmluZ10sXG5udWxsKSxMaSxuZXcgVihudWxsLDIsNSxXLFszLE51bWJlcl0sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMyxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4genIoOCxhLGIpfX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJYXCIsTmosbmV3IHEobnVsbCw0LFtqbCxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKSxjbixuZXcgVihudWxsLDIsNSxXLFtcIixcIixTdHJpbmddLG51bGwpLExpLG5ldyBWKG51bGwsMiw1LFcsWzMsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiB6cigxNixhLGIpfX1dLFxubnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIlJcIixOaixuZXcgcShudWxsLDUsW29tLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKSxqbCxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKSxjbixuZXcgVihudWxsLDIsNSxXLFtcIixcIixTdHJpbmddLG51bGwpLExpLG5ldyBWKG51bGwsMiw1LFcsWzMsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbihhKXtyZXR1cm4gcihJKG9tLmEoYSkpKT9mdW5jdGlvbihhLGMpe3JldHVybiB6cihvbS5hKGEpLGEsYyl9OnIoZnVuY3Rpb24oKXt2YXIgYj1wbC5hKGEpO3JldHVybiByKGIpP3drLmEoYSk6Yn0oKSk/ZnVuY3Rpb24oYSxjKXtyZXR1cm4gS3IoSXIsYyl9OnIocGwuYShhKSk/ZnVuY3Rpb24oYSxjKXtyZXR1cm4gS3IoSnIsXG5jKX06cih3ay5hKGEpKT9mdW5jdGlvbihhLGMpe3ZhciBiPWxyKGMpLGU9TyhiLDAsbnVsbCksYj1PKGIsMSxudWxsKTtpZihDLmIoMCxlKSlScC5mKE4oW1wiemVyb3RoXCJdLDApKTtlbHNle3ZhciBmPXdyKDFFMywwPmU/LWU6ZSk7aWYoTShmKTw9TShFcikpe3ZhciBnPW1mLmIoRnIscGYoZikpLGc9R3IoZywxKSxmPUhyKERkKGYpKTtScC5mKE4oW1t0KDA+ZT9cIm1pbnVzIFwiOm51bGwpLHQoTGQoZyl8fExkKGYpP0xkKGcpP2Y6W3QoZyksdChcInRoXCIpXS5qb2luKFwiXCIpOlt0KGcpLHQoXCIsIFwiKSx0KGYpXS5qb2luKFwiXCIpKV0uam9pbihcIlwiKV0sMCkpfWVsc2UgenIoMTAsbmV3IHEobnVsbCw1LFtqbCwwLFBrLFwiIFwiLGNuLFwiLFwiLExpLDMsd2ssITBdLG51bGwpLGZyKG5ldyBWKG51bGwsMSw1LFcsW2VdLG51bGwpKSksZj1sZShlLDEwMCksZT0xMTxmfHwxOT5mLGY9bGUoZiwxMCksUnAuZihOKFsxPT09ZiYmZT9cInN0XCI6Mj09PWYmJmU/XCJuZFwiOjM9PT1mJiZlP1wicmRcIjpcInRoXCJdLDApKX1yZXR1cm4gYn06XG5mdW5jdGlvbihhLGMpe3ZhciBiPWxyKGMpLGU9TyhiLDAsbnVsbCksYj1PKGIsMSxudWxsKTtpZihDLmIoMCxlKSlScC5mKE4oW1wiemVyb1wiXSwwKSk7ZWxzZXt2YXIgZj13cigxRTMsMD5lPy1lOmUpO00oZik8PU0oRXIpPyhmPW1mLmIoRnIsZiksZj1HcihmLDApLFJwLmYoTihbW3QoMD5lP1wibWludXMgXCI6bnVsbCksdChmKV0uam9pbihcIlwiKV0sMCkpKTp6cigxMCxuZXcgcShudWxsLDUsW2psLDAsUGssXCIgXCIsY24sXCIsXCIsTGksMyx3aywhMF0sbnVsbCksZnIobmV3IFYobnVsbCwxLDUsVyxbZV0sbnVsbCkpKX1yZXR1cm4gYn19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiUFwiLE5qLFgsem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPXIod2suYShhKSk/b3IoYiwtMSk6YixkPXIocGwuYShhKSk/bmV3IFYobnVsbCwyLDUsVyxbXCJ5XCIsXG5cImllc1wiXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFtcIlwiLFwic1wiXSxudWxsKSxlPWxyKGMpLGM9TyhlLDAsbnVsbCksZT1PKGUsMSxudWxsKTtScC5mKE4oW0MuYihjLDEpP0koZCk6Q2QoZCldLDApKTtyZXR1cm4gZX19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiQ1wiLE5qLG5ldyBxKG51bGwsMSxbbGssbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxTdHJpbmddLG51bGwpXSxudWxsKSx6bSxuZXcgZGgobnVsbCxuZXcgcShudWxsLDMsW3drLG51bGwscGwsbnVsbCxNbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKGEpe3JldHVybiByKHdrLmEoYSkpP01yOnIocGwuYShhKSk/TnI6T3J9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiRlwiLE5qLG5ldyBxKG51bGwsNSxbcmosbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxOdW1iZXJdLG51bGwpLE5sLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKSx0ayxuZXcgVihudWxsLDIsNSxXLFswLE51bWJlcl0sbnVsbCksXG5EbCxuZXcgVihudWxsLDIsNSxXLFtudWxsLFN0cmluZ10sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwxLFtwbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIFZyfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIkVcIixOaixuZXcgcShudWxsLDcsW3JqLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKSxObCxuZXcgVihudWxsLDIsNSxXLFtudWxsLE51bWJlcl0sbnVsbCksamssbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxOdW1iZXJdLG51bGwpLHRrLG5ldyBWKG51bGwsMiw1LFcsWzEsTnVtYmVyXSxudWxsKSxEbCxuZXcgVihudWxsLDIsNSxXLFtudWxsLFN0cmluZ10sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKSxYbSxuZXcgVihudWxsLDIsNSxXLFtudWxsLFN0cmluZ10sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLFxubmV3IHEobnVsbCwxLFtwbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIFdyfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIkdcIixOaixuZXcgcShudWxsLDcsW3JqLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKSxObCxuZXcgVihudWxsLDIsNSxXLFtudWxsLE51bWJlcl0sbnVsbCksamssbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxOdW1iZXJdLG51bGwpLHRrLG5ldyBWKG51bGwsMiw1LFcsWzEsTnVtYmVyXSxudWxsKSxEbCxuZXcgVihudWxsLDIsNSxXLFtudWxsLFN0cmluZ10sbnVsbCksUGssbmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsU3RyaW5nXSxudWxsKSxYbSxuZXcgVihudWxsLDIsNSxXLFtudWxsLFN0cmluZ10sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMSxbcGwsbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBYcn1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCIkXCIsXG5OaixuZXcgcShudWxsLDQsW05sLG5ldyBWKG51bGwsMiw1LFcsWzIsTnVtYmVyXSxudWxsKSxxaixuZXcgVihudWxsLDIsNSxXLFsxLE51bWJlcl0sbnVsbCkscmosbmV3IFYobnVsbCwyLDUsVyxbMCxOdW1iZXJdLG51bGwpLFBrLG5ldyBWKG51bGwsMiw1LFcsW1wiIFwiLFN0cmluZ10sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMyxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gWXJ9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiJVwiLE5qLG5ldyBxKG51bGwsMSxbc2wsbmV3IFYobnVsbCwyLDUsVyxbMSxOdW1iZXJdLG51bGwpXSxudWxsKSx6bSxmaCxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXNsLmEoYSksZD0wOzspaWYoZDxjKVRwKCksZCs9MTtlbHNlIGJyZWFrO3JldHVybiBifX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJcXHgyNlwiLE5qLFxubmV3IHEobnVsbCwxLFtzbCxuZXcgVihudWxsLDIsNSxXLFsxLE51bWJlcl0sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMSxba20sbnVsbF0sbnVsbCksbnVsbCksaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPXNsLmEoYSk7MDxjJiZvcygpO2Zvcih2YXIgYz1jLTEsZD0wOzspaWYoZDxjKVRwKCksZCs9MTtlbHNlIGJyZWFrO3JldHVybiBifX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJ8XCIsTmosbmV3IHEobnVsbCwxLFtzbCxuZXcgVihudWxsLDIsNSxXLFsxLE51bWJlcl0sbnVsbCldLG51bGwpLHptLGZoLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9c2wuYShhKSxkPTA7OylpZihkPGMpUnAuZihOKFtcIlxcZlwiXSwwKSksZCs9MTtlbHNlIGJyZWFrO3JldHVybiBifX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJ+XCIsTmosbmV3IHEobnVsbCwxLFtxaixuZXcgVihudWxsLFxuMiw1LFcsWzEsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sZmgsaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPXFqLmEoYSk7UnAuZihOKFtQZSh0LHNmKGMsXCJ+XCIpKV0sMCkpO3JldHVybiBifX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJcXG5cIixOaixYLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMixbd2ssbnVsbCxwbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cihwbC5hKGEpKSYmVHAoKTtyZXR1cm4gYn19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiVFwiLE5qLG5ldyBxKG51bGwsMixbd2wsbmV3IFYobnVsbCwyLDUsVyxbMSxOdW1iZXJdLG51bGwpLElsLG5ldyBWKG51bGwsMiw1LFcsWzEsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwyLFtwbCxudWxsLGttLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oYSl7cmV0dXJuIHIocGwuYShhKSk/XG5mdW5jdGlvbihhLGMpe3JldHVybiBxcyhhLGMpfTpmdW5jdGlvbihhLGMpe3JldHVybiBwcyhhLGMpfX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCIqXCIsTmosbmV3IHEobnVsbCwxLFtxaixuZXcgVihudWxsLDIsNSxXLFsxLE51bWJlcl0sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMixbd2ssbnVsbCxwbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7dmFyIGM9cWouYShhKTtyZXR1cm4gcihwbC5hKGEpKT9ucihiLGMpOm9yKGIscih3ay5hKGEpKT8tYzpjKX19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiP1wiLE5qLFgsem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwxLFtwbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKGEpe3JldHVybiByKHBsLmEoYSkpP2Z1bmN0aW9uKGEsYyl7dmFyIGI9bXIoYyksZT1PKGIsMCxudWxsKSxiPU8oYiwxLG51bGwpO3JldHVybiBRcihlLGIsXG5qbS5hKGEpKX06ZnVuY3Rpb24oYSxjKXt2YXIgYj1tcihjKSxlPU8oYiwwLG51bGwpLGI9TyhiLDEsbnVsbCksZj1scihiKSxiPU8oZiwwLG51bGwpLGY9TyhmLDEsbnVsbCksYj1mcihiKTtRcihlLGIsam0uYShhKSk7cmV0dXJuIGZ9fV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIihcIixOaixYLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsMyxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGxdLG51bGwpLG51bGwpLGhtLG5ldyBxKG51bGwsMyxbSGwsXCIpXCIsc2ksbnVsbCxTaSxudWxsXSxudWxsKSxuaixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIsZCl7dmFyIGM7YTp7dmFyIGY9SShWbC5hKGIpKSxnPW47bj1hLmE/YS5hKG4pOmEuY2FsbChudWxsLG4pO3RyeXtjPVFyKGYsZCxqbS5hKGIpKTticmVhayBhfWZpbmFsbHl7bj1nfWM9dm9pZCAwfXJldHVybiBjfX0ocihmdW5jdGlvbigpe3ZhciBiPXBsLmEoYSk7cmV0dXJuIHIoYik/d2suYShhKTpcbmJ9KCkpP2tzOnIod2suYShhKSk/bXM6cihwbC5hKGEpKT9uczpqcyl9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiKVwiLE5qLFgsem0sZmgsaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBudWxsfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIltcIixOaixuZXcgcShudWxsLDEsW21pLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwyLFt3ayxudWxsLHBsLG51bGxdLG51bGwpLG51bGwpLGhtLG5ldyBxKG51bGwsMyxbSGwsXCJdXCIsc2ksITAsU2ksRW1dLG51bGwpLG5qLGZ1bmN0aW9uKGEpe3JldHVybiByKHdrLmEoYSkpPyRyOnIocGwuYShhKSk/YXM6WnJ9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiO1wiLE5qLG5ldyBxKG51bGwsMixbTm0sbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxOdW1iZXJdLG51bGwpLFZtLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsXG5uZXcgcShudWxsLDEsW3drLG51bGxdLG51bGwpLG51bGwpLGhtLG5ldyBxKG51bGwsMSxbeG0sITBdLG51bGwpLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiXVwiLE5qLFgsem0sZmgsaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBudWxsfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIntcIixOaixuZXcgcShudWxsLDEsW1FqLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwzLFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbF0sbnVsbCksbnVsbCksaG0sbmV3IHEobnVsbCwyLFtIbCxcIn1cIixzaSwhMV0sbnVsbCksbmosZnVuY3Rpb24oYSl7dmFyIGI7Yj1wbC5hKGEpO2I9cihiKT93ay5hKGEpOmI7cmV0dXJuIHIoYik/ZXM6cih3ay5hKGEpKT9jczpyKHBsLmEoYSkpP2RzOmJzfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIn1cIixOaixYLHptLG5ldyBkaChudWxsLFxubmV3IHEobnVsbCwxLFt3ayxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiXFx4M2NcIixOaixuZXcgcShudWxsLDQsW2psLG5ldyBWKG51bGwsMiw1LFcsWzAsTnVtYmVyXSxudWxsKSxJbCxuZXcgVihudWxsLDIsNSxXLFsxLE51bWJlcl0sbnVsbCksbWwsbmV3IFYobnVsbCwyLDUsVyxbMCxOdW1iZXJdLG51bGwpLFBrLG5ldyBWKG51bGwsMiw1LFcsW1wiIFwiLFN0cmluZ10sbnVsbCldLG51bGwpLHptLG5ldyBkaChudWxsLG5ldyBxKG51bGwsNCxbd2ssbnVsbCxwbCxudWxsLE1sLG51bGwsa20sbnVsbF0sbnVsbCksbnVsbCksaG0sbmV3IHEobnVsbCwzLFtIbCxcIlxceDNlXCIsc2ksITAsU2ksZW1dLG51bGwpLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIGZzfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIlxceDNlXCIsTmosWCx6bSxuZXcgZGgobnVsbCxuZXcgcShudWxsLDEsW3drLG51bGxdLG51bGwpLG51bGwpLFxuaG0sWCxuaixmdW5jdGlvbigpe3JldHVybiBudWxsfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIl5cIixOaixuZXcgcShudWxsLDMsW1JtLG5ldyBWKG51bGwsMiw1LFcsW251bGwsTnVtYmVyXSxudWxsKSxLaSxuZXcgVihudWxsLDIsNSxXLFtudWxsLE51bWJlcl0sbnVsbCksZ2ksbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxOdW1iZXJdLG51bGwpXSxudWxsKSx6bSxuZXcgZGgobnVsbCxuZXcgcShudWxsLDEsW3drLG51bGxdLG51bGwpLG51bGwpLGhtLFgsbmosZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYz1SbS5hKGEpLGQ9S2kuYShhKSxlPWdpLmEoYSksZj1yKHdrLmEoYSkpP3JrOkttO3JldHVybiByKHIoYyk/cihkKT9lOmQ6Yyk/Yzw9ZCYmZDw9ZT9uZXcgVihudWxsLDIsNSxXLFtmLGJdLG51bGwpOmI6cihyKGMpP2Q6Yyk/Qy5iKGMsZCk/bmV3IFYobnVsbCwyLDUsVyxbZixiXSxudWxsKTpiOnIoYyk/Qy5iKGMsMCk/bmV3IFYobnVsbCwyLDUsVyxbZixcbmJdLG51bGwpOmI6KHIod2suYShhKSk/TGQoUG0uYShqbS5hKGEpKSk6TGQoUG0uYShiKSkpP25ldyBWKG51bGwsMiw1LFcsW2YsYl0sbnVsbCk6Yn19XSxudWxsKSxuZXcgcShudWxsLDUsW0NtLFwiV1wiLE5qLFgsem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCw0LFt3ayxudWxsLHBsLG51bGwsTWwsbnVsbCxrbSxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKGEpe3JldHVybiByKGZ1bmN0aW9uKCl7dmFyIGI9cGwuYShhKTtyZXR1cm4gcihiKT9iOndrLmEoYSl9KCkpP2Z1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiLGQpe3ZhciBjPWxyKGQpLGY9TyhjLDAsbnVsbCksYz1PKGMsMSxudWxsKTtyZXR1cm4gcihRZShZcSxmLGEpKT9uZXcgVihudWxsLDIsNSxXLFtLbSxjXSxudWxsKTpjfX0oTWUuYihyKHBsLmEoYSkpP25ldyBWKG51bGwsNCw1LFcsW3lrLG51bGwsQWwsbnVsbF0sbnVsbCk6RmQscih3ay5hKGEpKT9uZXcgVihudWxsLDIsNSxXLFtrbSwhMF0sbnVsbCk6XG5GZCkpOmZ1bmN0aW9uKGEsYyl7dmFyIGI9bHIoYyksZT1PKGIsMCxudWxsKSxiPU8oYiwxLG51bGwpO3JldHVybiByKFhxKGUpKT9uZXcgVihudWxsLDIsNSxXLFtLbSxiXSxudWxsKTpifX1dLG51bGwpLG5ldyBxKG51bGwsNSxbQ20sXCJfXCIsTmosWCx6bSxuZXcgZGgobnVsbCxuZXcgcShudWxsLDMsW3drLG51bGwscGwsbnVsbCxNbCxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIHNzfV0sbnVsbCksbmV3IHEobnVsbCw1LFtDbSxcIklcIixOaixuZXcgcShudWxsLDEsW3FqLG5ldyBWKG51bGwsMiw1LFcsWzAsTnVtYmVyXSxudWxsKV0sbnVsbCksem0sbmV3IGRoKG51bGwsbmV3IHEobnVsbCwxLFt3ayxudWxsXSxudWxsKSxudWxsKSxobSxYLG5qLGZ1bmN0aW9uKCl7cmV0dXJuIHJzfV0sbnVsbCldKSx1cz0vXihbdlZdfCN8KCcuKXwoWystXT9cXGQrKXwoPz0sKSkvLHZzPW5ldyBkaChudWxsLG5ldyBxKG51bGwsMixbdGosbnVsbCxWaixudWxsXSxudWxsKSxcbm51bGwpO2Z1bmN0aW9uIHdzKGEpe3ZhciBiPU8oYSwwLG51bGwpLGM9TyhhLDEsbnVsbCksZD1PKGEsMixudWxsKTthPW5ldyBSZWdFeHAodXMuc291cmNlLFwiZ1wiKTt2YXIgZT1hLmV4ZWMoYik7cmV0dXJuIHIoZSk/KGQ9SShlKSxiPWIuc3Vic3RyaW5nKGEubGFzdEluZGV4KSxhPWMrYS5sYXN0SW5kZXgsQy5iKFwiLFwiLHFkKGIsMCkpP25ldyBWKG51bGwsMiw1LFcsW25ldyBWKG51bGwsMiw1LFcsW2QsY10sbnVsbCksbmV3IFYobnVsbCwzLDUsVyxbYi5zdWJzdHJpbmcoMSksYSsxLCEwXSxudWxsKV0sbnVsbCk6bmV3IFYobnVsbCwyLDUsVyxbbmV3IFYobnVsbCwyLDUsVyxbZCxjXSxudWxsKSxuZXcgVihudWxsLDMsNSxXLFtiLGEsITFdLG51bGwpXSxudWxsKSk6cihkKT9qcihcIkJhZGx5IGZvcm1lZCBwYXJhbWV0ZXJzIGluIGZvcm1hdCBkaXJlY3RpdmVcIixjKTpuZXcgVihudWxsLDIsNSxXLFtudWxsLG5ldyBWKG51bGwsMiw1LFcsW2IsY10sbnVsbCldLG51bGwpfVxuZnVuY3Rpb24geHMoYSl7dmFyIGI9TyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTtyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbQy5iKGIubGVuZ3RoLDApP251bGw6Qy5iKGIubGVuZ3RoLDEpJiZZZChuZXcgZGgobnVsbCxuZXcgcShudWxsLDIsW1wiVlwiLG51bGwsXCJ2XCIsbnVsbF0sbnVsbCksbnVsbCkscWQoYiwwKSk/Vmo6Qy5iKGIubGVuZ3RoLDEpJiZDLmIoXCIjXCIscWQoYiwwKSk/dGo6Qy5iKGIubGVuZ3RoLDIpJiZDLmIoXCInXCIscWQoYiwwKSk/cWQoYiwxKTpwYXJzZUludChiLDEwKSxhXSxudWxsKX12YXIgeXM9bmV3IHEobnVsbCwyLFtcIjpcIix3ayxcIkBcIixwbF0sbnVsbCk7XG5mdW5jdGlvbiB6cyhhLGIpe3JldHVybiBXcChmdW5jdGlvbihhKXt2YXIgYj1PKGEsMCxudWxsKSxjPU8oYSwxLG51bGwpO2E9TyhhLDIsbnVsbCk7aWYoTGQoYikpcmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW251bGwsbmV3IFYobnVsbCwzLDUsVyxbYixjLGFdLG51bGwpXSxudWxsKTt2YXIgZj1CLmIoeXMsSShiKSk7cmV0dXJuIHIoZik/WWQoYSxmKT9qcihbdCgnRmxhZyBcIicpLHQoSShiKSksdCgnXCIgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiBhIGRpcmVjdGl2ZScpXS5qb2luKFwiXCIpLGMpOm5ldyBWKG51bGwsMiw1LFcsWyEwLG5ldyBWKG51bGwsMyw1LFcsW2Iuc3Vic3RyaW5nKDEpLGMrMSxRLmMoYSxmLG5ldyBWKG51bGwsMiw1LFcsWyEwLGNdLG51bGwpKV0sbnVsbCldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW251bGwsbmV3IFYobnVsbCwzLDUsVyxbYixjLGFdLG51bGwpXSxudWxsKX0sbmV3IFYobnVsbCwzLDUsVyxbYSxiLFhdLG51bGwpKX1cbmZ1bmN0aW9uIEFzKGEsYil7dmFyIGM9em0uYShhKTtyKGZ1bmN0aW9uKCl7dmFyIGE9dGIocGwuYShjKSk7cmV0dXJuIGE/cGwuYShiKTphfSgpKSYmanIoW3QoJ1wiQFwiIGlzIGFuIGlsbGVnYWwgZmxhZyBmb3IgZm9ybWF0IGRpcmVjdGl2ZSBcIicpLHQoQ20uYShhKSksdCgnXCInKV0uam9pbihcIlwiKSxxZChwbC5hKGIpLDEpKTtyKGZ1bmN0aW9uKCl7dmFyIGE9dGIod2suYShjKSk7cmV0dXJuIGE/d2suYShiKTphfSgpKSYmanIoW3QoJ1wiOlwiIGlzIGFuIGlsbGVnYWwgZmxhZyBmb3IgZm9ybWF0IGRpcmVjdGl2ZSBcIicpLHQoQ20uYShhKSksdCgnXCInKV0uam9pbihcIlwiKSxxZCh3ay5hKGIpLDEpKTtyKGZ1bmN0aW9uKCl7dmFyIGE9dGIoTWwuYShjKSk7cmV0dXJuIGE/KGE9cGwuYShiKSxyKGEpP3drLmEoYik6YSk6YX0oKSkmJmpyKFt0KCdDYW5ub3QgY29tYmluZSBcIkBcIiBhbmQgXCI6XCIgZmxhZ3MgZm9yIGZvcm1hdCBkaXJlY3RpdmUgXCInKSx0KENtLmEoYSkpLHQoJ1wiJyldLmpvaW4oXCJcIiksXG5mdW5jdGlvbigpe3ZhciBhPXFkKHdrLmEoYiksMSksYz1xZChwbC5hKGIpLDEpO3JldHVybiBhPGM/YTpjfSgpKX1cbmZ1bmN0aW9uIEJzKGEsYixjLGQpe0FzKGEsYyk7TShiKT5NKE5qLmEoYSkpJiZqcihkcihudWxsLCdUb28gbWFueSBwYXJhbWV0ZXJzIGZvciBkaXJlY3RpdmUgXCJ+Q1wiOiB+RH46KiB+W3dlcmV+O3dhc346O3dlcmV+XSBzcGVjaWZpZWQgYnV0IG9ubHkgfkR+OiogflthcmV+O2lzfjo7YXJlfl0gYWxsb3dlZCcsTihbQ20uYShhKSxNKGIpLE0oTmouYShhKSldLDApKSxDZChJKGIpKSk7bWgobWYuYyhmdW5jdGlvbihiLGMpe3ZhciBkPUkoYik7cmV0dXJuIG51bGw9PWR8fFlkKHZzLGQpfHxDLmIoQ2QoQ2QoYykpLHdiKGQpKT9udWxsOmpyKFt0KFwiUGFyYW1ldGVyIFwiKSx0KEFlKEkoYykpKSx0KCcgaGFzIGJhZCB0eXBlIGluIGRpcmVjdGl2ZSBcIicpLHQoQ20uYShhKSksdCgnXCI6ICcpLHQod2IoZCkpXS5qb2luKFwiXCIpLENkKGIpKX0sYixOai5hKGEpKSk7cmV0dXJuIGFoKE4oW3lmLmIoWCx2ZShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBmKGEpe3JldHVybiBuZXcgQmUobnVsbCxcbmZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgYj1FKGEpO2lmKGIpe2lmKFNkKGIpKXt2YXIgYz1DYyhiKSxnPU0oYyksdT1GZShnKTthOmZvcih2YXIgdj0wOzspaWYodjxnKXt2YXIgdz1KYi5iKGMsdikseT1PKHcsMCxudWxsKSx3PU8odywxLG51bGwpLHc9Tyh3LDAsbnVsbCk7SWUodSxuZXcgVihudWxsLDIsNSxXLFt5LG5ldyBWKG51bGwsMiw1LFcsW3csZF0sbnVsbCldLG51bGwpKTt2Kz0xfWVsc2V7Yz0hMDticmVhayBhfXJldHVybiBjP0hlKHUuaWEoKSxmKERjKGIpKSk6SGUodS5pYSgpLG51bGwpfWM9SShiKTt1PU8oYywwLG51bGwpO2M9TyhjLDEsbnVsbCk7Yz1PKGMsMCxudWxsKTtyZXR1cm4gd2QobmV3IFYobnVsbCwyLDUsVyxbdSxuZXcgVihudWxsLDIsNSxXLFtjLGRdLG51bGwpXSxudWxsKSxmKFpjKGIpKSl9cmV0dXJuIG51bGx9fSxudWxsLG51bGwpfShOai5hKGEpKX0oKSkpLGFlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIFFlKFEsYSxiKX0sWCx4ZihmdW5jdGlvbihhKXtyZXR1cm4gSShxZChhLFxuMSkpfSxhZihyZyhOai5hKGEpKSxiKSkpLGNdLDApKX1mdW5jdGlvbiBDcyhhLGIpe3JldHVybiBuZXcgcHIoZnVuY3Rpb24oYixkKXtScC5mKE4oW2FdLDApKTtyZXR1cm4gZH0sbnVsbCxuZXcgcShudWxsLDEsW2VrLGFdLG51bGwpLGIsbnVsbCxudWxsLG51bGwpfWZ1bmN0aW9uIERzKGEsYil7dmFyIGMsZD1obS5hKFNsLmEoYSkpO2M9YWouYShhKTtjPUVzLmM/RXMuYyhkLGMsYik6RXMuY2FsbChudWxsLGQsYyxiKTtkPU8oYywwLG51bGwpO2M9TyhjLDEsbnVsbCk7cmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW25ldyBwcihqai5hKGEpLFNsLmEoYSksYWgoTihbTmouYShhKSxZcChkLGFqLmEoYSkpXSwwKSksYWouYShhKSxudWxsLG51bGwsbnVsbCksY10sbnVsbCl9XG5mdW5jdGlvbiBGcyhhLGIsYyl7cmV0dXJuIFdwKGZ1bmN0aW9uKGMpe2lmKExkKGMpKXJldHVybiBqcihcIk5vIGNsb3NpbmcgYnJhY2tldCBmb3VuZC5cIixiKTt2YXIgZD1JKGMpO2M9SihjKTtpZihyKEhsLmEoaG0uYShTbC5hKGQpKSkpKWQ9RHMoZCxjKTtlbHNlIGlmKEMuYihIbC5hKGEpLENtLmEoU2wuYShkKSkpKWQ9bmV3IFYobnVsbCwyLDUsVyxbbnVsbCxuZXcgVihudWxsLDQsNSxXLFtEayxOai5hKGQpLG51bGwsY10sbnVsbCldLG51bGwpO2Vsc2V7dmFyIGY7Zj14bS5hKGhtLmEoU2wuYShkKSkpO2Y9cihmKT93ay5hKE5qLmEoZCkpOmY7ZD1yKGYpP25ldyBWKG51bGwsMiw1LFcsW251bGwsbmV3IFYobnVsbCw0LDUsVyxbU2ksbnVsbCxOai5hKGQpLGNdLG51bGwpXSxudWxsKTpyKHhtLmEoaG0uYShTbC5hKGQpKSkpP25ldyBWKG51bGwsMiw1LFcsW251bGwsbmV3IFYobnVsbCw0LDUsVyxbeG0sbnVsbCxudWxsLGNdLG51bGwpXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFxuW2QsY10sbnVsbCl9cmV0dXJuIGR9LGMpfVxuZnVuY3Rpb24gRXMoYSxiLGMpe3JldHVybiBDZChXcChmdW5jdGlvbihjKXt2YXIgZD1PKGMsMCxudWxsKSxmPU8oYywxLG51bGwpO2M9TyhjLDIsbnVsbCk7dmFyIGc9RnMoYSxiLGMpO2M9TyhnLDAsbnVsbCk7dmFyIGs9TyhnLDEsbnVsbCksZz1PKGssMCxudWxsKSxsPU8oaywxLG51bGwpLHA9TyhrLDIsbnVsbCksaz1PKGssMyxudWxsKTtyZXR1cm4gQy5iKGcsRGspP25ldyBWKG51bGwsMiw1LFcsW251bGwsbmV3IFYobnVsbCwyLDUsVyxbYmgoTWUsTihbZCx3ZyhbcihmKT9TaTpWbCxuZXcgVihudWxsLDEsNSxXLFtjXSxudWxsKSxibCxsXSldLDApKSxrXSxudWxsKV0sbnVsbCk6Qy5iKGcsU2kpP3IoU2kuYShkKSk/anIoJ1R3byBlbHNlIGNsYXVzZXMgKFwifjo7XCIpIGluc2lkZSBicmFja2V0IGNvbnN0cnVjdGlvbi4nLGIpOnRiKFNpLmEoYSkpP2pyKCdBbiBlbHNlIGNsYXVzZSAoXCJ+OjtcIikgaXMgaW4gYSBicmFja2V0IHR5cGUgdGhhdCBkb2VzblxcJ3Qgc3VwcG9ydCBpdC4nLGIpOlxuQy5iKGVtLFNpLmEoYSkpJiZFKFZsLmEoZCkpP2pyKCdUaGUgZWxzZSBjbGF1c2UgKFwifjo7XCIpIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgZmlyc3QgcG9zaXRpb24gZm9yIHRoaXMgZGlyZWN0aXZlLicsYik6Qy5iKGVtLFNpLmEoYSkpP25ldyBWKG51bGwsMiw1LFcsWyEwLG5ldyBWKG51bGwsMyw1LFcsW2JoKE1lLE4oW2QsbmV3IHEobnVsbCwyLFtTaSxuZXcgVihudWxsLDEsNSxXLFtjXSxudWxsKSxwaSxwXSxudWxsKV0sMCkpLCExLGtdLG51bGwpXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFshMCxuZXcgVihudWxsLDMsNSxXLFtiaChNZSxOKFtkLG5ldyBxKG51bGwsMSxbVmwsbmV3IFYobnVsbCwxLDUsVyxbY10sbnVsbCldLG51bGwpXSwwKSksITAsa10sbnVsbCldLG51bGwpOkMuYihnLHhtKT9yKGYpP2pyKCdBIHBsYWluIGNsYXVzZSAod2l0aCBcIn47XCIpIGZvbGxvd3MgYW4gZWxzZSBjbGF1c2UgKFwifjo7XCIpIGluc2lkZSBicmFja2V0IGNvbnN0cnVjdGlvbi4nLGIpOnRiKHNpLmEoYSkpP1xuanIoJ0Egc2VwYXJhdG9yIChcIn47XCIpIGlzIGluIGEgYnJhY2tldCB0eXBlIHRoYXQgZG9lc25cXCd0IHN1cHBvcnQgaXQuJyxiKTpuZXcgVihudWxsLDIsNSxXLFshMCxuZXcgVihudWxsLDMsNSxXLFtiaChNZSxOKFtkLG5ldyBxKG51bGwsMSxbVmwsbmV3IFYobnVsbCwxLDUsVyxbY10sbnVsbCldLG51bGwpXSwwKSksITEsa10sbnVsbCldLG51bGwpOm51bGx9LG5ldyBWKG51bGwsMyw1LFcsW25ldyBxKG51bGwsMSxbVmwsRmRdLG51bGwpLCExLGNdLG51bGwpKSl9ZnVuY3Rpb24gR3MoYSl7cmV0dXJuIEkoV3AoZnVuY3Rpb24oYSl7dmFyIGI9SShhKTthPUooYSk7dmFyIGQ9aG0uYShTbC5hKGIpKTtyZXR1cm4gcihIbC5hKGQpKT9EcyhiLGEpOm5ldyBWKG51bGwsMiw1LFcsW2IsYV0sbnVsbCl9LGEpKX1cbmZ1bmN0aW9uIGVyKGEpe3ZhciBiPWlyO2lyPWE7dHJ5e3JldHVybiBHcyhJKFdwKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpO2E9TyhhLDEsbnVsbCk7aWYoTGQoYikpcmV0dXJuIG5ldyBWKG51bGwsMiw1LFcsW251bGwsYl0sbnVsbCk7dmFyIGM9Yi5pbmRleE9mKFwiflwiKTtpZigwPmMpYj1uZXcgVihudWxsLDIsNSxXLFtDcyhiLGEpLG5ldyBWKG51bGwsMiw1LFcsW1wiXCIsYStiLmxlbmd0aF0sbnVsbCldLG51bGwpO2Vsc2UgaWYoMD09PWMpe2E9V3Aod3MsbmV3IFYobnVsbCwzLDUsVyxbYi5zdWJzdHJpbmcoMSksYSsxLCExXSxudWxsKSk7Yj1PKGEsMCxudWxsKTtjPU8oYSwxLG51bGwpO2E9TyhjLDAsbnVsbCk7Yz1PKGMsMSxudWxsKTthPXpzKGEsYyk7TyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTt2YXIgYz1PKGEsMCxudWxsKSxmPU8oYSwxLG51bGwpLGc9TyhhLDIsbnVsbCk7YT1JKGMpO3ZhciBrPUIuYih0cyxhLnRvVXBwZXJDYXNlKCkpLFxuZz1yKGspP0JzKGssbWYuYih4cyxiKSxnLGYpOm51bGw7dGIoYSkmJmpyKFwiRm9ybWF0IHN0cmluZyBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgZGlyZWN0aXZlXCIsZik7dGIoaykmJmpyKFt0KCdEaXJlY3RpdmUgXCInKSx0KGEpLHQoJ1wiIGlzIHVuZGVmaW5lZCcpXS5qb2luKFwiXCIpLGYpO2I9VzthPW5ldyBwcihuai5hKGspLmNhbGwobnVsbCxnLGYpLGssZyxmLG51bGwsbnVsbCxudWxsKTtjPWMuc3Vic3RyaW5nKDEpO2YrPTE7aWYoQy5iKFwiXFxuXCIsQ20uYShrKSkmJnRiKHdrLmEoZykpKWE6e2s9bmV3IFYobnVsbCwyLDUsVyxbXCIgXCIsXCJcXHRcIl0sbnVsbCk7aWYoTmQoaykpYjppZihrPUUoayksbnVsbD09aylrPWZoO2Vsc2UgaWYoayBpbnN0YW5jZW9mIEYmJjA9PT1rLnUpe2s9ay5nO2M6Zm9yKHZhciBnPTAsbD13YyhmaCk7OylpZihnPGsubGVuZ3RoKXZhciBwPWcrMSxsPWwuR2IobnVsbCxrW2ddKSxnPXA7ZWxzZSBicmVhayBjO2s9bC5RYihudWxsKX1lbHNlIGZvcihwPXdjKGZoKTs7KWlmKG51bGwhPVxuaylnPUooaykscD1wLkdiKG51bGwsay5BYShudWxsKSksaz1nO2Vsc2V7az15YyhwKTticmVhayBifWVsc2Ugaz0kZChba10pO2ZvcihnPTA7Oyl7KHA9Qy5iKGcsTShjKSkpfHwocD1xZChjLGcpLHA9ay5hP2suYShwKTprLmNhbGwobnVsbCxwKSxwPXRiKHApKTtpZihwKXtrPWc7YnJlYWsgYX1nKz0xfX1lbHNlIGs9MDtiPW5ldyBWKG51bGwsMiw1LGIsW2EsbmV3IFYobnVsbCwyLDUsVyxbYy5zdWJzdHJpbmcoayksZitrXSxudWxsKV0sbnVsbCl9ZWxzZSBiPW5ldyBWKG51bGwsMiw1LFcsW0NzKGIuc3Vic3RyaW5nKDAsYyksYSksbmV3IFYobnVsbCwyLDUsVyxbYi5zdWJzdHJpbmcoYyksYythXSxudWxsKV0sbnVsbCk7cmV0dXJuIGJ9fShiKSxuZXcgVihudWxsLDIsNSxXLFthLDBdLG51bGwpKSkpfWZpbmFsbHl7aXI9Yn19XG52YXIgSHM9ZnVuY3Rpb24gSHMoYil7Zm9yKDs7KXtpZihMZChiKSlyZXR1cm4hMTt2YXIgYztjPWttLmEoem0uYShTbC5hKEkoYikpKSk7cihjKXx8KGM9WWUoSHMsSShWbC5hKE5qLmEoSShiKSkpKSksYz1yKGMpP2M6WWUoSHMsSShTaS5hKE5qLmEoSShiKSkpKSkpO2lmKHIoYykpcmV0dXJuITA7Yj1KKGIpfX07ZnVuY3Rpb24gaHIoYSl7Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxkPTA7OylpZihkPGMpYi5wdXNoKGFyZ3VtZW50c1tkXSksZCs9MTtlbHNlIGJyZWFrO3N3aXRjaChiLmxlbmd0aCl7Y2FzZSAzOnJldHVybiBncihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7Y2FzZSAyOnJldHVybiBJcyhhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtkZWZhdWx0OnRocm93IEVycm9yKFt0KFwiSW52YWxpZCBhcml0eTogXCIpLHQoYi5sZW5ndGgpXS5qb2luKFwiXCIpKTt9fVxuZnVuY3Rpb24gZ3IoYSxiLGMpe3ZhciBkPW5ldyB5YSxlPXRiKGEpfHwhMD09PWE/bmV3IExjKGQpOmEsZjtmPUhzKGIpO2Y9cihmKT90YihXcShlKSk6ZjtmPXIoZik/cihXcShlKSk/ZTpHcShlKTplO3ZhciBnPW47bj1mO3RyeXt0cnl7SXMoYixjKX1maW5hbGx5e2UhPT1mJiZzYyhmKX1yZXR1cm4gdGIoYSk/XCJcIit0KGQpOiEwPT09YT9kYi5hP2RiLmEoXCJcIit0KGQpKTpkYi5jYWxsKG51bGwsXCJcIit0KGQpKTpudWxsfWZpbmFsbHl7bj1nfX1cbmZ1bmN0aW9uIElzKGEsYil7VnAoZnVuY3Rpb24oYSxiKXtpZihyKFByKGIpKSlyZXR1cm4gbmV3IFYobnVsbCwyLDUsVyxbbnVsbCxiXSxudWxsKTt2YXIgYz1ycihOai5hKGEpLGIpLGQ9TyhjLDAsbnVsbCksYz1PKGMsMSxudWxsKSxnPVhwKGQpLGQ9TyhnLDAsbnVsbCksZz1PKGcsMSxudWxsKSxkPVEuYyhkLGptLGMpO3JldHVybiBuZXcgVihudWxsLDIsNSxXLFtudWxsLFBlKGpqLmEoYSksbmV3IFYobnVsbCwzLDUsVyxbZCxjLGddLG51bGwpKV0sbnVsbCl9LGIsYSk7cmV0dXJuIG51bGx9XG52YXIgWj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsYz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8Yy5sZW5ndGg7KWNbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoYywwKX1yZXR1cm4gZC5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gZChjKXt2YXIgZD1CLmMoTC5hP0wuYShiKTpMLmNhbGwobnVsbCxiKSxjLFZkKTtkPT09VmQmJihkPVBlKGEsYyksa2YuQyhiLFEsYyxkKSk7cmV0dXJuIGR9Yy5CPTA7Yy5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gZChhKX07Yy5mPWQ7cmV0dXJuIGN9KCl9KFk/WShYKTplZi5jYWxsKG51bGwsWCkpfShlcik7ZnVuY3Rpb24gSnMoYSxiLGMpe1RoKGEsYixjKX12YXIgS3M9bmV3IHEobnVsbCw2LFtnbSxcIidcIixmbSxcIiMnXCIsa2wsXCJAXCIsQ2wsXCJ+XCIsWmksXCJAXCIsZWksXCJ+XCJdLG51bGwpO1xuZnVuY3Rpb24gTHMoYSl7dmFyIGI7Yj1JKGEpO2I9S3MuYT9Lcy5hKGIpOktzLmNhbGwobnVsbCxiKTtyZXR1cm4gcihyKGIpP0MuYigyLE0oYSkpOmIpPyh4KG4sYiksWHEoQ2QoYSkpLCEwKTpudWxsfWZ1bmN0aW9uIE1zKGEpe2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciBiPVVxLGM9VnE7VXErPTE7VnE9MDt0cnl7SnEoXCJbXCIsXCJdXCIpO2Zvcih2YXIgZD0wLGU9RShhKTs7KXtpZih0YihoYil8fGQ8aGIpe2lmKGUmJihYcShJKGUpKSxKKGUpKSl7eChuLFwiIFwiKTticigkbCk7YT1kKzE7dmFyIGY9SihlKSxkPWEsZT1mO2NvbnRpbnVlfX1lbHNlIHgobixcIi4uLlwiKTticmVha31LcSgpfWZpbmFsbHl7VnE9YyxVcT1ifX1yZXR1cm4gbnVsbH1aLmE/Wi5hKFwiflxceDNjW347fkB7fnd+Xiwgfjpffn1+O11+OlxceDNlXCIpOlouY2FsbChudWxsLFwiflxceDNjW347fkB7fnd+Xiwgfjpffn1+O11+OlxceDNlXCIpO1xuZnVuY3Rpb24gTnMoYSl7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIGI9VXEsYz1WcTtVcSs9MTtWcT0wO3RyeXtKcShcIntcIixcIn1cIik7Zm9yKHZhciBkPTAsZT1FKGEpOzspe2lmKHRiKGhiKXx8ZDxoYil7aWYoZSl7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7YT1VcTt2YXIgZj1WcTtVcSs9MTtWcT0wO3RyeXtKcShudWxsLG51bGwpLFhxKEkoSShlKSkpLHgobixcIiBcIiksYnIoJGwpLFZxPTAsWHEoSShKKEkoZSkpKSksS3EoKX1maW5hbGx5e1ZxPWYsVXE9YX19aWYoSihlKSl7eChuLFwiLCBcIik7YnIoJGwpO2E9ZCsxO3ZhciBnPUooZSksZD1hLGU9Zztjb250aW51ZX19fWVsc2UgeChuLFwiLi4uXCIpO2JyZWFrfUtxKCl9ZmluYWxseXtWcT1jLFVxPWJ9fXJldHVybiBudWxsfWZ1bmN0aW9uIE9zKGEpe3JldHVybiB4KG4sQWguZihOKFthXSwwKSkpfVxudmFyIFBzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsYz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8Yy5sZW5ndGg7KWNbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoYywwKX1yZXR1cm4gZC5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gZChhKXthPWZyKGEpO3JldHVybiBJcyhiLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGQoYSl9O2EuZj1kO3JldHVybiBhfSgpfShcIn5cXHgzYyN7fjt+QHt+d35eIH46X359fjt9fjpcXHgzZVwiLFouYT9aLmEoXCJ+XFx4M2Mje347fkB7fnd+XiB+Ol9+fX47fX46XFx4M2VcIik6Wi5jYWxsKG51bGwsXCJ+XFx4M2Mje347fkB7fnd+XiB+Ol9+fX47fX46XFx4M2VcIikpLFFzPW5ldyBxKG51bGwsMixbXCJjb3JlJGZ1dHVyZV9jYWxsXCIsXCJGdXR1cmVcIixcImNvcmUkcHJvbWlzZVwiLFwiUHJvbWlzZVwiXSxudWxsKTtcbmZ1bmN0aW9uIFJzKGEpe3ZhciBiO2I9bmgoL15bXiRdK1xcJFteJF0rLyxhKTtiPXIoYik/UXMuYT9Rcy5hKGIpOlFzLmNhbGwobnVsbCxiKTpudWxsO3JldHVybiByKGIpP2I6YX1cbnZhciBTcz1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGM9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGMubGVuZ3RoOyljW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGMsMCl9cmV0dXJuIGQuY2FsbCh0aGlzLGIpfWZ1bmN0aW9uIGQoYSl7YT1mcihhKTtyZXR1cm4gSXMoYixhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBkKGEpfTthLmY9ZDtyZXR1cm4gYX0oKX0oXCJ+XFx4M2NcXHgzYy0ofjt+QHt+d35eIH5ffn1+OyktXFx4M2N+OlxceDNlXCIsWi5hP1ouYShcIn5cXHgzY1xceDNjLSh+O35Ae353fl4gfl9+fX47KS1cXHgzY346XFx4M2VcIik6Wi5jYWxsKG51bGwsXCJ+XFx4M2NcXHgzYy0ofjt+QHt+d35eIH5ffn1+OyktXFx4M2N+OlxceDNlXCIpKTtcbmZ1bmN0aW9uIFRzKGEpe3JldHVybihudWxsIT1hP2EubyYzMjc2OHx8bT09PWEuS2N8fChhLm8/MDp2YihjYyxhKSk6dmIoY2MsYSkpP3FsOmEgaW5zdGFuY2VvZiB6P21qOihudWxsPT1hPzA6bnVsbCE9YT9hLm8mNjR8fG09PT1hLkhhfHwoYS5vPzA6dmIoS2IsYSkpOnZiKEtiLGEpKT9aazpRZChhKT9NbTpSZChhKT9mazpPZChhKT9pbTpudWxsPT1hP251bGw6Z2p9aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBVcyl7dmFyIFVzLFZzPVk/WShYKTplZi5jYWxsKG51bGwsWCksV3M9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxYcz1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLFlzPVk/WShYKTplZi5jYWxsKG51bGwsWCksWnM9Qi5jKFgsc20sSmgoKSk7VXM9bmV3IFZoKFdjLmIoXCJjbGpzLnBwcmludFwiLFwic2ltcGxlLWRpc3BhdGNoXCIpLFRzLGdqLFpzLFZzLFdzLFhzLFlzKX1cbkpzKFVzLFprLGZ1bmN0aW9uKGEpe2lmKHRiKExzKGEpKSlpZihyKGFyKCkpKXgobixcIiNcIik7ZWxzZXt2YXIgYj1VcSxjPVZxO1VxKz0xO1ZxPTA7dHJ5e0pxKFwiKFwiLFwiKVwiKTtmb3IodmFyIGQ9MCxlPUUoYSk7Oyl7aWYodGIoaGIpfHxkPGhiKXtpZihlJiYoWHEoSShlKSksSihlKSkpe3gobixcIiBcIik7YnIoJGwpO2E9ZCsxO3ZhciBmPUooZSksZD1hLGU9Zjtjb250aW51ZX19ZWxzZSB4KG4sXCIuLi5cIik7YnJlYWt9S3EoKX1maW5hbGx5e1ZxPWMsVXE9Yn19cmV0dXJuIG51bGx9KTtUaChVcyxmayxNcyk7VGgoVXMsTW0sTnMpO1RoKFVzLGltLFBzKTtKcyhVcyxudWxsLGZ1bmN0aW9uKCl7cmV0dXJuIHgobixBaC5mKE4oW251bGxdLDApKSl9KTtUaChVcyxnaixPcyk7T3E9VXM7ZnVuY3Rpb24gJHMoYSl7cmV0dXJuIFJkKGEpP25ldyBWKG51bGwsMiw1LFcsW1wiW1wiLFwiXVwiXSxudWxsKTpuZXcgVihudWxsLDIsNSxXLFtcIihcIixcIilcIl0sbnVsbCl9XG5mdW5jdGlvbiBhdChhKXtpZihQZChhKSl7dmFyIGI9JHMoYSksYz1PKGIsMCxudWxsKSxkPU8oYiwxLG51bGwpLGU9RShhKSxmPUkoZSksZz1KKGUpO2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciBrPVVxLGw9VnE7VXErPTE7VnE9MDt0cnl7SnEoYyxkKTsoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxkPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YjxkLmxlbmd0aDspZFtiXT1hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihkLDApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwifnd+OmlcIixaLmE/Wi5hKFwifnd+OmlcIik6Wi5jYWxsKG51bGwsXCJ+d346aVwiKSxcbmssbCxiLGMsZCxhLGUsZixnLGYsZyl9KSgpLmNhbGwobnVsbCxmKTtmb3IodmFyIHA9Zzs7KWlmKEUocCkpeyhmdW5jdGlvbigpe3ZhciB1PVouYT9aLmEoXCIgXCIpOlouY2FsbChudWxsLFwiIFwiKTtyZXR1cm4gZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGM9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYz0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtjPGQubGVuZ3RoOylkW2NdPWFyZ3VtZW50c1tjKzBdLCsrYztjPW5ldyBGKGQsMCl9cmV0dXJuIGIuY2FsbCh0aGlzLGMpfWZ1bmN0aW9uIGIoYSl7YT1mcihhKTtyZXR1cm4gSXMoYyxhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBiKGEpfTthLmY9YjtyZXR1cm4gYX0oKX0ocCxcIiBcIix1LGssbCxiLGMsZCxhLGUsZixnLGYsZyl9KSgpLmNhbGwobnVsbCk7dmFyIHU9SShwKTtpZihQZCh1KSl7dmFyIHY9JHModSksdz1PKHYsMCxudWxsKSxcbnk9Tyh2LDEsbnVsbCk7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIEE9VXEsRD1WcTtVcSs9MTtWcT0wO3RyeXtKcSh3LHkpO2lmKEMuYihNKHUpLDMpJiZDZCh1KWluc3RhbmNlb2YgUyl7dmFyIEg9dSxLPU8oSCwwLG51bGwpLFI9TyhILDEsbnVsbCksVT1PKEgsMixudWxsKTsoZnVuY3Rpb24oKXt2YXIgdmE9Wi5hP1ouYShcIn53IH53IFwiKTpaLmNhbGwobnVsbCxcIn53IH53IFwiKTtyZXR1cm4gZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGM9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYz0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtjPGQubGVuZ3RoOylkW2NdPWFyZ3VtZW50c1tjKzBdLCsrYztjPW5ldyBGKGQsMCl9cmV0dXJuIGIuY2FsbCh0aGlzLGMpfWZ1bmN0aW9uIGIoYSl7YT1mcihhKTtyZXR1cm4gSXMoYyxhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBiKGEpfTthLmY9XG5iO3JldHVybiBhfSgpfShwLFwifncgfncgXCIsdmEsSCxLLFIsVSxBLEQsdix3LHksdSxrLGwsYixjLGQsYSxlLGYsZyxmLGcpfSkoKS5jYWxsKG51bGwsSyxSKTtQZChVKT9mdW5jdGlvbigpe3ZhciB2YT1SZChVKT9cIn5cXHgzY1t+O35Ae353fl4gfjpffn1+O11+OlxceDNlXCI6XCJ+XFx4M2Mofjt+QHt+d35eIH46X359fjspfjpcXHgzZVwiLGxiPVwic3RyaW5nXCI9PT10eXBlb2YgdmE/Wi5hP1ouYSh2YSk6Wi5jYWxsKG51bGwsdmEpOnZhO3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYz1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBjPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2M8ZC5sZW5ndGg7KWRbY109YXJndW1lbnRzW2MrMF0sKytjO2M9bmV3IEYoZCwwKX1yZXR1cm4gYi5jYWxsKHRoaXMsYyl9ZnVuY3Rpb24gYihhKXthPWZyKGEpO3JldHVybiBJcyhjLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPVxuRShhKTtyZXR1cm4gYihhKX07YS5mPWI7cmV0dXJuIGF9KCl9KHAsdmEsbGIsSCxLLFIsVSxBLEQsdix3LHksdSxrLGwsYixjLGQsYSxlLGYsZyxmLGcpfSgpLmNhbGwobnVsbCxVKTpYcShVKX1lbHNlIFBlKGZ1bmN0aW9uKCl7dmFyIEg9Wi5hP1ouYShcIn53IH46aX5Ae353fl4gfjpffn1cIik6Wi5jYWxsKG51bGwsXCJ+dyB+Oml+QHt+d35eIH46X359XCIpO3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYz1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBjPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2M8ZC5sZW5ndGg7KWRbY109YXJndW1lbnRzW2MrMF0sKytjO2M9bmV3IEYoZCwwKX1yZXR1cm4gYi5jYWxsKHRoaXMsYyl9ZnVuY3Rpb24gYihhKXthPWZyKGEpO3JldHVybiBJcyhjLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGIoYSl9O2EuZj1iO3JldHVybiBhfSgpfShwLFxuXCJ+dyB+Oml+QHt+d35eIH46X359XCIsSCxBLEQsdix3LHksdSxrLGwsYixjLGQsYSxlLGYsZyxmLGcpfSgpLHUpO0txKCl9ZmluYWxseXtWcT1ELFVxPUF9fUoocCkmJmZ1bmN0aW9uKCl7dmFyIEE9Wi5hP1ouYShcIn5fXCIpOlouY2FsbChudWxsLFwifl9cIik7cmV0dXJuIGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBjPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGM9MCxkPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YzxkLmxlbmd0aDspZFtjXT1hcmd1bWVudHNbYyswXSwrK2M7Yz1uZXcgRihkLDApfXJldHVybiBiLmNhbGwodGhpcyxjKX1mdW5jdGlvbiBiKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGMsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYihhKX07YS5mPWI7cmV0dXJuIGF9KCl9KHAsXCJ+X1wiLEEsdix3LHksdSxrLGwsYixjLGQsYSxlLGYsZyxmLGcpfSgpLmNhbGwobnVsbCl9ZWxzZSBYcSh1KSxcbkoocCkmJmZ1bmN0aW9uKCl7dmFyIHY9Wi5hP1ouYShcIn46X1wiKTpaLmNhbGwobnVsbCxcIn46X1wiKTtyZXR1cm4gZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGM9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYz0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtjPGQubGVuZ3RoOylkW2NdPWFyZ3VtZW50c1tjKzBdLCsrYztjPW5ldyBGKGQsMCl9cmV0dXJuIGIuY2FsbCh0aGlzLGMpfWZ1bmN0aW9uIGIoYSl7YT1mcihhKTtyZXR1cm4gSXMoYyxhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBiKGEpfTthLmY9YjtyZXR1cm4gYX0oKX0ocCxcIn46X1wiLHYsdSxrLGwsYixjLGQsYSxlLGYsZyxmLGcpfSgpLmNhbGwobnVsbCk7cD1KKHApfWVsc2UgYnJlYWs7S3EoKX1maW5hbGx5e1ZxPWwsVXE9a319fWVsc2UgWHEoYSl9XG52YXIgYnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxjPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YjxjLmxlbmd0aDspY1tiXT1hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihjLDApfXJldHVybiBkLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBkKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gZChhKX07YS5mPWQ7cmV0dXJuIGF9KCl9KFwifjpcXHgzY353fl4gfkBffnd+XiB+X35Ae353fl4gfl9+fX46XFx4M2VcIixaLmE/Wi5hKFwifjpcXHgzY353fl4gfkBffnd+XiB+X35Ae353fl4gfl9+fX46XFx4M2VcIik6Wi5jYWxsKG51bGwsXCJ+OlxceDNjfnd+XiB+QF9+d35eIH5ffkB7fnd+XiB+X359fjpcXHgzZVwiKSk7XG5mdW5jdGlvbiBjdChhLGIpe0UoYSkmJihyKGIpP2Z1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCwwKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhhKXthPWZyKGEpO3JldHVybiBJcyhiLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGMoYSl9O2EuZj1jO3JldHVybiBhfSgpfShcIiB+X1wiLFouYT9aLmEoXCIgfl9cIik6Wi5jYWxsKG51bGwsXCIgfl9cIikpfSgpLmNhbGwobnVsbCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxcbmQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGQubGVuZ3RoOylkW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGQsMCl9cmV0dXJuIGMuY2FsbCh0aGlzLGIpfWZ1bmN0aW9uIGMoYSl7YT1mcihhKTtyZXR1cm4gSXMoYixhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBjKGEpfTthLmY9YztyZXR1cm4gYX0oKX0oXCIgfkBfXCIsWi5hP1ouYShcIiB+QF9cIik6Wi5jYWxsKG51bGwsXCIgfkBfXCIpKX0oKS5jYWxsKG51bGwpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCwwKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhhKXthPWZyKGEpO3JldHVybiBJcyhiLGEpfVxuYS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwifnt+d35eIH5ffn1cIixaLmE/Wi5hKFwifnt+d35eIH5ffn1cIik6Wi5jYWxsKG51bGwsXCJ+e353fl4gfl9+fVwiKSl9KCkuY2FsbChudWxsLGEpKX1cbmZ1bmN0aW9uIGR0KGEpe0UoYSkmJmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYz1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBjPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2M8ZC5sZW5ndGg7KWRbY109YXJndW1lbnRzW2MrMF0sKytjO2M9bmV3IEYoZCwwKX1yZXR1cm4gYi5jYWxsKHRoaXMsYyl9ZnVuY3Rpb24gYihhKXthPWZyKGEpO3JldHVybiBJcyhjLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGIoYSl9O2EuZj1iO3JldHVybiBhfSgpfShcIiB+X357fnd+XiB+X359XCIsWi5hP1ouYShcIiB+X357fnd+XiB+X359XCIpOlouY2FsbChudWxsLFwiIH5ffnt+d35eIH5ffn1cIikpfSgpLmNhbGwobnVsbCxhKX1cbmZ1bmN0aW9uIGV0KGEpe2lmKEooYSkpe3ZhciBiPUUoYSksYz1JKGIpLGQ9SihiKSxlPUkoZCksZj1KKGQpLGc9XCJzdHJpbmdcIj09PXR5cGVvZiBJKGYpP25ldyBWKG51bGwsMiw1LFcsW0koZiksSihmKV0sbnVsbCk6bmV3IFYobnVsbCwyLDUsVyxbbnVsbCxmXSxudWxsKSxrPU8oZywwLG51bGwpLGw9TyhnLDEsbnVsbCkscD1RZChJKGwpKT9uZXcgVihudWxsLDIsNSxXLFtJKGwpLEoobCldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW251bGwsbF0sbnVsbCksdT1PKHAsMCxudWxsKSx2PU8ocCwxLG51bGwpO2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciB3PVVxLHk9VnE7VXErPTE7VnE9MDt0cnl7SnEoXCIoXCIsXCIpXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09XG5hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihkLDApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwifncgfjFJfkBffndcIixaLmE/Wi5hKFwifncgfjFJfkBffndcIik6Wi5jYWxsKG51bGwsXCJ+dyB+MUl+QF9+d1wiKSx3LHksYSxiLGMsZCxjLGUsZixlLGYsZyxrLGwscCx1LHYpfSgpLmNhbGwobnVsbCxjLGUpLHIoaykmJmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCwwKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhhKXthPWZyKGEpO1xucmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwiIH5ffndcIixaLmE/Wi5hKFwiIH5ffndcIik6Wi5jYWxsKG51bGwsXCIgfl9+d1wiKSx3LHksYSxiLGMsZCxjLGUsZixlLGYsZyxrLGwscCx1LHYpfSgpLmNhbGwobnVsbCxrKSxyKHUpJiZmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGQubGVuZ3RoOylkW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGQsMCl9cmV0dXJuIGMuY2FsbCh0aGlzLGIpfWZ1bmN0aW9uIGMoYSl7YT1mcihhKTtyZXR1cm4gSXMoYixhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBjKGEpfTthLmY9YztyZXR1cm4gYX0oKX0oXCIgfl9+d1wiLFouYT9aLmEoXCIgfl9+d1wiKTpcblouY2FsbChudWxsLFwiIH5ffndcIiksdyx5LGEsYixjLGQsYyxlLGYsZSxmLGcsayxsLHAsdSx2KX0oKS5jYWxsKG51bGwsdSksUmQoSSh2KSk/Y3QodixyKGspP2s6dSk6ZHQodiksS3EoKX1maW5hbGx5e1ZxPXksVXE9d319cmV0dXJuIG51bGx9cmV0dXJuIGZ0LmE/ZnQuYShhKTpmdC5jYWxsKG51bGwsYSl9XG5mdW5jdGlvbiBndChhKXtpZihyKGFyKCkpKXgobixcIiNcIik7ZWxzZXt2YXIgYj1VcSxjPVZxO1VxKz0xO1ZxPTA7dHJ5e0pxKFwiW1wiLFwiXVwiKTtmb3IodmFyIGQ9MDs7KXtpZih0YihoYil8fGQ8aGIpe2lmKEUoYSkpe2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciBlPVVxLGY9VnE7VXErPTE7VnE9MDt0cnl7SnEobnVsbCxudWxsKSxYcShJKGEpKSxKKGEpJiYoeChuLFwiIFwiKSxicihUaSksWHEoQ2QoYSkpKSxLcSgpfWZpbmFsbHl7VnE9ZixVcT1lfX1pZihKKFpjKGEpKSl7eChuLFwiIFwiKTticigkbCk7dmFyIGU9ZCsxLGc9SihaYyhhKSksZD1lO2E9Zztjb250aW51ZX19fWVsc2UgeChuLFwiLi4uXCIpO2JyZWFrfUtxKCl9ZmluYWxseXtWcT1jLFVxPWJ9fX1cbmZ1bmN0aW9uIGh0KGEpe3ZhciBiPUkoYSk7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIGM9VXEsZD1WcTtVcSs9MTtWcT0wO3RyeXtKcShcIihcIixcIilcIiksSihhKSYmUmQoQ2QoYSkpPyhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGQubGVuZ3RoOylkW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGQsMCl9cmV0dXJuIGMuY2FsbCh0aGlzLGIpfWZ1bmN0aW9uIGMoYSl7YT1mcihhKTtyZXR1cm4gSXMoYixhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBjKGEpfTthLmY9YztyZXR1cm4gYX0oKX0oXCJ+dyB+MUl+QF9cIixaLmE/Wi5hKFwifncgfjFJfkBfXCIpOlouY2FsbChudWxsLFwifncgfjFJfkBfXCIpLGMsZCxiKX0oKS5jYWxsKG51bGwsYiksZ3QoQ2QoYSkpLFxuZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxkPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YjxkLmxlbmd0aDspZFtiXT1hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihkLDApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwiIH5ffnt+d35eIH5ffn1cIixaLmE/Wi5hKFwiIH5ffnt+d35eIH5ffn1cIik6Wi5jYWxsKG51bGwsXCIgfl9+e353fl4gfl9+fVwiKSxjLGQsYil9KCkuY2FsbChudWxsLEooWmMoYSkpKSk6ZnQuYT9mdC5hKGEpOmZ0LmNhbGwobnVsbCxhKSxLcSgpfWZpbmFsbHl7VnE9ZCxVcT1jfX1yZXR1cm4gbnVsbH1cbnZhciBpdD1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGM9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0wKTtiPGMubGVuZ3RoOyljW2JdPWFyZ3VtZW50c1tiKzBdLCsrYjtiPW5ldyBGKGMsMCl9cmV0dXJuIGQuY2FsbCh0aGlzLGIpfWZ1bmN0aW9uIGQoYSl7YT1mcihhKTtyZXR1cm4gSXMoYixhKX1hLkI9MDthLkE9ZnVuY3Rpb24oYSl7YT1FKGEpO3JldHVybiBkKGEpfTthLmY9ZDtyZXR1cm4gYX0oKX0oXCJ+OlxceDNjfjFJfnd+XiB+QF9+d35AeyB+X353fn1+OlxceDNlXCIsWi5hP1ouYShcIn46XFx4M2N+MUl+d35eIH5AX353fkB7IH5ffnd+fX46XFx4M2VcIik6Wi5jYWxsKG51bGwsXCJ+OlxceDNjfjFJfnd+XiB+QF9+d35AeyB+X353fn1+OlxceDNlXCIpKSxqdD1YO1xuZnVuY3Rpb24gZnQoYSl7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIGI9VXEsYz1WcTtVcSs9MTtWcT0wO3RyeXtKcShcIihcIixcIilcIik7Y3IocWksMSk7Zm9yKHZhciBkPTAsZT1FKGEpOzspe2lmKHRiKGhiKXx8ZDxoYil7aWYoZSYmKFhxKEkoZSkpLEooZSkpKXt4KG4sXCIgXCIpO2JyKCRsKTthPWQrMTt2YXIgZj1KKGUpLGQ9YSxlPWY7Y29udGludWV9fWVsc2UgeChuLFwiLi4uXCIpO2JyZWFrfUtxKCl9ZmluYWxseXtWcT1jLFVxPWJ9fXJldHVybiBudWxsfVxudmFyIGt0PWZ1bmN0aW9uKGEpe3JldHVybiB5Zi5iKFgsd2YoZGUsTihbZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gYyhhKXtyZXR1cm4gbmV3IEJlKG51bGwsZnVuY3Rpb24oKXtmb3IoOzspe3ZhciBkPUUoYSk7aWYoZCl7aWYoU2QoZCkpe3ZhciBmPUNjKGQpLGc9TShmKSxrPUZlKGcpO2E6Zm9yKHZhciBsPTA7OylpZihsPGcpe3ZhciBwPUpiLmIoZixsKTtJZShrLG5ldyBWKG51bGwsMiw1LFcsW3AsbmV3IFYobnVsbCwyLDUsVyxbV2MuYShBZShJKHApKSksQ2QocCldLG51bGwpXSxudWxsKSk7bCs9MX1lbHNle2Y9ITA7YnJlYWsgYX1yZXR1cm4gZj9IZShrLmlhKCksYyhEYyhkKSkpOkhlKGsuaWEoKSxudWxsKX1rPUkoZCk7cmV0dXJuIHdkKG5ldyBWKG51bGwsMiw1LFcsW2ssbmV3IFYobnVsbCwyLDUsVyxbV2MuYShBZShJKGspKSksQ2QoayldLG51bGwpXSxudWxsKSxjKFpjKGQpKSl9cmV0dXJuIG51bGx9fSxudWxsLG51bGwpfShhKX0oKV0sMCkpKX0oZnVuY3Rpb24oYSl7cmV0dXJuIHlmLmIoWCxcbm1mLmIoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPU8oYiwwLG51bGwpLGU9TyhiLDEsbnVsbCksZjtmPXllKGMpO2Y9cihmKT9mOllkKG5ldyBkaChudWxsLG5ldyBxKG51bGwsMjMsW2JpLG51bGwsaWksbnVsbCxraSxudWxsLCRpLG51bGwsZmosbnVsbCxraixudWxsLFhqLG51bGwsaGssbnVsbCxrayxudWxsLHBrLG51bGwsc2ssbnVsbCxNayxudWxsLE5rLG51bGwsUWssbnVsbCwkayxudWxsLGRsLG51bGwsVWwsbnVsbCxjbSxudWxsLGZtLG51bGwsZ20sbnVsbCx1bSxudWxsLFFtLG51bGwsJG0sbnVsbF0sbnVsbCksbnVsbCksYyk7cmV0dXJuIHRiKGYpP25ldyBWKG51bGwsMiw1LFcsW1djLmIoYSxBZShjKSksZV0sbnVsbCk6Yn19KFwiY2xvanVyZS5jb3JlXCIpLGEpKX0oSGQoW2NtLCRrLGZpLGtrLEdsLEVpLFRsLGdrLEJsLEFpLGNqLFlpLFpqLCRtLGJrLFlrLFJsLGNsLGlqLHNrLFNrLEtsLERqLE9qLGdsLGJtLEdqLHFtLE9sLE9rXSxbYnQsZnVuY3Rpb24oYSl7dmFyIGI9XG5DZChhKSxjPUkoWmMoWmMoYSkpKTtpZihSZChiKSl7dmFyIGQ9anQ7anQ9Qy5iKDEsTShiKSk/d2coW0koYiksXCIlXCJdKTp5Zi5iKFgsbWYuYyhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgVihudWxsLDIsNSxXLFthLFt0KFwiJVwiKSx0KGIpXS5qb2luKFwiXCIpXSxudWxsKX19KGQsYixjKSxiLGxoKDEsTShiKSsxKSkpO3RyeXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBiPW51bGw7aWYoMDxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGI9MCxkPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMCk7YjxkLmxlbmd0aDspZFtiXT1hcmd1bWVudHNbYiswXSwrK2I7Yj1uZXcgRihkLDApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7XG5yZXR1cm4gYX0oKX0oXCJ+XFx4M2MjKH47fkB7fnd+XiB+X359fjspfjpcXHgzZVwiLFouYT9aLmEoXCJ+XFx4M2MjKH47fkB7fnd+XiB+X359fjspfjpcXHgzZVwiKTpaLmNhbGwobnVsbCxcIn5cXHgzYyMofjt+QHt+d35eIH5ffn1+Oyl+OlxceDNlXCIpLGQsYixjKX0oKS5jYWxsKG51bGwsYyl9ZmluYWxseXtqdD1kfX1lbHNlIHJldHVybiBmdC5hP2Z0LmEoYSk6ZnQuY2FsbChudWxsLGEpfSxodCxpdCxmdW5jdGlvbihhKXtpZigzPE0oYSkpe2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciBiPVVxLGM9VnE7VXErPTE7VnE9MDt0cnl7SnEoXCIoXCIsXCIpXCIpO2NyKHFpLDEpO1BlKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCxcbjApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwifncgfkBffncgfkBffncgfl9cIixaLmE/Wi5hKFwifncgfkBffncgfkBffncgfl9cIik6Wi5jYWxsKG51bGwsXCJ+dyB+QF9+dyB+QF9+dyB+X1wiKSxiLGMpfSgpLGEpO2Zvcih2YXIgZD0wLGU9RShvZigzLGEpKTs7KXtpZih0YihoYil8fGQ8aGIpe2lmKGUpe2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle2E9VXE7dmFyIGY9VnE7VXErPTE7VnE9MDt0cnl7SnEobnVsbCxudWxsKSxYcShJKGUpKSxKKGUpJiYoeChuLFwiIFwiKSxicihUaSksWHEoQ2QoZSkpKSxLcSgpfWZpbmFsbHl7VnE9ZixVcT1hfX1pZihKKFpjKGUpKSl7eChuLFwiIFwiKTticigkbCk7YT1kKzE7dmFyIGc9SihaYyhlKSksZD1hLGU9Zztjb250aW51ZX19fWVsc2UgeChuLFwiLi4uXCIpO2JyZWFrfUtxKCl9ZmluYWxseXtWcT1cbmMsVXE9Yn19cmV0dXJuIG51bGx9cmV0dXJuIGZ0LmE/ZnQuYShhKTpmdC5jYWxsKG51bGwsYSl9LGJ0LGV0LGV0LGh0LGJ0LGh0LGl0LGl0LGJ0LGl0LGh0LGh0LGJ0LGh0LGZ1bmN0aW9uKGEpe2lmKEooYSkpe3ZhciBiPUUoYSksYz1JKGIpLGQ9SihiKSxlPUkoZCksZj1KKGQpLGc9XCJzdHJpbmdcIj09PXR5cGVvZiBJKGYpP25ldyBWKG51bGwsMiw1LFcsW0koZiksSihmKV0sbnVsbCk6bmV3IFYobnVsbCwyLDUsVyxbbnVsbCxmXSxudWxsKSxrPU8oZywwLG51bGwpLGw9TyhnLDEsbnVsbCkscD1RZChJKGwpKT9uZXcgVihudWxsLDIsNSxXLFtJKGwpLEoobCldLG51bGwpOm5ldyBWKG51bGwsMiw1LFcsW251bGwsbF0sbnVsbCksdT1PKHAsMCxudWxsKSx2PU8ocCwxLG51bGwpO2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle3ZhciB3PVVxLHk9VnE7VXErPTE7VnE9MDt0cnl7SnEoXCIoXCIsXCIpXCIpOyhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9XG5udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCwwKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhhKXthPWZyKGEpO3JldHVybiBJcyhiLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGMoYSl9O2EuZj1jO3JldHVybiBhfSgpfShcIn53IH4xSX5AX353XCIsWi5hP1ouYShcIn53IH4xSX5AX353XCIpOlouY2FsbChudWxsLFwifncgfjFJfkBffndcIiksdyx5LGEsYixjLGQsYyxlLGYsZSxmLGcsayxsLHAsdSx2KX0pKCkuY2FsbChudWxsLGMsZSk7cihyKGspP2s6cih1KT91OkUodikpJiZmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dmFyIGI9bnVsbDtpZigwPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYj0wLGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC1cbjApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCwwKX1yZXR1cm4gYy5jYWxsKHRoaXMsYil9ZnVuY3Rpb24gYyhhKXthPWZyKGEpO3JldHVybiBJcyhiLGEpfWEuQj0wO2EuQT1mdW5jdGlvbihhKXthPUUoYSk7cmV0dXJuIGMoYSl9O2EuZj1jO3JldHVybiBhfSgpfShcIn5AOl9cIixaLmE/Wi5hKFwifkA6X1wiKTpaLmNhbGwobnVsbCxcIn5AOl9cIiksdyx5LGEsYixjLGQsYyxlLGYsZSxmLGcsayxsLHAsdSx2KX0oKS5jYWxsKG51bGwpO3IoaykmJmRyKCEwLCdcIn5hXCJ+Olt+O346QF9+XScsTihbayxyKHUpP3U6RSh2KV0sMCkpO3IodSkmJmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt2YXIgYj1udWxsO2lmKDA8YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciBiPTAsZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTApO2I8ZC5sZW5ndGg7KWRbYl09YXJndW1lbnRzW2IrMF0sKytiO2I9bmV3IEYoZCxcbjApfXJldHVybiBjLmNhbGwodGhpcyxiKX1mdW5jdGlvbiBjKGEpe2E9ZnIoYSk7cmV0dXJuIElzKGIsYSl9YS5CPTA7YS5BPWZ1bmN0aW9uKGEpe2E9RShhKTtyZXR1cm4gYyhhKX07YS5mPWM7cmV0dXJuIGF9KCl9KFwifnd+Olt+O346QF9+XVwiLFouYT9aLmEoXCJ+d346W347fjpAX35dXCIpOlouY2FsbChudWxsLFwifnd+Olt+O346QF9+XVwiKSx3LHksYSxiLGMsZCxjLGUsZixlLGYsZyxrLGwscCx1LHYpfSgpLmNhbGwobnVsbCx1LEUodikpO2Zvcih2YXIgQT12Ozspe2F0KEkoQSkpO3ZhciBEPUooQSk7aWYoRCl7dmFyIEg9RDticigkbCk7QT1IfWVsc2UgYnJlYWt9S3EoKX1maW5hbGx5e1ZxPXksVXE9d319cmV0dXJuIG51bGx9cmV0dXJuIFhxKGEpfSxodCxmdW5jdGlvbihhKXtpZihyKGFyKCkpKXgobixcIiNcIik7ZWxzZXt2YXIgYj1VcSxjPVZxO1VxKz0xO1ZxPTA7dHJ5e0pxKFwiKFwiLFwiKVwiKTtjcihxaSwxKTtYcShJKGEpKTtpZihKKGEpKXt4KG4sXCIgXCIpO2JyKCRsKTtmb3IodmFyIGQ9XG4wLGU9SihhKTs7KXtpZih0YihoYil8fGQ8aGIpe2lmKGUpe2lmKHIoYXIoKSkpeChuLFwiI1wiKTtlbHNle2E9VXE7dmFyIGY9VnE7VXErPTE7VnE9MDt0cnl7SnEobnVsbCxudWxsKSxYcShJKGUpKSxKKGUpJiYoeChuLFwiIFwiKSxicihUaSksWHEoQ2QoZSkpKSxLcSgpfWZpbmFsbHl7VnE9ZixVcT1hfX1pZihKKFpjKGUpKSl7eChuLFwiIFwiKTticigkbCk7YT1kKzE7dmFyIGc9SihaYyhlKSksZD1hLGU9Zztjb250aW51ZX19fWVsc2UgeChuLFwiLi4uXCIpO2JyZWFrfX1LcSgpfWZpbmFsbHl7VnE9YyxVcT1ifX1yZXR1cm4gbnVsbH0saHQsZXQsZXQsYnQsYnQsaHQsaHQsYnRdKSkpO1xuaWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBsdCl7dmFyIGx0LG10PVk/WShYKTplZi5jYWxsKG51bGwsWCksbnQ9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxvdD1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLHB0PVk/WShYKTplZi5jYWxsKG51bGwsWCkscXQ9Qi5jKFgsc20sSmgoKSk7bHQ9bmV3IFZoKFdjLmIoXCJjbGpzLnBwcmludFwiLFwiY29kZS1kaXNwYXRjaFwiKSxUcyxnaixxdCxtdCxudCxvdCxwdCl9SnMobHQsWmssZnVuY3Rpb24oYSl7aWYodGIoTHMoYSkpKXt2YXIgYjtiPUkoYSk7Yj1rdC5hP2t0LmEoYik6a3QuY2FsbChudWxsLGIpO3JldHVybiByKGIpP2IuYT9iLmEoYSk6Yi5jYWxsKG51bGwsYSk6ZnQoYSl9cmV0dXJuIG51bGx9KTtKcyhsdCxtaixmdW5jdGlvbihhKXt2YXIgYj1hLmE/YS5hKGp0KTphLmNhbGwobnVsbCxqdCk7cmV0dXJuIHIoYik/UnAuZihOKFtiXSwwKSk6cihScSk/UnAuZihOKFtBZShhKV0sMCkpOlNwLmE/U3AuYShhKTpTcC5jYWxsKG51bGwsYSl9KTtcblRoKGx0LGZrLE1zKTtUaChsdCxNbSxOcyk7VGgobHQsaW0sUHMpO1RoKGx0LGVqLFNzKTtKcyhsdCxxbCxmdW5jdGlvbihhKXt2YXIgYj1bdChcIiNcXHgzY1wiKSx0KFJzKHdiKGEpLm5hbWUpKSx0KFwiQFwiKSx0KGNhKGEpKSx0KFwiOiBcIildLmpvaW4oXCJcIik7aWYocihhcigpKSl4KG4sXCIjXCIpO2Vsc2V7dmFyIGM9VXEsZD1WcTtVcSs9MTtWcT0wO3RyeXtKcShiLFwiXFx4M2VcIik7Y3IocWksLShNKGIpLTIpKTticigkbCk7dmFyIGUsZj1udWxsIT1hP2EuRyYxfHxtPT09YS5JZD8hMDphLkc/ITE6dmIodGMsYSk6dmIodGMsYSk7ZT1mPyF1YyhhKTpmO1hxKGU/c2o6TC5hP0wuYShhKTpMLmNhbGwobnVsbCxhKSk7S3EoKX1maW5hbGx5e1ZxPWQsVXE9Y319cmV0dXJuIG51bGx9KTtUaChsdCxudWxsLFNwKTtUaChsdCxnaixPcyk7T3E9VXM7dmFyIHJ0PW51bGw7ZnVuY3Rpb24gc3QoKXt2YXIgYT1ydDtyKGEpfHwoYT1uZXcgcShudWxsLDUsW1VpLG5ldyBxKG51bGwsNCxbT20sMCxYbCwwLExrLDAsUGwsMF0sbnVsbCkscmksJGMsSmksJGMsdmosQWgsUmssRWxdLG51bGwpLGE9Qy5iKHVqLEVsKT9RLmYoYSxSayxFbCxOKFt2aixacV0sMCkpOmEpO3JldHVybiBhfWZ1bmN0aW9uIHR0KGEpe2Zvcih2YXIgYj1bXSxjPWFyZ3VtZW50cy5sZW5ndGgsZD0wOzspaWYoZDxjKWIucHVzaChhcmd1bWVudHNbZF0pLGQrPTE7ZWxzZSBicmVhaztjPWFyZ3VtZW50c1swXTtkPWFyZ3VtZW50c1sxXTtiPTI8Yi5sZW5ndGg/bmV3IEYoYi5zbGljZSgyKSwwLG51bGwpOm51bGw7cmV0dXJuIHJ0PVNlKEFmLHN0KCksYyxkLGIpfVxuZnVuY3Rpb24gdXQoYSl7dmFyIGI9bnVsbCE9YSYmKGEubyY2NHx8bT09PWEuSGEpP1BlKGdmLGEpOmEsYz1CLmIoYixFaiksZD1CLmIoYixYayksZT1CLmIoYix2ayk7cmV0dXJuW3QodmUobWYuYihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gb2ouYShLZChhKSl9fShhLGIsYyxkLGUpLHJpLmEoc3QoKSkpKSksdChcIiAoXCIpLHQoYyksdChcIjpcIiksdChkKSx0KHIoZSk/W3QoXCI6XCIpLHQoZSldLmpvaW4oXCJcIik6bnVsbCksdChcIilcIildLmpvaW4oXCJcIil9ZnVuY3Rpb24gdnQoYSl7cmV0dXJuIHIoVWkuYShzdCgpKSk/dHQobmV3IFYobnVsbCwyLDUsVyxbVWksYV0sbnVsbCksYmYoKSk6bnVsbH1cbmlmKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd3QpdmFyIHd0PWZ1bmN0aW9uKCl7dmFyIGE9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxiPVk/WShYKTplZi5jYWxsKG51bGwsWCksYz1ZP1koWCk6ZWYuY2FsbChudWxsLFgpLGQ9WT9ZKFgpOmVmLmNhbGwobnVsbCxYKSxlPUIuYyhYLHNtLEpoKCkpO3JldHVybiBuZXcgVmgoV2MuYihcImNsanMudGVzdFwiLFwicmVwb3J0XCIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVihudWxsLDIsNSxXLFtSay5hKHN0KCkpLFVqLmEoYSldLG51bGwpfX0oYSxiLGMsZCxlKSxnaixlLGEsYixjLGQpfSgpO3d0LmZhKDAsZ2osZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pO3d0LmZhKDAsbmV3IFYobnVsbCwyLDUsVyxbRWwsWGxdLG51bGwpLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0KFhsKX0pO1xuZnVuY3Rpb24geHQoYSl7dmFyIGI9ZnVuY3Rpb24oKXt2YXIgYT12ai5hKHN0KCkpO3JldHVybiByKGEpP2E6QWh9KCk7Q2goTihbXCJleHBlY3RlZDpcIixmdW5jdGlvbigpe3ZhciBjPXVsLmEoYSk7cmV0dXJuIGIuYT9iLmEoYyk6Yi5jYWxsKG51bGwsYyl9KCldLDApKTtyZXR1cm4gQ2goTihbXCIgIGFjdHVhbDpcIixmdW5jdGlvbigpe3ZhciBjPXRtLmEoYSk7cmV0dXJuIGIuYT9iLmEoYyk6Yi5jYWxsKG51bGwsYyl9KCldLDApKX13dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLExrXSxudWxsKSxmdW5jdGlvbihhKXt2dChMayk7Q2goTihbXCJcXG5GQUlMIGluXCIsdXQoYSldLDApKTtFKEppLmEoc3QoKSkpJiZDaChOKFtQZSh0LHZmKFwiIFwiLHZlKEppLmEoc3QoKSkpKSldLDApKTt2YXIgYj1ZbS5hKGEpO3IoYikmJkNoKE4oW2JdLDApKTtyZXR1cm4geHQoYSl9KTtcbnd0LmZhKDAsbmV3IFYobnVsbCwyLDUsVyxbRWwsUGxdLG51bGwpLGZ1bmN0aW9uKGEpe3Z0KFBsKTtDaChOKFtcIlxcbkVSUk9SIGluXCIsdXQoYSldLDApKTtFKEppLmEoc3QoKSkpJiZDaChOKFtQZSh0LHZmKFwiIFwiLHZlKEppLmEoc3QoKSkpKSldLDApKTt2YXIgYj1ZbS5hKGEpO3IoYikmJkNoKE4oW2JdLDApKTtyZXR1cm4geHQoYSl9KTt3dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLEJrXSxudWxsKSxmdW5jdGlvbihhKXtDaChOKFtcIlxcblJhblwiLE9tLmEoYSksXCJ0ZXN0cyBjb250YWluaW5nXCIsWGwuYShhKStMay5hKGEpK1BsLmEoYSksXCJhc3NlcnRpb25zLlwiXSwwKSk7cmV0dXJuIENoKE4oW0xrLmEoYSksXCJmYWlsdXJlcyxcIixQbC5hKGEpLFwiZXJyb3JzLlwiXSwwKSl9KTt3dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLEpsXSxudWxsKSxmdW5jdGlvbihhKXtyZXR1cm4gQ2goTihbXCJcXG5UZXN0aW5nXCIsQWUobGouYShhKSldLDApKX0pO1xud3QuZmEoMCxuZXcgVihudWxsLDIsNSxXLFtFbCxKbV0sbnVsbCksZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pO3d0LmZhKDAsbmV3IFYobnVsbCwyLDUsVyxbRWwsRGldLG51bGwpLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KTt3dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLEdrXSxudWxsKSxmdW5jdGlvbigpe3JldHVybiBudWxsfSk7d3QuZmEoMCxuZXcgVihudWxsLDIsNSxXLFtFbCxhbF0sbnVsbCksZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pO3d0LmZhKDAsbmV3IFYobnVsbCwyLDUsVyxbRWwsbGxdLG51bGwpLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KTt3dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLGVuXSxudWxsKSxmdW5jdGlvbigpe3JldHVybiBudWxsfSk7dmFyIHl0PVk/WSgwKTplZi5jYWxsKG51bGwsMCksenQ7enQ9ZnVuY3Rpb24gQXQoYixjKXtpZihudWxsIT1iJiZudWxsIT1iLkspcmV0dXJuIGIuSygwLGMpO3ZhciBkPUF0W2JhKG51bGw9PWI/bnVsbDpiKV07aWYobnVsbCE9ZClyZXR1cm4gZC5iP2QuYihiLGMpOmQuY2FsbChudWxsLGIsYyk7ZD1BdC5fO2lmKG51bGwhPWQpcmV0dXJuIGQuYj9kLmIoYixjKTpkLmNhbGwobnVsbCxiLGMpO3Rocm93IHhiKFwiSU11bHRpRm4uLWdldC1tZXRob2RcIixiKTt9KHd0LG5ldyBWKG51bGwsMiw1LFcsW0VsLERpXSxudWxsKSk7d3QuZmEoMCxuZXcgVihudWxsLDIsNSxXLFtFbCxRaV0sbnVsbCksZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPShuZXcgRGF0ZSkudmFsdWVPZigpO2pmLmI/amYuYih5dCxjKTpqZi5jYWxsKG51bGwseXQsYyk7cmV0dXJuIHIoYSk/YS5hP2EuYShiKTphLmNhbGwobnVsbCxiKTpudWxsfX0oenQpKTtcbmZ1bmN0aW9uIEJ0KGEpe3JldHVybiBhLmg/YS5oKCk6YS5jYWxsKG51bGwpfXd0LmZhKDAsbmV3IFYobnVsbCwyLDUsVyxbRWwsQmldLG51bGwpLGZ1bmN0aW9uKGEpe3JldHVybiByKCExKT8oITEpLmE/KCExKS5hKGEpOighMSkuY2FsbChudWxsLGEpOm51bGx9KTt3dC5mYSgwLG5ldyBWKG51bGwsMiw1LFcsW0VsLExsXSxudWxsKSxmdW5jdGlvbihhKXtyZXR1cm4gcighMSk/QnQoZnVuY3Rpb24oKXt2YXIgYjtiPW51bGwhPWEmJihhLm8mNjR8fG09PT1hLkhhKT9QZShnZixhKTphO3ZhciBjPUIuYihiLHJsKSxjPW9qLmEoS2QoYykpO2I9cihjKT9jOnV0KGIpO3JldHVybiBDaChOKFtcIlNocmlua2luZ1wiLGIsXCJzdGFydGluZyB3aXRoIHBhcmFtZXRlcnNcIixBaC5mKE4oWyRoLmEoYSldLDApKV0sMCkpfSk6bnVsbH0pO1xuZnVuY3Rpb24gQ3QoYSxiLGMpe2E9bmV3IHEobnVsbCwzLFtVaixCaSxybCxhLEJpLG5ldyBWKG51bGwsMiw1LFcsW2IsY10sbnVsbCldLG51bGwpO3d0LmE/d3QuYShhKTp3dC5jYWxsKG51bGwsYSl9O2Z1bmN0aW9uIER0KGEsYixjKXt2YXIgZD1udWxsIT1jJiYoYy5vJjY0fHxtPT09Yy5IYSk/UGUoZ2YsYyk6YztjPUIuYihkLHFrKTt2YXIgZT1CLmMoZCxXaiwyMDApO3IoYyl8fChjPShuZXcgRGF0ZSkudmFsdWVPZigpKTtkPW5ldyBWKG51bGwsMiw1LFcsW2MsUm4oYyldLG51bGwpO2M9TyhkLDAsbnVsbCk7Zm9yKHZhciBmPU8oZCwxLG51bGwpLGQ9MCxlPXFmKGxoKDAsZSkpLGc9Zjs7KXtpZihkPT09YSlyZXR1cm4gQ3QoYixhLGEpLG5ldyBxKG51bGwsMyxbZmwsITAsRmosYSxxayxjXSxudWxsKTt2YXIgZj1FKGUpLGU9SShmKSxmPUooZiksZz1GbihnKSxrPU8oZywwLG51bGwpLGc9TyhnLDEsbnVsbCksaz0kbihiLGssZSksbD1rLnJvb3QscD1mbC5hKGwpO1poLmEobCk7aWYocihyKHApP3RiKHAgaW5zdGFuY2VvZiBFcnJvcik6cCkpQ3QoYixkLGEpLGU9ZixmPWcsZCs9MSxnPWY7ZWxzZSByZXR1cm4gRXQuTD9FdC5MKGIsayxkLGUsYyk6RXQuY2FsbChudWxsLGIsayxkLFxuZSxjKX19ZnVuY3Rpb24gRXQoYSxiLGMsZCxlKXt2YXIgZj1iLnJvb3QsZz1mbC5hKGYpLGY9WmguYShmKTthPW5ldyBxKG51bGwsMyxbVWosTGwscmwsYSwkaCxaZihmKV0sbnVsbCk7d3QuYT93dC5hKGEpOnd0LmNhbGwobnVsbCxhKTthPVpmKGYpO2E6Zm9yKHZhciBrPWIuY2hpbGRyZW4sbD1iLnJvb3QsZj1iPTA7Oyl7aWYoTGQoaykpe2I9bmV3IHEobnVsbCw0LFtFZixiLFFsLGYsZmwsZmwuYShsKSxubCxaaC5hKGwpXSxudWxsKTticmVhayBhfXZhciBwPUUoayksaz1JKHApLHU9SihwKSxwPWssaz11LHU9ZmwuYShwLnJvb3QpO3Iocih1KT90Yih1IGluc3RhbmNlb2YgRXJyb3IpOnUpP2IrPTE6KGw9RShwLmNoaWxkcmVuKSk/KHA9cC5yb290LGIrPTEsZis9MSxrPWwsbD1wKToobD1wLnJvb3QsYis9MSl9cmV0dXJuIG5ldyBxKG51bGwsNixbZmwsZyxxayxlLHpsLGQsRmosYysxLExrLGEsQ2YsYl0sbnVsbCl9O2Z1bmN0aW9uIERmKGEsYil7cmV0dXJuIGFlKGZ1bmN0aW9uKGIsZCl7dmFyIGM9TyhkLDAsbnVsbCksZj1PKGQsMSxudWxsKTtyZXR1cm4gWWQoYSxjKT9RLmMoYixmLEIuYihhLGMpKTpifSxRZShJZCxhLHJnKGIpKSxiKX07ZnVuY3Rpb24gRnQoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjO3RyeXtjPVBlKGEsYil9Y2F0Y2goZCl7Yz1kfXJldHVybiBuZXcgcShudWxsLDMsW2ZsLGMsbmssYSxaaCxiXSxudWxsKX19O2Z1bmN0aW9uIEd0KGEpe3ZhciBiPXt9O2E9RShhKTtmb3IodmFyIGM9bnVsbCxkPTAsZT0wOzspaWYoZTxkKXt2YXIgZj1jLmNhKG51bGwsZSksZz1PKGYsMCxudWxsKSxmPU8oZiwxLG51bGwpO2JbZ109ZjtlKz0xfWVsc2UgaWYoYT1FKGEpKVNkKGEpPyhkPUNjKGEpLGE9RGMoYSksYz1kLGQ9TShkKSk6KGQ9SShhKSxjPU8oZCwwLG51bGwpLGQ9TyhkLDEsbnVsbCksYltjXT1kLGE9SihhKSxjPW51bGwsZD0wKSxlPTA7ZWxzZSBicmVhaztyZXR1cm4gYn1mdW5jdGlvbiBIdChhKXt2YXIgYj1PKGEsMCxudWxsKSxjPU8oYSwxLG51bGwpO2E9TyhhLDIsbnVsbCk7cmV0dXJuIGIuc3Vic3RyaW5nKGMsYSl9ZnVuY3Rpb24gSXQoYSl7cmV0dXJuIGE/XCJudW1iZXJcIj09PXR5cGVvZiBhLmxlbmd0aD8wPGEubGVuZ3RoOmEuY29uc3RydWN0b3I9PT1PYmplY3Q/MDxPYmplY3Qua2V5cyhhKS5sZW5ndGg6ITA6ITF9XG5mdW5jdGlvbiBKdChhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj1hLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdm9pZCAwPT09Yj8hMDpifX12YXIgS3Q9e307ZnVuY3Rpb24gTHQoYSl7cihLdFthXSl8fChLdFthXT0hMCxhPVt0KFwiREVQUkVDQVRFRDogXCIpLHQoYSksdChcIlxcblwiKSx0KEIuYihXbihFcnJvcigpLnN0YWNrLC9cXG4vLDApLDMpKV0uam9pbihcIlwiKSxjb25zb2xlLndhcm4oYSkpfXZhciBNdD11byhuZXcgVihudWxsLDYsNSxXLFtuZXcgVihudWxsLDIsNSxXLFsxLGhvKHZvaWQgMCldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzIsaG8obnVsbCldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzQsQ29dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzYsanBdLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzIwLEVvXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFsyMCxycF0sbnVsbCldLG51bGwpKTtcbmZ1bmN0aW9uIE50KGEpe3ZhciBiPXlvKCk7YT1SbyhiLGEsWCk7cmV0dXJuIGdvKEd0LGEpfWZ1bmN0aW9uIE90KGEpe3JldHVybiB0byhuZXcgVihudWxsLDIsNSxXLFtnbyhKZSxKbyhhKSksTnQoYSldLG51bGwpKX1mdW5jdGlvbiBQdChhKXtyZXR1cm4gbmV3IHEobnVsbCwzLFt5bSxhP2Euc2l6ZTphLEhtLGE/YS5taW5TaXplOmEsWWwsYT9hLm1heFNpemU6YV0sbnVsbCl9XG5mdW5jdGlvbiBRdChhKXtmb3IodmFyIGI9VGQoYSksYz1bXSxkPUUoYiksZT1udWxsLGY9MCxnPTA7OylpZihnPGYpe3ZhciBrPWUuY2EobnVsbCxnKTtjLnB1c2goZnVuY3Rpb24oKXt2YXIgYj1hW2tdO3JldHVybiBSdC5hP1J0LmEoYik6UnQuY2FsbChudWxsLGIpfSgpKTtnKz0xfWVsc2UgaWYoZD1FKGQpKXtlPWQ7aWYoU2QoZSkpZD1DYyhlKSxnPURjKGUpLGU9ZCxmPU0oZCksZD1nO2Vsc2V7dmFyIGw9SShlKTtjLnB1c2goZnVuY3Rpb24oKXt2YXIgYj1hW2xdO3JldHVybiBSdC5hP1J0LmEoYik6UnQuY2FsbChudWxsLGIpfSgpKTtkPUooZSk7ZT1udWxsO2Y9MH1nPTB9ZWxzZSBicmVhaztyZXR1cm4gZ28oJGUoYiksUGUoRG8sYykpfVxudmFyIFN0PXVvKG5ldyBWKG51bGwsNSw1LFcsW25ldyBWKG51bGwsMiw1LFcsWzEsaG8obnVsbCldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzIsQ29dLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzMsaXAobmV3IHEobnVsbCwyLFtBaywhMSxJbSwhMV0sbnVsbCkpXSxudWxsKSxuZXcgVihudWxsLDIsNSxXLFsxMCxFb10sbnVsbCksbmV3IFYobnVsbCwyLDUsVyxbMTAscnBdLG51bGwpXSxudWxsKSksVHQ9S3AoT3QsU3QpO2Z1bmN0aW9uIFJ0KGEpe2lmKFluKGEpKXRocm93IEVycm9yKFwiQXNzZXJ0IGZhaWxlZDogKG5vdCAoZ2VuL2dlbmVyYXRvcj8geCkpXCIpO3JldHVybiBhJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGEuX19jbGpfZ2VuP2EuX19jbGpfZ2VuOmhvKGEpfWZ1bmN0aW9uIFV0KGEpe3JldHVybiBmdW5jdGlvbihiKXtiPW5ldyBWdChiKTtiPWEuYT9hLmEoYik6YS5jYWxsKG51bGwsYik7cmV0dXJuIFJ0KGIpfX1cbmV4cG9ydHMuR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2lmKCFZbihhKSl0aHJvdyBFcnJvcihcIkdlbmVyYXRvciBjYW5ub3QgYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkuXCIpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcIl9fY2xqX2dlblwiLHt2YWx1ZTphfSl9O3ZhciBWdD1leHBvcnRzLkdlbmVyYXRvcjtleHBvcnRzLmNoZWNrPWZ1bmN0aW9uKGEsYil7dmFyIGM9cihiKT9iOnt9LGQ9RHQoZnVuY3Rpb24oKXt2YXIgYT1jLm51bVRlc3RzO2lmKHIoYSkpcmV0dXJuIGE7YT1jLnRpbWVzO3JldHVybiByKGEpP2E6MTAwfSgpLGEsTihbV2osZnVuY3Rpb24oKXt2YXIgYT1jLm1heFNpemU7cmV0dXJuIHIoYSk/YToyMDB9KCkscWssYy5zZWVkXSwwKSksZD1EZihkLG5ldyBxKG51bGwsMixbemwsaGksRmosUGpdLG51bGwpKSxkPVlkKGQsQ2YpP0JmKGQpOmQ7cmV0dXJuIEhoKGQpfTtcbmV4cG9ydHMucHJvcGVydHk9ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoLTEsYj1KdChhcmd1bWVudHNbYV0pO2lmKDE9PT1hJiZzYihhcmd1bWVudHNbMF0pKXJldHVybiBhPW1mLmIoUnQsYXJndW1lbnRzWzBdKSxnbyhGdChiKSxQZShEbyxhKSk7Zm9yKHZhciBjPVtdLGQ9MDs7KWlmKGQ8YSljLnB1c2goUnQoYXJndW1lbnRzW2RdKSksZCs9MTtlbHNlIGJyZWFrO3JldHVybiBnbyhGdChiKSxQZShEbyxjKSl9O2V4cG9ydHMuc2FtcGxlPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz1SdChhKTt2YXIgZD1yKGIpP2I6MTA7aWYoIXIoWW4oYykpKXRocm93IEVycm9yKFt0KFwiQXNzZXJ0IGZhaWxlZDogXCIpLHQoXCJGaXJzdCBhcmcgdG8gc2FtcGxlIG11c3QgYmUgYSBnZW5lcmF0b3JcIiksdChcIlxcblwiKSx0KFwiKGdlbmVyYXRvcj8gZ2VuZXJhdG9yKVwiKV0uam9pbihcIlwiKSk7Yz1uZihkLGtvKGMpKTtyZXR1cm4gSmUoYyl9O1xuZXhwb3J0cy5zYW1wbGVPbmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1SdChhKSxkPXIoYik/YjozMCxlPVRuLmg/VG4uaCgpOlRuLmNhbGwobnVsbCk7cmV0dXJuICRuKGMsZSxkKS5yb290fTtleHBvcnRzLmdlbj17fTtleHBvcnRzLmdlbi5hbnk9bmV3IFZ0KEtwKE90LE10KSk7ZXhwb3J0cy5nZW4ucHJpbWl0aXZlPW5ldyBWdChNdCk7ZXhwb3J0cy5nZW5bXCJib29sZWFuXCJdPW5ldyBWdChDbyk7ZXhwb3J0cy5nZW5bXCJudWxsXCJdPW5ldyBWdChobyhudWxsKSk7ZXhwb3J0cy5nZW4udW5kZWZpbmVkPW5ldyBWdChobyh2b2lkIDApKTtleHBvcnRzLmdlbi5OYU49bmV3IFZ0KGhvKE5hTikpO2V4cG9ydHMuZ2VuLm51bWJlcj1uZXcgVnQoanApO2V4cG9ydHMuZ2VuLnBvc051bWJlcj1uZXcgVnQoaXAobmV3IHEobnVsbCwyLFtsaSwwLEltLCExXSxudWxsKSkpO2V4cG9ydHMuZ2VuLm5lZ051bWJlcj1uZXcgVnQoaXAobmV3IHEobnVsbCwyLFtobCwwLEltLCExXSxudWxsKSkpO1xuZXhwb3J0cy5nZW4ubnVtYmVyV2l0aGluPWZ1bmN0aW9uKGEsYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiZ2VuLm51bWJlcldpdGhpbjogbXVzdCBwcm92aWRlIGEgbnVtYmVyIGZvciBhIG1pbmltdW0gc2l6ZVwiKTtpZihcIm51bWJlclwiIT09dHlwZW9mIGIpdGhyb3cgRXJyb3IoXCJnZW4ubnVtYmVyV2l0aGluOiBtdXN0IHByb3ZpZGUgYSBudW1iZXIgZm9yIGEgbWF4aW11bSBzaXplXCIpO3JldHVybiBuZXcgVnQoaXAobmV3IHEobnVsbCwzLFtsaSxhLGhsLGIsSW0sITFdLG51bGwpKSl9O2V4cG9ydHMuZ2VuW1wiaW50XCJdPW5ldyBWdChFbyk7ZXhwb3J0cy5nZW4ucG9zSW50PW5ldyBWdChGbyk7ZXhwb3J0cy5nZW4ubmVnSW50PW5ldyBWdChHbyk7ZXhwb3J0cy5nZW4uc1Bvc0ludD1uZXcgVnQoSG8pO2V4cG9ydHMuZ2VuLnNOZWdJbnQ9bmV3IFZ0KElvKTtcbmV4cG9ydHMuZ2VuLmludFdpdGhpbj1mdW5jdGlvbihhLGIpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcImdlbi5pbnRXaXRoaW46IG11c3QgcHJvdmlkZSBhIG51bWJlciBmb3IgYSBtaW5pbXVtIHNpemVcIik7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKFwiZ2VuLmludFdpdGhpbjogbXVzdCBwcm92aWRlIGEgbnVtYmVyIGZvciBhIG1heGltdW0gc2l6ZVwiKTtyZXR1cm4gbmV3IFZ0KHNvKGEsYikpfTtleHBvcnRzLmdlbi5zdHJpbmc9bmV3IFZ0KHJwKTtleHBvcnRzLmdlbi5hc2NpaVN0cmluZz1uZXcgVnQoc3ApO2V4cG9ydHMuZ2VuLmFscGhhTnVtU3RyaW5nPW5ldyBWdCh6byk7XG5leHBvcnRzLmdlbi5zdWJzdHJpbmc9ZnVuY3Rpb24oYSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiZ2VuLnN1YnN0cmluZzogbXVzdCBwcm92aWRlIGEgc3RyaW5nIHRvIG1ha2Ugc3VidHJpbmdzIGZyb21cIik7cmV0dXJuIG5ldyBWdChnbyhIdCxEby5mKE4oW2hvKGEpLHNvKDAsYS5sZW5ndGgpLHNvKDAsYS5sZW5ndGgpXSwwKSkpKX07ZXhwb3J0cy5nZW5bXCJjaGFyXCJdPW5ldyBWdChrcCk7ZXhwb3J0cy5nZW4uYXNjaWlDaGFyPW5ldyBWdChscCk7ZXhwb3J0cy5nZW4uYWxwaGFOdW1DaGFyPW5ldyBWdChtcCk7XG5leHBvcnRzLmdlbi5hcnJheT1mdW5jdGlvbihhLGIsYyl7aWYoISgxPD1hcmd1bWVudHMubGVuZ3RoKSl0aHJvdyBFcnJvcihcImdlbi5hcnJheTogbXVzdCBwcm92aWRlIGEgdmFsdWUgZ2VuZXJhdG9yIG9yIGFycmF5IG9mIGdlbmVyYXRvcnNcIik7XCJudW1iZXJcIj09PXR5cGVvZiBjP0x0KFwiVXNlIGdlbi5hcnJheSh2YWxzLCB7IG1pblNpemU6IG51bSwgbWF4U2l6ZTogbnVtIH0pXCIpOlwibnVtYmVyXCI9PT10eXBlb2YgYiYmTHQoXCJVc2UgZ2VuLmFycmF5KHZhbHMsIHsgc2l6ZTogbnVtIH0pXCIpO3JldHVybiBuZXcgVnQoZ28oSmUsQXJyYXkuaXNBcnJheShhKT9QZShEbyxtZi5iKFJ0LGEpKTp1YihiKT9cInVuZGVmaW5lZFwiIT09dHlwZW9mIGIuc2l6ZT9LbyhSdChhKSxiLnNpemUpOlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYi5tYXhTaXplP3BvKGZ1bmN0aW9uKGMpe3ZhciBkO2Q9Yi5taW5TaXplO2Q9cihkKT9kOjA7Yz1NYXRoLm1pbihiLm1heFNpemUsYytkKTtyZXR1cm4gTG8oUnQoYSksXG5kLGMpfSk6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBiLm1pblNpemU/cG8oZnVuY3Rpb24oYyl7dmFyIGQ9Yi5taW5TaXplO2MrPWQ7cmV0dXJuIExvKFJ0KGEpLGQsYyl9KTpKbyhSdChhKSk6XCJudW1iZXJcIj09PXR5cGVvZiBjP0xvKFJ0KGEpLGIsYyk6XCJudW1iZXJcIj09PXR5cGVvZiBiP0tvKFJ0KGEpLGIpOkpvKFJ0KGEpKSkpfTtcbmV4cG9ydHMuZ2VuLnVuaXF1ZUFycmF5PWZ1bmN0aW9uKGEsYixjKXtpZighKDE8PWFyZ3VtZW50cy5sZW5ndGgpKXRocm93IEVycm9yKFwiZ2VuLnVuaXF1ZUFycmF5OiBtdXN0IHByb3ZpZGUgYSB2YWx1ZSBnZW5lcmF0b3JcIik7dmFyIGQ9VnQsZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYil7ZT1SdChhKTt2YXIgZj1QdChjKTtpZighcihZbihlKSkpdGhyb3cgRXJyb3IoW3QoXCJBc3NlcnQgZmFpbGVkOiBcIiksdChcIkZpcnN0IGFyZyB0byBsaXN0LWRpc3RpbmN0LWJ5IG11c3QgYmUgYSBnZW5lcmF0b3IhXCIpLHQoXCJcXG5cIiksdChcIihnZW5lcmF0b3I/IGdlbilcIildLmpvaW4oXCJcIikpO2U9UW8oJGMsYiwhMCwhMCxlLGYpfWVsc2V7ZT1SdChhKTtmPVB0KGIpO2lmKCFyKFluKGUpKSl0aHJvdyBFcnJvcihbdChcIkFzc2VydCBmYWlsZWQ6IFwiKSx0KFwiRmlyc3QgYXJnIHRvIGxpc3QtZGlzdGluY3QgbXVzdCBiZSBhIGdlbmVyYXRvciFcIiksdChcIlxcblwiKSx0KFwiKGdlbmVyYXRvcj8gZ2VuKVwiKV0uam9pbihcIlwiKSk7XG5lPVFvKCRjLGRlLCEwLCEwLGUsZil9cmV0dXJuIG5ldyBkKGdvKEplLGUpKX07ZXhwb3J0cy5nZW4ub2JqZWN0PWZ1bmN0aW9uKGEsYixjKXtpZighKDE8PWFyZ3VtZW50cy5sZW5ndGgpKXRocm93IEVycm9yKFwiZ2VuLm9iamVjdDogbXVzdCBwcm92aWRlIGEgdmFsdWUgZ2VuZXJhdG9yIG9yIG9iamVjdCBvZiBnZW5lcmF0b3JzXCIpO3JldHVybiBuZXcgVnQoZ28oR3QsdWIoYSk/UXQoYSk6bnVsbD09Ynx8dWIoYik/Um8oeW8oKSxSdChhKSxQdChiKSk6Um8oUnQoYSksUnQoYiksUHQoYykpKSl9O2V4cG9ydHMuZ2VuLmFycmF5T3JPYmplY3Q9ZnVuY3Rpb24oYSl7aWYoISgxPD1hcmd1bWVudHMubGVuZ3RoKSl0aHJvdyBFcnJvcihcImdlbi5hcnJheU9yT2JqZWN0OiBtdXN0IHByb3ZpZGUgYSB2YWx1ZSBnZW5lcmF0b3JcIik7cmV0dXJuIG5ldyBWdChPdChSdChhKSkpfTtcbmV4cG9ydHMuZ2VuLm5lc3RlZD1mdW5jdGlvbihhLGIpe2lmKDIhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKFwiZ2VuLm5lc3RlZDogbXVzdCBwcm92aWRlIGEgdmFsdWUgZ2VuZXJhdG9yXCIpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiZ2VuLm5lc3RlZDogbXVzdCBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhIGNvbGxlY3Rpb24gZ2VuZXJhdG9yXCIpO3ZhciBjPW5ldyBWdChLcChVdChhKSxSdChiKSkpO3JldHVybiBhLmE/YS5hKGMpOmEuY2FsbChudWxsLGMpfTtleHBvcnRzLmdlbi5KU09OPW5ldyBWdChOdChUdCkpO2V4cG9ydHMuZ2VuLkpTT05WYWx1ZT1uZXcgVnQoVHQpO2V4cG9ydHMuZ2VuLkpTT05QcmltaXRpdmU9bmV3IFZ0KFN0KTtcbmV4cG9ydHMuZ2VuLm9uZU9mPWZ1bmN0aW9uKGEpe2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSl0aHJvdyBFcnJvcihcImdlbi5vbmVPZjogbXVzdCBwcm92aWRlIGdlbmVyYXRvcnMgdG8gY2hvb3NlIGZyb21cIik7cmV0dXJuIG5ldyBWdCh0byhtZi5iKFJ0LGEpKSl9O2V4cG9ydHMuZ2VuLm9uZU9mV2VpZ2h0ZWQ9ZnVuY3Rpb24oYSl7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXRocm93IEVycm9yKFwiZ2VuLm9uZU9mOiBtdXN0IHByb3ZpZGUgZ2VuZXJhdG9ycyB0byBjaG9vc2UgZnJvbVwiKTtyZXR1cm4gbmV3IFZ0KHVvKG1mLmIoZnVuY3Rpb24oYSl7dmFyIGI9TyhhLDAsbnVsbCk7YT1PKGEsMSxudWxsKTtyZXR1cm5bYixSdChhKV19LGEpKSl9O2V4cG9ydHMuZ2VuW1wicmV0dXJuXCJdPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVnQoaG8oYSkpfTtcbmV4cG9ydHMuZ2VuLnNpemVkPWZ1bmN0aW9uKGEpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiZ2VuLnNpemVkOiBtdXN0IHByb3ZpZGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgZ2VuZXJhdG9yXCIpO3JldHVybiBuZXcgVnQocG8oWmUuYihSdCxhKSkpfTtWdC5wcm90b3R5cGUubnVsbGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZ0KHVvKG5ldyBWKG51bGwsMiw1LFcsW25ldyBWKG51bGwsMiw1LFcsWzEsaG8obnVsbCldLG51bGwpLG5ldyBWKG51bGwsMiw1LFcsWzUsUnQodGhpcyldLG51bGwpXSxudWxsKSkpfTtWdC5wcm90b3R5cGUubm90RW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZ0KHdvKEl0LFJ0KHRoaXMpKSl9O1xuVnQucHJvdG90eXBlLnN1Y2hUaGF0PWZ1bmN0aW9uKGEpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiLnN1Y2hUaGF0KCk6IG11c3QgcHJvdmlkZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBib29sZWFuXCIpO3JldHVybiBuZXcgVnQod28oYSxSdCh0aGlzKSkpfTtWdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIi50aGVuKCk6IG11c3QgcHJvdmlkZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvciBhIGdlbmVyYXRvclwiKTtyZXR1cm4gbmV3IFZ0KGpvKFJ0KHRoaXMpLFplLmIoUnQsYSkpKX07VnQucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKGEpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiLnRoZW4oKTogbXVzdCBwcm92aWRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzaXplXCIpO3JldHVybiBuZXcgVnQocm8oYSxSdCh0aGlzKSkpfTtcblZ0LnByb3RvdHlwZS5uZXZlclNocmluaz1mdW5jdGlvbigpe3JldHVybiBuZXcgVnQoQW8oUnQodGhpcykpKX07VnQucHJvdG90eXBlLmFsd2F5c1Nocmluaz1mdW5jdGlvbigpe3JldHVybiBuZXcgVnQoQm8oUnQodGhpcykpKX07VnQucHJvdG90eXBlW3piXT1mdW5jdGlvbigpe3JldHVybiBiZChrbyhSdCh0aGlzKSkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5nZW4sXCJzdHJpY3RQb3NJbnRcIix7Z2V0OmZ1bmN0aW9uKCl7THQoXCJVc2UgZ2VuLnNQb3NJbnQgaW5zdGVhZCBvZiBnZW4uc3RyaWN0UG9zSW50XCIpO3JldHVybiBuZXcgVnQoSG8pfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmdlbixcInN0cmljdE5lZ0ludFwiLHtnZXQ6ZnVuY3Rpb24oKXtMdChcIlVzZSBnZW4uc05lZ0ludCBpbnN0ZWFkIG9mIGdlbi5zdHJpY3ROZWdJbnRcIik7cmV0dXJuIG5ldyBWdChJbyl9fSk7dmFyIFd0PWV4cG9ydHMuZ2VuO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFd0LFwic3VjaFRoYXRcIix7Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7THQoXCJVc2UgZ2VuZXJhdG9yLndoZXJlKCkgaW5zdGVhZCBvZiBnZW4uc3VjaFRoYXQoZ2VuZXJhdG9yKVwiKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFZ0KHdvKGEsUnQoYikpKX19KGEsYil9fShXdCxcInN1Y2hUaGF0XCIpfSk7dmFyIFh0PWV4cG9ydHMuZ2VuO09iamVjdC5kZWZpbmVQcm9wZXJ0eShYdCxcIm5vdEVtcHR5XCIse2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe0x0KFwiVXNlIGdlbmVyYXRvci5ub3RFbXB0eSgpIGluc3RlYWQgb2YgZ2VuLm5vdEVtcHR5KGdlbmVyYXRvcilcIik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBWdCh4byhJdCxSdChhKSxyKGIpP2I6MTApKX19KGEsYil9fShYdCxcIm5vdEVtcHR5XCIpfSk7dmFyIFl0PWV4cG9ydHMuZ2VuO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFl0LFwibWFwXCIse2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe0x0KFwiVXNlIGdlbmVyYXRvci50aGVuKCkgaW5zdGVhZCBvZiBnZW4ubWFwKGdlbmVyYXRvcilcIik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBWdChnbyhhLFJ0KGIpKSl9fShhLGIpfX0oWXQsXCJtYXBcIil9KTt2YXIgWnQ9ZXhwb3J0cy5nZW47XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoWnQsXCJiaW5kXCIse2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe0x0KFwiVXNlIGdlbmVyYXRvci50aGVuKCkgaW5zdGVhZCBvZiBnZW4uYmluZChnZW5lcmF0b3IpXCIpO3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBuZXcgVnQoam8oUnQoYyksZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIFJ0KGQuYT9kLmEoYSk6ZC5jYWxsKG51bGwsYSkpfX0oYSxiKSkpfX0oYSxiKX19KFp0LFwiYmluZFwiKX0pO3ZhciAkdD1leHBvcnRzLmdlbjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkdCxcInJlc2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtMdChcIlVzZSBnZW5lcmF0b3Iuc2NhbGUoKCkgXFx4M2RcXHgzZSBzaXplKSBpbnN0ZWFkIG9mIGdlbi5yZXNpemUoZ2VuZXJhdG9yLCBzaXplKVwiKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFZ0KHFvKGEsUnQoYikpKX19KGEsYil9fSgkdCxcInJlc2l6ZVwiKX0pO3ZhciBhdT1leHBvcnRzLmdlbjtPYmplY3QuZGVmaW5lUHJvcGVydHkoYXUsXCJub1Nocmlua1wiLHtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtMdChcIlVzZSBnZW5lcmF0b3IubmV2ZXJTaHJpbmsoKSBpbnN0ZWFkIG9mIGdlbi5ub1NocmluayhnZW5lcmF0b3IpXCIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFZ0KEFvKFJ0KGEpKSl9fShhLGIpfX0oYXUsXCJub1Nocmlua1wiKX0pO3ZhciBidT1leHBvcnRzLmdlbjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShidSxcInNocmlua1wiLHtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtMdChcIlVzZSBnZW5lcmF0b3IuYWx3YXlzU2hyaW5rKCkgaW5zdGVhZCBvZiBnZW4uc2hyaW5rKGdlbmVyYXRvcilcIik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVnQoQm8oUnQoYSkpKX19KGEsYil9fShidSxcInNocmlua1wiKX0pO3ZhciBjdT1leHBvcnRzLmdlbjtPYmplY3QuZGVmaW5lUHJvcGVydHkoY3UsXCJyZXR1cm5PbmVPZlwiLHtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtMdChcIlVzZSBnZW4ub25lT2YoKSBpbnN0ZWFkIG9mIGdlbi5yZXR1cm5PbmVPZigpXCIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFZ0KHZvKGEpKX19KGEsYil9fShjdSxcInJldHVybk9uZU9mXCIpfSk7dmFyIGR1PWV4cG9ydHMuZ2VuO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGR1LFwicmV0dXJuT25lT2ZXZWlnaHRlZFwiLHtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtMdChcIlVzZSBnZW4ub25lT2ZXZWlnaHRlZCgpIGluc3RlYWQgb2YgZ2VuLnJldHVybk9uZU9mV2VpZ2h0ZWQoKVwiKTtyZXR1cm4gZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBWdCh1byhtZi5iKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBiPU8oYSwwLG51bGwpO2E9TyhhLDEsbnVsbCk7cmV0dXJuW2IsaG8oYSldfX0oYSxiKSxjKSkpfX0oYSxiKX19KGR1LFwicmV0dXJuT25lT2ZXZWlnaHRlZFwiKX0pOyJdfQ==
// Welcome! require() some modules from npm (like you were using browserify)
// and then hit Run Code to run your code on the right side.
// Modules get downloaded from browserify-cdn and bundled in your browser.
const { check, gen, property } = require('testcheck');
const result = check(
property(
gen.int,
x => x - x === 0
)
)
console.log(result)
;}, 0)
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"testcheck": "1.0.0-rc.2"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment