21757 lines
4.1 MiB
21757 lines
4.1 MiB
var snarkjs = (function (exports) {
|
|
'use strict';
|
|
|
|
/* global BigInt */
|
|
const hexLen = [ 0, 1, 2, 2, 3, 3, 3, 3, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4];
|
|
|
|
function fromString(s, radix) {
|
|
if ((!radix)||(radix==10)) {
|
|
return BigInt(s);
|
|
} else if (radix==16) {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInt(s);
|
|
} else {
|
|
return BigInt("0x"+s);
|
|
}
|
|
}
|
|
}
|
|
|
|
const e = fromString;
|
|
|
|
function fromArray(a, radix) {
|
|
let acc =0n;
|
|
radix = BigInt(radix);
|
|
for (let i=0; i<a.length; i++) {
|
|
acc = acc*radix + BigInt(a[i]);
|
|
}
|
|
return acc;
|
|
}
|
|
|
|
function bitLength(a) {
|
|
const aS =a.toString(16);
|
|
return (aS.length-1)*4 +hexLen[parseInt(aS[0], 16)];
|
|
}
|
|
|
|
function isNegative(a) {
|
|
return BigInt(a) < 0n;
|
|
}
|
|
|
|
function isZero(a) {
|
|
return !a;
|
|
}
|
|
|
|
function shiftLeft(a, n) {
|
|
return BigInt(a) << BigInt(n);
|
|
}
|
|
|
|
function shiftRight(a, n) {
|
|
return BigInt(a) >> BigInt(n);
|
|
}
|
|
|
|
const shl = shiftLeft;
|
|
const shr = shiftRight;
|
|
|
|
function isOdd(a) {
|
|
return (BigInt(a) & 1n) == 1n;
|
|
}
|
|
|
|
|
|
function naf(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
const z = 2 - Number(E % 4n);
|
|
res.push( z );
|
|
E = E - BigInt(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function bits(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber(s) {
|
|
if (s>BigInt(Number.MAX_SAFE_INTEGER )) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return Number(s);
|
|
}
|
|
|
|
function toArray(s, radix) {
|
|
const res = [];
|
|
let rem = BigInt(s);
|
|
radix = BigInt(radix);
|
|
while (rem) {
|
|
res.unshift( Number(rem % radix));
|
|
rem = rem / radix;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function add(a, b) {
|
|
return BigInt(a) + BigInt(b);
|
|
}
|
|
|
|
function sub(a, b) {
|
|
return BigInt(a) - BigInt(b);
|
|
}
|
|
|
|
function neg(a) {
|
|
return -BigInt(a);
|
|
}
|
|
|
|
function mul(a, b) {
|
|
return BigInt(a) * BigInt(b);
|
|
}
|
|
|
|
function square(a) {
|
|
return BigInt(a) * BigInt(a);
|
|
}
|
|
|
|
function pow(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function exp(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function abs(a) {
|
|
return BigInt(a) >= 0 ? BigInt(a) : -BigInt(a);
|
|
}
|
|
|
|
function div(a, b) {
|
|
return BigInt(a) / BigInt(b);
|
|
}
|
|
|
|
function mod(a, b) {
|
|
return BigInt(a) % BigInt(b);
|
|
}
|
|
|
|
function eq(a, b) {
|
|
return BigInt(a) == BigInt(b);
|
|
}
|
|
|
|
function neq(a, b) {
|
|
return BigInt(a) != BigInt(b);
|
|
}
|
|
|
|
function lt(a, b) {
|
|
return BigInt(a) < BigInt(b);
|
|
}
|
|
|
|
function gt(a, b) {
|
|
return BigInt(a) > BigInt(b);
|
|
}
|
|
|
|
function leq(a, b) {
|
|
return BigInt(a) <= BigInt(b);
|
|
}
|
|
|
|
function geq(a, b) {
|
|
return BigInt(a) >= BigInt(b);
|
|
}
|
|
|
|
function band(a, b) {
|
|
return BigInt(a) & BigInt(b);
|
|
}
|
|
|
|
function bor(a, b) {
|
|
return BigInt(a) | BigInt(b);
|
|
}
|
|
|
|
function bxor(a, b) {
|
|
return BigInt(a) ^ BigInt(b);
|
|
}
|
|
|
|
function land(a, b) {
|
|
return BigInt(a) && BigInt(b);
|
|
}
|
|
|
|
function lor(a, b) {
|
|
return BigInt(a) || BigInt(b);
|
|
}
|
|
|
|
function lnot(a) {
|
|
return !BigInt(a);
|
|
}
|
|
|
|
var Scalar_native = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString,
|
|
e: e,
|
|
fromArray: fromArray,
|
|
bitLength: bitLength,
|
|
isNegative: isNegative,
|
|
isZero: isZero,
|
|
shiftLeft: shiftLeft,
|
|
shiftRight: shiftRight,
|
|
shl: shl,
|
|
shr: shr,
|
|
isOdd: isOdd,
|
|
naf: naf,
|
|
bits: bits,
|
|
toNumber: toNumber,
|
|
toArray: toArray,
|
|
add: add,
|
|
sub: sub,
|
|
neg: neg,
|
|
mul: mul,
|
|
square: square,
|
|
pow: pow,
|
|
exp: exp,
|
|
abs: abs,
|
|
div: div,
|
|
mod: mod,
|
|
eq: eq,
|
|
neq: neq,
|
|
lt: lt,
|
|
gt: gt,
|
|
leq: leq,
|
|
geq: geq,
|
|
band: band,
|
|
bor: bor,
|
|
bxor: bxor,
|
|
land: land,
|
|
lor: lor,
|
|
lnot: lnot
|
|
});
|
|
|
|
function commonjsRequire () {
|
|
throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');
|
|
}
|
|
|
|
function createCommonjsModule(fn, module) {
|
|
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
|
}
|
|
|
|
var BigInteger = createCommonjsModule(function (module) {
|
|
var bigInt = (function (undefined$1) {
|
|
|
|
var BASE = 1e7,
|
|
LOG_BASE = 7,
|
|
MAX_INT = 9007199254740992,
|
|
MAX_INT_ARR = smallToArray(MAX_INT),
|
|
DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
|
|
var supportsNativeBigInt = typeof BigInt === "function";
|
|
|
|
function Integer(v, radix, alphabet, caseSensitive) {
|
|
if (typeof v === "undefined") return Integer[0];
|
|
if (typeof radix !== "undefined") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);
|
|
return parseValue(v);
|
|
}
|
|
|
|
function BigInteger(value, sign) {
|
|
this.value = value;
|
|
this.sign = sign;
|
|
this.isSmall = false;
|
|
}
|
|
BigInteger.prototype = Object.create(Integer.prototype);
|
|
|
|
function SmallInteger(value) {
|
|
this.value = value;
|
|
this.sign = value < 0;
|
|
this.isSmall = true;
|
|
}
|
|
SmallInteger.prototype = Object.create(Integer.prototype);
|
|
|
|
function NativeBigInt(value) {
|
|
this.value = value;
|
|
}
|
|
NativeBigInt.prototype = Object.create(Integer.prototype);
|
|
|
|
function isPrecise(n) {
|
|
return -MAX_INT < n && n < MAX_INT;
|
|
}
|
|
|
|
function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes
|
|
if (n < 1e7)
|
|
return [n];
|
|
if (n < 1e14)
|
|
return [n % 1e7, Math.floor(n / 1e7)];
|
|
return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];
|
|
}
|
|
|
|
function arrayToSmall(arr) { // If BASE changes this function may need to change
|
|
trim(arr);
|
|
var length = arr.length;
|
|
if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {
|
|
switch (length) {
|
|
case 0: return 0;
|
|
case 1: return arr[0];
|
|
case 2: return arr[0] + arr[1] * BASE;
|
|
default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;
|
|
}
|
|
}
|
|
return arr;
|
|
}
|
|
|
|
function trim(v) {
|
|
var i = v.length;
|
|
while (v[--i] === 0);
|
|
v.length = i + 1;
|
|
}
|
|
|
|
function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger
|
|
var x = new Array(length);
|
|
var i = -1;
|
|
while (++i < length) {
|
|
x[i] = 0;
|
|
}
|
|
return x;
|
|
}
|
|
|
|
function truncate(n) {
|
|
if (n > 0) return Math.floor(n);
|
|
return Math.ceil(n);
|
|
}
|
|
|
|
function add(a, b) { // assumes a and b are arrays with a.length >= b.length
|
|
var l_a = a.length,
|
|
l_b = b.length,
|
|
r = new Array(l_a),
|
|
carry = 0,
|
|
base = BASE,
|
|
sum, i;
|
|
for (i = 0; i < l_b; i++) {
|
|
sum = a[i] + b[i] + carry;
|
|
carry = sum >= base ? 1 : 0;
|
|
r[i] = sum - carry * base;
|
|
}
|
|
while (i < l_a) {
|
|
sum = a[i] + carry;
|
|
carry = sum === base ? 1 : 0;
|
|
r[i++] = sum - carry * base;
|
|
}
|
|
if (carry > 0) r.push(carry);
|
|
return r;
|
|
}
|
|
|
|
function addAny(a, b) {
|
|
if (a.length >= b.length) return add(a, b);
|
|
return add(b, a);
|
|
}
|
|
|
|
function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT
|
|
var l = a.length,
|
|
r = new Array(l),
|
|
base = BASE,
|
|
sum, i;
|
|
for (i = 0; i < l; i++) {
|
|
sum = a[i] - base + carry;
|
|
carry = Math.floor(sum / base);
|
|
r[i] = sum - carry * base;
|
|
carry += 1;
|
|
}
|
|
while (carry > 0) {
|
|
r[i++] = carry % base;
|
|
carry = Math.floor(carry / base);
|
|
}
|
|
return r;
|
|
}
|
|
|
|
BigInteger.prototype.add = function (v) {
|
|
var n = parseValue(v);
|
|
if (this.sign !== n.sign) {
|
|
return this.subtract(n.negate());
|
|
}
|
|
var a = this.value, b = n.value;
|
|
if (n.isSmall) {
|
|
return new BigInteger(addSmall(a, Math.abs(b)), this.sign);
|
|
}
|
|
return new BigInteger(addAny(a, b), this.sign);
|
|
};
|
|
BigInteger.prototype.plus = BigInteger.prototype.add;
|
|
|
|
SmallInteger.prototype.add = function (v) {
|
|
var n = parseValue(v);
|
|
var a = this.value;
|
|
if (a < 0 !== n.sign) {
|
|
return this.subtract(n.negate());
|
|
}
|
|
var b = n.value;
|
|
if (n.isSmall) {
|
|
if (isPrecise(a + b)) return new SmallInteger(a + b);
|
|
b = smallToArray(Math.abs(b));
|
|
}
|
|
return new BigInteger(addSmall(b, Math.abs(a)), a < 0);
|
|
};
|
|
SmallInteger.prototype.plus = SmallInteger.prototype.add;
|
|
|
|
NativeBigInt.prototype.add = function (v) {
|
|
return new NativeBigInt(this.value + parseValue(v).value);
|
|
};
|
|
NativeBigInt.prototype.plus = NativeBigInt.prototype.add;
|
|
|
|
function subtract(a, b) { // assumes a and b are arrays with a >= b
|
|
var a_l = a.length,
|
|
b_l = b.length,
|
|
r = new Array(a_l),
|
|
borrow = 0,
|
|
base = BASE,
|
|
i, difference;
|
|
for (i = 0; i < b_l; i++) {
|
|
difference = a[i] - borrow - b[i];
|
|
if (difference < 0) {
|
|
difference += base;
|
|
borrow = 1;
|
|
} else borrow = 0;
|
|
r[i] = difference;
|
|
}
|
|
for (i = b_l; i < a_l; i++) {
|
|
difference = a[i] - borrow;
|
|
if (difference < 0) difference += base;
|
|
else {
|
|
r[i++] = difference;
|
|
break;
|
|
}
|
|
r[i] = difference;
|
|
}
|
|
for (; i < a_l; i++) {
|
|
r[i] = a[i];
|
|
}
|
|
trim(r);
|
|
return r;
|
|
}
|
|
|
|
function subtractAny(a, b, sign) {
|
|
var value;
|
|
if (compareAbs(a, b) >= 0) {
|
|
value = subtract(a, b);
|
|
} else {
|
|
value = subtract(b, a);
|
|
sign = !sign;
|
|
}
|
|
value = arrayToSmall(value);
|
|
if (typeof value === "number") {
|
|
if (sign) value = -value;
|
|
return new SmallInteger(value);
|
|
}
|
|
return new BigInteger(value, sign);
|
|
}
|
|
|
|
function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT
|
|
var l = a.length,
|
|
r = new Array(l),
|
|
carry = -b,
|
|
base = BASE,
|
|
i, difference;
|
|
for (i = 0; i < l; i++) {
|
|
difference = a[i] + carry;
|
|
carry = Math.floor(difference / base);
|
|
difference %= base;
|
|
r[i] = difference < 0 ? difference + base : difference;
|
|
}
|
|
r = arrayToSmall(r);
|
|
if (typeof r === "number") {
|
|
if (sign) r = -r;
|
|
return new SmallInteger(r);
|
|
} return new BigInteger(r, sign);
|
|
}
|
|
|
|
BigInteger.prototype.subtract = function (v) {
|
|
var n = parseValue(v);
|
|
if (this.sign !== n.sign) {
|
|
return this.add(n.negate());
|
|
}
|
|
var a = this.value, b = n.value;
|
|
if (n.isSmall)
|
|
return subtractSmall(a, Math.abs(b), this.sign);
|
|
return subtractAny(a, b, this.sign);
|
|
};
|
|
BigInteger.prototype.minus = BigInteger.prototype.subtract;
|
|
|
|
SmallInteger.prototype.subtract = function (v) {
|
|
var n = parseValue(v);
|
|
var a = this.value;
|
|
if (a < 0 !== n.sign) {
|
|
return this.add(n.negate());
|
|
}
|
|
var b = n.value;
|
|
if (n.isSmall) {
|
|
return new SmallInteger(a - b);
|
|
}
|
|
return subtractSmall(b, Math.abs(a), a >= 0);
|
|
};
|
|
SmallInteger.prototype.minus = SmallInteger.prototype.subtract;
|
|
|
|
NativeBigInt.prototype.subtract = function (v) {
|
|
return new NativeBigInt(this.value - parseValue(v).value);
|
|
};
|
|
NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;
|
|
|
|
BigInteger.prototype.negate = function () {
|
|
return new BigInteger(this.value, !this.sign);
|
|
};
|
|
SmallInteger.prototype.negate = function () {
|
|
var sign = this.sign;
|
|
var small = new SmallInteger(-this.value);
|
|
small.sign = !sign;
|
|
return small;
|
|
};
|
|
NativeBigInt.prototype.negate = function () {
|
|
return new NativeBigInt(-this.value);
|
|
};
|
|
|
|
BigInteger.prototype.abs = function () {
|
|
return new BigInteger(this.value, false);
|
|
};
|
|
SmallInteger.prototype.abs = function () {
|
|
return new SmallInteger(Math.abs(this.value));
|
|
};
|
|
NativeBigInt.prototype.abs = function () {
|
|
return new NativeBigInt(this.value >= 0 ? this.value : -this.value);
|
|
};
|
|
|
|
|
|
function multiplyLong(a, b) {
|
|
var a_l = a.length,
|
|
b_l = b.length,
|
|
l = a_l + b_l,
|
|
r = createArray(l),
|
|
base = BASE,
|
|
product, carry, i, a_i, b_j;
|
|
for (i = 0; i < a_l; ++i) {
|
|
a_i = a[i];
|
|
for (var j = 0; j < b_l; ++j) {
|
|
b_j = b[j];
|
|
product = a_i * b_j + r[i + j];
|
|
carry = Math.floor(product / base);
|
|
r[i + j] = product - carry * base;
|
|
r[i + j + 1] += carry;
|
|
}
|
|
}
|
|
trim(r);
|
|
return r;
|
|
}
|
|
|
|
function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE
|
|
var l = a.length,
|
|
r = new Array(l),
|
|
base = BASE,
|
|
carry = 0,
|
|
product, i;
|
|
for (i = 0; i < l; i++) {
|
|
product = a[i] * b + carry;
|
|
carry = Math.floor(product / base);
|
|
r[i] = product - carry * base;
|
|
}
|
|
while (carry > 0) {
|
|
r[i++] = carry % base;
|
|
carry = Math.floor(carry / base);
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function shiftLeft(x, n) {
|
|
var r = [];
|
|
while (n-- > 0) r.push(0);
|
|
return r.concat(x);
|
|
}
|
|
|
|
function multiplyKaratsuba(x, y) {
|
|
var n = Math.max(x.length, y.length);
|
|
|
|
if (n <= 30) return multiplyLong(x, y);
|
|
n = Math.ceil(n / 2);
|
|
|
|
var b = x.slice(n),
|
|
a = x.slice(0, n),
|
|
d = y.slice(n),
|
|
c = y.slice(0, n);
|
|
|
|
var ac = multiplyKaratsuba(a, c),
|
|
bd = multiplyKaratsuba(b, d),
|
|
abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));
|
|
|
|
var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));
|
|
trim(product);
|
|
return product;
|
|
}
|
|
|
|
// The following function is derived from a surface fit of a graph plotting the performance difference
|
|
// between long multiplication and karatsuba multiplication versus the lengths of the two arrays.
|
|
function useKaratsuba(l1, l2) {
|
|
return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;
|
|
}
|
|
|
|
BigInteger.prototype.multiply = function (v) {
|
|
var n = parseValue(v),
|
|
a = this.value, b = n.value,
|
|
sign = this.sign !== n.sign,
|
|
abs;
|
|
if (n.isSmall) {
|
|
if (b === 0) return Integer[0];
|
|
if (b === 1) return this;
|
|
if (b === -1) return this.negate();
|
|
abs = Math.abs(b);
|
|
if (abs < BASE) {
|
|
return new BigInteger(multiplySmall(a, abs), sign);
|
|
}
|
|
b = smallToArray(abs);
|
|
}
|
|
if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes
|
|
return new BigInteger(multiplyKaratsuba(a, b), sign);
|
|
return new BigInteger(multiplyLong(a, b), sign);
|
|
};
|
|
|
|
BigInteger.prototype.times = BigInteger.prototype.multiply;
|
|
|
|
function multiplySmallAndArray(a, b, sign) { // a >= 0
|
|
if (a < BASE) {
|
|
return new BigInteger(multiplySmall(b, a), sign);
|
|
}
|
|
return new BigInteger(multiplyLong(b, smallToArray(a)), sign);
|
|
}
|
|
SmallInteger.prototype._multiplyBySmall = function (a) {
|
|
if (isPrecise(a.value * this.value)) {
|
|
return new SmallInteger(a.value * this.value);
|
|
}
|
|
return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);
|
|
};
|
|
BigInteger.prototype._multiplyBySmall = function (a) {
|
|
if (a.value === 0) return Integer[0];
|
|
if (a.value === 1) return this;
|
|
if (a.value === -1) return this.negate();
|
|
return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);
|
|
};
|
|
SmallInteger.prototype.multiply = function (v) {
|
|
return parseValue(v)._multiplyBySmall(this);
|
|
};
|
|
SmallInteger.prototype.times = SmallInteger.prototype.multiply;
|
|
|
|
NativeBigInt.prototype.multiply = function (v) {
|
|
return new NativeBigInt(this.value * parseValue(v).value);
|
|
};
|
|
NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;
|
|
|
|
function square(a) {
|
|
//console.assert(2 * BASE * BASE < MAX_INT);
|
|
var l = a.length,
|
|
r = createArray(l + l),
|
|
base = BASE,
|
|
product, carry, i, a_i, a_j;
|
|
for (i = 0; i < l; i++) {
|
|
a_i = a[i];
|
|
carry = 0 - a_i * a_i;
|
|
for (var j = i; j < l; j++) {
|
|
a_j = a[j];
|
|
product = 2 * (a_i * a_j) + r[i + j] + carry;
|
|
carry = Math.floor(product / base);
|
|
r[i + j] = product - carry * base;
|
|
}
|
|
r[i + l] = carry;
|
|
}
|
|
trim(r);
|
|
return r;
|
|
}
|
|
|
|
BigInteger.prototype.square = function () {
|
|
return new BigInteger(square(this.value), false);
|
|
};
|
|
|
|
SmallInteger.prototype.square = function () {
|
|
var value = this.value * this.value;
|
|
if (isPrecise(value)) return new SmallInteger(value);
|
|
return new BigInteger(square(smallToArray(Math.abs(this.value))), false);
|
|
};
|
|
|
|
NativeBigInt.prototype.square = function (v) {
|
|
return new NativeBigInt(this.value * this.value);
|
|
};
|
|
|
|
function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.
|
|
var a_l = a.length,
|
|
b_l = b.length,
|
|
base = BASE,
|
|
result = createArray(b.length),
|
|
divisorMostSignificantDigit = b[b_l - 1],
|
|
// normalization
|
|
lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),
|
|
remainder = multiplySmall(a, lambda),
|
|
divisor = multiplySmall(b, lambda),
|
|
quotientDigit, shift, carry, borrow, i, l, q;
|
|
if (remainder.length <= a_l) remainder.push(0);
|
|
divisor.push(0);
|
|
divisorMostSignificantDigit = divisor[b_l - 1];
|
|
for (shift = a_l - b_l; shift >= 0; shift--) {
|
|
quotientDigit = base - 1;
|
|
if (remainder[shift + b_l] !== divisorMostSignificantDigit) {
|
|
quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);
|
|
}
|
|
// quotientDigit <= base - 1
|
|
carry = 0;
|
|
borrow = 0;
|
|
l = divisor.length;
|
|
for (i = 0; i < l; i++) {
|
|
carry += quotientDigit * divisor[i];
|
|
q = Math.floor(carry / base);
|
|
borrow += remainder[shift + i] - (carry - q * base);
|
|
carry = q;
|
|
if (borrow < 0) {
|
|
remainder[shift + i] = borrow + base;
|
|
borrow = -1;
|
|
} else {
|
|
remainder[shift + i] = borrow;
|
|
borrow = 0;
|
|
}
|
|
}
|
|
while (borrow !== 0) {
|
|
quotientDigit -= 1;
|
|
carry = 0;
|
|
for (i = 0; i < l; i++) {
|
|
carry += remainder[shift + i] - base + divisor[i];
|
|
if (carry < 0) {
|
|
remainder[shift + i] = carry + base;
|
|
carry = 0;
|
|
} else {
|
|
remainder[shift + i] = carry;
|
|
carry = 1;
|
|
}
|
|
}
|
|
borrow += carry;
|
|
}
|
|
result[shift] = quotientDigit;
|
|
}
|
|
// denormalization
|
|
remainder = divModSmall(remainder, lambda)[0];
|
|
return [arrayToSmall(result), arrayToSmall(remainder)];
|
|
}
|
|
|
|
function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/
|
|
// Performs faster than divMod1 on larger input sizes.
|
|
var a_l = a.length,
|
|
b_l = b.length,
|
|
result = [],
|
|
part = [],
|
|
base = BASE,
|
|
guess, xlen, highx, highy, check;
|
|
while (a_l) {
|
|
part.unshift(a[--a_l]);
|
|
trim(part);
|
|
if (compareAbs(part, b) < 0) {
|
|
result.push(0);
|
|
continue;
|
|
}
|
|
xlen = part.length;
|
|
highx = part[xlen - 1] * base + part[xlen - 2];
|
|
highy = b[b_l - 1] * base + b[b_l - 2];
|
|
if (xlen > b_l) {
|
|
highx = (highx + 1) * base;
|
|
}
|
|
guess = Math.ceil(highx / highy);
|
|
do {
|
|
check = multiplySmall(b, guess);
|
|
if (compareAbs(check, part) <= 0) break;
|
|
guess--;
|
|
} while (guess);
|
|
result.push(guess);
|
|
part = subtract(part, check);
|
|
}
|
|
result.reverse();
|
|
return [arrayToSmall(result), arrayToSmall(part)];
|
|
}
|
|
|
|
function divModSmall(value, lambda) {
|
|
var length = value.length,
|
|
quotient = createArray(length),
|
|
base = BASE,
|
|
i, q, remainder, divisor;
|
|
remainder = 0;
|
|
for (i = length - 1; i >= 0; --i) {
|
|
divisor = remainder * base + value[i];
|
|
q = truncate(divisor / lambda);
|
|
remainder = divisor - q * lambda;
|
|
quotient[i] = q | 0;
|
|
}
|
|
return [quotient, remainder | 0];
|
|
}
|
|
|
|
function divModAny(self, v) {
|
|
var value, n = parseValue(v);
|
|
if (supportsNativeBigInt) {
|
|
return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];
|
|
}
|
|
var a = self.value, b = n.value;
|
|
var quotient;
|
|
if (b === 0) throw new Error("Cannot divide by zero");
|
|
if (self.isSmall) {
|
|
if (n.isSmall) {
|
|
return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];
|
|
}
|
|
return [Integer[0], self];
|
|
}
|
|
if (n.isSmall) {
|
|
if (b === 1) return [self, Integer[0]];
|
|
if (b == -1) return [self.negate(), Integer[0]];
|
|
var abs = Math.abs(b);
|
|
if (abs < BASE) {
|
|
value = divModSmall(a, abs);
|
|
quotient = arrayToSmall(value[0]);
|
|
var remainder = value[1];
|
|
if (self.sign) remainder = -remainder;
|
|
if (typeof quotient === "number") {
|
|
if (self.sign !== n.sign) quotient = -quotient;
|
|
return [new SmallInteger(quotient), new SmallInteger(remainder)];
|
|
}
|
|
return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];
|
|
}
|
|
b = smallToArray(abs);
|
|
}
|
|
var comparison = compareAbs(a, b);
|
|
if (comparison === -1) return [Integer[0], self];
|
|
if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];
|
|
|
|
// divMod1 is faster on smaller input sizes
|
|
if (a.length + b.length <= 200)
|
|
value = divMod1(a, b);
|
|
else value = divMod2(a, b);
|
|
|
|
quotient = value[0];
|
|
var qSign = self.sign !== n.sign,
|
|
mod = value[1],
|
|
mSign = self.sign;
|
|
if (typeof quotient === "number") {
|
|
if (qSign) quotient = -quotient;
|
|
quotient = new SmallInteger(quotient);
|
|
} else quotient = new BigInteger(quotient, qSign);
|
|
if (typeof mod === "number") {
|
|
if (mSign) mod = -mod;
|
|
mod = new SmallInteger(mod);
|
|
} else mod = new BigInteger(mod, mSign);
|
|
return [quotient, mod];
|
|
}
|
|
|
|
BigInteger.prototype.divmod = function (v) {
|
|
var result = divModAny(this, v);
|
|
return {
|
|
quotient: result[0],
|
|
remainder: result[1]
|
|
};
|
|
};
|
|
NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;
|
|
|
|
|
|
BigInteger.prototype.divide = function (v) {
|
|
return divModAny(this, v)[0];
|
|
};
|
|
NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {
|
|
return new NativeBigInt(this.value / parseValue(v).value);
|
|
};
|
|
SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;
|
|
|
|
BigInteger.prototype.mod = function (v) {
|
|
return divModAny(this, v)[1];
|
|
};
|
|
NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {
|
|
return new NativeBigInt(this.value % parseValue(v).value);
|
|
};
|
|
SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;
|
|
|
|
BigInteger.prototype.pow = function (v) {
|
|
var n = parseValue(v),
|
|
a = this.value,
|
|
b = n.value,
|
|
value, x, y;
|
|
if (b === 0) return Integer[1];
|
|
if (a === 0) return Integer[0];
|
|
if (a === 1) return Integer[1];
|
|
if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];
|
|
if (n.sign) {
|
|
return Integer[0];
|
|
}
|
|
if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large.");
|
|
if (this.isSmall) {
|
|
if (isPrecise(value = Math.pow(a, b)))
|
|
return new SmallInteger(truncate(value));
|
|
}
|
|
x = this;
|
|
y = Integer[1];
|
|
while (true) {
|
|
if (b & 1 === 1) {
|
|
y = y.times(x);
|
|
--b;
|
|
}
|
|
if (b === 0) break;
|
|
b /= 2;
|
|
x = x.square();
|
|
}
|
|
return y;
|
|
};
|
|
SmallInteger.prototype.pow = BigInteger.prototype.pow;
|
|
|
|
NativeBigInt.prototype.pow = function (v) {
|
|
var n = parseValue(v);
|
|
var a = this.value, b = n.value;
|
|
var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);
|
|
if (b === _0) return Integer[1];
|
|
if (a === _0) return Integer[0];
|
|
if (a === _1) return Integer[1];
|
|
if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];
|
|
if (n.isNegative()) return new NativeBigInt(_0);
|
|
var x = this;
|
|
var y = Integer[1];
|
|
while (true) {
|
|
if ((b & _1) === _1) {
|
|
y = y.times(x);
|
|
--b;
|
|
}
|
|
if (b === _0) break;
|
|
b /= _2;
|
|
x = x.square();
|
|
}
|
|
return y;
|
|
};
|
|
|
|
BigInteger.prototype.modPow = function (exp, mod) {
|
|
exp = parseValue(exp);
|
|
mod = parseValue(mod);
|
|
if (mod.isZero()) throw new Error("Cannot take modPow with modulus 0");
|
|
var r = Integer[1],
|
|
base = this.mod(mod);
|
|
if (exp.isNegative()) {
|
|
exp = exp.multiply(Integer[-1]);
|
|
base = base.modInv(mod);
|
|
}
|
|
while (exp.isPositive()) {
|
|
if (base.isZero()) return Integer[0];
|
|
if (exp.isOdd()) r = r.multiply(base).mod(mod);
|
|
exp = exp.divide(2);
|
|
base = base.square().mod(mod);
|
|
}
|
|
return r;
|
|
};
|
|
NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;
|
|
|
|
function compareAbs(a, b) {
|
|
if (a.length !== b.length) {
|
|
return a.length > b.length ? 1 : -1;
|
|
}
|
|
for (var i = a.length - 1; i >= 0; i--) {
|
|
if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
BigInteger.prototype.compareAbs = function (v) {
|
|
var n = parseValue(v),
|
|
a = this.value,
|
|
b = n.value;
|
|
if (n.isSmall) return 1;
|
|
return compareAbs(a, b);
|
|
};
|
|
SmallInteger.prototype.compareAbs = function (v) {
|
|
var n = parseValue(v),
|
|
a = Math.abs(this.value),
|
|
b = n.value;
|
|
if (n.isSmall) {
|
|
b = Math.abs(b);
|
|
return a === b ? 0 : a > b ? 1 : -1;
|
|
}
|
|
return -1;
|
|
};
|
|
NativeBigInt.prototype.compareAbs = function (v) {
|
|
var a = this.value;
|
|
var b = parseValue(v).value;
|
|
a = a >= 0 ? a : -a;
|
|
b = b >= 0 ? b : -b;
|
|
return a === b ? 0 : a > b ? 1 : -1;
|
|
};
|
|
|
|
BigInteger.prototype.compare = function (v) {
|
|
// See discussion about comparison with Infinity:
|
|
// https://github.com/peterolson/BigInteger.js/issues/61
|
|
if (v === Infinity) {
|
|
return -1;
|
|
}
|
|
if (v === -Infinity) {
|
|
return 1;
|
|
}
|
|
|
|
var n = parseValue(v),
|
|
a = this.value,
|
|
b = n.value;
|
|
if (this.sign !== n.sign) {
|
|
return n.sign ? 1 : -1;
|
|
}
|
|
if (n.isSmall) {
|
|
return this.sign ? -1 : 1;
|
|
}
|
|
return compareAbs(a, b) * (this.sign ? -1 : 1);
|
|
};
|
|
BigInteger.prototype.compareTo = BigInteger.prototype.compare;
|
|
|
|
SmallInteger.prototype.compare = function (v) {
|
|
if (v === Infinity) {
|
|
return -1;
|
|
}
|
|
if (v === -Infinity) {
|
|
return 1;
|
|
}
|
|
|
|
var n = parseValue(v),
|
|
a = this.value,
|
|
b = n.value;
|
|
if (n.isSmall) {
|
|
return a == b ? 0 : a > b ? 1 : -1;
|
|
}
|
|
if (a < 0 !== n.sign) {
|
|
return a < 0 ? -1 : 1;
|
|
}
|
|
return a < 0 ? 1 : -1;
|
|
};
|
|
SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;
|
|
|
|
NativeBigInt.prototype.compare = function (v) {
|
|
if (v === Infinity) {
|
|
return -1;
|
|
}
|
|
if (v === -Infinity) {
|
|
return 1;
|
|
}
|
|
var a = this.value;
|
|
var b = parseValue(v).value;
|
|
return a === b ? 0 : a > b ? 1 : -1;
|
|
};
|
|
NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;
|
|
|
|
BigInteger.prototype.equals = function (v) {
|
|
return this.compare(v) === 0;
|
|
};
|
|
NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;
|
|
|
|
BigInteger.prototype.notEquals = function (v) {
|
|
return this.compare(v) !== 0;
|
|
};
|
|
NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;
|
|
|
|
BigInteger.prototype.greater = function (v) {
|
|
return this.compare(v) > 0;
|
|
};
|
|
NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;
|
|
|
|
BigInteger.prototype.lesser = function (v) {
|
|
return this.compare(v) < 0;
|
|
};
|
|
NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;
|
|
|
|
BigInteger.prototype.greaterOrEquals = function (v) {
|
|
return this.compare(v) >= 0;
|
|
};
|
|
NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;
|
|
|
|
BigInteger.prototype.lesserOrEquals = function (v) {
|
|
return this.compare(v) <= 0;
|
|
};
|
|
NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;
|
|
|
|
BigInteger.prototype.isEven = function () {
|
|
return (this.value[0] & 1) === 0;
|
|
};
|
|
SmallInteger.prototype.isEven = function () {
|
|
return (this.value & 1) === 0;
|
|
};
|
|
NativeBigInt.prototype.isEven = function () {
|
|
return (this.value & BigInt(1)) === BigInt(0);
|
|
};
|
|
|
|
BigInteger.prototype.isOdd = function () {
|
|
return (this.value[0] & 1) === 1;
|
|
};
|
|
SmallInteger.prototype.isOdd = function () {
|
|
return (this.value & 1) === 1;
|
|
};
|
|
NativeBigInt.prototype.isOdd = function () {
|
|
return (this.value & BigInt(1)) === BigInt(1);
|
|
};
|
|
|
|
BigInteger.prototype.isPositive = function () {
|
|
return !this.sign;
|
|
};
|
|
SmallInteger.prototype.isPositive = function () {
|
|
return this.value > 0;
|
|
};
|
|
NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;
|
|
|
|
BigInteger.prototype.isNegative = function () {
|
|
return this.sign;
|
|
};
|
|
SmallInteger.prototype.isNegative = function () {
|
|
return this.value < 0;
|
|
};
|
|
NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;
|
|
|
|
BigInteger.prototype.isUnit = function () {
|
|
return false;
|
|
};
|
|
SmallInteger.prototype.isUnit = function () {
|
|
return Math.abs(this.value) === 1;
|
|
};
|
|
NativeBigInt.prototype.isUnit = function () {
|
|
return this.abs().value === BigInt(1);
|
|
};
|
|
|
|
BigInteger.prototype.isZero = function () {
|
|
return false;
|
|
};
|
|
SmallInteger.prototype.isZero = function () {
|
|
return this.value === 0;
|
|
};
|
|
NativeBigInt.prototype.isZero = function () {
|
|
return this.value === BigInt(0);
|
|
};
|
|
|
|
BigInteger.prototype.isDivisibleBy = function (v) {
|
|
var n = parseValue(v);
|
|
if (n.isZero()) return false;
|
|
if (n.isUnit()) return true;
|
|
if (n.compareAbs(2) === 0) return this.isEven();
|
|
return this.mod(n).isZero();
|
|
};
|
|
NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;
|
|
|
|
function isBasicPrime(v) {
|
|
var n = v.abs();
|
|
if (n.isUnit()) return false;
|
|
if (n.equals(2) || n.equals(3) || n.equals(5)) return true;
|
|
if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;
|
|
if (n.lesser(49)) return true;
|
|
// we don't know if it's prime: let the other functions figure it out
|
|
}
|
|
|
|
function millerRabinTest(n, a) {
|
|
var nPrev = n.prev(),
|
|
b = nPrev,
|
|
r = 0,
|
|
d, i, x;
|
|
while (b.isEven()) b = b.divide(2), r++;
|
|
next: for (i = 0; i < a.length; i++) {
|
|
if (n.lesser(a[i])) continue;
|
|
x = bigInt(a[i]).modPow(b, n);
|
|
if (x.isUnit() || x.equals(nPrev)) continue;
|
|
for (d = r - 1; d != 0; d--) {
|
|
x = x.square().mod(n);
|
|
if (x.isUnit()) return false;
|
|
if (x.equals(nPrev)) continue next;
|
|
}
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Set "strict" to true to force GRH-supported lower bound of 2*log(N)^2
|
|
BigInteger.prototype.isPrime = function (strict) {
|
|
var isPrime = isBasicPrime(this);
|
|
if (isPrime !== undefined$1) return isPrime;
|
|
var n = this.abs();
|
|
var bits = n.bitLength();
|
|
if (bits <= 64)
|
|
return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);
|
|
var logN = Math.log(2) * bits.toJSNumber();
|
|
var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);
|
|
for (var a = [], i = 0; i < t; i++) {
|
|
a.push(bigInt(i + 2));
|
|
}
|
|
return millerRabinTest(n, a);
|
|
};
|
|
NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;
|
|
|
|
BigInteger.prototype.isProbablePrime = function (iterations, rng) {
|
|
var isPrime = isBasicPrime(this);
|
|
if (isPrime !== undefined$1) return isPrime;
|
|
var n = this.abs();
|
|
var t = iterations === undefined$1 ? 5 : iterations;
|
|
for (var a = [], i = 0; i < t; i++) {
|
|
a.push(bigInt.randBetween(2, n.minus(2), rng));
|
|
}
|
|
return millerRabinTest(n, a);
|
|
};
|
|
NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;
|
|
|
|
BigInteger.prototype.modInv = function (n) {
|
|
var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;
|
|
while (!newR.isZero()) {
|
|
q = r.divide(newR);
|
|
lastT = t;
|
|
lastR = r;
|
|
t = newT;
|
|
r = newR;
|
|
newT = lastT.subtract(q.multiply(newT));
|
|
newR = lastR.subtract(q.multiply(newR));
|
|
}
|
|
if (!r.isUnit()) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime");
|
|
if (t.compare(0) === -1) {
|
|
t = t.add(n);
|
|
}
|
|
if (this.isNegative()) {
|
|
return t.negate();
|
|
}
|
|
return t;
|
|
};
|
|
|
|
NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;
|
|
|
|
BigInteger.prototype.next = function () {
|
|
var value = this.value;
|
|
if (this.sign) {
|
|
return subtractSmall(value, 1, this.sign);
|
|
}
|
|
return new BigInteger(addSmall(value, 1), this.sign);
|
|
};
|
|
SmallInteger.prototype.next = function () {
|
|
var value = this.value;
|
|
if (value + 1 < MAX_INT) return new SmallInteger(value + 1);
|
|
return new BigInteger(MAX_INT_ARR, false);
|
|
};
|
|
NativeBigInt.prototype.next = function () {
|
|
return new NativeBigInt(this.value + BigInt(1));
|
|
};
|
|
|
|
BigInteger.prototype.prev = function () {
|
|
var value = this.value;
|
|
if (this.sign) {
|
|
return new BigInteger(addSmall(value, 1), true);
|
|
}
|
|
return subtractSmall(value, 1, this.sign);
|
|
};
|
|
SmallInteger.prototype.prev = function () {
|
|
var value = this.value;
|
|
if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);
|
|
return new BigInteger(MAX_INT_ARR, true);
|
|
};
|
|
NativeBigInt.prototype.prev = function () {
|
|
return new NativeBigInt(this.value - BigInt(1));
|
|
};
|
|
|
|
var powersOfTwo = [1];
|
|
while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);
|
|
var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];
|
|
|
|
function shift_isSmall(n) {
|
|
return Math.abs(n) <= BASE;
|
|
}
|
|
|
|
BigInteger.prototype.shiftLeft = function (v) {
|
|
var n = parseValue(v).toJSNumber();
|
|
if (!shift_isSmall(n)) {
|
|
throw new Error(String(n) + " is too large for shifting.");
|
|
}
|
|
if (n < 0) return this.shiftRight(-n);
|
|
var result = this;
|
|
if (result.isZero()) return result;
|
|
while (n >= powers2Length) {
|
|
result = result.multiply(highestPower2);
|
|
n -= powers2Length - 1;
|
|
}
|
|
return result.multiply(powersOfTwo[n]);
|
|
};
|
|
NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;
|
|
|
|
BigInteger.prototype.shiftRight = function (v) {
|
|
var remQuo;
|
|
var n = parseValue(v).toJSNumber();
|
|
if (!shift_isSmall(n)) {
|
|
throw new Error(String(n) + " is too large for shifting.");
|
|
}
|
|
if (n < 0) return this.shiftLeft(-n);
|
|
var result = this;
|
|
while (n >= powers2Length) {
|
|
if (result.isZero() || (result.isNegative() && result.isUnit())) return result;
|
|
remQuo = divModAny(result, highestPower2);
|
|
result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];
|
|
n -= powers2Length - 1;
|
|
}
|
|
remQuo = divModAny(result, powersOfTwo[n]);
|
|
return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];
|
|
};
|
|
NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;
|
|
|
|
function bitwise(x, y, fn) {
|
|
y = parseValue(y);
|
|
var xSign = x.isNegative(), ySign = y.isNegative();
|
|
var xRem = xSign ? x.not() : x,
|
|
yRem = ySign ? y.not() : y;
|
|
var xDigit = 0, yDigit = 0;
|
|
var xDivMod = null, yDivMod = null;
|
|
var result = [];
|
|
while (!xRem.isZero() || !yRem.isZero()) {
|
|
xDivMod = divModAny(xRem, highestPower2);
|
|
xDigit = xDivMod[1].toJSNumber();
|
|
if (xSign) {
|
|
xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers
|
|
}
|
|
|
|
yDivMod = divModAny(yRem, highestPower2);
|
|
yDigit = yDivMod[1].toJSNumber();
|
|
if (ySign) {
|
|
yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers
|
|
}
|
|
|
|
xRem = xDivMod[0];
|
|
yRem = yDivMod[0];
|
|
result.push(fn(xDigit, yDigit));
|
|
}
|
|
var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);
|
|
for (var i = result.length - 1; i >= 0; i -= 1) {
|
|
sum = sum.multiply(highestPower2).add(bigInt(result[i]));
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
BigInteger.prototype.not = function () {
|
|
return this.negate().prev();
|
|
};
|
|
NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;
|
|
|
|
BigInteger.prototype.and = function (n) {
|
|
return bitwise(this, n, function (a, b) { return a & b; });
|
|
};
|
|
NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;
|
|
|
|
BigInteger.prototype.or = function (n) {
|
|
return bitwise(this, n, function (a, b) { return a | b; });
|
|
};
|
|
NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;
|
|
|
|
BigInteger.prototype.xor = function (n) {
|
|
return bitwise(this, n, function (a, b) { return a ^ b; });
|
|
};
|
|
NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;
|
|
|
|
var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;
|
|
function roughLOB(n) { // get lowestOneBit (rough)
|
|
// SmallInteger: return Min(lowestOneBit(n), 1 << 30)
|
|
// BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]
|
|
var v = n.value,
|
|
x = typeof v === "number" ? v | LOBMASK_I :
|
|
typeof v === "bigint" ? v | BigInt(LOBMASK_I) :
|
|
v[0] + v[1] * BASE | LOBMASK_BI;
|
|
return x & -x;
|
|
}
|
|
|
|
function integerLogarithm(value, base) {
|
|
if (base.compareTo(value) <= 0) {
|
|
var tmp = integerLogarithm(value, base.square(base));
|
|
var p = tmp.p;
|
|
var e = tmp.e;
|
|
var t = p.multiply(base);
|
|
return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };
|
|
}
|
|
return { p: bigInt(1), e: 0 };
|
|
}
|
|
|
|
BigInteger.prototype.bitLength = function () {
|
|
var n = this;
|
|
if (n.compareTo(bigInt(0)) < 0) {
|
|
n = n.negate().subtract(bigInt(1));
|
|
}
|
|
if (n.compareTo(bigInt(0)) === 0) {
|
|
return bigInt(0);
|
|
}
|
|
return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));
|
|
};
|
|
NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;
|
|
|
|
function max(a, b) {
|
|
a = parseValue(a);
|
|
b = parseValue(b);
|
|
return a.greater(b) ? a : b;
|
|
}
|
|
function min(a, b) {
|
|
a = parseValue(a);
|
|
b = parseValue(b);
|
|
return a.lesser(b) ? a : b;
|
|
}
|
|
function gcd(a, b) {
|
|
a = parseValue(a).abs();
|
|
b = parseValue(b).abs();
|
|
if (a.equals(b)) return a;
|
|
if (a.isZero()) return b;
|
|
if (b.isZero()) return a;
|
|
var c = Integer[1], d, t;
|
|
while (a.isEven() && b.isEven()) {
|
|
d = min(roughLOB(a), roughLOB(b));
|
|
a = a.divide(d);
|
|
b = b.divide(d);
|
|
c = c.multiply(d);
|
|
}
|
|
while (a.isEven()) {
|
|
a = a.divide(roughLOB(a));
|
|
}
|
|
do {
|
|
while (b.isEven()) {
|
|
b = b.divide(roughLOB(b));
|
|
}
|
|
if (a.greater(b)) {
|
|
t = b; b = a; a = t;
|
|
}
|
|
b = b.subtract(a);
|
|
} while (!b.isZero());
|
|
return c.isUnit() ? a : a.multiply(c);
|
|
}
|
|
function lcm(a, b) {
|
|
a = parseValue(a).abs();
|
|
b = parseValue(b).abs();
|
|
return a.divide(gcd(a, b)).multiply(b);
|
|
}
|
|
function randBetween(a, b, rng) {
|
|
a = parseValue(a);
|
|
b = parseValue(b);
|
|
var usedRNG = rng || Math.random;
|
|
var low = min(a, b), high = max(a, b);
|
|
var range = high.subtract(low).add(1);
|
|
if (range.isSmall) return low.add(Math.floor(usedRNG() * range));
|
|
var digits = toBase(range, BASE).value;
|
|
var result = [], restricted = true;
|
|
for (var i = 0; i < digits.length; i++) {
|
|
var top = restricted ? digits[i] : BASE;
|
|
var digit = truncate(usedRNG() * top);
|
|
result.push(digit);
|
|
if (digit < top) restricted = false;
|
|
}
|
|
return low.add(Integer.fromArray(result, BASE, false));
|
|
}
|
|
|
|
var parseBase = function (text, base, alphabet, caseSensitive) {
|
|
alphabet = alphabet || DEFAULT_ALPHABET;
|
|
text = String(text);
|
|
if (!caseSensitive) {
|
|
text = text.toLowerCase();
|
|
alphabet = alphabet.toLowerCase();
|
|
}
|
|
var length = text.length;
|
|
var i;
|
|
var absBase = Math.abs(base);
|
|
var alphabetValues = {};
|
|
for (i = 0; i < alphabet.length; i++) {
|
|
alphabetValues[alphabet[i]] = i;
|
|
}
|
|
for (i = 0; i < length; i++) {
|
|
var c = text[i];
|
|
if (c === "-") continue;
|
|
if (c in alphabetValues) {
|
|
if (alphabetValues[c] >= absBase) {
|
|
if (c === "1" && absBase === 1) continue;
|
|
throw new Error(c + " is not a valid digit in base " + base + ".");
|
|
}
|
|
}
|
|
}
|
|
base = parseValue(base);
|
|
var digits = [];
|
|
var isNegative = text[0] === "-";
|
|
for (i = isNegative ? 1 : 0; i < text.length; i++) {
|
|
var c = text[i];
|
|
if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));
|
|
else if (c === "<") {
|
|
var start = i;
|
|
do { i++; } while (text[i] !== ">" && i < text.length);
|
|
digits.push(parseValue(text.slice(start + 1, i)));
|
|
}
|
|
else throw new Error(c + " is not a valid character");
|
|
}
|
|
return parseBaseFromArray(digits, base, isNegative);
|
|
};
|
|
|
|
function parseBaseFromArray(digits, base, isNegative) {
|
|
var val = Integer[0], pow = Integer[1], i;
|
|
for (i = digits.length - 1; i >= 0; i--) {
|
|
val = val.add(digits[i].times(pow));
|
|
pow = pow.times(base);
|
|
}
|
|
return isNegative ? val.negate() : val;
|
|
}
|
|
|
|
function stringify(digit, alphabet) {
|
|
alphabet = alphabet || DEFAULT_ALPHABET;
|
|
if (digit < alphabet.length) {
|
|
return alphabet[digit];
|
|
}
|
|
return "<" + digit + ">";
|
|
}
|
|
|
|
function toBase(n, base) {
|
|
base = bigInt(base);
|
|
if (base.isZero()) {
|
|
if (n.isZero()) return { value: [0], isNegative: false };
|
|
throw new Error("Cannot convert nonzero numbers to base 0.");
|
|
}
|
|
if (base.equals(-1)) {
|
|
if (n.isZero()) return { value: [0], isNegative: false };
|
|
if (n.isNegative())
|
|
return {
|
|
value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))
|
|
.map(Array.prototype.valueOf, [1, 0])
|
|
),
|
|
isNegative: false
|
|
};
|
|
|
|
var arr = Array.apply(null, Array(n.toJSNumber() - 1))
|
|
.map(Array.prototype.valueOf, [0, 1]);
|
|
arr.unshift([1]);
|
|
return {
|
|
value: [].concat.apply([], arr),
|
|
isNegative: false
|
|
};
|
|
}
|
|
|
|
var neg = false;
|
|
if (n.isNegative() && base.isPositive()) {
|
|
neg = true;
|
|
n = n.abs();
|
|
}
|
|
if (base.isUnit()) {
|
|
if (n.isZero()) return { value: [0], isNegative: false };
|
|
|
|
return {
|
|
value: Array.apply(null, Array(n.toJSNumber()))
|
|
.map(Number.prototype.valueOf, 1),
|
|
isNegative: neg
|
|
};
|
|
}
|
|
var out = [];
|
|
var left = n, divmod;
|
|
while (left.isNegative() || left.compareAbs(base) >= 0) {
|
|
divmod = left.divmod(base);
|
|
left = divmod.quotient;
|
|
var digit = divmod.remainder;
|
|
if (digit.isNegative()) {
|
|
digit = base.minus(digit).abs();
|
|
left = left.next();
|
|
}
|
|
out.push(digit.toJSNumber());
|
|
}
|
|
out.push(left.toJSNumber());
|
|
return { value: out.reverse(), isNegative: neg };
|
|
}
|
|
|
|
function toBaseString(n, base, alphabet) {
|
|
var arr = toBase(n, base);
|
|
return (arr.isNegative ? "-" : "") + arr.value.map(function (x) {
|
|
return stringify(x, alphabet);
|
|
}).join('');
|
|
}
|
|
|
|
BigInteger.prototype.toArray = function (radix) {
|
|
return toBase(this, radix);
|
|
};
|
|
|
|
SmallInteger.prototype.toArray = function (radix) {
|
|
return toBase(this, radix);
|
|
};
|
|
|
|
NativeBigInt.prototype.toArray = function (radix) {
|
|
return toBase(this, radix);
|
|
};
|
|
|
|
BigInteger.prototype.toString = function (radix, alphabet) {
|
|
if (radix === undefined$1) radix = 10;
|
|
if (radix !== 10) return toBaseString(this, radix, alphabet);
|
|
var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit;
|
|
while (--l >= 0) {
|
|
digit = String(v[l]);
|
|
str += zeros.slice(digit.length) + digit;
|
|
}
|
|
var sign = this.sign ? "-" : "";
|
|
return sign + str;
|
|
};
|
|
|
|
SmallInteger.prototype.toString = function (radix, alphabet) {
|
|
if (radix === undefined$1) radix = 10;
|
|
if (radix != 10) return toBaseString(this, radix, alphabet);
|
|
return String(this.value);
|
|
};
|
|
|
|
NativeBigInt.prototype.toString = SmallInteger.prototype.toString;
|
|
|
|
NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); };
|
|
|
|
BigInteger.prototype.valueOf = function () {
|
|
return parseInt(this.toString(), 10);
|
|
};
|
|
BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;
|
|
|
|
SmallInteger.prototype.valueOf = function () {
|
|
return this.value;
|
|
};
|
|
SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
|
|
NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {
|
|
return parseInt(this.toString(), 10);
|
|
};
|
|
|
|
function parseStringValue(v) {
|
|
if (isPrecise(+v)) {
|
|
var x = +v;
|
|
if (x === truncate(x))
|
|
return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);
|
|
throw new Error("Invalid integer: " + v);
|
|
}
|
|
var sign = v[0] === "-";
|
|
if (sign) v = v.slice(1);
|
|
var split = v.split(/e/i);
|
|
if (split.length > 2) throw new Error("Invalid integer: " + split.join("e"));
|
|
if (split.length === 2) {
|
|
var exp = split[1];
|
|
if (exp[0] === "+") exp = exp.slice(1);
|
|
exp = +exp;
|
|
if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent.");
|
|
var text = split[0];
|
|
var decimalPlace = text.indexOf(".");
|
|
if (decimalPlace >= 0) {
|
|
exp -= text.length - decimalPlace - 1;
|
|
text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);
|
|
}
|
|
if (exp < 0) throw new Error("Cannot include negative exponent part for integers");
|
|
text += (new Array(exp + 1)).join("0");
|
|
v = text;
|
|
}
|
|
var isValid = /^([0-9][0-9]*)$/.test(v);
|
|
if (!isValid) throw new Error("Invalid integer: " + v);
|
|
if (supportsNativeBigInt) {
|
|
return new NativeBigInt(BigInt(sign ? "-" + v : v));
|
|
}
|
|
var r = [], max = v.length, l = LOG_BASE, min = max - l;
|
|
while (max > 0) {
|
|
r.push(+v.slice(min, max));
|
|
min -= l;
|
|
if (min < 0) min = 0;
|
|
max -= l;
|
|
}
|
|
trim(r);
|
|
return new BigInteger(r, sign);
|
|
}
|
|
|
|
function parseNumberValue(v) {
|
|
if (supportsNativeBigInt) {
|
|
return new NativeBigInt(BigInt(v));
|
|
}
|
|
if (isPrecise(v)) {
|
|
if (v !== truncate(v)) throw new Error(v + " is not an integer.");
|
|
return new SmallInteger(v);
|
|
}
|
|
return parseStringValue(v.toString());
|
|
}
|
|
|
|
function parseValue(v) {
|
|
if (typeof v === "number") {
|
|
return parseNumberValue(v);
|
|
}
|
|
if (typeof v === "string") {
|
|
return parseStringValue(v);
|
|
}
|
|
if (typeof v === "bigint") {
|
|
return new NativeBigInt(v);
|
|
}
|
|
return v;
|
|
}
|
|
// Pre-define numbers in range [-999,999]
|
|
for (var i = 0; i < 1000; i++) {
|
|
Integer[i] = parseValue(i);
|
|
if (i > 0) Integer[-i] = parseValue(-i);
|
|
}
|
|
// Backwards compatibility
|
|
Integer.one = Integer[1];
|
|
Integer.zero = Integer[0];
|
|
Integer.minusOne = Integer[-1];
|
|
Integer.max = max;
|
|
Integer.min = min;
|
|
Integer.gcd = gcd;
|
|
Integer.lcm = lcm;
|
|
Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };
|
|
Integer.randBetween = randBetween;
|
|
|
|
Integer.fromArray = function (digits, base, isNegative) {
|
|
return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);
|
|
};
|
|
|
|
return Integer;
|
|
})();
|
|
|
|
// Node.js check
|
|
if ( module.hasOwnProperty("exports")) {
|
|
module.exports = bigInt;
|
|
}
|
|
});
|
|
|
|
function fromString$1(s, radix) {
|
|
if (typeof s == "string") {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInteger(s.slice(2), 16);
|
|
} else {
|
|
return BigInteger(s,radix);
|
|
}
|
|
} else {
|
|
return BigInteger(s, radix);
|
|
}
|
|
}
|
|
|
|
const e$1 = fromString$1;
|
|
|
|
function fromArray$1(a, radix) {
|
|
return BigInteger.fromArray(a, radix);
|
|
}
|
|
|
|
function bitLength$1(a) {
|
|
return BigInteger(a).bitLength();
|
|
}
|
|
|
|
function isNegative$1(a) {
|
|
return BigInteger(a).isNegative();
|
|
}
|
|
|
|
function isZero$1(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
function shiftLeft$1(a, n) {
|
|
return BigInteger(a).shiftLeft(n);
|
|
}
|
|
|
|
function shiftRight$1(a, n) {
|
|
return BigInteger(a).shiftRight(n);
|
|
}
|
|
|
|
const shl$1 = shiftLeft$1;
|
|
const shr$1 = shiftRight$1;
|
|
|
|
function isOdd$1(a) {
|
|
return BigInteger(a).isOdd();
|
|
}
|
|
|
|
|
|
function naf$1(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
const z = 2 - E.mod(4).toJSNumber();
|
|
res.push( z );
|
|
E = E.minus(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function bits$1(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber$1(s) {
|
|
if (!s.lt(BigInteger("9007199254740992", 10))) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return s.toJSNumber();
|
|
}
|
|
|
|
function toArray$1(s, radix) {
|
|
return BigInteger(s).toArray(radix);
|
|
}
|
|
|
|
function add$1(a, b) {
|
|
return BigInteger(a).add(BigInteger(b));
|
|
}
|
|
|
|
function sub$1(a, b) {
|
|
return BigInteger(a).minus(BigInteger(b));
|
|
}
|
|
|
|
function neg$1(a) {
|
|
return BigInteger.zero.minus(BigInteger(a));
|
|
}
|
|
|
|
function mul$1(a, b) {
|
|
return BigInteger(a).times(BigInteger(b));
|
|
}
|
|
|
|
function square$1(a) {
|
|
return BigInteger(a).square();
|
|
}
|
|
|
|
function pow$1(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function exp$1(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function abs$1(a) {
|
|
return BigInteger(a).abs();
|
|
}
|
|
|
|
function div$1(a, b) {
|
|
return BigInteger(a).divide(BigInteger(b));
|
|
}
|
|
|
|
function mod$1(a, b) {
|
|
return BigInteger(a).mod(BigInteger(b));
|
|
}
|
|
|
|
function eq$1(a, b) {
|
|
return BigInteger(a).eq(BigInteger(b));
|
|
}
|
|
|
|
function neq$1(a, b) {
|
|
return BigInteger(a).neq(BigInteger(b));
|
|
}
|
|
|
|
function lt$1(a, b) {
|
|
return BigInteger(a).lt(BigInteger(b));
|
|
}
|
|
|
|
function gt$1(a, b) {
|
|
return BigInteger(a).gt(BigInteger(b));
|
|
}
|
|
|
|
function leq$1(a, b) {
|
|
return BigInteger(a).leq(BigInteger(b));
|
|
}
|
|
|
|
function geq$1(a, b) {
|
|
return BigInteger(a).geq(BigInteger(b));
|
|
}
|
|
|
|
function band$1(a, b) {
|
|
return BigInteger(a).and(BigInteger(b));
|
|
}
|
|
|
|
function bor$1(a, b) {
|
|
return BigInteger(a).or(BigInteger(b));
|
|
}
|
|
|
|
function bxor$1(a, b) {
|
|
return BigInteger(a).xor(BigInteger(b));
|
|
}
|
|
|
|
function land$1(a, b) {
|
|
return (!BigInteger(a).isZero()) && (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lor$1(a, b) {
|
|
return (!BigInteger(a).isZero()) || (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lnot$1(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
var Scalar_bigint = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString$1,
|
|
e: e$1,
|
|
fromArray: fromArray$1,
|
|
bitLength: bitLength$1,
|
|
isNegative: isNegative$1,
|
|
isZero: isZero$1,
|
|
shiftLeft: shiftLeft$1,
|
|
shiftRight: shiftRight$1,
|
|
shl: shl$1,
|
|
shr: shr$1,
|
|
isOdd: isOdd$1,
|
|
naf: naf$1,
|
|
bits: bits$1,
|
|
toNumber: toNumber$1,
|
|
toArray: toArray$1,
|
|
add: add$1,
|
|
sub: sub$1,
|
|
neg: neg$1,
|
|
mul: mul$1,
|
|
square: square$1,
|
|
pow: pow$1,
|
|
exp: exp$1,
|
|
abs: abs$1,
|
|
div: div$1,
|
|
mod: mod$1,
|
|
eq: eq$1,
|
|
neq: neq$1,
|
|
lt: lt$1,
|
|
gt: gt$1,
|
|
leq: leq$1,
|
|
geq: geq$1,
|
|
band: band$1,
|
|
bor: bor$1,
|
|
bxor: bxor$1,
|
|
land: land$1,
|
|
lor: lor$1,
|
|
lnot: lnot$1
|
|
});
|
|
|
|
const supportsNativeBigInt = typeof BigInt === "function";
|
|
|
|
let Scalar = {};
|
|
if (supportsNativeBigInt) {
|
|
Object.assign(Scalar, Scalar_native);
|
|
} else {
|
|
Object.assign(Scalar, Scalar_bigint);
|
|
}
|
|
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
Scalar.toRprLE = function rprBE(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v[i] = parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16);
|
|
for (let i=l; i<v.length; i++) v[i] = 0;
|
|
for (let i=v.length*4; i<n8; i++) buff[i] = Scalar.toNumber(Scalar.band(Scalar.shiftRight(e, i*8), 0xFF));
|
|
};
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
Scalar.toRprBE = function rprLEM(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v.setUint32(n8-i*4 -4, parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16), false);
|
|
for (let i=0; i<n8/4-l; i++) v[i] = 0;
|
|
};
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
Scalar.fromRprLE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const a = new Array(n8/4);
|
|
v.forEach( (ch,i) => a[a.length-i-1] = ch.toString(16).padStart(8,"0") );
|
|
return Scalar.fromString(a.join(""), 16);
|
|
};
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
Scalar.fromRprBE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const a = new Array(n8/4);
|
|
for (let i=0; i<n8/4; i++) {
|
|
a[i] = v.getUint32(i*4, false).toString(16).padStart(8, "0");
|
|
}
|
|
return Scalar.fromString(a.join(""), 16);
|
|
};
|
|
|
|
Scalar.toString = function toString(a, radix) {
|
|
return a.toString(radix);
|
|
};
|
|
|
|
Scalar.toLEBuff = function toLEBuff(a) {
|
|
const buff = new Uint8Array(Math.floor((Scalar.bitLength(a) - 1) / 8) +1);
|
|
Scalar.toRprLE(buff, 0, a, buff.byteLength);
|
|
return buff;
|
|
};
|
|
|
|
|
|
Scalar.zero = Scalar.e(0);
|
|
Scalar.one = Scalar.e(1);
|
|
|
|
let {
|
|
toRprLE,
|
|
toRprBE,
|
|
fromRprLE,
|
|
fromRprBE,
|
|
toString,
|
|
toLEBuff,
|
|
zero,
|
|
one,
|
|
fromString: fromString$2,
|
|
e: e$2,
|
|
fromArray: fromArray$2,
|
|
bitLength: bitLength$2,
|
|
isNegative: isNegative$2,
|
|
isZero: isZero$2,
|
|
shiftLeft: shiftLeft$2,
|
|
shiftRight: shiftRight$2,
|
|
shl: shl$2,
|
|
shr: shr$2,
|
|
isOdd: isOdd$2,
|
|
naf: naf$2,
|
|
bits: bits$2,
|
|
toNumber: toNumber$2,
|
|
toArray: toArray$2,
|
|
add: add$2,
|
|
sub: sub$2,
|
|
neg: neg$2,
|
|
mul: mul$2,
|
|
square: square$2,
|
|
pow: pow$2,
|
|
exp: exp$2,
|
|
abs: abs$2,
|
|
div: div$2,
|
|
mod: mod$2,
|
|
eq: eq$2,
|
|
neq: neq$2,
|
|
lt: lt$2,
|
|
gt: gt$2,
|
|
leq: leq$2,
|
|
geq: geq$2,
|
|
band: band$2,
|
|
bor: bor$2,
|
|
bxor: bxor$2,
|
|
land: land$2,
|
|
lor: lor$2,
|
|
lnot: lnot$2,
|
|
} = Scalar;
|
|
|
|
var _Scalar = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
toRprLE: toRprLE,
|
|
toRprBE: toRprBE,
|
|
fromRprLE: fromRprLE,
|
|
fromRprBE: fromRprBE,
|
|
toString: toString,
|
|
toLEBuff: toLEBuff,
|
|
zero: zero,
|
|
one: one,
|
|
fromString: fromString$2,
|
|
e: e$2,
|
|
fromArray: fromArray$2,
|
|
bitLength: bitLength$2,
|
|
isNegative: isNegative$2,
|
|
isZero: isZero$2,
|
|
shiftLeft: shiftLeft$2,
|
|
shiftRight: shiftRight$2,
|
|
shl: shl$2,
|
|
shr: shr$2,
|
|
isOdd: isOdd$2,
|
|
naf: naf$2,
|
|
bits: bits$2,
|
|
toNumber: toNumber$2,
|
|
toArray: toArray$2,
|
|
add: add$2,
|
|
sub: sub$2,
|
|
neg: neg$2,
|
|
mul: mul$2,
|
|
square: square$2,
|
|
pow: pow$2,
|
|
exp: exp$2,
|
|
abs: abs$2,
|
|
div: div$2,
|
|
mod: mod$2,
|
|
eq: eq$2,
|
|
neq: neq$2,
|
|
lt: lt$2,
|
|
gt: gt$2,
|
|
leq: leq$2,
|
|
geq: geq$2,
|
|
band: band$2,
|
|
bor: bor$2,
|
|
bxor: bxor$2,
|
|
land: land$2,
|
|
lor: lor$2,
|
|
lnot: lnot$2
|
|
});
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
const _revTable = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable[i] = _revSlow(i, 8);
|
|
}
|
|
|
|
function _revSlow(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
/*
|
|
exports.mulScalar = (F, base, e) =>{
|
|
let res = F.zero;
|
|
let rem = bigInt(e);
|
|
let exp = base;
|
|
|
|
while (! rem.eq(bigInt.zero)) {
|
|
if (rem.and(bigInt.one).eq(bigInt.one)) {
|
|
res = F.add(res, exp);
|
|
}
|
|
exp = F.double(exp);
|
|
rem = rem.shiftRight(1);
|
|
}
|
|
|
|
return res;
|
|
};
|
|
*/
|
|
|
|
|
|
function exp$3(F, base, e) {
|
|
|
|
if (isZero$2(e)) return F.one;
|
|
|
|
const n = bits$2(e);
|
|
|
|
if (n.legth==0) return F.one;
|
|
|
|
let res = base;
|
|
|
|
for (let i=n.length-2; i>=0; i--) {
|
|
|
|
res = F.square(res);
|
|
|
|
if (n[i]) {
|
|
res = F.mul(res, base);
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
// Check here: https://eprint.iacr.org/2012/685.pdf
|
|
|
|
function buildSqrt (F) {
|
|
if ((F.m % 2) == 1) {
|
|
if (eq$2(mod$2(F.p, 4), 1 )) {
|
|
if (eq$2(mod$2(F.p, 8), 1 )) {
|
|
if (eq$2(mod$2(F.p, 16), 1 )) {
|
|
// alg7_muller(F);
|
|
alg5_tonelliShanks(F);
|
|
} else if (eq$2(mod$2(F.p, 16), 9 )) {
|
|
alg4_kong(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$2(mod$2(F.p, 8), 5 )) {
|
|
alg3_atkin(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$2(mod$2(F.p, 4), 3 )) {
|
|
alg2_shanks(F);
|
|
}
|
|
} else {
|
|
const pm2mod4 = mod$2(pow$2(F.p, F.m/2), 4);
|
|
if (pm2mod4 == 1) {
|
|
alg10_adj(F);
|
|
} else if (pm2mod4 == 3) {
|
|
alg9_adj(F);
|
|
} else {
|
|
alg8_complex(F);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function alg5_tonelliShanks(F) {
|
|
F.sqrt_q = pow$2(F.p, F.m);
|
|
|
|
F.sqrt_s = 0;
|
|
F.sqrt_t = sub$2(F.sqrt_q, 1);
|
|
|
|
while (!isOdd$2(F.sqrt_t)) {
|
|
F.sqrt_s = F.sqrt_s + 1;
|
|
F.sqrt_t = div$2(F.sqrt_t, 2);
|
|
}
|
|
|
|
let c0 = F.one;
|
|
|
|
while (F.eq(c0, F.one)) {
|
|
const c = F.random();
|
|
F.sqrt_z = F.pow(c, F.sqrt_t);
|
|
c0 = F.pow(F.sqrt_z, 1 << (F.sqrt_s-1) );
|
|
}
|
|
|
|
F.sqrt_tm1d2 = div$2(sub$2(F.sqrt_t, 1),2);
|
|
|
|
F.sqrt = function(a) {
|
|
const F=this;
|
|
if (F.isZero(a)) return F.zero;
|
|
let w = F.pow(a, F.sqrt_tm1d2);
|
|
const a0 = F.pow( F.mul(F.square(w), a), 1 << (F.sqrt_s-1) );
|
|
if (F.eq(a0, F.negone)) return null;
|
|
|
|
let v = F.sqrt_s;
|
|
let x = F.mul(a, w);
|
|
let b = F.mul(x, w);
|
|
let z = F.sqrt_z;
|
|
while (!F.eq(b, F.one)) {
|
|
let b2k = F.square(b);
|
|
let k=1;
|
|
while (!F.eq(b2k, F.one)) {
|
|
b2k = F.square(b2k);
|
|
k++;
|
|
}
|
|
|
|
w = z;
|
|
for (let i=0; i<v-k-1; i++) {
|
|
w = F.square(w);
|
|
}
|
|
z = F.square(w);
|
|
b = F.mul(b, z);
|
|
x = F.mul(x, w);
|
|
v = k;
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg4_kong(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 4 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg3_atkin(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 3 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg2_shanks(F) {
|
|
|
|
F.sqrt_q = pow$2(F.p, F.m);
|
|
F.sqrt_e1 = div$2( sub$2(F.sqrt_q, 3) , 4);
|
|
|
|
F.sqrt = function(a) {
|
|
if (this.isZero(a)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const a1 = this.pow(a, this.sqrt_e1);
|
|
|
|
const a0 = this.mul(this.square(a1), a);
|
|
|
|
if ( this.eq(a0, this.negone) ) return null;
|
|
|
|
const x = this.mul(a1, a);
|
|
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg10_adj(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 10 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg9_adj(F) {
|
|
F.sqrt_q = pow$2(F.p, F.m/2);
|
|
F.sqrt_e34 = div$2( sub$2(F.sqrt_q, 3) , 4);
|
|
F.sqrt_e12 = div$2( sub$2(F.sqrt_q, 1) , 2);
|
|
|
|
F.frobenius = function(n, x) {
|
|
if ((n%2) == 1) {
|
|
return F.conjugate(x);
|
|
} else {
|
|
return x;
|
|
}
|
|
};
|
|
|
|
F.sqrt = function(a) {
|
|
const F = this;
|
|
const a1 = F.pow(a, F.sqrt_e34);
|
|
const alfa = F.mul(F.square(a1), a);
|
|
const a0 = F.mul(F.frobenius(1, alfa), alfa);
|
|
if (F.eq(a0, F.negone)) return null;
|
|
const x0 = F.mul(a1, a);
|
|
let x;
|
|
if (F.eq(alfa, F.negone)) {
|
|
x = F.mul(x0, [F.F.zero, F.F.one]);
|
|
} else {
|
|
const b = F.pow(F.add(F.one, alfa), F.sqrt_e12);
|
|
x = F.mul(b, x0);
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
|
|
function alg8_complex(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 8 not implemented");
|
|
};
|
|
}
|
|
|
|
function quarterRound(st, a, b, c, d) {
|
|
|
|
st[a] = (st[a] + st[b]) >>> 0;
|
|
st[d] = (st[d] ^ st[a]) >>> 0;
|
|
st[d] = ((st[d] << 16) | ((st[d]>>>16) & 0xFFFF)) >>> 0;
|
|
|
|
st[c] = (st[c] + st[d]) >>> 0;
|
|
st[b] = (st[b] ^ st[c]) >>> 0;
|
|
st[b] = ((st[b] << 12) | ((st[b]>>>20) & 0xFFF)) >>> 0;
|
|
|
|
st[a] = (st[a] + st[b]) >>> 0;
|
|
st[d] = (st[d] ^ st[a]) >>> 0;
|
|
st[d] = ((st[d] << 8) | ((st[d]>>>24) & 0xFF)) >>> 0;
|
|
|
|
st[c] = (st[c] + st[d]) >>> 0;
|
|
st[b] = (st[b] ^ st[c]) >>> 0;
|
|
st[b] = ((st[b] << 7) | ((st[b]>>>25) & 0x7F)) >>> 0;
|
|
}
|
|
|
|
function doubleRound(st) {
|
|
quarterRound(st, 0, 4, 8,12);
|
|
quarterRound(st, 1, 5, 9,13);
|
|
quarterRound(st, 2, 6,10,14);
|
|
quarterRound(st, 3, 7,11,15);
|
|
|
|
quarterRound(st, 0, 5,10,15);
|
|
quarterRound(st, 1, 6,11,12);
|
|
quarterRound(st, 2, 7, 8,13);
|
|
quarterRound(st, 3, 4, 9,14);
|
|
}
|
|
|
|
class ChaCha {
|
|
|
|
constructor(seed) {
|
|
seed = seed || [0,0,0,0,0,0,0,0];
|
|
this.state = [
|
|
0x61707865,
|
|
0x3320646E,
|
|
0x79622D32,
|
|
0x6B206574,
|
|
seed[0],
|
|
seed[1],
|
|
seed[2],
|
|
seed[3],
|
|
seed[4],
|
|
seed[5],
|
|
seed[6],
|
|
seed[7],
|
|
0,
|
|
0,
|
|
0,
|
|
0
|
|
];
|
|
this.idx = 16;
|
|
this.buff = new Array(16);
|
|
}
|
|
|
|
nextU32() {
|
|
if (this.idx == 16) this.update();
|
|
return this.buff[this.idx++];
|
|
}
|
|
|
|
nextU64() {
|
|
return add$2(mul$2(this.nextU32(), 0x100000000), this.nextU32());
|
|
}
|
|
|
|
nextBool() {
|
|
return (this.nextU32() & 1) == 1;
|
|
}
|
|
|
|
update() {
|
|
// Copy the state
|
|
for (let i=0; i<16; i++) this.buff[i] = this.state[i];
|
|
|
|
// Apply the rounds
|
|
for (let i=0; i<10; i++) doubleRound(this.buff);
|
|
|
|
// Add to the initial
|
|
for (let i=0; i<16; i++) this.buff[i] = (this.buff[i] + this.state[i]) >>> 0;
|
|
|
|
this.idx = 0;
|
|
|
|
this.state[12] = (this.state[12] + 1) >>> 0;
|
|
if (this.state[12] != 0) return;
|
|
this.state[13] = (this.state[13] + 1) >>> 0;
|
|
if (this.state[13] != 0) return;
|
|
this.state[14] = (this.state[14] + 1) >>> 0;
|
|
if (this.state[14] != 0) return;
|
|
this.state[15] = (this.state[15] + 1) >>> 0;
|
|
}
|
|
}
|
|
|
|
var crypto = {};
|
|
|
|
/* global window */
|
|
|
|
function getRandomBytes(n) {
|
|
let array = new Uint8Array(n);
|
|
if (typeof window !== "undefined") { // Browser
|
|
if (typeof window.crypto !== "undefined") { // Supported
|
|
window.crypto.getRandomValues(array);
|
|
} else { // fallback
|
|
for (let i=0; i<n; i++) {
|
|
array[i] = (Math.random()*4294967296)>>>0;
|
|
}
|
|
}
|
|
}
|
|
else { // NodeJS
|
|
crypto.randomFillSync(array);
|
|
}
|
|
return array;
|
|
}
|
|
|
|
function getRandomSeed() {
|
|
const arr = getRandomBytes(32);
|
|
const arrV = new Uint32Array(arr.buffer);
|
|
const seed = [];
|
|
for (let i=0; i<8; i++) {
|
|
seed.push(arrV[i]);
|
|
}
|
|
return seed;
|
|
}
|
|
|
|
let threadRng = null;
|
|
|
|
function getThreadRng() {
|
|
if (threadRng) return threadRng;
|
|
threadRng = new ChaCha(getRandomSeed());
|
|
return threadRng;
|
|
}
|
|
|
|
/* global BigInt */
|
|
|
|
class ZqField {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = 1n;
|
|
this.zero = 0n;
|
|
this.p = BigInt(p);
|
|
this.m = 1;
|
|
this.negone = this.p-1n;
|
|
this.two = 2n;
|
|
this.half = this.p >> 1n;
|
|
this.bitLength = bitLength$2(this.p);
|
|
this.mask = (1n << BigInt(this.bitLength)) - 1n;
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = this.e(1n << BigInt(this.n64*64));
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone >> 1n;
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!this.eq(r, this.negone)) {
|
|
this.nqr = this.nqr + 1n;
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
|
|
this.s = 0;
|
|
this.t = this.negone;
|
|
|
|
while ((this.t & 1n) == 0n) {
|
|
this.s = this.s + 1;
|
|
this.t = this.t >> 1n;
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
let res;
|
|
if (!b) {
|
|
res = BigInt(a);
|
|
} else if (b==16) {
|
|
res = BigInt("0x"+a);
|
|
}
|
|
if (res < 0) {
|
|
let nres = -res;
|
|
if (nres >= this.p) nres = nres % this.p;
|
|
return this.p - nres;
|
|
} else {
|
|
return (res>= this.p) ? res%this.p : res;
|
|
}
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
const res = a + b;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
return (a >= b) ? a-b : this.p-b+a;
|
|
}
|
|
|
|
neg(a) {
|
|
return a ? this.p-a : a;
|
|
}
|
|
|
|
mul(a, b) {
|
|
return (a*b)%this.p;
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return (base * this.e(s)) % this.p;
|
|
}
|
|
|
|
square(a) {
|
|
return (a*a) % this.p;
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a==b;
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a!=b;
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa < bb;
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa > bb;
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa <= bb;
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa >= bb;
|
|
}
|
|
|
|
div(a, b) {
|
|
return this.mul(a, this.inv(b));
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (!b) throw new Error("Division by zero");
|
|
return a / b;
|
|
}
|
|
|
|
inv(a) {
|
|
if (!a) throw new Error("Division by zero");
|
|
|
|
let t = 0n;
|
|
let r = this.p;
|
|
let newt = 1n;
|
|
let newr = a % this.p;
|
|
while (newr) {
|
|
let q = r/newr;
|
|
[t, newt] = [newt, t-q*newt];
|
|
[r, newr] = [newr, r-q*newr];
|
|
}
|
|
if (t<0n) t += this.p;
|
|
return t;
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a % b;
|
|
}
|
|
|
|
pow(b, e) {
|
|
return exp$3(this, b, e);
|
|
}
|
|
|
|
exp(b, e) {
|
|
return exp$3(this, b, e);
|
|
}
|
|
|
|
band(a, b) {
|
|
const res = ((a & b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bor(a, b) {
|
|
const res = ((a | b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bxor(a, b) {
|
|
const res = ((a ^ b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bnot(a) {
|
|
const res = a ^ this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
const res = (a << b) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
return a >> nb;
|
|
} else {
|
|
return 0n;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
return a >> b;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
const res = (a << nb) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a && b) ? 1n : 0n;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a || b) ? 1n : 0n;
|
|
}
|
|
|
|
lnot(a) {
|
|
return (a) ? 0n : 1n;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n == 0n) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone >> this.one);
|
|
if ( res != 1n ) return null;
|
|
|
|
let m = this.s;
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one) >> 1n );
|
|
|
|
while ( t != 1n ) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (sq != 1n ) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r > (this.p >> 1n)) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a, b) {
|
|
a = BigInt(a,b);
|
|
if (a < 0) {
|
|
let na = -a;
|
|
if (na >= this.p) na = na % this.p;
|
|
return this.p - na;
|
|
} else {
|
|
return (a>= this.p) ? a%this.p : a;
|
|
}
|
|
}
|
|
|
|
random() {
|
|
const nBytes = (this.bitLength*2 / 8);
|
|
let res =0n;
|
|
for (let i=0; i<nBytes; i++) {
|
|
res = (res << 8n) + BigInt(getRandomBytes(1)[0]);
|
|
}
|
|
return res % this.p;
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (a > this.half) {
|
|
const v = this.p-a;
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a == 0n;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v=0n;
|
|
for (let i=0; i<this.n64; i++) {
|
|
v += rng.nextU64() << BigInt(64 *i);
|
|
}
|
|
v &= this.mask;
|
|
} while (v >= this.p);
|
|
v = (v * this.Ri) % this.p; // Convert from montgomery
|
|
return v;
|
|
}
|
|
|
|
}
|
|
|
|
class ZqField$1 {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = BigInteger.one;
|
|
this.zero = BigInteger.zero;
|
|
this.p = BigInteger(p);
|
|
this.m = 1;
|
|
this.negone = this.p.minus(BigInteger.one);
|
|
this.two = BigInteger(2);
|
|
this.half = this.p.shiftRight(1);
|
|
this.bitLength = this.p.bitLength();
|
|
this.mask = BigInteger.one.shiftLeft(this.bitLength).minus(BigInteger.one);
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = BigInteger.one.shiftLeft(this.n64*64);
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone.shiftRight(this.one);
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!r.equals(this.negone)) {
|
|
this.nqr = this.nqr.add(this.one);
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
this.s = this.zero;
|
|
this.t = this.negone;
|
|
|
|
while (!this.t.isOdd()) {
|
|
this.s = this.s.add(this.one);
|
|
this.t = this.t.shiftRight(this.one);
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
|
|
const res = BigInteger(a,b);
|
|
|
|
return this.normalize(res);
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
let res = a.add(b);
|
|
if (res.geq(this.p)) {
|
|
res = res.minus(this.p);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
if (a.geq(b)) {
|
|
return a.minus(b);
|
|
} else {
|
|
return this.p.minus(b.minus(a));
|
|
}
|
|
}
|
|
|
|
neg(a) {
|
|
if (a.isZero()) return a;
|
|
return this.p.minus(a);
|
|
}
|
|
|
|
mul(a, b) {
|
|
return a.times(b).mod(this.p);
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return base.times(BigInteger(s)).mod(this.p);
|
|
}
|
|
|
|
square(a) {
|
|
return a.square().mod(this.p);
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a.eq(b);
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a.neq(b);
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.lt(bb);
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.gt(bb);
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.leq(bb);
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.geq(bb);
|
|
}
|
|
|
|
div(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.times(b.modInv(this.p)).mod(this.p);
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.divide(b);
|
|
}
|
|
|
|
inv(a) {
|
|
if (a.isZero()) throw new Error("Division by zero");
|
|
return a.modInv(this.p);
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a.mod(b);
|
|
}
|
|
|
|
pow(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
exp(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
band(a, b) {
|
|
return a.and(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bor(a, b) {
|
|
return a.or(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bxor(a, b) {
|
|
return a.xor(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bnot(a) {
|
|
return a.xor(this.mask).mod(this.p);
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftLeft(b).and(this.mask).mod(this.p);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shr(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftRight(b);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shl(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a.isZero() || b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a.isZero() && b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lnot(a) {
|
|
return a.isZero() ? BigInteger.one : BigInteger.zero;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n.equals(this.zero)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone.shiftRight(this.one));
|
|
if (!res.equals(this.one)) return null;
|
|
|
|
let m = parseInt(this.s);
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one).shiftRight(this.one) );
|
|
|
|
while (!t.equals(this.one)) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (!sq.equals(this.one)) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r.greater(this.p.shiftRight(this.one))) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a) {
|
|
a = BigInteger(a);
|
|
if (a.isNegative()) {
|
|
return this.p.minus(a.abs().mod(this.p));
|
|
} else {
|
|
return a.mod(this.p);
|
|
}
|
|
}
|
|
|
|
random() {
|
|
let res = BigInteger(0);
|
|
let n = BigInteger(this.p.square());
|
|
while (!n.isZero()) {
|
|
res = res.shiftLeft(8).add(BigInteger(getRandomBytes(1)[0]));
|
|
n = n.shiftRight(8);
|
|
}
|
|
return res.mod(this.p);
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (!a.lesserOrEquals(this.p.shiftRight(BigInteger(1)))) {
|
|
const v = this.p.minus(a);
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a.isZero();
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v = BigInteger(0);
|
|
for (let i=0; i<this.n64; i++) {
|
|
v = v.add(v, rng.nextU64().shiftLeft(64*i));
|
|
}
|
|
v = v.and(this.mask);
|
|
} while (v.geq(this.p));
|
|
v = v.times(this.Ri).mod(this.q);
|
|
return v;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
const supportsNativeBigInt$1 = typeof BigInt === "function";
|
|
let _F1Field;
|
|
if (supportsNativeBigInt$1) {
|
|
_F1Field = ZqField;
|
|
} else {
|
|
_F1Field = ZqField$1;
|
|
}
|
|
|
|
class F1Field extends _F1Field {
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
toRprLE(buff, o, e) {
|
|
toRprLE(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
toRprBE(buff, o, e) {
|
|
toRprBE(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Montgomery Representation
|
|
toRprBEM(buff, o, e) {
|
|
return this.toRprBE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
toRprLEM(buff, o, e) {
|
|
return this.toRprLE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
fromRprLE(buff, o) {
|
|
return fromRprLE(buff, o, this.n8);
|
|
}
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
fromRprBE(buff, o) {
|
|
return fromRprBE(buff, o, this.n8);
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
return this.mul(this.fromRprLE(buff, o), this.Ri);
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
return this.mul(this.fromRprBE(buff, o), this.Ri);
|
|
}
|
|
|
|
}
|
|
|
|
var code = "AGFzbQEAAAABiQERYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AHf39/f39/fwBgCH9/f39/f39/AGAFf39/f38Bf2AHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38BfwIQAQNlbnYGbWVtb3J5AgDoBwOrAqkCAAECAQMDBAQFAAAGBwgFAgUFAAAFAAAAAAICAAEFCAkFBQgAAgIFBQAABQAAAAACAgABBQgJBQUIAAIFAAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAUABQAAAAAFBQUFBQoACwkKAAsJCAgDAAgIAgAACQUFAAgMCQICAQEABQUABQUAAAAAAwAIAgIJCAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAUABQAAAAAFBQUFBQoACwkKAAsJCAgFAwAICAIAAAkFBQUDAAgIAgAACQUFBQUJCQkJCQACAgEBAAUABQUAAgAAAwAIAgkIAAICAQEABQUABQUAAAAAAwAIAgIJCAACBQAAAAAICAUAAAAAAAAAAAAAAAAAAAAABA0ODxAFB70imgIIaW50X2NvcHkAAAhpbnRfemVybwABB2ludF9vbmUAAwppbnRfaXNaZXJvAAIGaW50X2VxAAQHaW50X2d0ZQAFB2ludF9hZGQABgdpbnRfc3ViAAcHaW50X211bAAICmludF9zcXVhcmUACQ1pbnRfc3F1YXJlT2xkAAoHaW50X2RpdgANDmludF9pbnZlcnNlTW9kAA4IZjFtX2NvcHkAAAhmMW1femVybwABCmYxbV9pc1plcm8AAgZmMW1fZXEABAdmMW1fYWRkABAHZjFtX3N1YgARB2YxbV9uZWcAEg5mMW1faXNOZWdhdGl2ZQAZCWYxbV9pc09uZQAPCGYxbV9zaWduABoLZjFtX21SZWR1Y3QAEwdmMW1fbXVsABQKZjFtX3NxdWFyZQAVDWYxbV9zcXVhcmVPbGQAFhJmMW1fZnJvbU1vbnRnb21lcnkAGBBmMW1fdG9Nb250Z29tZXJ5ABcLZjFtX2ludmVyc2UAGwdmMW1fb25lABwIZjFtX2xvYWQAHQ9mMW1fdGltZXNTY2FsYXIAHgdmMW1fZXhwACIQZjFtX2JhdGNoSW52ZXJzZQAfCGYxbV9zcXJ0ACMMZjFtX2lzU3F1YXJlACQVZjFtX2JhdGNoVG9Nb250Z29tZXJ5ACAXZjFtX2JhdGNoRnJvbU1vbnRnb21lcnkAIQhmcm1fY29weQAACGZybV96ZXJvAAEKZnJtX2lzWmVybwACBmZybV9lcQAEB2ZybV9hZGQAJgdmcm1fc3ViACcHZnJtX25lZwAoDmZybV9pc05lZ2F0aXZlAC8JZnJtX2lzT25lACUIZnJtX3NpZ24AMAtmcm1fbVJlZHVjdAApB2ZybV9tdWwAKgpmcm1fc3F1YXJlACsNZnJtX3NxdWFyZU9sZAAsEmZybV9mcm9tTW9udGdvbWVyeQAuEGZybV90b01vbnRnb21lcnkALQtmcm1faW52ZXJzZQAxB2ZybV9vbmUAMghmcm1fbG9hZAAzD2ZybV90aW1lc1NjYWxhcgA0B2ZybV9leHAAOBBmcm1fYmF0Y2hJbnZlcnNlADUIZnJtX3NxcnQAOQxmcm1faXNTcXVhcmUAOhVmcm1fYmF0Y2hUb01vbnRnb21lcnkANhdmcm1fYmF0Y2hGcm9tTW9udGdvbWVyeQA3BmZyX2FkZAAmBmZyX3N1YgAnBmZyX25lZwAoBmZyX211bAA7CWZyX3NxdWFyZQA8CmZyX2ludmVyc2UAPQ1mcl9pc05lZ2F0aXZlAD4HZnJfY29weQAAB2ZyX3plcm8AAQZmcl9vbmUAMglmcl9pc1plcm8AAgVmcl9lcQAEDGcxbV9tdWx0aWV4cABnEmcxbV9tdWx0aWV4cF9jaHVuawBmEmcxbV9tdWx0aWV4cEFmZmluZQBrGGcxbV9tdWx0aWV4cEFmZmluZV9jaHVuawBqCmcxbV9pc1plcm8AQBBnMW1faXNaZXJvQWZmaW5lAD8GZzFtX2VxAEgLZzFtX2VxTWl4ZWQARwxnMW1fZXFBZmZpbmUARghnMW1fY29weQBEDmcxbV9jb3B5QWZmaW5lAEMIZzFtX3plcm8AQg5nMW1femVyb0FmZmluZQBBCmcxbV9kb3VibGUAShBnMW1fZG91YmxlQWZmaW5lAEkHZzFtX2FkZABNDGcxbV9hZGRNaXhlZABMDWcxbV9hZGRBZmZpbmUASwdnMW1fbmVnAE8NZzFtX25lZ0FmZmluZQBOB2cxbV9zdWIAUgxnMW1fc3ViTWl4ZWQAUQ1nMW1fc3ViQWZmaW5lAFASZzFtX2Zyb21Nb250Z29tZXJ5AFQYZzFtX2Zyb21Nb250Z29tZXJ5QWZmaW5lAFMQZzFtX3RvTW9udGdvbWVyeQBWFmcxbV90b01vbnRnb21lcnlBZmZpbmUAVQ9nMW1fdGltZXNTY2FsYXIAbBVnMW1fdGltZXNTY2FsYXJBZmZpbmUAbQ1nMW1fbm9ybWFsaXplAFkKZzFtX0xFTXRvVQBbCmcxbV9MRU10b0MAXApnMW1fVXRvTEVNAF0KZzFtX0N0b0xFTQBeD2cxbV9iYXRjaExFTXRvVQBfD2cxbV9iYXRjaExFTXRvQwBgD2cxbV9iYXRjaFV0b0xFTQBhD2cxbV9iYXRjaEN0b0xFTQBiDGcxbV90b0FmZmluZQBXDmcxbV90b0phY29iaWFuAEURZzFtX2JhdGNoVG9BZmZpbmUAWBNnMW1fYmF0Y2hUb0phY29iaWFuAGMHZnJtX2ZmdABzCGZybV9pZmZ0AHQKZnJtX3Jhd2ZmdABxC2ZybV9mZnRKb2luAHUKZnJtX2ZmdE1peAB2DGZybV9mZnRGaW5hbAB3CHBvbF96ZXJvAHgPcG9sX2NvbnN0cnVjdExDAHkMcWFwX2J1aWxkQUJDAHoLcWFwX2pvaW5BQkMAewpmMm1faXNaZXJvAHwJZjJtX2lzT25lAH0IZjJtX3plcm8AfgdmMm1fb25lAH8IZjJtX2NvcHkAgAEHZjJtX211bACBAQhmMm1fbXVsMQCCAQpmMm1fc3F1YXJlAIMBB2YybV9hZGQAhAEHZjJtX3N1YgCFAQdmMm1fbmVnAIYBCGYybV9zaWduAI0BDWYybV9jb25qdWdhdGUAhwESZjJtX2Zyb21Nb250Z29tZXJ5AIkBEGYybV90b01vbnRnb21lcnkAiAEGZjJtX2VxAIoBC2YybV9pbnZlcnNlAIsBB2YybV9leHAAkAEPZjJtX3RpbWVzU2NhbGFyAIwBEGYybV9iYXRjaEludmVyc2UAjwEIZjJtX3NxcnQAkQEMZjJtX2lzU3F1YXJlAJIBDmYybV9pc05lZ2F0aXZlAI4BDGcybV9tdWx0aWV4cAC7ARJnMm1fbXVsdGlleHBfY2h1bmsAugESZzJtX211bHRpZXhwQWZmaW5lAL8BGGcybV9tdWx0aWV4cEFmZmluZV9jaHVuawC+AQpnMm1faXNaZXJvAJQBEGcybV9pc1plcm9BZmZpbmUAkwEGZzJtX2VxAJwBC2cybV9lcU1peGVkAJsBDGcybV9lcUFmZmluZQCaAQhnMm1fY29weQCYAQ5nMm1fY29weUFmZmluZQCXAQhnMm1femVybwCWAQ5nMm1femVyb0FmZmluZQCVAQpnMm1fZG91YmxlAJ4BEGcybV9kb3VibGVBZmZpbmUAnQEHZzJtX2FkZAChAQxnMm1fYWRkTWl4ZWQAoAENZzJtX2FkZEFmZmluZQCfAQdnMm1fbmVnAKMBDWcybV9uZWdBZmZpbmUAogEHZzJtX3N1YgCmAQxnMm1fc3ViTWl4ZWQApQENZzJtX3N1YkFmZmluZQCkARJnMm1fZnJvbU1vbnRnb21lcnkAqAEYZzJtX2Zyb21Nb250Z29tZXJ5QWZmaW5lAKcBEGcybV90b01vbnRnb21lcnkAqgEWZzJtX3RvTW9udGdvbWVyeUFmZmluZQCpAQ9nMm1fdGltZXNTY2FsYXIAwAEVZzJtX3RpbWVzU2NhbGFyQWZmaW5lAMEBDWcybV9ub3JtYWxpemUArQEKZzJtX0xFTXRvVQCvAQpnMm1fTEVNdG9DALABCmcybV9VdG9MRU0AsQEKZzJtX0N0b0xFTQCyAQ9nMm1fYmF0Y2hMRU10b1UAswEPZzJtX2JhdGNoTEVNdG9DALQBD2cybV9iYXRjaFV0b0xFTQC1AQ9nMm1fYmF0Y2hDdG9MRU0AtgEMZzJtX3RvQWZmaW5lAKsBDmcybV90b0phY29iaWFuAJkBEWcybV9iYXRjaFRvQWZmaW5lAKwBE2cybV9iYXRjaFRvSmFjb2JpYW4AtwELZzFtX3RpbWVzRnIAwgEHZzFtX2ZmdADIAQhnMW1faWZmdADJAQpnMW1fcmF3ZmZ0AMYBC2cxbV9mZnRKb2luAMoBCmcxbV9mZnRNaXgAywEMZzFtX2ZmdEZpbmFsAMwBC2cybV90aW1lc0ZyAM0BB2cybV9mZnQA0wEIZzJtX2lmZnQA1AEKZzJtX3Jhd2ZmdADRAQtnMm1fZmZ0Sm9pbgDVAQpnMm1fZmZ0TWl4ANYBDGcybV9mZnRGaW5hbADXARFnMW1fdGltZXNGckFmZmluZQDYARFnMm1fdGltZXNGckFmZmluZQDZARFmcm1fYmF0Y2hBcHBseUtleQDaARFnMW1fYmF0Y2hBcHBseUtleQDbARZnMW1fYmF0Y2hBcHBseUtleU1peGVkANwBEWcybV9iYXRjaEFwcGx5S2V5AN0BFmcybV9iYXRjaEFwcGx5S2V5TWl4ZWQA3gEKZjZtX2lzWmVybwDgAQlmNm1faXNPbmUA4QEIZjZtX3plcm8A4gEHZjZtX29uZQDjAQhmNm1fY29weQDkAQdmNm1fbXVsAOUBCmY2bV9zcXVhcmUA5gEHZjZtX2FkZADnAQdmNm1fc3ViAOgBB2Y2bV9uZWcA6QEIZjZtX3NpZ24A6gESZjZtX2Zyb21Nb250Z29tZXJ5AOwBEGY2bV90b01vbnRnb21lcnkA6wEGZjZtX2VxAO0BC2Y2bV9pbnZlcnNlAO4BB2Y2bV9leHAA8gEPZjZtX3RpbWVzU2NhbGFyAO8BEGY2bV9iYXRjaEludmVyc2UA8QEOZjZtX2lzTmVnYXRpdmUA8AEKZnRtX2lzWmVybwD0AQlmdG1faXNPbmUA9QEIZnRtX3plcm8A9gEHZnRtX29uZQD3AQhmdG1fY29weQD4AQdmdG1fbXVsAPkBCGZ0bV9tdWwxAPoBCmZ0bV9zcXVhcmUA+wEHZnRtX2FkZAD8AQdmdG1fc3ViAP0BB2Z0bV9uZWcA/gEIZnRtX3NpZ24AhQINZnRtX2Nvbmp1Z2F0ZQD/ARJmdG1fZnJvbU1vbnRnb21lcnkAgQIQZnRtX3RvTW9udGdvbWVyeQCAAgZmdG1fZXEAggILZnRtX2ludmVyc2UAgwIHZnRtX2V4cACIAg9mdG1fdGltZXNTY2FsYXIAhAIQZnRtX2JhdGNoSW52ZXJzZQCHAghmdG1fc3FydACJAgxmdG1faXNTcXVhcmUAigIOZnRtX2lzTmVnYXRpdmUAhgIUYm4xMjhfX2Zyb2Jlbml1c01hcDAAkwIUYm4xMjhfX2Zyb2Jlbml1c01hcDEAlAIUYm4xMjhfX2Zyb2Jlbml1c01hcDIAlQIUYm4xMjhfX2Zyb2Jlbml1c01hcDMAlgIUYm4xMjhfX2Zyb2Jlbml1c01hcDQAlwIUYm4xMjhfX2Zyb2Jlbml1c01hcDUAmAIUYm4xMjhfX2Zyb2Jlbml1c01hcDYAmQIUYm4xMjhfX2Zyb2Jlbml1c01hcDcAmgIUYm4xMjhfX2Zyb2Jlbml1c01hcDgAmwIUYm4xMjhfX2Zyb2Jlbml1c01hcDkAnAIQYm4xMjhfcGFpcmluZ0VxMQCjAhBibjEyOF9wYWlyaW5nRXEyAKQCEGJuMTI4X3BhaXJpbmdFcTMApQIQYm4xMjhfcGFpcmluZ0VxNACmAhBibjEyOF9wYWlyaW5nRXE1AKcCDWJuMTI4X3BhaXJpbmcAqAIPYm4xMjhfcHJlcGFyZUcxAI0CD2JuMTI4X3ByZXBhcmVHMgCPAhBibjEyOF9taWxsZXJMb29wAJICGWJuMTI4X2ZpbmFsRXhwb25lbnRpYXRpb24AogIcYm4xMjhfZmluYWxFeHBvbmVudGlhdGlvbk9sZACdAg9ibjEyOF9fbXVsQnkwMjQAkAISYm4xMjhfX211bEJ5MDI0T2xkAJECF2JuMTI4X19jeWNsb3RvbWljU3F1YXJlAJ8CF2JuMTI4X19jeWNsb3RvbWljRXhwX3cwAKACCoXOA6kCKgAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYCx4AIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGAszACAAKQMYUARAIAApAxBQBEAgACkDCFAEQCAAKQMAUA8FQQAPCwVBAA8LBUEADwtBAA8LHgAgAEIBNwMAIABCADcDCCAAQgA3AxAgAEIANwMYC0cAIAApAxggASkDGFEEQCAAKQMQIAEpAxBRBEAgACkDCCABKQMIUQRAIAApAwAgASkDAFEPBUEADwsFQQAPCwVBAA8LQQAPC30AIAApAxggASkDGFQEQEEADwUgACkDGCABKQMYVgRAQQEPBSAAKQMQIAEpAxBUBEBBAA8FIAApAxAgASkDEFYEQEEBDwUgACkDCCABKQMIVARAQQAPBSAAKQMIIAEpAwhWBEBBAQ8FIAApAwAgASkDAFoPCwsLCwsLQQAPC9QBAQF+IAA1AgAgATUCAHwhAyACIAM+AgAgADUCBCABNQIEfCADQiCIfCEDIAIgAz4CBCAANQIIIAE1Agh8IANCIIh8IQMgAiADPgIIIAA1AgwgATUCDHwgA0IgiHwhAyACIAM+AgwgADUCECABNQIQfCADQiCIfCEDIAIgAz4CECAANQIUIAE1AhR8IANCIIh8IQMgAiADPgIUIAA1AhggATUCGHwgA0IgiHwhAyACIAM+AhggADUCHCABNQIcfCADQiCIfCEDIAIgAz4CHCADQiCIpwuMAgEBfiAANQIAIAE1AgB9IQMgAiADQv////8Pgz4CACAANQIEIAE1AgR9IANCIId8IQMgAiADQv////8Pgz4CBCAANQIIIAE1Agh9IANCIId8IQMgAiADQv////8Pgz4CCCAANQIMIAE1Agx9IANCIId8IQMgAiADQv////8Pgz4CDCAANQIQIAE1AhB9IANCIId8IQMgAiADQv////8Pgz4CECAANQIUIAE1AhR9IANCIId8IQMgAiADQv////8Pgz4CFCAANQIYIAE1Ahh9IANCIId8IQMgAiADQv////8Pgz4CGCAANQIcIAE1Ahx9IANCIId8IQMgAiADQv////8Pgz4CHCADQiCHpwuPEBIBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4gA0L/////D4MgADUCACIFIAE1AgAiBn58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgBSABNQIEIgh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIEIgcgBn58IQQgAyAEQiCIfCEDIAIgBD4CBCADQiCIIQQgA0L/////D4MgBSABNQIIIgp+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIIIgkgBn58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgBSABNQIMIgx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIgsgBn58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgBSABNQIQIg5+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIQIg0gBn58IQMgBCADQiCIfCEEIAIgAz4CECAEQiCIIQMgBEL/////D4MgBSABNQIUIhB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIUIg8gBn58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgBSABNQIYIhJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIhEgBn58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgBEL/////D4MgBSABNQIcIhR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIcIhMgBn58IQQgAyAEQiCIfCEDIAIgBD4CHCADQiCIIQQgA0L/////D4MgByAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAIfnwhAyAEIANCIIh8IQQgAiADPgIgIARCIIghAyAEQv////8PgyAJIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIAp+fCEEIAMgBEIgiHwhAyACIAQ+AiQgA0IgiCEEIANC/////w+DIAsgFH58IQMgBCADQiCIfCEEIANC/////w+DIA0gEn58IQMgBCADQiCIfCEEIANC/////w+DIA8gEH58IQMgBCADQiCIfCEEIANC/////w+DIBEgDn58IQMgBCADQiCIfCEEIANC/////w+DIBMgDH58IQMgBCADQiCIfCEEIAIgAz4CKCAEQiCIIQMgBEL/////D4MgDSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgDyASfnwhBCADIARCIIh8IQMgBEL/////D4MgESAQfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAOfnwhBCADIARCIIh8IQMgAiAEPgIsIANCIIghBCADQv////8PgyAPIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyATIBB+fCEDIAQgA0IgiHwhBCACIAM+AjAgBEIgiCEDIARC/////w+DIBEgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgEn58IQQgAyAEQiCIfCEDIAIgBD4CNCADQiCIIQQgA0L/////D4MgEyAUfnwhAyAEIANCIIh8IQQgAiADPgI4IARCIIghAyACIAQ+AjwLjBIMAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgADUCACIGIAZ+fCECIAMgAkIgiHwhAyABIAI+AgAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCBCIHfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIIIgh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAHIAd+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgwiCX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCECIKfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIUIgt+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhgiDH58IQIgAyACQiCIfCEDIAJC/////w+DIAcgC358IQIgAyACQiCIfCEDIAJC/////w+DIAggCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAkgCX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCHCINfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CHCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCiAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CICADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCCANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CJCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCyALfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CKCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CLCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCyANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CMCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDCANfnwh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IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiCiAHfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCjAQiDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIQwgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCCCIPfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIOIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQKQBCIRIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhECADQv////8PgyAJIBB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIMIhN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIhIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1ApQEIhUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEUIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhAiF358IQMgBCADQiCIfCEEIANC/////w+DIAogE358IQMgBCADQiCIfCEEIANC/////w+DIA4gD358IQMgBCADQiCIfCEEIANC/////w+DIBIgC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiFiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCmAQiGSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRggA0L/////D4MgCSAYfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCFCIbfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgDiATfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgFiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIaIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQKcBCIdIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhHCAEQv////8PgyAJIBx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIYIh9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyASIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIh4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gHH58IQMgBCADQiCIfCEEIANC/////w+DIBEgGH58IQMgBCADQiCIfCEEIANC/////w+DIBUgFH58IQMgBCADQiCIfCEEIANC/////w+DIBkgEH58IQMgBCADQiCIfCEEIANC/////w+DIB0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AqAEIiEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEgIANC/////w+DIAkgIH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhwiI358IQQgAyAEQiCIfCEDIARC/////w+DIAogH358IQQgAyAEQiCIfCEDIARC/////w+DIA4gG358IQQgAyAEQiCIfCEDIARC/////w+DIBIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBYgE358IQQgAyAEQiCIfCEDIARC/////w+DIBogD358IQQgAyAEQiCIfCEDIARC/////w+DIB4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiIiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgESAcfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgISAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCpAQiJSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DISQgBEL/////D4MgCSAkfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAogI358IQMgBCADQiCIfCEEIANC/////w+DIA4gH358IQMgBCADQiCIfCEEIANC/////w+DIBIgG358IQMgBCADQiCIfCEEIANC/////w+DIBYgF358IQMgBCADQiCIfCEEIANC/////w+DIBogE358IQMgBCADQiCIfCEEIANC/////w+DIB4gD358IQMgBCADQiCIfCEEIANC/////w+DICIgC358IQMgBCADQiCIfCEEIANC/////w+DIA0gJH58IQMgBCADQiCIfCEEIANC/////w+DIBEgIH58IQMgBCADQiCIfCEEIANC/////w+DIBUgHH58IQMgBCADQiCIfCEEIANC/////w+DIBkgGH58IQMgBCADQiCIfCEEIANC/////w+DIB0gFH58IQMgBCADQiCIfCEEIANC/////w+DICEgEH58IQMgBCADQiCIfCEEIANC/////w+DICUgDH58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgDiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAffnwhBCADIARCIIh8IQMgBEL/////D4MgFiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgHiATfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgESAkfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgISAUfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAQfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyASICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAVICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIBR+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIBYgI358IQQgAyAEQiCIfCEDIARC/////w+DIBogH358IQQgAyAEQiCIfCEDIARC/////w+DIB4gG358IQQgAyAEQiCIfCEDIARC/////w+DICIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBkgJH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gIH58IQQgAyAEQiCIfCEDIARC/////w+DICEgHH58IQQgAyAEQiCIfCEDIARC/////w+DICUgGH58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgGiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgIiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAcfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAeICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlICB+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DICIgI358IQMgBCADQiCIfCEEIANC/////w+DICUgJH58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgAiAEPgIcIAOnBEAgAkGIBCACEAcaBSACQYgEEAUEQCACQYgEIAIQBxoLCwu7IR0BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QonHmaQOIQZCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgcgB358IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEIIAJC/////w+DQQA1AogEIgkgCH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AgQiCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8Pg0EANQKMBCIMIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhCyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIIIg1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCkAQiDyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQ4gAkL/////D4MgCSAOfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCDCIQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgDn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1ApQEIhIgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyERIAJC/////w+DIAkgEX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhAiE358IQIgAyACQiCIfCEDIAJC/////w+DIAogEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA0gDX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAPIA5+fCECIAMgAkIgiHwhAyACQv////8PgyASIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKYBCIVIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFCACQv////8PgyAJIBR+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIUIhZ+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBN+fCECIAMgAkIgiHwhAyACQv////8PgyANIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCnAQiGCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRcgAkL/////D4MgCSAXfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCGCIZfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgECAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgF358IQIgAyACQiCIfCEDIAJC/////w+DIA8gFH58IQIgAyACQiCIfCEDIAJC/////w+DIBIgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgDn58IQIgAyACQiCIfCEDIAJC/////w+DIBggC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AqAEIhsgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEaIAJC/////w+DIAkgGn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhwiHH58IQIgAyACQiCIfCEDIAJC/////w+DIAogGX58IQIgAyACQiCIfCEDIAJC/////w+DIA0gFn58IQIgAyACQiCIfCEDIAJC/////w+DIBAgE358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBd+fCECIAMgAkIgiHwhAyACQv////8PgyASIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAYIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAbIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKkBCIeIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhHSACQv////8PgyAJIB1+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgEyATfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgHX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gGn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgF358IQIgAyACQiCIfCEDIAJC/////w+DIBUgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBggEX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgDn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gC358IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDSAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIA8gHX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgF358IQIgAyACQiCIfCEDIAJC/////w+DIBggFH58IQIgAyACQiCIfCEDIAJC/////w+DIBsgEX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gDn58IQIgAyACQiCIfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgECAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgFiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBIgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBggF358IQIgAyACQiCIfCEDIAJC/////w+DIBsgFH58IQIgAyACQiCIfCEDIAJC/////w+DIB4gEX58IQIgAyACQiCIfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgEyAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBUgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBggGn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgF358IQIgAyACQiCIfCEDIAJC/////w+DIB4gFH58IQIgAyACQiCIfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgFiAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgGSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBggHX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgGn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gF358IQIgAyACQiCIfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgGSAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBsgHX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gGn58IQIgAyACQiCIfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgHCAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIB4gHX58IQIgAyACQiCIfCEDIAEgAj4CGCADIQQgBEIgiCEFIAEgBD4CHCAFpwRAIAFBiAQgARAHGgUgAUGI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QcgONQIIIAR+fCEDIAAgAz4CDCAANQIQIANCIIh8QcgONQIMIAR+fCEDIAAgAz4CECAANQIUIANCIIh8QcgONQIQIAR+fCEDIAAgAz4CFCAANQIYIANCIIh8QcgONQIUIAR+fCEDIAAgAz4CGCAANQIcIANCIIh8QcgONQIYIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QcgONQIcIAR+fCEDIAAgAz4CIEGoESADQiCIPgIEQgAhAyAANQIIIAJ+Qv////8PgyEEIAA1AgggA0IgiHxByA41AgAgBH58IQMgACADPgIIIAA1AgwgA0IgiHxByA41AgQgBH58IQMgACADPgIMIAA1AhAgA0IgiHxByA41AgggBH58IQMgACADPgIQIAA1AhQgA0IgiHxByA41AgwgBH58IQMgACADPgIUIAA1AhggA0IgiHxByA41AhAgBH58IQMgACADPgIYIAA1AhwgA0IgiHxByA41AhQgBH58IQMgACADPgIcIAA1AiAgA0IgiHxByA41AhggBH58IQMgACADPgIgIAA1AiQgA0IgiHxByA41AhwgBH58IQMgACADPgIkQagRIANCIIg+AghCACEDIAA1AgwgAn5C/////w+DIQQgADUCDCADQiCIfEHIDjUCACAEfnwhAyAAIAM+AgwgADUCECADQiCIfEHIDjUCBCAEfnwhAyAAIAM+AhAgADUCFCADQiCIfEHIDjUCCCAEfnwhAyAAIAM+AhQgADUCGCADQiCIfEHIDjUCDCAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHIDjUCECAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHIDjUCFCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHIDjUCGCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHIDjUCHCAEfnwhAyAAIAM+AihBqBEgA0IgiD4CDEIAIQMgADUCECACfkL/////D4MhBCAANQIQIANCIIh8QcgONQIAIAR+fCEDIAAgAz4CECAANQIUIANCIIh8QcgONQIEIAR+fCEDIAAgAz4CFCAANQIYIANCIIh8QcgONQIIIAR+fCEDIAAgAz4CGCAANQIcIANCIIh8QcgONQIMIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QcgONQIQIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QcgONQIUIAR+fCEDIAAgAz4CJCAANQIoIANCIIh8QcgONQIYIAR+fCEDIAAgAz4CKCAANQIsIANCIIh8QcgONQIcIAR+fCEDIAAgAz4CLEGoESADQiCIPgIQQgAhAyAANQIUIAJ+Qv////8PgyEEIAA1AhQgA0IgiHxByA41AgAgBH58IQMgACADPgIUIAA1AhggA0IgiHxByA41AgQgBH58IQMgACADPgIYIAA1AhwgA0IgiHxByA41AgggBH58IQMgACADPgIcIAA1AiAgA0IgiHxByA41AgwgBH58IQMgACADPgIgIAA1AiQgA0IgiHxByA41AhAgBH58IQMgACADPgIkIAA1AiggA0IgiHxByA41AhQgBH58IQMgACADPgIoIAA1AiwgA0IgiHxByA41AhggBH58IQMgACADPgIsIAA1AjAgA0IgiHxByA41AhwgBH58IQMgACADPgIwQagRIANCIIg+AhRCACEDIAA1AhggAn5C/////w+DIQQgADUCGCADQiCIfEHIDjUCACAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHIDjUCBCAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHIDjUCCCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHIDjUCDCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHIDjUCECAEfnwhAyAAIAM+AiggADUCLCADQiCIfEHIDjUCFCAEfnwhAyAAIAM+AiwgADUCMCADQiCIfEHIDjUCGCAEfnwhAyAAIAM+AjAgADUCNCADQiCIfEHIDjUCHCAEfnwhAyAAIAM+AjRBqBEgA0IgiD4CGEIAIQMgADUCHCACfkL/////D4MhBCAANQIcIANCIIh8QcgONQIAIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QcgONQIEIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QcgONQIIIAR+fCEDIAAgAz4CJCAANQIoIANCIIh8QcgONQIMIAR+fCEDIAAgAz4CKCAANQIsIANCIIh8QcgONQIQIAR+fCEDIAAgAz4CLCAANQIwIANCIIh8QcgONQIUIAR+fCEDIAAgAz4CMCAANQI0IANCIIh8QcgONQIYIAR+fCEDIAAgAz4CNCAANQI4IANCIIh8QcgONQIcIAR+fCEDIAAgAz4COEGoESADQiCIPgIcQagRIABBIGogARAmC74fIwF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5C/////w4hBSADQv////8PgyAANQIAIgYgATUCACIHfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIQggA0L/////D4NBADUCyA4iCSAIfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCBCILfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCBCIKIAd+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQLMDiINIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhDCAEQv////8PgyAJIAx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIIIg9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIIIg4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AtAOIhEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEQIANC/////w+DIAkgEH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AgwiE358IQQgAyAEQiCIfCEDIARC/////w+DIAogD358IQQgAyAEQiCIfCEDIARC/////w+DIA4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgwiEiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgESAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUC1A4iFSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIRQgBEL/////D4MgCSAUfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCECIXfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgEiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCECIWIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQLYDiIZIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhGCADQv////8PgyAJIBh+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIUIht+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIUIhogB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gGH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AtwOIh0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEcIARC/////w+DIAkgHH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhgiH358IQMgBCADQiCIfCEEIANC/////w+DIAogG358IQMgBCADQiCIfCEEIANC/////w+DIA4gF358IQMgBCADQiCIfCEEIANC/////w+DIBIgE358IQMgBCADQiCIfCEEIANC/////w+DIBYgD358IQMgBCADQiCIfCEEIANC/////w+DIBogC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhgiHiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUC4A4iISAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DISAgA0L/////D4MgCSAgfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCHCIjfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAffnwhBCADIARCIIh8IQMgBEL/////D4MgDiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgFiATfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgHiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCHCIiIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQLkDiIlIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhJCAEQv////8PgyAJICR+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgCiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgEiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgIiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAMfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAOICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyARICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIBB+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIBIgI358IQMgBCADQiCIfCEEIANC/////w+DIBYgH358IQMgBCADQiCIfCEEIANC/////w+DIBogG358IQMgBCADQiCIfCEEIANC/////w+DIB4gF358IQMgBCADQiCIfCEEIANC/////w+DICIgE358IQMgBCADQiCIfCEEIANC/////w+DIBUgJH58IQMgBCADQiCIfCEEIANC/////w+DIBkgIH58IQMgBCADQiCIfCEEIANC/////w+DIB0gHH58IQMgBCADQiCIfCEEIANC/////w+DICEgGH58IQMgBCADQiCIfCEEIANC/////w+DICUgFH58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgFiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAffnwhBCADIARCIIh8IQMgBEL/////D4MgHiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAkfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgISAcfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAYfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAaICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAdICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAhICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIBx+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIB4gI358IQQgAyAEQiCIfCEDIARC/////w+DICIgH358IQQgAyAEQiCIfCEDIARC/////w+DICEgJH58IQQgAyAEQiCIfCEDIARC/////w+DICUgIH58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgIiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAkfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyACIAQ+AhwgA6cEQCACQcgOIAIQBxoFIAJByA4QBQRAIAJByA4gAhAHGgsLC7shHQF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5C/////w4hBkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQggAkL/////D4NBADUCyA4iCSAIfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCBCIKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DQQA1AswOIgwgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyELIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AggiDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLQDiIPIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhDiACQv////8PgyAJIA5+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIMIhB+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC1A4iEiAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIREgAkL/////D4MgCSARfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCECITfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgEX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gDn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AtgOIhUgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEUIAJC/////w+DIAkgFH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhQiFn58IQIgAyACQiCIfCEDIAJC/////w+DIAogE358IQIgAyACQiCIfCEDIAJC/////w+DIA0gEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBF+fCECIAMgAkIgiHwhAyACQv////8PgyASIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAVIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLcDiIYIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFyACQv////8PgyAJIBd+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIYIhl+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyANIBN+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAQIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC4A4iGyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRogAkL/////D4MgCSAafnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCHCIcfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgECATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgGn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gF358IQIgAyACQiCIfCEDIAJC/////w+DIBIgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBUgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBggDn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AuQOIh4gCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEdIAJC/////w+DIAkgHX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKIBx+fCECIAMgAkIgiHwhAyACQv////8PgyANIBl+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBZ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyATIBN+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiALfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyANIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBl+fCECIAMgAkIgiHwhAyACQv////8PgyATIBZ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAafnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAOfnwhAiADIAJCIIh8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAQIBx+fCECIAMgAkIgiHwhAyACQv////8PgyATIBl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAWIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgEiAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAafnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiARfnwhAiADIAJCIIh8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyATIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAWIBl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgFSAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAafnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAUfnwhAiADIAJCIIh8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAWIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAZIBl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAXfnwhAiADIAJCIIh8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAZIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGyAdfnwh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NwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWAscACABQcAAahAcIABBIGogAUEgahAAIAAgARAACxgBAX8gACABEAQgAEEgaiABQSBqEARxDwt1AQF/IABBwABqIQIgABBABEAgARA/DwsgARA/BEBBAA8LIAIQDwRAIAAgARBGDwsgAkHIGRAVIAFByBlB6BkQFCACQcgZQYgaEBQgAUEgakGIGkGoGhAUIABB6BkQBARAIABBIGpBqBoQBARAQQEPCwtBAA8LtAECAX8BfyAAQcAAaiECIAFBwABqIQMgABBABEAgARBADwsgARBABEBBAA8LIAIQDwRAIAEgABBHDwsgAxAPBEAgACABEEcPCyACQcgaEBUgA0HoGhAVIABB6BpBiBsQFCABQcgaQagbEBQgAkHIGkHIGxAUIANB6BpB6BsQFCAAQSBqQegbQYgcEBQgAUEgakHIG0GoHBAUQYgbQagbEAQEQEGIHEGoHBAEBEBBAQ8LC0EADwvoAQAgABA/BEAgACABEEUPCyAAQcgcEBUgAEEgakHoHBAVQegcQYgdEBUgAEHoHEGoHRAQQagdQagdEBVBqB1ByBxBqB0QEUGoHUGIHUGoHRARQagdQagdQagdEBBByBxByBxByB0QEEHIHUHIHEHIHRAQIABBIGogAEEgaiABQcAAahAQQcgdIAEQFSABQagdIAEQESABQagdIAEQEUGIHUGIHUHoHRAQQegdQegdQegdEBBB6B1B6B1B6B0QEEGoHSABIAFBIGoQESABQSBqQcgdIAFBIGoQFCABQSBqQegdIAFBIGoQEQuJAgAgABBABEAgACABEEQPCyAAQcAAahAPBEAgACABEEkPDwsgAEGIHhAVIABBIGpBqB4QFUGoHkHIHhAVIABBqB5B6B4QEEHoHkHoHhAVQegeQYgeQegeEBFB6B5ByB5B6B4QEUHoHkHoHkHoHhAQQYgeQYgeQYgfEBBBiB9BiB5BiB8QEEGIH0GoHxAVIABBIGogAEHAAGpByB8QFEHoHkHoHiABEBBBqB8gASABEBFByB5ByB5B6B8QEEHoH0HoH0HoHxAQQegfQegfQegfEBBB6B4gASABQSBqEBEgAUEgakGIHyABQSBqEBQg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BEAgABAZDwsgAEEgahAZDwuLAgQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBwABsajYCACAFEH8gACEGIAVBwABqIQVBACEIAkADQCAIIAJGDQEgBhB8BEAgBUHAAGsgBRCAAQUgBiAFQcAAayAFEIEBCyAGIAFqIQYgBUHAAGohBSAIQQFqIQgMAAsLIAYgAWshBiAFQcAAayEFIAMgAkEBayAEbGohByAFIAUQiwECQANAIAhFDQEgBhB8BEAgBSAFQcAAaxCAASAHEH4FIAVBwABrQejKABCAASAFIAYgBUHAAGsQgQEgBUHoygAgBxCBAQsgBiABayEGIAcgBGshByAFQcAAayEFIAhBAWshCAwACwtBACAFNgIAC8wCAgF/AX8gAkUEQCADEH8PCyAAQajLABCAASADEH8gAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxCDASAFQYABTwRAIAVBgAFrIQUgA0GoywAgAxCBAQsgAyADEIMBIAVBwABPBEAgBUHAAGshBSADQajLACADEIEBCyADIAMQgwEgBUEgTwRAIAVBIGshBSADQajLACADEIEBCyADIAMQgwEgBUEQTwRAIAVBEGshBSADQajLACADEIEBCyADIAMQgwEgBUEITwRAIAVBCGshBSADQajLACADEIEBCyADIAMQgwEgBUEETwRAIAVBBGshBSADQajLACADEIEBCyADIAMQgwEgBUECTwRAIAVBAmshBSADQajLACADEIEBCyADIAMQgwEgBUEBTwRAIAVBAWshBSADQajLACADEIEBCyAERQ0BDAALCwvLAQBB6M0AEH9B6M0AQejNABCGASAAQejLAEEgQajMABCQAUGozABB6MwAEIMBIABB6MwAQejMABCBAUHozABBqM0AEIcBQajNAEHozABBqM0AEIEBQajNAEHozQAQigEEQAALQajMACAAQajOABCBAUHozABB6M0AEIoBBEBB6M0AEAFBiM4AEBxB6M0AQajOACABEIEBBUHozgAQf0HozgBB6MwAQejOABCEAUHozgBBiMwAQSBB6M4AEJABQejOAEGozgAgARCBAQsLaABBiNEAEH9BiNEAQYjRABCGASAAQajPAEEgQcjPABCQAUHIzwBBiNAAEIMBIABBiNAAQYjQABCBAUGI0ABByNAAEIcBQcjQAEGI0ABByNAAEIEBQcjQAEGI0QAQigEEQEEADwtBAQ8LDwAgABB8IABBwABqEHxxCwoAIABBgAFqEHwLDgAgABB+IABBwABqEH4LFgAgABB+IABBwABqEH8gAEGAAWoQfguiAQAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYIAEgACkDIDcDICABIAApAyg3AyggASAAKQMwNwMwIAEgACkDODcDOCABIAApA0A3A0AgASAAKQNINwNIIAEgACkDUDcDUCABIAApA1g3A1ggASAAKQNgNwNgIAEgACkDaDcDaCABIAApA3A3A3AgASAAKQN4NwN4C4ICACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWCABIAApA2A3A2AgASAAKQNoNwNoIAEgACkDcDcDcCABIAApA3g3A3ggASAAKQOAATcDgAEgASAAKQOIATcDiAEgASAAKQOQATcDkAEgASAAKQOYATcDmAEgASAAKQOgATcDoAEgASAAKQOoATcDqAEgASAAKQOwATcDsAEgASAAKQO4ATcDuAELIAAgAUGAAWoQfyAAQcAAaiABQcAAahCAASAAIAEQgAELHAEBfyAAIAEQigEgAEHAAGogAUHAAGoQigFxDwuKAQEBfyAAQYABaiECIAAQlAEEQCABEJMBDwsgARCTAQRAQQAPCyACEH0EQCAAIAEQmgEPCyACQYjSABCDASABQYjSAEHI0gAQgQEgAkGI0gBBiNMAEIEBIAFBwABqQYjTAEHI0wAQgQEgAEHI0gAQigEEQCAAQcAAakHI0wAQigEEQEEBDwsLQQAPC9cBAgF/AX8gAEGAAWohAiABQYABaiEDIAAQlAEEQCABEJQBDwsgARCUAQRAQQAPCyACEH0EQCABIAAQmwEPCyADEH0EQCAAIAEQmwEPCyACQYjUABCDASADQcjUABCDASAAQcjUAEGI1QAQgQEgAUGI1ABByNUAEIEBIAJBiNQAQYjWABCBASADQcjUAEHI1gAQgQEgAEHAAGpByNYAQYjXABCBASABQcAAakGI1gBByNcA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DwsWACAAEH4gAEHAAGoQfiAAQYABahB+CxYAIAAQfyAAQcAAahB+IABBgAFqEH4LJwAgACABEIABIABBwABqIAFBwABqEIABIABBgAFqIAFBgAFqEIABC+UCACAAIAFByMcBEIEBIABBwABqIAFBwABqQYjIARCBASAAQYABaiABQYABakHIyAEQgQEgACAAQcAAakGIyQEQhAEgASABQcAAakHIyQEQhAEgACAAQYABakGIygEQhAEgASABQYABakHIygEQhAEgAEHAAGogAEGAAWpBiMsBEIQBIAFBwABqIAFBgAFqQcjLARCEAUHIxwFBiMgBQYjMARCEAUHIxwFByMgBQcjMARCEAUGIyAFByMgBQYjNARCEAUGIywFByMsBIAIQgQEgAkGIzQEgAhCFASACIAIQ3wFByMcBIAIgAhCEAUGIyQFByMkBIAJBwABqEIEBIAJBwABqQYjMASACQcAAahCFAUHIyAFByM0BEN8BIAJBwABqQcjNASACQcAAahCEAUGIygFByMoBIAJBgAFqEIEBIAJBgAFqQcjMASACQYABahCFASACQYABakGIyAEgAkGAAWoQhAELgQIAIABBiM4BEIMBIAAgAEHAAGpByM4BEIEBQcjOAUHIzgFBiM8BEIQBIAAgAEHAAGpByM8BEIUBQcjPASAAQYABakHIzwEQhAFByM8BQcjPARCDASAAQcAAaiAAQYABakGI0AEQgQFBiNABQYjQAUHI0AEQhAEgAEGAAWpBiNEBEIMBQcjQASABEN8BQYjOASABIAEQhAFBiNEBIAFBwABqEN8BQYjPASABQcAAaiABQcAAahCEAUGIzgFBiNEBIAFBgAFqEIQBQcjQASABQYABaiABQYABahCFAUHIzwEgAUGAAWogAUGAAWoQhAFBiM8BIAFBgAFqIAFBgAFqEIQBCzUAIAAgASACEIQBIABBwABqIAFBwABqIAJBwABqEIQBIABBgAFqIAFBgAFqIAJBgAFqEIQBCzUAIAAgASACEIUBIABBwABqIAFBwABqIAJBwABqEIUBIABBgAFqIAFBgAFqIAJBgAFqEIUBCycAIAAgARCGASAAQcAAaiABQcAAahCGASAAQYABaiABQYABahCGAQswAQF/IABBgAFqEI0BIQEgAQRAIAEPCyAAQcAAahCNASEBIAEEQCABDwsgABCN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ahCBASAAQYABakHQ0AMgAUGAAWoQgQEgAEHAAWpBkNEDIAFBwAFqEIEBIABBgAJqQdDRAyABQYACahCBASAAQcACakGQ0gMgAUHAAmoQgQELigIAIAAgARAAIABBIGogAUEgahASIAFB0NIDIAEQgQEgAEHAAGogAUHAAGoQACAAQeAAaiABQeAAahASIAFBwABqQZDTAyABQcAAahCBASAAQYABaiABQYABahAAIABBoAFqIAFBoAFqEBIgAUGAAWpB0NMDIAFBgAFqEIEBIABBwAFqIAFBwAFqEAAgAEHgAWogAUHgAWoQEiABQcABakGQ1AMgAUHAAWoQgQEgAEGAAmogAUGAAmoQACAAQaACaiABQaACahASIAFBgAJqQdDUAyABQYACahCBASAAQcACaiABQcACahAAIABB4AJqIAFB4AJqEBIgAUHAAmpBkNUDIAFBwAJqEIEBC2wAIABB0NUDIAEQgQEgAEHAAGpBkNYDIAFBwABqEIEBIABBgAFqQdDWAyABQYABahCBASAAQcABakGQ1wMgAUHAAWoQgQEgAEGAAmpB0NcDIAFBgAJqEIEBIABBwAJqQZDYAyABQcACahCBAQuKAgAgACABEAAgAEEgaiABQSBqEBIgAUHQ2AMgARCBASAAQcAAaiABQcAAahAAIABB4ABqIAFB4ABqEBIgAUHAAGpBkNkDIAFBwABqEIEBIABBgAFqIAFBgAFqEAAgAEGgAWogAUGgAWoQEiABQYABakHQ2QMgAUGAAWoQgQEgAEHAAWogAUHAAWoQACAAQeABaiABQeABahASIAFBwAFqQZDaAyABQcABahCBASAAQYACaiABQYACahAAIABBoAJqIAFBoAJqEBIgAUGAAmpB0NoDIAFBgAJqEIEBIABBwAJqIAFBwAJqEAAgAEHgAmogAUHgAmoQEiABQcACakGQ2wMgAUHAAmoQgQELbAAgAEHQ2wMgARCBASAAQcAAakGQ3AMgAUHAAGoQgQEgAEGAAWpB0NwDIAFBgAFqEIEBIABBwAFqQZDdAyABQcABahCBASAAQYACakHQ3QMgAUGAAmoQgQEgAEHAAmpBkN4DIAFBwAJqEIEBC4oCACAAIAEQACAAQSBqIAFBIGoQEiABQdDeAyABEIEBIABBwABqIAFBwABqEAAgAEHgAGogAUHgAGoQEiABQcAAakGQ3wMgAUHAAGoQgQEgAEGAAWogAUGAAWoQACAAQaABaiABQaABahASIAFBgAFqQdDfAyABQYABahCBASAAQcABaiABQcABahAAIABB4AFqIAFB4AFqEBIgAUHAAWpBkOADIAFBwAFqEIEBIABBgAJqIAFBgAJqEAAgAEGgAmogAUGgAmoQEiABQYACakHQ4AMgAUGAAmoQgQEgAEHAAmogAUHAAmoQACAAQeACaiABQeACahASIAFBwAJqQZDhAyABQcACahCBAQtsACAAQdDhAyABEIEBIABBwABqQZDiAyABQcAAahCBASAAQYABakHQ4gMgAUGAAWoQgQEgAEHAAWpBkOMDIAFBwAFqEIEBIABBgAJqQdDjAyABQYACahCBASAAQcACakGQ5AMgAUHAAmoQgQELigIAIAAgARAAIABBIGogAUEgahASIAFB0OQDIAEQgQEgAEHAAGogAUHAAGoQACAAQeAAaiABQeAAahASIAFBwABqQZDlAyABQcAAahCBASAAQYABaiABQYABahAAIABBoAFqIAFBoAFqEBIgAUGAAWpB0OUDIAFBgAFqEIEBIABBwAFqIAFBwAFqEAAgAEHgAWogAUHgAWoQEiABQcABakGQ5gMgAUHAAWoQgQEgAEGAAmogAUGAAmoQACAAQaACaiABQaACahASIAFBgAJqQdDmAyABQYACahCBASAAQcACaiABQcACahAAIABB4AJqIAFB4AJqEBIgAUHAAmpBkOcDIAFBwAJqEIEBCxAAIABB0OcDQeACIAEQiAILSAAgAEGw6gMQ5AEgAEHAAWpB8OsDEOkBIABBsO0DEIMCQbDqA0Gw7QNBsPADEPkBQbDwA0Gw8wMQlQJBsPADQbDzAyABEPkBC4QGACAAIABBgAJqQbD5AxCBASAAQYACakGIxgFBsPYDEIEBIABBsPYDQbD2AxCEASAAIABBgAJqQfD5AxCEAUHw+QNBsPYDQbD2AxCBAUGIxgFBsPkDQfD5AxCBAUGw+QNB8PkDQfD5AxCEAUGw9gNB8PkDQbD2AxCFAUGw+QNBsPkDQfD2AxCEASAAQcABaiAAQYABakGw+QMQgQEgAEGAAWpBiMYBQbD3AxCBASAAQcABakGw9wNBsPcDEIQBIABBwAFqIABBgAFqQfD5AxCEAUHw+QNBsPcDQbD3AxCBAUGIxgFBsPkDQfD5AxCBAUGw+QNB8PkDQfD5AxCEAUGw9wNB8PkDQbD3AxCFAUGw+QNBsPkDQfD3AxCEASAAQcAAaiAAQcACakGw+QMQgQEgAEHAAmpBiMYBQbD4AxCBASAAQcAAakGw+ANBsPgDEIQBIABBwABqIABBwAJqQfD5AxCEAUHw+QNBsPgDQbD4AxCBAUGIxgFBsPkDQfD5AxCBAUGw+QNB8PkDQfD5AxCEAUGw+ANB8PkDQbD4AxCFAUGw+QNBsPkDQfD4AxCEAUGw9gMgACABEIUBIAEgASABEIQBQbD2AyABIAEQhAFB8PYDIABBgAJqIAFBgAJqEIQBIAFBgAJqIAFBgAJqIAFBgAJqEIQBQfD2AyABQYACaiABQYACahCEAUHw+ANBiMYBQfD5AxCBAUHw+QMgAEHAAWogAUHAAWoQhAEgAUHAAWogAUHAAWogAUHAAWoQhAFB8PkDIAFBwAFqIAFBwAFqEIQBQbD4AyAAQYABaiABQYABahCFASABQYABaiABQYABaiABQYABahCEAUGw+AMgAUGAAWogAUGAAWoQhAFBsPcDIABBwABqIAFBwABqEIUBIAFBwABqIAFBwABqIAFBwABqEIQBQbD3AyABQcAAaiABQcAAahCEAUHw9wMgAEHAAmogAUHAAmoQhAEgAUHAAmogAUHAAmogAUHAAmoQhAFB8PcDIAFBwAJqIAFBwAJqEIQBC4UBAgF/AX8gAEGQ+wMQ/wEgARD3AUE+LACw+gMiAgRAIAJBAUYEQCABIAAgARD5AQUgAUGQ+wMgARD5AQsLQT0hAwJAA0AgASABEJ8CIAMsALD6AyICBEAgAkEBRgRAIAEgACABEPkBBSABQZD7AyABEPkBCwsgA0UNASADQQFrIQMMAAsLC7UCACAAQZD+AxCgAkGQ/gNBkP4DEP8BQZD+A0GQgQQQnwJBkIEEQZCEBBCfAkGQhARBkIEEQZCHBBD5AUGQhwRBkIoEEKACQZCKBEGQigQQ/wFBkIoEQZCNBBCfAkGQjQRBkJAEEKACQZCQBEGQkAQQ/wFBkIcEQZCTBBD/AUGQkARBkJYEEP8BQZCWBEGQigRBkJkEEPkBQZCZBEGQkwRBkJwEEPkBQZCcBEGQgQRBkJ8EEPkBQZCcBEGQigRBkKIEEPkBQZCiBCAAQZClBBD5AUGQnwRBkKgEEJQCQZCoBEGQpQRBkKsEEPkBQZCcBEGQrgQQlQJBkK4EQZCrBEGQsQQQ+QEgAEGQtAQQ/wFBkLQEQZCfBEGQtwQQ+QFBkLcEQZC6BBCWAkGQugRBkLEEIAEQ+QELFAAgAEGQvQQQngJBkL0EIAEQoQILTQBBkMAEEPcBIABBkJUCEI0CIAFB0JYCEI8CQZCVAkHQlgJBkMMEEJICQZDABEGQwwRBkMAEEPkBQZDABEGQwAQQogJBkMAEIAIQggILfQBBkMYEEPcBIABBkJUCEI0CIAFB0JYCEI8CQZCVAkHQlgJBkMkEEJICQZDGBEGQyQRBkMYEEPkBIAJBkJUCEI0CIANB0JYCEI8CQZCVAkHQlgJBkMkEEJICQZDGBEGQyQRBkMYEEPkBQZDGBEGQxgQQogJBkMYEIAQQggILrQEAQZDMBBD3ASAAQZCVAhCNAiABQdCWAhCPAkGQlQJB0JYCQZDPBBCSAkGQzARBkM8EQZDMBBD5ASACQZCVAhCNAiADQdCWAhCPAkGQlQJB0JYCQZDPBBCSAkGQzARBkM8EQZDMBBD5ASAEQZCVAhCNAiAFQdCWAhCPAkGQlQJB0JYCQZDPBBCSAkGQzARBkM8EQZDMBBD5AUGQzARBkMwEEKICQZDMBCAGEIICC90BAEGQ0gQQ9wEgAEGQlQIQjQIgAUHQlgIQjwJBkJUCQdCWAkGQ1QQQkgJBkNIEQZDVBEGQ0gQQ+QEgAkGQlQIQjQIgA0HQlgIQjwJBkJUCQdCWAkGQ1QQQkgJBkNIEQZDVBEGQ0gQQ+QEgBEGQlQIQjQIgBUHQlgIQjwJBkJUCQdCWAkGQ1QQQkgJBkNIEQZDVBEGQ0gQQ+QEgBkGQlQIQjQIgB0HQlgIQjwJBkJUCQdCWAkGQ1QQQkgJBkNIEQZDVBEGQ0gQQ+QFBkNIEQZDSBBCiAkGQ0gQgCBCCAguNAgBBkNgEEPcBIABBkJUCEI0CIAFB0JYCEI8CQZCVAkHQlgJBkNsEEJICQZDYBEGQ2wRBkNgEEPkBIAJBkJUCEI0CIANB0JYCEI8CQZCVAkHQlgJBkNsEEJICQZDYBEGQ2wRBkNgEEPkBIARBkJUCEI0CIAVB0JYCEI8CQZCVAkHQlgJBkNsEEJICQZDYBEGQ2wRBkNgEEPkBIAZBkJUCEI0CIAdB0JYCEI8CQZCVAkHQlgJBkNsEEJICQZDYBEGQ2wRBkNgEEPkBIAhBkJUCEI0CIAlB0JYCEI8CQZCVAkHQlgJBkNsEEJICQZDYBEGQ2wRBkNgEEPkBQZDYBEGQ2AQQogJBkNgEIAoQggILLAAgAEGQlQIQjQIgAUHQlgIQjwJBkJUCQdCWAkGQ3gQQkgJBkN4EIAIQogILC/xweABBAAsEkDABAABBCAsgAQAA8JP14UORcLl5SOgzKF1YgYG2RVC4KaAx4XJOZDAAQSgLIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGIBAsgR/182BaMIDyNynFokWqBl11YgYG2RVC4KaAx4XJOZDAAQagECyCdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgBByAQLIIn6ilNb/Czz+wFF1BEZ57X2f0EK/x6rRx81uMpxn9gGAEHoBAsgnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AQYgFCyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBqAULIKN+PmwLRhCeRuU4tEi1wMsurMBA2yIo3BTQmHA5JzIYAEHIBQsgpH4+bAtGEJ5G5Ti0SLXAyy6swEDbIijcFNCYcDknMhgAQegFCyDXKK1QqcoXerkhVeF6wWofhNJraU7qSzOOnRfORGcfKgBBiAYLIKN+PmwLRhCeRuU4tEi1wMsurMBA2yIo3BTQmHA5JzIYAEGoBgsgqu/tEolIw2hPv6pyaH8IjTESCAlHouFR+sApR7HWWSIAQcgGCyBSPx+2BSMIT6NyHFqkWuBlF1ZgoG0RFG4KaEy4nBMZDABByA4LIAEAAPCT9eFDkXC5eUjoMyhdWIGBtkVQuCmgMeFyTmQwAEHoDgsg+///Txw0lqwpzWCflXb8Ni5GeXhvo25mL98HmsF3Cg4AQYgPCyCnbSGuRea4G+NZXOOxOv5ThYC7Uz2DSYylRE5/sdAWAgBBqA8LIPv//08cNJasKc1gn5V2/DYuRnl4b6NuZi/fB5rBdwoOAEHIDwsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQegPCyAAAAD4yfrwoUi43Dwk9BmULqzAQNsiKNwU0JhwOScyGABBiBALIAEAAPjJ+vChSLjcPCT0GZQurMBA2yIo3BTQmHA5JzIYAEGoEAsg5v//n/kODRs/kSqjo2i66okG3dh269hHw7v1IFUI0BUAQcgQCyA/WR8+FAmXm4eEPoPShRUYaFsEhZsCGhMu50QGAwAAAABB6BALIJw90YBVc25j1v9FJHTzK6LYA7IewCpFVuf5YymU72AYAEGIEQsgoKwPH4qEy81DQp9B6cIKDLQtgsJNAY0Jl3MigwEAAAAAQagZCyDXKK1QqcoXerkhVeF6wWofhNJraU7qSzOOnRfORGcfKgBB6DALIBEREREREREREREQEA8ODQ0MCwoJCAcHBgUEAwIBAQEBAEHoMQsgERERERERERERERAQDw4NDQwLCgkIBwcGBQQDAgEBAQEAQagzC6AH+///Txw0lqwpzWCflXb8Ni5GeXhvo25mL98HmsF3Cg4GAACgd8FLl2ejWNqycTfxLhIICUei4VH6wClHsdZZIovv3J6XPXV/IJFHsSwXP19ubAl0eWKxjc8IwTk1ezcrP3ytteJKrfi+hcuD/8ZgLfcplF0r/XbZqdmaP+d8QCQDjy90fH229Mxo0GPcLRtoalf7G++85Yz+PLbSUSl8FmRMV7+x9xQi8n0x9y8j+SjNda2wqIR15QNtF9xZ+4Erv2GPgeUDkI7C/vibNL+bjE5TAT/N7txTPKop5WuWkCaxe4EmMMR5CvB9U5l8zLJ73uZBAtUnyrZM8DI2P7N6AMxKooM/uK+iblNdUtlV8pIZ3YYCCGZ1XkklLcWmsXsY3iOkIuc7U5wNbt98Ep0qZAXAmkBGdbwNglA9so1M8ACEEQwotLP0HiwqXq7C1HrPGGWjxWw7BriMwN9lucRII7LPT66JIedIB1r4jTz7AwoKLpvqNYpN/3cdnM0ujKko09vssy9S1B2t81XQkyoiaOhV1bNmfZy+RviUYbj2khvWTqB5vtxMiYcH00Rq3myVX8Hb1yu2oVlOb4CaEOTrErjqBU3HoBO6FjGrEWNdAS5aoKWMLJIDtdqU4/7XFb4GVLj9WwX3ToDy6s5AcWunesuJ/rJoWsn8xwbE8TUcRh0zdDk5WeezR9EkHA2SOjptQ1/3dFESNKFW1WruAR+CG3zcBBLYuAXaQY0wBuYqMkgsiZ6EJ441NZLVLdb7yg8EhAtwCS/GZiVghr+gdjoYM/FYUFdZjznZNM3ROc4ubQU2eqLmt6OeBLzbPgUD5uvv1J7OOlq0JIReeYimkIN8KBqTjapl1DLanI+AYYX2aSaFsMjkRqt7JBoC1oGHZjsNPC8y9ZIh6ien6Y9l6YQYsWnAU6C8I4Y6pjnhJfDzjxLyGu+8biKOm2BrQN+r8UWePbun1VfSjVO8o4J4A5M4CgCRnsAEJEhusiUAWceRdQ0Rvl46eScCpKhMqcHDpmQBMNBP2Gm9IscsFlLPJkoOYOmn80XXfnL7XCf7abKnUhbiB1xX//oOQMWaj0tJcyNVN63nge2reao5Lk0IuOXGGv4giskilKKgnVyTZcpi1HP3gkXUbkq64baCOgzAFPwoZwKJgBRkWYdJA8DktXg6Sn6xplLdTwBJEurmZd0XRSicPdGAVXNuY9b/RSR08yui2AOyHsAqRVbn+WMplO9gGABByDoLoAf7//9PHDSWrCnNYJ+Vdvw2LkZ5eG+jbmYv3weawXcKDv7//x/YFDx43R6NDG8vmK9FT/38knRfj6y/nD0aYzcf////D2wKHrxuj0aGtxfM16Knfn5Juq9H1l/OHo2xmw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEHowQALgAIAgEDAIKBg4BCQUNAwsHDwCIhIyCioaOgYmFjYOLh4+ASERMQkpGTkFJRU1DS0dPQMjEzMLKxs7BycXNw8vHz8AoJCwiKiYuISklLSMrJy8gqKSsoqqmrqGppa2jq6evoGhkbGJqZm5haWVtY2tnb2Do5Ozi6ubu4enl7ePr5+/gGBQcEhoWHhEZFR0TGxcfEJiUnJKalp6RmZWdk5uXn5BYVFxSWlZeUVlVXVNbV19Q2NTc0trW3tHZ1d3T29ff0Dg0PDI6Nj4xOTU9Mzs3PzC4tLyyura+sbm1vbO7t7+weHR8cnp2fnF5dX1ze3d/cPj0/PL69v7x+fX98/v3//AEHoywALIFE/H7YFIwhPo3IcWqRa4GUXVmCgbREUbgpoTLicExkMAEGIzAALIKN+PmwLRhCeRuU4tEi1wMsurMBA2yIo3BTQmHA5JzIYAEGozwALIFE/H7YFIwhPo3IcWqRa4GUXVmCgbREUbgpoTLicExkMAEHI0QALQKgCuHfjOPk7XVMzNicbCwJgUnVJ8O23Jm2ohEMyxhQlZ//c0czs5zg+Dc6TfbPwZaoArCLd0EnXTY1oSs65QQEAQciAAQsgERERERERERERERAQDw4NDQwLCgkIBwcGBQQDAgEBAQEAQaiCAQsgERERERERERERERAQDw4NDQwLCgkIBwcGBQQDAgEBAQEAQaiFAQugB/v//08cNJasKc1gn5V2/DYuRnl4b6NuZi/fB5rBdwoOBgAAoHfBS5dno1jasnE38S4SCAlHouFR+sApR7HWWSKL79yelz11fyCRR7EsFz9fbmwJdHlisY3PCME5NXs3Kz98rbXiSq34voXLg//GYC33KZRdK/122anZmj/nfEAkA48vdHx9tvTMaNBj3C0baGpX+xvvvOWM/jy20lEpfBZkTFe/sfcUIvJ9MfcvI/kozXWtsKiEdeUDbRfcWfuBK79hj4HlA5COwv74mzS/m4xOUwE/ze7cUzyqKeVrlpAmsXuBJjDEeQrwfVOZfMyye97mQQLVJ8q2TPAyNj+zegDMSqKDP7ivom5TXVLZVfKSGd2GAghmdV5JJS3FprF7GN4jpCLnO1OcDW7ffBKdKmQFwJpARnW8DYJQPbKNTPAAhBEMKLSz9B4sKl6uwtR6zxhlo8VsOwa4jMDfZbnESCOyz0+uiSHnSAda+I08+wMKCi6b6jWKTf93HZzNLoypKNPb7LMvUtQdrfNV0JMqImjoVdWzZn2cvkb4lGG49pIb1k6geb7cTImHB9NEat5slV/B29crtqFZTm+AmhDk6xK46gVNx6ATuhYxqxFjXQEuWqCljCySA7XalOP+1xW+BlS4/VsF906A8urOQHFrp3rLif6yaFrJ/McGxPE1HEYdM3Q5OVnns0fRJBwNkjo6bUNf93RREjShVtVq7gEfght83AQS2LgF2kGNMAbmKjJILImehCeONTWS1S3W+8oPBIQLcAkvxmYlYIa/oHY6GDPxWFBXWY852TTN0TnOLm0FNnqi5rejngS82z4FA+br79SezjpatCSEXnmIppCDfCgak42qZdQy2pyPgGGF9mkmhbDI5EareyQaAtaBh2Y7DTwvMvWSIeonp+mPZemEGLFpwFOgvCOGOqY54SXw848S8hrvvG4ijptga0Dfq/FFnj27p9VX0o1TvKOCeAOTOAoAkZ7ABCRIbrIlAFnHkXUNEb5eOnknAqSoTKnBw6ZkATDQT9hpvSLHLBZSzyZKDmDpp/NF135y+1wn+2myp1IW4gdcV//6DkDFmo9LSXMjVTet54Htq3mqOS5NCLjlxhr+IIrJIpSioJ1ck2XKYtRz94JF1G5KuuG2gjoMwBT8KGcCiYAUZFmHSQPA5LV4Okp+saZS3U8ASRLq5mXdF0UonD3RgFVzbmPW/0UkdPMrotgDsh7AKkVW5/ljKZTvYBgAQciMAQugB/v//08cNJasKc1gn5V2/DYuRnl4b6NuZi/fB5rBdwoO/v//H9gUPHjdHo0Mby+Yr0VP/fySdF+PrL+cPRpjNx////8PbAoevG6PRoa3F8zXoqd+fkm6r0fWX84ejbGbDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQeiTAQuAAgCAQMAgoGDgEJBQ0DCwcPAIiEjIKKho6BiYWNg4uHj4BIRExCSkZOQUlFTUNLR09AyMTMwsrGzsHJxc3Dy8fPwCgkLCIqJi4hKSUtIysnLyCopKyiqqauoamlraOrp6+gaGRsYmpmbmFpZW1ja2dvYOjk7OLq5u7h6eXt4+vn7+AYFBwSGhYeERkVHRMbFx8QmJSckpqWnpGZlZ2Tm5efkFhUXFJaVl5RWVVdU1tXX1DY1NzS2tbe0dnV3dPb19/QODQ8Mjo2PjE5NT0zOzc/MLi0vLK6tr6xubW9s7u3v7B4dHxyenZ+cXl1fXN7d39w+PT88vr2/vH59f3z+/f/8AQeidAQugB/v//08cNJasKc1gn5V2/DYuRnl4b6NuZi/fB5rBdwoOBgAAoHfBS5dno1jasnE38S4SCAlHouFR+sApR7HWWSKL79yelz11fyCRR7EsFz9fbmwJdHlisY3PCME5NXs3Kz98rbXiSq34voXLg//GYC33KZRdK/122anZmj/nfEAkA48vdHx9tvTMaNBj3C0baGpX+xvvvOWM/jy20lEpfBZkTFe/sfcUIvJ9MfcvI/kozXWtsKiEdeUDbRfcWfuBK79hj4HlA5COwv74mzS/m4xOUwE/ze7cUzyqKeVrlpAmsXuBJjDEeQrwfVOZfMyye97mQQLVJ8q2TPAyNj+zegDMSqKDP7ivom5TXVLZVfKSGd2GAghmdV5JJS3FprF7GN4jpCLnO1OcDW7ffBKdKmQFwJpARnW8DYJQPbKNTPAAhBEMKLSz9B4sKl6uwtR6zxhlo8VsOwa4jMDfZbnESCOyz0+uiSHnSAda+I08+wMKCi6b6jWKTf93HZzNLoypKNPb7LMvUtQdrfNV0JMqImjoVdWzZn2cvkb4lGG49pIb1k6geb7cTImHB9NEat5slV/B29crtqFZTm+AmhDk6xK46gVNx6ATuhYxqxFjXQEuWqCljCySA7XalOP+1xW+BlS4/VsF906A8urOQHFrp3rLif6yaFrJ/McGxPE1HEYdM3Q5OVnns0fRJBwNkjo6bUNf93RREjShVtVq7gEfght83AQS2LgF2kGNMAbmKjJILImehCeONTWS1S3W+8oPBIQLcAkvxmYlYIa/oHY6GDPxWFBXWY852TTN0TnOLm0FNnqi5rejngS82z4FA+br79SezjpatCSEXnmIppCDfCgak42qZdQy2pyPgGGF9mkmhbDI5EareyQaAtaBh2Y7DTwvMvWSIeonp+mPZemEGLFpwFOgvCOGOqY54SXw848S8hrvvG4ijptga0Dfq/FFnj27p9VX0o1TvKOCeAOTOAoAkZ7ABCRIbrIlAFnHkXUNEb5eOnknAqSoTKnBw6ZkATDQT9hpvSLHLBZSzyZKDmDpp/NF135y+1wn+2myp1IW4gdcV//6DkDFmo9LSXMjVTet54Htq3mqOS5NCLjlxhr+IIrJIpSioJ1ck2XKYtRz94JF1G5KuuG2gjoMwBT8KGcCiYAUZFmHSQPA5LV4Okp+saZS3U8ASRLq5mXdF0UonD3RgFVzbmPW/0UkdPMrotgDsh7AKkVW5/ljKZTvYBgAQYilAQugB/v//08cNJasKc1gn5V2/DYuRnl4b6NuZi/fB5rBdwoO/v//H9gUPHjdHo0Mby+Yr0VP/fySdF+PrL+cPRpjNx////8PbAoevG6PRoa3F8zXoqd+fkm6r0fWX84ejbGbDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQaisAQuAAgCAQMAgoGDgEJBQ0DCwcPAIiEjIKKho6BiYWNg4uHj4BIRExCSkZOQUlFTUNLR09AyMTMwsrGzsHJxc3Dy8fPwCgkLCIqJi4hKSUtIysnLyCopKyiqqauoamlraOrp6+gaGRsYmpmbmFpZW1ja2dvYOjk7OLq5u7h6eXt4+vn7+AYFBwSGhYeERkVHRMbFx8QmJSckpqWnpGZlZ2Tm5efkFhUXFJaVl5RWVVdU1tXX1DY1NzS2tbe0dnV3dPb19/QODQ8Mjo2PjE5NT0zOzc/MLi0vLK6tr6xubW9s7u3v7B4dHxyenZ+cXl1fXN7d39w+PT88vr2/vH59f3z+/f/8AQci+AQtgnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg46Gx6LG4e6pnsWjutR1vEUWIzy8N5G3cxevg80g+8UHJ0Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAEGovwELYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBiMABC8ABJiC8AtG1g45yAXtJNRnr3N8agZdHJrj7O1CWr0E4VxlAYUyofXO0r8TYAlha3UNghi+gUvxQ6Qlre+o6g/D+FPbpa4id+p1heJue9ZfSf/7+fRsjYhqe/wZCnq7rfv0o7lYYx1ZbCWS7PH0yIvlX3HYQNTO+NflVgmT9k+agpA2dDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHIwQELwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYjDAQuAA50Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBiMYBC0D3fw1BzkcG9hHQG9NNbz0v0cZAOX4zQylXmOOn6JiVHZ0Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAEHIxgELQHIFBk/S576H5WocL90q/dBET/38knRfj6y/nD0aYzcfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYjHAQtAqAK4d+M4+TtdUzM2JxsLAmBSdUnw7bcmbaiEQzLGFCVn/9zRzOznOD4NzpN9s/BlqgCsIt3QSddNjWhKzrlBAQBBiPIBC8ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHI8wELwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYiHAgvAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABByJQCC0EAAAABAAEAAQEBAAEBAQAAAAEBAAEBAQAAAQEBAQEAAQEAAAEBAQAAAAAAAAEBAQABAAABAQEBAAEAAQEBAAABAQBB0LoDC0Awq2NFEDt3tVRkqqnIkX80kQkuJCdxAHrsFIIR2LxWGVdHqqAen4RuQZH4iW17HKo6yuD6zRPntsPrgk67T2kmAEGQuwMLQCm2NikM3bvky7oz4WLxMLtmU2T5ttGpMd34AKW+cDUlx3f+X+R816Hb0SZ4Ef2vB2vcfrsnvRZtzP7ehQIghywAQdDJAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkMoDC0CdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQygMLQJ0Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZDLAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0MsDC0CdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGQzAMLQJ0Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDMAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkM0DC0Awq2NFEDt3tVRkqqnIkX80kQkuJCdxAHrsFIIR2LxWGVdHqqAen4RuQZH4iW17HKo6yuD6zRPntsPrgk67T2kmAEHQzQMLQJK+OoR/12Fz+xE0J9Mru6WZIz5LMR+UnOzTn7vdnN8VScnYSxX93V1gW0SkpSnLYrnSfQwKh7w3/fBxMZ0KgyQAQZDOAwtAB0kUM5amm6+Kt6+Hcx1ryocgivBe7b0RfDofGnVN8wJyLUlMI64iolvhXVakAg/QJsnfU6LzL9xRlYmzFlenEABB0M4DC0AptjYpDN275Mu6M+Fi8TC7ZlNk+bbRqTHd+AClvnA1Jcd3/l/kfNeh29EmeBH9rwdr3H67J70Wbcz+3oUCIIcsAEGQzwMLQOcPaUEvaXDJC0tpJyE0QOLoWcSDa+a+MkGIsArtvKoSqb+uQCNdSA1XzC+rGDQZBfUQSYoLpLDTWpLSNbXrIS8AQdDPAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkNADC0CcC+gTjshQM7lWXtt8Vc59SlYVtri0AWDgFwICF+aCJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQ0AMLQFXhgtcRDJNxIzO+/3yUu6ZEFHTURDMwqkNJWSYNPzssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZDRAwtA8hv6AAWAjcppl7NoFNbF8BhEDa1xEiAO5lbYumUPKQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0NEDC0Cq7+0SiUjDaE+/qnJofwiNMRIICUei4VH6wClHsdZZIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGQ0gMLQKvxlMSIw88I1HMTjRQVsxkTAmzL/ZBOWEmIL99baOEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDSAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkNMDC0Cta60W9yKvybJipkoqeBGz9MdI4mSv7hmCn0Pjdz4nIKyTzvdgKMCsTGune4HVMzlnhGxEixjmaVXMF0RtA0YKAEHQ0wMLQN9iZ3ulk4pE3+r9KPUt1r961JsO0PVY2FjsdjRNPbAG0TbJvPTaGSufKfRWek6lofGu3lrg7jO1sqDdhCuBDBcAQZDUAwtAfdlGThgWUzafbcnUnhL3CrUJEMovp51lIw2ig4ltEQg5GZzD90rfsX+/c4qHAp894AqvjJIgIpumVPDvFUVoJgBB0NQDC0AeR0avCq9kV8EPPocueVDc9gQdiP9zpoZMpzA8tN0uC4CFfngyD0masfhK8H9t0Y/yewLGjog5S12hUltwLt0DAEGQ1QMLQJ9Vz3UiS7zgD+ZUwUW5OMJefZqSpYI5gH6j5PctBc4Vp5k3v73vKC1zB9YaPH4Jm1tTSq8TQS2YY2AF45GJ4SQAQdDVAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkNYDC0BV4YLXEQyTcSMzvv98lLumRBR01EQzMKpDSVkmDT87LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQ1gMLQJwL6BOOyFAzuVZe23xVzn1KVhW2uLQBYOAXAgIX5oImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZDXAwtAnAvoE47IUDO5Vl7bfFXOfUpWFba4tAFg4BcCAhfmgiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0NcDC0CdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGQ2AMLQFXhgtcRDJNxIzO+/3yUu6ZEFHTURDMwqkNJWSYNPzssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDYAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkNkDC0Cx4+hUJroa+RLOktwvy3FHNd+L/OBqsdzki53NlaFKJ4sfgRiuUPxcjJhDyzOEsksZYrXDE1/TTzqIyC+9SRkwAEHQ2QMLQNbb2tjxIDSEss0/GMkQ8DFJYKcntTBjQ+TfGvFHdNQTdPpXqCNASe8aEKvVAl2SKhAvppuCFbCDo64TDB0ROSUAQZDaAwtAdpAyG4Jvt4YUthlNK/WLQC3phdnQud9Tp9KCaRQgHgXH61J31Jy8DyTeFTTj/49tuUHPOPAs8r5Uv2Y8/+3AFQBB0NoDC0AptjYpDN275Mu6M+Fi8TC7ZlNk+bbRqTHd+AClvnA1Jcd3/l/kfNeh29EmeBH9rwdr3H67J70Wbcz+3oUCIIcsAEGQ2wMLQLhFZjTz4UsXBJvrmSSF+N91I9YOOpx6TT0bNO1ASCMDRdcFV7EeAVypBRjYtLRxLcSagqa+4sx8Mm5kjk/sIyYAQdDbAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkNwDC0CdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQ3AMLQJ0Nj8WNQ13TPQvH9SjreAosRnl4b6NuZi/fB5rBdwoOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZDdAwtAqu/tEolIw2hPv6pyaH8IjTESCAlHouFR+sApR7HWWSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0N0DC0Cq7+0SiUjDaE+/qnJofwiNMRIICUei4VH6wClHsdZZIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGQ3gMLQKrv7RKJSMNoT7+qcmh/CI0xEggJR6LhUfrAKUex1lkiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDeAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkN8DC0Awq2NFEDt3tVRkqqnIkX80kQkuJCdxAHrsFIIR2LxWGVdHqqAen4RuQZH4iW17HKo6yuD6zRPntsPrgk67T2kmAEHQ3wMLQJK+OoR/12Fz+xE0J9Mru6WZIz5LMR+UnOzTn7vdnN8VScnYSxX93V1gW0SkpSnLYrnSfQwKh7w3/fBxMZ0KgyQAQZDgAwtAQLRopYDlhIwCE8LgHU0WzdU395BXWJKmrWUSx/0AcS3VzzOM8939mTHpExLtZ3LHNo+hLRRSINzXCqgtXPe8HwBB0OADC0AeR0avCq9kV8EPPocueVDc9gQdiP9zpoZMpzA8tN0uC4CFfngyD0masfhK8H9t0Y/yewLGjog5S12hUltwLt0DAEGQ4QMLQGDtE5fnIrBygX8IQXA2QbV0/rz9Sl+RhegXgdaFkbkdnj3Ol/Mu2C42/kG9eDZokmhHOPeqoZ/kzg1fq71iQgEAQdDhAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkOIDC0CcC+gTjshQM7lWXtt8Vc59SlYVtri0AWDgFwICF+aCJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQ4gMLQFXhgtcRDJNxIzO+/3yUu6ZEFHTURDMwqkNJWSYNPzssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZDjAwtAVeGC1xEMk3EjM77/fJS7pkQUdNREMzCqQ0lZJg0/OywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0OMDC0CdDY/FjUNd0z0Lx/Uo63gKLEZ5eG+jbmYv3weawXcKDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGQ5AMLQJwL6BOOyFAzuVZe23xVzn1KVhW2uLQBYOAXAgIX5oImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDkAwtAnQ2PxY1DXdM9C8f1KOt4CixGeXhvo25mL98HmsF3Cg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkOUDC0Cta60W9yKvybJipkoqeBGz9MdI4mSv7hmCn0Pjdz4nIKyTzvdgKMCsTGune4HVMzlnhGxEixjmaVXMF0RtA0YKAEHQ5QMLQN9iZ3ulk4pE3+r9KPUt1r961JsO0PVY2FjsdjRNPbAG0TbJvPTaGSufKfRWek6lofGu3lrg7jO1sqDdhCuBDBcAQZDmAwtAyiM2iv51zQXuXKiT8leKjKhOcbeGnrJSBpOPXengUigO5OAUH0FBig0L/t0JaOJZfU3S9CMlLh2DS0HxXAn8CQBB0OYDC0AptjYpDN275Mu6M+Fi8TC7ZlNk+bbRqTHd+AClvnA1Jcd3/l/kfNeh29EmeBH9rwdr3H67J70Wbcz+3oUCIIcsAEGQ5wMLQKinrWL0QGRbfeQcp0uxSNX+2ubuEMMWOKv8TOlESZYaoGNFGVmc9w4aw5tNVex3/AEFN9KiBCMgxj8s/uDEggsAQdDnAwvgAiDxhspkS5aGpCNF5bfvpEC7SuiWeKl/gxi5srm2AhE22pJW896B3sBgx8Om6McEvn+7cNXJ+WbXQRhWg02XMMKjab7DaBa6W5RiUhDEETh/HKfd2n3uuikAqV0UjTuBvyyaP0LfuhtkXszqROq0C6h84/0USGZlzdKRAli5ZANK3fAmCLHfk+4kR1HFjdtCa4U3DwtDzxC7FkKAb0BOSUD7qvOsB+HPVYeu6+CA7IggoDejEdA+aoSVUToeSlqkSBYOxd9oRWbl68QMTClBaqvax2jSAtbQgorEPO2aRGhm/F0Bsg/NYlDRs92xqEApf0hkIio6tvV3rkPkYRN48P7IxtWIDod3+aprZx+mZAN5o96tzi7nh1hwG5qgY+V3E7LD2Bvu71QM99gk1VrRwz5dOjiyZlTx2sD+lLtzCuPh4ns/XwFxHGr/sWljv0MthLwgfRDf2v0gcMltSy8AAAAAQbD6Aws/AQAAAP8AAAAAAQABAAAAAAEAAAEA/wABAAEAAQAAAQAAAAEA/wD/AP8AAQABAAD/AAEAAQD/AAABAAEAAAABAEHw+gMLIPEJaUq0kulEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
|
|
var pq = 520;
|
|
var pr = 1864;
|
|
var pG1gen = 24392;
|
|
var pG1zero = 24488;
|
|
var pG1b = 3240;
|
|
var pG2gen = 24584;
|
|
var pG2zero = 24776;
|
|
var pG2b = 10440;
|
|
var pOneT = 24968;
|
|
var prePSize = 192;
|
|
var preQSize = 19776;
|
|
var n8q = 32;
|
|
var n8r = 32;
|
|
var q = "21888242871839275222246405745257275088696311157297823662689037894645226208583";
|
|
var r = "21888242871839275222246405745257275088548364400416034343698204186575808495617";
|
|
|
|
var bn128_wasm = {
|
|
code: code,
|
|
pq: pq,
|
|
pr: pr,
|
|
pG1gen: pG1gen,
|
|
pG1zero: pG1zero,
|
|
pG1b: pG1b,
|
|
pG2gen: pG2gen,
|
|
pG2zero: pG2zero,
|
|
pG2b: pG2b,
|
|
pOneT: pOneT,
|
|
prePSize: prePSize,
|
|
preQSize: preQSize,
|
|
n8q: n8q,
|
|
n8r: n8r,
|
|
q: q,
|
|
r: r
|
|
};
|
|
|
|
var code$1 = "AGFzbQEAAAABiQERYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AHf39/f39/fwBgCH9/f39/f39/AGAFf39/f38Bf2AHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38BfwIQAQNlbnYGbWVtb3J5AgDoBwO5ArcCAAECAQMDBAQFAAAGBwgFAgUFAAAFAAAAAAICAAEFCAkFBQgAAgABAgEDAwQEBQAABgcIBQIFBQAABQAAAAACAgABBQgJBQUIAAIFAAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAUABQAAAAAFBQUFBQoACwkKAAsJCAgDAAgIAgAACQUFAAgMCQICAQEABQUABQUAAAAAAwAIAgIJCAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAUABQAAAAAFBQUFBQoACwkKAAsJCAgFAwAICAIAAAkFBQUDAAgIAgAACQUFBQUJCQkJCQACAgEBAAUABQUAAgAAAwAIAgkIAAICAQEABQUABQUAAAAAAwAIAgIJCAACBQgJBQAAAAAAAAAAAAAFAAAABQAAAAAEDQ4PEAUHviSoAglpbnRxX2NvcHkAAAlpbnRxX3plcm8AAQhpbnRxX29uZQADC2ludHFfaXNaZXJvAAIHaW50cV9lcQAECGludHFfZ3RlAAUIaW50cV9hZGQABghpbnRxX3N1YgAHCGludHFfbXVsAAgLaW50cV9zcXVhcmUACQ5pbnRxX3NxdWFyZU9sZAAKCGludHFfZGl2AA0PaW50cV9pbnZlcnNlTW9kAA4IZjFtX2NvcHkAAAhmMW1femVybwABCmYxbV9pc1plcm8AAgZmMW1fZXEABAdmMW1fYWRkABAHZjFtX3N1YgARB2YxbV9uZWcAEg5mMW1faXNOZWdhdGl2ZQAZCWYxbV9pc09uZQAPCGYxbV9zaWduABoLZjFtX21SZWR1Y3QAEwdmMW1fbXVsABQKZjFtX3NxdWFyZQAVDWYxbV9zcXVhcmVPbGQAFhJmMW1fZnJvbU1vbnRnb21lcnkAGBBmMW1fdG9Nb250Z29tZXJ5ABcLZjFtX2ludmVyc2UAGwdmMW1fb25lABwIZjFtX2xvYWQAHQ9mMW1fdGltZXNTY2FsYXIAHgdmMW1fZXhwACIQZjFtX2JhdGNoSW52ZXJzZQAfCGYxbV9zcXJ0ACMMZjFtX2lzU3F1YXJlACQVZjFtX2JhdGNoVG9Nb250Z29tZXJ5ACAXZjFtX2JhdGNoRnJvbU1vbnRnb21lcnkAIQlpbnRyX2NvcHkAJQlpbnRyX3plcm8AJghpbnRyX29uZQAoC2ludHJfaXNaZXJvACcHaW50cl9lcQApCGludHJfZ3RlACoIaW50cl9hZGQAKwhpbnRyX3N1YgAsCGludHJfbXVsAC0LaW50cl9zcXVhcmUALg5pbnRyX3NxdWFyZU9sZAAvCGludHJfZGl2ADIPaW50cl9pbnZlcnNlTW9kADMIZnJtX2NvcHkAJQhmcm1femVybwAmCmZybV9pc1plcm8AJwZmcm1fZXEAKQdmcm1fYWRkADUHZnJtX3N1YgA2B2ZybV9uZWcANw5mcm1faXNOZWdhdGl2ZQA+CWZybV9pc09uZQA0CGZybV9zaWduAD8LZnJtX21SZWR1Y3QAOAdmcm1fbXVsADkKZnJtX3NxdWFyZQA6DWZybV9zcXVhcmVPbGQAOxJmcm1fZnJvbU1vbnRnb21lcnkAPRBmcm1fdG9Nb250Z29tZXJ5ADwLZnJtX2ludmVyc2UAQAdmcm1fb25lAEEIZnJtX2xvYWQAQg9mcm1fdGltZXNTY2FsYXIAQwdmcm1fZXhwAEcQZnJtX2JhdGNoSW52ZXJzZQBECGZybV9zcXJ0AEgMZnJtX2lzU3F1YXJlAEkVZnJtX2JhdGNoVG9Nb250Z29tZXJ5AEUXZnJtX2JhdGNoRnJvbU1vbnRnb21lcnkARgZmcl9hZGQANQZmcl9zdWIANgZmcl9uZWcANwZmcl9tdWwASglmcl9zcXVhcmUASwpmcl9pbnZlcnNlAEwNZnJfaXNOZWdhdGl2ZQBNB2ZyX2NvcHkAJQdmcl96ZXJvACYGZnJfb25lAEEJZnJfaXNaZXJvACcFZnJfZXEAKQxnMW1fbXVsdGlleHAAdhJnMW1fbXVsdGlleHBfY2h1bmsAdRJnMW1fbXVsdGlleHBBZmZpbmUAehhnMW1fbXVsdGlleHBBZmZpbmVfY2h1bmsAeQpnMW1faXNaZXJvAE8QZzFtX2lzWmVyb0FmZmluZQBOBmcxbV9lcQBXC2cxbV9lcU1peGVkAFYMZzFtX2VxQWZmaW5lAFUIZzFtX2NvcHkAUw5nMW1fY29weUFmZmluZQBSCGcxbV96ZXJvAFEOZzFtX3plcm9BZmZpbmUAUApnMW1fZG91YmxlAFkQZzFtX2RvdWJsZUFmZmluZQBYB2cxbV9hZGQAXAxnMW1fYWRkTWl4ZWQAWw1nMW1fYWRkQWZmaW5lAFoHZzFtX25lZwBeDWcxbV9uZWdBZmZpbmUAXQdnMW1fc3ViAGEMZzFtX3N1Yk1peGVkAGANZzFtX3N1YkFmZmluZQBfEmcxbV9mcm9tTW9udGdvbWVyeQBjGGcxbV9mcm9tTW9udGdvbWVyeUFmZmluZQBiEGcxbV90b01vbnRnb21lcnkAZRZnMW1fdG9Nb250Z29tZXJ5QWZmaW5lAGQPZzFtX3RpbWVzU2NhbGFyAHsVZzFtX3RpbWVzU2NhbGFyQWZmaW5lAHwNZzFtX25vcm1hbGl6ZQBoCmcxbV9MRU10b1UAagpnMW1fTEVNdG9DAGsKZzFtX1V0b0xFTQBsCmcxbV9DdG9MRU0AbQ9nMW1fYmF0Y2hMRU10b1UAbg9nMW1fYmF0Y2hMRU10b0MAbw9nMW1fYmF0Y2hVdG9MRU0AcA9nMW1fYmF0Y2hDdG9MRU0AcQxnMW1fdG9BZmZpbmUAZg5nMW1fdG9KYWNvYmlhbgBUEWcxbV9iYXRjaFRvQWZmaW5lAGcTZzFtX2JhdGNoVG9KYWNvYmlhbgByB2ZybV9mZnQAggEIZnJtX2lmZnQAgwEKZnJtX3Jhd2ZmdACAAQtmcm1fZmZ0Sm9pbgCEAQpmcm1fZmZ0TWl4AIUBDGZybV9mZnRGaW5hbACGAQhwb2xfemVybwCHAQ9wb2xfY29uc3RydWN0TEMAiAEMcWFwX2J1aWxkQUJDAIkBC3FhcF9qb2luQUJDAIoBCmYybV9pc1plcm8AiwEJZjJtX2lzT25lAIwBCGYybV96ZXJvAI0BB2YybV9vbmUAjgEIZjJtX2NvcHkAjwEHZjJtX211bACQAQhmMm1fbXVsMQCRAQpmMm1fc3F1YXJlAJIBB2YybV9hZGQAkwEHZjJtX3N1YgCUAQdmMm1fbmVnAJUBCGYybV9zaWduAJwBDWYybV9jb25qdWdhdGUAlgESZjJtX2Zyb21Nb250Z29tZXJ5AJgBEGYybV90b01vbnRnb21lcnkAlwEGZjJtX2VxAJkBC2YybV9pbnZlcnNlAJoBB2YybV9leHAAnwEPZjJtX3RpbWVzU2NhbGFyAJsBEGYybV9iYXRjaEludmVyc2UAngEIZjJtX3NxcnQAoAEMZjJtX2lzU3F1YXJlAKEBDmYybV9pc05lZ2F0aXZlAJ0BDGcybV9tdWx0aWV4cADKARJnMm1fbXVsdGlleHBfY2h1bmsAyQESZzJtX211bHRpZXhwQWZmaW5lAM4BGGcybV9tdWx0aWV4cEFmZmluZV9jaHVuawDNAQpnMm1faXNaZXJvAKMBEGcybV9pc1plcm9BZmZpbmUAogEGZzJtX2VxAKsBC2cybV9lcU1peGVkAKoBDGcybV9lcUFmZmluZQCpAQhnMm1fY29weQCnAQ5nMm1fY29weUFmZmluZQCmAQhnMm1femVybwClAQ5nMm1femVyb0FmZmluZQCkAQpnMm1fZG91YmxlAK0BEGcybV9kb3VibGVBZmZpbmUArAEHZzJtX2FkZACwAQxnMm1fYWRkTWl4ZWQArwENZzJtX2FkZEFmZmluZQCuAQdnMm1fbmVnALIBDWcybV9uZWdBZmZpbmUAsQEHZzJtX3N1YgC1AQxnMm1fc3ViTWl4ZWQAtAENZzJtX3N1YkFmZmluZQCzARJnMm1fZnJvbU1vbnRnb21lcnkAtwEYZzJtX2Zyb21Nb250Z29tZXJ5QWZmaW5lALYBEGcybV90b01vbnRnb21lcnkAuQEWZzJtX3RvTW9udGdvbWVyeUFmZmluZQC4AQ9nMm1fdGltZXNTY2FsYXIAzwEVZzJtX3RpbWVzU2NhbGFyQWZmaW5lANABDWcybV9ub3JtYWxpemUAvAEKZzJtX0xFTXRvVQC+AQpnMm1fTEVNdG9DAL8BCmcybV9VdG9MRU0AwAEKZzJtX0N0b0xFTQDBAQ9nMm1fYmF0Y2hMRU10b1UAwgEPZzJtX2JhdGNoTEVNdG9DAMMBD2cybV9iYXRjaFV0b0xFTQDEAQ9nMm1fYmF0Y2hDdG9MRU0AxQEMZzJtX3RvQWZmaW5lALoBDmcybV90b0phY29iaWFuAKgBEWcybV9iYXRjaFRvQWZmaW5lALsBE2cybV9iYXRjaFRvSmFjb2JpYW4AxgELZzFtX3RpbWVzRnIA0QEHZzFtX2ZmdADXAQhnMW1faWZmdADYAQpnMW1fcmF3ZmZ0ANUBC2cxbV9mZnRKb2luANkBCmcxbV9mZnRNaXgA2gEMZzFtX2ZmdEZpbmFsANsBC2cybV90aW1lc0ZyANwBB2cybV9mZnQA4gEIZzJtX2lmZnQA4wEKZzJtX3Jhd2ZmdADgAQtnMm1fZmZ0Sm9pbgDkAQpnMm1fZmZ0TWl4AOUBDGcybV9mZnRGaW5hbADmARFnMW1fdGltZXNGckFmZmluZQDnARFnMm1fdGltZXNGckFmZmluZQDoARFmcm1fYmF0Y2hBcHBseUtleQDpARFnMW1fYmF0Y2hBcHBseUtleQDqARZnMW1fYmF0Y2hBcHBseUtleU1peGVkAOsBEWcybV9iYXRjaEFwcGx5S2V5AOwBFmcybV9iYXRjaEFwcGx5S2V5TWl4ZWQA7QEKZjZtX2lzWmVybwDvAQlmNm1faXNPbmUA8AEIZjZtX3plcm8A8QEHZjZtX29uZQDyAQhmNm1fY29weQDzAQdmNm1fbXVsAPQBCmY2bV9zcXVhcmUA9QEHZjZtX2FkZAD2AQdmNm1fc3ViAPcBB2Y2bV9uZWcA+AEIZjZtX3NpZ24A+QESZjZtX2Zyb21Nb250Z29tZXJ5APsBEGY2bV90b01vbnRnb21lcnkA+gEGZjZtX2VxAPwBC2Y2bV9pbnZlcnNlAP0BB2Y2bV9leHAAgQIPZjZtX3RpbWVzU2NhbGFyAP4BEGY2bV9iYXRjaEludmVyc2UAgAIOZjZtX2lzTmVnYXRpdmUA/wEKZnRtX2lzWmVybwCDAglmdG1faXNPbmUAhAIIZnRtX3plcm8AhQIHZnRtX29uZQCGAghmdG1fY29weQCHAgdmdG1fbXVsAIgCCGZ0bV9tdWwxAIkCCmZ0bV9zcXVhcmUAigIHZnRtX2FkZACLAgdmdG1fc3ViAIwCB2Z0bV9uZWcAjQIIZnRtX3NpZ24AlAINZnRtX2Nvbmp1Z2F0ZQCOAhJmdG1fZnJvbU1vbnRnb21lcnkAkAIQZnRtX3RvTW9udGdvbWVyeQCPAgZmdG1fZXEAkQILZnRtX2ludmVyc2UAkgIHZnRtX2V4cACXAg9mdG1fdGltZXNTY2FsYXIAkwIQZnRtX2JhdGNoSW52ZXJzZQCWAghmdG1fc3FydACYAgxmdG1faXNTcXVhcmUAmQIOZnRtX2lzTmVnYXRpdmUAlQIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDAAngIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDEAnwIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDIAoAIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDMAoQIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDQAogIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDUAowIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDYApAIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDcApQIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDgApgIXYmxzMTIzODFfX2Zyb2Jlbml1c01hcDkApwITYmxzMTIzODFfcGFpcmluZ0VxMQCxAhNibHMxMjM4MV9wYWlyaW5nRXEyALICE2JsczEyMzgxX3BhaXJpbmdFcTMAswITYmxzMTIzODFfcGFpcmluZ0VxNAC0AhNibHMxMjM4MV9wYWlyaW5nRXE1ALUCEGJsczEyMzgxX3BhaXJpbmcAtgISYmxzMTIzODFfcHJlcGFyZUcxAKoCEmJsczEyMzgxX3ByZXBhcmVHMgCrAhNibHMxMjM4MV9taWxsZXJMb29wAKwCHGJsczEyMzgxX2ZpbmFsRXhwb25lbnRpYXRpb24AsAIfYmxzMTIzODFfZmluYWxFeHBvbmVudGlhdGlvbk9sZACtAhpibHMxMjM4MV9fY3ljbG90b21pY1NxdWFyZQCuAhpibHMxMjM4MV9fY3ljbG90b21pY0V4cF93MACvAghmNm1fbXVsMQCaAglmNm1fbXVsMDEAmwIKZnRtX211bDAxNACcAgrq/AS3Aj4AIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoCywAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoC00AIAApAyhQBEAgACkDIFAEQCAAKQMYUARAIAApAxBQBEAgACkDCFAEQCAAKQMAUA8FQQAPCwVBAA8LBUEADwsFQQAPCwVBAA8LQQAPCywAIABCATcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoC2sAIAApAyggASkDKFEEQCAAKQMgIAEpAyBRBEAgACkDGCABKQMYUQRAIAApAxAgASkDEFEEQCAAKQMIIAEpAwhRBEAgACkDACABKQMAUQ8FQQAPCwVBAA8LBUEADwsFQQAPCwVBAA8LQQAPC8UBACAAKQMoIAEpAyhUBEBBAA8FIAApAyggASkDKFYEQEEBDwUgACkDICABKQMgVARAQQAPBSAAKQMgIAEpAyBWBEBBAQ8FIAApAxggASkDGFQEQEEADwUgACkDGCABKQMYVgRAQQEPBSAAKQMQIAEpAxBUBEBBAA8FIAApAxAgASkDEFYEQEEBDwUgACkDCCABKQMIVARAQQAPBSAAKQMIIAEpAwhWBEBBAQ8FIAApAwAgASkDAFoPCwsLCwsLCwsLC0EADwu8AgEBfiAANQIAIAE1AgB8IQMgAiADPgIAIAA1AgQgATUCBHwgA0IgiHwhAyACIAM+AgQgADUCCCABNQIIfCADQiCIfCEDIAIgAz4CCCAANQIMIAE1Agx8IANCIIh8IQMgAiADPgIMIAA1AhAgATUCEHwgA0IgiHwhAyACIAM+AhAgADUCFCABNQIUfCADQiCIfCEDIAIgAz4CFCAANQIYIAE1Ahh8IANCIIh8IQMgAiADPgIYIAA1AhwgATUCHHwgA0IgiHwhAyACIAM+AhwgADUCICABNQIgfCADQiCIfCEDIAIgAz4CICAANQIkIAE1AiR8IANCIIh8IQMgAiADPgIkIAA1AiggATUCKHwgA0IgiHwhAyACIAM+AiggADUCLCABNQIsfCADQiCIfCEDIAIgAz4CLCADQiCIpwuQAwEBfiAANQIAIAE1AgB9IQMgAiADQv////8Pgz4CACAANQIEIAE1AgR9IANCIId8IQMgAiADQv////8Pgz4CBCAANQIIIAE1Agh9IANCIId8IQMgAiADQv////8Pgz4CCCAANQIMIAE1Agx9IANCIId8IQMgAiADQv////8Pgz4CDCAANQIQIAE1AhB9IANCIId8IQMgAiADQv////8Pgz4CECAANQIUIAE1AhR9IANCIId8IQMgAiADQv////8Pgz4CFCAANQIYIAE1Ahh9IANCIId8IQMgAiADQv////8Pgz4CGCAANQIcIAE1Ahx9IANCIId8IQMgAiADQv////8Pgz4CHCAANQIgIAE1AiB9IANCIId8IQMgAiADQv////8Pgz4CICAANQIkIAE1AiR9IANCIId8IQMgAiADQv////8Pgz4CJCAANQIoIAE1Aih9IANCIId8IQMgAiADQv////8Pgz4CKCAANQIsIAE1Aix9IANCIId8IQMgAiADQv////8Pgz4CLCADQiCHpwunIhoBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+IANC/////w+DIAA1AgAiBSABNQIAIgZ+fCEDIAQgA0IgiHwhBCACIAM+AgAgBEIgiCEDIARC/////w+DIAUgATUCBCIIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCBCIHIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIAUgATUCCCIKfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIJIAZ+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIAUgATUCDCIMfnwhBCADIARCIIh8IQMgBEL/////D4MgByAKfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCDCILIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgwgA0IgiCEEIANC/////w+DIAUgATUCECIOfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCECINIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIAUgATUCFCIQfnwhBCADIARCIIh8IQMgBEL/////D4MgByAOfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIPIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DIAUgATUCGCISfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCGCIRIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhggBEIgiCEDIARC/////w+DIAUgATUCHCIUfnwhBCADIARCIIh8IQMgBEL/////D4MgByASfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgESAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCHCITIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhwgA0IgiCEEIANC/////w+DIAUgATUCICIWfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCICIVIAZ+fCEDIAQgA0IgiHwhBCACIAM+AiAgBEIgiCEDIARC/////w+DIAUgATUCJCIYfnwhBCADIARCIIh8IQMgBEL/////D4MgByAWfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgCyASfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgESAMfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCJCIXIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AiQgA0IgiCEEIANC/////w+DIAUgATUCKCIafnwhAyAEIANCIIh8IQQgA0L/////D4MgByAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAWfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgFyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCKCIZIAZ+fCEDIAQgA0IgiHwhBCACIAM+AiggBEIgiCEDIARC/////w+DIAUgATUCLCIcfnwhBCADIARCIIh8IQMgBEL/////D4MgByAafnwhBCADIARCIIh8IQMgBEL/////D4MgCSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAWfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgDyASfnwhBCADIARCIIh8IQMgBEL/////D4MgESAQfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgFyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCLCIbIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AiwgA0IgiCEEIANC/////w+DIAcgHH58IQMgBCADQiCIfCEEIANC/////w+DIAkgGn58IQMgBCADQiCIfCEEIANC/////w+DIAsgGH58IQMgBCADQiCIfCEEIANC/////w+DIA0gFn58IQMgBCADQiCIfCEEIANC/////w+DIA8gFH58IQMgBCADQiCIfCEEIANC/////w+DIBEgEn58IQMgBCADQiCIfCEEIANC/////w+DIBMgEH58IQMgBCADQiCIfCEEIANC/////w+DIBUgDn58IQMgBCADQiCIfCEEIANC/////w+DIBcgDH58IQMgBCADQiCIfCEEIANC/////w+DIBkgCn58IQMgBCADQiCIfCEEIANC/////w+DIBsgCH58IQMgBCADQiCIfCEEIAIgAz4CMCAEQiCIIQMgBEL/////D4MgCSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAafnwhBCADIARCIIh8IQMgBEL/////D4MgDSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAWfnwhBCADIARCIIh8IQMgBEL/////D4MgESAUfnwhBCADIARCIIh8IQMgBEL/////D4MgEyASfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgFyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgGyAKfnwhBCADIARCIIh8IQMgAiAEPgI0IANCIIghBCADQv////8PgyALIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBp+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBZ+fCEDIAQgA0IgiHwhBCADQv////8PgyATIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAXIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyAbIAx+fCEDIAQgA0IgiHwhBCACIAM+AjggBEIgiCEDIARC/////w+DIA0gHH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gGn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgGH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgFn58IQQgAyAEQiCIfCEDIARC/////w+DIBUgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBcgEn58IQQgAyAEQiCIfCEDIARC/////w+DIBkgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBsgDn58IQQgAyAEQiCIfCEDIAIgBD4CPCADQiCIIQQgA0L/////D4MgDyAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAafnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAWfnwhAyAEIANCIIh8IQQgA0L/////D4MgFyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgGyAQfnwhAyAEIANCIIh8IQQgAiADPgJAIARCIIghAyAEQv////8PgyARIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIBp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAXIBZ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAbIBJ+fCEEIAMgBEIgiHwhAyACIAQ+AkQgA0IgiCEEIANC/////w+DIBMgHH58IQMgBCADQiCIfCEEIANC/////w+DIBUgGn58IQMgBCADQiCIfCEEIANC/////w+DIBcgGH58IQMgBCADQiCIfCEEIANC/////w+DIBkgFn58IQMgBCADQiCIfCEEIANC/////w+DIBsgFH58IQMgBCADQiCIfCEEIAIgAz4CSCAEQiCIIQMgBEL/////D4MgFSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgFyAafnwhBCADIARCIIh8IQMgBEL/////D4MgGSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgGyAWfnwhBCADIARCIIh8IQMgAiAEPgJMIANCIIghBCADQv////8PgyAXIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBp+fCEDIAQgA0IgiHwhBCADQv////8PgyAbIBh+fCEDIAQgA0IgiHwhBCACIAM+AlAgBEIgiCEDIARC/////w+DIBkgHH58IQQgAyAEQiCIfCEDIARC/////w+DIBsgGn58IQQgAyAEQiCIfCEDIAIgBD4CVCADQiCIIQQgA0L/////D4MgGyAcfnwhAyAEIANCIIh8IQQgAiADPgJYIARCIIghAyACIAQ+AlwLziAQAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5CACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgYgBn58IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIEIgd+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AggiCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAcgB358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCDCIJfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIQIgp+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAIIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhQiC358IQIgAyACQiCIfCEDIAJC/////w+DIAcgCn58IQIgAyACQiCIfCEDIAJC/////w+DIAggCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCGCIMfnwhAiADIAJCIIh8IQMgAkL/////D4MgByALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCSAJfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CGCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIcIg1+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIcIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AiAiDn58IQIgAyACQiCIfCEDIAJC/////w+DIAcgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAggDH58IQIgAyACQiCIfCEDIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCJCIPfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CJCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIoIhB+fCECIAMgAkIgiHwhAyACQv////8PgyAHIA9+fCECIAMgAkIgiHwhAyACQv////8PgyAIIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAJIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyALIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIoIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AiwiEX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgEH58IQIgAyACQiCIfCEDIAJC/////w+DIAggD358IQIgAyACQiCIfCEDIAJC/////w+DIAkgDn58IQIgAyACQiCIfCEDIAJC/////w+DIAogDX58IQIgAyACQiCIfCEDIAJC/////w+DIAsgDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgEX58IQIgAyACQiCIfCEDIAJC/////w+DIAggEH58IQIgAyACQiCIfCEDIAJC/////w+DIAkgD358IQIgAyACQiCIfCEDIAJC/////w+DIAogDn58IQIgAyACQiCIfCEDIAJC/////w+DIAsgDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAwgDH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAggEX58IQIgAyACQiCIfCEDIAJC/////w+DIAkgEH58IQIgAyACQiCIfCEDIAJC/////w+DIAogD358IQIgAyACQiCIfCEDIAJC/////w+DIAsgDn58IQIgAyACQiCIfCEDIAJC/////w+DIAwgDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAkgEX58IQIgAyACQiCIfCEDIAJC/////w+DIAogEH58IQIgAyACQiCIfCEDIAJC/////w+DIAsgD358IQIgAyACQiCIfCEDIAJC/////w+DIAwgDn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA0gDX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAogEX58IQIgAyACQiCIfCEDIAJC/////w+DIAsgEH58IQIgAyACQiCIfCEDIAJC/////w+DIAwgD358IQIgAyACQiCIfCEDIAJC/////w+DIA0gDn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAsgEX58IQIgAyACQiCIfCEDIAJC/////w+DIAwgEH58IQIgAyACQiCIfCEDIAJC/////w+DIA0gD358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA4gDn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AkAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAwgEX58IQIgAyACQiCIfCEDIAJC/////w+DIA0gEH58IQIgAyACQiCIfCEDIAJC/////w+DIA4gD358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AkQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIA0gEX58IQIgAyACQiCIfCEDIAJC/////w+DIA4gEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA8gD358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AkggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIA4gEX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AkwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIA8gEX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBAgEH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AlAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIBAgEX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AlQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBEgEX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AlggAyEEIARCIIghBSABIAQ+AlwLCgAgACAAIAEQCAuSAgEBfiAANQAAIAF+IQMgAiADPgAAIAA1AAQgAX4gA0IgiHwhAyACIAM+AAQgADUACCABfiADQiCIfCEDIAIgAz4ACCAANQAMIAF+IANCIIh8IQMgAiADPgAMIAA1ABAgAX4gA0IgiHwhAyACIAM+ABAgADUAFCABfiADQiCIfCEDIAIgAz4AFCAANQAYIAF+IANCIIh8IQMgAiADPgAYIAA1ABwgAX4gA0IgiHwhAyACIAM+ABwgADUAICABfiADQiCIfCEDIAIgAz4AICAANQAkIAF+IANCIIh8IQMgAiADPgAkIAA1ACggAX4gA0IgiHwhAyACIAM+ACggADUALCABfiADQiCIfCEDIAIgAz4ALAtOAgF+AX8gACEDIAM1AAAgAXwhAiADIAI+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IAR+fCEDIAAgAz4CUCAANQJUIANCIIh8QfgFNQIoIAR+fCEDIAAgAz4CVCAANQJYIANCIIh8QfgFNQIsIAR+fCEDIAAgAz4CWEGICiADQiCIPgIsQYgKIABBMGogARAQC6ZDMwF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkL9//P/DyEFIANC/////w+DIAA1AgAiBiABNQIAIgd+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhCCADQv////8Pg0EANQL4BSIJIAh+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIEIgt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIEIgogB358IQQgAyAEQiCIfCEDIARC/////w+DQQA1AvwFIg0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEMIARC/////w+DIAkgDH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AggiD358IQMgBCADQiCIfCEEIANC/////w+DIAogC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AggiDiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCgAYiESAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRAgA0L/////D4MgCSAQfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCDCITfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgDiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCDCISIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQKEBiIVIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhFCAEQv////8PgyAJIBR+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIQIhd+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyASIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIQIhYgB358IQMgBCADQiCIfCEEIANC/////w+DIA0gFH58IQMgBCADQiCIfCEEIANC/////w+DIBEgEH58IQMgBCADQiCIfCEEIANC/////w+DIBUgDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AogGIhkgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEYIANC/////w+DIAkgGH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhQiG358IQQgAyAEQiCIfCEDIARC/////w+DIAogF358IQQgAyAEQiCIfCEDIARC/////w+DIA4gE358IQQgAyAEQiCIfCEDIARC/////w+DIBIgD358IQQgAyAEQiCIfCEDIARC/////w+DIBYgC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhQiGiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgESAUfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCjAYiHSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIRwgBEL/////D4MgCSAcfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCGCIffnwhAyAEIANCIIh8IQQgA0L/////D4MgCiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgEiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCGCIeIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQKQBiIhIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhICADQv////8PgyAJICB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIcIiN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIcIiIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gIH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgHH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgGH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gEH58IQQgAyAEQiCIfCEDIARC/////w+DICEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1ApQGIiUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEkIARC/////w+DIAkgJH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AiAiJ358IQMgBCADQiCIfCEEIANC/////w+DIAogI358IQMgBCADQiCIfCEEIANC/////w+DIA4gH358IQMgBCADQiCIfCEEIANC/////w+DIBIgG358IQMgBCADQiCIfCEEIANC/////w+DIBYgF358IQMgBCADQiCIfCEEIANC/////w+DIBogE358IQMgBCADQiCIfCEEIANC/////w+DIB4gD358IQMgBCADQiCIfCEEIANC/////w+DICIgC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AiAiJiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCmAYiKSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DISggA0L/////D4MgCSAofnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCJCIrfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAnfnwhBCADIARCIIh8IQMgBEL/////D4MgDiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAffnwhBCADIARCIIh8IQMgBEL/////D4MgFiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgHiATfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgJiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCJCIqIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANICh+fCEEIAMgBEIgiHwhAyAEQv////8PgyARICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyApIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQKcBiItIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhLCAEQv////8PgyAJICx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIoIi9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKICt+fCEDIAQgA0IgiHwhBCADQv////8PgyAOICd+fCEDIAQgA0IgiHwhBCADQv////8PgyASICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAmIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAqIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIoIi4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gLH58IQMgBCADQiCIfCEEIANC/////w+DIBEgKH58IQMgBCADQiCIfCEEIANC/////w+DIBUgJH58IQMgBCADQiCIfCEEIANC/////w+DIBkgIH58IQMgBCADQiCIfCEEIANC/////w+DIB0gHH58IQMgBCADQiCIfCEEIANC/////w+DICEgGH58IQMgBCADQiCIfCEEIANC/////w+DICUgFH58IQMgBCADQiCIfCEEIANC/////w+DICkgEH58IQMgBCADQiCIfCEEIANC/////w+DIC0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AqAGIjEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEwIANC/////w+DIAkgMH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AiwiM358IQQgAyAEQiCIfCEDIARC/////w+DIAogL358IQQgAyAEQiCIfCEDIARC/////w+DIA4gK358IQQgAyAEQiCIfCEDIARC/////w+DIBIgJ358IQQgAyAEQiCIfCEDIARC/////w+DIBYgI358IQQgAyAEQiCIfCEDIARC/////w+DIBogH358IQQgAyAEQiCIfCEDIARC/////w+DIB4gG358IQQgAyAEQiCIfCEDIARC/////w+DICIgF358IQQgAyAEQiCIfCEDIARC/////w+DICYgE358IQQgAyAEQiCIfCEDIARC/////w+DICogD358IQQgAyAEQiCIfCEDIARC/////w+DIC4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AiwiMiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAwfnwhBCADIARCIIh8IQMgBEL/////D4MgESAsfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAofnwhBCADIARCIIh8IQMgBEL/////D4MgGSAkfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgISAcfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgKSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgLSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgMSAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCpAYiNSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DITQgBEL/////D4MgCSA0fnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAogM358IQMgBCADQiCIfCEEIANC/////w+DIA4gL358IQMgBCADQiCIfCEEIANC/////w+DIBIgK358IQMgBCADQiCIfCEEIANC/////w+DIBYgJ358IQMgBCADQiCIfCEEIANC/////w+DIBogI358IQMgBCADQiCIfCEEIANC/////w+DIB4gH358IQMgBCADQiCIfCEEIANC/////w+DICIgG358IQMgBCADQiCIfCEEIANC/////w+DICYgF358IQMgBCADQiCIfCEEIANC/////w+DICogE358IQMgBCADQiCIfCEEIANC/////w+DIC4gD358IQMgBCADQiCIfCEEIANC/////w+DIDIgC358IQMgBCADQiCIfCEEIANC/////w+DIA0gNH58IQMgBCADQiCIfCEEIANC/////w+DIBEgMH58IQMgBCADQiCIfCEEIANC/////w+DIBUgLH58IQMgBCADQiCIfCEEIANC/////w+DIBkgKH58IQMgBCADQiCIfCEEIANC/////w+DIB0gJH58IQMgBCADQiCIfCEEIANC/////w+DICEgIH58IQMgBCADQiCIfCEEIANC/////w+DICUgHH58IQMgBCADQiCIfCEEIANC/////w+DICkgGH58IQMgBCADQiCIfCEEIANC/////w+DIC0gFH58IQMgBCADQiCIfCEEIANC/////w+DIDEgEH58IQMgBCADQiCIfCEEIANC/////w+DIDUgDH58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgDiAzfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAvfnwhBCADIARCIIh8IQMgBEL/////D4MgFiArfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAnfnwhBCADIARCIIh8IQMgBEL/////D4MgHiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAffnwhBCADIARCIIh8IQMgBEL/////D4MgJiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgKiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgLiATfnwhBCADIARCIIh8IQMgBEL/////D4MgMiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgESA0fnwhBCADIARCIIh8IQMgBEL/////D4MgFSAwfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAsfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAofnwhBCADIARCIIh8IQMgBEL/////D4MgISAkfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgKSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgLSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgMSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgNSAQfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyASIDN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIC9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaICt+fCEDIAQgA0IgiHwhBCADQv////8PgyAeICd+fCEDIAQgA0IgiHwhBCADQv////8PgyAiICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAmIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAqIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAuIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAyIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIDR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIDB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdICx+fCEDIAQgA0IgiHwhBCADQv////8PgyAhICh+fCEDIAQgA0IgiHwhBCADQv////8PgyAlICR+fCEDIAQgA0IgiHwhBCADQv////8PgyApICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAtIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAxIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyA1IBR+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIBYgM358IQQgAyAEQiCIfCEDIARC/////w+DIBogL358IQQgAyAEQiCIfCEDIARC/////w+DIB4gK358IQQgAyAEQiCIfCEDIARC/////w+DICIgJ358IQQgAyAEQiCIfCEDIARC/////w+DICYgI358IQQgAyAEQiCIfCEDIARC/////w+DICogH358IQQgAyAEQiCIfCEDIARC/////w+DIC4gG358IQQgAyAEQiCIfCEDIARC/////w+DIDIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBkgNH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gMH58IQQgAyAEQiCIfCEDIARC/////w+DICEgLH58IQQgAyAEQiCIfCEDIARC/////w+DICUgKH58IQQgAyAEQiCIfCEDIARC/////w+DICkgJH58IQQgAyAEQiCIfCEDIARC/////w+DIC0gIH58IQQgAyAEQiCIfCEDIARC/////w+DIDEgHH58IQQgAyAEQiCIfCEDIARC/////w+DIDUgGH58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgGiAzfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAvfnwhAyAEIANCIIh8IQQgA0L/////D4MgIiArfnwhAyAEIANCIIh8IQQgA0L/////D4MgJiAnfnwhAyAEIANCIIh8IQQgA0L/////D4MgKiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgLiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgMiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSA0fnwhAyAEIANCIIh8IQQgA0L/////D4MgISAwfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAsfnwhAyAEIANCIIh8IQQgA0L/////D4MgKSAofnwhAyAEIANCIIh8IQQgA0L/////D4MgLSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgMSAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgNSAcfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAeIDN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIC9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAmICt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAqICd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAuICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAyIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIDR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIDB+fCEEIAMgBEIgiHwhAyAEQv////8PgyApICx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAtICh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAxICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyA1ICB+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DICIgM358IQMgBCADQiCIfCEEIANC/////w+DICYgL358IQMgBCADQiCIfCEEIANC/////w+DICogK358IQMgBCADQiCIfCEEIANC/////w+DIC4gJ358IQMgBCADQiCIfCEEIANC/////w+DIDIgI358IQMgBCADQiCIfCEEIANC/////w+DICUgNH58IQMgBCADQiCIfCEEIANC/////w+DICkgMH58IQMgBCADQiCIfCEEIANC/////w+DIC0gLH58IQMgBCADQiCIfCEEIANC/////w+DIDEgKH58IQMgBCADQiCIfCEEIANC/////w+DIDUgJH58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgBEL/////D4MgJiAzfnwhBCADIARCIIh8IQMgBEL/////D4MgKiAvfnwhBCADIARCIIh8IQMgBEL/////D4MgLiArfnwhBCADIARCIIh8IQMgBEL/////D4MgMiAnfnwhBCADIARCIIh8IQMgBEL/////D4MgKSA0fnwhBCADIARCIIh8IQMgBEL/////D4MgLSAwfnwhBCADIARCIIh8IQMgBEL/////D4MgMSAsfnwhBCADIARCIIh8IQMgBEL/////D4MgNSAofnwhBCADIARCIIh8IQMgAiAEPgIcIANCIIghBCADQv////8PgyAqIDN+fCEDIAQgA0IgiHwhBCADQv////8PgyAuIC9+fCEDIAQgA0IgiHwhBCADQv////8PgyAyICt+fCEDIAQgA0IgiHwhBCADQv////8PgyAtIDR+fCEDIAQgA0IgiHwhBCADQv////8PgyAxIDB+fCEDIAQgA0IgiHwhBCADQv////8PgyA1ICx+fCEDIAQgA0IgiHwhBCACIAM+AiAgBEIgiCEDIARC/////w+DIC4gM358IQQgAyAEQiCIfCEDIARC/////w+DIDIgL358IQQgAyAEQiCIfCEDIARC/////w+DIDEgNH58IQQgAyAEQiCIfCEDIARC/////w+DIDUgMH58IQQgAyAEQiCIfCEDIAIgBD4CJCADQiCIIQQgA0L/////D4MgMiAzfnwhAyAEIANCIIh8IQQgA0L/////D4MgNSA0fnwhAyAEIANCIIh8IQQgAiADPgIoIARCIIghAyACIAQ+AiwgA6cEQCACQfgFIAIQBxoFIAJB+AUQBQRAIAJB+AUgAhAHGgsLC81BKQF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5C/f/z/w8hBkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQggAkL/////D4NBADUC+AUiCSAIfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCBCIKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DQQA1AvwFIgwgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyELIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AggiDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKABiIPIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhDiACQv////8PgyAJIA5+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIMIhB+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUChAYiEiAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIREgAkL/////D4MgCSARfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCECITfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgEX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gDn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AogGIhUgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEUIAJC/////w+DIAkgFH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhQiFn58IQIgAyACQiCIfCEDIAJC/////w+DIAogE358IQIgAyACQiCIfCEDIAJC/////w+DIA0gEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBF+fCECIAMgAkIgiHwhAyACQv////8PgyASIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAVIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKMBiIYIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFyACQv////8PgyAJIBd+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIYIhl+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyANIBN+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAQIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCkAYiGyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRogAkL/////D4MgCSAafnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCHCIcfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgECATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgGn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gF358IQIgAyACQiCIfCEDIAJC/////w+DIBIgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBUgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBggDn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1ApQGIh4gCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEdIAJC/////w+DIAkgHX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AiAiH358IQIgAyACQiCIfCEDIAJC/////w+DIAogHH58IQIgAyACQiCIfCEDIAJC/////w+DIA0gGX58IQIgAyACQiCIfCEDIAJC/////w+DIBAgFn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBMgE358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBp+fCECIAMgAkIgiHwhAyACQv////8PgyASIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAbIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAeIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKYBiIhIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhICACQv////8PgyAJICB+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIkIiJ+fCECIAMgAkIgiHwhAyACQv////8PgyAKIB9+fCECIAMgAkIgiHwhAyACQv////8PgyANIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBl+fCECIAMgAkIgiHwhAyACQv////8PgyATIBZ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAafnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgISALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCnAYiJCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DISMgAkL/////D4MgCSAjfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCKCIlfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAifnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAffnwhAiADIAJCIIh8IQMgAkL/////D4MgECAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgFiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgI358IQIgAyACQiCIfCEDIAJC/////w+DIA8gIH58IQIgAyACQiCIfCEDIAJC/////w+DIBIgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBggF358IQIgAyACQiCIfCEDIAJC/////w+DIBsgFH58IQIgAyACQiCIfCEDIAJC/////w+DIB4gEX58IQIgAyACQiCIfCEDIAJC/////w+DICEgDn58IQIgAyACQiCIfCEDIAJC/////w+DICQgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AqAGIicgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEmIAJC/////w+DIAkgJn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AiwiKH58IQIgAyACQiCIfCEDIAJC/////w+DIAogJX58IQIgAyACQiCIfCEDIAJC/////w+DIA0gIn58IQIgAyACQiCIfCEDIAJC/////w+DIBAgH358IQIgAyACQiCIfCEDIAJC/////w+DIBMgHH58IQIgAyACQiCIfCEDIAJC/////w+DIBYgGX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMICZ+fCECIAMgAkIgiHwhAyACQv////8PgyAPICN+fCECIAMgAkIgiHwhAyACQv////8PgyASICB+fCECIAMgAkIgiHwhAyACQv////8PgyAVIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAeIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAhIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAkIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAnIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKkBiIqIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhKSACQv////8PgyAJICl+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiAofnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAifnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAffnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgGSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgKX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gJn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgI358IQIgAyACQiCIfCEDIAJC/////w+DIBUgIH58IQIgAyACQiCIfCEDIAJC/////w+DIBggHX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgGn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gF358IQIgAyACQiCIfCEDIAJC/////w+DICEgFH58IQIgAyACQiCIfCEDIAJC/////w+DICQgEX58IQIgAyACQiCIfCEDIAJC/////w+DICcgDn58IQIgAyACQiCIfCEDIAJC/////w+DICogC358IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDSAofnwhAiADIAJCIIh8IQMgAkL/////D4MgECAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAifnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAffnwhAiADIAJCIIh8IQMgAkL/////D4MgGSAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIA8gKX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgJn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgI358IQIgAyACQiCIfCEDIAJC/////w+DIBggIH58IQIgAyACQiCIfCEDIAJC/////w+DIBsgHX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gGn58IQIgAyACQiCIfCEDIAJC/////w+DICEgF358IQIgAyACQiCIfCEDIAJC/////w+DICQgFH58IQIgAyACQiCIfCEDIAJC/////w+DICcgEX58IQIgAyACQiCIfCEDIAJC/////w+DICogDn58IQIgAyACQiCIfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgECAofnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAifnwhAiADIAJCIIh8IQMgAkL/////D4MgGSAffnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgHCAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBIgKX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgJn58IQIgAyACQiCIfCEDIAJC/////w+DIBggI358IQIgAyACQiCIfCEDIAJC/////w+DIBsgIH58IQIgAyACQiCIfCEDIAJC/////w+DIB4gHX58IQIgAyACQiCIfCEDIAJC/////w+DICEgGn58IQIgAyACQiCIfCEDIAJC/////w+DICQgF358IQIgAyACQiCIfCEDIAJC/////w+DICcgFH58IQIgAyACQiCIfCEDIAJC/////w+DICogEX58IQIgAyACQiCIfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgEyAofnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgGSAifnwhAiADIAJCIIh8IQMgAkL/////D4MgHCAffnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBUgKX58IQIgAyACQiCIfCEDIAJC/////w+DIBggJn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgI358IQIgAyACQiCIfCEDIAJC/////w+DIB4gIH58IQIgAyACQiCIfCEDIAJC/////w+DICEgHX58IQIgAyACQiCIfCEDIAJC/////w+DICQgGn58IQIgAyACQiCIfCEDIAJC/////w+DICcgF358IQIgAyACQiCIfCEDIAJC/////w+DICogFH58IQIgAyACQiCIfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgFiAofnwhAiADIAJCIIh8IQMgAkL/////D4MgGSAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgHCAifnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgHyAffnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBggKX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgJn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gI358IQIgAyACQiCIfCEDIAJC/////w+DICEgIH58IQIgAyACQiCIfCEDIAJC/////w+DICQgHX58IQIgAyACQiCIfCEDIAJC/////w+DICcgGn58IQIgAyACQiCIfCEDIAJC/////w+DICogF358IQIgAyACQiCIfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgGSAofnwhAiADIAJCIIh8IQMgAkL/////D4MgHCAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgHyAifnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBsgKX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gJn58IQIgAyACQiCIfCEDIAJC/////w+DICEgI358IQIgAyACQiCIfCEDIAJC/////w+DICQgIH58IQIgAyACQiCIfCEDIAJC/////w+DICcgHX58IQIgAyACQiCIfCEDIAJC/////w+DICogGn58IQIgAyACQiCIfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgHCAofnwhAiADIAJCIIh8IQMgAkL/////D4MgHyAlfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgIiAifnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIB4gKX58IQIgAyACQiCIfCEDIAJC/////w+DICEgJn58IQIgAyACQiCIfCEDIAJC/////w+DICQgI358IQIgAyACQiCIfCEDIAJC/////w+DICcgIH58IQIgAyACQiCIfCEDIAJC/////w+DICogHX58IQIgAyACQiCIfCEDIAEgAj4CGCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgHyAofnwhAiADIAJCIIh8IQMgAkL/////D4MgIiAlfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DICEgKX58IQIgAyACQiCIfCEDIAJC/////w+DICQgJn58IQIgAyACQiCIfCEDIAJC/////w+DICcgI358IQIgAyACQiCIfCEDIAJC/////w+DICogIH58IQIgAyACQiCIfCEDIAEgAj4CHCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgIiAofnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgJSAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DICQgKX58IQIgAyACQiCIfCEDIAJC/////w+DICcgJn58IQIgAyACQiCIfCEDIAJC/////w+DICogI358IQIgAyACQiCIfCEDIAEgAj4CICADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgJSAofnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DICcgKX58IQIgAyACQiCIfCEDIAJC/////w+DICogJn58IQIgAyACQiCIfCEDIAEgAj4CJCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgKCAofnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DICogKX58IQIgAyACQiCIfCEDIAEgAj4CKCADIQQgBEIgiCEFIAEgBD4CLCAFpwRAIAFB+AUgARAHGgUgAUH4BRAFBEAgAUH4BSABEAcaCwsLCgAgACAAIAEQFAsLACAAQdgGIAEQFAsVACAAQYgTEABBuBMQAUGIEyABEBMLEQAgAEHoExAYQegTQZgIEAULJAAgABACBEBBAA8LIABBmBQQGEGYFEGYCBAFBEBBfw8LQQEPCxcAIAAgARAYIAFB+AUgARAOIAEgARAXCwkAQYgHIAAQAAvLAQQBfwF/AX8BfyACEAFBMCEFIAAhAwJAA0AgBSABSw0BIAVBMEYEQEHIFBAcBUHIFEHYBkHIFBAUCyADQcgUQfgUEBQgAkH4FCACEBAgA0EwaiEDIAVBMGohBQwACwsgAUEwcCEEIARFBEAPC0H4FBABQQAhBgJAA0AgBiAERg0BIAYgAy0AADoA+BQgA0EBaiEDIAZBAWohBgwACwsgBUEwRgRAQcgUEBwFQcgUQdgGQcgUEBQLQfgUQcgUQfgUEBQgAkH4FCACEBALHAAgASACQagVEB1BqBVBqBUQFyAAQagVIAMQFAv4AQQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBMGxqNgIAIAUQHCAAIQYgBUEwaiEFQQAhCAJAA0AgCCACRg0BIAYQAgRAIAVBMGsgBRAABSAGIAVBMGsgBRAUCyAGIAFqIQYgBUEwaiEFIAhBAWohCAwACwsgBiABayEGIAVBMGshBSADIAJBAWsgBGxqIQcgBSAFEBsCQANAIAhFDQEgBhACBEAgBSAFQTBrEAAgBxABBSAFQTBrQdgVEAAgBSAGIAVBMGsQFCAFQdgVIAcQFAsgBiABayEGIAcgBGshByAFQTBrIQUgCEEBayEIDAALC0EAIAU2AgALPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQFyAEQTBqIQQgBUEwaiEFIANBAWohAwwACwsLPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQGCAEQTBqIQQgBUEwaiEFIANBAWohAwwACwsLsgICAX8BfyACRQRAIAMQHA8LIABBiBYQACADEBwgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxAVIAVBgAFPBEAgBUGAAWshBSADQYgWIAMQFAsgAyADEBUgBUHAAE8EQCAFQcAAayEFIANBiBYgAxAUCyADIAMQFSAFQSBPBEAgBUEgayEFIANBiBYgAxAUCyADIAMQFSAFQRBPBEAgBUEQayEFIANBiBYgAxAUCyADIAMQFSAFQQhPBEAgBUEIayEFIANBiBYgAxAUCyADIAMQFSAFQQRPBEAgBUEEayEFIANBiBYgAxAUCyADIAMQFSAFQQJPBEAgBUECayEFIANBiBYgAxAUCyADIAMQFSAFQQFPBEAgBUEBayEFIANBiBYgAxAUCyAERQ0BDAALCwveAQMBfwF/AX8gABACBEAgARABDwtBASECQagJQbgWEAAgAEH4CEEwQegWECIgAEHYCUEwQZgXECICQANAQegWQYgHEAQNAUHoFkHIFxAVQQEhAwJAA0BByBdBiAcQBA0BQcgXQcgXEBUgA0EBaiEDDAALC0G4FkH4FxAAIAIgA2tBAWshBAJAA0AgBEUNAUH4F0H4FxAVIARBAWshBAwACwsgAyECQfgXQbgWEBVB6BZBuBZB6BYQFEGYF0H4F0GYFxAUDAALC0GYFxAZBEBBmBcgARASBUGYFyABEAALCyAAIAAQAgRAQQEPCyAAQegHQTBBqBgQIkGoGEGIBxAECyoAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGAseACAAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxgLMwAgACkDGFAEQCAAKQMQUARAIAApAwhQBEAgACkDAFAPBUEADwsFQQAPCwVBAA8LQQAPCx4AIABCATcDACAAQgA3AwggAEIANwMQIABCADcDGAtHACAAKQMYIAEpAxhRBEAgACkDECABKQMQUQRAIAApAwggASkDCFEEQCAAKQMAIAEpAwBRDwVBAA8LBUEADwsFQQAPC0EADwt9ACAAKQMYIAEpAxhUBEBBAA8FIAApAxggASkDGFYEQEEBDwUgACkDECABKQMQVARAQQAPBSAAKQMQIAEpAxBWBEBBAQ8FIAApAwggASkDCFQEQEEADwUgACkDCCABKQMIVgRAQQEPBSAAKQMAIAEpAwBaDwsLCwsLC0EADwvUAQEBfiAANQIAIAE1AgB8IQMgAiADPgIAIAA1AgQgATUCBHwgA0IgiHwhAyACIAM+AgQgADUCCCABNQIIfCADQiCIfCEDIAIgAz4CCCAANQIMIAE1Agx8IANCIIh8IQMgAiADPgIMIAA1AhAgATUCEHwgA0IgiHwhAyACIAM+AhAgADUCFCABNQIUfCADQiCIfCEDIAIgAz4CFCAANQIYIAE1Ahh8IANCIIh8IQMgAiADPgIYIAA1AhwgATUCHHwgA0IgiHwhAyACIAM+AhwgA0IgiKcLjAIBAX4gADUCACABNQIAfSEDIAIgA0L/////D4M+AgAgADUCBCABNQIEfSADQiCHfCEDIAIgA0L/////D4M+AgQgADUCCCABNQIIfSADQiCHfCEDIAIgA0L/////D4M+AgggADUCDCABNQIMfSADQiCHfCEDIAIgA0L/////D4M+AgwgADUCECABNQIQfSADQiCHfCEDIAIgA0L/////D4M+AhAgADUCFCABNQIUfSADQiCHfCEDIAIgA0L/////D4M+AhQgADUCGCABNQIYfSADQiCHfCEDIAIgA0L/////D4M+AhggADUCHCABNQIcfSADQiCHfCEDIAIgA0L/////D4M+AhwgA0Igh6cLjxASAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+IANC/////w+DIAA1AgAiBSABNQIAIgZ+fCEDIAQgA0IgiHwhBCACIAM+AgAgBEIgiCEDIARC/////w+DIAUgATUCBCIIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCBCIHIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIAUgATUCCCIKfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIJIAZ+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIAUgATUCDCIMfnwhBCADIARCIIh8IQMgBEL/////D4MgByAKfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCDCILIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgwgA0IgiCEEIANC/////w+DIAUgATUCECIOfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCECINIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIAUgATUCFCIQfnwhBCADIARCIIh8IQMgBEL/////D4MgByAOfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIPIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DIAUgATUCGCISfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCGCIRIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhggBEIgiCEDIARC/////w+DIAUgATUCHCIUfnwhBCADIARCIIh8IQMgBEL/////D4MgByASfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgESAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCHCITIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhwgA0IgiCEEIANC/////w+DIAcgFH58IQMgBCADQiCIfCEEIANC/////w+DIAkgEn58IQMgBCADQiCIfCEEIANC/////w+DIAsgEH58IQMgBCADQiCIfCEEIANC/////w+DIA0gDn58IQMgBCADQiCIfCEEIANC/////w+DIA8gDH58IQMgBCADQiCIfCEEIANC/////w+DIBEgCn58IQMgBCADQiCIfCEEIANC/////w+DIBMgCH58IQMgBCADQiCIfCEEIAIgAz4CICAEQiCIIQMgBEL/////D4MgCSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgCyASfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgESAMfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAKfnwhBCADIARCIIh8IQMgAiAEPgIkIANCIIghBCADQv////8PgyALIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyARIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAx+fCEDIAQgA0IgiHwhBCACIAM+AiggBEIgiCEDIARC/////w+DIA0gFH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gEn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgDn58IQQgAyAEQiCIfCEDIAIgBD4CLCADQiCIIQQgA0L/////D4MgDyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESASfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAQfnwhAyAEIANCIIh8IQQgAiADPgIwIARCIIghAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIBJ+fCEEIAMgBEIgiHwhAyACIAQ+AjQgA0IgiCEEIANC/////w+DIBMgFH58IQMgBCADQiCIfCEEIAIgAz4COCAEQiCIIQMgAiAEPgI8C4wSDAF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiBiAGfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgQiB358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCCCIIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIMIgl+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhAiCn58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAggCH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCFCILfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIYIgx+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAJIAl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIYIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhwiDX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAggC358IQIgAyACQiCIfCEDIAJC/////w+DIAkgCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAggDH58IQIgAyACQiCIfCEDIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAggDX58IQIgAyACQiCIfCEDIAJC/////w+DIAkgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAogC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAkgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAogDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAsgC358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAogDX58IQIgAyACQiCIfCEDIAJC/////w+DIAsgDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAsgDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAwgDH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjAgAyEE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iHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIEIgt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIEIgogB358IQQgAyAEQiCIfCEDIARC/////w+DQQA1ArwcIg0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEMIARC/////w+DIAkgDH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AggiD358IQMgBCADQiCIfCEEIANC/////w+DIAogC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AggiDiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCwBwiESAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRAgA0L/////D4MgCSAQfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCDCITfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgDiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCDCISIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQLEHCIVIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhFCAEQv////8PgyAJIBR+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIQIhd+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyASIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIQIhYgB358IQMgBCADQiCIfCEEIANC/////w+DIA0gFH58IQMgBCADQiCIfCEEIANC/////w+DIBEgEH58IQMgBCADQiCIfCEEIANC/////w+DIBUgDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AsgcIhkgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEYIANC/////w+DIAkgGH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhQiG358IQQgAyAEQiCIfCEDIARC/////w+DIAogF358IQQgAyAEQiCIfCEDIARC/////w+DIA4gE358IQQgAyAEQiCIfCEDIARC/////w+DIBIgD358IQQgAyAEQiCIfCEDIARC/////w+DIBYgC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhQiGiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgESAUfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCzBwiHSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIRwgBEL/////D4MgCSAcfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCGCIffnwhAyAEIANCIIh8IQQgA0L/////D4MgCiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgEiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCGCIeIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQLQHCIhIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhICADQv////8PgyAJICB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIcIiN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIcIiIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gIH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgHH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgGH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gEH58IQQgAyAEQiCIfCEDIARC/////w+DICEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AtQcIiUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEkIARC/////w+DIAkgJH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAKICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyASIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyANICR+fCEDIAQgA0IgiHwhBCADQv////8PgyARICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIAx+fCEDIAQgA0IgiHwhBCACIAM+AgAgBEIgiCEDIARC/////w+DIA4gI358IQQgAyAEQiCIfCEDIARC/////w+DIBIgH358IQQgAyAEQiCIfCEDIARC/////w+DIBYgG358IQQgAyAEQiCIfCEDIARC/////w+DIBogF358IQQgAyAEQiCIfCEDIARC/////w+DIB4gE358IQQgAyAEQiCIfCEDIARC/////w+DICIgD358IQQgAyAEQiCIfCEDIARC/////w+DIBEgJH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgIH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgHH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gGH58IQQgAyAEQiCIfCEDIARC/////w+DICEgFH58IQQgAyAEQiCIfCEDIARC/////w+DICUgEH58IQQgAyAEQiCIfCEDIAIgBD4CBCADQiCIIQQgA0L/////D4MgEiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgGiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgIiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAUfnwhAyAEIANCIIh8IQQgAiADPgIIIARCIIghAyAEQv////8PgyAWICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIBh+fCEEIAMgBEIgiHwhAyACIAQ+AgwgA0IgiCEEIANC/////w+DIBogI358IQMgBCADQiCIfCEEIANC/////w+DIB4gH358IQMgBCADQiCIfCEEIANC/////w+DICIgG358IQMgBCADQiCIfCEEIANC/////w+DIB0gJH58IQMgBCADQiCIfCEEIANC/////w+DICEgIH58IQMgBCADQiCIfCEEIANC/////w+DICUgHH58IQMgBCADQiCIfCEEIAIgAz4CECAEQiCIIQMgBEL/////D4MgHiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAffnwhBCADIARCIIh8IQMgBEL/////D4MgISAkfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAgfnwhBCADIARCIIh8IQMgAiAEPgIUIANCIIghBCADQv////8PgyAiICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAlICR+fCEDIAQgA0IgiHwhBCACIAM+AhggBEIgiCEDIAIgBD4CHCADpwRAIAJBuBwgAhAsGgUgAkG4HBAqBEAgAkG4HCACECwaCwsLuyEdAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkL/////DyEGQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgADUCACIHIAd+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhCCACQv////8Pg0EANQK4HCIJIAh+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIEIgp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4NBADUCvBwiDCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQsgAkL/////D4MgCSALfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCCCINfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCiAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AsAcIg8gCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEOIAJC/////w+DIAkgDn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AgwiEH58IQIgAyACQiCIfCEDIAJC/////w+DIAogDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAPIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLEHCISIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhESACQv////8PgyAJIBF+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIQIhN+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyANIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCyBwiFSAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRQgAkL/////D4MgCSAUfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCFCIWfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiATfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgFH58IQIgAyACQiCIfCEDIAJC/////w+DIA8gEX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgDn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AswcIhggCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEXIAJC/////w+DIAkgF358IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhgiGX58IQIgAyACQiCIfCEDIAJC/////w+DIAogFn58IQIgAyACQiCIfCEDIAJC/////w+DIA0gE358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBAgEH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBR+fCECIAMgAkIgiHwhAyACQv////8PgyASIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAVIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAYIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLQHCIbIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhGiACQv////8PgyAJIBp+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIcIhx+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBl+fCECIAMgAkIgiHwhAyACQv////8PgyANIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBN+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAafnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSARfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC1BwiHiAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIR0gAkL/////D4MgCSAdfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAogHH58IQIgAyACQiCIfCEDIAJC/////w+DIA0gGX58IQIgAyACQiCIfCEDIAJC/////w+DIBAgFn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBMgE358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBp+fCECIAMgAkIgiHwhAyACQv////8PgyASIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAbIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAeIAt+fCECIAMgAkIgiHwhAyABIAI+AgAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIA0gHH58IQIgAyACQiCIfCEDIAJC/////w+DIBAgGX58IQIgAyACQiCIfCEDIAJC/////w+DIBMgFn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAPIB1+fCECIAMgAkIgiHwhAyACQv////8PgyASIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAeIA5+fCECIAMgAkIgiHwhAyABIAI+AgQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIBAgHH58IQIgAyACQiCIfCEDIAJC/////w+DIBMgGX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBYgFn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyASIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAeIBF+fCECIAMgAkIgiHwhAyABIAI+AgggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIBMgHH58IQIgAyACQiCIfCEDIAJC/////w+DIBYgGX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAVIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAeIBR+fCECIAMgAkIgiHwhAyABIAI+AgwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIBYgHH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBkgGX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAYIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAeIBd+fCECIAMgAkIgiHwhAyABIAI+AhAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIBkgHH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAbIB1+fCECIAMgAkIgiHwhAyACQv////8PgyAeIBp+fCECIAMgAkIgiHwhAyABIAI+AhQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBwgHH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAeIB1+fCECIAMgAkIgiHwhAyABIAI+AhggAyEEIARCIIghBSABIAQ+AhwgBacEQCABQbgcIAEQLBoFIAFBuBwQKgRAIAFBuBwgARAsGgsLCwoAIAAgACABEDkLCwAgAEH4HCABEDkLFQAgAEGYIxAlQbgjECZBmCMgARA4CxEAIABB2CMQPUHYI0H4HRAqCyQAIAAQJwRAQQAPCyAAQfgjED1B+CNB+B0QKgRAQX8PC0EBDwsXACAAIAEQPSABQbgcIAEQMyABIAEQPAsJAEGYHSAAECULywEEAX8BfwF/AX8gAhAmQSAhBSAAIQMCQANAIAUgAUsNASAFQSBGBEBBmCQQQQVBmCRB+BxBmCQQOQsgA0GYJEG4JBA5IAJBuCQgAhA1IANBIGohAyAFQSBqIQUMAAsLIAFBIHAhBCAERQRADwtBuCQQJkEAIQYCQANAIAYgBEYNASAGIAMtAAA6ALgkIANBAWohAyAGQQFqIQYMAAsLIAVBIEYEQEGYJBBBBUGYJEH4HEGYJBA5C0G4JEGYJEG4JBA5IAJBuCQgAhA1CxwAIAEgAkHYJBBCQdgkQdgkEDwgAEHYJCADEDkL+AEEAX8BfwF/AX9BACgCACEFQQAgBSACQQFqQSBsajYCACAFEEEgACEGIAVBIGohBUEAIQgCQANAIAggAkYNASAGECcEQCAFQSBrIAUQJQUgBiAFQSBrIAUQOQsgBiABaiEGIAVBIGohBSAIQQFqIQgMAAsLIAYgAWshBiAFQSBrIQUgAyACQQFrIARsaiEHIAUgBRBAAkADQCAIRQ0BIAYQJwRAIAUgBUEgaxAlIAcQJgUgBUEga0H4JBAlIAUgBiAFQSBrEDkgBUH4JCAHEDkLIAYgAWshBiAHIARrIQcgBUEgayEFIAhBAWshCAwACwtBACAFNgIACz4DAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFEDwgBEEgaiEEIAVBIGohBSADQQFqIQMMAAsLCz4DAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFED0gBEEgaiEEIAVBIGohBSADQQFqIQMMAAsLC7ICAgF/AX8gAkUEQCADEEEPCyAAQZglECUgAxBBIAIhBAJAA0AgBEEBayEEIAEgBGotAAAhBSADIAMQOiAFQYABTwRAIAVBgAFrIQUgA0GYJSADEDkLIAMgAxA6IAVBwABPBEAgBUHAAGshBSADQZglIAMQOQsgAyADEDogBUEgTwRAIAVBIGshBSADQZglIAMQOQsgAyADEDogBUEQTwRAIAVBEGshBSADQZglIAMQOQsgAyADEDogBUEITwRAIAVBCGshBSADQZglIAMQOQsgAyADEDogBUEETwRAIAVBBGshBSADQZglIAMQOQsgAyADEDogBUECTwRAIAVBAmshBSADQZglIAMQOQsgAyADEDogBUEBTwRAIAVBAWshBSADQZglIAMQOQsgBEUNAQwACwsL3gEDAX8BfwF/IAAQJwRAIAEQJg8LQSAhAkHYHkG4JRAlIABBuB5BIEHYJRBHIABB+B5BIEH4JRBHAkADQEHYJUGYHRApDQFB2CVBmCYQOkEBIQMCQANAQZgmQZgdECkNAUGYJkGYJhA6IANBAWohAwwACwtBuCVBuCYQJSACIANrQQFrIQQCQANAIARFDQFBuCZBuCYQOiAEQQFrIQQMAAsLIAMhAkG4JkG4JRA6QdglQbglQdglEDlB+CVBuCZB+CUQOQwACwtB+CUQPgRAQfglIAEQNwVB+CUgARAlCwsgACAAECcEQEEBDwsgAEHYHUEgQdgmEEdB2CZBmB0QKQsVACAAIAFB+CYQOUH4JkH4HCACEDkLCgAgACAAIAEQSgsLACAAQbgcIAEQMwsJACAAQfgdECoLDgAgABACIABBMGoQAnELCgAgAEHgAGoQAgsNACAAEAEgAEEwahABCxUAIAAQASAAQTBqEBwgAEHgAGoQAQt6ACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWAu6AQAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYIAEgACkDIDcDICABIAApAyg3AyggASAAKQMwNwMwIAEgACkDODcDOCABIAApA0A3A0AgASAAKQNINwNIIAEgACkDUDcDUCABIAApA1g3A1ggASAAKQNgNwNgIAEgACkDaDcDaCABIAApA3A3A3AgASAAKQN4NwN4IAEgACkDgAE3A4ABIAEgACkDiAE3A4gBCxwAIAFB4ABqEBwgAEEw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EJABQcjxAEGo8gAQmQEEQEEADwtBAQ8LEQAgABCLASAAQeAAahCLAXELCwAgAEHAAWoQiwELEAAgABCNASAAQeAAahCNAQsZACAAEI0BIABB4ABqEI4BIABBwAFqEI0BC4ICACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWCABIAApA2A3A2AgASAAKQNoNwNoIAEgACkDcDcDcCABIAApA3g3A3ggASAAKQOAATcDgAEgASAAKQOIATcDiAEgASAAKQOQATcDkAEgASAAKQOYATcDmAEgASAAKQOgATcDoAEgASAAKQOoATcDqAEgASAAKQOwATcDsAEgASAAKQO4ATcDuAELkgMAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoIAEgACkDMDcDMCABIAApAzg3AzggASAAKQNANwNAIAEgACkDSDcDSCABIAApA1A3A1AgASAAKQNYNwNYIAEgACkDYDcDYCABIAApA2g3A2ggASAAKQNwNwNwIAEgACkDeDcDeCABIAApA4ABNwOAASABIAApA4gBNwOIASABIAApA5ABNwOQASABIAApA5gBNwOYASABIAApA6ABNwOgASABIAApA6gBNwOoASABIAApA7ABNwOwASABIAApA7gBNwO4ASABIAApA8ABNwPAASABIAApA8gBNwPIASABIAApA9ABNwPQASABIAApA9gBNwPYASABIAApA+ABNwPgASABIAApA+gBNwPoASABIAApA/ABNwPwASABIAApA/gBNwP4ASABIAApA4ACNwOAAiABIAApA4gCNwOIAiABIAApA5ACNwOQAiABIAApA5gCNwOYAgshACABQcABahCOASAAQeAAaiABQeAAahCPASAAIAEQjwELHAEBfyAAIAEQmQEgAEHgAGogAUHgAGoQmQFxDwuLAQEBfyAAQcABaiECIAAQowEEQCABEKIBDwsgARCiAQRAQQAPCyACEIwBBEAgACABEKkBDwsgAkHo8wAQkgEgAUHo8wBByPQAEJAB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BEAgASACEKcBDwsgARCjAQRAIAAgAhCnAQ8LIAMQjAEEQCABIAAgAhCvAQ8LIAQQjAEEQCAAIAEgAhCvAQ8LIANBqJkBEJIBIARBiJoBEJIBIABBiJoBQeiaARCQASABQaiZAUHImwEQkAEgA0GomQFBqJwBEJABIARBiJoBQYidARCQASAAQeAAakGInQFB6J0BEJABIAFB4ABqQaicAUHIngEQkAFB6JoBQcibARCZAQRAQeidAUHIngEQmQEEQCAAIAIQrQEPCwtByJsBQeiaAUGonwEQlAFByJ4BQeidAUGIoAEQlAFBqJ8BQaifAUHooAEQkwFB6KABQeigARCSAUGonwFB6KABQcihARCQAUGIoAFBiKABQaiiARCTAUHomgFB6KABQeijARCQAUGoogFBiKMBEJIBQeijAUHoowFByKQBEJMBQYijAUHIoQEgAhCUASACQcikASACEJQBQeidAUHIoQFBqKUBEJABQailAUGopQFBqKUBEJMBQeijASACIAJB4ABqEJQBIAJB4ABqQaiiASACQeAAahCQASACQeAAakGopQEgAkHgAGoQlAEgAyAEIAJBwAFqEJMBIAJBwAFqIAJBwAFqEJIBIAJBwAFqQaiZASACQcABahCUASACQcABakGImgEgAkHAAWoQlAEgAkHAAWpBqJ8BIAJBwAFqEJABCxgAIAAgARCPASAAQeAAaiABQeAAahCVAQsnACAAIAEQjwEgAEHgAGogAUHgAGoQlQEgAEHAAWogAUHAAWoQjwELFgAgAUGIpgEQsQEgAEGIpgEgAhCuAQsWACABQaioARCxASAAQaioASACEK8BCxYAIAFByKoBELIBIABByKoBIAIQsAELGAAgACABEJgBIABB4ABqIAFB4ABqEJgBCycAIAAgARCYASAAQeAAaiABQeAAahCYASAAQcABaiABQcABahCYAQsYACAAIAEQlwEgAEHgAGogAUHgAGoQlwELJwAgACABEJcBIABB4ABqIAFB4ABqEJcBIABBwAFqIAFBwAFqEJcBC14AIAAQowEEQCABEI0BIAFB4ABqEI0BBSAAQcABakHorAEQmgFB6KwBQcitARCSAUHorAFByK0BQaiuARCQASAAQcitASABEJABIABB4ABqQaiuASABQeAAahCQAQsLvgEFAX8BfwF/AX8Bf0EAKAIA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aiAAIARBoAJqEPYBIARBoAJqIAFBqJMDIARBoAJqEJsCIARBoAJqQeiOAyAEQaACahD3ASAEQaACakGIkQMgBEGgAmoQ9wFBiJEDIAQQ8wEgBCAEEIICIARB6I4DIAQQ9gELUAAgASAAQTBqQYiUAxAUIAFBMGogAEEwakG4lAMQFCABQeAAaiAAQeiUAxAUIAFBkAFqIABBmJUDEBQgAiABQcABakHolANBiJQDIAIQnAILbAAgAEHItwQgARCQASAAQeAAakGouAQgAUHgAGoQkAEgAEHAAWpBiLkEIAFBwAFqEJABIABBoAJqQei5BCABQaACahCQASAAQYADakHIugQgAUGAA2oQkAEgAEHgA2pBqLsEIAFB4ANqEJABC4oCACAAIAEQACAAQTBqIAFBMGoQEiABQYi8BCABEJABIABB4ABqIAFB4ABqEAAgAEGQAWogAUGQAWoQEiABQeAAakHovAQgAUHgAGoQkAEgAEHAAWogAUHAAWoQACAAQfABaiABQfABahASIAFBwAFqQci9BCABQcABahCQASAAQaACaiABQaACahAAIABB0AJqIAFB0AJqEBIgAUGgAmpBqL4EIAFBoAJqEJABIABBgANqIAFBgANqEAAgAEGwA2ogAUGwA2oQEiABQYADakGIvwQgAUGAA2oQkAEgAEHgA2ogAUHgA2oQACAAQZAEaiABQZAEahASIAFB4ANqQei/BCABQeADahCQAQtsACAAQcjABCABEJABIABB4ABqQajBBCABQeAAahCQASAAQcABakGIwgQgAUHAAWoQkAEgAEGgAmpB6MIEIAFBoAJqEJABIABBgANqQcjDBCABQYADahCQASAAQeADakGoxAQgAUHgA2oQkAELigIAIAAgARAAIABBMGogAUEwahASIAFBiMUEIAEQkAEgAEHgAGogAUHgAGoQACAAQZABaiABQZABahASIAFB4ABqQejFBCABQeAAahCQASAAQcABaiABQcABahAAIABB8AFqIAFB8AFqEBIgAUHAAWpByMYEIAFBwAFqEJABIABBoAJqIAFBoAJqEAAgAEHQAmogAUHQAmoQEiABQaACakGoxwQgAUGgAmoQkAEgAEGAA2ogAUGAA2oQACAAQbADaiABQbADahASIAFBgANqQYjIBCABQYADahCQASAAQeADaiABQeADahAAIABBkARqIAFBkARqEBIgAUHgA2pB6MgEIAFB4ANqEJABC2wAIABByMkEIAEQkAEgAEHgAGpBqMoEIAFB4ABqEJABIABBwAFqQYjLBCABQcABahCQASAAQaACakHoywQgAUGgAmoQkAEgAEGAA2pByMwEIAFBgANqEJABIABB4ANqQajNBCABQeADahCQAQuKAgAgACABEAAgAEEwaiABQTBqEBIgAUGIzgQgARCQASAAQeAAaiABQeAAahAAIABBkAFqIAFBkAFqEBIgAUHgAGpB6M4EIAFB4ABqEJABIABBwAFqIAFBwAFqEAAgAEHwAWogAUHwAWoQEiABQcABakHIzwQgAUHAAWoQkAEgAEGgAmogAUGgAmoQACAAQdACaiABQdACahASIAFBoAJqQajQBCABQaACahCQASAAQYADaiABQYADahAAIABBsANqIAFBsANqEBIgAUGAA2pBiNEEIAFBgANqEJABIABB4ANqIAFB4ANqEAAgAEGQBGogAUGQBGoQEiABQeADakHo0QQgAUHgA2oQkAELbAAgAEHI0gQgARCQASAAQeAAakGo0wQgAUHgAGoQkAEgAEHAAWpBiNQEIAFBwAFqEJABIABBoAJqQejUBCABQaACahCQASAAQYADakHI1QQgAUGAA2oQkAEgAEHgA2pBqNYEIAFB4ANqEJABC4oCACAAIAEQACAAQTBqIAFBMGoQEiABQYjXBCABEJABIABB4ABqIAFB4ABqEAAgAEGQAWogAUGQAWoQEiABQeAAakHo1wQgAUHgAGoQkAEgAEHAAWogAUHAAWoQACAAQfABaiABQfABahASIAFBwAFqQcjYBCABQcABahCQASAAQaACaiABQaACahAAIABB0AJqIAFB0AJqEBIgAUGgAmpBqNkEIAFBoAJqEJABIABBgANqIAFBgANqEAAgAEGwA2ogAUGwA2oQEiABQYADakGI2gQgAUGAA2oQkAEgAEHgA2ogAUHgA2oQACAAQZAEaiABQZAEahASIAFB4ANqQejaBCABQeADahCQAQtsACAAQcjbBCABEJABIABB4ABqQajcBCABQeAAahCQASAAQcABakGI3QQgAUHAAWoQkAEgAEGgAmpB6N0EIAFBoAJqEJABIABBgANqQcjeBCABQYADahCQASAAQeADakGo3wQgAUHgA2oQkAELigIAIAAgARAAIABBMGogAUEwahASIAFBiOAEIAEQkAEgAEHgAGogAUHgAGoQACAAQZABaiABQZABahASIAFB4ABqQejgBCABQeAAahCQASAAQcABaiABQcABahAAIABB8AFqIAFB8AFqEBIgAUHAAWpByOEEIAFBwAFqEJABIABBoAJqIAFBoAJqEAAgAEHQAmogAUHQAmoQEiABQaACakGo4gQgAUGgAmoQkAEgAEGAA2ogAUGAA2oQACAAQbADaiABQbADahASIAFBgANqQYjjBCABQYADahCQASAAQeADaiABQeADahAAIABBkARqIAFBkARqEBIgAUHgA2pB6OMEIAFB4ANqEJABC9gEACAAQcABakHI5AQQkgEgAUHgAGpBqOUEEJIBQcjkBCABQejmBBCQASABQeAAaiAAQcABaiACQeAAahCTASACQeAAaiACQeAAahCSASACQeAAakGo5QQgAkHgAGoQlAEgAkHgAGpByOQEIAJB4ABqEJQBIAJB4ABqQcjkBCACQeAAahCQAUHo5gQgAEHI5wQQlAFByOcEQajoBBCSAUGo6ARBqOgEQYjpBBCTAUGI6QRBiOkEQYjpBBCTAUGI6QRByOcEQejpBBCQASACQeAAaiAAQeAAakHI6gQQlAFByOoEIABB4ABqQcjqBBCUAUHI6gQgASACQcABahCQAUGI6QQgAEGo6wQQkAFByOoEIAAQkgEgAEHo6QQgABCUASAAQajrBCAAEJQBIABBqOsEIAAQlAEgAEHAAWpByOcEIABBwAFqEJMBIABBwAFqIABBwAFqEJIBIABBwAFqQcjkBCAAQcABahCUASAAQcABakGo6AQgAEHAAWoQlAEgAUHgAGogAEHAAWogAhCTAUGo6wQgAEGI7AQQlAFBiOwEQcjqBEGI7AQQkAEgAEHgAGpB6OkEQejmBBCQAUHo5gRB6OYEQejmBBCTAUGI7ARB6OYEIABB4ABqEJQBIAIgAhCSASACQajlBCACEJQBIABBwAFqQYjmBBCSASACQYjmBCACEJQBIAJBwAFqIAJBwAFqIAJBwAFqEJMBIAJBwAFqIAIgAkHAAWoQlAEgAEHAAWogAEHAAWogAhCTAUHI6gRByOoEEJUBQcjqBEHI6gQgAkHgAGoQkwELsgQAIAAgARCSASAAQeAAakHI7QQQkgFByO0EQajuBBCSAUHI7QQgACABQeAAahCTASABQeAAaiABQeAAahCSASABQeAAaiABIAFB4ABqEJQBIAFB4ABqQajuBCABQeAAahCUASABQeAAaiABQeAAaiABQeAAahCTASABIAFBiO8EEJMBQYjvBCABQYjvBBCTASAAQYjvBCABQcABahCTAUGI7wRB6O8EEJIBIABBwAFqQejsBBCSAUHo7wQgAUHgAGogABCUASAAIAFB4ABqIAAQlAEgAEHAAWogAEHgAGogAEHAAWoQkwEgAEHAAWogAEHAAWoQkgEgAEHAAWpByO0EIABBwAFqEJQBIABBwAFqQejsBCAAQcABahCUASABQeAAaiAAIABB4ABqEJQBIABB4ABqQYjvBCAAQeAAahCQAUGo7gRBqO4EQajuBBCTAUGo7gRBqO4EQajuBBCTAUGo7gRBqO4EQajuBBCTASAAQeAAakGo7gQgAEHgAGoQlAFBiO8EQejsBCABQeAAahCQASABQeAAaiABQeAAaiABQeAAahCTASABQeAAaiABQeAAahCVASABQcABaiABQcABahCSASABQcABaiABIAFBwAFqEJQBIAFBwAFqQejvBCABQcABahCUAUHI7QRByO0EQcjtBBCTAUHI7QRByO0EQcjtBBCTASABQcABakHI7QQgAUHAAWoQlAEgAEHAAWpB6OwEIAEQkAEgASABIAEQkwELCAAgACABEGgLbQIBfwF/IAAgARC8ASABEKMBBEAPCyABQcjwBBCnASABQaACaiECQT4hAwJAA0BByPAEIAIQqQIgAkGgAmohAiADLADoiQMEQEHI8AQgASACEKgCIAJBoAJqIQILIANFDQEgA0EBayEDDAALCwuAAQIBfwF/IAIQhgIgABBPBEAPCyABEE8EQA8LIAFBoAJqIQNBPiEEAkADQCAAIAMgAhCdAiADQaACaiEDIAQsAOiJAwRAIAAgAyACEJ0CIANBoAJqIQMLIAIgAhCKAiAEQQFGDQEgBEEBayEEDAALCyAAIAMgAhCdAiACIAIQjgILEAAgAEHo8gRBoAQgARCXAgvsBQAgACAAQYADakHI+wQQkAEgAEGAA2pBiPcEEO4BIABBiPcEQYj3BBCTASAAIABBgANqQaj8BBCTAUGo/ARBiPcEQYj3BBCQAUHI+wRBqPwEEO4BQcj7BEGo/ARBqPwEEJMBQYj3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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAA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GP////8AAAAAAaQBAP1bQqz6J1729yfGzLeCYtasWBIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA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";
|
|
var pq$1 = 760;
|
|
var pr$1 = 3640;
|
|
var pG1gen$1 = 33752;
|
|
var pG1zero$1 = 33896;
|
|
var pG1b$1 = 5016;
|
|
var pG2gen$1 = 34040;
|
|
var pG2zero$1 = 34328;
|
|
var pG2b$1 = 14728;
|
|
var pOneT$1 = 34616;
|
|
var prePSize$1 = 288;
|
|
var preQSize$1 = 20448;
|
|
var n8q$1 = 48;
|
|
var n8r$1 = 32;
|
|
var q$1 = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787";
|
|
var r$1 = "52435875175126190479447740508185965837690552500527637822603658699938581184513";
|
|
|
|
var bls12381_wasm = {
|
|
code: code$1,
|
|
pq: pq$1,
|
|
pr: pr$1,
|
|
pG1gen: pG1gen$1,
|
|
pG1zero: pG1zero$1,
|
|
pG1b: pG1b$1,
|
|
pG2gen: pG2gen$1,
|
|
pG2zero: pG2zero$1,
|
|
pG2b: pG2b$1,
|
|
pOneT: pOneT$1,
|
|
prePSize: prePSize$1,
|
|
preQSize: preQSize$1,
|
|
n8q: n8q$1,
|
|
n8r: n8r$1,
|
|
q: q$1,
|
|
r: r$1
|
|
};
|
|
|
|
/*
|
|
Copyright 2019 0KIMS association.
|
|
|
|
This file is part of wasmsnark (Web Assembly zkSnark Prover).
|
|
|
|
wasmsnark is a free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
wasmsnark is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with wasmsnark. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// module.exports.buildF1 = require("./src/f1.js");
|
|
// module.exports.buildBn128 = require("./src/bn128.js");
|
|
// module.exports.buildMnt6753 = require("./src/mnt6753.js");
|
|
|
|
var bn128_wasm$1 = bn128_wasm;
|
|
var bls12381_wasm$1 = bls12381_wasm;
|
|
// module.exports.mnt6753_wasm = require("./build/mnt6753_wasm.js");
|
|
|
|
var wasmcurves = {
|
|
bn128_wasm: bn128_wasm$1,
|
|
bls12381_wasm: bls12381_wasm$1
|
|
};
|
|
|
|
/* global BigInt */
|
|
|
|
function stringifyBigInts(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInt(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts);
|
|
} else if (typeof o == "object") {
|
|
if (o===null) return null;
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int(buff) {
|
|
let res = 0n;
|
|
let i = buff.length;
|
|
let offset = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i>0) {
|
|
if (i >= 4) {
|
|
i -= 4;
|
|
res += BigInt(buffV.getUint32(i)) << BigInt(offset*8);
|
|
offset += 4;
|
|
} else if (i >= 2) {
|
|
i -= 2;
|
|
res += BigInt(buffV.getUint16(i)) << BigInt(offset*8);
|
|
offset += 2;
|
|
} else {
|
|
i -= 1;
|
|
res += BigInt(buffV.getUint8(i)) << BigInt(offset*8);
|
|
offset += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff(n, len) {
|
|
let r = n;
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = len;
|
|
while (o > 0) {
|
|
if (o-4 >= 0) {
|
|
o -= 4;
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn));
|
|
r = r >> 32n;
|
|
} else if (o-2 >= 0) {
|
|
o -= 2;
|
|
buffV.setUint16(o, Number(r & 0xFFFFn));
|
|
r = r >> 16n;
|
|
} else {
|
|
o -= 1;
|
|
buffV.setUint8(o, Number(r & 0xFFn));
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int(buff) {
|
|
let res = 0n;
|
|
let i = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i<buff.length) {
|
|
if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint32(i, true)) << BigInt( i*8);
|
|
i += 4;
|
|
} else if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint16(i, true)) << BigInt( i*8);
|
|
i += 2;
|
|
} else {
|
|
res += BigInt(buffV.getUint8(i, true)) << BigInt( i*8);
|
|
i += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff(n, len) {
|
|
let r = n;
|
|
if (typeof len === "undefined") {
|
|
len = Math.floor((bitLength$2(n) - 1) / 8) +1;
|
|
if (len==0) len = 1;
|
|
}
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = 0;
|
|
while (o < len) {
|
|
if (o+4 <= len) {
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn), true );
|
|
o += 4;
|
|
r = r >> 32n;
|
|
} else if (o+2 <= len) {
|
|
buff.setUint16(Number(o, r & 0xFFFFn), true );
|
|
o += 2;
|
|
r = r >> 16n;
|
|
} else {
|
|
buff.setUint8(Number(o, r & 0xFFn), true );
|
|
o += 1;
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_native = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts,
|
|
unstringifyBigInts: unstringifyBigInts,
|
|
beBuff2int: beBuff2int,
|
|
beInt2Buff: beInt2Buff,
|
|
leBuff2int: leBuff2int,
|
|
leInt2Buff: leInt2Buff
|
|
});
|
|
|
|
function stringifyBigInts$1(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts$1);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts$1(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts$1(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInteger(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts$1);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts$1(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int$1(buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[buff.length - i - 1]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff$1(n, len) {
|
|
let r = n;
|
|
let o =len-1;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o>=0)) {
|
|
let c = Number(r.and(BigInteger("255")));
|
|
buff[o] = c;
|
|
o--;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int$1 (buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[i]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff$1(n, len) {
|
|
let r = n;
|
|
let o =0;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o<buff.length)) {
|
|
let c = Number(r.and(BigInteger(255)));
|
|
buff[o] = c;
|
|
o++;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_bigint = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts$1,
|
|
unstringifyBigInts: unstringifyBigInts$1,
|
|
beBuff2int: beBuff2int$1,
|
|
beInt2Buff: beInt2Buff$1,
|
|
leBuff2int: leBuff2int$1,
|
|
leInt2Buff: leInt2Buff$1
|
|
});
|
|
|
|
let utils = {};
|
|
|
|
const supportsNativeBigInt$2 = typeof BigInt === "function";
|
|
if (supportsNativeBigInt$2) {
|
|
Object.assign(utils, utils_native);
|
|
} else {
|
|
Object.assign(utils, utils_bigint);
|
|
}
|
|
|
|
|
|
const _revTable$1 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$1[i] = _revSlow$1(i, 8);
|
|
}
|
|
|
|
function _revSlow$1(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
utils.bitReverse = function bitReverse(idx, bits) {
|
|
return (
|
|
_revTable$1[idx >>> 24] |
|
|
(_revTable$1[(idx >>> 16) & 0xFF] << 8) |
|
|
(_revTable$1[(idx >>> 8) & 0xFF] << 16) |
|
|
(_revTable$1[idx & 0xFF] << 24)
|
|
) >>> (32-bits);
|
|
};
|
|
|
|
|
|
utils.log2 = function log2( V )
|
|
{
|
|
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
|
|
};
|
|
|
|
utils.buffReverseBits = function buffReverseBits(buff, eSize) {
|
|
const n = buff.byteLength /eSize;
|
|
const bits = utils.log2(n);
|
|
if (n != (1 << bits)) {
|
|
throw new Error("Invalid number of pointers");
|
|
}
|
|
for (let i=0; i<n; i++) {
|
|
const r = utils.bitReverse(i,bits);
|
|
if (i>r) {
|
|
const tmp = buff.slice(i*eSize, (i+1)*eSize);
|
|
buff.set( buff.slice(r*eSize, (r+1)*eSize), i*eSize);
|
|
buff.set(tmp, r*eSize);
|
|
}
|
|
}
|
|
};
|
|
|
|
let {
|
|
bitReverse,
|
|
log2,
|
|
buffReverseBits,
|
|
stringifyBigInts: stringifyBigInts$2,
|
|
unstringifyBigInts: unstringifyBigInts$2,
|
|
beBuff2int: beBuff2int$2,
|
|
beInt2Buff: beInt2Buff$2,
|
|
leBuff2int: leBuff2int$2,
|
|
leInt2Buff: leInt2Buff$2,
|
|
} = utils;
|
|
|
|
var _utils = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
bitReverse: bitReverse,
|
|
log2: log2,
|
|
buffReverseBits: buffReverseBits,
|
|
stringifyBigInts: stringifyBigInts$2,
|
|
unstringifyBigInts: unstringifyBigInts$2,
|
|
beBuff2int: beBuff2int$2,
|
|
beInt2Buff: beInt2Buff$2,
|
|
leBuff2int: leBuff2int$2,
|
|
leInt2Buff: leInt2Buff$2
|
|
});
|
|
|
|
function buildBatchConvert(tm, fnName, sIn, sOut) {
|
|
return async function batchConvert(buffIn) {
|
|
const nPoints = Math.floor(buffIn.byteLength / sIn);
|
|
if ( nPoints * sIn !== buffIn.byteLength) {
|
|
throw new Error("Invalid buffer size");
|
|
}
|
|
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
|
|
const opPromises = [];
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const buffChunk = buffIn.slice(i*pointsPerChunk*sIn, i*pointsPerChunk*sIn + n*sIn);
|
|
const task = [
|
|
{cmd: "ALLOCSET", var: 0, buff:buffChunk},
|
|
{cmd: "ALLOC", var: 1, len:sOut * n},
|
|
{cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1}
|
|
]},
|
|
{cmd: "GET", out: 0, var: 1, len:sOut * n},
|
|
];
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sOut);
|
|
let p =0;
|
|
for (let i=0; i<result.length; i++) {
|
|
fullBuffOut.set(result[i][0], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
}
|
|
|
|
class WasmField1 {
|
|
|
|
constructor(tm, prefix, n8, p) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.p = p;
|
|
this.n8 = n8;
|
|
this.type = "F1";
|
|
this.m = 1;
|
|
|
|
this.half = shiftRight$2(p, one);
|
|
this.bitLength = bitLength$2(p);
|
|
this.mask = sub$2(shiftLeft$2(one, this.bitLength), one);
|
|
|
|
this.pOp1 = tm.alloc(n8);
|
|
this.pOp2 = tm.alloc(n8);
|
|
this.pOp3 = tm.alloc(n8);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = this.tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = this.tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
this.n64 = Math.floor(n8/8);
|
|
this.n32 = Math.floor(n8/4);
|
|
|
|
if(this.n64*8 != this.n8) {
|
|
throw new Error("n8 must be a multiple of 8");
|
|
}
|
|
|
|
this.half = shiftRight$2(this.p, one);
|
|
this.nqr = this.two;
|
|
let r = this.exp(this.nqr, this.half);
|
|
while (!this.eq(r, this.negone)) {
|
|
this.nqr = this.add(this.nqr, this.one);
|
|
r = this.exp(this.nqr, this.half);
|
|
}
|
|
|
|
|
|
this.s = 0;
|
|
let t = sub$2(this.p, one);
|
|
|
|
while ( !isOdd$2(t) ) {
|
|
this.s = this.s + 1;
|
|
t = shiftRight$2(t, one);
|
|
}
|
|
|
|
this.w = [];
|
|
this.w[this.s] = this.exp(this.nqr, t);
|
|
|
|
for (let i= this.s-1; i>=0; i--) {
|
|
this.w[i] = this.square(this.w[i+1]);
|
|
}
|
|
|
|
if (!this.eq(this.w[0], this.one)) {
|
|
throw new Error("Error calculating roots of unity");
|
|
}
|
|
|
|
this.batchToMontgomery = buildBatchConvert(tm, prefix + "_batchToMontgomery", this.n8, this.n8);
|
|
this.batchFromMontgomery = buildBatchConvert(tm, prefix + "_batchFromMontgomery", this.n8, this.n8);
|
|
}
|
|
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff(e$2(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
let ra = e$2(a, b);
|
|
if (isNegative$2(ra)) {
|
|
ra = neg$2(ra);
|
|
if (gt$2(ra, this.p)) {
|
|
ra = mod$2(ra, this.p);
|
|
}
|
|
ra = sub$2(this.p, ra);
|
|
} else {
|
|
if (gt$2(ra, this.p)) {
|
|
ra = mod$2(ra, this.p);
|
|
}
|
|
}
|
|
const buff = leInt2Buff$2(ra, this.n8);
|
|
return this.toMontgomery(buff);
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const an = this.fromMontgomery(a);
|
|
const s = fromRprLE(an, 0);
|
|
return toString(s, radix);
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
const buff = new Uint8Array(this.n8);
|
|
do {
|
|
v = zero;
|
|
for (let i=0; i<this.n64; i++) {
|
|
v = add$2(v, shiftLeft$2(rng.nextU64(), 64*i));
|
|
}
|
|
v = band$2(v, this.mask);
|
|
} while (geq$2(v, this.p));
|
|
toRprLE(buff, 0, v, this.n8);
|
|
return buff;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng());
|
|
}
|
|
|
|
toObject(a) {
|
|
const an = this.fromMontgomery(a);
|
|
return fromRprLE(an, 0);
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.n8);
|
|
toRprLE(buff, 0, a, this.n8);
|
|
return this.toMontgomery(buff);
|
|
}
|
|
|
|
toRprLE(buff, offset, a) {
|
|
buff.set(this.fromMontgomery(a), offset);
|
|
}
|
|
|
|
fromRprLE(buff, offset) {
|
|
const res = buff.slice(offset, offset + this.n8);
|
|
return this.toMontgomery(res);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
class WasmField2 {
|
|
|
|
constructor(tm, prefix, F) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.F = F;
|
|
this.type = "F2";
|
|
this.m = F.m * 2;
|
|
this.n8 = this.F.n8*2;
|
|
this.n32 = this.F.n32*2;
|
|
this.n64 = this.F.n64*2;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*2);
|
|
this.pOp2 = tm.alloc(F.n8*2);
|
|
this.pOp3 = tm.alloc(F.n8*2);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff(e$2(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
if ((Array.isArray(a)) && (a.length == 2)) {
|
|
const c1 = this.F.e(a[0], b);
|
|
const c2 = this.F.e(a[1], b);
|
|
const res = new Uint8Array(this.F.n8*2);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8*2);
|
|
return res;
|
|
} else {
|
|
throw new Error("invalid F2");
|
|
}
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const s2 = this.F.toString(a.slice(this.F.n8), radix);
|
|
return `[${s1}, ${s2}]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c1 = this.F.fromRng(rng);
|
|
const c2 = this.F.fromRng(rng);
|
|
const res = new Uint8Array(this.F.n8*2);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
return res;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng());
|
|
}
|
|
|
|
toObject(a) {
|
|
const c1 = this.F.toObject(a.slice(0, this.F.n8));
|
|
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
return [c1, c2];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
const b1 = this.F.fromObject(a[0]);
|
|
const b2 = this.F.fromObject(a[1]);
|
|
buff.set(b1);
|
|
buff.set(b2, this.F.n8);
|
|
return buff;
|
|
}
|
|
|
|
}
|
|
|
|
class WasmField3 {
|
|
|
|
constructor(tm, prefix, F) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.F = F;
|
|
this.type = "F3";
|
|
this.m = F.m * 3;
|
|
this.n8 = this.F.n8*3;
|
|
this.n32 = this.F.n32*3;
|
|
this.n64 = this.F.n64*3;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*3);
|
|
this.pOp2 = tm.alloc(F.n8*3);
|
|
this.pOp3 = tm.alloc(F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff(e$2(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
if ((Array.isArray(a)) && (a.length == 3)) {
|
|
const c1 = this.F.e(a[0], b);
|
|
const c2 = this.F.e(a[1], b);
|
|
const c3 = this.F.e(a[2], b);
|
|
const res = new Uint8Array(this.F.n8*3);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
res.set(c3, this.F.n8*2);
|
|
return res;
|
|
} else {
|
|
throw new Error("invalid F3");
|
|
}
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const s2 = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
|
|
const s3 = this.F.toString(a.slice(this.F.n8*2), radix);
|
|
return `[${s1}, ${s2}, ${s3}]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c1 = this.F.fromRng(rng);
|
|
const c2 = this.F.fromRng(rng);
|
|
const c3 = this.F.fromRng(rng);
|
|
const res = new Uint8Array(this.F.n8*3);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
res.set(c3, this.F.n8*2);
|
|
return res;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng());
|
|
}
|
|
|
|
toObject(a) {
|
|
const c1 = this.F.toObject(a.slice(0, this.F.n8));
|
|
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
const c3 = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
|
|
return [c1, c2, c3];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.F.n8*3);
|
|
const b1 = this.F.fromObject(a[0]);
|
|
const b2 = this.F.fromObject(a[1]);
|
|
const b3 = this.F.fromObject(a[2]);
|
|
buff.set(b1);
|
|
buff.set(b2, this.F.n8);
|
|
buff.set(b3, this.F.n8*2);
|
|
return buff;
|
|
}
|
|
|
|
}
|
|
|
|
class WasmCurve {
|
|
|
|
constructor(tm, prefix, F, pGen, pGb, cofactor) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
this.F = F;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*3);
|
|
this.pOp2 = tm.alloc(F.n8*3);
|
|
this.pOp3 = tm.alloc(F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = this.tm.getBuff(this.pOp1, F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zeroAffine"](this.pOp1);
|
|
this.zeroAffine = this.tm.getBuff(this.pOp1, F.n8*2);
|
|
this.one = this.tm.getBuff(pGen, F.n8*3);
|
|
this.g = this.one;
|
|
this.oneAffine = this.tm.getBuff(pGen, F.n8*2);
|
|
this.gAffine = this.oneAffine;
|
|
this.b = this.tm.getBuff(pGb, F.n8);
|
|
|
|
if (cofactor) {
|
|
this.cofactor = toLEBuff(cofactor);
|
|
}
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
this.batchLEMtoC = buildBatchConvert(tm, prefix + "_batchLEMtoC", F.n8*2, F.n8);
|
|
this.batchLEMtoU = buildBatchConvert(tm, prefix + "_batchLEMtoU", F.n8*2, F.n8*2);
|
|
this.batchCtoLEM = buildBatchConvert(tm, prefix + "_batchCtoLEM", F.n8, F.n8*2);
|
|
this.batchUtoLEM = buildBatchConvert(tm, prefix + "_batchUtoLEM", F.n8*2, F.n8*2);
|
|
this.batchToJacobian = buildBatchConvert(tm, prefix + "_batchToJacobian", F.n8*2, F.n8*3);
|
|
this.batchToAffine = buildBatchConvert(tm, prefix + "_batchToAffine", F.n8*3, F.n8*2);
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
op2bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
op1Affine(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*2);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_add", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_addMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_addMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_addAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
sub(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_sub", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_subMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_subMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_subAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
neg(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1("_neg", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1Affine("_negAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
double(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1("_double", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1("_doubleAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
isZero(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1Bool("_isZero", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1Bool("_isZeroAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
timesScalar(a, s) {
|
|
if (!(s instanceof Uint8Array)) {
|
|
s = toLEBuff(e$2(s));
|
|
}
|
|
let fnName;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
fnName = this.prefix + "_timesScalar";
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
fnName = this.prefix + "_timesScalarAffine";
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, s);
|
|
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, s.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
timesFr(a, s) {
|
|
let fnName;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
fnName = this.prefix + "_timesFr";
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
fnName = this.prefix + "_timesFrAffine";
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, s);
|
|
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
eq(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2bool("_eq", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2bool("_eqMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2bool("_eqMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2bool("_eqAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toAffine(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1Affine("_toAffine", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return a;
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toJacobian(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return a;
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1("_toJacobian", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toRprUncompressed(arr, offset, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
if (a.byteLength == this.F.n8*3) {
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
} else if (a.byteLength != this.F.n8*2) {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.instance.exports[this.prefix + "_LEMtoU"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
arr.set(res, offset);
|
|
}
|
|
|
|
fromRprUncompressed(arr, offset) {
|
|
const buff = arr.slice(offset, offset + this.F.n8*2);
|
|
this.tm.setBuff(this.pOp1, buff);
|
|
this.tm.instance.exports[this.prefix + "_UtoLEM"](this.pOp1, this.pOp1);
|
|
return this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
}
|
|
|
|
toRprCompressed(arr, offset, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
if (a.byteLength == this.F.n8*3) {
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
} else if (a.byteLength != this.F.n8*2) {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.instance.exports[this.prefix + "_LEMtoC"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8);
|
|
arr.set(res, offset);
|
|
}
|
|
|
|
fromRprCompressed(arr, offset) {
|
|
const buff = arr.slice(offset, offset + this.F.n8);
|
|
this.tm.setBuff(this.pOp1, buff);
|
|
this.tm.instance.exports[this.prefix + "_CtoLEM"](this.pOp1, this.pOp2);
|
|
return this.tm.getBuff(this.pOp2, this.F.n8*2);
|
|
}
|
|
|
|
toUncompressed(a) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
this.toRprUncompressed(buff, 0, a);
|
|
return buff;
|
|
}
|
|
|
|
toRprLEM(arr, offset, a) {
|
|
if (a.byteLength == this.F.n8*2) {
|
|
arr.set(a, offset);
|
|
return;
|
|
} else if (a.byteLength == this.F.n8*3) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
arr.set(res, offset);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
fromRprLEM(arr, offset) {
|
|
offset = offset || 0;
|
|
return arr.slice(offset, offset+this.F.n8*2);
|
|
}
|
|
|
|
toString(a, radix) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
const x = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const y = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
|
|
const z = this.F.toString(a.slice(this.F.n8*2), radix);
|
|
return `[ ${x}, ${y}, ${z} ]`;
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
const x = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const y = this.F.toString(a.slice(this.F.n8), radix);
|
|
return `[ ${x}, ${y} ]`;
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
|
|
fromRng(rng) {
|
|
const F = this.F;
|
|
let P = [];
|
|
let greatest;
|
|
let x3b;
|
|
do {
|
|
P[0] = F.fromRng(rng);
|
|
greatest = rng.nextBool();
|
|
x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
|
|
} while (!F.isSquare(x3b));
|
|
|
|
P[1] = F.sqrt(x3b);
|
|
|
|
const s = F.isNegative(P[1]);
|
|
if (greatest ^ s) P[1] = F.neg(P[1]);
|
|
|
|
let Pbuff = new Uint8Array(this.F.n8*2);
|
|
Pbuff.set(P[0]);
|
|
Pbuff.set(P[1], this.F.n8);
|
|
|
|
if (this.cofactor) {
|
|
Pbuff = this.timesScalar(Pbuff, this.cofactor);
|
|
}
|
|
|
|
return Pbuff;
|
|
}
|
|
|
|
|
|
|
|
toObject(a) {
|
|
if (this.isZero(a)) {
|
|
return [
|
|
this.F.toObject(this.F.zero),
|
|
this.F.toObject(this.F.one),
|
|
this.F.toObject(this.F.zero),
|
|
];
|
|
}
|
|
const x = this.F.toObject(a.slice(0, this.F.n8));
|
|
const y = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
let z;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
z = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
|
|
} else {
|
|
z = this.F.toObject(this.F.one);
|
|
}
|
|
return [x, y, z];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const x = this.F.fromObject(a[0]);
|
|
const y = this.F.fromObject(a[1]);
|
|
let z;
|
|
if (a.length==3) {
|
|
z = this.F.fromObject(a[2]);
|
|
} else {
|
|
z = this.F.one;
|
|
}
|
|
if (this.F.isZero(z, this.F.one)) {
|
|
return this.zeroAffine;
|
|
} else if (this.F.eq(z, this.F.one)) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
buff.set(x);
|
|
buff.set(y, this.F.n8);
|
|
return buff;
|
|
} else {
|
|
const buff = new Uint8Array(this.F.n8*3);
|
|
buff.set(x);
|
|
buff.set(y, this.F.n8);
|
|
buff.set(z, this.F.n8*2);
|
|
return buff;
|
|
}
|
|
}
|
|
|
|
e(a) {
|
|
if (a instanceof Uint8Array) return a;
|
|
return this.fromObject(a);
|
|
}
|
|
|
|
}
|
|
|
|
/* global WebAssembly */
|
|
|
|
function thread(self) {
|
|
let instance;
|
|
let memory;
|
|
let u32;
|
|
let u8;
|
|
|
|
if (self) {
|
|
self.onmessage = function(e) {
|
|
let data;
|
|
if (e.data) {
|
|
data = e.data;
|
|
} else {
|
|
data = e;
|
|
}
|
|
|
|
if (data[0].cmd == "INIT") {
|
|
init(data[0]).then(function() {
|
|
self.postMessage(data.result);
|
|
});
|
|
} else if (data[0].cmd == "TERMINATE") {
|
|
process.exit();
|
|
} else {
|
|
const res = runTask(data);
|
|
self.postMessage(res);
|
|
}
|
|
};
|
|
}
|
|
|
|
async function init(data) {
|
|
const code = new Uint8Array(data.code);
|
|
const wasmModule = await WebAssembly.compile(code);
|
|
memory = new WebAssembly.Memory({initial:data.init});
|
|
u32 = new Uint32Array(memory.buffer);
|
|
u8 = new Uint8Array(memory.buffer);
|
|
|
|
instance = await WebAssembly.instantiate(wasmModule, {
|
|
env: {
|
|
"memory": memory
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
function alloc(length) {
|
|
while (u32[0] & 3) u32[0]++; // Return always aligned pointers
|
|
const res = u32[0];
|
|
u32[0] += length;
|
|
while (u32[0] > memory.buffer.byteLength) {
|
|
memory.grow(100);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function allocBuffer(buffer) {
|
|
const p = alloc(buffer.byteLength);
|
|
setBuffer(p, buffer);
|
|
return p;
|
|
}
|
|
|
|
function getBuffer(pointer, length) {
|
|
return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);
|
|
}
|
|
|
|
function setBuffer(pointer, buffer) {
|
|
u8.set(new Uint8Array(buffer), pointer);
|
|
}
|
|
|
|
function runTask(task) {
|
|
if (task[0].cmd == "INIT") {
|
|
return init(task[0]);
|
|
}
|
|
const ctx = {
|
|
vars: [],
|
|
out: []
|
|
};
|
|
const oldAlloc = u32[0];
|
|
for (let i=0; i<task.length; i++) {
|
|
switch (task[i].cmd) {
|
|
case "ALLOCSET":
|
|
ctx.vars[task[i].var] = allocBuffer(task[i].buff);
|
|
break;
|
|
case "ALLOC":
|
|
ctx.vars[task[i].var] = alloc(task[i].len);
|
|
break;
|
|
case "SET":
|
|
setBuffer(ctx.vars[task[i].var], task[i].buff);
|
|
break;
|
|
case "CALL": {
|
|
const params = [];
|
|
for (let j=0; j<task[i].params.length; j++) {
|
|
const p = task[i].params[j];
|
|
if (typeof p.var !== "undefined") {
|
|
params.push(ctx.vars[p.var] + (p.offset || 0));
|
|
} else if (typeof p.val != "undefined") {
|
|
params.push(p.val);
|
|
}
|
|
}
|
|
instance.exports[task[i].fnName](...params);
|
|
break;
|
|
}
|
|
case "GET":
|
|
ctx.out[task[i].out] = getBuffer(ctx.vars[task[i].var], task[i].len).slice();
|
|
break;
|
|
default:
|
|
throw new Error("Invalid cmd");
|
|
}
|
|
}
|
|
u32[0] = oldAlloc;
|
|
return ctx.out;
|
|
}
|
|
|
|
|
|
return runTask;
|
|
}
|
|
|
|
/* global window, navigator, Blob, Worker, WebAssembly */
|
|
/*
|
|
Copyright 2019 0KIMS association.
|
|
|
|
This file is part of wasmsnark (Web Assembly zkSnark Prover).
|
|
|
|
wasmsnark is a free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
wasmsnark is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with wasmsnark. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
const MEM_SIZE = 8192; // Memory size in 64K Pakes (512Mb)
|
|
const inBrowser = (typeof window !== "undefined");
|
|
let NodeWorker;
|
|
if (!inBrowser) {
|
|
NodeWorker = crypto.Worker;
|
|
}
|
|
|
|
class Deferred {
|
|
constructor() {
|
|
this.promise = new Promise((resolve, reject)=> {
|
|
this.reject = reject;
|
|
this.resolve = resolve;
|
|
});
|
|
}
|
|
}
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
function base64ToArrayBuffer(base64) {
|
|
{
|
|
var binary_string = window.atob(base64);
|
|
var len = binary_string.length;
|
|
var bytes = new Uint8Array(len);
|
|
for (var i = 0; i < len; i++) {
|
|
bytes[i] = binary_string.charCodeAt(i);
|
|
}
|
|
return bytes;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
async function buildThreadManager(wasm, singleThread) {
|
|
const tm = new ThreadManager();
|
|
|
|
tm.memory = new WebAssembly.Memory({initial:MEM_SIZE});
|
|
tm.u8 = new Uint8Array(tm.memory.buffer);
|
|
tm.u32 = new Uint32Array(tm.memory.buffer);
|
|
|
|
const wasmModule = await WebAssembly.compile(base64ToArrayBuffer(wasm.code));
|
|
|
|
tm.instance = await WebAssembly.instantiate(wasmModule, {
|
|
env: {
|
|
"memory": tm.memory
|
|
}
|
|
});
|
|
|
|
tm.singleThread = singleThread;
|
|
tm.initalPFree = tm.u32[0]; // Save the Pointer to free space.
|
|
tm.pq = wasm.pq;
|
|
tm.pr = wasm.pr;
|
|
tm.pG1gen = wasm.pG1gen;
|
|
tm.pG1zero = wasm.pG1zero;
|
|
tm.pG2gen = wasm.pG2gen;
|
|
tm.pG2zero = wasm.pG2zero;
|
|
tm.pOneT = wasm.pOneT;
|
|
|
|
// tm.pTmp0 = tm.alloc(curve.G2.F.n8*3);
|
|
// tm.pTmp1 = tm.alloc(curve.G2.F.n8*3);
|
|
|
|
|
|
if (singleThread) {
|
|
tm.code = base64ToArrayBuffer(wasm.code);
|
|
tm.taskManager = thread();
|
|
await tm.taskManager([{
|
|
cmd: "INIT",
|
|
init: MEM_SIZE,
|
|
code: tm.code.slice()
|
|
}]);
|
|
tm.concurrency = 1;
|
|
} else {
|
|
tm.workers = [];
|
|
tm.pendingDeferreds = [];
|
|
tm.working = [];
|
|
|
|
let concurrency;
|
|
|
|
if ((typeof(navigator) === "object") && navigator.hardwareConcurrency) {
|
|
concurrency = navigator.hardwareConcurrency;
|
|
} else {
|
|
concurrency = crypto.cpus().length;
|
|
}
|
|
tm.concurrency = concurrency;
|
|
|
|
for (let i = 0; i<concurrency; i++) {
|
|
|
|
if (inBrowser) {
|
|
const blob = new Blob(["(", thread.toString(), ")(self);"], { type: "text/javascript" });
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
tm.workers[i] = new Worker(url);
|
|
|
|
tm.workers[i].onmessage = getOnMsg(i);
|
|
|
|
} else {
|
|
tm.workers[i] = new NodeWorker("(" + thread.toString()+ ")(require('worker_threads').parentPort);", {eval: true});
|
|
|
|
tm.workers[i].on("message", getOnMsg(i));
|
|
}
|
|
|
|
tm.working[i]=false;
|
|
}
|
|
|
|
const initPromises = [];
|
|
for (let i=0; i<tm.workers.length;i++) {
|
|
const copyCode = base64ToArrayBuffer(wasm.code).slice();
|
|
initPromises.push(tm.postAction(i, [{
|
|
cmd: "INIT",
|
|
init: MEM_SIZE,
|
|
code: copyCode
|
|
}], [copyCode.buffer]));
|
|
}
|
|
|
|
await Promise.all(initPromises);
|
|
|
|
}
|
|
return tm;
|
|
|
|
function getOnMsg(i) {
|
|
return function(e) {
|
|
let data;
|
|
if ((e)&&(e.data)) {
|
|
data = e.data;
|
|
} else {
|
|
data = e;
|
|
}
|
|
|
|
tm.working[i]=false;
|
|
tm.pendingDeferreds[i].resolve(data);
|
|
tm.processWorks();
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
class ThreadManager {
|
|
constructor() {
|
|
this.actionQueue = [];
|
|
this.oldPFree = 0;
|
|
}
|
|
|
|
startSyncOp() {
|
|
if (this.oldPFree != 0) throw new Error("Sync operation in progress");
|
|
this.oldPFree = this.u32[0];
|
|
}
|
|
|
|
endSyncOp() {
|
|
if (this.oldPFree == 0) throw new Error("No sync operation in progress");
|
|
this.u32[0] = this.oldPFree;
|
|
this.oldPFree = 0;
|
|
}
|
|
|
|
postAction(workerId, e, transfers, _deferred) {
|
|
if (this.working[workerId]) {
|
|
throw new Error("Posting a job t a working worker");
|
|
}
|
|
this.working[workerId] = true;
|
|
|
|
this.pendingDeferreds[workerId] = _deferred ? _deferred : new Deferred();
|
|
this.workers[workerId].postMessage(e, transfers);
|
|
|
|
return this.pendingDeferreds[workerId].promise;
|
|
}
|
|
|
|
processWorks() {
|
|
for (let i=0; (i<this.workers.length)&&(this.actionQueue.length > 0); i++) {
|
|
if (this.working[i] == false) {
|
|
const work = this.actionQueue.shift();
|
|
this.postAction(i, work.data, work.transfers, work.deferred);
|
|
}
|
|
}
|
|
}
|
|
|
|
queueAction(actionData, transfers) {
|
|
const d = new Deferred();
|
|
|
|
if (this.singleThread) {
|
|
const res = this.taskManager(actionData);
|
|
d.resolve(res);
|
|
} else {
|
|
this.actionQueue.push({
|
|
data: actionData,
|
|
transfers: transfers,
|
|
deferred: d
|
|
});
|
|
this.processWorks();
|
|
}
|
|
return d.promise;
|
|
}
|
|
|
|
resetMemory() {
|
|
this.u32[0] = this.initalPFree;
|
|
}
|
|
|
|
allocBuff(buff) {
|
|
const pointer = this.alloc(buff.byteLength);
|
|
this.setBuff(pointer, buff);
|
|
return pointer;
|
|
}
|
|
|
|
getBuff(pointer, length) {
|
|
return this.u8.slice(pointer, pointer+ length);
|
|
}
|
|
|
|
setBuff(pointer, buffer) {
|
|
this.u8.set(new Uint8Array(buffer), pointer);
|
|
}
|
|
|
|
alloc(length) {
|
|
while (this.u32[0] & 3) this.u32[0]++; // Return always aligned pointers
|
|
const res = this.u32[0];
|
|
this.u32[0] += length;
|
|
return res;
|
|
}
|
|
|
|
async terminate() {
|
|
for (let i=0; i<this.workers.length; i++) {
|
|
this.workers[i].postMessage([{cmd: "TERMINATE"}]);
|
|
}
|
|
await sleep(200);
|
|
}
|
|
|
|
}
|
|
|
|
function buildBatchApplyKey(curve, groupName) {
|
|
const G = curve[groupName];
|
|
const Fr = curve.Fr;
|
|
const tm = curve.tm;
|
|
|
|
curve[groupName].batchApplyKey = async function(buff, first, inc, inType, outType) {
|
|
inType = inType || "affine";
|
|
outType = outType || "affine";
|
|
let fnName, fnAffine;
|
|
let sGin, sGmid, sGout;
|
|
if (groupName == "G1") {
|
|
if (inType == "jacobian") {
|
|
sGin = G.F.n8*3;
|
|
fnName = "g1m_batchApplyKey";
|
|
} else {
|
|
sGin = G.F.n8*2;
|
|
fnName = "g1m_batchApplyKeyMixed";
|
|
}
|
|
sGmid = G.F.n8*3;
|
|
if (outType == "jacobian") {
|
|
sGout = G.F.n8*3;
|
|
} else {
|
|
fnAffine = "g1m_batchToAffine";
|
|
sGout = G.F.n8*2;
|
|
}
|
|
} else if (groupName == "G2") {
|
|
if (inType == "jacobian") {
|
|
sGin = G.F.n8*3;
|
|
fnName = "g2m_batchApplyKey";
|
|
} else {
|
|
sGin = G.F.n8*2;
|
|
fnName = "g2m_batchApplyKeyMixed";
|
|
}
|
|
sGmid = G.F.n8*3;
|
|
if (outType == "jacobian") {
|
|
sGout = G.F.n8*3;
|
|
} else {
|
|
fnAffine = "g2m_batchToAffine";
|
|
sGout = G.F.n8*2;
|
|
}
|
|
} else if (groupName == "Fr") {
|
|
fnName = "frm_batchApplyKey";
|
|
sGin = G.n8;
|
|
sGmid = G.n8;
|
|
sGout = G.n8;
|
|
} else {
|
|
throw new Error("Invalid group: " + groupName);
|
|
}
|
|
const nPoints = Math.floor(buff.byteLength / sGin);
|
|
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
|
|
const opPromises = [];
|
|
inc = Fr.e(inc);
|
|
let t = Fr.e(first);
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const task = [];
|
|
|
|
task.push({
|
|
cmd: "ALLOCSET",
|
|
var: 0,
|
|
buff: buff.slice(i*pointsPerChunk*sGin, i*pointsPerChunk*sGin + n*sGin)
|
|
});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: t});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: inc});
|
|
task.push({cmd: "ALLOC", var: 3, len: n*Math.max(sGmid, sGout)});
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: fnName,
|
|
params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1},
|
|
{var: 2},
|
|
{var:3}
|
|
]
|
|
});
|
|
if (fnAffine) {
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: fnAffine,
|
|
params: [
|
|
{var: 3},
|
|
{val: n},
|
|
{var: 3},
|
|
]
|
|
});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 3, len: n*sGout});
|
|
|
|
opPromises.push(tm.queueAction(task));
|
|
t = Fr.mul(t, Fr.exp(inc, n));
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const outBuff = new Uint8Array(nPoints*sGout);
|
|
let p=0;
|
|
for (let i=0; i<result.length; i++) {
|
|
outBuff.set(result[i][0], p);
|
|
p += result[i][0].byteLength;
|
|
}
|
|
|
|
return outBuff;
|
|
};
|
|
}
|
|
|
|
function buildPairing(curve) {
|
|
const tm = curve.tm;
|
|
curve.pairing = function pairing(a, b) {
|
|
|
|
tm.startSyncOp();
|
|
const pA = tm.allocBuff(curve.G1.toJacobian(a));
|
|
const pB = tm.allocBuff(curve.G2.toJacobian(b));
|
|
const pRes = tm.alloc(curve.Gt.n8);
|
|
tm.instance.exports[curve.name + "_pairing"](pA, pB, pRes);
|
|
|
|
const res = tm.getBuff(pRes, curve.Gt.n8);
|
|
|
|
tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.pairingEq = async function pairingEq() {
|
|
let buffCt;
|
|
let nEqs;
|
|
if ((arguments.length % 2) == 1) {
|
|
buffCt = arguments[arguments.length-1];
|
|
nEqs = (arguments.length -1) /2;
|
|
} else {
|
|
buffCt = curve.Gt.one;
|
|
nEqs = arguments.length /2;
|
|
}
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nEqs; i++) {
|
|
|
|
const task = [];
|
|
|
|
const g1Buff = curve.G1.toJacobian(arguments[i*2]);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: g1Buff});
|
|
task.push({cmd: "ALLOC", var: 1, len: curve.prePSize});
|
|
|
|
const g2Buff = curve.G2.toJacobian(arguments[i*2 +1]);
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: g2Buff});
|
|
task.push({cmd: "ALLOC", var: 3, len: curve.preQSize});
|
|
|
|
task.push({cmd: "ALLOC", var: 4, len: curve.Gt.n8});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_prepareG1", params: [
|
|
{var: 0},
|
|
{var: 1}
|
|
]});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_prepareG2", params: [
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_millerLoop", params: [
|
|
{var: 1},
|
|
{var: 3},
|
|
{var: 4}
|
|
]});
|
|
|
|
task.push({cmd: "GET", out: 0, var: 4, len: curve.Gt.n8});
|
|
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
tm.startSyncOp();
|
|
const pRes = tm.alloc(curve.Gt.n8);
|
|
tm.instance.exports.ftm_one(pRes);
|
|
|
|
for (let i=0; i<result.length; i++) {
|
|
const pMR = tm.allocBuff(result[i][0]);
|
|
tm.instance.exports.ftm_mul(pRes, pMR, pRes);
|
|
}
|
|
tm.instance.exports[curve.name + "_finalExponentiation"](pRes, pRes);
|
|
|
|
const pCt = tm.allocBuff(buffCt);
|
|
|
|
const r = !!tm.instance.exports.ftm_eq(pRes, pCt);
|
|
|
|
tm.endSyncOp();
|
|
|
|
return r;
|
|
};
|
|
|
|
curve.prepareG1 = function(p) {
|
|
this.tm.startSyncOp();
|
|
const pP = this.tm.allocBuff(p);
|
|
const pPrepP = this.tm.alloc(this.prePSize);
|
|
this.tm.instance.exports[this.name + "_prepareG1"](pP, pPrepP);
|
|
const res = this.tm.getBuff(pPrepP, this.prePSize);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.prepareG2 = function(q) {
|
|
this.tm.startSyncOp();
|
|
const pQ = this.tm.allocBuff(q);
|
|
const pPrepQ = this.tm.alloc(this.preQSize);
|
|
this.tm.instance.exports[this.name + "_prepareG2"](pQ, pPrepQ);
|
|
const res = this.tm.getBuff(pPrepQ, this.preQSize);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.millerLoop = function(preP, preQ) {
|
|
this.tm.startSyncOp();
|
|
const pPreP = this.tm.allocBuff(preP);
|
|
const pPreQ = this.tm.allocBuff(preQ);
|
|
const pRes = this.tm.alloc(this.Gt.n8);
|
|
this.tm.instance.exports[this.name + "_millerLoop"](pPreP, pPreQ, pRes);
|
|
const res = this.tm.getBuff(pRes, this.Gt.n8);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.finalExponentiation = function(a) {
|
|
this.tm.startSyncOp();
|
|
const pA = this.tm.allocBuff(a);
|
|
const pRes = this.tm.alloc(this.Gt.n8);
|
|
this.tm.instance.exports[this.name + "_finalExponentiation"](pA, pRes);
|
|
const res = this.tm.getBuff(pRes, this.Gt.n8);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
}
|
|
|
|
const pTSizes = [
|
|
1 , 1, 1, 1, 2, 3, 4, 5,
|
|
6 , 7, 7, 8, 9, 10, 11, 12,
|
|
13, 13, 14, 15, 16, 16, 17, 17,
|
|
17, 17, 17, 17, 17, 17, 17, 17
|
|
];
|
|
|
|
function buildMultiexp(curve, groupName) {
|
|
const G = curve[groupName];
|
|
async function _multiExp(buffBases, buffScalars, inType) {
|
|
inType = inType || "affine";
|
|
|
|
let sGIn;
|
|
let fnName;
|
|
if (groupName == "G1") {
|
|
if (inType == "affine") {
|
|
fnName = "g1m_multiexpAffine_chunk";
|
|
sGIn = G.F.n8*2;
|
|
} else {
|
|
fnName = "g1m_multiexp_chunk";
|
|
sGIn = G.F.n8*3;
|
|
}
|
|
} else if (groupName == "G2") {
|
|
if (inType == "affine") {
|
|
fnName = "g2m_multiexpAffine_chunk";
|
|
sGIn = G.F.n8*2;
|
|
} else {
|
|
fnName = "g2m_multiexp_chunk";
|
|
sGIn = G.F.n8*3;
|
|
}
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
const nPoints = Math.floor(buffBases.byteLength / sGIn);
|
|
|
|
if (nPoints == 0) return G.zero;
|
|
const sScalar = Math.floor(buffScalars.byteLength / nPoints);
|
|
if( sScalar * nPoints != buffScalars.byteLength) {
|
|
throw new Error("Scalar size does not match");
|
|
}
|
|
|
|
const bitChunkSize = pTSizes[log2(nPoints)];
|
|
const nChunks = Math.floor((sScalar*8 - 1) / bitChunkSize) +1;
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [
|
|
{cmd: "ALLOCSET", var: 0, buff: buffBases},
|
|
{cmd: "ALLOCSET", var: 1, buff: buffScalars},
|
|
{cmd: "ALLOC", var: 2, len: G.F.n8*3},
|
|
{cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: sScalar},
|
|
{val: nPoints},
|
|
{val: i*bitChunkSize},
|
|
{val: Math.min(sScalar*8 - i*bitChunkSize, bitChunkSize)},
|
|
{var: 2}
|
|
]},
|
|
{cmd: "GET", out: 0, var: 2, len: G.F.n8*3}
|
|
];
|
|
opPromises.push(
|
|
G.tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
let res = G.zero;
|
|
for (let i=result.length-1; i>=0; i--) {
|
|
if (!G.isZero(res)) {
|
|
for (let j=0; j<bitChunkSize; j++) res = G.double(res);
|
|
}
|
|
res = G.add(res, result[i][0]);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
G.multiExp = async function multiExpAffine(buffBases, buffScalars) {
|
|
return await _multiExp(buffBases, buffScalars, "jacobian");
|
|
};
|
|
G.multiExpAffine = async function multiExpAffine(buffBases, buffScalars) {
|
|
return await _multiExp(buffBases, buffScalars, "affine");
|
|
};
|
|
}
|
|
|
|
function buildFFT(curve, groupName) {
|
|
const G = curve[groupName];
|
|
const Fr = curve.Fr;
|
|
const tm = G.tm;
|
|
async function _fft(buff, inverse, inType, outType, logger) {
|
|
|
|
inType = inType || "affine";
|
|
outType = outType || "affine";
|
|
const MAX_BITS_THREAD = 12;
|
|
|
|
let sIn, sMid, sOut, fnIn2Mid, fnMid2Out, fnName, fnFFTMix, fnFFTJoin, fnFFTFinal;
|
|
if (groupName == "G1") {
|
|
if (inType == "affine") {
|
|
sIn = G.F.n8*2;
|
|
fnIn2Mid = "g1m_batchToJacobian";
|
|
} else {
|
|
sIn = G.F.n8*3;
|
|
}
|
|
sMid = G.F.n8*3;
|
|
if (inverse) {
|
|
fnName = "g1m_ifft";
|
|
fnFFTFinal = "g1m_fftFinal";
|
|
} else {
|
|
fnName = "g1m_fft";
|
|
}
|
|
fnFFTJoin = "g1m_fftJoin";
|
|
fnFFTMix = "g1m_fftMix";
|
|
|
|
if (outType == "affine") {
|
|
sOut = G.F.n8*2;
|
|
fnMid2Out = "g1m_batchToAffine";
|
|
} else {
|
|
sOut = G.F.n8*3;
|
|
}
|
|
|
|
} else if (groupName == "G2") {
|
|
if (inType == "affine") {
|
|
sIn = G.F.n8*2;
|
|
fnIn2Mid = "g2m_batchToJacobian";
|
|
} else {
|
|
sIn = G.F.n8*3;
|
|
}
|
|
sMid = G.F.n8*3;
|
|
if (inverse) {
|
|
fnName = "g2m_ifft";
|
|
fnFFTFinal = "g2m_fftFinal";
|
|
} else {
|
|
fnName = "g2m_fft";
|
|
}
|
|
fnFFTJoin = "g2m_fftJoin";
|
|
fnFFTMix = "g2m_fftMix";
|
|
if (outType == "affine") {
|
|
sOut = G.F.n8*2;
|
|
fnMid2Out = "g2m_batchToAffine";
|
|
} else {
|
|
sOut = G.F.n8*3;
|
|
}
|
|
} else if (groupName == "Fr") {
|
|
sIn = G.n8;
|
|
sMid = G.n8;
|
|
sOut = G.n8;
|
|
if (inverse) {
|
|
fnName = "frm_ifft";
|
|
fnFFTFinal = "frm_fftFinal";
|
|
} else {
|
|
fnName = "frm_fft";
|
|
}
|
|
fnFFTMix = "frm_fftMix";
|
|
fnFFTJoin = "frm_fftJoin";
|
|
}
|
|
|
|
|
|
let returnArray = false;
|
|
if (Array.isArray(buff)) {
|
|
buff = curve.array2buffer(buff, sIn);
|
|
returnArray = true;
|
|
}
|
|
|
|
const nPoints = buff.byteLength / sIn;
|
|
const bits = log2(nPoints);
|
|
|
|
if ((1 << bits) != nPoints) {
|
|
throw new Error("fft must be multiple of 2" );
|
|
}
|
|
|
|
let inv;
|
|
if (inverse) {
|
|
inv = Fr.inv(Fr.e(nPoints));
|
|
}
|
|
|
|
|
|
|
|
let buffOut;
|
|
if (nPoints <= (1 << MAX_BITS_THREAD)) {
|
|
const task = [];
|
|
task.push({cmd: "ALLOC", var: 0, len: sMid*nPoints});
|
|
task.push({cmd: "SET", var: 0, buff: buff});
|
|
if (fnIn2Mid) {
|
|
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: nPoints}, {var: 0}]});
|
|
}
|
|
task.push({cmd: "CALL", fnName:fnName, params: [{var:0}, {val: nPoints}]});
|
|
if (fnMid2Out) {
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: nPoints}, {var: 0}]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: sOut*nPoints});
|
|
|
|
const res = await tm.queueAction(task);
|
|
buffOut = res[0];
|
|
} else {
|
|
|
|
buffReverseBits(buff, sIn);
|
|
|
|
let chunks;
|
|
const pointsInChunk = 1 << MAX_BITS_THREAD;
|
|
const nChunks = nPoints / pointsInChunk;
|
|
|
|
const promises = [];
|
|
for (let i = 0; i< nChunks; i++) {
|
|
const task = [];
|
|
task.push({cmd: "ALLOC", var: 0, len: sMid*pointsInChunk});
|
|
const buffChunk = buff.slice( (pointsInChunk * i)*sIn, (pointsInChunk * (i+1))*sIn);
|
|
task.push({cmd: "SET", var: 0, buff: buffChunk});
|
|
if (fnIn2Mid) {
|
|
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
|
|
}
|
|
for (let j=1; j<=MAX_BITS_THREAD;j++) {
|
|
task.push({cmd: "CALL", fnName:fnFFTMix, params: [{var:0}, {val: pointsInChunk}, {val: j}]});
|
|
}
|
|
task.push({cmd: "GET", out:0, var: 0, len: sMid*pointsInChunk});
|
|
promises.push(tm.queueAction(task).then( (r) => {
|
|
if (logger) logger.debug(`fft: ${i}/${nChunks}`);
|
|
return r;
|
|
}));
|
|
}
|
|
|
|
chunks = await Promise.all(promises);
|
|
for (let i = 0; i< nChunks; i++) chunks[i] = chunks[i][0];
|
|
|
|
for (let i = MAX_BITS_THREAD+1; i<=bits; i++) {
|
|
if (logger) logger.debug(`fft join ${i}/${bits}`);
|
|
const nGroups = 1 << (bits - i);
|
|
const nChunksPerGroup = nChunks / nGroups;
|
|
const opPromises = [];
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const first = Fr.exp( Fr.w[i], k*pointsInChunk);
|
|
const inc = Fr.w[i];
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: first});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsInChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
if (i==bits) {
|
|
if (fnFFTFinal) {
|
|
task.push({cmd: "ALLOCSET", var: 4, buff: inv});
|
|
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
|
|
{var: 0},
|
|
{val: pointsInChunk},
|
|
{var: 4},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
|
|
{var: 1},
|
|
{val: pointsInChunk},
|
|
{var: 4},
|
|
]});
|
|
}
|
|
if (fnMid2Out) {
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:1}, {val: pointsInChunk}, {var: 1}]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sOut});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sOut});
|
|
} else {
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sMid});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sMid});
|
|
}
|
|
opPromises.push(tm.queueAction(task));
|
|
}
|
|
}
|
|
|
|
const res = await Promise.all(opPromises);
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
const resChunk = res.shift();
|
|
chunks[o1] = resChunk[0];
|
|
chunks[o2] = resChunk[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
buffOut = new Uint8Array(nPoints * sOut);
|
|
if (inverse) {
|
|
buffOut.set(chunks[0].slice((pointsInChunk-1)*sOut));
|
|
let p= sOut;
|
|
for (let i=nChunks-1; i>0; i--) {
|
|
buffOut.set(chunks[i], p);
|
|
p += pointsInChunk*sOut;
|
|
delete chunks[i]; // Liberate mem
|
|
}
|
|
buffOut.set(chunks[0].slice(0, (pointsInChunk-1)*sOut), p);
|
|
delete chunks[0];
|
|
} else {
|
|
for (let i=0; i<nChunks; i++) {
|
|
buffOut.set(chunks[i], pointsInChunk*sOut*i);
|
|
delete chunks[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (returnArray) {
|
|
return curve.buffer2array(buffOut, sOut);
|
|
} else {
|
|
return buffOut;
|
|
}
|
|
}
|
|
|
|
G.fft = async function(buff, inType, outType, logger) {
|
|
return await _fft(buff, false, inType, outType, logger);
|
|
};
|
|
|
|
G.ifft = async function(buff, inType, outType, logger) {
|
|
return await _fft(buff, true, inType, outType, logger);
|
|
};
|
|
|
|
G.fftMix = async function fftMix(buff) {
|
|
const sG = G.F.n8*3;
|
|
let fnName, fnFFTJoin;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftMix";
|
|
fnFFTJoin = "g1m_fftJoin";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftMix";
|
|
fnFFTJoin = "g2m_fftJoin";
|
|
} else if (groupName == "Fr") {
|
|
fnName = "frm_fftMix";
|
|
fnFFTJoin = "frm_fftJoin";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
const nPoints = Math.floor(buff.byteLength / sG);
|
|
const power = log2(nPoints);
|
|
|
|
let nChunks = 1 << log2(tm.concurrency);
|
|
|
|
if (nPoints <= nChunks*2) nChunks = 1;
|
|
|
|
const pointsPerChunk = nPoints / nChunks;
|
|
|
|
const powerChunk = log2(pointsPerChunk);
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [];
|
|
const b = buff.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b});
|
|
for (let j=1; j<=powerChunk; j++) {
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: pointsPerChunk},
|
|
{val: j}
|
|
]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const chunks = [];
|
|
for (let i=0; i<result.length; i++) chunks[i] = result[i][0];
|
|
|
|
|
|
for (let i = powerChunk+1; i<=power; i++) {
|
|
const nGroups = 1 << (power - i);
|
|
const nChunksPerGroup = nChunks / nGroups;
|
|
const opPromises = [];
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const first = Fr.exp( Fr.w[i], k*pointsPerChunk);
|
|
const inc = Fr.w[i];
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: first});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsPerChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
|
|
opPromises.push(tm.queueAction(task));
|
|
}
|
|
}
|
|
|
|
const res = await Promise.all(opPromises);
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
const resChunk = res.shift();
|
|
chunks[o1] = resChunk[0];
|
|
chunks[o2] = resChunk[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sG);
|
|
let p =0;
|
|
for (let i=0; i<nChunks; i++) {
|
|
fullBuffOut.set(chunks[i], p);
|
|
p+=chunks[i].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
|
|
G.fftJoin = async function fftJoin(buff1, buff2, first, inc) {
|
|
const sG = G.F.n8*3;
|
|
let fnName;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftJoin";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftJoin";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
if (buff1.byteLength != buff2.byteLength) {
|
|
throw new Error("Invalid buffer size");
|
|
}
|
|
const nPoints = Math.floor(buff1.byteLength / sG);
|
|
if (nPoints != 1 << log2(nPoints)) {
|
|
throw new Error("Invalid number of points");
|
|
}
|
|
|
|
let nChunks = 1 << log2(tm.concurrency);
|
|
if (nPoints <= nChunks*2) nChunks = 1;
|
|
|
|
const pointsPerChunk = nPoints / nChunks;
|
|
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [];
|
|
|
|
const firstChunk = Fr.mul(first, Fr.exp(inc, i*pointsPerChunk));
|
|
const b1 = buff1.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
const b2 = buff2.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b1});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: b2});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: firstChunk});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsPerChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut1 = new Uint8Array(nPoints*sG);
|
|
const fullBuffOut2 = new Uint8Array(nPoints*sG);
|
|
let p =0;
|
|
for (let i=0; i<result.length; i++) {
|
|
fullBuffOut1.set(result[i][0], p);
|
|
fullBuffOut2.set(result[i][1], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return [fullBuffOut1, fullBuffOut2];
|
|
};
|
|
|
|
G.fftFinal = async function fftFinal(buff, factor) {
|
|
const sG = G.F.n8*3;
|
|
const sGout = G.F.n8*2;
|
|
let fnName, fnToAffine;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftFinal";
|
|
fnToAffine = "g1m_batchToAffine";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftFinal";
|
|
fnToAffine = "g2m_batchToAffine";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
const nPoints = Math.floor(buff.byteLength / sG);
|
|
if (nPoints != 1 << log2(nPoints)) {
|
|
throw new Error("Invalid number of points");
|
|
}
|
|
|
|
const pointsPerChunk = Math.floor(nPoints / tm.concurrency);
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
const task = [];
|
|
const b = buff.slice((i* pointsPerChunk)*sG, (i*pointsPerChunk+n)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: factor});
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: fnToAffine, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 0},
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: n*sGout});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sGout);
|
|
let p =0;
|
|
for (let i=result.length-1; i>=0; i--) {
|
|
fullBuffOut.set(result[i][0], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
}
|
|
|
|
async function buildEngine(params) {
|
|
|
|
const tm = await buildThreadManager(params.wasm, params.singleThread);
|
|
|
|
|
|
const curve = {};
|
|
|
|
curve.q = e$2(params.wasm.q);
|
|
curve.r = e$2(params.wasm.r);
|
|
curve.name = params.name;
|
|
curve.tm = tm;
|
|
curve.prePSize = params.wasm.prePSize;
|
|
curve.preQSize = params.wasm.preQSize;
|
|
curve.Fr = new WasmField1(tm, "frm", params.n8r, params.r);
|
|
curve.F1 = new WasmField1(tm, "f1m", params.n8q, params.q);
|
|
curve.F2 = new WasmField2(tm, "f2m", curve.F1);
|
|
curve.G1 = new WasmCurve(tm, "g1m", curve.F1, params.wasm.pG1gen, params.wasm.pG1b, params.cofactorG1);
|
|
curve.G2 = new WasmCurve(tm, "g2m", curve.F2, params.wasm.pG2gen, params.wasm.pG2b, params.cofactorG2);
|
|
curve.F6 = new WasmField3(tm, "f6m", curve.F2);
|
|
curve.F12 = new WasmField2(tm, "ftm", curve.F6);
|
|
|
|
curve.Gt = curve.F12;
|
|
|
|
buildBatchApplyKey(curve, "G1");
|
|
buildBatchApplyKey(curve, "G2");
|
|
buildBatchApplyKey(curve, "Fr");
|
|
|
|
buildMultiexp(curve, "G1");
|
|
buildMultiexp(curve, "G2");
|
|
|
|
buildFFT(curve, "G1");
|
|
buildFFT(curve, "G2");
|
|
buildFFT(curve, "Fr");
|
|
|
|
buildPairing(curve);
|
|
|
|
curve.array2buffer = function(arr, sG) {
|
|
const buff = new Uint8Array(sG*arr.length);
|
|
|
|
for (let i=0; i<arr.length; i++) {
|
|
buff.set(arr[i], i*sG);
|
|
}
|
|
|
|
return buff;
|
|
};
|
|
|
|
curve.buffer2array = function(buff , sG) {
|
|
const n= buff.length / sG;
|
|
const arr = new Array(n);
|
|
for (let i=0; i<n; i++) {
|
|
arr[i] = buff.slice(i*sG, i*sG+sG);
|
|
}
|
|
return arr;
|
|
};
|
|
|
|
return curve;
|
|
}
|
|
|
|
let curve;
|
|
|
|
async function buildBn128() {
|
|
|
|
if (curve) return curve;
|
|
const params = {
|
|
name: "bn128",
|
|
wasm: wasmcurves.bn128_wasm,
|
|
q: e$2("21888242871839275222246405745257275088696311157297823662689037894645226208583"),
|
|
r: e$2("21888242871839275222246405745257275088548364400416034343698204186575808495617"),
|
|
n8q: 32,
|
|
n8r: 32,
|
|
cofactorG2: e$2("30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d", 16),
|
|
singleThread: false
|
|
};
|
|
|
|
curve = await buildEngine(params);
|
|
curve.terminate = async function() {
|
|
curve = null;
|
|
await this.tm.terminate();
|
|
};
|
|
|
|
return curve;
|
|
}
|
|
|
|
let curve$1;
|
|
|
|
async function buildBls12381() {
|
|
|
|
if (curve$1) return curve$1;
|
|
const params = {
|
|
name: "bls12381",
|
|
wasm: wasmcurves.bls12381_wasm,
|
|
q: e$2("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16),
|
|
r: e$2("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16),
|
|
n8q: 48,
|
|
n8r: 32,
|
|
cofactorG1: e$2("0x396c8c005555e1568c00aaab0000aaab", 16),
|
|
cofactorG2: e$2("0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5", 16),
|
|
singleThread: false
|
|
};
|
|
|
|
curve$1 = await buildEngine(params);
|
|
|
|
curve$1.terminate = async function() {
|
|
curve$1 = null;
|
|
await this.tm.terminate();
|
|
};
|
|
return curve$1;
|
|
}
|
|
|
|
const Scalar$1=_Scalar;
|
|
const utils$1 = _utils;
|
|
|
|
async function open(fileName, openFlags, cacheSize) {
|
|
cacheSize = cacheSize || 4096*64;
|
|
if (["w+", "wx+", "r", "ax+", "a+"].indexOf(openFlags) <0)
|
|
throw new Error("Invalid open option");
|
|
const fd =await crypto.promises.open(fileName, openFlags);
|
|
|
|
const stats = await fd.stat();
|
|
|
|
return new FastFile(fd, stats, cacheSize, fileName);
|
|
}
|
|
|
|
const tmpBuff32 = new Uint8Array(4);
|
|
const tmpBuff32v = new DataView(tmpBuff32.buffer);
|
|
const tmpBuff64 = new Uint8Array(8);
|
|
const tmpBuff64v = new DataView(tmpBuff64.buffer);
|
|
|
|
class FastFile {
|
|
|
|
constructor(fd, stats, cacheSize, fileName) {
|
|
this.fileName = fileName;
|
|
this.fd = fd;
|
|
this.pos = 0;
|
|
this.pageBits = 8;
|
|
this.pageSize = (1 << this.pageBits);
|
|
while (this.pageSize < stats.blksize*4) {
|
|
this.pageBits ++;
|
|
this.pageSize *= 2;
|
|
}
|
|
this.totalSize = stats.size;
|
|
this.totalPages = Math.floor((stats.size -1) / this.pageSize)+1;
|
|
this.maxPagesLoaded = Math.floor( cacheSize / this.pageSize)+1;
|
|
this.pages = {};
|
|
this.pendingLoads = [];
|
|
this.writing = false;
|
|
this.reading = false;
|
|
}
|
|
|
|
_loadPage(p) {
|
|
const self = this;
|
|
return new Promise((resolve, reject)=> {
|
|
self.pendingLoads.push({
|
|
page: p,
|
|
resolve: resolve,
|
|
reject: reject
|
|
});
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
});
|
|
}
|
|
|
|
|
|
_triggerLoad() {
|
|
const self = this;
|
|
processPendingLoads();
|
|
if (self.pendingLoads.length == 0) return;
|
|
if (Object.keys(self.pages).length >= self.maxPagesLoaded) {
|
|
const dp = getDeletablePage();
|
|
if (dp<0) { // // No sizes available
|
|
// setTimeout(self._triggerLoad.bind(self), 10000);
|
|
return;
|
|
}
|
|
delete self.pages[dp];
|
|
}
|
|
const load = self.pendingLoads.shift();
|
|
if (load.page>=self.totalPages) {
|
|
self.pages[load.page] = {
|
|
dirty: false,
|
|
buff: new Uint8Array(self.pageSize),
|
|
pendingOps: 1,
|
|
size: 0
|
|
};
|
|
load.resolve();
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
return;
|
|
}
|
|
if (self.reading) {
|
|
self.pendingLoads.unshift(load);
|
|
return; // Only one read at a time.
|
|
}
|
|
|
|
self.reading = true;
|
|
const page = {
|
|
dirty: false,
|
|
buff: new Uint8Array(self.pageSize),
|
|
pendingOps: 1,
|
|
size: 0
|
|
};
|
|
self.fd.read(page.buff, 0, self.pageSize, load.page*self.pageSize).then((res)=> {
|
|
page.size = res.bytesRead;
|
|
self.pages[load.page] = page;
|
|
self.reading = false;
|
|
load.resolve();
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
}, (err) => {
|
|
load.reject(err);
|
|
});
|
|
|
|
function processPendingLoads() {
|
|
const newPendingLoads = [];
|
|
for (let i=0; i<self.pendingLoads.length; i++) {
|
|
const load = self.pendingLoads[i];
|
|
if (typeof self.pages[load.page] != "undefined") {
|
|
self.pages[load.page].pendingOps ++;
|
|
load.resolve();
|
|
} else {
|
|
newPendingLoads.push(load);
|
|
}
|
|
}
|
|
self.pendingLoads = newPendingLoads;
|
|
}
|
|
|
|
function getDeletablePage() {
|
|
for (let p in self.pages) {
|
|
const page = self.pages[p];
|
|
if ((page.dirty == false)&&(page.pendingOps==0)) return p;
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
_triggerWrite() {
|
|
const self = this;
|
|
if (self.writing) return;
|
|
const p = self._getDirtyPage();
|
|
if (p<0) {
|
|
if (self.pendingClose) self.pendingClose();
|
|
return;
|
|
}
|
|
self.writing=true;
|
|
self.pages[p].dirty = false;
|
|
self.fd.write(self.pages[p].buff, 0, self.pages[p].size, p*self.pageSize).then(() => {
|
|
self.writing = false;
|
|
setImmediate(self._triggerWrite.bind(self));
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
}, (err) => {
|
|
console.log("ERROR Writing: "+err);
|
|
self.error = err;
|
|
self._tryClose();
|
|
});
|
|
|
|
}
|
|
|
|
_getDirtyPage() {
|
|
for (let p in this.pages) {
|
|
if (this.pages[p].dirty) return p;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
async write(buff, pos) {
|
|
if (buff.byteLength == 0) return;
|
|
const self = this;
|
|
/*
|
|
if (buff.byteLength > self.pageSize*self.maxPagesLoaded*0.8) {
|
|
const cacheSize = Math.floor(buff.byteLength * 1.1);
|
|
this.maxPagesLoaded = Math.floor( cacheSize / self.pageSize)+1;
|
|
}
|
|
*/
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
self.pos = pos+buff.byteLength;
|
|
if (self.totalSize < pos + buff.byteLength) self.totalSize = pos + buff.byteLength;
|
|
if (self.pendingClose)
|
|
throw new Error("Writing a closing file");
|
|
const firstPage = Math.floor(pos / self.pageSize);
|
|
|
|
// for (let i=firstPage; i<=lastPage; i++) await self._loadPage(i);
|
|
|
|
let p = firstPage;
|
|
let o = pos % self.pageSize;
|
|
let r = buff.byteLength;
|
|
while (r>0) {
|
|
await self._loadPage(p);
|
|
const l = (o+r > self.pageSize) ? (self.pageSize -o) : r;
|
|
const srcView = new Uint8Array(buff.buffer, buff.byteLength - r, l);
|
|
const dstView = new Uint8Array(self.pages[p].buff.buffer, o, l);
|
|
dstView.set(srcView);
|
|
self.pages[p].dirty = true;
|
|
self.pages[p].pendingOps --;
|
|
self.pages[p].size = Math.max(o+l, self.pages[p].size);
|
|
if (p>=self.totalPages) {
|
|
self.totalPages = p+1;
|
|
}
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
setImmediate(self._triggerWrite.bind(self));
|
|
}
|
|
}
|
|
|
|
async read(len, pos) {
|
|
if (len == 0) {
|
|
return new Uint8Array(0);
|
|
}
|
|
const self = this;
|
|
if (len > self.pageSize*self.maxPagesLoaded*0.8) {
|
|
const cacheSize = Math.floor(len * 1.1);
|
|
this.maxPagesLoaded = Math.floor( cacheSize / self.pageSize)+1;
|
|
}
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
self.pos = pos+len;
|
|
if (self.pendingClose)
|
|
throw new Error("Reading a closing file");
|
|
const firstPage = Math.floor(pos / self.pageSize);
|
|
|
|
let buff = new Uint8Array(len);
|
|
let p = firstPage;
|
|
let o = pos % self.pageSize;
|
|
// Remaining bytes to read
|
|
let r = pos + len > self.totalSize ? len - (pos + len - self.totalSize): len;
|
|
while (r>0) {
|
|
await self._loadPage(p);
|
|
// bytes to copy from this page
|
|
const l = (o+r > self.pageSize) ? (self.pageSize -o) : r;
|
|
const srcView = new Uint8Array(self.pages[p].buff.buffer, o, l);
|
|
buff.set(srcView, len-r);
|
|
self.pages[p].pendingOps --;
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
_tryClose() {
|
|
const self = this;
|
|
if (!self.pendingClose) return;
|
|
if (self.error) {
|
|
self.pendingCloseReject(self.error);
|
|
}
|
|
const p = self._getDirtyPage();
|
|
if ((p>=0) || (self.writing) || (self.reading) || (self.pendingLoads.length>0)) return;
|
|
self.pendingClose();
|
|
}
|
|
|
|
close() {
|
|
const self = this;
|
|
if (self.pendingClose)
|
|
throw new Error("Closing the file twice");
|
|
return new Promise((resolve, reject) => {
|
|
self.pendingClose = resolve;
|
|
self.pendingCloseReject = reject;
|
|
self._tryClose();
|
|
}).then(()=> {
|
|
self.fd.close();
|
|
}, (err) => {
|
|
self.fd.close();
|
|
throw (err);
|
|
});
|
|
}
|
|
|
|
async discard() {
|
|
const self = this;
|
|
await self.close();
|
|
await crypto.promises.unlink(this.fileName);
|
|
}
|
|
|
|
async writeULE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v.setUint32(0, v, true);
|
|
|
|
await self.write(tmpBuff32, pos);
|
|
}
|
|
|
|
async writeUBE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v.setUint32(0, v, false);
|
|
|
|
await self.write(tmpBuff32, pos);
|
|
}
|
|
|
|
|
|
async writeULE64(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff64v.setUint32(0, v & 0xFFFFFFFF, true);
|
|
tmpBuff64v.setUint32(4, Math.floor(v / 0x100000000) , true);
|
|
|
|
await self.write(tmpBuff64, pos);
|
|
}
|
|
|
|
async readULE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[0];
|
|
}
|
|
|
|
async readUBE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new DataView(b.buffer);
|
|
|
|
return view.getUint32(0, false);
|
|
}
|
|
|
|
async readULE64(pos) {
|
|
const self = this;
|
|
const b = await self.read(8, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[1] * 0x100000000 + view[0];
|
|
}
|
|
|
|
}
|
|
|
|
function createNew(o) {
|
|
const initialSize = o.initialSize || 1<<20;
|
|
const fd = new MemFile();
|
|
fd.o = o;
|
|
fd.o.data = new Uint8Array(initialSize);
|
|
fd.allocSize = initialSize;
|
|
fd.totalSize = 0;
|
|
fd.readOnly = false;
|
|
fd.pos = 0;
|
|
return fd;
|
|
}
|
|
|
|
function readExisting(o) {
|
|
const fd = new MemFile();
|
|
fd.o = o;
|
|
fd.allocSize = o.data.byteLength;
|
|
fd.totalSize = o.data.byteLength;
|
|
fd.readOnly = true;
|
|
fd.pos = 0;
|
|
return fd;
|
|
}
|
|
|
|
const tmpBuff32$1 = new Uint8Array(4);
|
|
const tmpBuff32v$1 = new DataView(tmpBuff32$1.buffer);
|
|
const tmpBuff64$1 = new Uint8Array(8);
|
|
const tmpBuff64v$1 = new DataView(tmpBuff64$1.buffer);
|
|
|
|
class MemFile {
|
|
|
|
constructor() {
|
|
this.pageSize = 1 << 14; // for compatibility
|
|
}
|
|
|
|
_resizeIfNeeded(newLen) {
|
|
if (newLen > this.allocSize) {
|
|
const newAllocSize = Math.max(
|
|
this.allocSize + (1 << 20),
|
|
Math.floor(this.allocSize * 1.1),
|
|
newLen
|
|
);
|
|
const newData = new Uint8Array(newAllocSize);
|
|
newData.set(this.o.data);
|
|
this.o.data = newData;
|
|
this.allocSize = newAllocSize;
|
|
}
|
|
}
|
|
|
|
async write(buff, pos) {
|
|
const self =this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) throw new Error("Writing a read only file");
|
|
|
|
this._resizeIfNeeded(pos + buff.byteLength);
|
|
|
|
this.o.data.set(buff, pos);
|
|
|
|
if (pos + buff.byteLength > this.totalSize) this.totalSize = pos + buff.byteLength;
|
|
|
|
this.pos = pos + buff.byteLength;
|
|
}
|
|
|
|
async read(len, pos) {
|
|
const self = this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) {
|
|
if (pos + len > this.totalSize) throw new Error("Reading out of bounds");
|
|
}
|
|
this._resizeIfNeeded(pos + len);
|
|
|
|
const buff = this.o.data.slice(pos, pos+len);
|
|
this.pos = pos + len;
|
|
return buff;
|
|
}
|
|
|
|
close() {
|
|
if (this.o.data.byteLength != this.totalSize) {
|
|
this.o.data = this.o.data.slice(0, this.totalSize);
|
|
}
|
|
}
|
|
|
|
async discard() {
|
|
}
|
|
|
|
|
|
async writeULE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v$1.setUint32(0, v, true);
|
|
|
|
await self.write(tmpBuff32$1, pos);
|
|
}
|
|
|
|
async writeUBE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v$1.setUint32(0, v, false);
|
|
|
|
await self.write(tmpBuff32$1, pos);
|
|
}
|
|
|
|
|
|
async writeULE64(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff64v$1.setUint32(0, v & 0xFFFFFFFF, true);
|
|
tmpBuff64v$1.setUint32(4, Math.floor(v / 0x100000000) , true);
|
|
|
|
await self.write(tmpBuff64$1, pos);
|
|
}
|
|
|
|
|
|
async readULE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[0];
|
|
}
|
|
|
|
async readUBE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new DataView(b.buffer);
|
|
|
|
return view.getUint32(0, false);
|
|
}
|
|
|
|
async readULE64(pos) {
|
|
const self = this;
|
|
const b = await self.read(8, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[1] * 0x100000000 + view[0];
|
|
}
|
|
|
|
}
|
|
|
|
const PAGE_SIZE = 1<<22;
|
|
|
|
function createNew$1(o) {
|
|
const initialSize = o.initialSize || 0;
|
|
const fd = new BigMemFile();
|
|
fd.o = o;
|
|
const nPages = initialSize ? Math.floor((initialSize - 1) / PAGE_SIZE)+1 : 0;
|
|
fd.o.data = [];
|
|
for (let i=0; i<nPages-1; i++) {
|
|
fd.o.data.push( new Uint8Array(PAGE_SIZE));
|
|
}
|
|
if (nPages) fd.o.data.push( new Uint8Array(initialSize - PAGE_SIZE*(nPages-1)));
|
|
fd.totalSize = 0;
|
|
fd.readOnly = false;
|
|
fd.pos = 0;
|
|
return fd;
|
|
}
|
|
|
|
function readExisting$1(o) {
|
|
const fd = new BigMemFile();
|
|
fd.o = o;
|
|
fd.totalSize = (o.data.length-1)* PAGE_SIZE + o.data[o.data.length-1].byteLength;
|
|
fd.readOnly = true;
|
|
fd.pos = 0;
|
|
return fd;
|
|
}
|
|
|
|
const tmpBuff32$2 = new Uint8Array(4);
|
|
const tmpBuff32v$2 = new DataView(tmpBuff32$2.buffer);
|
|
const tmpBuff64$2 = new Uint8Array(8);
|
|
const tmpBuff64v$2 = new DataView(tmpBuff64$2.buffer);
|
|
|
|
class BigMemFile {
|
|
|
|
constructor() {
|
|
this.pageSize = 1 << 14; // for compatibility
|
|
}
|
|
|
|
_resizeIfNeeded(newLen) {
|
|
|
|
if (newLen <= this.totalSize) return;
|
|
|
|
if (this.readOnly) throw new Error("Reading out of file bounds");
|
|
|
|
const nPages = Math.floor((newLen - 1) / PAGE_SIZE)+1;
|
|
for (let i= Math.max(this.o.data.length-1, 0); i<nPages; i++) {
|
|
const newSize = i<nPages-1 ? PAGE_SIZE : newLen - (nPages-1)*PAGE_SIZE;
|
|
const p = new Uint8Array(newSize);
|
|
if (i == this.o.data.length-1) p.set(this.o.data[i]);
|
|
this.o.data[i] = p;
|
|
}
|
|
this.totalSize = newLen;
|
|
}
|
|
|
|
async write(buff, pos) {
|
|
const self =this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) throw new Error("Writing a read only file");
|
|
|
|
this._resizeIfNeeded(pos + buff.byteLength);
|
|
|
|
const firstPage = Math.floor(pos / PAGE_SIZE);
|
|
|
|
let p = firstPage;
|
|
let o = pos % PAGE_SIZE;
|
|
let r = buff.byteLength;
|
|
while (r>0) {
|
|
const l = (o+r > PAGE_SIZE) ? (PAGE_SIZE -o) : r;
|
|
const srcView = new Uint8Array(buff.buffer, buff.byteLength - r, l);
|
|
const dstView = new Uint8Array(self.o.data[p].buffer, o, l);
|
|
dstView.set(srcView);
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
}
|
|
|
|
this.pos = pos + buff.byteLength;
|
|
}
|
|
|
|
async read(len, pos) {
|
|
const self = this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) {
|
|
if (pos + len > this.totalSize) throw new Error("Reading out of bounds");
|
|
}
|
|
this._resizeIfNeeded(pos + len);
|
|
|
|
const firstPage = Math.floor(pos / PAGE_SIZE);
|
|
|
|
let buff = new Uint8Array(len);
|
|
let p = firstPage;
|
|
let o = pos % PAGE_SIZE;
|
|
// Remaining bytes to read
|
|
let r = len;
|
|
while (r>0) {
|
|
// bytes to copy from this page
|
|
const l = (o+r > PAGE_SIZE) ? (PAGE_SIZE -o) : r;
|
|
const srcView = new Uint8Array(self.o.data[p].buffer, o, l);
|
|
buff.set(srcView, len-r);
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
}
|
|
|
|
this.pos = pos + len;
|
|
return buff;
|
|
}
|
|
|
|
close() {
|
|
}
|
|
|
|
async discard() {
|
|
}
|
|
|
|
|
|
async writeULE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v$2.setUint32(0, v, true);
|
|
|
|
await self.write(tmpBuff32$2, pos);
|
|
}
|
|
|
|
async writeUBE32(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff32v$2.setUint32(0, v, false);
|
|
|
|
await self.write(tmpBuff32$2, pos);
|
|
}
|
|
|
|
|
|
async writeULE64(v, pos) {
|
|
const self = this;
|
|
|
|
tmpBuff64v$2.setUint32(0, v & 0xFFFFFFFF, true);
|
|
tmpBuff64v$2.setUint32(4, Math.floor(v / 0x100000000) , true);
|
|
|
|
await self.write(tmpBuff64$2, pos);
|
|
}
|
|
|
|
|
|
async readULE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[0];
|
|
}
|
|
|
|
async readUBE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new DataView(b.buffer);
|
|
|
|
return view.getUint32(0, false);
|
|
}
|
|
|
|
async readULE64(pos) {
|
|
const self = this;
|
|
const b = await self.read(8, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[1] * 0x100000000 + view[0];
|
|
}
|
|
|
|
}
|
|
|
|
/* global fetch */
|
|
|
|
|
|
async function createOverride(o, b) {
|
|
if (typeof o === "string") {
|
|
o = {
|
|
type: "file",
|
|
fileName: o,
|
|
cacheSize: b
|
|
};
|
|
}
|
|
if (o.type == "file") {
|
|
return await open(o.fileName, "w+", o.cacheSize);
|
|
} else if (o.type == "mem") {
|
|
return createNew(o);
|
|
} else if (o.type == "bigMem") {
|
|
return createNew$1(o);
|
|
} else {
|
|
throw new Error("Invalid FastFile type: "+o.type);
|
|
}
|
|
}
|
|
|
|
async function readExisting$2(o, b) {
|
|
if (o instanceof Uint8Array) {
|
|
o = {
|
|
type: "mem",
|
|
data: o
|
|
};
|
|
}
|
|
{
|
|
if (typeof o === "string") {
|
|
const buff = await fetch(o).then( function(res) {
|
|
return res.arrayBuffer();
|
|
}).then(function (ab) {
|
|
return new Uint8Array(ab);
|
|
});
|
|
o = {
|
|
type: "mem",
|
|
data: buff
|
|
};
|
|
}
|
|
}
|
|
if (o.type == "file") {
|
|
return await open(o.fileName, "r", o.cacheSize);
|
|
} else if (o.type == "mem") {
|
|
return await readExisting(o);
|
|
} else if (o.type == "bigMem") {
|
|
return await readExisting$1(o);
|
|
} else {
|
|
throw new Error("Invalid FastFile type: "+o.type);
|
|
}
|
|
}
|
|
|
|
async function readBinFile(fileName, type, maxVersion) {
|
|
|
|
const fd = await readExisting$2(fileName);
|
|
|
|
const b = await fd.read(4);
|
|
let readedType = "";
|
|
for (let i=0; i<4; i++) readedType += String.fromCharCode(b[i]);
|
|
|
|
if (readedType != type) throw new Error(fileName + ": Invalid File format");
|
|
|
|
let v = await fd.readULE32();
|
|
|
|
if (v>maxVersion) throw new Error("Version not supported");
|
|
|
|
const nSections = await fd.readULE32();
|
|
|
|
// Scan sections
|
|
let sections = [];
|
|
for (let i=0; i<nSections; i++) {
|
|
let ht = await fd.readULE32();
|
|
let hl = await fd.readULE64();
|
|
if (typeof sections[ht] == "undefined") sections[ht] = [];
|
|
sections[ht].push({
|
|
p: fd.pos,
|
|
size: hl
|
|
});
|
|
fd.pos += hl;
|
|
}
|
|
|
|
return {fd, sections};
|
|
}
|
|
|
|
async function createBinFile(fileName, type, version, nSections) {
|
|
|
|
const fd = await createOverride(fileName);
|
|
|
|
const buff = new Uint8Array(4);
|
|
for (let i=0; i<4; i++) buff[i] = type.charCodeAt(i);
|
|
await fd.write(buff, 0); // Magic "r1cs"
|
|
|
|
await fd.writeULE32(version); // Version
|
|
await fd.writeULE32(nSections); // Number of Sections
|
|
|
|
return fd;
|
|
}
|
|
|
|
async function startWriteSection(fd, idSection) {
|
|
if (typeof fd.writingSection !== "undefined") throw new Error("Already writing a section");
|
|
await fd.writeULE32(idSection); // Header type
|
|
fd.writingSection = {
|
|
pSectionSize: fd.pos
|
|
};
|
|
await fd.writeULE64(0); // Temporally set to 0 length
|
|
}
|
|
|
|
async function endWriteSection(fd) {
|
|
if (typeof fd.writingSection === "undefined") throw new Error("Not writing a section");
|
|
|
|
const sectionSize = fd.pos - fd.writingSection.pSectionSize - 8;
|
|
const oldPos = fd.pos;
|
|
fd.pos = fd.writingSection.pSectionSize;
|
|
await fd.writeULE64(sectionSize);
|
|
fd.pos = oldPos;
|
|
delete fd.writingSection;
|
|
}
|
|
|
|
async function startReadUniqueSection(fd, sections, idSection) {
|
|
if (typeof fd.readingSection !== "undefined") throw new Error("Already reading a section");
|
|
if (!sections[idSection]) throw new Error(fd.fileName + ": Missing section "+ idSection );
|
|
if (sections[idSection].length>1) throw new Error(fd.fileName +": Section Duplicated " +idSection);
|
|
|
|
fd.pos = sections[idSection][0].p;
|
|
|
|
fd.readingSection = sections[idSection][0];
|
|
}
|
|
|
|
async function endReadSection(fd, noCheck) {
|
|
if (typeof fd.readingSection === "undefined") throw new Error("Not reading a section");
|
|
if (!noCheck) {
|
|
if (fd.pos-fd.readingSection.p != fd.readingSection.size) throw new Error("Invalid section size reading");
|
|
}
|
|
delete fd.readingSection;
|
|
}
|
|
|
|
async function writeBigInt(fd, n, n8, pos) {
|
|
const buff = new Uint8Array(n8);
|
|
Scalar$1.toRprLE(buff, 0, n, n8);
|
|
await fd.write(buff, pos);
|
|
}
|
|
|
|
async function readBigInt(fd, n8, pos) {
|
|
const buff = await fd.read(n8, pos);
|
|
return Scalar$1.fromRprLE(buff, 0, n8);
|
|
}
|
|
|
|
async function copySection(fdFrom, sections, fdTo, sectionId) {
|
|
const chunkSize = fdFrom.pageSize;
|
|
await startReadUniqueSection(fdFrom, sections, sectionId);
|
|
await startWriteSection(fdTo, sectionId);
|
|
for (let p=0; p<sections[sectionId][0].size; p+=chunkSize) {
|
|
const l = Math.min(sections[sectionId][0].size -p, chunkSize);
|
|
const buff = await fdFrom.read(l);
|
|
await fdTo.write(buff);
|
|
}
|
|
await endWriteSection(fdTo);
|
|
await endReadSection(fdFrom);
|
|
|
|
}
|
|
|
|
async function readFullSection(fd, sections, idSection) {
|
|
await startReadUniqueSection(fd, sections, idSection);
|
|
const res = await fd.read(fd.readingSection.size);
|
|
await endReadSection(fd);
|
|
return res;
|
|
}
|
|
|
|
async function sectionIsEqual(fd1, sections1, fd2, sections2, idSection) {
|
|
const MAX_BUFF_SIZE = fd1.pageSize * 16;
|
|
await startReadUniqueSection(fd1, sections1, idSection);
|
|
await startReadUniqueSection(fd2, sections2, idSection);
|
|
if (sections1[idSection][0].size != sections2[idSection][0].size) return false;
|
|
const totalBytes=sections1[idSection][0].size;
|
|
for (let i=0; i<totalBytes; i+= MAX_BUFF_SIZE) {
|
|
const n = Math.min(totalBytes-i, MAX_BUFF_SIZE);
|
|
const buff1 = await fd1.read(n);
|
|
const buff2 = await fd2.read(n);
|
|
for (let j=0; j<n; j++) if (buff1[j] != buff2[j]) return false;
|
|
}
|
|
await endReadSection(fd1);
|
|
await endReadSection(fd2);
|
|
return true;
|
|
}
|
|
|
|
const bls12381r = Scalar$1.e("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16);
|
|
const bn128r = Scalar$1.e("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
|
|
const bls12381q = Scalar$1.e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16);
|
|
const bn128q = Scalar$1.e("21888242871839275222246405745257275088696311157297823662689037894645226208583");
|
|
|
|
async function getCurveFromQ(q) {
|
|
let curve;
|
|
if (Scalar$1.eq(q, bn128q)) {
|
|
curve = await buildBn128();
|
|
} else if (Scalar$1.eq(q, bls12381q)) {
|
|
curve = await buildBls12381();
|
|
} else {
|
|
throw new Error(`Curve not supported: ${Scalar$1.toString(q)}`);
|
|
}
|
|
return curve;
|
|
}
|
|
async function getCurveFromName(name) {
|
|
let curve;
|
|
const normName = normalizeName(name);
|
|
if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) {
|
|
curve = await buildBn128();
|
|
} else if (["BLS12381"].indexOf(normName) >= 0) {
|
|
curve = await buildBls12381();
|
|
} else {
|
|
throw new Error(`Curve not supported: ${name}`);
|
|
}
|
|
return curve;
|
|
|
|
function normalizeName(n) {
|
|
return n.toUpperCase().match(/[A-Za-z0-9]+/g).join("");
|
|
}
|
|
|
|
}
|
|
|
|
assert.notEqual = notEqual;
|
|
assert.notOk = notOk;
|
|
assert.equal = equal;
|
|
assert.ok = assert;
|
|
|
|
var nanoassert = assert;
|
|
|
|
function equal (a, b, m) {
|
|
assert(a == b, m); // eslint-disable-line eqeqeq
|
|
}
|
|
|
|
function notEqual (a, b, m) {
|
|
assert(a != b, m); // eslint-disable-line eqeqeq
|
|
}
|
|
|
|
function notOk (t, m) {
|
|
assert(!t, m);
|
|
}
|
|
|
|
function assert (t, m) {
|
|
if (!t) throw new Error(m || 'AssertionError')
|
|
}
|
|
|
|
var blake2b = loadWebAssembly;
|
|
|
|
loadWebAssembly.supported = typeof WebAssembly !== 'undefined';
|
|
|
|
function loadWebAssembly (opts) {
|
|
if (!loadWebAssembly.supported) return null
|
|
|
|
var imp = opts && opts.imports;
|
|
var wasm = toUint8Array('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');
|
|
var ready = null;
|
|
|
|
var mod = {
|
|
buffer: wasm,
|
|
memory: null,
|
|
exports: null,
|
|
realloc: realloc,
|
|
onload: onload
|
|
};
|
|
|
|
onload(function () {});
|
|
|
|
return mod
|
|
|
|
function realloc (size) {
|
|
mod.exports.memory.grow(Math.max(0, Math.ceil(Math.abs(size - mod.memory.length) / 65536)));
|
|
mod.memory = new Uint8Array(mod.exports.memory.buffer);
|
|
}
|
|
|
|
function onload (cb) {
|
|
if (mod.exports) return cb()
|
|
|
|
if (ready) {
|
|
ready.then(cb.bind(null, null)).catch(cb);
|
|
return
|
|
}
|
|
|
|
try {
|
|
if (opts && opts.async) throw new Error('async')
|
|
setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)});
|
|
} catch (err) {
|
|
ready = WebAssembly.instantiate(wasm, imp).then(setup);
|
|
}
|
|
|
|
onload(cb);
|
|
}
|
|
|
|
function setup (w) {
|
|
mod.exports = w.instance.exports;
|
|
mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer);
|
|
}
|
|
}
|
|
|
|
function toUint8Array (s) {
|
|
if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))
|
|
return (commonjsRequire().Buffer).from(s, 'base64')
|
|
}
|
|
|
|
function charCodeAt (c) {
|
|
return c.charCodeAt(0)
|
|
}
|
|
|
|
var blake2bWasm = createCommonjsModule(function (module) {
|
|
var wasm = blake2b();
|
|
|
|
var head = 64;
|
|
var freeList = [];
|
|
|
|
module.exports = Blake2b;
|
|
var BYTES_MIN = module.exports.BYTES_MIN = 16;
|
|
var BYTES_MAX = module.exports.BYTES_MAX = 64;
|
|
var BYTES = module.exports.BYTES = 32;
|
|
var KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16;
|
|
var KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64;
|
|
var KEYBYTES = module.exports.KEYBYTES = 32;
|
|
var SALTBYTES = module.exports.SALTBYTES = 16;
|
|
var PERSONALBYTES = module.exports.PERSONALBYTES = 16;
|
|
|
|
function Blake2b (digestLength, key, salt, personal, noAssert) {
|
|
if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)
|
|
if (!(wasm && wasm.exports)) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')
|
|
if (!digestLength) digestLength = 32;
|
|
|
|
if (noAssert !== true) {
|
|
nanoassert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength);
|
|
nanoassert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength);
|
|
if (key != null) {
|
|
nanoassert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer');
|
|
nanoassert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length);
|
|
nanoassert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length);
|
|
}
|
|
if (salt != null) {
|
|
nanoassert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer');
|
|
nanoassert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length);
|
|
}
|
|
if (personal != null) {
|
|
nanoassert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer');
|
|
nanoassert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length);
|
|
}
|
|
}
|
|
|
|
if (!freeList.length) {
|
|
freeList.push(head);
|
|
head += 216;
|
|
}
|
|
|
|
this.digestLength = digestLength;
|
|
this.finalized = false;
|
|
this.pointer = freeList.pop();
|
|
|
|
wasm.memory.fill(0, 0, 64);
|
|
wasm.memory[0] = this.digestLength;
|
|
wasm.memory[1] = key ? key.length : 0;
|
|
wasm.memory[2] = 1; // fanout
|
|
wasm.memory[3] = 1; // depth
|
|
|
|
if (salt) wasm.memory.set(salt, 32);
|
|
if (personal) wasm.memory.set(personal, 48);
|
|
|
|
if (this.pointer + 216 > wasm.memory.length) wasm.realloc(this.pointer + 216); // we need 216 bytes for the state
|
|
wasm.exports.blake2b_init(this.pointer, this.digestLength);
|
|
|
|
if (key) {
|
|
this.update(key);
|
|
wasm.memory.fill(0, head, head + key.length); // whiteout key
|
|
wasm.memory[this.pointer + 200] = 128;
|
|
}
|
|
}
|
|
|
|
|
|
Blake2b.prototype.update = function (input) {
|
|
nanoassert(this.finalized === false, 'Hash instance finalized');
|
|
nanoassert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer');
|
|
|
|
if (head + input.length > wasm.memory.length) wasm.realloc(head + input.length);
|
|
wasm.memory.set(input, head);
|
|
wasm.exports.blake2b_update(this.pointer, head, head + input.length);
|
|
return this
|
|
};
|
|
|
|
Blake2b.prototype.getPartialHash = function () {
|
|
return wasm.memory.slice(this.pointer, this.pointer+216);
|
|
};
|
|
|
|
Blake2b.prototype.setPartialHash = function (ph) {
|
|
wasm.memory.set(ph, this.pointer);
|
|
};
|
|
|
|
|
|
Blake2b.prototype.digest = function (enc) {
|
|
nanoassert(this.finalized === false, 'Hash instance finalized');
|
|
this.finalized = true;
|
|
|
|
freeList.push(this.pointer);
|
|
wasm.exports.blake2b_final(this.pointer);
|
|
|
|
if (!enc || enc === 'binary') {
|
|
return wasm.memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)
|
|
}
|
|
|
|
if (enc === 'hex') {
|
|
return hexSlice(wasm.memory, this.pointer + 128, this.digestLength)
|
|
}
|
|
|
|
nanoassert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer');
|
|
for (var i = 0; i < this.digestLength; i++) {
|
|
enc[i] = wasm.memory[this.pointer + 128 + i];
|
|
}
|
|
|
|
return enc
|
|
};
|
|
|
|
// libsodium compat
|
|
Blake2b.prototype.final = Blake2b.prototype.digest;
|
|
|
|
Blake2b.WASM = wasm && wasm.buffer;
|
|
Blake2b.SUPPORTED = typeof WebAssembly !== 'undefined';
|
|
|
|
Blake2b.ready = function (cb) {
|
|
if (!cb) cb = noop;
|
|
if (!wasm) return cb(new Error('WebAssembly not supported'))
|
|
|
|
// backwards compat, can be removed in a new major
|
|
var p = new Promise(function (reject, resolve) {
|
|
wasm.onload(function (err) {
|
|
if (err) resolve();
|
|
else reject();
|
|
cb(err);
|
|
});
|
|
});
|
|
|
|
return p
|
|
};
|
|
|
|
Blake2b.prototype.ready = Blake2b.ready;
|
|
|
|
function noop () {}
|
|
|
|
function hexSlice (buf, start, len) {
|
|
var str = '';
|
|
for (var i = 0; i < len; i++) str += toHex(buf[start + i]);
|
|
return str
|
|
}
|
|
|
|
function toHex (n) {
|
|
if (n < 16) return '0' + n.toString(16)
|
|
return n.toString(16)
|
|
}
|
|
});
|
|
var blake2bWasm_1 = blake2bWasm.BYTES_MIN;
|
|
var blake2bWasm_2 = blake2bWasm.BYTES_MAX;
|
|
var blake2bWasm_3 = blake2bWasm.BYTES;
|
|
var blake2bWasm_4 = blake2bWasm.KEYBYTES_MIN;
|
|
var blake2bWasm_5 = blake2bWasm.KEYBYTES_MAX;
|
|
var blake2bWasm_6 = blake2bWasm.KEYBYTES;
|
|
var blake2bWasm_7 = blake2bWasm.SALTBYTES;
|
|
var blake2bWasm_8 = blake2bWasm.PERSONALBYTES;
|
|
|
|
/* global window */
|
|
|
|
const _revTable$2 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$2[i] = _revSlow$2(i, 8);
|
|
}
|
|
|
|
function _revSlow$2(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function bitReverse$1(idx, bits) {
|
|
return (
|
|
_revTable$2[idx >>> 24] |
|
|
(_revTable$2[(idx >>> 16) & 0xFF] << 8) |
|
|
(_revTable$2[(idx >>> 8) & 0xFF] << 16) |
|
|
(_revTable$2[idx & 0xFF] << 24)
|
|
) >>> (32-bits);
|
|
}
|
|
|
|
|
|
function log2$1( V )
|
|
{
|
|
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
|
|
}
|
|
|
|
|
|
function formatHash(b, title) {
|
|
const a = new DataView(b.buffer, b.byteOffset, b.byteLength);
|
|
let S = "";
|
|
for (let i=0; i<4; i++) {
|
|
if (i>0) S += "\n";
|
|
S += "\t\t";
|
|
for (let j=0; j<4; j++) {
|
|
if (j>0) S += " ";
|
|
S += a.getUint32(i*16+j*4).toString(16).padStart(8, "0");
|
|
}
|
|
}
|
|
if (title) S = title + "\n" + S;
|
|
return S;
|
|
}
|
|
|
|
function hashIsEqual(h1, h2) {
|
|
if (h1.byteLength != h2.byteLength) return false;
|
|
var dv1 = new Int8Array(h1);
|
|
var dv2 = new Int8Array(h2);
|
|
for (var i = 0 ; i != h1.byteLength ; i++)
|
|
{
|
|
if (dv1[i] != dv2[i]) return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function cloneHasher(h) {
|
|
const ph = h.getPartialHash();
|
|
const res = blake2bWasm(64);
|
|
res.setPartialHash(ph);
|
|
return res;
|
|
}
|
|
|
|
async function sameRatio(curve, g1s, g1sx, g2s, g2sx) {
|
|
if (curve.G1.isZero(g1s)) return false;
|
|
if (curve.G1.isZero(g1sx)) return false;
|
|
if (curve.G2.isZero(g2s)) return false;
|
|
if (curve.G2.isZero(g2sx)) return false;
|
|
// return curve.F12.eq(curve.pairing(g1s, g2sx), curve.pairing(g1sx, g2s));
|
|
const res = await curve.pairingEq(g1s, g2sx, curve.G1.neg(g1sx), g2s);
|
|
return res;
|
|
}
|
|
|
|
|
|
function askEntropy() {
|
|
{
|
|
return window.prompt("Enter a random text. (Entropy): ", "");
|
|
}
|
|
}
|
|
|
|
async function getRandomRng(entropy) {
|
|
// Generate a random Rng
|
|
while (!entropy) {
|
|
entropy = await askEntropy();
|
|
}
|
|
const hasher = blake2bWasm(64);
|
|
hasher.update(crypto.randomBytes(64));
|
|
const enc = new TextEncoder(); // always utf-8
|
|
hasher.update(enc.encode(entropy));
|
|
const hash = Buffer.from(hasher.digest());
|
|
|
|
const seed = [];
|
|
for (let i=0;i<8;i++) {
|
|
seed[i] = hash.readUInt32BE(i*4);
|
|
}
|
|
const rng = new ChaCha(seed);
|
|
return rng;
|
|
}
|
|
|
|
function rngFromBeaconParams(beaconHash, numIterationsExp) {
|
|
let nIterationsInner;
|
|
let nIterationsOuter;
|
|
if (numIterationsExp<32) {
|
|
nIterationsInner = (1 << numIterationsExp) >>> 0;
|
|
nIterationsOuter = 1;
|
|
} else {
|
|
nIterationsInner = 0x100000000;
|
|
nIterationsOuter = (1 << (numIterationsExp-32)) >>> 0;
|
|
}
|
|
|
|
let curHash = beaconHash;
|
|
for (let i=0; i<nIterationsOuter; i++) {
|
|
for (let j=0; j<nIterationsInner; j++) {
|
|
curHash = crypto.createHash("sha256").update(curHash).digest();
|
|
}
|
|
}
|
|
|
|
const curHashV = new DataView(curHash.buffer, curHash.byteOffset, curHash.byteLength);
|
|
const seed = [];
|
|
for (let i=0; i<8; i++) {
|
|
seed[i] = curHashV.getUint32(i*4, false);
|
|
}
|
|
|
|
const rng = new ChaCha(seed);
|
|
|
|
return rng;
|
|
}
|
|
|
|
function hex2ByteArray(s) {
|
|
if (s instanceof Uint8Array) return s;
|
|
if (s.slice(0,2) == "0x") s= s.slice(2);
|
|
return new Uint8Array(s.match(/[\da-f]{2}/gi).map(function (h) {
|
|
return parseInt(h, 16);
|
|
}));
|
|
}
|
|
|
|
function byteArray2hex(byteArray) {
|
|
return Array.prototype.map.call(byteArray, function(byte) {
|
|
return ("0" + (byte & 0xFF).toString(16)).slice(-2);
|
|
}).join("");
|
|
}
|
|
|
|
async function writeHeader(fd, zkey) {
|
|
|
|
// Write the header
|
|
///////////
|
|
await startWriteSection(fd, 1);
|
|
await fd.writeULE32(1); // Groth
|
|
await endWriteSection(fd);
|
|
|
|
// Write the Groth header section
|
|
///////////
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
|
|
await startWriteSection(fd, 2);
|
|
const primeQ = curve.q;
|
|
const n8q = (Math.floor( (Scalar$1.bitLength(primeQ) - 1) / 64) +1)*8;
|
|
|
|
const primeR = curve.r;
|
|
const n8r = (Math.floor( (Scalar$1.bitLength(primeR) - 1) / 64) +1)*8;
|
|
|
|
await fd.writeULE32(n8q);
|
|
await writeBigInt(fd, primeQ, n8q);
|
|
await fd.writeULE32(n8r);
|
|
await writeBigInt(fd, primeR, n8r);
|
|
await fd.writeULE32(zkey.nVars); // Total number of bars
|
|
await fd.writeULE32(zkey.nPublic); // Total number of public vars (not including ONE)
|
|
await fd.writeULE32(zkey.domainSize); // domainSize
|
|
await writeG1(fd, curve, zkey.vk_alpha_1);
|
|
await writeG1(fd, curve, zkey.vk_beta_1);
|
|
await writeG2(fd, curve, zkey.vk_beta_2);
|
|
await writeG2(fd, curve, zkey.vk_gamma_2);
|
|
await writeG1(fd, curve, zkey.vk_delta_1);
|
|
await writeG2(fd, curve, zkey.vk_delta_2);
|
|
|
|
await endWriteSection(fd);
|
|
|
|
|
|
}
|
|
|
|
async function writeG1(fd, curve, p) {
|
|
const buff = new Uint8Array(curve.G1.F.n8*2);
|
|
curve.G1.toRprLEM(buff, 0, p);
|
|
await fd.write(buff);
|
|
}
|
|
|
|
async function writeG2(fd, curve, p) {
|
|
const buff = new Uint8Array(curve.G2.F.n8*2);
|
|
curve.G2.toRprLEM(buff, 0, p);
|
|
await fd.write(buff);
|
|
}
|
|
|
|
async function readG1(fd, curve) {
|
|
const buff = await fd.read(curve.G1.F.n8*2);
|
|
return curve.G1.fromRprLEM(buff, 0);
|
|
}
|
|
|
|
async function readG2(fd, curve) {
|
|
const buff = await fd.read(curve.G2.F.n8*2);
|
|
return curve.G2.fromRprLEM(buff, 0);
|
|
}
|
|
|
|
|
|
|
|
async function readHeader(fd, sections, protocol) {
|
|
if (protocol != "groth16") throw new Error("Protocol not supported: "+protocol);
|
|
|
|
const zkey = {};
|
|
|
|
// Read Header
|
|
/////////////////////
|
|
await startReadUniqueSection(fd, sections, 1);
|
|
const protocolId = await fd.readULE32();
|
|
if (protocolId != 1) throw new Error("File is not groth");
|
|
zkey.protocol = "groth16";
|
|
await endReadSection(fd);
|
|
|
|
// Read Groth Header
|
|
/////////////////////
|
|
await startReadUniqueSection(fd, sections, 2);
|
|
const n8q = await fd.readULE32();
|
|
zkey.n8q = n8q;
|
|
zkey.q = await readBigInt(fd, n8q);
|
|
|
|
const n8r = await fd.readULE32();
|
|
zkey.n8r = n8r;
|
|
zkey.r = await readBigInt(fd, n8r);
|
|
|
|
let curve = await getCurveFromQ(zkey.q);
|
|
|
|
zkey.nVars = await fd.readULE32();
|
|
zkey.nPublic = await fd.readULE32();
|
|
zkey.domainSize = await fd.readULE32();
|
|
zkey.power = log2$1(zkey.domainSize);
|
|
zkey.vk_alpha_1 = await readG1(fd, curve);
|
|
zkey.vk_beta_1 = await readG1(fd, curve);
|
|
zkey.vk_beta_2 = await readG2(fd, curve);
|
|
zkey.vk_gamma_2 = await readG2(fd, curve);
|
|
zkey.vk_delta_1 = await readG1(fd, curve);
|
|
zkey.vk_delta_2 = await readG2(fd, curve);
|
|
await endReadSection(fd);
|
|
|
|
return zkey;
|
|
|
|
}
|
|
|
|
async function readZKey(fileName) {
|
|
const {fd, sections} = await readBinFile(fileName, "zkey", 1);
|
|
|
|
const zkey = await readHeader(fd, sections, "groth16");
|
|
|
|
const Fr = new F1Field(zkey.r);
|
|
const Rr = Scalar$1.mod(Scalar$1.shl(1, zkey.n8r*8), zkey.r);
|
|
const Rri = Fr.inv(Rr);
|
|
const Rri2 = Fr.mul(Rri, Rri);
|
|
|
|
let curve = getCurveFromQ(zkey.q);
|
|
|
|
// Read IC Section
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 3);
|
|
zkey.IC = [];
|
|
for (let i=0; i<= zkey.nPublic; i++) {
|
|
const P = await readG1(fd, curve);
|
|
zkey.IC.push(P);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
|
|
// Read Coefs
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 4);
|
|
const nCCoefs = await fd.readULE32();
|
|
zkey.ccoefs = [];
|
|
for (let i=0; i<nCCoefs; i++) {
|
|
const m = await fd.readULE32();
|
|
const c = await fd.readULE32();
|
|
const s = await fd.readULE32();
|
|
const v = await readFr2();
|
|
zkey.ccoefs.push({
|
|
matrix: m,
|
|
constraint: c,
|
|
signal: s,
|
|
value: v
|
|
});
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
// Read A points
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 5);
|
|
zkey.A = [];
|
|
for (let i=0; i<zkey.nVars; i++) {
|
|
const A = await readG1(fd, curve);
|
|
zkey.A[i] = A;
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
|
|
// Read B1
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 6);
|
|
zkey.B1 = [];
|
|
for (let i=0; i<zkey.nVars; i++) {
|
|
const B1 = await readG1(fd, curve);
|
|
|
|
zkey.B1[i] = B1;
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
|
|
// Read B2 points
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 7);
|
|
zkey.B2 = [];
|
|
for (let i=0; i<zkey.nVars; i++) {
|
|
const B2 = await readG2(fd, curve);
|
|
zkey.B2[i] = B2;
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
|
|
// Read C points
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 8);
|
|
zkey.C = [];
|
|
for (let i=zkey.nPublic+1; i<zkey.nVars; i++) {
|
|
const C = await readG1(fd, curve);
|
|
|
|
zkey.C[i] = C;
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
|
|
// Read H points
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 9);
|
|
zkey.hExps = [];
|
|
for (let i=0; i<zkey.domainSize; i++) {
|
|
const H = await readG1(fd, curve);
|
|
zkey.hExps.push(H);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
await fd.close();
|
|
|
|
return zkey;
|
|
|
|
async function readFr2() {
|
|
const n = await readBigInt(fd, zkey.n8r);
|
|
return Fr.mul(n, Rri2);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
async function readContribution(fd, curve) {
|
|
const c = {delta:{}};
|
|
c.deltaAfter = await readG1(fd, curve);
|
|
c.delta.g1_s = await readG1(fd, curve);
|
|
c.delta.g1_sx = await readG1(fd, curve);
|
|
c.delta.g2_spx = await readG2(fd, curve);
|
|
c.transcript = await fd.read(64);
|
|
c.type = await fd.readULE32();
|
|
|
|
const paramLength = await fd.readULE32();
|
|
const curPos = fd.pos;
|
|
let lastType =0;
|
|
while (fd.pos-curPos < paramLength) {
|
|
const buffType = await fd.read(1);
|
|
if (buffType[0]<= lastType) throw new Error("Parameters in the contribution must be sorted");
|
|
lastType = buffType[0];
|
|
if (buffType[0]==1) { // Name
|
|
const buffLen = await fd.read(1);
|
|
const buffStr = await fd.read(buffLen[0]);
|
|
c.name = new TextDecoder().decode(buffStr);
|
|
} else if (buffType[0]==2) {
|
|
const buffExp = await fd.read(1);
|
|
c.numIterationsExp = buffExp[0];
|
|
} else if (buffType[0]==3) {
|
|
const buffLen = await fd.read(1);
|
|
c.beaconHash = await fd.read(buffLen[0]);
|
|
} else {
|
|
throw new Error("Parameter not recognized");
|
|
}
|
|
}
|
|
if (fd.pos != curPos + paramLength) {
|
|
throw new Error("Parametes do not match");
|
|
}
|
|
|
|
return c;
|
|
}
|
|
|
|
|
|
async function readMPCParams(fd, curve, sections) {
|
|
await startReadUniqueSection(fd, sections, 10);
|
|
const res = { contributions: []};
|
|
res.csHash = await fd.read(64);
|
|
const n = await fd.readULE32();
|
|
for (let i=0; i<n; i++) {
|
|
const c = await readContribution(fd, curve);
|
|
res.contributions.push(c);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
return res;
|
|
}
|
|
|
|
async function writeContribution(fd, curve, c) {
|
|
await writeG1(fd, curve, c.deltaAfter);
|
|
await writeG1(fd, curve, c.delta.g1_s);
|
|
await writeG1(fd, curve, c.delta.g1_sx);
|
|
await writeG2(fd, curve, c.delta.g2_spx);
|
|
await fd.write(c.transcript);
|
|
await fd.writeULE32(c.type || 0);
|
|
|
|
const params = [];
|
|
if (c.name) {
|
|
params.push(1); // Param Name
|
|
const nameData = new TextEncoder("utf-8").encode(c.name.substring(0,64));
|
|
params.push(nameData.byteLength);
|
|
for (let i=0; i<nameData.byteLength; i++) params.push(nameData[i]);
|
|
}
|
|
if (c.type == 1) {
|
|
params.push(2); // Param numIterationsExp
|
|
params.push(c.numIterationsExp);
|
|
|
|
params.push(3); // Beacon Hash
|
|
params.push(c.beaconHash.byteLength);
|
|
for (let i=0; i<c.beaconHash.byteLength; i++) params.push(c.beaconHash[i]);
|
|
}
|
|
if (params.length>0) {
|
|
const paramsBuff = new Uint8Array(params);
|
|
await fd.writeULE32(paramsBuff.byteLength);
|
|
await fd.write(paramsBuff);
|
|
} else {
|
|
await fd.writeULE32(0);
|
|
}
|
|
|
|
}
|
|
|
|
async function writeMPCParams(fd, curve, mpcParams) {
|
|
await startWriteSection(fd, 10);
|
|
await fd.write(mpcParams.csHash);
|
|
await fd.writeULE32(mpcParams.contributions.length);
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
await writeContribution(fd, curve,mpcParams.contributions[i]);
|
|
}
|
|
await endWriteSection(fd);
|
|
}
|
|
|
|
function hashG1(hasher, curve, p) {
|
|
const buff = new Uint8Array(curve.G1.F.n8*2);
|
|
curve.G1.toRprUncompressed(buff, 0, p);
|
|
hasher.update(buff);
|
|
}
|
|
|
|
function hashG2(hasher,curve, p) {
|
|
const buff = new Uint8Array(curve.G2.F.n8*2);
|
|
curve.G2.toRprUncompressed(buff, 0, p);
|
|
hasher.update(buff);
|
|
}
|
|
|
|
function hashPubKey(hasher, curve, c) {
|
|
hashG1(hasher, curve, c.deltaAfter);
|
|
hashG1(hasher, curve, c.delta.g1_s);
|
|
hashG1(hasher, curve, c.delta.g1_sx);
|
|
hashG2(hasher, curve, c.delta.g2_spx);
|
|
hasher.update(c.transcript);
|
|
}
|
|
|
|
async function write(fd, witness, prime) {
|
|
|
|
await startWriteSection(fd, 1);
|
|
const n8 = (Math.floor( (Scalar$1.bitLength(prime) - 1) / 64) +1)*8;
|
|
await fd.writeULE32(n8);
|
|
await writeBigInt(fd, prime, n8);
|
|
await fd.writeULE32(witness.length);
|
|
await endWriteSection(fd);
|
|
|
|
await startWriteSection(fd, 2);
|
|
for (let i=0; i<witness.length; i++) {
|
|
await writeBigInt(fd, witness[i], n8);
|
|
}
|
|
await endWriteSection(fd);
|
|
|
|
|
|
}
|
|
|
|
async function writeBin(fd, witnessBin, prime) {
|
|
|
|
await startWriteSection(fd, 1);
|
|
const n8 = (Math.floor( (Scalar$1.bitLength(prime) - 1) / 64) +1)*8;
|
|
await fd.writeULE32(n8);
|
|
await writeBigInt(fd, prime, n8);
|
|
if (witnessBin.byteLength % n8 != 0) {
|
|
throw new Error("Invalid witness length");
|
|
}
|
|
await fd.writeULE32(witnessBin.byteLength / n8);
|
|
await endWriteSection(fd);
|
|
|
|
|
|
await startWriteSection(fd, 2);
|
|
await fd.write(witnessBin);
|
|
await endWriteSection(fd);
|
|
|
|
}
|
|
|
|
async function readHeader$1(fd, sections) {
|
|
|
|
await startReadUniqueSection(fd, sections, 1);
|
|
const n8 = await fd.readULE32();
|
|
const q = await readBigInt(fd, n8);
|
|
const nWitness = await fd.readULE32();
|
|
await endReadSection(fd);
|
|
|
|
return {n8, q, nWitness};
|
|
|
|
}
|
|
|
|
async function read(fileName) {
|
|
|
|
const {fd, sections} = await readBinFile(fileName, "wtns", 2);
|
|
|
|
const {n8, nWitness} = await readHeader$1(fd, sections);
|
|
|
|
await startReadUniqueSection(fd, sections, 2);
|
|
const res = [];
|
|
for (let i=0; i<nWitness; i++) {
|
|
const v = await readBigInt(fd, n8);
|
|
res.push(v);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
await fd.close();
|
|
|
|
return res;
|
|
}
|
|
|
|
const {stringifyBigInts: stringifyBigInts$3} = utils$1;
|
|
|
|
async function groth16Prove(zkeyFileName, witnessFileName, logger) {
|
|
const {fd: fdWtns, sections: sectionsWtns} = await readBinFile(witnessFileName, "wtns", 2);
|
|
|
|
const wtns = await readHeader$1(fdWtns, sectionsWtns);
|
|
|
|
const {fd: fdZKey, sections: sectionsZKey} = await readBinFile(zkeyFileName, "zkey", 2);
|
|
|
|
const zkey = await readHeader(fdZKey, sectionsZKey, "groth16");
|
|
|
|
if (!Scalar$1.eq(zkey.r, wtns.q)) {
|
|
throw new Error("Curve of the witness does not match the curve of the proving key");
|
|
}
|
|
|
|
if (wtns.nWitness != zkey.nVars) {
|
|
throw new Error(`Invalid witness length. Circuit: ${zkey.nVars}, witness: ${wtns.nWitness}`);
|
|
}
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
const Fr = curve.Fr;
|
|
const G1 = curve.G1;
|
|
const G2 = curve.G2;
|
|
|
|
const power = log2$1(zkey.domainSize);
|
|
|
|
const buffWitness = await readFullSection(fdWtns, sectionsWtns, 2);
|
|
const buffCoeffs = await readFullSection(fdZKey, sectionsZKey, 4);
|
|
const buffBasesA = await readFullSection(fdZKey, sectionsZKey, 5);
|
|
const buffBasesB1 = await readFullSection(fdZKey, sectionsZKey, 6);
|
|
const buffBasesB2 = await readFullSection(fdZKey, sectionsZKey, 7);
|
|
const buffBasesC = await readFullSection(fdZKey, sectionsZKey, 8);
|
|
const buffBasesH = await readFullSection(fdZKey, sectionsZKey, 9);
|
|
|
|
const [buffA_T, buffB_T, buffC_T] = await buldABC(curve, zkey, buffWitness, buffCoeffs);
|
|
|
|
const buffA = await Fr.ifft(buffA_T);
|
|
const buffAodd = await Fr.batchApplyKey(buffA, Fr.e(1), curve.Fr.w[power+1]);
|
|
const buffAodd_T = await Fr.fft(buffAodd);
|
|
|
|
const buffB = await Fr.ifft(buffB_T);
|
|
const buffBodd = await Fr.batchApplyKey(buffB, Fr.e(1), curve.Fr.w[power+1]);
|
|
const buffBodd_T = await Fr.fft(buffBodd);
|
|
|
|
const buffC = await Fr.ifft(buffC_T);
|
|
const buffCodd = await Fr.batchApplyKey(buffC, Fr.e(1), curve.Fr.w[power+1]);
|
|
const buffCodd_T = await Fr.fft(buffCodd);
|
|
|
|
const buffPodd_T = await joinABC(curve, zkey, buffAodd_T, buffBodd_T, buffCodd_T);
|
|
|
|
let proof = {};
|
|
|
|
proof.pi_a = await curve.G1.multiExpAffine(buffBasesA, buffWitness);
|
|
let pib1 = await curve.G1.multiExpAffine(buffBasesB1, buffWitness);
|
|
proof.pi_b = await curve.G2.multiExpAffine(buffBasesB2, buffWitness);
|
|
proof.pi_c = await curve.G1.multiExpAffine(buffBasesC, buffWitness.slice((zkey.nPublic+1)*curve.Fr.n8));
|
|
const resH = await curve.G1.multiExpAffine(buffBasesH, buffPodd_T);
|
|
|
|
const r = curve.Fr.random();
|
|
const s = curve.Fr.random();
|
|
|
|
proof.pi_a = G1.add( proof.pi_a, zkey.vk_alpha_1 );
|
|
proof.pi_a = G1.add( proof.pi_a, G1.timesFr( zkey.vk_delta_1, r ));
|
|
|
|
proof.pi_b = G2.add( proof.pi_b, zkey.vk_beta_2 );
|
|
proof.pi_b = G2.add( proof.pi_b, G2.timesFr( zkey.vk_delta_2, s ));
|
|
|
|
pib1 = G1.add( pib1, zkey.vk_beta_1 );
|
|
pib1 = G1.add( pib1, G1.timesFr( zkey.vk_delta_1, s ));
|
|
|
|
proof.pi_c = G1.add(proof.pi_c, resH);
|
|
|
|
|
|
proof.pi_c = G1.add( proof.pi_c, G1.timesFr( proof.pi_a, s ));
|
|
proof.pi_c = G1.add( proof.pi_c, G1.timesFr( pib1, r ));
|
|
proof.pi_c = G1.add( proof.pi_c, G1.timesFr( zkey.vk_delta_1, Fr.neg(Fr.mul(r,s) )));
|
|
|
|
|
|
let publicSignals = [];
|
|
|
|
for (let i=1; i<= zkey.nPublic; i++) {
|
|
const b = buffWitness.slice(i*Fr.n8, i*Fr.n8+Fr.n8);
|
|
publicSignals.push(Scalar$1.fromRprLE(b));
|
|
}
|
|
|
|
proof.pi_a = G1.toObject(G1.toAffine(proof.pi_a));
|
|
proof.pi_b = G2.toObject(G2.toAffine(proof.pi_b));
|
|
proof.pi_c = G1.toObject(G1.toAffine(proof.pi_c));
|
|
|
|
proof.protocol = "groth16";
|
|
|
|
await fdZKey.close();
|
|
await fdWtns.close();
|
|
|
|
proof = stringifyBigInts$3(proof);
|
|
publicSignals = stringifyBigInts$3(publicSignals);
|
|
|
|
return {proof, publicSignals};
|
|
}
|
|
|
|
|
|
async function buldABC(curve, zkey, witness, coeffs) {
|
|
const concurrency = curve.tm.concurrency;
|
|
const sCoef = 4*3 + zkey.n8r;
|
|
|
|
const elementsPerChunk = Math.floor(zkey.domainSize/concurrency);
|
|
const coeffsDV = new DataView(coeffs.buffer, coeffs.byteOffset, coeffs.byteLength);
|
|
const promises = [];
|
|
|
|
const cutPoints = [];
|
|
for (let i=0; i<concurrency; i++) {
|
|
cutPoints.push( getCutPoint( Math.floor(i*zkey.domainSize /concurrency) ));
|
|
}
|
|
cutPoints.push(coeffs.byteLength);
|
|
|
|
for (let i=0; i<concurrency; i++) {
|
|
let n;
|
|
if (i< concurrency-1) {
|
|
n = elementsPerChunk;
|
|
} else {
|
|
n = zkey.domainSize - i*elementsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const task = [];
|
|
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: coeffs.slice(cutPoints[i], cutPoints[i+1])});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: witness.slice()});
|
|
task.push({cmd: "ALLOC", var: 2, len: n*curve.Fr.n8});
|
|
task.push({cmd: "ALLOC", var: 3, len: n*curve.Fr.n8});
|
|
task.push({cmd: "ALLOC", var: 4, len: n*curve.Fr.n8});
|
|
task.push({cmd: "CALL", fnName: "qap_buildABC", params:[
|
|
{var: 0},
|
|
{val: (cutPoints[i+1] - cutPoints[i])/sCoef},
|
|
{var: 1},
|
|
{var: 2},
|
|
{var: 3},
|
|
{var: 4},
|
|
{val: i*elementsPerChunk},
|
|
{val: n}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 2, len: n*curve.Fr.n8});
|
|
task.push({cmd: "GET", out: 1, var: 3, len: n*curve.Fr.n8});
|
|
task.push({cmd: "GET", out: 2, var: 4, len: n*curve.Fr.n8});
|
|
promises.push(curve.tm.queueAction(task));
|
|
}
|
|
|
|
const result = await Promise.all(promises);
|
|
|
|
const outBuffA = new Uint8Array(zkey.domainSize * curve.Fr.n8);
|
|
const outBuffB = new Uint8Array(zkey.domainSize * curve.Fr.n8);
|
|
const outBuffC = new Uint8Array(zkey.domainSize * curve.Fr.n8);
|
|
let p=0;
|
|
for (let i=0; i<result.length; i++) {
|
|
outBuffA.set(result[i][0], p);
|
|
outBuffB.set(result[i][1], p);
|
|
outBuffC.set(result[i][2], p);
|
|
p += result[i][0].byteLength;
|
|
}
|
|
|
|
return [outBuffA, outBuffB, outBuffC];
|
|
|
|
function getCutPoint(v) {
|
|
let m = 0;
|
|
let n = coeffsDV.getUint32(0, true);
|
|
while (m < n) {
|
|
var k = (n + m) >> 1;
|
|
const va = coeffsDV.getUint32(4 + k*sCoef + 4, true);
|
|
if (va > v) {
|
|
n = k - 1;
|
|
} else if (va < v) {
|
|
m = k + 1;
|
|
} else {
|
|
n = k;
|
|
}
|
|
}
|
|
return 4 + m*sCoef;
|
|
}
|
|
}
|
|
|
|
|
|
async function joinABC(curve, zkey, a, b, c) {
|
|
const concurrency = curve.tm.concurrency;
|
|
|
|
const n8 = curve.Fr.n8;
|
|
const nElements = Math.floor(a.byteLength / curve.Fr.n8);
|
|
const elementsPerChunk = Math.floor(nElements/concurrency);
|
|
|
|
const promises = [];
|
|
|
|
for (let i=0; i<concurrency; i++) {
|
|
let n;
|
|
if (i< concurrency-1) {
|
|
n = elementsPerChunk;
|
|
} else {
|
|
n = nElements - i*elementsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const task = [];
|
|
|
|
const aChunk = a.slice(i*elementsPerChunk*n8, (i*elementsPerChunk + n)*n8 );
|
|
const bChunk = b.slice(i*elementsPerChunk*n8, (i*elementsPerChunk + n)*n8 );
|
|
const cChunk = c.slice(i*elementsPerChunk*n8, (i*elementsPerChunk + n)*n8 );
|
|
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: aChunk});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: bChunk});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: cChunk});
|
|
task.push({cmd: "ALLOC", var: 3, len: n*n8});
|
|
task.push({cmd: "CALL", fnName: "qap_joinABC", params:[
|
|
{var: 0},
|
|
{var: 1},
|
|
{var: 2},
|
|
{val: n},
|
|
{var: 3},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: "frm_batchFromMontgomery", params:[
|
|
{var: 3},
|
|
{val: n},
|
|
{var: 3}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 3, len: n*n8});
|
|
promises.push(curve.tm.queueAction(task));
|
|
}
|
|
|
|
const result = await Promise.all(promises);
|
|
|
|
const outBuff = new Uint8Array(a.byteLength);
|
|
let p=0;
|
|
for (let i=0; i<result.length; i++) {
|
|
outBuff.set(result[i][0], p);
|
|
p += result[i][0].byteLength;
|
|
}
|
|
|
|
return outBuff;
|
|
}
|
|
|
|
var fnvPlus = createCommonjsModule(function (module) {
|
|
/**
|
|
* FNV-1a Hash implementation (32, 64, 128, 256, 512, and 1024 bit)
|
|
* @author Travis Webb <me@traviswebb.com>
|
|
* @see http://tools.ietf.org/html/draft-eastlake-fnv-06
|
|
*/
|
|
var fnvplus = (function(){
|
|
var i, hl = [], hl16 = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'],
|
|
version = '1a',
|
|
useUTF8 = false,
|
|
_hash32, _hash52, _hash64, _hash128, _hash256, _hash512, _hash1024,
|
|
referenceSeed = 'chongo <Landon Curt Noll> /\\../\\',
|
|
defaultKeyspace = 52,
|
|
fnvConstants = {
|
|
32: {offset: 0},
|
|
64: {offset: [0,0,0,0]},
|
|
128: {offset: [0,0,0,0,0,0,0,0]},
|
|
256: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
|
|
512: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
|
|
1024: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}};
|
|
|
|
for(i=0; i < 256; i++){
|
|
hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);
|
|
}
|
|
|
|
function hexToBase(hex, base){
|
|
var alphabet = '0123456789abcdefghijklmnopqrstuvwxyz',
|
|
digits = [0], carry, i, j, string = '';
|
|
|
|
for(i = 0; i < hex.length; i+=2){
|
|
carry = parseInt(hex.substr(i,2),16);
|
|
for(j = 0; j < digits.length; j++){
|
|
carry += digits[j] << 8;
|
|
digits[j] = carry % base;
|
|
carry = (carry / base) | 0;
|
|
}
|
|
while (carry > 0) {
|
|
digits.push(carry % base);
|
|
carry = (carry / base) | 0;
|
|
}
|
|
}
|
|
|
|
for (i = digits.length - 1; i >= 0; --i){
|
|
string += alphabet[digits[i]];
|
|
}
|
|
|
|
return string;
|
|
}
|
|
|
|
function hashValHex(value, keyspace) {
|
|
return {
|
|
bits: keyspace,
|
|
value: value,
|
|
dec: function(){return hexToBase(value, 10);},
|
|
hex: function(){return value;},
|
|
str: function(){return hexToBase(value, 36);}
|
|
};
|
|
}
|
|
|
|
function hashValInt32(value, keyspace) {
|
|
return {
|
|
bits: keyspace,
|
|
value: value,
|
|
dec: function(){return value.toString();},
|
|
hex: function(){return hl[value>>>24]+ hl[(value>>>16)&255]+hl[(value>>>8)&255]+hl[value&255];},
|
|
str: function(){return value.toString(36);}
|
|
};
|
|
}
|
|
|
|
function hashValInt52(value, keyspace) {
|
|
return {
|
|
bits: keyspace,
|
|
value: value,
|
|
dec: function(){return value.toString();},
|
|
hex: function(){return ('0000000000000000'+value.toString(16)).substr(-13);},
|
|
str: function(){return value.toString(36);}
|
|
};
|
|
}
|
|
|
|
function hash(message, keyspace) {
|
|
var str = (typeof message === 'object') ? JSON.stringify(message) : message;
|
|
|
|
switch(keyspace || defaultKeyspace){
|
|
case 32:
|
|
return _hash32(str);
|
|
case 64:
|
|
return _hash64(str);
|
|
case 128:
|
|
return _hash128(str);
|
|
case 256:
|
|
return _hash256(str);
|
|
case 512:
|
|
return _hash512(str);
|
|
case 1024:
|
|
return _hash1024(str);
|
|
default:
|
|
return _hash52(str);
|
|
}
|
|
}
|
|
|
|
function setKeyspace(keyspace) {
|
|
if (keyspace === 52 || fnvConstants[keyspace]) {
|
|
defaultKeyspace = keyspace;
|
|
} else {
|
|
throw new Error('Supported FNV keyspacs: 32, 52, 64, 128, 256, 512, and 1024 bit');
|
|
}
|
|
}
|
|
|
|
function setVersion(_version) {
|
|
if (_version === '1a' ) {
|
|
version = _version;
|
|
_hash32 = useUTF8 ? _hash32_1a_utf : _hash32_1a;
|
|
_hash52 = useUTF8 ? _hash52_1a_utf : _hash52_1a;
|
|
_hash64 = useUTF8 ? _hash64_1a_utf : _hash64_1a;
|
|
_hash128 = useUTF8 ? _hash128_1a_utf : _hash128_1a;
|
|
_hash256 = useUTF8 ? _hash256_1a_utf : _hash256_1a;
|
|
_hash512 = useUTF8 ? _hash512_1a_utf : _hash512_1a;
|
|
_hash1024 = useUTF8 ? _hash1024_1a_utf : _hash1024_1a;
|
|
} else if (_version === '1') {
|
|
version = _version;
|
|
_hash32 = useUTF8 ? _hash32_1_utf : _hash32_1;
|
|
_hash52 = useUTF8 ? _hash52_1_utf : _hash52_1;
|
|
_hash64 = useUTF8 ? _hash64_1_utf : _hash64_1;
|
|
_hash128 = useUTF8 ? _hash128_1_utf : _hash128_1;
|
|
_hash256 = useUTF8 ? _hash256_1_utf : _hash256_1;
|
|
_hash512 = useUTF8 ? _hash512_1_utf : _hash512_1;
|
|
_hash1024 = useUTF8 ? _hash1024_1_utf : _hash1024_1;
|
|
} else {
|
|
throw new Error('Supported FNV versions: 1, 1a');
|
|
}
|
|
}
|
|
|
|
function setUTF8(utf8) {
|
|
if (utf8) {
|
|
useUTF8 = true;
|
|
_hash32 = version == '1a' ? _hash32_1a_utf : _hash32_1_utf;
|
|
_hash52 = version == '1a' ? _hash52_1a_utf : _hash52_1_utf;
|
|
_hash64 = version == '1a' ? _hash64_1a_utf : _hash64_1_utf;
|
|
_hash128 = version == '1a' ? _hash128_1a_utf : _hash128_1_utf;
|
|
_hash256 = version == '1a' ? _hash256_1a_utf : _hash256_1_utf;
|
|
_hash512 = version == '1a' ? _hash512_1a_utf : _hash512_1_utf;
|
|
_hash1024 = version == '1a' ? _hash1024_1a_utf : _hash1024_1_utf;
|
|
} else {
|
|
useUTF8 = false;
|
|
_hash32 = version == '1a' ? _hash32_1a : _hash32_1;
|
|
_hash52 = version == '1a' ? _hash52_1a : _hash52_1;
|
|
_hash64 = version == '1a' ? _hash64_1a : _hash64_1;
|
|
_hash128 = version == '1a' ? _hash128_1a : _hash128_1;
|
|
_hash256 = version == '1a' ? _hash256_1a : _hash256_1;
|
|
_hash512 = version == '1a' ? _hash512_1a : _hash512_1;
|
|
_hash1024 = version == '1a' ? _hash1024_1a : _hash1024_1;
|
|
}
|
|
}
|
|
|
|
function seed(seed) {
|
|
var oldVersion = version, res, i;
|
|
|
|
seed = (seed || seed === 0) ? seed : referenceSeed;
|
|
|
|
if (seed === referenceSeed) setVersion('1');
|
|
|
|
for (var keysize in fnvConstants) {
|
|
fnvConstants[keysize].offset = [];
|
|
for(i = 0; i < keysize / 16; i++){
|
|
fnvConstants[keysize].offset[i] = 0;
|
|
}
|
|
res = hash(seed, parseInt(keysize, 10)).hex();
|
|
for(i = 0; i < keysize / 16; i++){
|
|
fnvConstants[keysize].offset[i] = parseInt(res.substr(i*4,4), 16);
|
|
}
|
|
}
|
|
|
|
setVersion(oldVersion);
|
|
}
|
|
|
|
/**
|
|
* Implementation without library overhead.
|
|
*/
|
|
|
|
function _hash32_1a_fast(str) {
|
|
var i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
|
|
return ((v1<<16)>>>0)+v0;
|
|
}
|
|
|
|
function _hash32_1a_fast_hex(str) {
|
|
var i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
|
|
return hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];
|
|
}
|
|
|
|
function _hash52_1a_fast(str){
|
|
var i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));
|
|
}
|
|
|
|
function _hash52_1a_fast_hex(str){
|
|
var i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];
|
|
}
|
|
|
|
function _hash64_1a_fast(str){
|
|
var i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];
|
|
}
|
|
|
|
function _hash32_1a_fast_utf(str) {
|
|
var c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
return ((v1<<16)>>>0)+v0;
|
|
}
|
|
|
|
function _hash32_1a_fast_hex_utf(str) {
|
|
var c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
|
|
return hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];
|
|
}
|
|
|
|
function _hash52_1a_fast_utf(str){
|
|
var c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));
|
|
}
|
|
|
|
function _hash52_1a_fast_hex_utf (str){
|
|
var c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];
|
|
}
|
|
|
|
function _hash64_1a_fast_utf(str){
|
|
var c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];
|
|
}
|
|
/**
|
|
* Regular functions. This versions are accessible through API
|
|
*/
|
|
|
|
function _hash32_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
return hashValInt32(((v1<<16)>>>0)+v0,32);
|
|
}
|
|
|
|
function _hash32_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValInt32(((v1<<16)>>>0)+v0,32);
|
|
}
|
|
|
|
function _hash32_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
}
|
|
|
|
return hashValInt32(((v1<<16)>>>0)+v0,32);
|
|
}
|
|
|
|
function _hash32_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*403;t1=v1*403;
|
|
t1+=v0<<8;
|
|
v1=(t1+(t0>>>16))&65535;v0=t0&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValInt32(((v1<<16)>>>0)+v0,32);
|
|
}
|
|
|
|
_hash32 = _hash32_1a;
|
|
|
|
function _hash52_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);
|
|
}
|
|
|
|
function _hash52_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);
|
|
}
|
|
|
|
function _hash52_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);
|
|
}
|
|
|
|
function _hash52_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);
|
|
}
|
|
|
|
_hash52 = _hash52_1a;
|
|
|
|
function _hash64_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);
|
|
}
|
|
|
|
function _hash64_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);
|
|
}
|
|
|
|
function _hash64_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);
|
|
}
|
|
|
|
function _hash64_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;
|
|
t2+=v0<<8;t3+=v1<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);
|
|
}
|
|
|
|
_hash64 = _hash64_1a;
|
|
|
|
function _hash128_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);
|
|
}
|
|
|
|
function _hash128_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);
|
|
}
|
|
|
|
function _hash128_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);
|
|
}
|
|
|
|
function _hash128_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;
|
|
t5+=v0<<8;t6+=v1<<8;t7+=v2<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);
|
|
}
|
|
|
|
_hash128 = _hash128_1a;
|
|
|
|
function _hash256_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);
|
|
}
|
|
|
|
function _hash256_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);
|
|
}
|
|
|
|
function _hash256_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);
|
|
}
|
|
|
|
function _hash256_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;
|
|
t10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);
|
|
}
|
|
|
|
_hash256 = _hash256_1a;
|
|
|
|
function _hash512_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);
|
|
}
|
|
|
|
function _hash512_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);
|
|
}
|
|
|
|
function _hash512_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);
|
|
}
|
|
|
|
function _hash512_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;
|
|
t21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);
|
|
}
|
|
|
|
_hash512 = _hash512_1a;
|
|
|
|
function _hash1024_1a(str){
|
|
var i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
}
|
|
|
|
while(i<l+3){
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);
|
|
}
|
|
|
|
function _hash1024_1(str){
|
|
var i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;
|
|
|
|
for (i = 0; i < l;) {
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
while(i<l+3){
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=str.charCodeAt(i++);
|
|
}
|
|
|
|
return hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);
|
|
}
|
|
|
|
function _hash1024_1a_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
}
|
|
|
|
return hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);
|
|
}
|
|
|
|
function _hash1024_1_utf(str){
|
|
var c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;
|
|
|
|
for (i = 0; i < l; i++) {
|
|
c = str.charCodeAt(i);
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
if(c < 128){
|
|
v0^=c;
|
|
}else if(c < 2048){
|
|
v0^=(c>>6)|192;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){
|
|
c=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);
|
|
v0^=(c>>18)|240;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>12)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}else {
|
|
v0^=(c>>12)|224;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=((c>>6)&63)|128;
|
|
t0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;
|
|
t42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;
|
|
t1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;
|
|
v0^=(c&63)|128;
|
|
}
|
|
}
|
|
|
|
return hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);
|
|
}
|
|
|
|
_hash1024 = _hash1024_1a;
|
|
|
|
// Init library.
|
|
setVersion('1a');
|
|
setUTF8(false);
|
|
seed();
|
|
|
|
return {
|
|
hash: hash,
|
|
setKeyspace: setKeyspace,
|
|
version: setVersion,
|
|
useUTF8: setUTF8,
|
|
seed: seed,
|
|
fast1a32: _hash32_1a_fast,
|
|
fast1a32hex:_hash32_1a_fast_hex,
|
|
fast1a52: _hash52_1a_fast,
|
|
fast1a52hex: _hash52_1a_fast_hex,
|
|
fast1a64: _hash64_1a_fast,
|
|
fast1a32utf: _hash32_1a_fast_utf,
|
|
fast1a32hexutf:_hash32_1a_fast_hex_utf,
|
|
fast1a52utf: _hash52_1a_fast_utf,
|
|
fast1a52hexutf: _hash52_1a_fast_hex_utf,
|
|
fast1a64utf: _hash64_1a_fast_utf
|
|
};
|
|
})();
|
|
|
|
module.exports = fnvplus;
|
|
});
|
|
|
|
/*
|
|
|
|
Copyright 2020 0KIMS association.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
var fnvHash_1 = fnvHash;
|
|
var flatArray_1 = flatArray;
|
|
|
|
function flatArray(a) {
|
|
var res = [];
|
|
fillArray(res, a);
|
|
return res;
|
|
|
|
function fillArray(res, a) {
|
|
if (Array.isArray(a)) {
|
|
for (let i=0; i<a.length; i++) {
|
|
fillArray(res, a[i]);
|
|
}
|
|
} else {
|
|
res.push(a);
|
|
}
|
|
}
|
|
}
|
|
|
|
function fnvHash(str) {
|
|
return fnvPlus.hash(str, 64).hex();
|
|
}
|
|
|
|
var utils$2 = {
|
|
fnvHash: fnvHash_1,
|
|
flatArray: flatArray_1
|
|
};
|
|
|
|
/* global BigInt */
|
|
const hexLen$1 = [ 0, 1, 2, 2, 3, 3, 3, 3, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4];
|
|
|
|
function fromString$3(s, radix) {
|
|
if ((!radix)||(radix==10)) {
|
|
return BigInt(s);
|
|
} else if (radix==16) {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInt(s);
|
|
} else {
|
|
return BigInt("0x"+s);
|
|
}
|
|
}
|
|
}
|
|
|
|
const e$3 = fromString$3;
|
|
|
|
function fromArray$3(a, radix) {
|
|
let acc =0n;
|
|
radix = BigInt(radix);
|
|
for (let i=0; i<a.length; i++) {
|
|
acc = acc*radix + BigInt(a[i]);
|
|
}
|
|
return acc;
|
|
}
|
|
|
|
function bitLength$3(a) {
|
|
const aS =a.toString(16);
|
|
return (aS.length-1)*4 +hexLen$1[parseInt(aS[0], 16)];
|
|
}
|
|
|
|
function isNegative$3(a) {
|
|
return BigInt(a) < 0n;
|
|
}
|
|
|
|
function isZero$3(a) {
|
|
return !a;
|
|
}
|
|
|
|
function shiftLeft$3(a, n) {
|
|
return BigInt(a) << BigInt(n);
|
|
}
|
|
|
|
function shiftRight$3(a, n) {
|
|
return BigInt(a) >> BigInt(n);
|
|
}
|
|
|
|
const shl$3 = shiftLeft$3;
|
|
const shr$3 = shiftRight$3;
|
|
|
|
function isOdd$3(a) {
|
|
return (BigInt(a) & 1n) == 1n;
|
|
}
|
|
|
|
|
|
function naf$3(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
const z = 2 - Number(E % 4n);
|
|
res.push( z );
|
|
E = E - BigInt(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function bits$3(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber$3(s) {
|
|
if (s>BigInt(Number.MAX_SAFE_INTEGER )) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return Number(s);
|
|
}
|
|
|
|
function toArray$3(s, radix) {
|
|
const res = [];
|
|
let rem = BigInt(s);
|
|
radix = BigInt(radix);
|
|
while (rem) {
|
|
res.unshift( Number(rem % radix));
|
|
rem = rem / radix;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function add$3(a, b) {
|
|
return BigInt(a) + BigInt(b);
|
|
}
|
|
|
|
function sub$3(a, b) {
|
|
return BigInt(a) - BigInt(b);
|
|
}
|
|
|
|
function neg$3(a) {
|
|
return -BigInt(a);
|
|
}
|
|
|
|
function mul$3(a, b) {
|
|
return BigInt(a) * BigInt(b);
|
|
}
|
|
|
|
function square$3(a) {
|
|
return BigInt(a) * BigInt(a);
|
|
}
|
|
|
|
function pow$3(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function exp$4(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function abs$3(a) {
|
|
return BigInt(a) >= 0 ? BigInt(a) : -BigInt(a);
|
|
}
|
|
|
|
function div$3(a, b) {
|
|
return BigInt(a) / BigInt(b);
|
|
}
|
|
|
|
function mod$3(a, b) {
|
|
return BigInt(a) % BigInt(b);
|
|
}
|
|
|
|
function eq$3(a, b) {
|
|
return BigInt(a) == BigInt(b);
|
|
}
|
|
|
|
function neq$3(a, b) {
|
|
return BigInt(a) != BigInt(b);
|
|
}
|
|
|
|
function lt$3(a, b) {
|
|
return BigInt(a) < BigInt(b);
|
|
}
|
|
|
|
function gt$3(a, b) {
|
|
return BigInt(a) > BigInt(b);
|
|
}
|
|
|
|
function leq$3(a, b) {
|
|
return BigInt(a) <= BigInt(b);
|
|
}
|
|
|
|
function geq$3(a, b) {
|
|
return BigInt(a) >= BigInt(b);
|
|
}
|
|
|
|
function band$3(a, b) {
|
|
return BigInt(a) & BigInt(b);
|
|
}
|
|
|
|
function bor$3(a, b) {
|
|
return BigInt(a) | BigInt(b);
|
|
}
|
|
|
|
function bxor$3(a, b) {
|
|
return BigInt(a) ^ BigInt(b);
|
|
}
|
|
|
|
function land$3(a, b) {
|
|
return BigInt(a) && BigInt(b);
|
|
}
|
|
|
|
function lor$3(a, b) {
|
|
return BigInt(a) || BigInt(b);
|
|
}
|
|
|
|
function lnot$3(a) {
|
|
return !BigInt(a);
|
|
}
|
|
|
|
var Scalar_native$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString$3,
|
|
e: e$3,
|
|
fromArray: fromArray$3,
|
|
bitLength: bitLength$3,
|
|
isNegative: isNegative$3,
|
|
isZero: isZero$3,
|
|
shiftLeft: shiftLeft$3,
|
|
shiftRight: shiftRight$3,
|
|
shl: shl$3,
|
|
shr: shr$3,
|
|
isOdd: isOdd$3,
|
|
naf: naf$3,
|
|
bits: bits$3,
|
|
toNumber: toNumber$3,
|
|
toArray: toArray$3,
|
|
add: add$3,
|
|
sub: sub$3,
|
|
neg: neg$3,
|
|
mul: mul$3,
|
|
square: square$3,
|
|
pow: pow$3,
|
|
exp: exp$4,
|
|
abs: abs$3,
|
|
div: div$3,
|
|
mod: mod$3,
|
|
eq: eq$3,
|
|
neq: neq$3,
|
|
lt: lt$3,
|
|
gt: gt$3,
|
|
leq: leq$3,
|
|
geq: geq$3,
|
|
band: band$3,
|
|
bor: bor$3,
|
|
bxor: bxor$3,
|
|
land: land$3,
|
|
lor: lor$3,
|
|
lnot: lnot$3
|
|
});
|
|
|
|
function fromString$4(s, radix) {
|
|
if (typeof s == "string") {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInteger(s.slice(2), 16);
|
|
} else {
|
|
return BigInteger(s,radix);
|
|
}
|
|
} else {
|
|
return BigInteger(s, radix);
|
|
}
|
|
}
|
|
|
|
const e$4 = fromString$4;
|
|
|
|
function fromArray$4(a, radix) {
|
|
return BigInteger.fromArray(a, radix);
|
|
}
|
|
|
|
function bitLength$4(a) {
|
|
return BigInteger(a).bitLength();
|
|
}
|
|
|
|
function isNegative$4(a) {
|
|
return BigInteger(a).isNegative();
|
|
}
|
|
|
|
function isZero$4(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
function shiftLeft$4(a, n) {
|
|
return BigInteger(a).shiftLeft(n);
|
|
}
|
|
|
|
function shiftRight$4(a, n) {
|
|
return BigInteger(a).shiftRight(n);
|
|
}
|
|
|
|
const shl$4 = shiftLeft$4;
|
|
const shr$4 = shiftRight$4;
|
|
|
|
function isOdd$4(a) {
|
|
return BigInteger(a).isOdd();
|
|
}
|
|
|
|
|
|
function naf$4(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
const z = 2 - E.mod(4).toJSNumber();
|
|
res.push( z );
|
|
E = E.minus(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function bits$4(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber$4(s) {
|
|
if (!s.lt(BigInteger("9007199254740992", 10))) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return s.toJSNumber();
|
|
}
|
|
|
|
function toArray$4(s, radix) {
|
|
return BigInteger(s).toArray(radix);
|
|
}
|
|
|
|
function add$4(a, b) {
|
|
return BigInteger(a).add(BigInteger(b));
|
|
}
|
|
|
|
function sub$4(a, b) {
|
|
return BigInteger(a).minus(BigInteger(b));
|
|
}
|
|
|
|
function neg$4(a) {
|
|
return BigInteger.zero.minus(BigInteger(a));
|
|
}
|
|
|
|
function mul$4(a, b) {
|
|
return BigInteger(a).times(BigInteger(b));
|
|
}
|
|
|
|
function square$4(a) {
|
|
return BigInteger(a).square();
|
|
}
|
|
|
|
function pow$4(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function exp$5(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function abs$4(a) {
|
|
return BigInteger(a).abs();
|
|
}
|
|
|
|
function div$4(a, b) {
|
|
return BigInteger(a).divide(BigInteger(b));
|
|
}
|
|
|
|
function mod$4(a, b) {
|
|
return BigInteger(a).mod(BigInteger(b));
|
|
}
|
|
|
|
function eq$4(a, b) {
|
|
return BigInteger(a).eq(BigInteger(b));
|
|
}
|
|
|
|
function neq$4(a, b) {
|
|
return BigInteger(a).neq(BigInteger(b));
|
|
}
|
|
|
|
function lt$4(a, b) {
|
|
return BigInteger(a).lt(BigInteger(b));
|
|
}
|
|
|
|
function gt$4(a, b) {
|
|
return BigInteger(a).gt(BigInteger(b));
|
|
}
|
|
|
|
function leq$4(a, b) {
|
|
return BigInteger(a).leq(BigInteger(b));
|
|
}
|
|
|
|
function geq$4(a, b) {
|
|
return BigInteger(a).geq(BigInteger(b));
|
|
}
|
|
|
|
function band$4(a, b) {
|
|
return BigInteger(a).and(BigInteger(b));
|
|
}
|
|
|
|
function bor$4(a, b) {
|
|
return BigInteger(a).or(BigInteger(b));
|
|
}
|
|
|
|
function bxor$4(a, b) {
|
|
return BigInteger(a).xor(BigInteger(b));
|
|
}
|
|
|
|
function land$4(a, b) {
|
|
return (!BigInteger(a).isZero()) && (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lor$4(a, b) {
|
|
return (!BigInteger(a).isZero()) || (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lnot$4(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
var Scalar_bigint$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString$4,
|
|
e: e$4,
|
|
fromArray: fromArray$4,
|
|
bitLength: bitLength$4,
|
|
isNegative: isNegative$4,
|
|
isZero: isZero$4,
|
|
shiftLeft: shiftLeft$4,
|
|
shiftRight: shiftRight$4,
|
|
shl: shl$4,
|
|
shr: shr$4,
|
|
isOdd: isOdd$4,
|
|
naf: naf$4,
|
|
bits: bits$4,
|
|
toNumber: toNumber$4,
|
|
toArray: toArray$4,
|
|
add: add$4,
|
|
sub: sub$4,
|
|
neg: neg$4,
|
|
mul: mul$4,
|
|
square: square$4,
|
|
pow: pow$4,
|
|
exp: exp$5,
|
|
abs: abs$4,
|
|
div: div$4,
|
|
mod: mod$4,
|
|
eq: eq$4,
|
|
neq: neq$4,
|
|
lt: lt$4,
|
|
gt: gt$4,
|
|
leq: leq$4,
|
|
geq: geq$4,
|
|
band: band$4,
|
|
bor: bor$4,
|
|
bxor: bxor$4,
|
|
land: land$4,
|
|
lor: lor$4,
|
|
lnot: lnot$4
|
|
});
|
|
|
|
const supportsNativeBigInt$3 = typeof BigInt === "function";
|
|
|
|
let Scalar$2 = {};
|
|
if (supportsNativeBigInt$3) {
|
|
Object.assign(Scalar$2, Scalar_native$1);
|
|
} else {
|
|
Object.assign(Scalar$2, Scalar_bigint$1);
|
|
}
|
|
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
Scalar$2.toRprLE = function rprBE(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v[i] = parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16);
|
|
for (let i=l; i<v.length; i++) v[i] = 0;
|
|
for (let i=v.length*4; i<n8; i++) buff[i] = Scalar$2.toNumber(Scalar$2.band(Scalar$2.shiftRight(e, i*8), 0xFF));
|
|
};
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
Scalar$2.toRprBE = function rprLEM(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v.setUint32(n8-i*4 -4, parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16), false);
|
|
for (let i=0; i<n8/4-l; i++) v[i] = 0;
|
|
};
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
Scalar$2.fromRprLE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const a = new Array(n8/4);
|
|
v.forEach( (ch,i) => a[a.length-i-1] = ch.toString(16).padStart(8,"0") );
|
|
return Scalar$2.fromString(a.join(""), 16);
|
|
};
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
Scalar$2.fromRprBE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const a = new Array(n8/4);
|
|
for (let i=0; i<n8/4; i++) {
|
|
a[i] = v.getUint32(i*4, false).toString(16).padStart(8, "0");
|
|
}
|
|
return Scalar$2.fromString(a.join(""), 16);
|
|
};
|
|
|
|
Scalar$2.toString = function toString(a, radix) {
|
|
return a.toString(radix);
|
|
};
|
|
|
|
Scalar$2.toLEBuff = function toLEBuff(a) {
|
|
const buff = new Uint8Array(Math.floor((Scalar$2.bitLength(a) - 1) / 8) +1);
|
|
Scalar$2.toRprLE(buff, 0, a, buff.byteLength);
|
|
return buff;
|
|
};
|
|
|
|
|
|
Scalar$2.zero = Scalar$2.e(0);
|
|
Scalar$2.one = Scalar$2.e(1);
|
|
|
|
let {
|
|
toRprLE: toRprLE$1,
|
|
toRprBE: toRprBE$1,
|
|
fromRprLE: fromRprLE$1,
|
|
fromRprBE: fromRprBE$1,
|
|
toString: toString$1,
|
|
toLEBuff: toLEBuff$1,
|
|
zero: zero$1,
|
|
one: one$1,
|
|
fromString: fromString$5,
|
|
e: e$5,
|
|
fromArray: fromArray$5,
|
|
bitLength: bitLength$5,
|
|
isNegative: isNegative$5,
|
|
isZero: isZero$5,
|
|
shiftLeft: shiftLeft$5,
|
|
shiftRight: shiftRight$5,
|
|
shl: shl$5,
|
|
shr: shr$5,
|
|
isOdd: isOdd$5,
|
|
naf: naf$5,
|
|
bits: bits$5,
|
|
toNumber: toNumber$5,
|
|
toArray: toArray$5,
|
|
add: add$5,
|
|
sub: sub$5,
|
|
neg: neg$5,
|
|
mul: mul$5,
|
|
square: square$5,
|
|
pow: pow$5,
|
|
exp: exp$6,
|
|
abs: abs$5,
|
|
div: div$5,
|
|
mod: mod$5,
|
|
eq: eq$5,
|
|
neq: neq$5,
|
|
lt: lt$5,
|
|
gt: gt$5,
|
|
leq: leq$5,
|
|
geq: geq$5,
|
|
band: band$5,
|
|
bor: bor$5,
|
|
bxor: bxor$5,
|
|
land: land$5,
|
|
lor: lor$5,
|
|
lnot: lnot$5,
|
|
} = Scalar$2;
|
|
|
|
var _Scalar$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
toRprLE: toRprLE$1,
|
|
toRprBE: toRprBE$1,
|
|
fromRprLE: fromRprLE$1,
|
|
fromRprBE: fromRprBE$1,
|
|
toString: toString$1,
|
|
toLEBuff: toLEBuff$1,
|
|
zero: zero$1,
|
|
one: one$1,
|
|
fromString: fromString$5,
|
|
e: e$5,
|
|
fromArray: fromArray$5,
|
|
bitLength: bitLength$5,
|
|
isNegative: isNegative$5,
|
|
isZero: isZero$5,
|
|
shiftLeft: shiftLeft$5,
|
|
shiftRight: shiftRight$5,
|
|
shl: shl$5,
|
|
shr: shr$5,
|
|
isOdd: isOdd$5,
|
|
naf: naf$5,
|
|
bits: bits$5,
|
|
toNumber: toNumber$5,
|
|
toArray: toArray$5,
|
|
add: add$5,
|
|
sub: sub$5,
|
|
neg: neg$5,
|
|
mul: mul$5,
|
|
square: square$5,
|
|
pow: pow$5,
|
|
exp: exp$6,
|
|
abs: abs$5,
|
|
div: div$5,
|
|
mod: mod$5,
|
|
eq: eq$5,
|
|
neq: neq$5,
|
|
lt: lt$5,
|
|
gt: gt$5,
|
|
leq: leq$5,
|
|
geq: geq$5,
|
|
band: band$5,
|
|
bor: bor$5,
|
|
bxor: bxor$5,
|
|
land: land$5,
|
|
lor: lor$5,
|
|
lnot: lnot$5
|
|
});
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/*
|
|
This library does operations on polynomials with coefficients in a field F.
|
|
|
|
A polynomial P(x) = p0 + p1 * x + p2 * x^2 + ... + pn * x^n is represented
|
|
by the array [ p0, p1, p2, ... , pn ].
|
|
*/
|
|
|
|
class PolField {
|
|
constructor (F) {
|
|
this.F = F;
|
|
|
|
let rem = F.sqrt_t;
|
|
let s = F.sqrt_s;
|
|
|
|
const five = this.F.add(this.F.add(this.F.two, this.F.two), this.F.one);
|
|
|
|
this.w = new Array(s+1);
|
|
this.wi = new Array(s+1);
|
|
this.w[s] = this.F.pow(five, rem);
|
|
this.wi[s] = this.F.inv(this.w[s]);
|
|
|
|
let n=s-1;
|
|
while (n>=0) {
|
|
this.w[n] = this.F.square(this.w[n+1]);
|
|
this.wi[n] = this.F.square(this.wi[n+1]);
|
|
n--;
|
|
}
|
|
|
|
|
|
this.roots = [];
|
|
/* for (let i=0; i<16; i++) {
|
|
let r = this.F.one;
|
|
n = 1 << i;
|
|
const rootsi = new Array(n);
|
|
for (let j=0; j<n; j++) {
|
|
rootsi[j] = r;
|
|
r = this.F.mul(r, this.w[i]);
|
|
}
|
|
|
|
this.roots.push(rootsi);
|
|
}
|
|
*/
|
|
this._setRoots(15);
|
|
}
|
|
|
|
_setRoots(n) {
|
|
for (let i=n; (i>=0) && (!this.roots[i]); i--) {
|
|
let r = this.F.one;
|
|
const nroots = 1 << i;
|
|
const rootsi = new Array(nroots);
|
|
for (let j=0; j<nroots; j++) {
|
|
rootsi[j] = r;
|
|
r = this.F.mul(r, this.w[i]);
|
|
}
|
|
this.roots[i] = rootsi;
|
|
}
|
|
}
|
|
|
|
add(a, b) {
|
|
const m = Math.max(a.length, b.length);
|
|
const res = new Array(m);
|
|
for (let i=0; i<m; i++) {
|
|
res[i] = this.F.add(a[i] || this.F.zero, b[i] || this.F.zero);
|
|
}
|
|
return this.reduce(res);
|
|
}
|
|
|
|
double(a) {
|
|
return this.add(a,a);
|
|
}
|
|
|
|
sub(a, b) {
|
|
const m = Math.max(a.length, b.length);
|
|
const res = new Array(m);
|
|
for (let i=0; i<m; i++) {
|
|
res[i] = this.F.sub(a[i] || this.F.zero, b[i] || this.F.zero);
|
|
}
|
|
return this.reduce(res);
|
|
}
|
|
|
|
mulScalar(p, b) {
|
|
if (this.F.eq(b, this.F.zero)) return [];
|
|
if (this.F.eq(b, this.F.one)) return p;
|
|
const res = new Array(p.length);
|
|
for (let i=0; i<p.length; i++) {
|
|
res[i] = this.F.mul(p[i], b);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
|
|
mul(a, b) {
|
|
if (a.length == 0) return [];
|
|
if (b.length == 0) return [];
|
|
if (a.length == 1) return this.mulScalar(b, a[0]);
|
|
if (b.length == 1) return this.mulScalar(a, b[0]);
|
|
|
|
if (b.length > a.length) {
|
|
[b, a] = [a, b];
|
|
}
|
|
|
|
if ((b.length <= 2) || (b.length < log2$2(a.length))) {
|
|
return this.mulNormal(a,b);
|
|
} else {
|
|
return this.mulFFT(a,b);
|
|
}
|
|
}
|
|
|
|
mulNormal(a, b) {
|
|
let res = [];
|
|
for (let i=0; i<b.length; i++) {
|
|
res = this.add(res, this.scaleX(this.mulScalar(a, b[i]), i) );
|
|
}
|
|
return res;
|
|
}
|
|
|
|
mulFFT(a,b) {
|
|
const longestN = Math.max(a.length, b.length);
|
|
const bitsResult = log2$2(longestN-1)+2;
|
|
this._setRoots(bitsResult);
|
|
|
|
const m = 1 << bitsResult;
|
|
const ea = this.extend(a,m);
|
|
const eb = this.extend(b,m);
|
|
|
|
const ta = __fft(this, ea, bitsResult, 0, 1);
|
|
const tb = __fft(this, eb, bitsResult, 0, 1);
|
|
|
|
const tres = new Array(m);
|
|
|
|
for (let i=0; i<m; i++) {
|
|
tres[i] = this.F.mul(ta[i], tb[i]);
|
|
}
|
|
|
|
const res = __fft(this, tres, bitsResult, 0, 1);
|
|
|
|
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
|
|
const resn = new Array(m);
|
|
for (let i=0; i<m; i++) {
|
|
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
|
|
}
|
|
|
|
return this.reduce(resn);
|
|
}
|
|
|
|
|
|
|
|
square(a) {
|
|
return this.mul(a,a);
|
|
}
|
|
|
|
scaleX(p, n) {
|
|
if (n==0) {
|
|
return p;
|
|
} else if (n>0) {
|
|
const z = new Array(n).fill(this.F.zero);
|
|
return z.concat(p);
|
|
} else {
|
|
if (-n >= p.length) return [];
|
|
return p.slice(-n);
|
|
}
|
|
}
|
|
|
|
eval2(p, x) {
|
|
let v = this.F.zero;
|
|
let ix = this.F.one;
|
|
for (let i=0; i<p.length; i++) {
|
|
v = this.F.add(v, this.F.mul(p[i], ix));
|
|
ix = this.F.mul(ix, x);
|
|
}
|
|
return v;
|
|
}
|
|
|
|
eval(p,x) {
|
|
const F = this.F;
|
|
if (p.length == 0) return F.zero;
|
|
const m = this._next2Power(p.length);
|
|
const ep = this.extend(p, m);
|
|
|
|
return _eval(ep, x, 0, 1, m);
|
|
|
|
function _eval(p, x, offset, step, n) {
|
|
if (n==1) return p[offset];
|
|
const newX = F.square(x);
|
|
const res= F.add(
|
|
_eval(p, newX, offset, step << 1, n >> 1),
|
|
F.mul(
|
|
x,
|
|
_eval(p, newX, offset+step , step << 1, n >> 1)));
|
|
return res;
|
|
}
|
|
}
|
|
|
|
lagrange(points) {
|
|
let roots = [this.F.one];
|
|
for (let i=0; i<points.length; i++) {
|
|
roots = this.mul(roots, [this.F.neg(points[i][0]), this.F.one]);
|
|
}
|
|
|
|
let sum = [];
|
|
for (let i=0; i<points.length; i++) {
|
|
let mpol = this.ruffini(roots, points[i][0]);
|
|
const factor =
|
|
this.F.mul(
|
|
this.F.inv(this.eval(mpol, points[i][0])),
|
|
points[i][1]);
|
|
mpol = this.mulScalar(mpol, factor);
|
|
sum = this.add(sum, mpol);
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
|
|
fft(p) {
|
|
if (p.length <= 1) return p;
|
|
const bits = log2$2(p.length-1)+1;
|
|
this._setRoots(bits);
|
|
|
|
const m = 1 << bits;
|
|
const ep = this.extend(p, m);
|
|
const res = __fft(this, ep, bits, 0, 1);
|
|
return res;
|
|
}
|
|
|
|
fft2(p) {
|
|
if (p.length <= 1) return p;
|
|
const bits = log2$2(p.length-1)+1;
|
|
this._setRoots(bits);
|
|
|
|
const m = 1 << bits;
|
|
const ep = this.extend(p, m);
|
|
__bitReverse(ep, bits);
|
|
const res = __fft2(this, ep, bits);
|
|
return res;
|
|
}
|
|
|
|
|
|
ifft(p) {
|
|
|
|
if (p.length <= 1) return p;
|
|
const bits = log2$2(p.length-1)+1;
|
|
this._setRoots(bits);
|
|
const m = 1 << bits;
|
|
const ep = this.extend(p, m);
|
|
const res = __fft(this, ep, bits, 0, 1);
|
|
|
|
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
|
|
const resn = new Array(m);
|
|
for (let i=0; i<m; i++) {
|
|
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
|
|
}
|
|
|
|
return resn;
|
|
|
|
}
|
|
|
|
|
|
ifft2(p) {
|
|
|
|
if (p.length <= 1) return p;
|
|
const bits = log2$2(p.length-1)+1;
|
|
this._setRoots(bits);
|
|
const m = 1 << bits;
|
|
const ep = this.extend(p, m);
|
|
__bitReverse(ep, bits);
|
|
const res = __fft2(this, ep, bits);
|
|
|
|
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
|
|
const resn = new Array(m);
|
|
for (let i=0; i<m; i++) {
|
|
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
|
|
}
|
|
|
|
return resn;
|
|
|
|
}
|
|
|
|
_fft(pall, bits, offset, step) {
|
|
|
|
const n = 1 << bits;
|
|
if (n==1) {
|
|
return [ pall[offset] ];
|
|
}
|
|
|
|
const ndiv2 = n >> 1;
|
|
const p1 = this._fft(pall, bits-1, offset, step*2);
|
|
const p2 = this._fft(pall, bits-1, offset+step, step*2);
|
|
|
|
const out = new Array(n);
|
|
|
|
let m= this.F.one;
|
|
for (let i=0; i<ndiv2; i++) {
|
|
out[i] = this.F.add(p1[i], this.F.mul(m, p2[i]));
|
|
out[i+ndiv2] = this.F.sub(p1[i], this.F.mul(m, p2[i]));
|
|
m = this.F.mul(m, this.w[bits]);
|
|
}
|
|
|
|
return out;
|
|
}
|
|
|
|
extend(p, e) {
|
|
if (e == p.length) return p;
|
|
const z = new Array(e-p.length).fill(this.F.zero);
|
|
|
|
return p.concat(z);
|
|
}
|
|
|
|
reduce(p) {
|
|
if (p.length == 0) return p;
|
|
if (! this.F.eq(p[p.length-1], this.F.zero) ) return p;
|
|
let i=p.length-1;
|
|
while( i>0 && this.F.eq(p[i], this.F.zero) ) i--;
|
|
return p.slice(0, i+1);
|
|
}
|
|
|
|
eq(a, b) {
|
|
const pa = this.reduce(a);
|
|
const pb = this.reduce(b);
|
|
|
|
if (pa.length != pb.length) return false;
|
|
for (let i=0; i<pb.length; i++) {
|
|
if (!this.F.eq(pa[i], pb[i])) return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
ruffini(p, r) {
|
|
const res = new Array(p.length-1);
|
|
res[res.length-1] = p[p.length-1];
|
|
for (let i = res.length-2; i>=0; i--) {
|
|
res[i] = this.F.add(this.F.mul(res[i+1], r), p[i+1]);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
_next2Power(v) {
|
|
v--;
|
|
v |= v >> 1;
|
|
v |= v >> 2;
|
|
v |= v >> 4;
|
|
v |= v >> 8;
|
|
v |= v >> 16;
|
|
v++;
|
|
return v;
|
|
}
|
|
|
|
toString(p) {
|
|
const ap = this.normalize(p);
|
|
let S = "";
|
|
for (let i=ap.length-1; i>=0; i--) {
|
|
if (!this.F.eq(p[i], this.F.zero)) {
|
|
if (S!="") S += " + ";
|
|
S = S + p[i].toString(10);
|
|
if (i>0) {
|
|
S = S + "x";
|
|
if (i>1) {
|
|
S = S + "^" +i;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return S;
|
|
}
|
|
|
|
normalize(p) {
|
|
const res = new Array(p.length);
|
|
for (let i=0; i<p.length; i++) {
|
|
res[i] = this.F.normalize(p[i]);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
_reciprocal(p, bits) {
|
|
const k = 1 << bits;
|
|
if (k==1) {
|
|
return [ this.F.inv(p[0]) ];
|
|
}
|
|
const np = this.scaleX(p, -k/2);
|
|
const q = this._reciprocal(np, bits-1);
|
|
const a = this.scaleX(this.double(q), 3*k/2-2);
|
|
const b = this.mul( this.square(q), p);
|
|
|
|
return this.scaleX(this.sub(a,b), -(k-2));
|
|
}
|
|
|
|
// divides x^m / v
|
|
_div2(m, v) {
|
|
const kbits = log2$2(v.length-1)+1;
|
|
const k = 1 << kbits;
|
|
|
|
const scaleV = k - v.length;
|
|
|
|
// rec = x^(k - 2) / v* x^scaleV =>
|
|
// rec = x^(k-2-scaleV)/ v
|
|
//
|
|
// res = x^m/v = x^(m + (2*k-2 - scaleV) - (2*k-2 - scaleV)) /v =>
|
|
// res = rec * x^(m - (2*k-2 - scaleV)) =>
|
|
// res = rec * x^(m - 2*k + 2 + scaleV)
|
|
|
|
const rec = this._reciprocal(this.scaleX(v, scaleV), kbits);
|
|
const res = this.scaleX(rec, m - 2*k + 2 + scaleV);
|
|
|
|
return res;
|
|
}
|
|
|
|
div(_u, _v) {
|
|
if (_u.length < _v.length) return [];
|
|
const kbits = log2$2(_v.length-1)+1;
|
|
const k = 1 << kbits;
|
|
|
|
const u = this.scaleX(_u, k-_v.length);
|
|
const v = this.scaleX(_v, k-_v.length);
|
|
|
|
const n = v.length-1;
|
|
let m = u.length-1;
|
|
|
|
const s = this._reciprocal(v, kbits);
|
|
let t;
|
|
if (m>2*n) {
|
|
t = this.sub(this.scaleX([this.F.one], 2*n), this.mul(s, v));
|
|
}
|
|
|
|
let q = [];
|
|
let rem = u;
|
|
let us, ut;
|
|
let finish = false;
|
|
|
|
while (!finish) {
|
|
us = this.mul(rem, s);
|
|
q = this.add(q, this.scaleX(us, -2*n));
|
|
|
|
if ( m > 2*n ) {
|
|
ut = this.mul(rem, t);
|
|
rem = this.scaleX(ut, -2*n);
|
|
m = rem.length-1;
|
|
} else {
|
|
finish = true;
|
|
}
|
|
}
|
|
|
|
return q;
|
|
}
|
|
|
|
|
|
// returns the ith nth-root of one
|
|
oneRoot(n, i) {
|
|
let nbits = log2$2(n-1)+1;
|
|
let res = this.F.one;
|
|
let r = i;
|
|
|
|
if(i>=n) {
|
|
throw new Error("Given 'i' should be lower than 'n'");
|
|
}
|
|
else if (1<<nbits !== n) {
|
|
throw new Error(`Internal errlr: ${n} should equal ${1<<nbits}`);
|
|
}
|
|
|
|
while (r>0) {
|
|
if (r & 1 == 1) {
|
|
res = this.F.mul(res, this.w[nbits]);
|
|
}
|
|
r = r >> 1;
|
|
nbits --;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
computeVanishingPolinomial(bits, t) {
|
|
const m = 1 << bits;
|
|
return this.F.sub(this.F.pow(t, m), this.F.one);
|
|
}
|
|
|
|
evaluateLagrangePolynomials(bits, t) {
|
|
const m= 1 << bits;
|
|
const tm = this.F.pow(t, m);
|
|
const u= new Array(m).fill(this.F.zero);
|
|
this._setRoots(bits);
|
|
const omega = this.w[bits];
|
|
|
|
if (this.F.eq(tm, this.F.one)) {
|
|
for (let i = 0; i < m; i++) {
|
|
if (this.F.eq(this.roots[bits][0],t)) { // i.e., t equals omega^i
|
|
u[i] = this.F.one;
|
|
return u;
|
|
}
|
|
}
|
|
}
|
|
|
|
const z = this.F.sub(tm, this.F.one);
|
|
// let l = this.F.mul(z, this.F.pow(this.F.twoinv, m));
|
|
let l = this.F.mul(z, this.F.inv(this.F.e(m)));
|
|
for (let i = 0; i < m; i++) {
|
|
u[i] = this.F.mul(l, this.F.inv(this.F.sub(t,this.roots[bits][i])));
|
|
l = this.F.mul(l, omega);
|
|
}
|
|
|
|
return u;
|
|
}
|
|
|
|
log2(V) {
|
|
return log2$2(V);
|
|
}
|
|
}
|
|
|
|
function log2$2( V )
|
|
{
|
|
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
|
|
}
|
|
|
|
|
|
function __fft(PF, pall, bits, offset, step) {
|
|
|
|
const n = 1 << bits;
|
|
if (n==1) {
|
|
return [ pall[offset] ];
|
|
} else if (n==2) {
|
|
return [
|
|
PF.F.add(pall[offset], pall[offset + step]),
|
|
PF.F.sub(pall[offset], pall[offset + step])];
|
|
}
|
|
|
|
const ndiv2 = n >> 1;
|
|
const p1 = __fft(PF, pall, bits-1, offset, step*2);
|
|
const p2 = __fft(PF, pall, bits-1, offset+step, step*2);
|
|
|
|
const out = new Array(n);
|
|
|
|
for (let i=0; i<ndiv2; i++) {
|
|
out[i] = PF.F.add(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
|
|
out[i+ndiv2] = PF.F.sub(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
|
|
}
|
|
|
|
return out;
|
|
}
|
|
|
|
|
|
function __fft2(PF, pall, bits) {
|
|
|
|
const n = 1 << bits;
|
|
if (n==1) {
|
|
return [ pall[0] ];
|
|
}
|
|
|
|
const ndiv2 = n >> 1;
|
|
const p1 = __fft2(PF, pall.slice(0, ndiv2), bits-1);
|
|
const p2 = __fft2(PF, pall.slice(ndiv2), bits-1);
|
|
|
|
const out = new Array(n);
|
|
|
|
for (let i=0; i<ndiv2; i++) {
|
|
out[i] = PF.F.add(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
|
|
out[i+ndiv2] = PF.F.sub(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
|
|
}
|
|
|
|
return out;
|
|
}
|
|
|
|
const _revTable$3 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$3[i] = _revSlow$3(i, 8);
|
|
}
|
|
|
|
function _revSlow$3(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function rev(idx, bits) {
|
|
return (
|
|
_revTable$3[idx >>> 24] |
|
|
(_revTable$3[(idx >>> 16) & 0xFF] << 8) |
|
|
(_revTable$3[(idx >>> 8) & 0xFF] << 16) |
|
|
(_revTable$3[idx & 0xFF] << 24)
|
|
) >>> (32-bits);
|
|
}
|
|
|
|
function __bitReverse(p, bits) {
|
|
for (let k=0; k<p.length; k++) {
|
|
const r = rev(k, bits);
|
|
if (r>k) {
|
|
const tmp= p[k];
|
|
p[k] = p[r];
|
|
p[r] = tmp;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
function mulScalar(F, base, e) {
|
|
let res;
|
|
|
|
if (isZero$5(e)) return F.zero;
|
|
|
|
const n = naf$5(e);
|
|
|
|
if (n[n.length-1] == 1) {
|
|
res = base;
|
|
} else if (n[n.length-1] == -1) {
|
|
res = F.neg(base);
|
|
} else {
|
|
throw new Error("invlaud NAF");
|
|
}
|
|
|
|
for (let i=n.length-2; i>=0; i--) {
|
|
|
|
res = F.double(res);
|
|
|
|
if (n[i] == 1) {
|
|
res = F.add(res, base);
|
|
} else if (n[i] == -1) {
|
|
res = F.sub(res, base);
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
/*
|
|
exports.mulScalar = (F, base, e) =>{
|
|
let res = F.zero;
|
|
let rem = bigInt(e);
|
|
let exp = base;
|
|
|
|
while (! rem.eq(bigInt.zero)) {
|
|
if (rem.and(bigInt.one).eq(bigInt.one)) {
|
|
res = F.add(res, exp);
|
|
}
|
|
exp = F.double(exp);
|
|
rem = rem.shiftRight(1);
|
|
}
|
|
|
|
return res;
|
|
};
|
|
*/
|
|
|
|
|
|
function exp$7(F, base, e) {
|
|
|
|
if (isZero$5(e)) return F.one;
|
|
|
|
const n = bits$5(e);
|
|
|
|
if (n.legth==0) return F.one;
|
|
|
|
let res = base;
|
|
|
|
for (let i=n.length-2; i>=0; i--) {
|
|
|
|
res = F.square(res);
|
|
|
|
if (n[i]) {
|
|
res = F.mul(res, base);
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
// Check here: https://eprint.iacr.org/2012/685.pdf
|
|
|
|
function buildSqrt$1 (F) {
|
|
if ((F.m % 2) == 1) {
|
|
if (eq$5(mod$5(F.p, 4), 1 )) {
|
|
if (eq$5(mod$5(F.p, 8), 1 )) {
|
|
if (eq$5(mod$5(F.p, 16), 1 )) {
|
|
// alg7_muller(F);
|
|
alg5_tonelliShanks$1(F);
|
|
} else if (eq$5(mod$5(F.p, 16), 9 )) {
|
|
alg4_kong$1(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$5(mod$5(F.p, 8), 5 )) {
|
|
alg3_atkin$1(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$5(mod$5(F.p, 4), 3 )) {
|
|
alg2_shanks$1(F);
|
|
}
|
|
} else {
|
|
const pm2mod4 = mod$5(pow$5(F.p, F.m/2), 4);
|
|
if (pm2mod4 == 1) {
|
|
alg10_adj$1(F);
|
|
} else if (pm2mod4 == 3) {
|
|
alg9_adj$1(F);
|
|
} else {
|
|
alg8_complex$1(F);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function alg5_tonelliShanks$1(F) {
|
|
F.sqrt_q = pow$5(F.p, F.m);
|
|
|
|
F.sqrt_s = 0;
|
|
F.sqrt_t = sub$5(F.sqrt_q, 1);
|
|
|
|
while (!isOdd$5(F.sqrt_t)) {
|
|
F.sqrt_s = F.sqrt_s + 1;
|
|
F.sqrt_t = div$5(F.sqrt_t, 2);
|
|
}
|
|
|
|
let c0 = F.one;
|
|
|
|
while (F.eq(c0, F.one)) {
|
|
const c = F.random();
|
|
F.sqrt_z = F.pow(c, F.sqrt_t);
|
|
c0 = F.pow(F.sqrt_z, 1 << (F.sqrt_s-1) );
|
|
}
|
|
|
|
F.sqrt_tm1d2 = div$5(sub$5(F.sqrt_t, 1),2);
|
|
|
|
F.sqrt = function(a) {
|
|
const F=this;
|
|
if (F.isZero(a)) return F.zero;
|
|
let w = F.pow(a, F.sqrt_tm1d2);
|
|
const a0 = F.pow( F.mul(F.square(w), a), 1 << (F.sqrt_s-1) );
|
|
if (F.eq(a0, F.negone)) return null;
|
|
|
|
let v = F.sqrt_s;
|
|
let x = F.mul(a, w);
|
|
let b = F.mul(x, w);
|
|
let z = F.sqrt_z;
|
|
while (!F.eq(b, F.one)) {
|
|
let b2k = F.square(b);
|
|
let k=1;
|
|
while (!F.eq(b2k, F.one)) {
|
|
b2k = F.square(b2k);
|
|
k++;
|
|
}
|
|
|
|
w = z;
|
|
for (let i=0; i<v-k-1; i++) {
|
|
w = F.square(w);
|
|
}
|
|
z = F.square(w);
|
|
b = F.mul(b, z);
|
|
x = F.mul(x, w);
|
|
v = k;
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg4_kong$1(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 4 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg3_atkin$1(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 3 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg2_shanks$1(F) {
|
|
|
|
F.sqrt_q = pow$5(F.p, F.m);
|
|
F.sqrt_e1 = div$5( sub$5(F.sqrt_q, 3) , 4);
|
|
|
|
F.sqrt = function(a) {
|
|
if (this.isZero(a)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const a1 = this.pow(a, this.sqrt_e1);
|
|
|
|
const a0 = this.mul(this.square(a1), a);
|
|
|
|
if ( this.eq(a0, this.negone) ) return null;
|
|
|
|
const x = this.mul(a1, a);
|
|
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg10_adj$1(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 10 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg9_adj$1(F) {
|
|
F.sqrt_q = pow$5(F.p, F.m/2);
|
|
F.sqrt_e34 = div$5( sub$5(F.sqrt_q, 3) , 4);
|
|
F.sqrt_e12 = div$5( sub$5(F.sqrt_q, 1) , 2);
|
|
|
|
F.frobenius = function(n, x) {
|
|
if ((n%2) == 1) {
|
|
return F.conjugate(x);
|
|
} else {
|
|
return x;
|
|
}
|
|
};
|
|
|
|
F.sqrt = function(a) {
|
|
const F = this;
|
|
const a1 = F.pow(a, F.sqrt_e34);
|
|
const alfa = F.mul(F.square(a1), a);
|
|
const a0 = F.mul(F.frobenius(1, alfa), alfa);
|
|
if (F.eq(a0, F.negone)) return null;
|
|
const x0 = F.mul(a1, a);
|
|
let x;
|
|
if (F.eq(alfa, F.negone)) {
|
|
x = F.mul(x0, [F.F.zero, F.F.one]);
|
|
} else {
|
|
const b = F.pow(F.add(F.one, alfa), F.sqrt_e12);
|
|
x = F.mul(b, x0);
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
|
|
function alg8_complex$1(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 8 not implemented");
|
|
};
|
|
}
|
|
|
|
function quarterRound$1(st, a, b, c, d) {
|
|
|
|
st[a] = (st[a] + st[b]) >>> 0;
|
|
st[d] = (st[d] ^ st[a]) >>> 0;
|
|
st[d] = ((st[d] << 16) | ((st[d]>>>16) & 0xFFFF)) >>> 0;
|
|
|
|
st[c] = (st[c] + st[d]) >>> 0;
|
|
st[b] = (st[b] ^ st[c]) >>> 0;
|
|
st[b] = ((st[b] << 12) | ((st[b]>>>20) & 0xFFF)) >>> 0;
|
|
|
|
st[a] = (st[a] + st[b]) >>> 0;
|
|
st[d] = (st[d] ^ st[a]) >>> 0;
|
|
st[d] = ((st[d] << 8) | ((st[d]>>>24) & 0xFF)) >>> 0;
|
|
|
|
st[c] = (st[c] + st[d]) >>> 0;
|
|
st[b] = (st[b] ^ st[c]) >>> 0;
|
|
st[b] = ((st[b] << 7) | ((st[b]>>>25) & 0x7F)) >>> 0;
|
|
}
|
|
|
|
function doubleRound$1(st) {
|
|
quarterRound$1(st, 0, 4, 8,12);
|
|
quarterRound$1(st, 1, 5, 9,13);
|
|
quarterRound$1(st, 2, 6,10,14);
|
|
quarterRound$1(st, 3, 7,11,15);
|
|
|
|
quarterRound$1(st, 0, 5,10,15);
|
|
quarterRound$1(st, 1, 6,11,12);
|
|
quarterRound$1(st, 2, 7, 8,13);
|
|
quarterRound$1(st, 3, 4, 9,14);
|
|
}
|
|
|
|
class ChaCha$1 {
|
|
|
|
constructor(seed) {
|
|
seed = seed || [0,0,0,0,0,0,0,0];
|
|
this.state = [
|
|
0x61707865,
|
|
0x3320646E,
|
|
0x79622D32,
|
|
0x6B206574,
|
|
seed[0],
|
|
seed[1],
|
|
seed[2],
|
|
seed[3],
|
|
seed[4],
|
|
seed[5],
|
|
seed[6],
|
|
seed[7],
|
|
0,
|
|
0,
|
|
0,
|
|
0
|
|
];
|
|
this.idx = 16;
|
|
this.buff = new Array(16);
|
|
}
|
|
|
|
nextU32() {
|
|
if (this.idx == 16) this.update();
|
|
return this.buff[this.idx++];
|
|
}
|
|
|
|
nextU64() {
|
|
return add$5(mul$5(this.nextU32(), 0x100000000), this.nextU32());
|
|
}
|
|
|
|
nextBool() {
|
|
return (this.nextU32() & 1) == 1;
|
|
}
|
|
|
|
update() {
|
|
// Copy the state
|
|
for (let i=0; i<16; i++) this.buff[i] = this.state[i];
|
|
|
|
// Apply the rounds
|
|
for (let i=0; i<10; i++) doubleRound$1(this.buff);
|
|
|
|
// Add to the initial
|
|
for (let i=0; i<16; i++) this.buff[i] = (this.buff[i] + this.state[i]) >>> 0;
|
|
|
|
this.idx = 0;
|
|
|
|
this.state[12] = (this.state[12] + 1) >>> 0;
|
|
if (this.state[12] != 0) return;
|
|
this.state[13] = (this.state[13] + 1) >>> 0;
|
|
if (this.state[13] != 0) return;
|
|
this.state[14] = (this.state[14] + 1) >>> 0;
|
|
if (this.state[14] != 0) return;
|
|
this.state[15] = (this.state[15] + 1) >>> 0;
|
|
}
|
|
}
|
|
|
|
/* global window */
|
|
|
|
function getRandomBytes$1(n) {
|
|
let array = new Uint8Array(n);
|
|
if (typeof window !== "undefined") { // Browser
|
|
if (typeof window.crypto !== "undefined") { // Supported
|
|
window.crypto.getRandomValues(array);
|
|
} else { // fallback
|
|
for (let i=0; i<n; i++) {
|
|
array[i] = (Math.random()*4294967296)>>>0;
|
|
}
|
|
}
|
|
}
|
|
else { // NodeJS
|
|
crypto.randomFillSync(array);
|
|
}
|
|
return array;
|
|
}
|
|
|
|
function getRandomSeed$1() {
|
|
const arr = getRandomBytes$1(32);
|
|
const arrV = new Uint32Array(arr.buffer);
|
|
const seed = [];
|
|
for (let i=0; i<8; i++) {
|
|
seed.push(arrV[i]);
|
|
}
|
|
return seed;
|
|
}
|
|
|
|
let threadRng$1 = null;
|
|
|
|
function getThreadRng$1() {
|
|
if (threadRng$1) return threadRng$1;
|
|
threadRng$1 = new ChaCha$1(getRandomSeed$1());
|
|
return threadRng$1;
|
|
}
|
|
|
|
/* global BigInt */
|
|
|
|
class ZqField$2 {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = 1n;
|
|
this.zero = 0n;
|
|
this.p = BigInt(p);
|
|
this.m = 1;
|
|
this.negone = this.p-1n;
|
|
this.two = 2n;
|
|
this.half = this.p >> 1n;
|
|
this.bitLength = bitLength$5(this.p);
|
|
this.mask = (1n << BigInt(this.bitLength)) - 1n;
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = this.e(1n << BigInt(this.n64*64));
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone >> 1n;
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!this.eq(r, this.negone)) {
|
|
this.nqr = this.nqr + 1n;
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
|
|
this.s = 0;
|
|
this.t = this.negone;
|
|
|
|
while ((this.t & 1n) == 0n) {
|
|
this.s = this.s + 1;
|
|
this.t = this.t >> 1n;
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt$1(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
let res;
|
|
if (!b) {
|
|
res = BigInt(a);
|
|
} else if (b==16) {
|
|
res = BigInt("0x"+a);
|
|
}
|
|
if (res < 0) {
|
|
let nres = -res;
|
|
if (nres >= this.p) nres = nres % this.p;
|
|
return this.p - nres;
|
|
} else {
|
|
return (res>= this.p) ? res%this.p : res;
|
|
}
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
const res = a + b;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
return (a >= b) ? a-b : this.p-b+a;
|
|
}
|
|
|
|
neg(a) {
|
|
return a ? this.p-a : a;
|
|
}
|
|
|
|
mul(a, b) {
|
|
return (a*b)%this.p;
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return (base * this.e(s)) % this.p;
|
|
}
|
|
|
|
square(a) {
|
|
return (a*a) % this.p;
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a==b;
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a!=b;
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa < bb;
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa > bb;
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa <= bb;
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa >= bb;
|
|
}
|
|
|
|
div(a, b) {
|
|
return this.mul(a, this.inv(b));
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (!b) throw new Error("Division by zero");
|
|
return a / b;
|
|
}
|
|
|
|
inv(a) {
|
|
if (!a) throw new Error("Division by zero");
|
|
|
|
let t = 0n;
|
|
let r = this.p;
|
|
let newt = 1n;
|
|
let newr = a % this.p;
|
|
while (newr) {
|
|
let q = r/newr;
|
|
[t, newt] = [newt, t-q*newt];
|
|
[r, newr] = [newr, r-q*newr];
|
|
}
|
|
if (t<0n) t += this.p;
|
|
return t;
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a % b;
|
|
}
|
|
|
|
pow(b, e) {
|
|
return exp$7(this, b, e);
|
|
}
|
|
|
|
exp(b, e) {
|
|
return exp$7(this, b, e);
|
|
}
|
|
|
|
band(a, b) {
|
|
const res = ((a & b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bor(a, b) {
|
|
const res = ((a | b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bxor(a, b) {
|
|
const res = ((a ^ b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bnot(a) {
|
|
const res = a ^ this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
const res = (a << b) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
return a >> nb;
|
|
} else {
|
|
return 0n;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
return a >> b;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
const res = (a << nb) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a && b) ? 1n : 0n;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a || b) ? 1n : 0n;
|
|
}
|
|
|
|
lnot(a) {
|
|
return (a) ? 0n : 1n;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n == 0n) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone >> this.one);
|
|
if ( res != 1n ) return null;
|
|
|
|
let m = this.s;
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one) >> 1n );
|
|
|
|
while ( t != 1n ) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (sq != 1n ) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r > (this.p >> 1n)) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a, b) {
|
|
a = BigInt(a,b);
|
|
if (a < 0) {
|
|
let na = -a;
|
|
if (na >= this.p) na = na % this.p;
|
|
return this.p - na;
|
|
} else {
|
|
return (a>= this.p) ? a%this.p : a;
|
|
}
|
|
}
|
|
|
|
random() {
|
|
const nBytes = (this.bitLength*2 / 8);
|
|
let res =0n;
|
|
for (let i=0; i<nBytes; i++) {
|
|
res = (res << 8n) + BigInt(getRandomBytes$1(1)[0]);
|
|
}
|
|
return res % this.p;
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (a > this.half) {
|
|
const v = this.p-a;
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a == 0n;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v=0n;
|
|
for (let i=0; i<this.n64; i++) {
|
|
v += rng.nextU64() << BigInt(64 *i);
|
|
}
|
|
v &= this.mask;
|
|
} while (v >= this.p);
|
|
v = (v * this.Ri) % this.p; // Convert from montgomery
|
|
return v;
|
|
}
|
|
|
|
}
|
|
|
|
class ZqField$3 {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = BigInteger.one;
|
|
this.zero = BigInteger.zero;
|
|
this.p = BigInteger(p);
|
|
this.m = 1;
|
|
this.negone = this.p.minus(BigInteger.one);
|
|
this.two = BigInteger(2);
|
|
this.half = this.p.shiftRight(1);
|
|
this.bitLength = this.p.bitLength();
|
|
this.mask = BigInteger.one.shiftLeft(this.bitLength).minus(BigInteger.one);
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = BigInteger.one.shiftLeft(this.n64*64);
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone.shiftRight(this.one);
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!r.equals(this.negone)) {
|
|
this.nqr = this.nqr.add(this.one);
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
this.s = this.zero;
|
|
this.t = this.negone;
|
|
|
|
while (!this.t.isOdd()) {
|
|
this.s = this.s.add(this.one);
|
|
this.t = this.t.shiftRight(this.one);
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt$1(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
|
|
const res = BigInteger(a,b);
|
|
|
|
return this.normalize(res);
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
let res = a.add(b);
|
|
if (res.geq(this.p)) {
|
|
res = res.minus(this.p);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
if (a.geq(b)) {
|
|
return a.minus(b);
|
|
} else {
|
|
return this.p.minus(b.minus(a));
|
|
}
|
|
}
|
|
|
|
neg(a) {
|
|
if (a.isZero()) return a;
|
|
return this.p.minus(a);
|
|
}
|
|
|
|
mul(a, b) {
|
|
return a.times(b).mod(this.p);
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return base.times(BigInteger(s)).mod(this.p);
|
|
}
|
|
|
|
square(a) {
|
|
return a.square().mod(this.p);
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a.eq(b);
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a.neq(b);
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.lt(bb);
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.gt(bb);
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.leq(bb);
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.geq(bb);
|
|
}
|
|
|
|
div(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.times(b.modInv(this.p)).mod(this.p);
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.divide(b);
|
|
}
|
|
|
|
inv(a) {
|
|
if (a.isZero()) throw new Error("Division by zero");
|
|
return a.modInv(this.p);
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a.mod(b);
|
|
}
|
|
|
|
pow(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
exp(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
band(a, b) {
|
|
return a.and(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bor(a, b) {
|
|
return a.or(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bxor(a, b) {
|
|
return a.xor(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bnot(a) {
|
|
return a.xor(this.mask).mod(this.p);
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftLeft(b).and(this.mask).mod(this.p);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shr(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftRight(b);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shl(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a.isZero() || b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a.isZero() && b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lnot(a) {
|
|
return a.isZero() ? BigInteger.one : BigInteger.zero;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n.equals(this.zero)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone.shiftRight(this.one));
|
|
if (!res.equals(this.one)) return null;
|
|
|
|
let m = parseInt(this.s);
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one).shiftRight(this.one) );
|
|
|
|
while (!t.equals(this.one)) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (!sq.equals(this.one)) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r.greater(this.p.shiftRight(this.one))) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a) {
|
|
a = BigInteger(a);
|
|
if (a.isNegative()) {
|
|
return this.p.minus(a.abs().mod(this.p));
|
|
} else {
|
|
return a.mod(this.p);
|
|
}
|
|
}
|
|
|
|
random() {
|
|
let res = BigInteger(0);
|
|
let n = BigInteger(this.p.square());
|
|
while (!n.isZero()) {
|
|
res = res.shiftLeft(8).add(BigInteger(getRandomBytes$1(1)[0]));
|
|
n = n.shiftRight(8);
|
|
}
|
|
return res.mod(this.p);
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (!a.lesserOrEquals(this.p.shiftRight(BigInteger(1)))) {
|
|
const v = this.p.minus(a);
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a.isZero();
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v = BigInteger(0);
|
|
for (let i=0; i<this.n64; i++) {
|
|
v = v.add(v, rng.nextU64().shiftLeft(64*i));
|
|
}
|
|
v = v.and(this.mask);
|
|
} while (v.geq(this.p));
|
|
v = v.times(this.Ri).mod(this.q);
|
|
return v;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
const supportsNativeBigInt$4 = typeof BigInt === "function";
|
|
let _F1Field$1;
|
|
if (supportsNativeBigInt$4) {
|
|
_F1Field$1 = ZqField$2;
|
|
} else {
|
|
_F1Field$1 = ZqField$3;
|
|
}
|
|
|
|
class F1Field$1 extends _F1Field$1 {
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
toRprLE(buff, o, e) {
|
|
toRprLE$1(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
toRprBE(buff, o, e) {
|
|
toRprBE$1(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Montgomery Representation
|
|
toRprBEM(buff, o, e) {
|
|
return this.toRprBE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
toRprLEM(buff, o, e) {
|
|
return this.toRprLE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
fromRprLE(buff, o) {
|
|
return fromRprLE$1(buff, o, this.n8);
|
|
}
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
fromRprBE(buff, o) {
|
|
return fromRprBE$1(buff, o, this.n8);
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
return this.mul(this.fromRprLE(buff, o), this.Ri);
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
return this.mul(this.fromRprBE(buff, o), this.Ri);
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
class F2Field {
|
|
constructor(F, nonResidue) {
|
|
this.type="F2";
|
|
this.F = F;
|
|
this.zero = [this.F.zero, this.F.zero];
|
|
this.one = [this.F.one, this.F.zero];
|
|
this.negone = this.neg(this.one);
|
|
this.nonResidue = nonResidue;
|
|
this.m = F.m*2;
|
|
this.p = F.p;
|
|
this.n64 = F.n64*2;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
|
|
buildSqrt$1(this);
|
|
}
|
|
|
|
_mulByNonResidue(a) {
|
|
return this.F.mul(this.nonResidue, a);
|
|
}
|
|
|
|
copy(a) {
|
|
return [this.F.copy(a[0]), this.F.copy(a[1])];
|
|
}
|
|
|
|
add(a, b) {
|
|
return [
|
|
this.F.add(a[0], b[0]),
|
|
this.F.add(a[1], b[1])
|
|
];
|
|
}
|
|
|
|
double(a) {
|
|
return this.add(a,a);
|
|
}
|
|
|
|
sub(a, b) {
|
|
return [
|
|
this.F.sub(a[0], b[0]),
|
|
this.F.sub(a[1], b[1])
|
|
];
|
|
}
|
|
|
|
neg(a) {
|
|
return this.sub(this.zero, a);
|
|
}
|
|
|
|
conjugate(a) {
|
|
return [
|
|
a[0],
|
|
this.F.neg(a[1])
|
|
];
|
|
}
|
|
|
|
mul(a, b) {
|
|
const aA = this.F.mul(a[0] , b[0]);
|
|
const bB = this.F.mul(a[1] , b[1]);
|
|
|
|
return [
|
|
this.F.add( aA , this._mulByNonResidue(bB)),
|
|
this.F.sub(
|
|
this.F.mul(
|
|
this.F.add(a[0], a[1]),
|
|
this.F.add(b[0], b[1])),
|
|
this.F.add(aA, bB))];
|
|
}
|
|
|
|
inv(a) {
|
|
const t0 = this.F.square(a[0]);
|
|
const t1 = this.F.square(a[1]);
|
|
const t2 = this.F.sub(t0, this._mulByNonResidue(t1));
|
|
const t3 = this.F.inv(t2);
|
|
return [
|
|
this.F.mul(a[0], t3),
|
|
this.F.neg(this.F.mul( a[1], t3)) ];
|
|
}
|
|
|
|
div(a, b) {
|
|
return this.mul(a, this.inv(b));
|
|
}
|
|
|
|
square(a) {
|
|
const ab = this.F.mul(a[0] , a[1]);
|
|
|
|
/*
|
|
[
|
|
(a + b) * (a + non_residue * b) - ab - non_residue * ab,
|
|
ab + ab
|
|
];
|
|
*/
|
|
|
|
return [
|
|
this.F.sub(
|
|
this.F.mul(
|
|
this.F.add(a[0], a[1]) ,
|
|
this.F.add(
|
|
a[0] ,
|
|
this._mulByNonResidue(a[1]))),
|
|
this.F.add(
|
|
ab,
|
|
this._mulByNonResidue(ab))),
|
|
this.F.add(ab, ab)
|
|
];
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.F.isZero(a[0]) && this.F.isZero(a[1]);
|
|
}
|
|
|
|
eq(a, b) {
|
|
return this.F.eq(a[0], b[0]) && this.F.eq(a[1], b[1]);
|
|
}
|
|
|
|
mulScalar(base, e) {
|
|
return mulScalar(this, base, e);
|
|
}
|
|
|
|
pow(base, e) {
|
|
return exp$7(this, base, e);
|
|
}
|
|
|
|
exp(base, e) {
|
|
return exp$7(this, base, e);
|
|
}
|
|
|
|
toString(a) {
|
|
return `[ ${this.F.toString(a[0])} , ${this.F.toString(a[1])} ]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c0 = this.F.fromRng(rng);
|
|
const c1 = this.F.fromRng(rng);
|
|
return [c0, c1];
|
|
}
|
|
|
|
gt(a, b) {
|
|
if (this.F.gt(a[0], b[0])) return true;
|
|
if (this.F.gt(b[0], a[0])) return false;
|
|
if (this.F.gt(a[1], b[1])) return true;
|
|
return false;
|
|
}
|
|
|
|
geq(a, b) {
|
|
return this.gt(a, b) || this.eq(a, b);
|
|
}
|
|
|
|
lt(a, b) {
|
|
return !this.geq(a,b);
|
|
}
|
|
|
|
leq(a, b) {
|
|
return !this.gt(a,b);
|
|
}
|
|
|
|
neq(a, b) {
|
|
return !this.eq(a,b);
|
|
}
|
|
|
|
random() {
|
|
return [this.F.random(), this.F.random()];
|
|
}
|
|
|
|
|
|
toRprLE(buff, o, e) {
|
|
this.F.toRprLE(buff, o, e[0]);
|
|
this.F.toRprLE(buff, o+this.F.n8, e[1]);
|
|
}
|
|
|
|
toRprBE(buff, o, e) {
|
|
this.F.toRprBE(buff, o, e[1]);
|
|
this.F.toRprBE(buff, o+this.F.n8, e[0]);
|
|
}
|
|
|
|
toRprLEM(buff, o, e) {
|
|
this.F.toRprLEM(buff, o, e[0]);
|
|
this.F.toRprLEM(buff, o+this.F.n8, e[1]);
|
|
}
|
|
|
|
|
|
toRprBEM(buff, o, e) {
|
|
this.F.toRprBEM(buff, o, e[1]);
|
|
this.F.toRprBEM(buff, o+this.F.n8, e[0]);
|
|
}
|
|
|
|
fromRprLE(buff, o) {
|
|
o = o || 0;
|
|
const c0 = this.F.fromRprLE(buff, o);
|
|
const c1 = this.F.fromRprLE(buff, o+this.F.n8);
|
|
return [c0, c1];
|
|
}
|
|
|
|
fromRprBE(buff, o) {
|
|
o = o || 0;
|
|
const c1 = this.F.fromRprBE(buff, o);
|
|
const c0 = this.F.fromRprBE(buff, o+this.F.n8);
|
|
return [c0, c1];
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
o = o || 0;
|
|
const c0 = this.F.fromRprLEM(buff, o);
|
|
const c1 = this.F.fromRprLEM(buff, o+this.F.n8);
|
|
return [c0, c1];
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
o = o || 0;
|
|
const c1 = this.F.fromRprBEM(buff, o);
|
|
const c0 = this.F.fromRprBEM(buff, o+this.F.n8);
|
|
return [c0, c1];
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
class F3Field {
|
|
constructor(F, nonResidue) {
|
|
this.type="F3";
|
|
this.F = F;
|
|
this.zero = [this.F.zero, this.F.zero, this.F.zero];
|
|
this.one = [this.F.one, this.F.zero, this.F.zero];
|
|
this.negone = this.neg(this.one);
|
|
this.nonResidue = nonResidue;
|
|
this.m = F.m*3;
|
|
this.p = F.p;
|
|
this.n64 = F.n64*3;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
}
|
|
|
|
_mulByNonResidue(a) {
|
|
return this.F.mul(this.nonResidue, a);
|
|
}
|
|
|
|
copy(a) {
|
|
return [this.F.copy(a[0]), this.F.copy(a[1]), this.F.copy(a[2])];
|
|
}
|
|
|
|
add(a, b) {
|
|
return [
|
|
this.F.add(a[0], b[0]),
|
|
this.F.add(a[1], b[1]),
|
|
this.F.add(a[2], b[2])
|
|
];
|
|
}
|
|
|
|
double(a) {
|
|
return this.add(a,a);
|
|
}
|
|
|
|
sub(a, b) {
|
|
return [
|
|
this.F.sub(a[0], b[0]),
|
|
this.F.sub(a[1], b[1]),
|
|
this.F.sub(a[2], b[2])
|
|
];
|
|
}
|
|
|
|
neg(a) {
|
|
return this.sub(this.zero, a);
|
|
}
|
|
|
|
mul(a, b) {
|
|
|
|
const aA = this.F.mul(a[0] , b[0]);
|
|
const bB = this.F.mul(a[1] , b[1]);
|
|
const cC = this.F.mul(a[2] , b[2]);
|
|
|
|
return [
|
|
this.F.add(
|
|
aA,
|
|
this._mulByNonResidue(
|
|
this.F.sub(
|
|
this.F.mul(
|
|
this.F.add(a[1], a[2]),
|
|
this.F.add(b[1], b[2])),
|
|
this.F.add(bB, cC)))), // aA + non_residue*((b+c)*(B+C)-bB-cC),
|
|
|
|
this.F.add(
|
|
this.F.sub(
|
|
this.F.mul(
|
|
this.F.add(a[0], a[1]),
|
|
this.F.add(b[0], b[1])),
|
|
this.F.add(aA, bB)),
|
|
this._mulByNonResidue( cC)), // (a+b)*(A+B)-aA-bB+non_residue*cC
|
|
|
|
this.F.add(
|
|
this.F.sub(
|
|
this.F.mul(
|
|
this.F.add(a[0], a[2]),
|
|
this.F.add(b[0], b[2])),
|
|
this.F.add(aA, cC)),
|
|
bB)]; // (a+c)*(A+C)-aA+bB-cC)
|
|
}
|
|
|
|
inv(a) {
|
|
const t0 = this.F.square(a[0]); // t0 = a^2 ;
|
|
const t1 = this.F.square(a[1]); // t1 = b^2 ;
|
|
const t2 = this.F.square(a[2]); // t2 = c^2;
|
|
const t3 = this.F.mul(a[0],a[1]); // t3 = ab
|
|
const t4 = this.F.mul(a[0],a[2]); // t4 = ac
|
|
const t5 = this.F.mul(a[1],a[2]); // t5 = bc;
|
|
// c0 = t0 - non_residue * t5;
|
|
const c0 = this.F.sub(t0, this._mulByNonResidue(t5));
|
|
// c1 = non_residue * t2 - t3;
|
|
const c1 = this.F.sub(this._mulByNonResidue(t2), t3);
|
|
const c2 = this.F.sub(t1, t4); // c2 = t1-t4
|
|
|
|
// t6 = (a * c0 + non_residue * (c * c1 + b * c2)).inv();
|
|
const t6 =
|
|
this.F.inv(
|
|
this.F.add(
|
|
this.F.mul(a[0], c0),
|
|
this._mulByNonResidue(
|
|
this.F.add(
|
|
this.F.mul(a[2], c1),
|
|
this.F.mul(a[1], c2)))));
|
|
|
|
return [
|
|
this.F.mul(t6, c0), // t6*c0
|
|
this.F.mul(t6, c1), // t6*c1
|
|
this.F.mul(t6, c2)]; // t6*c2
|
|
}
|
|
|
|
div(a, b) {
|
|
return this.mul(a, this.inv(b));
|
|
}
|
|
|
|
square(a) {
|
|
const s0 = this.F.square(a[0]); // s0 = a^2
|
|
const ab = this.F.mul(a[0], a[1]); // ab = a*b
|
|
const s1 = this.F.add(ab, ab); // s1 = 2ab;
|
|
const s2 = this.F.square(
|
|
this.F.add(this.F.sub(a[0],a[1]), a[2])); // s2 = (a - b + c)^2;
|
|
const bc = this.F.mul(a[1],a[2]); // bc = b*c
|
|
const s3 = this.F.add(bc, bc); // s3 = 2*bc
|
|
const s4 = this.F.square(a[2]); // s4 = c^2
|
|
|
|
|
|
return [
|
|
this.F.add(
|
|
s0,
|
|
this._mulByNonResidue(s3)), // s0 + non_residue * s3,
|
|
this.F.add(
|
|
s1,
|
|
this._mulByNonResidue(s4)), // s1 + non_residue * s4,
|
|
this.F.sub(
|
|
this.F.add( this.F.add(s1, s2) , s3 ),
|
|
this.F.add(s0, s4))]; // s1 + s2 + s3 - s0 - s4
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.F.isZero(a[0]) && this.F.isZero(a[1]) && this.F.isZero(a[2]);
|
|
}
|
|
|
|
eq(a, b) {
|
|
return this.F.eq(a[0], b[0]) && this.F.eq(a[1], b[1]) && this.F.eq(a[2], b[2]);
|
|
}
|
|
|
|
affine(a) {
|
|
return [this.F.affine(a[0]), this.F.affine(a[1]), this.F.affine(a[2])];
|
|
}
|
|
|
|
mulScalar(base, e) {
|
|
return mulScalar(this, base, e);
|
|
}
|
|
|
|
pow(base, e) {
|
|
return exp$7(this, base, e);
|
|
}
|
|
|
|
exp(base, e) {
|
|
return exp$7(this, base, e);
|
|
}
|
|
|
|
toString(a) {
|
|
return `[ ${this.F.toString(a[0])} , ${this.F.toString(a[1])}, ${this.F.toString(a[2])} ]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c0 = this.F.fromRng(rng);
|
|
const c1 = this.F.fromRng(rng);
|
|
const c2 = this.F.fromRng(rng);
|
|
return [c0, c1, c2];
|
|
}
|
|
|
|
gt(a, b) {
|
|
if (this.F.gt(a[0], b[0])) return true;
|
|
if (this.F.gt(b[0], a[0])) return false;
|
|
if (this.F.gt(a[1], b[1])) return true;
|
|
if (this.F.gt(b[1], a[1])) return false;
|
|
if (this.F.gt(a[2], b[2])) return true;
|
|
return false;
|
|
}
|
|
|
|
|
|
geq(a, b) {
|
|
return this.gt(a, b) || this.eq(a, b);
|
|
}
|
|
|
|
lt(a, b) {
|
|
return !this.geq(a,b);
|
|
}
|
|
|
|
leq(a, b) {
|
|
return !this.gt(a,b);
|
|
}
|
|
|
|
neq(a, b) {
|
|
return !this.eq(a,b);
|
|
}
|
|
|
|
random() {
|
|
return [this.F.random(), this.F.random(), this.F.random()];
|
|
}
|
|
|
|
|
|
toRprLE(buff, o, e) {
|
|
this.F.toRprLE(buff, o, e[0]);
|
|
this.F.toRprLE(buff, o+this.F.n8, e[1]);
|
|
this.F.toRprLE(buff, o+this.F.n8*2, e[2]);
|
|
}
|
|
|
|
toRprBE(buff, o, e) {
|
|
this.F.toRprBE(buff, o, e[2]);
|
|
this.F.toRprBE(buff, o+this.F.n8, e[1]);
|
|
this.F.toRprBE(buff, o+this.F.n8*2, e[0]);
|
|
}
|
|
|
|
toRprLEM(buff, o, e) {
|
|
this.F.toRprLEM(buff, o, e[0]);
|
|
this.F.toRprLEM(buff, o+this.F.n8, e[1]);
|
|
this.F.toRprLEM(buff, o+this.F.n8*2, e[2]);
|
|
}
|
|
|
|
|
|
toRprBEM(buff, o, e) {
|
|
this.F.toRprBEM(buff, o, e[2]);
|
|
this.F.toRprBEM(buff, o+this.F.n8, e[1]);
|
|
this.F.toRprBEM(buff, o+this.F.n8*2, e[0]);
|
|
}
|
|
|
|
fromRprLE(buff, o) {
|
|
o = o || 0;
|
|
const c0 = this.F.fromRprLE(buff, o);
|
|
const c1 = this.F.fromRprLE(buff, o+this.n8);
|
|
const c2 = this.F.fromRprLE(buff, o+this.n8*2);
|
|
return [c0, c1, c2];
|
|
}
|
|
|
|
fromRprBE(buff, o) {
|
|
o = o || 0;
|
|
const c2 = this.F.fromRprBE(buff, o);
|
|
const c1 = this.F.fromRprBE(buff, o+this.n8);
|
|
const c0 = this.F.fromRprBE(buff, o+this.n8*2);
|
|
return [c0, c1, c2];
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
o = o || 0;
|
|
const c0 = this.F.fromRprLEM(buff, o);
|
|
const c1 = this.F.fromRprLEM(buff, o+this.n8);
|
|
const c2 = this.F.fromRprLEM(buff, o+this.n8*2);
|
|
return [c0, c1, c2];
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
o = o || 0;
|
|
const c2 = this.F.fromRprBEM(buff, o);
|
|
const c1 = this.F.fromRprBEM(buff, o+this.n8);
|
|
const c0 = this.F.fromRprBEM(buff, o+this.n8*2);
|
|
return [c0, c1, c2];
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
function isGreatest(F, a) {
|
|
if (Array.isArray(a)) {
|
|
for (let i=a.length-1; i>=0; i--) {
|
|
if (!F.F.isZero(a[i])) {
|
|
return isGreatest(F.F, a[i]);
|
|
}
|
|
}
|
|
return 0;
|
|
} else {
|
|
const na = F.neg(a);
|
|
return gt$5(a, na);
|
|
}
|
|
}
|
|
|
|
|
|
class EC {
|
|
|
|
constructor(F, g) {
|
|
this.F = F;
|
|
this.g = g;
|
|
if (this.g.length == 2) this.g[2] = this.F.one;
|
|
this.zero = [this.F.zero, this.F.one, this.F.zero];
|
|
}
|
|
|
|
add(p1, p2) {
|
|
|
|
const F = this.F;
|
|
|
|
if (this.eq(p1, this.zero)) return p2;
|
|
if (this.eq(p2, this.zero)) return p1;
|
|
|
|
const res = new Array(3);
|
|
|
|
const Z1Z1 = F.square( p1[2] );
|
|
const Z2Z2 = F.square( p2[2] );
|
|
|
|
const U1 = F.mul( p1[0] , Z2Z2 ); // U1 = X1 * Z2Z2
|
|
const U2 = F.mul( p2[0] , Z1Z1 ); // U2 = X2 * Z1Z1
|
|
|
|
const Z1_cubed = F.mul( p1[2] , Z1Z1);
|
|
const Z2_cubed = F.mul( p2[2] , Z2Z2);
|
|
|
|
const S1 = F.mul( p1[1] , Z2_cubed); // S1 = Y1 * Z2 * Z2Z2
|
|
const S2 = F.mul( p2[1] , Z1_cubed); // S2 = Y2 * Z1 * Z1Z1
|
|
|
|
if (F.eq(U1,U2) && F.eq(S1,S2)) {
|
|
return this.double(p1);
|
|
}
|
|
|
|
const H = F.sub( U2 , U1 ); // H = U2-U1
|
|
|
|
const S2_minus_S1 = F.sub( S2 , S1 );
|
|
|
|
const I = F.square( F.add(H,H) ); // I = (2 * H)^2
|
|
const J = F.mul( H , I ); // J = H * I
|
|
|
|
const r = F.add( S2_minus_S1 , S2_minus_S1 ); // r = 2 * (S2-S1)
|
|
const V = F.mul( U1 , I ); // V = U1 * I
|
|
|
|
res[0] =
|
|
F.sub(
|
|
F.sub( F.square(r) , J ),
|
|
F.add( V , V )); // X3 = r^2 - J - 2 * V
|
|
|
|
const S1_J = F.mul( S1 , J );
|
|
|
|
res[1] =
|
|
F.sub(
|
|
F.mul( r , F.sub(V,res[0])),
|
|
F.add( S1_J,S1_J )); // Y3 = r * (V-X3)-2 S1 J
|
|
|
|
res[2] =
|
|
F.mul(
|
|
H,
|
|
F.sub(
|
|
F.square( F.add(p1[2],p2[2]) ),
|
|
F.add( Z1Z1 , Z2Z2 ))); // Z3 = ((Z1+Z2)^2-Z1Z1-Z2Z2) * H
|
|
|
|
return res;
|
|
}
|
|
|
|
neg(p) {
|
|
return [p[0], this.F.neg(p[1]), p[2]];
|
|
}
|
|
|
|
sub(a, b) {
|
|
return this.add(a, this.neg(b));
|
|
}
|
|
|
|
double(p) {
|
|
const F = this.F;
|
|
|
|
const res = new Array(3);
|
|
|
|
if (this.eq(p, this.zero)) return p;
|
|
|
|
const A = F.square( p[0] ); // A = X1^2
|
|
const B = F.square( p[1] ); // B = Y1^2
|
|
const C = F.square( B ); // C = B^2
|
|
|
|
let D =
|
|
F.sub(
|
|
F.square( F.add(p[0] , B )),
|
|
F.add( A , C));
|
|
D = F.add(D,D); // D = 2 * ((X1 + B)^2 - A - C)
|
|
|
|
const E = F.add( F.add(A,A), A); // E = 3 * A
|
|
const FF =F.square( E ); // F = E^2
|
|
|
|
res[0] = F.sub( FF , F.add(D,D) ); // X3 = F - 2 D
|
|
|
|
let eightC = F.add( C , C );
|
|
eightC = F.add( eightC , eightC );
|
|
eightC = F.add( eightC , eightC );
|
|
|
|
res[1] =
|
|
F.sub(
|
|
F.mul(
|
|
E,
|
|
F.sub( D, res[0] )),
|
|
eightC); // Y3 = E * (D - X3) - 8 * C
|
|
|
|
const Y1Z1 = F.mul( p[1] , p[2] );
|
|
res[2] = F.add( Y1Z1 , Y1Z1 ); // Z3 = 2 * Y1 * Z1
|
|
|
|
return res;
|
|
}
|
|
|
|
timesScalar(base, e) {
|
|
return mulScalar(this, base, e);
|
|
}
|
|
|
|
mulScalar(base, e) {
|
|
return mulScalar(this, base, e);
|
|
}
|
|
|
|
affine(p) {
|
|
const F = this.F;
|
|
if (this.isZero(p)) {
|
|
return this.zero;
|
|
} else if (F.eq(p[2], F.one)) {
|
|
return p;
|
|
} else {
|
|
const Z_inv = F.inv(p[2]);
|
|
const Z2_inv = F.square(Z_inv);
|
|
const Z3_inv = F.mul(Z2_inv, Z_inv);
|
|
|
|
const res = new Array(3);
|
|
res[0] = F.mul(p[0],Z2_inv);
|
|
res[1] = F.mul(p[1],Z3_inv);
|
|
res[2] = F.one;
|
|
|
|
return res;
|
|
}
|
|
}
|
|
|
|
multiAffine(arr) {
|
|
const keys = Object.keys(arr);
|
|
const F = this.F;
|
|
const accMul = new Array(keys.length+1);
|
|
accMul[0] = F.one;
|
|
for (let i = 0; i< keys.length; i++) {
|
|
if (F.eq(arr[keys[i]][2], F.zero)) {
|
|
accMul[i+1] = accMul[i];
|
|
} else {
|
|
accMul[i+1] = F.mul(accMul[i], arr[keys[i]][2]);
|
|
}
|
|
}
|
|
|
|
accMul[keys.length] = F.inv(accMul[keys.length]);
|
|
|
|
for (let i = keys.length-1; i>=0; i--) {
|
|
if (F.eq(arr[keys[i]][2], F.zero)) {
|
|
accMul[i] = accMul[i+1];
|
|
arr[keys[i]] = this.zero;
|
|
} else {
|
|
const Z_inv = F.mul(accMul[i], accMul[i+1]);
|
|
accMul[i] = F.mul(arr[keys[i]][2], accMul[i+1]);
|
|
|
|
const Z2_inv = F.square(Z_inv);
|
|
const Z3_inv = F.mul(Z2_inv, Z_inv);
|
|
|
|
arr[keys[i]][0] = F.mul(arr[keys[i]][0],Z2_inv);
|
|
arr[keys[i]][1] = F.mul(arr[keys[i]][1],Z3_inv);
|
|
arr[keys[i]][2] = F.one;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
eq(p1, p2) {
|
|
const F = this.F;
|
|
|
|
if (this.F.eq(p1[2], this.F.zero)) return this.F.eq(p2[2], this.F.zero);
|
|
if (this.F.eq(p2[2], this.F.zero)) return false;
|
|
|
|
const Z1Z1 = F.square( p1[2] );
|
|
const Z2Z2 = F.square( p2[2] );
|
|
|
|
const U1 = F.mul( p1[0] , Z2Z2 );
|
|
const U2 = F.mul( p2[0] , Z1Z1 );
|
|
|
|
const Z1_cubed = F.mul( p1[2] , Z1Z1);
|
|
const Z2_cubed = F.mul( p2[2] , Z2Z2);
|
|
|
|
const S1 = F.mul( p1[1] , Z2_cubed);
|
|
const S2 = F.mul( p2[1] , Z1_cubed);
|
|
|
|
return (F.eq(U1,U2) && F.eq(S1,S2));
|
|
}
|
|
|
|
isZero(p) {
|
|
return this.F.isZero(p[2]);
|
|
}
|
|
|
|
toString(p) {
|
|
const cp = this.affine(p);
|
|
return `[ ${this.F.toString(cp[0])} , ${this.F.toString(cp[1])} ]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const F = this.F;
|
|
let P = [];
|
|
let greatest;
|
|
do {
|
|
P[0] = F.fromRng(rng);
|
|
greatest = rng.nextBool();
|
|
const x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
|
|
P[1] = F.sqrt(x3b);
|
|
} while ((P[1] == null)||(F.isZero[P]));
|
|
|
|
const s = isGreatest(F, P[1]);
|
|
if (greatest ^ s) P[1] = F.neg(P[1]);
|
|
P[2] = F.one;
|
|
|
|
if (this.cofactor) {
|
|
P = this.mulScalar(P, this.cofactor);
|
|
}
|
|
|
|
P = this.affine(P);
|
|
|
|
return P;
|
|
|
|
}
|
|
|
|
toRprLE(buff, o, p) {
|
|
p = this.affine(p);
|
|
if (this.isZero(p)) {
|
|
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
|
|
BuffV.fill(0);
|
|
return;
|
|
}
|
|
this.F.toRprLE(buff, o, p[0]);
|
|
this.F.toRprLE(buff, o+this.F.n8, p[1]);
|
|
}
|
|
|
|
toRprBE(buff, o, p) {
|
|
p = this.affine(p);
|
|
if (this.isZero(p)) {
|
|
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
|
|
BuffV.fill(0);
|
|
return;
|
|
}
|
|
this.F.toRprBE(buff, o, p[0]);
|
|
this.F.toRprBE(buff, o+this.F.n8, p[1]);
|
|
}
|
|
|
|
toRprLEM(buff, o, p) {
|
|
p = this.affine(p);
|
|
if (this.isZero(p)) {
|
|
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
|
|
BuffV.fill(0);
|
|
return;
|
|
}
|
|
this.F.toRprLEM(buff, o, p[0]);
|
|
this.F.toRprLEM(buff, o+this.F.n8, p[1]);
|
|
}
|
|
|
|
toRprLEJM(buff, o, p) {
|
|
p = this.affine(p);
|
|
if (this.isZero(p)) {
|
|
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
|
|
BuffV.fill(0);
|
|
return;
|
|
}
|
|
this.F.toRprLEM(buff, o, p[0]);
|
|
this.F.toRprLEM(buff, o+this.F.n8, p[1]);
|
|
this.F.toRprLEM(buff, o+2*this.F.n8, p[2]);
|
|
}
|
|
|
|
|
|
toRprBEM(buff, o, p) {
|
|
p = this.affine(p);
|
|
if (this.isZero(p)) {
|
|
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
|
|
BuffV.fill(0);
|
|
return;
|
|
}
|
|
this.F.toRprBEM(buff, o, p[0]);
|
|
this.F.toRprBEM(buff, o+this.F.n8, p[1]);
|
|
}
|
|
|
|
fromRprLE(buff, o) {
|
|
o = o || 0;
|
|
const x = this.F.fromRprLE(buff, o);
|
|
const y = this.F.fromRprLE(buff, o+this.F.n8);
|
|
if (this.F.isZero(x) && this.F.isZero(y)) {
|
|
return this.zero;
|
|
}
|
|
return [x, y, this.F.one];
|
|
}
|
|
|
|
fromRprBE(buff, o) {
|
|
o = o || 0;
|
|
const x = this.F.fromRprBE(buff, o);
|
|
const y = this.F.fromRprBE(buff, o+this.F.n8);
|
|
if (this.F.isZero(x) && this.F.isZero(y)) {
|
|
return this.zero;
|
|
}
|
|
return [x, y, this.F.one];
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
o = o || 0;
|
|
const x = this.F.fromRprLEM(buff, o);
|
|
const y = this.F.fromRprLEM(buff, o+this.F.n8);
|
|
if (this.F.isZero(x) && this.F.isZero(y)) {
|
|
return this.zero;
|
|
}
|
|
return [x, y, this.F.one];
|
|
}
|
|
|
|
fromRprLEJM(buff, o) {
|
|
o = o || 0;
|
|
const x = this.F.fromRprLEM(buff, o);
|
|
const y = this.F.fromRprLEM(buff, o+this.F.n8);
|
|
const z = this.F.fromRprLEM(buff, o+this.F.n8*2);
|
|
if (this.F.isZero(x) && this.F.isZero(y)) {
|
|
return this.zero;
|
|
}
|
|
return [x, y, z];
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
o = o || 0;
|
|
const x = this.F.fromRprBEM(buff, o);
|
|
const y = this.F.fromRprBEM(buff, o+this.F.n8);
|
|
if (this.F.isZero(x) && this.F.isZero(y)) {
|
|
return this.zero;
|
|
}
|
|
return [x, y, this.F.one];
|
|
}
|
|
|
|
fromRprCompressed(buff, o) {
|
|
const F = this.F;
|
|
const v = new Uint8Array(buff.buffer, o, F.n8);
|
|
if (v[0] & 0x40) return this.zero;
|
|
const P = new Array(3);
|
|
|
|
const greatest = ((v[0] & 0x80) != 0);
|
|
v[0] = v[0] & 0x7F;
|
|
P[0] = F.fromRprBE(buff, o);
|
|
if (greatest) v[0] = v[0] | 0x80; // set back again the old value
|
|
|
|
const x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
|
|
P[1] = F.sqrt(x3b);
|
|
|
|
if (P[1] === null) {
|
|
throw new Error("Invalid Point!");
|
|
}
|
|
|
|
const s = isGreatest(F, P[1]);
|
|
if (greatest ^ s) P[1] = F.neg(P[1]);
|
|
P[2] = F.one;
|
|
|
|
return P;
|
|
}
|
|
|
|
toRprCompressed(buff, o, p) {
|
|
p = this.affine(p);
|
|
const v = new Uint8Array(buff.buffer, o, this.F.n8);
|
|
if (this.isZero(p)) {
|
|
v.fill(0);
|
|
v[0] = 0x40;
|
|
return;
|
|
}
|
|
this.F.toRprBE(buff, o, p[0]);
|
|
|
|
if (isGreatest(this.F, p[1])) {
|
|
v[0] = v[0] | 0x80;
|
|
}
|
|
}
|
|
|
|
|
|
fromRprUncompressed(buff, o) {
|
|
if (buff[0] & 0x40) return this.zero;
|
|
|
|
return this.fromRprBE(buff, o);
|
|
}
|
|
|
|
toRprUncompressed(buff, o, p) {
|
|
this.toRprBE(buff, o, p);
|
|
|
|
if (this.isZero(p)) {
|
|
buff[o] = buff[o] | 0x40;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/* global BigInt */
|
|
|
|
function stringifyBigInts$4(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts$4);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts$4(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts$3(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInt(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts$3);
|
|
} else if (typeof o == "object") {
|
|
if (o===null) return null;
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts$3(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int$3(buff) {
|
|
let res = 0n;
|
|
let i = buff.length;
|
|
let offset = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i>0) {
|
|
if (i >= 4) {
|
|
i -= 4;
|
|
res += BigInt(buffV.getUint32(i)) << BigInt(offset*8);
|
|
offset += 4;
|
|
} else if (i >= 2) {
|
|
i -= 2;
|
|
res += BigInt(buffV.getUint16(i)) << BigInt(offset*8);
|
|
offset += 2;
|
|
} else {
|
|
i -= 1;
|
|
res += BigInt(buffV.getUint8(i)) << BigInt(offset*8);
|
|
offset += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff$3(n, len) {
|
|
let r = n;
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = len;
|
|
while (o > 0) {
|
|
if (o-4 >= 0) {
|
|
o -= 4;
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn));
|
|
r = r >> 32n;
|
|
} else if (o-2 >= 0) {
|
|
o -= 2;
|
|
buffV.setUint16(o, Number(r & 0xFFFFn));
|
|
r = r >> 16n;
|
|
} else {
|
|
o -= 1;
|
|
buffV.setUint8(o, Number(r & 0xFFn));
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int$3(buff) {
|
|
let res = 0n;
|
|
let i = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i<buff.length) {
|
|
if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint32(i, true)) << BigInt( i*8);
|
|
i += 4;
|
|
} else if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint16(i, true)) << BigInt( i*8);
|
|
i += 2;
|
|
} else {
|
|
res += BigInt(buffV.getUint8(i, true)) << BigInt( i*8);
|
|
i += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff$3(n, len) {
|
|
let r = n;
|
|
if (typeof len === "undefined") {
|
|
len = Math.floor((bitLength$5(n) - 1) / 8) +1;
|
|
if (len==0) len = 1;
|
|
}
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = 0;
|
|
while (o < len) {
|
|
if (o+4 <= len) {
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn), true );
|
|
o += 4;
|
|
r = r >> 32n;
|
|
} else if (o+2 <= len) {
|
|
buff.setUint16(Number(o, r & 0xFFFFn), true );
|
|
o += 2;
|
|
r = r >> 16n;
|
|
} else {
|
|
buff.setUint8(Number(o, r & 0xFFn), true );
|
|
o += 1;
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_native$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts$4,
|
|
unstringifyBigInts: unstringifyBigInts$3,
|
|
beBuff2int: beBuff2int$3,
|
|
beInt2Buff: beInt2Buff$3,
|
|
leBuff2int: leBuff2int$3,
|
|
leInt2Buff: leInt2Buff$3
|
|
});
|
|
|
|
function stringifyBigInts$5(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts$5);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts$5(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts$4(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInteger(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts$4);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts$4(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int$4(buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[buff.length - i - 1]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff$4(n, len) {
|
|
let r = n;
|
|
let o =len-1;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o>=0)) {
|
|
let c = Number(r.and(BigInteger("255")));
|
|
buff[o] = c;
|
|
o--;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int$4 (buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[i]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff$4(n, len) {
|
|
let r = n;
|
|
let o =0;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o<buff.length)) {
|
|
let c = Number(r.and(BigInteger(255)));
|
|
buff[o] = c;
|
|
o++;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_bigint$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts$5,
|
|
unstringifyBigInts: unstringifyBigInts$4,
|
|
beBuff2int: beBuff2int$4,
|
|
beInt2Buff: beInt2Buff$4,
|
|
leBuff2int: leBuff2int$4,
|
|
leInt2Buff: leInt2Buff$4
|
|
});
|
|
|
|
let utils$3 = {};
|
|
|
|
const supportsNativeBigInt$5 = typeof BigInt === "function";
|
|
if (supportsNativeBigInt$5) {
|
|
Object.assign(utils$3, utils_native$1);
|
|
} else {
|
|
Object.assign(utils$3, utils_bigint$1);
|
|
}
|
|
|
|
|
|
const _revTable$4 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$4[i] = _revSlow$4(i, 8);
|
|
}
|
|
|
|
function _revSlow$4(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
utils$3.bitReverse = function bitReverse(idx, bits) {
|
|
return (
|
|
_revTable$4[idx >>> 24] |
|
|
(_revTable$4[(idx >>> 16) & 0xFF] << 8) |
|
|
(_revTable$4[(idx >>> 8) & 0xFF] << 16) |
|
|
(_revTable$4[idx & 0xFF] << 24)
|
|
) >>> (32-bits);
|
|
};
|
|
|
|
|
|
utils$3.log2 = function log2( V )
|
|
{
|
|
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
|
|
};
|
|
|
|
utils$3.buffReverseBits = function buffReverseBits(buff, eSize) {
|
|
const n = buff.byteLength /eSize;
|
|
const bits = utils$3.log2(n);
|
|
if (n != (1 << bits)) {
|
|
throw new Error("Invalid number of pointers");
|
|
}
|
|
for (let i=0; i<n; i++) {
|
|
const r = utils$3.bitReverse(i,bits);
|
|
if (i>r) {
|
|
const tmp = buff.slice(i*eSize, (i+1)*eSize);
|
|
buff.set( buff.slice(r*eSize, (r+1)*eSize), i*eSize);
|
|
buff.set(tmp, r*eSize);
|
|
}
|
|
}
|
|
};
|
|
|
|
let {
|
|
bitReverse: bitReverse$2,
|
|
log2: log2$3,
|
|
buffReverseBits: buffReverseBits$1,
|
|
stringifyBigInts: stringifyBigInts$6,
|
|
unstringifyBigInts: unstringifyBigInts$5,
|
|
beBuff2int: beBuff2int$5,
|
|
beInt2Buff: beInt2Buff$5,
|
|
leBuff2int: leBuff2int$5,
|
|
leInt2Buff: leInt2Buff$5,
|
|
} = utils$3;
|
|
|
|
var _utils$1 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
bitReverse: bitReverse$2,
|
|
log2: log2$3,
|
|
buffReverseBits: buffReverseBits$1,
|
|
stringifyBigInts: stringifyBigInts$6,
|
|
unstringifyBigInts: unstringifyBigInts$5,
|
|
beBuff2int: beBuff2int$5,
|
|
beInt2Buff: beInt2Buff$5,
|
|
leBuff2int: leBuff2int$5,
|
|
leInt2Buff: leInt2Buff$5
|
|
});
|
|
|
|
function buildBatchConvert$1(tm, fnName, sIn, sOut) {
|
|
return async function batchConvert(buffIn) {
|
|
const nPoints = Math.floor(buffIn.byteLength / sIn);
|
|
if ( nPoints * sIn !== buffIn.byteLength) {
|
|
throw new Error("Invalid buffer size");
|
|
}
|
|
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
|
|
const opPromises = [];
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const buffChunk = buffIn.slice(i*pointsPerChunk*sIn, i*pointsPerChunk*sIn + n*sIn);
|
|
const task = [
|
|
{cmd: "ALLOCSET", var: 0, buff:buffChunk},
|
|
{cmd: "ALLOC", var: 1, len:sOut * n},
|
|
{cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1}
|
|
]},
|
|
{cmd: "GET", out: 0, var: 1, len:sOut * n},
|
|
];
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sOut);
|
|
let p =0;
|
|
for (let i=0; i<result.length; i++) {
|
|
fullBuffOut.set(result[i][0], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
}
|
|
|
|
class WasmField1$1 {
|
|
|
|
constructor(tm, prefix, n8, p) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.p = p;
|
|
this.n8 = n8;
|
|
this.type = "F1";
|
|
this.m = 1;
|
|
|
|
this.half = shiftRight$5(p, one$1);
|
|
this.bitLength = bitLength$5(p);
|
|
this.mask = sub$5(shiftLeft$5(one$1, this.bitLength), one$1);
|
|
|
|
this.pOp1 = tm.alloc(n8);
|
|
this.pOp2 = tm.alloc(n8);
|
|
this.pOp3 = tm.alloc(n8);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = this.tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = this.tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
this.n64 = Math.floor(n8/8);
|
|
this.n32 = Math.floor(n8/4);
|
|
|
|
if(this.n64*8 != this.n8) {
|
|
throw new Error("n8 must be a multiple of 8");
|
|
}
|
|
|
|
this.half = shiftRight$5(this.p, one$1);
|
|
this.nqr = this.two;
|
|
let r = this.exp(this.nqr, this.half);
|
|
while (!this.eq(r, this.negone)) {
|
|
this.nqr = this.add(this.nqr, this.one);
|
|
r = this.exp(this.nqr, this.half);
|
|
}
|
|
|
|
|
|
this.s = 0;
|
|
let t = sub$5(this.p, one$1);
|
|
|
|
while ( !isOdd$5(t) ) {
|
|
this.s = this.s + 1;
|
|
t = shiftRight$5(t, one$1);
|
|
}
|
|
|
|
this.w = [];
|
|
this.w[this.s] = this.exp(this.nqr, t);
|
|
|
|
for (let i= this.s-1; i>=0; i--) {
|
|
this.w[i] = this.square(this.w[i+1]);
|
|
}
|
|
|
|
if (!this.eq(this.w[0], this.one)) {
|
|
throw new Error("Error calculating roots of unity");
|
|
}
|
|
|
|
this.batchToMontgomery = buildBatchConvert$1(tm, prefix + "_batchToMontgomery", this.n8, this.n8);
|
|
this.batchFromMontgomery = buildBatchConvert$1(tm, prefix + "_batchFromMontgomery", this.n8, this.n8);
|
|
}
|
|
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff$1(e$5(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
let ra = e$5(a, b);
|
|
if (isNegative$5(ra)) {
|
|
ra = neg$5(ra);
|
|
if (gt$5(ra, this.p)) {
|
|
ra = mod$5(ra, this.p);
|
|
}
|
|
ra = sub$5(this.p, ra);
|
|
} else {
|
|
if (gt$5(ra, this.p)) {
|
|
ra = mod$5(ra, this.p);
|
|
}
|
|
}
|
|
const buff = leInt2Buff$5(ra, this.n8);
|
|
return this.toMontgomery(buff);
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const an = this.fromMontgomery(a);
|
|
const s = fromRprLE$1(an, 0);
|
|
return toString$1(s, radix);
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
const buff = new Uint8Array(this.n8);
|
|
do {
|
|
v = zero$1;
|
|
for (let i=0; i<this.n64; i++) {
|
|
v = add$5(v, shiftLeft$5(rng.nextU64(), 64*i));
|
|
}
|
|
v = band$5(v, this.mask);
|
|
} while (geq$5(v, this.p));
|
|
toRprLE$1(buff, 0, v, this.n8);
|
|
return buff;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng$1());
|
|
}
|
|
|
|
toObject(a) {
|
|
const an = this.fromMontgomery(a);
|
|
return fromRprLE$1(an, 0);
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.n8);
|
|
toRprLE$1(buff, 0, a, this.n8);
|
|
return this.toMontgomery(buff);
|
|
}
|
|
|
|
toRprLE(buff, offset, a) {
|
|
buff.set(this.fromMontgomery(a), offset);
|
|
}
|
|
|
|
fromRprLE(buff, offset) {
|
|
const res = buff.slice(offset, offset + this.n8);
|
|
return this.toMontgomery(res);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
class WasmField2$1 {
|
|
|
|
constructor(tm, prefix, F) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.F = F;
|
|
this.type = "F2";
|
|
this.m = F.m * 2;
|
|
this.n8 = this.F.n8*2;
|
|
this.n32 = this.F.n32*2;
|
|
this.n64 = this.F.n64*2;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*2);
|
|
this.pOp2 = tm.alloc(F.n8*2);
|
|
this.pOp3 = tm.alloc(F.n8*2);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff$1(e$5(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
if ((Array.isArray(a)) && (a.length == 2)) {
|
|
const c1 = this.F.e(a[0], b);
|
|
const c2 = this.F.e(a[1], b);
|
|
const res = new Uint8Array(this.F.n8*2);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8*2);
|
|
return res;
|
|
} else {
|
|
throw new Error("invalid F2");
|
|
}
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const s2 = this.F.toString(a.slice(this.F.n8), radix);
|
|
return `[${s1}, ${s2}]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c1 = this.F.fromRng(rng);
|
|
const c2 = this.F.fromRng(rng);
|
|
const res = new Uint8Array(this.F.n8*2);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
return res;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng$1());
|
|
}
|
|
|
|
toObject(a) {
|
|
const c1 = this.F.toObject(a.slice(0, this.F.n8));
|
|
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
return [c1, c2];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
const b1 = this.F.fromObject(a[0]);
|
|
const b2 = this.F.fromObject(a[1]);
|
|
buff.set(b1);
|
|
buff.set(b2, this.F.n8);
|
|
return buff;
|
|
}
|
|
|
|
}
|
|
|
|
class WasmField3$1 {
|
|
|
|
constructor(tm, prefix, F) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
|
|
this.F = F;
|
|
this.type = "F3";
|
|
this.m = F.m * 3;
|
|
this.n8 = this.F.n8*3;
|
|
this.n32 = this.F.n32*3;
|
|
this.n64 = this.F.n64*3;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*3);
|
|
this.pOp2 = tm.alloc(F.n8*3);
|
|
this.pOp3 = tm.alloc(F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = tm.getBuff(this.pOp1, this.n8);
|
|
this.tm.instance.exports[prefix + "_one"](this.pOp1);
|
|
this.one = tm.getBuff(this.pOp1, this.n8);
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op2Bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
|
|
eq(a,b) {
|
|
return this.op2Bool("_eq", a, b);
|
|
}
|
|
|
|
isZero(a) {
|
|
return this.op1Bool("_isZero", a);
|
|
}
|
|
|
|
add(a,b) {
|
|
return this.op2("_add", a, b);
|
|
}
|
|
|
|
sub(a,b) {
|
|
return this.op2("_sub", a, b);
|
|
}
|
|
|
|
neg(a) {
|
|
return this.op1("_neg", a);
|
|
}
|
|
|
|
inv(a) {
|
|
return this.op1("_inverse", a);
|
|
}
|
|
|
|
isNegative(a) {
|
|
return this.op1Bool("_isNegative", a);
|
|
}
|
|
|
|
toMontgomery(a) {
|
|
return this.op1("_toMontgomery", a);
|
|
}
|
|
|
|
fromMontgomery(a) {
|
|
return this.op1("_fromMontgomery", a);
|
|
}
|
|
|
|
mul(a,b) {
|
|
return this.op2("_mul", a, b);
|
|
}
|
|
|
|
div(a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
|
|
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
square(a) {
|
|
return this.op1("_square", a);
|
|
}
|
|
|
|
isSquare(a) {
|
|
return this.op1Bool("_isSquare", a);
|
|
}
|
|
|
|
sqrt(a) {
|
|
return this.op1("_sqrt", a);
|
|
}
|
|
|
|
exp(a, b) {
|
|
if (!(b instanceof Uint8Array)) {
|
|
b = toLEBuff$1(e$5(b));
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
|
|
return this.getBuff(this.pOp3, this.n8);
|
|
}
|
|
|
|
e(a, b) {
|
|
if (a instanceof Uint8Array) return a;
|
|
if ((Array.isArray(a)) && (a.length == 3)) {
|
|
const c1 = this.F.e(a[0], b);
|
|
const c2 = this.F.e(a[1], b);
|
|
const c3 = this.F.e(a[2], b);
|
|
const res = new Uint8Array(this.F.n8*3);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
res.set(c3, this.F.n8*2);
|
|
return res;
|
|
} else {
|
|
throw new Error("invalid F3");
|
|
}
|
|
}
|
|
|
|
toString(a, radix) {
|
|
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const s2 = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
|
|
const s3 = this.F.toString(a.slice(this.F.n8*2), radix);
|
|
return `[${s1}, ${s2}, ${s3}]`;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
const c1 = this.F.fromRng(rng);
|
|
const c2 = this.F.fromRng(rng);
|
|
const c3 = this.F.fromRng(rng);
|
|
const res = new Uint8Array(this.F.n8*3);
|
|
res.set(c1);
|
|
res.set(c2, this.F.n8);
|
|
res.set(c3, this.F.n8*2);
|
|
return res;
|
|
}
|
|
|
|
random() {
|
|
return this.fromRng(getThreadRng$1());
|
|
}
|
|
|
|
toObject(a) {
|
|
const c1 = this.F.toObject(a.slice(0, this.F.n8));
|
|
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
const c3 = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
|
|
return [c1, c2, c3];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const buff = new Uint8Array(this.F.n8*3);
|
|
const b1 = this.F.fromObject(a[0]);
|
|
const b2 = this.F.fromObject(a[1]);
|
|
const b3 = this.F.fromObject(a[2]);
|
|
buff.set(b1);
|
|
buff.set(b2, this.F.n8);
|
|
buff.set(b3, this.F.n8*2);
|
|
return buff;
|
|
}
|
|
|
|
}
|
|
|
|
class WasmCurve$1 {
|
|
|
|
constructor(tm, prefix, F, pGen, pGb, cofactor) {
|
|
this.tm = tm;
|
|
this.prefix = prefix;
|
|
this.F = F;
|
|
|
|
this.pOp1 = tm.alloc(F.n8*3);
|
|
this.pOp2 = tm.alloc(F.n8*3);
|
|
this.pOp3 = tm.alloc(F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
|
|
this.zero = this.tm.getBuff(this.pOp1, F.n8*3);
|
|
this.tm.instance.exports[prefix + "_zeroAffine"](this.pOp1);
|
|
this.zeroAffine = this.tm.getBuff(this.pOp1, F.n8*2);
|
|
this.one = this.tm.getBuff(pGen, F.n8*3);
|
|
this.g = this.one;
|
|
this.oneAffine = this.tm.getBuff(pGen, F.n8*2);
|
|
this.gAffine = this.oneAffine;
|
|
this.b = this.tm.getBuff(pGb, F.n8);
|
|
|
|
if (cofactor) {
|
|
this.cofactor = toLEBuff$1(cofactor);
|
|
}
|
|
|
|
this.negone = this.neg(this.one);
|
|
this.two = this.add(this.one, this.one);
|
|
|
|
this.batchLEMtoC = buildBatchConvert$1(tm, prefix + "_batchLEMtoC", F.n8*2, F.n8);
|
|
this.batchLEMtoU = buildBatchConvert$1(tm, prefix + "_batchLEMtoU", F.n8*2, F.n8*2);
|
|
this.batchCtoLEM = buildBatchConvert$1(tm, prefix + "_batchCtoLEM", F.n8, F.n8*2);
|
|
this.batchUtoLEM = buildBatchConvert$1(tm, prefix + "_batchUtoLEM", F.n8*2, F.n8*2);
|
|
this.batchToJacobian = buildBatchConvert$1(tm, prefix + "_batchToJacobian", F.n8*2, F.n8*3);
|
|
this.batchToAffine = buildBatchConvert$1(tm, prefix + "_batchToAffine", F.n8*3, F.n8*2);
|
|
}
|
|
|
|
op2(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
op2bool(opName, a, b) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, b);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
|
|
}
|
|
|
|
op1(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
op1Affine(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*2);
|
|
}
|
|
|
|
op1Bool(opName, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
|
|
}
|
|
|
|
add(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_add", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_addMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_addMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_addAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
sub(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_sub", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_subMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2("_subMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2("_subAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
neg(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1("_neg", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1Affine("_negAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
double(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1("_double", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1("_doubleAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
isZero(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1Bool("_isZero", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1Bool("_isZeroAffine", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
timesScalar(a, s) {
|
|
if (!(s instanceof Uint8Array)) {
|
|
s = toLEBuff$1(e$5(s));
|
|
}
|
|
let fnName;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
fnName = this.prefix + "_timesScalar";
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
fnName = this.prefix + "_timesScalarAffine";
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, s);
|
|
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, s.byteLength, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
timesFr(a, s) {
|
|
let fnName;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
fnName = this.prefix + "_timesFr";
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
fnName = this.prefix + "_timesFrAffine";
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.setBuff(this.pOp2, s);
|
|
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, this.pOp3);
|
|
return this.tm.getBuff(this.pOp3, this.F.n8*3);
|
|
}
|
|
|
|
eq(a,b) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2bool("_eq", a, b);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2bool("_eqMixed", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
if (b.byteLength == this.F.n8*3) {
|
|
return this.op2bool("_eqMixed", b, a);
|
|
} else if (b.byteLength == this.F.n8*2) {
|
|
return this.op2bool("_eqAffine", a, b);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toAffine(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return this.op1Affine("_toAffine", a);
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return a;
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toJacobian(a) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
return a;
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
return this.op1("_toJacobian", a);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
toRprUncompressed(arr, offset, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
if (a.byteLength == this.F.n8*3) {
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
} else if (a.byteLength != this.F.n8*2) {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.instance.exports[this.prefix + "_LEMtoU"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
arr.set(res, offset);
|
|
}
|
|
|
|
fromRprUncompressed(arr, offset) {
|
|
const buff = arr.slice(offset, offset + this.F.n8*2);
|
|
this.tm.setBuff(this.pOp1, buff);
|
|
this.tm.instance.exports[this.prefix + "_UtoLEM"](this.pOp1, this.pOp1);
|
|
return this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
}
|
|
|
|
toRprCompressed(arr, offset, a) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
if (a.byteLength == this.F.n8*3) {
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
} else if (a.byteLength != this.F.n8*2) {
|
|
throw new Error("invalid point size");
|
|
}
|
|
this.tm.instance.exports[this.prefix + "_LEMtoC"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8);
|
|
arr.set(res, offset);
|
|
}
|
|
|
|
fromRprCompressed(arr, offset) {
|
|
const buff = arr.slice(offset, offset + this.F.n8);
|
|
this.tm.setBuff(this.pOp1, buff);
|
|
this.tm.instance.exports[this.prefix + "_CtoLEM"](this.pOp1, this.pOp2);
|
|
return this.tm.getBuff(this.pOp2, this.F.n8*2);
|
|
}
|
|
|
|
toUncompressed(a) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
this.toRprUncompressed(buff, 0, a);
|
|
return buff;
|
|
}
|
|
|
|
toRprLEM(arr, offset, a) {
|
|
if (a.byteLength == this.F.n8*2) {
|
|
arr.set(a, offset);
|
|
return;
|
|
} else if (a.byteLength == this.F.n8*3) {
|
|
this.tm.setBuff(this.pOp1, a);
|
|
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
|
|
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
|
|
arr.set(res, offset);
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
fromRprLEM(arr, offset) {
|
|
offset = offset || 0;
|
|
return arr.slice(offset, offset+this.F.n8*2);
|
|
}
|
|
|
|
toString(a, radix) {
|
|
if (a.byteLength == this.F.n8*3) {
|
|
const x = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const y = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
|
|
const z = this.F.toString(a.slice(this.F.n8*2), radix);
|
|
return `[ ${x}, ${y}, ${z} ]`;
|
|
} else if (a.byteLength == this.F.n8*2) {
|
|
const x = this.F.toString(a.slice(0, this.F.n8), radix);
|
|
const y = this.F.toString(a.slice(this.F.n8), radix);
|
|
return `[ ${x}, ${y} ]`;
|
|
} else {
|
|
throw new Error("invalid point size");
|
|
}
|
|
}
|
|
|
|
|
|
fromRng(rng) {
|
|
const F = this.F;
|
|
let P = [];
|
|
let greatest;
|
|
let x3b;
|
|
do {
|
|
P[0] = F.fromRng(rng);
|
|
greatest = rng.nextBool();
|
|
x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
|
|
} while (!F.isSquare(x3b));
|
|
|
|
P[1] = F.sqrt(x3b);
|
|
|
|
const s = F.isNegative(P[1]);
|
|
if (greatest ^ s) P[1] = F.neg(P[1]);
|
|
|
|
let Pbuff = new Uint8Array(this.F.n8*2);
|
|
Pbuff.set(P[0]);
|
|
Pbuff.set(P[1], this.F.n8);
|
|
|
|
if (this.cofactor) {
|
|
Pbuff = this.timesScalar(Pbuff, this.cofactor);
|
|
}
|
|
|
|
return Pbuff;
|
|
}
|
|
|
|
|
|
|
|
toObject(a) {
|
|
if (this.isZero(a)) {
|
|
return [
|
|
this.F.toObject(this.F.zero),
|
|
this.F.toObject(this.F.one),
|
|
this.F.toObject(this.F.zero),
|
|
];
|
|
}
|
|
const x = this.F.toObject(a.slice(0, this.F.n8));
|
|
const y = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
|
|
let z;
|
|
if (a.byteLength == this.F.n8*3) {
|
|
z = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
|
|
} else {
|
|
z = this.F.toObject(this.F.one);
|
|
}
|
|
return [x, y, z];
|
|
}
|
|
|
|
fromObject(a) {
|
|
const x = this.F.fromObject(a[0]);
|
|
const y = this.F.fromObject(a[1]);
|
|
let z;
|
|
if (a.length==3) {
|
|
z = this.F.fromObject(a[2]);
|
|
} else {
|
|
z = this.F.one;
|
|
}
|
|
if (this.F.isZero(z, this.F.one)) {
|
|
return this.zeroAffine;
|
|
} else if (this.F.eq(z, this.F.one)) {
|
|
const buff = new Uint8Array(this.F.n8*2);
|
|
buff.set(x);
|
|
buff.set(y, this.F.n8);
|
|
return buff;
|
|
} else {
|
|
const buff = new Uint8Array(this.F.n8*3);
|
|
buff.set(x);
|
|
buff.set(y, this.F.n8);
|
|
buff.set(z, this.F.n8*2);
|
|
return buff;
|
|
}
|
|
}
|
|
|
|
e(a) {
|
|
if (a instanceof Uint8Array) return a;
|
|
return this.fromObject(a);
|
|
}
|
|
|
|
}
|
|
|
|
/* global WebAssembly */
|
|
|
|
function thread$1(self) {
|
|
let instance;
|
|
let memory;
|
|
let u32;
|
|
let u8;
|
|
|
|
if (self) {
|
|
self.onmessage = function(e) {
|
|
let data;
|
|
if (e.data) {
|
|
data = e.data;
|
|
} else {
|
|
data = e;
|
|
}
|
|
|
|
if (data[0].cmd == "INIT") {
|
|
init(data[0]).then(function() {
|
|
self.postMessage(data.result);
|
|
});
|
|
} else if (data[0].cmd == "TERMINATE") {
|
|
process.exit();
|
|
} else {
|
|
const res = runTask(data);
|
|
self.postMessage(res);
|
|
}
|
|
};
|
|
}
|
|
|
|
async function init(data) {
|
|
const code = new Uint8Array(data.code);
|
|
const wasmModule = await WebAssembly.compile(code);
|
|
memory = new WebAssembly.Memory({initial:data.init});
|
|
u32 = new Uint32Array(memory.buffer);
|
|
u8 = new Uint8Array(memory.buffer);
|
|
|
|
instance = await WebAssembly.instantiate(wasmModule, {
|
|
env: {
|
|
"memory": memory
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
function alloc(length) {
|
|
while (u32[0] & 3) u32[0]++; // Return always aligned pointers
|
|
const res = u32[0];
|
|
u32[0] += length;
|
|
while (u32[0] > memory.buffer.byteLength) {
|
|
memory.grow(100);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function allocBuffer(buffer) {
|
|
const p = alloc(buffer.byteLength);
|
|
setBuffer(p, buffer);
|
|
return p;
|
|
}
|
|
|
|
function getBuffer(pointer, length) {
|
|
return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);
|
|
}
|
|
|
|
function setBuffer(pointer, buffer) {
|
|
u8.set(new Uint8Array(buffer), pointer);
|
|
}
|
|
|
|
function runTask(task) {
|
|
if (task[0].cmd == "INIT") {
|
|
return init(task[0]);
|
|
}
|
|
const ctx = {
|
|
vars: [],
|
|
out: []
|
|
};
|
|
const oldAlloc = u32[0];
|
|
for (let i=0; i<task.length; i++) {
|
|
switch (task[i].cmd) {
|
|
case "ALLOCSET":
|
|
ctx.vars[task[i].var] = allocBuffer(task[i].buff);
|
|
break;
|
|
case "ALLOC":
|
|
ctx.vars[task[i].var] = alloc(task[i].len);
|
|
break;
|
|
case "SET":
|
|
setBuffer(ctx.vars[task[i].var], task[i].buff);
|
|
break;
|
|
case "CALL": {
|
|
const params = [];
|
|
for (let j=0; j<task[i].params.length; j++) {
|
|
const p = task[i].params[j];
|
|
if (typeof p.var !== "undefined") {
|
|
params.push(ctx.vars[p.var] + (p.offset || 0));
|
|
} else if (typeof p.val != "undefined") {
|
|
params.push(p.val);
|
|
}
|
|
}
|
|
instance.exports[task[i].fnName](...params);
|
|
break;
|
|
}
|
|
case "GET":
|
|
ctx.out[task[i].out] = getBuffer(ctx.vars[task[i].var], task[i].len).slice();
|
|
break;
|
|
default:
|
|
throw new Error("Invalid cmd");
|
|
}
|
|
}
|
|
u32[0] = oldAlloc;
|
|
return ctx.out;
|
|
}
|
|
|
|
|
|
return runTask;
|
|
}
|
|
|
|
/* global window, navigator, Blob, Worker, WebAssembly */
|
|
/*
|
|
Copyright 2019 0KIMS association.
|
|
|
|
This file is part of wasmsnark (Web Assembly zkSnark Prover).
|
|
|
|
wasmsnark is a free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
wasmsnark is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with wasmsnark. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
const MEM_SIZE$1 = 4096; // Memory size in 64K Pakes (256Mb)
|
|
const inBrowser$1 = (typeof window !== "undefined");
|
|
let NodeWorker$1;
|
|
if (!inBrowser$1) {
|
|
NodeWorker$1 = crypto.Worker;
|
|
}
|
|
|
|
class Deferred$1 {
|
|
constructor() {
|
|
this.promise = new Promise((resolve, reject)=> {
|
|
this.reject = reject;
|
|
this.resolve = resolve;
|
|
});
|
|
}
|
|
}
|
|
|
|
function sleep$1(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
function base64ToArrayBuffer$1(base64) {
|
|
{
|
|
var binary_string = window.atob(base64);
|
|
var len = binary_string.length;
|
|
var bytes = new Uint8Array(len);
|
|
for (var i = 0; i < len; i++) {
|
|
bytes[i] = binary_string.charCodeAt(i);
|
|
}
|
|
return bytes;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
async function buildThreadManager$1(wasm, singleThread) {
|
|
const tm = new ThreadManager$1();
|
|
|
|
tm.memory = new WebAssembly.Memory({initial:MEM_SIZE$1});
|
|
tm.u8 = new Uint8Array(tm.memory.buffer);
|
|
tm.u32 = new Uint32Array(tm.memory.buffer);
|
|
|
|
const wasmModule = await WebAssembly.compile(base64ToArrayBuffer$1(wasm.code));
|
|
|
|
tm.instance = await WebAssembly.instantiate(wasmModule, {
|
|
env: {
|
|
"memory": tm.memory
|
|
}
|
|
});
|
|
|
|
tm.singleThread = singleThread;
|
|
tm.initalPFree = tm.u32[0]; // Save the Pointer to free space.
|
|
tm.pq = wasm.pq;
|
|
tm.pr = wasm.pr;
|
|
tm.pG1gen = wasm.pG1gen;
|
|
tm.pG1zero = wasm.pG1zero;
|
|
tm.pG2gen = wasm.pG2gen;
|
|
tm.pG2zero = wasm.pG2zero;
|
|
tm.pOneT = wasm.pOneT;
|
|
|
|
// tm.pTmp0 = tm.alloc(curve.G2.F.n8*3);
|
|
// tm.pTmp1 = tm.alloc(curve.G2.F.n8*3);
|
|
|
|
|
|
if (singleThread) {
|
|
tm.code = base64ToArrayBuffer$1(wasm.code);
|
|
tm.taskManager = thread$1();
|
|
await tm.taskManager([{
|
|
cmd: "INIT",
|
|
init: MEM_SIZE$1,
|
|
code: tm.code.slice()
|
|
}]);
|
|
tm.concurrency = 1;
|
|
} else {
|
|
tm.workers = [];
|
|
tm.pendingDeferreds = [];
|
|
tm.working = [];
|
|
|
|
let concurrency;
|
|
|
|
if ((typeof(navigator) === "object") && navigator.hardwareConcurrency) {
|
|
concurrency = navigator.hardwareConcurrency;
|
|
} else {
|
|
concurrency = crypto.cpus().length;
|
|
}
|
|
tm.concurrency = concurrency;
|
|
|
|
for (let i = 0; i<concurrency; i++) {
|
|
|
|
if (inBrowser$1) {
|
|
const blob = new Blob(["(", thread$1.toString(), ")(self);"], { type: "text/javascript" });
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
tm.workers[i] = new Worker(url);
|
|
|
|
tm.workers[i].onmessage = getOnMsg(i);
|
|
|
|
} else {
|
|
tm.workers[i] = new NodeWorker$1("(" + thread$1.toString()+ ")(require('worker_threads').parentPort);", {eval: true});
|
|
|
|
tm.workers[i].on("message", getOnMsg(i));
|
|
}
|
|
|
|
tm.working[i]=false;
|
|
}
|
|
|
|
const initPromises = [];
|
|
for (let i=0; i<tm.workers.length;i++) {
|
|
const copyCode = base64ToArrayBuffer$1(wasm.code).slice();
|
|
initPromises.push(tm.postAction(i, [{
|
|
cmd: "INIT",
|
|
init: MEM_SIZE$1,
|
|
code: copyCode
|
|
}], [copyCode.buffer]));
|
|
}
|
|
|
|
await Promise.all(initPromises);
|
|
|
|
}
|
|
return tm;
|
|
|
|
function getOnMsg(i) {
|
|
return function(e) {
|
|
let data;
|
|
if ((e)&&(e.data)) {
|
|
data = e.data;
|
|
} else {
|
|
data = e;
|
|
}
|
|
|
|
tm.working[i]=false;
|
|
tm.pendingDeferreds[i].resolve(data);
|
|
tm.processWorks();
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
class ThreadManager$1 {
|
|
constructor() {
|
|
this.actionQueue = [];
|
|
this.oldPFree = 0;
|
|
}
|
|
|
|
startSyncOp() {
|
|
if (this.oldPFree != 0) throw new Error("Sync operation in progress");
|
|
this.oldPFree = this.u32[0];
|
|
}
|
|
|
|
endSyncOp() {
|
|
if (this.oldPFree == 0) throw new Error("No sync operation in progress");
|
|
this.u32[0] = this.oldPFree;
|
|
this.oldPFree = 0;
|
|
}
|
|
|
|
postAction(workerId, e, transfers, _deferred) {
|
|
if (this.working[workerId]) {
|
|
throw new Error("Posting a job t a working worker");
|
|
}
|
|
this.working[workerId] = true;
|
|
|
|
this.pendingDeferreds[workerId] = _deferred ? _deferred : new Deferred$1();
|
|
this.workers[workerId].postMessage(e, transfers);
|
|
|
|
return this.pendingDeferreds[workerId].promise;
|
|
}
|
|
|
|
processWorks() {
|
|
for (let i=0; (i<this.workers.length)&&(this.actionQueue.length > 0); i++) {
|
|
if (this.working[i] == false) {
|
|
const work = this.actionQueue.shift();
|
|
this.postAction(i, work.data, work.transfers, work.deferred);
|
|
}
|
|
}
|
|
}
|
|
|
|
queueAction(actionData, transfers) {
|
|
const d = new Deferred$1();
|
|
|
|
if (this.singleThread) {
|
|
const res = this.taskManager(actionData);
|
|
d.resolve(res);
|
|
} else {
|
|
this.actionQueue.push({
|
|
data: actionData,
|
|
transfers: transfers,
|
|
deferred: d
|
|
});
|
|
this.processWorks();
|
|
}
|
|
return d.promise;
|
|
}
|
|
|
|
resetMemory() {
|
|
this.u32[0] = this.initalPFree;
|
|
}
|
|
|
|
allocBuff(buff) {
|
|
const pointer = this.alloc(buff.byteLength);
|
|
this.setBuff(pointer, buff);
|
|
return pointer;
|
|
}
|
|
|
|
getBuff(pointer, length) {
|
|
return this.u8.slice(pointer, pointer+ length);
|
|
}
|
|
|
|
setBuff(pointer, buffer) {
|
|
this.u8.set(new Uint8Array(buffer), pointer);
|
|
}
|
|
|
|
alloc(length) {
|
|
while (this.u32[0] & 3) this.u32[0]++; // Return always aligned pointers
|
|
const res = this.u32[0];
|
|
this.u32[0] += length;
|
|
return res;
|
|
}
|
|
|
|
async terminate() {
|
|
for (let i=0; i<this.workers.length; i++) {
|
|
this.workers[i].postMessage([{cmd: "TERMINATE"}]);
|
|
}
|
|
await sleep$1(200);
|
|
}
|
|
|
|
}
|
|
|
|
function buildBatchApplyKey$1(curve, groupName) {
|
|
const G = curve[groupName];
|
|
const Fr = curve.Fr;
|
|
const tm = curve.tm;
|
|
|
|
curve[groupName].batchApplyKey = async function(buff, first, inc, inType, outType) {
|
|
inType = inType || "affine";
|
|
outType = outType || "affine";
|
|
let fnName, fnAffine;
|
|
let sGin, sGmid, sGout;
|
|
if (groupName == "G1") {
|
|
if (inType == "jacobian") {
|
|
sGin = G.F.n8*3;
|
|
fnName = "g1m_batchApplyKey";
|
|
} else {
|
|
sGin = G.F.n8*2;
|
|
fnName = "g1m_batchApplyKeyMixed";
|
|
}
|
|
sGmid = G.F.n8*3;
|
|
if (outType == "jacobian") {
|
|
sGout = G.F.n8*3;
|
|
} else {
|
|
fnAffine = "g1m_batchToAffine";
|
|
sGout = G.F.n8*2;
|
|
}
|
|
} else if (groupName == "G2") {
|
|
if (inType == "jacobian") {
|
|
sGin = G.F.n8*3;
|
|
fnName = "g2m_batchApplyKey";
|
|
} else {
|
|
sGin = G.F.n8*2;
|
|
fnName = "g2m_batchApplyKeyMixed";
|
|
}
|
|
sGmid = G.F.n8*3;
|
|
if (outType == "jacobian") {
|
|
sGout = G.F.n8*3;
|
|
} else {
|
|
fnAffine = "g2m_batchToAffine";
|
|
sGout = G.F.n8*2;
|
|
}
|
|
} else if (groupName == "Fr") {
|
|
fnName = "frm_batchApplyKey";
|
|
sGin = G.n8;
|
|
sGmid = G.n8;
|
|
sGout = G.n8;
|
|
} else {
|
|
throw new Error("Invalid group: " + groupName);
|
|
}
|
|
const nPoints = Math.floor(buff.byteLength / sGin);
|
|
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
|
|
const opPromises = [];
|
|
inc = Fr.e(inc);
|
|
let t = Fr.e(first);
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const task = [];
|
|
|
|
task.push({
|
|
cmd: "ALLOCSET",
|
|
var: 0,
|
|
buff: buff.slice(i*pointsPerChunk*sGin, i*pointsPerChunk*sGin + n*sGin)
|
|
});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: t});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: inc});
|
|
task.push({cmd: "ALLOC", var: 3, len: n*Math.max(sGmid, sGout)});
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: fnName,
|
|
params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1},
|
|
{var: 2},
|
|
{var:3}
|
|
]
|
|
});
|
|
if (fnAffine) {
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: fnAffine,
|
|
params: [
|
|
{var: 3},
|
|
{val: n},
|
|
{var: 3},
|
|
]
|
|
});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 3, len: n*sGout});
|
|
|
|
opPromises.push(tm.queueAction(task));
|
|
t = Fr.mul(t, Fr.exp(inc, n));
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const outBuff = new Uint8Array(nPoints*sGout);
|
|
let p=0;
|
|
for (let i=0; i<result.length; i++) {
|
|
outBuff.set(result[i][0], p);
|
|
p += result[i][0].byteLength;
|
|
}
|
|
|
|
return outBuff;
|
|
};
|
|
}
|
|
|
|
function buildPairing$1(curve) {
|
|
const tm = curve.tm;
|
|
curve.pairing = function pairing(a, b) {
|
|
|
|
tm.startSyncOp();
|
|
const pA = tm.allocBuff(curve.G1.toJacobian(a));
|
|
const pB = tm.allocBuff(curve.G2.toJacobian(b));
|
|
const pRes = tm.alloc(curve.Gt.n8);
|
|
tm.instance.exports[curve.name + "_pairing"](pA, pB, pRes);
|
|
|
|
const res = tm.getBuff(pRes, curve.Gt.n8);
|
|
|
|
tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.pairingEq = async function pairingEq() {
|
|
let buffCt;
|
|
let nEqs;
|
|
if ((arguments.length % 2) == 1) {
|
|
buffCt = arguments[arguments.length-1];
|
|
nEqs = (arguments.length -1) /2;
|
|
} else {
|
|
buffCt = curve.Gt.one;
|
|
nEqs = arguments.length /2;
|
|
}
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nEqs; i++) {
|
|
|
|
const task = [];
|
|
|
|
const g1Buff = curve.G1.toJacobian(arguments[i*2]);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: g1Buff});
|
|
task.push({cmd: "ALLOC", var: 1, len: curve.prePSize});
|
|
|
|
const g2Buff = curve.G2.toJacobian(arguments[i*2 +1]);
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: g2Buff});
|
|
task.push({cmd: "ALLOC", var: 3, len: curve.preQSize});
|
|
|
|
task.push({cmd: "ALLOC", var: 4, len: curve.Gt.n8});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_prepareG1", params: [
|
|
{var: 0},
|
|
{var: 1}
|
|
]});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_prepareG2", params: [
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
|
|
task.push({cmd: "CALL", fnName: curve.name + "_millerLoop", params: [
|
|
{var: 1},
|
|
{var: 3},
|
|
{var: 4}
|
|
]});
|
|
|
|
task.push({cmd: "GET", out: 0, var: 4, len: curve.Gt.n8});
|
|
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
tm.startSyncOp();
|
|
const pRes = tm.alloc(curve.Gt.n8);
|
|
tm.instance.exports.ftm_one(pRes);
|
|
|
|
for (let i=0; i<result.length; i++) {
|
|
const pMR = tm.allocBuff(result[i][0]);
|
|
tm.instance.exports.ftm_mul(pRes, pMR, pRes);
|
|
}
|
|
tm.instance.exports[curve.name + "_finalExponentiation"](pRes, pRes);
|
|
|
|
const pCt = tm.allocBuff(buffCt);
|
|
|
|
const r = !!tm.instance.exports.ftm_eq(pRes, pCt);
|
|
|
|
tm.endSyncOp();
|
|
|
|
return r;
|
|
};
|
|
|
|
curve.prepareG1 = function(p) {
|
|
this.tm.startSyncOp();
|
|
const pP = this.tm.allocBuff(p);
|
|
const pPrepP = this.tm.alloc(this.prePSize);
|
|
this.tm.instance.exports[this.name + "_prepareG1"](pP, pPrepP);
|
|
const res = this.tm.getBuff(pPrepP, this.prePSize);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.prepareG2 = function(q) {
|
|
this.tm.startSyncOp();
|
|
const pQ = this.tm.allocBuff(q);
|
|
const pPrepQ = this.tm.alloc(this.preQSize);
|
|
this.tm.instance.exports[this.name + "_prepareG2"](pQ, pPrepQ);
|
|
const res = this.tm.getBuff(pPrepQ, this.preQSize);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.millerLoop = function(preP, preQ) {
|
|
this.tm.startSyncOp();
|
|
const pPreP = this.tm.allocBuff(preP);
|
|
const pPreQ = this.tm.allocBuff(preQ);
|
|
const pRes = this.tm.alloc(this.Gt.n8);
|
|
this.tm.instance.exports[this.name + "_millerLoop"](pPreP, pPreQ, pRes);
|
|
const res = this.tm.getBuff(pRes, this.Gt.n8);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
curve.finalExponentiation = function(a) {
|
|
this.tm.startSyncOp();
|
|
const pA = this.tm.allocBuff(a);
|
|
const pRes = this.tm.alloc(this.Gt.n8);
|
|
this.tm.instance.exports[this.name + "_finalExponentiation"](pA, pRes);
|
|
const res = this.tm.getBuff(pRes, this.Gt.n8);
|
|
this.tm.endSyncOp();
|
|
return res;
|
|
};
|
|
|
|
}
|
|
|
|
const pTSizes$1 = [
|
|
1 , 1, 1, 1, 2, 3, 4, 5,
|
|
6 , 7, 7, 8, 9, 10, 11, 12,
|
|
13, 13, 14, 15, 16, 16, 17, 17,
|
|
17, 17, 17, 17, 17, 17, 17, 17
|
|
];
|
|
|
|
function buildMultiexp$1(curve, groupName) {
|
|
const G = curve[groupName];
|
|
async function _multiExp(buffBases, buffScalars, inType) {
|
|
inType = inType || "affine";
|
|
|
|
let sGIn;
|
|
let fnName;
|
|
if (groupName == "G1") {
|
|
if (inType == "affine") {
|
|
fnName = "g1m_multiexpAffine_chunk";
|
|
sGIn = G.F.n8*2;
|
|
} else {
|
|
fnName = "g1m_multiexp_chunk";
|
|
sGIn = G.F.n8*3;
|
|
}
|
|
} else if (groupName == "G2") {
|
|
if (inType == "affine") {
|
|
fnName = "g2m_multiexpAffine_chunk";
|
|
sGIn = G.F.n8*2;
|
|
} else {
|
|
fnName = "g2m_multiexp_chunk";
|
|
sGIn = G.F.n8*3;
|
|
}
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
const nPoints = Math.floor(buffBases.byteLength / sGIn);
|
|
const sScalar = Math.floor(buffScalars.byteLength / nPoints);
|
|
if( sScalar * nPoints != buffScalars.byteLength) {
|
|
throw new Error("Scalar size does not match");
|
|
}
|
|
|
|
const bitChunkSize = pTSizes$1[log2$3(nPoints)];
|
|
const nChunks = Math.floor((sScalar*8 - 1) / bitChunkSize) +1;
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [
|
|
{cmd: "ALLOCSET", var: 0, buff: buffBases},
|
|
{cmd: "ALLOCSET", var: 1, buff: buffScalars},
|
|
{cmd: "ALLOC", var: 2, len: G.F.n8*3},
|
|
{cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: sScalar},
|
|
{val: nPoints},
|
|
{val: i*bitChunkSize},
|
|
{val: Math.min(sScalar*8 - i*bitChunkSize, bitChunkSize)},
|
|
{var: 2}
|
|
]},
|
|
{cmd: "GET", out: 0, var: 2, len: G.F.n8*3}
|
|
];
|
|
opPromises.push(
|
|
G.tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
let res = G.zero;
|
|
for (let i=result.length-1; i>=0; i--) {
|
|
if (!G.isZero(res)) {
|
|
for (let j=0; j<bitChunkSize; j++) res = G.double(res);
|
|
}
|
|
res = G.add(res, result[i][0]);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
G.multiExp = async function multiExpAffine(buffBases, buffScalars) {
|
|
return await _multiExp(buffBases, buffScalars, "jacobian");
|
|
};
|
|
G.multiExpAffine = async function multiExpAffine(buffBases, buffScalars) {
|
|
return await _multiExp(buffBases, buffScalars, "affine");
|
|
};
|
|
}
|
|
|
|
function buildFFT$1(curve, groupName) {
|
|
const G = curve[groupName];
|
|
const Fr = curve.Fr;
|
|
const tm = G.tm;
|
|
async function _fft(buff, inverse, inType, outType, logger) {
|
|
|
|
inType = inType || "affine";
|
|
outType = outType || "affine";
|
|
const MAX_BITS_THREAD = 12;
|
|
|
|
let sIn, sMid, sOut, fnIn2Mid, fnMid2Out, fnName, fnFFTMix, fnFFTJoin, fnFFTFinal;
|
|
if (groupName == "G1") {
|
|
if (inType == "affine") {
|
|
sIn = G.F.n8*2;
|
|
fnIn2Mid = "g1m_batchToJacobian";
|
|
} else {
|
|
sIn = G.F.n8*3;
|
|
}
|
|
sMid = G.F.n8*3;
|
|
if (inverse) {
|
|
fnName = "g1m_ifft";
|
|
fnFFTFinal = "g1m_fftFinal";
|
|
} else {
|
|
fnName = "g1m_fft";
|
|
}
|
|
fnFFTJoin = "g1m_fftJoin";
|
|
fnFFTMix = "g1m_fftMix";
|
|
|
|
if (outType == "affine") {
|
|
sOut = G.F.n8*2;
|
|
fnMid2Out = "g1m_batchToAffine";
|
|
} else {
|
|
sOut = G.F.n8*3;
|
|
}
|
|
|
|
} else if (groupName == "G2") {
|
|
if (inType == "affine") {
|
|
sIn = G.F.n8*2;
|
|
fnIn2Mid = "g2m_batchToJacobian";
|
|
} else {
|
|
sIn = G.F.n8*3;
|
|
}
|
|
sMid = G.F.n8*3;
|
|
if (inverse) {
|
|
fnName = "g2m_ifft";
|
|
fnFFTFinal = "g2m_fftFinal";
|
|
} else {
|
|
fnName = "g2m_fft";
|
|
}
|
|
fnFFTJoin = "g2m_fftJoin";
|
|
fnFFTMix = "g2m_fftMix";
|
|
if (outType == "affine") {
|
|
sOut = G.F.n8*2;
|
|
fnMid2Out = "g2m_batchToAffine";
|
|
} else {
|
|
sOut = G.F.n8*3;
|
|
}
|
|
} else if (groupName == "Fr") {
|
|
sIn = G.n8;
|
|
sMid = G.n8;
|
|
sOut = G.n8;
|
|
if (inverse) {
|
|
fnName = "frm_ifft";
|
|
fnFFTFinal = "frm_fftFinal";
|
|
} else {
|
|
fnName = "frm_fft";
|
|
}
|
|
fnFFTMix = "frm_fftMix";
|
|
fnFFTJoin = "frm_fftJoin";
|
|
}
|
|
|
|
|
|
let returnArray = false;
|
|
if (Array.isArray(buff)) {
|
|
buff = curve.array2buffer(buff, sIn);
|
|
returnArray = true;
|
|
}
|
|
|
|
const nPoints = buff.byteLength / sIn;
|
|
const bits = log2$3(nPoints);
|
|
|
|
if ((1 << bits) != nPoints) {
|
|
throw new Error("fft must be multiple of 2" );
|
|
}
|
|
|
|
let inv;
|
|
if (inverse) {
|
|
inv = Fr.inv(Fr.e(nPoints));
|
|
}
|
|
|
|
|
|
|
|
let buffOut;
|
|
if (nPoints <= (1 << MAX_BITS_THREAD)) {
|
|
const task = [];
|
|
task.push({cmd: "ALLOC", var: 0, len: sMid*nPoints});
|
|
task.push({cmd: "SET", var: 0, buff: buff});
|
|
if (fnIn2Mid) {
|
|
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: nPoints}, {var: 0}]});
|
|
}
|
|
task.push({cmd: "CALL", fnName:fnName, params: [{var:0}, {val: nPoints}]});
|
|
if (fnMid2Out) {
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: nPoints}, {var: 0}]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: sOut*nPoints});
|
|
|
|
const res = await tm.queueAction(task);
|
|
buffOut = res[0];
|
|
} else {
|
|
|
|
buffReverseBits$1(buff, sIn);
|
|
|
|
let chunks;
|
|
const pointsInChunk = 1 << MAX_BITS_THREAD;
|
|
const chunkSize = pointsInChunk * sIn;
|
|
const nChunks = nPoints / pointsInChunk;
|
|
|
|
const promises = [];
|
|
for (let i = 0; i< nChunks; i++) {
|
|
const task = [];
|
|
task.push({cmd: "ALLOC", var: 0, len: sMid*pointsInChunk});
|
|
const buffChunk = buff.slice( (pointsInChunk * i)*sIn, (pointsInChunk * (i+1))*sIn);
|
|
task.push({cmd: "SET", var: 0, buff: buffChunk});
|
|
if (fnIn2Mid) {
|
|
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
|
|
}
|
|
for (let j=1; j<=MAX_BITS_THREAD;j++) {
|
|
task.push({cmd: "CALL", fnName:fnFFTMix, params: [{var:0}, {val: pointsInChunk}, {val: j}]});
|
|
}
|
|
task.push({cmd: "GET", out:0, var: 0, len: sMid*pointsInChunk});
|
|
promises.push(tm.queueAction(task).then( (r) => {
|
|
if (logger) logger.debug(`fft: ${i}/${nChunks}`);
|
|
return r;
|
|
}));
|
|
}
|
|
|
|
chunks = await Promise.all(promises);
|
|
for (let i = 0; i< nChunks; i++) chunks[i] = chunks[i][0];
|
|
|
|
for (let i = MAX_BITS_THREAD+1; i<=bits; i++) {
|
|
if (logger) logger.debug(`fft join ${i}/${bits}`);
|
|
const nGroups = 1 << (bits - i);
|
|
const nChunksPerGroup = nChunks / nGroups;
|
|
const opPromises = [];
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const first = Fr.exp( Fr.w[i], k*pointsInChunk);
|
|
const inc = Fr.w[i];
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: first});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsInChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
if (i==bits) {
|
|
if (fnFFTFinal) {
|
|
task.push({cmd: "ALLOCSET", var: 4, buff: inv});
|
|
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
|
|
{var: 0},
|
|
{val: pointsInChunk},
|
|
{var: 4},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
|
|
{var: 1},
|
|
{val: pointsInChunk},
|
|
{var: 4},
|
|
]});
|
|
}
|
|
if (fnMid2Out) {
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
|
|
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:1}, {val: pointsInChunk}, {var: 1}]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sOut});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sOut});
|
|
} else {
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sMid});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sMid});
|
|
}
|
|
opPromises.push(tm.queueAction(task));
|
|
}
|
|
}
|
|
|
|
const res = await Promise.all(opPromises);
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
const resChunk = res.shift();
|
|
chunks[o1] = resChunk[0];
|
|
chunks[o2] = resChunk[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
buffOut = new Uint8Array(nPoints * sOut);
|
|
if (inverse) {
|
|
buffOut.set(chunks[0].slice((pointsInChunk-1)*sOut));
|
|
let p= sOut;
|
|
for (let i=nChunks-1; i>0; i--) {
|
|
buffOut.set(chunks[i], p);
|
|
p += chunkSize;
|
|
delete chunks[i]; // Liberate mem
|
|
}
|
|
buffOut.set(chunks[0].slice(0, (pointsInChunk-1)*sOut), p);
|
|
delete chunks[nChunks-1];
|
|
} else {
|
|
for (let i=0; i<nChunks; i++) {
|
|
buffOut.set(chunks[i], pointsInChunk*sOut*i);
|
|
delete chunks[i];
|
|
}
|
|
return buffOut;
|
|
}
|
|
}
|
|
|
|
if (returnArray) {
|
|
return curve.buffer2array(buffOut, sOut);
|
|
} else {
|
|
return buffOut;
|
|
}
|
|
}
|
|
|
|
G.fft = async function(buff, inType, outType, logger) {
|
|
return await _fft(buff, false, inType, outType, logger);
|
|
};
|
|
|
|
G.ifft = async function(buff, inType, outType, logger) {
|
|
return await _fft(buff, true, inType, outType, logger);
|
|
};
|
|
|
|
G.fftMix = async function fftMix(buff) {
|
|
const sG = G.F.n8*3;
|
|
let fnName, fnFFTJoin;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftMix";
|
|
fnFFTJoin = "g1m_fftJoin";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftMix";
|
|
fnFFTJoin = "g2m_fftJoin";
|
|
} else if (groupName == "Fr") {
|
|
fnName = "frm_fftMix";
|
|
fnFFTJoin = "frm_fftJoin";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
const nPoints = Math.floor(buff.byteLength / sG);
|
|
const power = log2$3(nPoints);
|
|
|
|
let nChunks = 1 << log2$3(tm.concurrency);
|
|
|
|
if (nPoints <= nChunks*2) nChunks = 1;
|
|
|
|
const pointsPerChunk = nPoints / nChunks;
|
|
|
|
const powerChunk = log2$3(pointsPerChunk);
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [];
|
|
const b = buff.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b});
|
|
for (let j=1; j<=powerChunk; j++) {
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: pointsPerChunk},
|
|
{val: j}
|
|
]});
|
|
}
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const chunks = [];
|
|
for (let i=0; i<result.length; i++) chunks[i] = result[i][0];
|
|
|
|
|
|
for (let i = powerChunk+1; i<=power; i++) {
|
|
const nGroups = 1 << (power - i);
|
|
const nChunksPerGroup = nChunks / nGroups;
|
|
const opPromises = [];
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const first = Fr.exp( Fr.w[i], k*pointsPerChunk);
|
|
const inc = Fr.w[i];
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: first});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsPerChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
|
|
opPromises.push(tm.queueAction(task));
|
|
}
|
|
}
|
|
|
|
const res = await Promise.all(opPromises);
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
const resChunk = res.shift();
|
|
chunks[o1] = resChunk[0];
|
|
chunks[o2] = resChunk[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sG);
|
|
let p =0;
|
|
for (let i=0; i<nChunks; i++) {
|
|
fullBuffOut.set(chunks[i], p);
|
|
p+=chunks[i].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
|
|
G.fftJoin = async function fftJoin(buff1, buff2, first, inc) {
|
|
const sG = G.F.n8*3;
|
|
let fnName;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftJoin";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftJoin";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
if (buff1.byteLength != buff2.byteLength) {
|
|
throw new Error("Invalid buffer size");
|
|
}
|
|
const nPoints = Math.floor(buff1.byteLength / sG);
|
|
if (nPoints != 1 << log2$3(nPoints)) {
|
|
throw new Error("Invalid number of points");
|
|
}
|
|
|
|
let nChunks = 1 << log2$3(tm.concurrency);
|
|
if (nPoints <= nChunks*2) nChunks = 1;
|
|
|
|
const pointsPerChunk = nPoints / nChunks;
|
|
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<nChunks; i++) {
|
|
const task = [];
|
|
|
|
const firstChunk = Fr.mul(first, Fr.exp(inc, i*pointsPerChunk));
|
|
const b1 = buff1.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
const b2 = buff2.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b1});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: b2});
|
|
task.push({cmd: "ALLOCSET", var: 2, buff: firstChunk});
|
|
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{var: 1},
|
|
{val: pointsPerChunk},
|
|
{var: 2},
|
|
{var: 3}
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
|
|
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut1 = new Uint8Array(nPoints*sG);
|
|
const fullBuffOut2 = new Uint8Array(nPoints*sG);
|
|
let p =0;
|
|
for (let i=0; i<result.length; i++) {
|
|
fullBuffOut1.set(result[i][0], p);
|
|
fullBuffOut2.set(result[i][1], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return [fullBuffOut1, fullBuffOut2];
|
|
};
|
|
|
|
G.fftFinal = async function fftFinal(buff, factor) {
|
|
const sG = G.F.n8*3;
|
|
const sGout = G.F.n8*2;
|
|
let fnName, fnToAffine;
|
|
if (groupName == "G1") {
|
|
fnName = "g1m_fftFinal";
|
|
fnToAffine = "g1m_batchToAffine";
|
|
} else if (groupName == "G2") {
|
|
fnName = "g2m_fftFinal";
|
|
fnToAffine = "g2m_batchToAffine";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
|
|
const nPoints = Math.floor(buff.byteLength / sG);
|
|
if (nPoints != 1 << log2$3(nPoints)) {
|
|
throw new Error("Invalid number of points");
|
|
}
|
|
|
|
const pointsPerChunk = Math.floor(nPoints / tm.concurrency);
|
|
|
|
const opPromises = [];
|
|
for (let i=0; i<tm.concurrency; i++) {
|
|
let n;
|
|
if (i< tm.concurrency-1) {
|
|
n = pointsPerChunk;
|
|
} else {
|
|
n = nPoints - i*pointsPerChunk;
|
|
}
|
|
if (n==0) continue;
|
|
const task = [];
|
|
const b = buff.slice((i* pointsPerChunk)*sG, (i*pointsPerChunk+n)*sG);
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: b});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: factor});
|
|
task.push({cmd: "CALL", fnName: fnName, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 1},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: fnToAffine, params: [
|
|
{var: 0},
|
|
{val: n},
|
|
{var: 0},
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 0, len: n*sGout});
|
|
opPromises.push(
|
|
tm.queueAction(task)
|
|
);
|
|
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sGout);
|
|
let p =0;
|
|
for (let i=result.length-1; i>=0; i--) {
|
|
fullBuffOut.set(result[i][0], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
};
|
|
}
|
|
|
|
async function buildEngine$1(params) {
|
|
|
|
const tm = await buildThreadManager$1(params.wasm, params.singleThread);
|
|
|
|
|
|
const curve = {};
|
|
|
|
curve.q = e$5(params.wasm.q);
|
|
curve.r = e$5(params.wasm.r);
|
|
curve.name = params.name;
|
|
curve.tm = tm;
|
|
curve.prePSize = params.wasm.prePSize;
|
|
curve.preQSize = params.wasm.preQSize;
|
|
curve.Fr = new WasmField1$1(tm, "frm", params.n8r, params.r);
|
|
curve.F1 = new WasmField1$1(tm, "f1m", params.n8q, params.q);
|
|
curve.F2 = new WasmField2$1(tm, "f2m", curve.F1);
|
|
curve.G1 = new WasmCurve$1(tm, "g1m", curve.F1, params.wasm.pG1gen, params.wasm.pG1b, params.cofactorG1);
|
|
curve.G2 = new WasmCurve$1(tm, "g2m", curve.F2, params.wasm.pG2gen, params.wasm.pG2b, params.cofactorG2);
|
|
curve.F6 = new WasmField3$1(tm, "f6m", curve.F2);
|
|
curve.F12 = new WasmField2$1(tm, "ftm", curve.F6);
|
|
|
|
curve.Gt = curve.F12;
|
|
|
|
buildBatchApplyKey$1(curve, "G1");
|
|
buildBatchApplyKey$1(curve, "G2");
|
|
buildBatchApplyKey$1(curve, "Fr");
|
|
|
|
buildMultiexp$1(curve, "G1");
|
|
buildMultiexp$1(curve, "G2");
|
|
|
|
buildFFT$1(curve, "G1");
|
|
buildFFT$1(curve, "G2");
|
|
buildFFT$1(curve, "Fr");
|
|
|
|
buildPairing$1(curve);
|
|
|
|
curve.array2buffer = function(arr, sG) {
|
|
const buff = new Uint8Array(sG*arr.length);
|
|
|
|
for (let i=0; i<arr.length; i++) {
|
|
buff.set(arr[i], i*sG);
|
|
}
|
|
|
|
return buff;
|
|
};
|
|
|
|
curve.buffer2array = function(buff , sG) {
|
|
const n= buff.length / sG;
|
|
const arr = new Array(n);
|
|
for (let i=0; i<n; i++) {
|
|
arr[i] = buff.slice(i*sG, i*sG+sG);
|
|
}
|
|
return arr;
|
|
};
|
|
|
|
return curve;
|
|
}
|
|
|
|
let curve$2;
|
|
|
|
async function buildBn128$1() {
|
|
|
|
if (curve$2) return curve$2;
|
|
const params = {
|
|
name: "bn128",
|
|
wasm: wasmcurves.bn128_wasm,
|
|
q: e$5("21888242871839275222246405745257275088696311157297823662689037894645226208583"),
|
|
r: e$5("21888242871839275222246405745257275088548364400416034343698204186575808495617"),
|
|
n8q: 32,
|
|
n8r: 32,
|
|
cofactorG2: e$5("30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d", 16),
|
|
singleThread: false
|
|
};
|
|
|
|
curve$2 = await buildEngine$1(params);
|
|
curve$2.terminate = async function() {
|
|
curve$2 = null;
|
|
await this.tm.terminate();
|
|
};
|
|
|
|
return curve$2;
|
|
}
|
|
|
|
let curve$3;
|
|
|
|
async function buildBls12381$1() {
|
|
|
|
if (curve$3) return curve$3;
|
|
const params = {
|
|
name: "bls12381",
|
|
wasm: wasmcurves.bls12381_wasm,
|
|
q: e$5("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16),
|
|
r: e$5("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16),
|
|
n8q: 48,
|
|
n8r: 32,
|
|
cofactorG1: e$5("0x396c8c005555e1568c00aaab0000aaab", 16),
|
|
cofactorG2: e$5("0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5", 16),
|
|
singleThread: false
|
|
};
|
|
|
|
curve$3 = await buildEngine$1(params);
|
|
|
|
curve$3.terminate = async function() {
|
|
curve$3 = null;
|
|
await this.tm.terminate();
|
|
};
|
|
return curve$3;
|
|
}
|
|
|
|
const Scalar$3=_Scalar$1;
|
|
const utils$4 = _utils$1;
|
|
|
|
var main = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
Scalar: Scalar$3,
|
|
utils: utils$4,
|
|
PolField: PolField,
|
|
F1Field: F1Field$1,
|
|
F2Field: F2Field,
|
|
F3Field: F3Field,
|
|
ZqField: F1Field$1,
|
|
EC: EC,
|
|
buildBn128: buildBn128$1,
|
|
buildBls12381: buildBls12381$1,
|
|
ChaCha: ChaCha$1
|
|
});
|
|
|
|
/* globals WebAssembly */
|
|
/*
|
|
|
|
Copyright 2020 0KIMS association.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
const Scalar$4 = main.Scalar;
|
|
const F1Field$2 = main.F1Field;
|
|
|
|
|
|
var witness_calculator = async function builder(code, options) {
|
|
|
|
options = options || {};
|
|
|
|
const memory = new WebAssembly.Memory({initial:32767});
|
|
const wasmModule = await WebAssembly.compile(code);
|
|
|
|
let wc;
|
|
|
|
const instance = await WebAssembly.instantiate(wasmModule, {
|
|
env: {
|
|
"memory": memory
|
|
},
|
|
runtime: {
|
|
error: function(code, pstr, a,b,c,d) {
|
|
let errStr;
|
|
if (code == 7) {
|
|
errStr=p2str(pstr) + " " + wc.getFr(b).toString() + " != " + wc.getFr(c).toString() + " " +p2str(d);
|
|
} else {
|
|
errStr=p2str(pstr)+ " " + a + " " + b + " " + c + " " + d;
|
|
}
|
|
console.log("ERROR: ", code, errStr);
|
|
throw new Error(errStr);
|
|
},
|
|
log: function(a) {
|
|
console.log(wc.getFr(a).toString());
|
|
},
|
|
logGetSignal: function(signal, pVal) {
|
|
if (options.logGetSignal) {
|
|
options.logGetSignal(signal, wc.getFr(pVal) );
|
|
}
|
|
},
|
|
logSetSignal: function(signal, pVal) {
|
|
if (options.logSetSignal) {
|
|
options.logSetSignal(signal, wc.getFr(pVal) );
|
|
}
|
|
},
|
|
logStartComponent: function(cIdx) {
|
|
if (options.logStartComponent) {
|
|
options.logStartComponent(cIdx);
|
|
}
|
|
},
|
|
logFinishComponent: function(cIdx) {
|
|
if (options.logFinishComponent) {
|
|
options.logFinishComponent(cIdx);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
const sanityCheck =
|
|
options &&
|
|
(
|
|
options.sanityCheck ||
|
|
options.logGetSignal ||
|
|
options.logSetSignal ||
|
|
options.logStartComponent ||
|
|
options.logFinishComponent
|
|
);
|
|
|
|
wc = new WitnessCalculator(memory, instance, sanityCheck);
|
|
return wc;
|
|
|
|
function p2str(p) {
|
|
const i8 = new Uint8Array(memory.buffer);
|
|
|
|
const bytes = [];
|
|
|
|
for (let i=0; i8[p+i]>0; i++) bytes.push(i8[p+i]);
|
|
|
|
return String.fromCharCode.apply(null, bytes);
|
|
}
|
|
};
|
|
|
|
class WitnessCalculator {
|
|
constructor(memory, instance, sanityCheck) {
|
|
this.memory = memory;
|
|
this.i32 = new Uint32Array(memory.buffer);
|
|
this.instance = instance;
|
|
|
|
this.n32 = (this.instance.exports.getFrLen() >> 2) - 2;
|
|
const pRawPrime = this.instance.exports.getPRawPrime();
|
|
|
|
const arr = new Array(this.n32);
|
|
for (let i=0; i<this.n32; i++) {
|
|
arr[this.n32-1-i] = this.i32[(pRawPrime >> 2) + i];
|
|
}
|
|
|
|
this.prime = Scalar$4.fromArray(arr, 0x100000000);
|
|
|
|
this.Fr = new F1Field$2(this.prime);
|
|
|
|
this.mask32 = Scalar$4.fromString("FFFFFFFF", 16);
|
|
this.NVars = this.instance.exports.getNVars();
|
|
this.n64 = Math.floor((this.Fr.bitLength - 1) / 64)+1;
|
|
this.R = this.Fr.e( Scalar$4.shiftLeft(1 , this.n64*64));
|
|
this.RInv = this.Fr.inv(this.R);
|
|
this.sanityCheck = sanityCheck;
|
|
}
|
|
|
|
async _doCalculateWitness(input, sanityCheck) {
|
|
this.instance.exports.init((this.sanityCheck || sanityCheck) ? 1 : 0);
|
|
const pSigOffset = this.allocInt();
|
|
const pFr = this.allocFr();
|
|
const keys = Object.keys(input);
|
|
keys.forEach( (k) => {
|
|
const h = utils$2.fnvHash(k);
|
|
const hMSB = parseInt(h.slice(0,8), 16);
|
|
const hLSB = parseInt(h.slice(8,16), 16);
|
|
try {
|
|
this.instance.exports.getSignalOffset32(pSigOffset, 0, hMSB, hLSB);
|
|
} catch (err) {
|
|
throw new Error(`Signal ${k} is not an input of the circuit.`);
|
|
}
|
|
const sigOffset = this.getInt(pSigOffset);
|
|
const fArr = utils$2.flatArray(input[k]);
|
|
for (let i=0; i<fArr.length; i++) {
|
|
this.setFr(pFr, fArr[i]);
|
|
this.instance.exports.setSignal(0, 0, sigOffset + i, pFr);
|
|
}
|
|
});
|
|
}
|
|
|
|
async calculateWitness(input, sanityCheck) {
|
|
const self = this;
|
|
|
|
const old0 = self.i32[0];
|
|
const w = [];
|
|
|
|
await self._doCalculateWitness(input, sanityCheck);
|
|
|
|
for (let i=0; i<self.NVars; i++) {
|
|
const pWitness = self.instance.exports.getPWitness(i);
|
|
w.push(self.getFr(pWitness));
|
|
}
|
|
|
|
self.i32[0] = old0;
|
|
return w;
|
|
}
|
|
|
|
async calculateBinWitness(input, sanityCheck) {
|
|
const self = this;
|
|
|
|
const old0 = self.i32[0];
|
|
|
|
await self._doCalculateWitness(input, sanityCheck);
|
|
|
|
const pWitnessBuffer = self.instance.exports.getWitnessBuffer();
|
|
|
|
self.i32[0] = old0;
|
|
|
|
const buff = self.memory.buffer.slice(pWitnessBuffer, pWitnessBuffer + (self.NVars * self.n64 * 8));
|
|
return new Uint8Array(buff);
|
|
}
|
|
|
|
allocInt() {
|
|
const p = this.i32[0];
|
|
this.i32[0] = p+8;
|
|
return p;
|
|
}
|
|
|
|
allocFr() {
|
|
const p = this.i32[0];
|
|
this.i32[0] = p+this.n32*4 + 8;
|
|
return p;
|
|
}
|
|
|
|
getInt(p) {
|
|
return this.i32[p>>2];
|
|
}
|
|
|
|
setInt(p, v) {
|
|
this.i32[p>>2] = v;
|
|
}
|
|
|
|
getFr(p) {
|
|
const self = this;
|
|
const idx = (p>>2);
|
|
|
|
if (self.i32[idx + 1] & 0x80000000) {
|
|
const arr = new Array(self.n32);
|
|
for (let i=0; i<self.n32; i++) {
|
|
arr[self.n32-1-i] = self.i32[idx+2+i];
|
|
}
|
|
const res = self.Fr.e(Scalar$4.fromArray(arr, 0x100000000));
|
|
if (self.i32[idx + 1] & 0x40000000) {
|
|
return fromMontgomery(res);
|
|
} else {
|
|
return res;
|
|
}
|
|
|
|
} else {
|
|
if (self.i32[idx] & 0x80000000) {
|
|
return self.Fr.e( self.i32[idx] - 0x100000000);
|
|
} else {
|
|
return self.Fr.e(self.i32[idx]);
|
|
}
|
|
}
|
|
|
|
function fromMontgomery(n) {
|
|
return self.Fr.mul(self.RInv, n);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
setFr(p, v) {
|
|
const self = this;
|
|
|
|
v = self.Fr.e(v);
|
|
|
|
const minShort = self.Fr.neg(self.Fr.e("80000000", 16));
|
|
const maxShort = self.Fr.e("7FFFFFFF", 16);
|
|
|
|
if ( (self.Fr.geq(v, minShort))
|
|
&&(self.Fr.leq(v, maxShort)))
|
|
{
|
|
let a;
|
|
if (self.Fr.geq(v, self.Fr.zero)) {
|
|
a = Scalar$4.toNumber(v);
|
|
} else {
|
|
a = Scalar$4.toNumber( self.Fr.sub(v, minShort));
|
|
a = a - 0x80000000;
|
|
a = 0x100000000 + a;
|
|
}
|
|
self.i32[(p >> 2)] = a;
|
|
self.i32[(p >> 2) + 1] = 0;
|
|
return;
|
|
}
|
|
|
|
self.i32[(p >> 2)] = 0;
|
|
self.i32[(p >> 2) + 1] = 0x80000000;
|
|
const arr = Scalar$4.toArray(v, 0x100000000);
|
|
for (let i=0; i<self.n32; i++) {
|
|
const idx = arr.length-1-i;
|
|
|
|
if ( idx >=0) {
|
|
self.i32[(p >> 2) + 2 + i] = arr[idx];
|
|
} else {
|
|
self.i32[(p >> 2) + 2 + i] = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var WitnessCalculatorBuilder = witness_calculator;
|
|
|
|
var circom_runtime = {
|
|
WitnessCalculatorBuilder: WitnessCalculatorBuilder
|
|
};
|
|
|
|
const { WitnessCalculatorBuilder: WitnessCalculatorBuilder$1 } = circom_runtime;
|
|
|
|
async function wtnsCalculate(input, wasmFileName, wtnsFileName, options) {
|
|
|
|
const fdWasm = await readExisting$2(wasmFileName);
|
|
const wasm = await fdWasm.read(fdWasm.totalSize);
|
|
await fdWasm.close();
|
|
|
|
const wc = await WitnessCalculatorBuilder$1(wasm);
|
|
const w = await wc.calculateBinWitness(input);
|
|
|
|
const fdWtns = await createBinFile(wtnsFileName, "wtns", 2, 2);
|
|
|
|
await writeBin(fdWtns, w, wc.prime);
|
|
await fdWtns.close();
|
|
|
|
}
|
|
|
|
async function groth16FullProve(input, wasmFile, zkeyFileName, logger) {
|
|
const wtns= {
|
|
type: "mem"
|
|
};
|
|
await wtnsCalculate(input, wasmFile, wtns);
|
|
return await groth16Prove(zkeyFileName, wtns);
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
const {unstringifyBigInts: unstringifyBigInts$6} = utils$1;
|
|
|
|
async function groth16Verify(vk_verifier, publicSignals, proof, logger) {
|
|
/*
|
|
let cpub = vk_verifier.IC[0];
|
|
for (let s= 0; s< vk_verifier.nPublic; s++) {
|
|
cpub = G1.add( cpub, G1.timesScalar( vk_verifier.IC[s+1], publicSignals[s]));
|
|
}
|
|
*/
|
|
|
|
vk_verifier = unstringifyBigInts$6(vk_verifier);
|
|
proof = unstringifyBigInts$6(proof);
|
|
publicSignals = unstringifyBigInts$6(publicSignals);
|
|
|
|
const curve = await getCurveFromName(vk_verifier.curve);
|
|
|
|
const IC0 = curve.G1.fromObject(vk_verifier.IC[0]);
|
|
const IC = new Uint8Array(curve.G1.F.n8*2 * publicSignals.length);
|
|
const w = new Uint8Array(curve.Fr.n8 * publicSignals.length);
|
|
|
|
for (let i=0; i<publicSignals.length; i++) {
|
|
const buffP = curve.G1.fromObject(vk_verifier.IC[i+1]);
|
|
IC.set(buffP, i*curve.G1.F.n8*2);
|
|
Scalar$1.toRprLE(w, curve.Fr.n8*i, publicSignals[i], curve.Fr.n8);
|
|
}
|
|
|
|
let cpub = await curve.G1.multiExpAffine(IC, w);
|
|
cpub = curve.G1.add(cpub, IC0);
|
|
|
|
const pi_a = curve.G1.fromObject(proof.pi_a);
|
|
const pi_b = curve.G2.fromObject(proof.pi_b);
|
|
const pi_c = curve.G1.fromObject(proof.pi_c);
|
|
|
|
const vk_gamma_2 = curve.G2.fromObject(vk_verifier.vk_gamma_2);
|
|
const vk_delta_2 = curve.G2.fromObject(vk_verifier.vk_delta_2);
|
|
const vk_alpha_1 = curve.G1.fromObject(vk_verifier.vk_alpha_1);
|
|
const vk_beta_2 = curve.G2.fromObject(vk_verifier.vk_beta_2);
|
|
|
|
const res = await curve.pairingEq(
|
|
curve.G1.neg(pi_a) , pi_b,
|
|
cpub , vk_gamma_2,
|
|
pi_c , vk_delta_2,
|
|
|
|
vk_alpha_1, vk_beta_2
|
|
);
|
|
|
|
if (! res) {
|
|
if (logger) logger.error("Invalid proof");
|
|
return false;
|
|
}
|
|
|
|
if (logger) logger.info("OK!");
|
|
return true;
|
|
}
|
|
|
|
var groth16 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fullProve: groth16FullProve,
|
|
prove: groth16Prove,
|
|
verify: groth16Verify
|
|
});
|
|
|
|
function hashToG2(curve, hash) {
|
|
const hashV = new DataView(hash.buffer, hash.byteOffset, hash.byteLength);
|
|
const seed = [];
|
|
for (let i=0; i<8; i++) {
|
|
seed[i] = hashV.getUint32(i*4);
|
|
}
|
|
|
|
const rng = new ChaCha(seed);
|
|
|
|
const g2_sp = curve.G2.fromRng(rng);
|
|
|
|
return g2_sp;
|
|
}
|
|
|
|
function getG2sp(curve, persinalization, challenge, g1s, g1sx) {
|
|
|
|
const h = blake2bWasm(64);
|
|
const b1 = new Uint8Array([persinalization]);
|
|
h.update(b1);
|
|
h.update(challenge);
|
|
const b3 = curve.G1.toUncompressed(g1s);
|
|
h.update( b3);
|
|
const b4 = curve.G1.toUncompressed(g1sx);
|
|
h.update( b4);
|
|
const hash =h.digest();
|
|
|
|
return hashToG2(curve, hash);
|
|
}
|
|
|
|
function calculatePubKey(k, curve, personalization, challengeHash, rng ) {
|
|
k.g1_s = curve.G1.toAffine(curve.G1.fromRng(rng));
|
|
k.g1_sx = curve.G1.toAffine(curve.G1.timesFr(k.g1_s, k.prvKey));
|
|
k.g2_sp = curve.G2.toAffine(getG2sp(curve, personalization, challengeHash, k.g1_s, k.g1_sx));
|
|
k.g2_spx = curve.G2.toAffine(curve.G2.timesFr(k.g2_sp, k.prvKey));
|
|
return k;
|
|
}
|
|
|
|
function createPTauKey(curve, challengeHash, rng) {
|
|
const key = {
|
|
tau: {},
|
|
alpha: {},
|
|
beta: {}
|
|
};
|
|
key.tau.prvKey = curve.Fr.fromRng(rng);
|
|
key.alpha.prvKey = curve.Fr.fromRng(rng);
|
|
key.beta.prvKey = curve.Fr.fromRng(rng);
|
|
calculatePubKey(key.tau, curve, 0, challengeHash, rng);
|
|
calculatePubKey(key.alpha, curve, 1, challengeHash, rng);
|
|
calculatePubKey(key.beta, curve, 2, challengeHash, rng);
|
|
return key;
|
|
}
|
|
|
|
async function writePTauHeader(fd, curve, power, ceremonyPower) {
|
|
// Write the header
|
|
///////////
|
|
|
|
if (! ceremonyPower) ceremonyPower = power;
|
|
await fd.writeULE32(1); // Header type
|
|
const pHeaderSize = fd.pos;
|
|
await fd.writeULE64(0); // Temporally set to 0 length
|
|
|
|
await fd.writeULE32(curve.F1.n64*8);
|
|
|
|
const buff = new Uint8Array(curve.F1.n8);
|
|
Scalar$1.toRprLE(buff, 0, curve.q, curve.F1.n8);
|
|
await fd.write(buff);
|
|
await fd.writeULE32(power); // power
|
|
await fd.writeULE32(ceremonyPower); // power
|
|
|
|
const headerSize = fd.pos - pHeaderSize - 8;
|
|
|
|
const oldPos = fd.pos;
|
|
|
|
await fd.writeULE64(headerSize, pHeaderSize);
|
|
|
|
fd.pos = oldPos;
|
|
}
|
|
|
|
async function readPTauHeader(fd, sections) {
|
|
if (!sections[1]) throw new Error(fd.fileName + ": File has no header");
|
|
if (sections[1].length>1) throw new Error(fd.fileName +": File has more than one header");
|
|
|
|
fd.pos = sections[1][0].p;
|
|
const n8 = await fd.readULE32();
|
|
const buff = await fd.read(n8);
|
|
const q = Scalar$1.fromRprLE(buff);
|
|
|
|
const curve = await getCurveFromQ(q);
|
|
|
|
if (curve.F1.n64*8 != n8) throw new Error(fd.fileName +": Invalid size");
|
|
|
|
const power = await fd.readULE32();
|
|
const ceremonyPower = await fd.readULE32();
|
|
|
|
if (fd.pos-sections[1][0].p != sections[1][0].size) throw new Error("Invalid PTau header size");
|
|
|
|
return {curve, power, ceremonyPower};
|
|
}
|
|
|
|
|
|
async function readPtauPubKey(fd, curve, montgomery) {
|
|
|
|
const buff = await fd.read(curve.F1.n8*2*6 + curve.F2.n8*2*3);
|
|
|
|
return fromPtauPubKeyRpr(buff, 0, curve, montgomery);
|
|
}
|
|
|
|
function fromPtauPubKeyRpr(buff, pos, curve, montgomery) {
|
|
|
|
const key = {
|
|
tau: {},
|
|
alpha: {},
|
|
beta: {}
|
|
};
|
|
|
|
key.tau.g1_s = readG1();
|
|
key.tau.g1_sx = readG1();
|
|
key.alpha.g1_s = readG1();
|
|
key.alpha.g1_sx = readG1();
|
|
key.beta.g1_s = readG1();
|
|
key.beta.g1_sx = readG1();
|
|
key.tau.g2_spx = readG2();
|
|
key.alpha.g2_spx = readG2();
|
|
key.beta.g2_spx = readG2();
|
|
|
|
return key;
|
|
|
|
function readG1() {
|
|
let p;
|
|
if (montgomery) {
|
|
p = curve.G1.fromRprLEM( buff, pos );
|
|
} else {
|
|
p = curve.G1.fromRprUncompressed( buff, pos );
|
|
}
|
|
pos += curve.G1.F.n8*2;
|
|
return p;
|
|
}
|
|
|
|
function readG2() {
|
|
let p;
|
|
if (montgomery) {
|
|
p = curve.G2.fromRprLEM( buff, pos );
|
|
} else {
|
|
p = curve.G2.fromRprUncompressed( buff, pos );
|
|
}
|
|
pos += curve.G2.F.n8*2;
|
|
return p;
|
|
}
|
|
}
|
|
|
|
function toPtauPubKeyRpr(buff, pos, curve, key, montgomery) {
|
|
|
|
writeG1(key.tau.g1_s);
|
|
writeG1(key.tau.g1_sx);
|
|
writeG1(key.alpha.g1_s);
|
|
writeG1(key.alpha.g1_sx);
|
|
writeG1(key.beta.g1_s);
|
|
writeG1(key.beta.g1_sx);
|
|
writeG2(key.tau.g2_spx);
|
|
writeG2(key.alpha.g2_spx);
|
|
writeG2(key.beta.g2_spx);
|
|
|
|
async function writeG1(p) {
|
|
if (montgomery) {
|
|
curve.G1.toRprLEM(buff, pos, p);
|
|
} else {
|
|
curve.G1.toRprUncompressed(buff, pos, p);
|
|
}
|
|
pos += curve.F1.n8*2;
|
|
}
|
|
|
|
async function writeG2(p) {
|
|
if (montgomery) {
|
|
curve.G2.toRprLEM(buff, pos, p);
|
|
} else {
|
|
curve.G2.toRprUncompressed(buff, pos, p);
|
|
}
|
|
pos += curve.F2.n8*2;
|
|
}
|
|
|
|
return buff;
|
|
}
|
|
|
|
async function writePtauPubKey(fd, curve, key, montgomery) {
|
|
const buff = new Uint8Array(curve.F1.n8*2*6 + curve.F2.n8*2*3);
|
|
toPtauPubKeyRpr(buff, 0, curve, key, montgomery);
|
|
await fd.write(buff);
|
|
}
|
|
|
|
async function readContribution$1(fd, curve) {
|
|
const c = {};
|
|
|
|
c.tauG1 = await readG1();
|
|
c.tauG2 = await readG2();
|
|
c.alphaG1 = await readG1();
|
|
c.betaG1 = await readG1();
|
|
c.betaG2 = await readG2();
|
|
c.key = await readPtauPubKey(fd, curve, true);
|
|
c.partialHash = await fd.read(216);
|
|
c.nextChallenge = await fd.read(64);
|
|
c.type = await fd.readULE32();
|
|
|
|
const buffV = new Uint8Array(curve.G1.F.n8*2*6+curve.G2.F.n8*2*3);
|
|
toPtauPubKeyRpr(buffV, 0, curve, c.key, false);
|
|
|
|
const responseHasher = blake2bWasm(64);
|
|
responseHasher.setPartialHash(c.partialHash);
|
|
responseHasher.update(buffV);
|
|
c.responseHash = responseHasher.digest();
|
|
|
|
const paramLength = await fd.readULE32();
|
|
const curPos = fd.pos;
|
|
let lastType =0;
|
|
while (fd.pos-curPos < paramLength) {
|
|
const buffType = await readDV(1);
|
|
if (buffType[0]<= lastType) throw new Error("Parameters in the contribution must be sorted");
|
|
lastType = buffType[0];
|
|
if (buffType[0]==1) { // Name
|
|
const buffLen = await readDV(1);
|
|
const buffStr = await readDV(buffLen[0]);
|
|
c.name = new TextDecoder().decode(buffStr);
|
|
} else if (buffType[0]==2) {
|
|
const buffExp = await readDV(1);
|
|
c.numIterationsExp = buffExp[0];
|
|
} else if (buffType[0]==3) {
|
|
const buffLen = await readDV(1);
|
|
c.beaconHash = await readDV(buffLen[0]);
|
|
} else {
|
|
throw new Error("Parameter not recognized");
|
|
}
|
|
}
|
|
if (fd.pos != curPos + paramLength) {
|
|
throw new Error("Parametes do not match");
|
|
}
|
|
|
|
return c;
|
|
|
|
async function readG1() {
|
|
const pBuff = await fd.read(curve.G1.F.n8*2);
|
|
return curve.G1.fromRprLEM( pBuff );
|
|
}
|
|
|
|
async function readG2() {
|
|
const pBuff = await fd.read(curve.G2.F.n8*2);
|
|
return curve.G2.fromRprLEM( pBuff );
|
|
}
|
|
|
|
async function readDV(n) {
|
|
const b = await fd.read(n);
|
|
return new Uint8Array(b);
|
|
}
|
|
}
|
|
|
|
async function readContributions(fd, curve, sections) {
|
|
if (!sections[7]) throw new Error(fd.fileName + ": File has no contributions");
|
|
if (sections[7][0].length>1) throw new Error(fd.fileName +": File has more than one contributions section");
|
|
|
|
fd.pos = sections[7][0].p;
|
|
const nContributions = await fd.readULE32();
|
|
const contributions = [];
|
|
for (let i=0; i<nContributions; i++) {
|
|
const c = await readContribution$1(fd, curve);
|
|
c.id = i+1;
|
|
contributions.push(c);
|
|
}
|
|
|
|
if (fd.pos-sections[7][0].p != sections[7][0].size) throw new Error("Invalid contribution section size");
|
|
|
|
return contributions;
|
|
}
|
|
|
|
async function writeContribution$1(fd, curve, contribution) {
|
|
|
|
const buffG1 = new Uint8Array(curve.F1.n8*2);
|
|
const buffG2 = new Uint8Array(curve.F2.n8*2);
|
|
await writeG1(contribution.tauG1);
|
|
await writeG2(contribution.tauG2);
|
|
await writeG1(contribution.alphaG1);
|
|
await writeG1(contribution.betaG1);
|
|
await writeG2(contribution.betaG2);
|
|
await writePtauPubKey(fd, curve, contribution.key, true);
|
|
await fd.write(contribution.partialHash);
|
|
await fd.write(contribution.nextChallenge);
|
|
await fd.writeULE32(contribution.type || 0);
|
|
|
|
const params = [];
|
|
if (contribution.name) {
|
|
params.push(1); // Param Name
|
|
const nameData = new TextEncoder("utf-8").encode(contribution.name.substring(0,64));
|
|
params.push(nameData.byteLength);
|
|
for (let i=0; i<nameData.byteLength; i++) params.push(nameData[i]);
|
|
}
|
|
if (contribution.type == 1) {
|
|
params.push(2); // Param numIterationsExp
|
|
params.push(contribution.numIterationsExp);
|
|
|
|
params.push(3); // Beacon Hash
|
|
params.push(contribution.beaconHash.byteLength);
|
|
for (let i=0; i<contribution.beaconHash.byteLength; i++) params.push(contribution.beaconHash[i]);
|
|
}
|
|
if (params.length>0) {
|
|
const paramsBuff = new Uint8Array(params);
|
|
await fd.writeULE32(paramsBuff.byteLength);
|
|
await fd.write(paramsBuff);
|
|
} else {
|
|
await fd.writeULE32(0);
|
|
}
|
|
|
|
|
|
async function writeG1(p) {
|
|
curve.G1.toRprLEM(buffG1, 0, p);
|
|
await fd.write(buffG1);
|
|
}
|
|
|
|
async function writeG2(p) {
|
|
curve.G2.toRprLEM(buffG2, 0, p);
|
|
await fd.write(buffG2);
|
|
}
|
|
|
|
}
|
|
|
|
async function writeContributions(fd, curve, contributions) {
|
|
|
|
await fd.writeULE32(7); // Header type
|
|
const pContributionsSize = fd.pos;
|
|
await fd.writeULE64(0); // Temporally set to 0 length
|
|
|
|
await fd.writeULE32(contributions.length);
|
|
for (let i=0; i< contributions.length; i++) {
|
|
await writeContribution$1(fd, curve, contributions[i]);
|
|
}
|
|
const contributionsSize = fd.pos - pContributionsSize - 8;
|
|
|
|
const oldPos = fd.pos;
|
|
|
|
await fd.writeULE64(contributionsSize, pContributionsSize);
|
|
fd.pos = oldPos;
|
|
}
|
|
|
|
function calculateFirstChallengeHash(curve, power, logger) {
|
|
if (logger) logger.debug("Calculating First Challenge Hash");
|
|
|
|
const hasher = new blake2bWasm(64);
|
|
|
|
const vG1 = new Uint8Array(curve.G1.F.n8*2);
|
|
const vG2 = new Uint8Array(curve.G2.F.n8*2);
|
|
curve.G1.toRprUncompressed(vG1, 0, curve.G1.g);
|
|
curve.G2.toRprUncompressed(vG2, 0, curve.G2.g);
|
|
|
|
hasher.update(blake2bWasm(64).digest());
|
|
|
|
let n;
|
|
|
|
n=(1 << power)*2 -1;
|
|
if (logger) logger.debug("Calculate Initial Hash: tauG1");
|
|
hashBlock(vG1, n);
|
|
n= 1 << power;
|
|
if (logger) logger.debug("Calculate Initial Hash: tauG2");
|
|
hashBlock(vG2, n);
|
|
if (logger) logger.debug("Calculate Initial Hash: alphaTauG1");
|
|
hashBlock(vG1, n);
|
|
if (logger) logger.debug("Calculate Initial Hash: betaTauG1");
|
|
hashBlock(vG1, n);
|
|
hasher.update(vG2);
|
|
|
|
return hasher.digest();
|
|
|
|
function hashBlock(buff, n) {
|
|
const blockSize = 500000;
|
|
const nBlocks = Math.floor(n / blockSize);
|
|
const rem = n % blockSize;
|
|
const bigBuff = new Uint8Array(blockSize * buff.byteLength);
|
|
for (let i=0; i<blockSize; i++) {
|
|
bigBuff.set(buff, i*buff.byteLength);
|
|
}
|
|
for (let i=0; i<nBlocks; i++) {
|
|
hasher.update(bigBuff);
|
|
if (logger) logger.debug("Initial hash: " +i*blockSize);
|
|
}
|
|
for (let i=0; i<rem; i++) {
|
|
hasher.update(buff);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function keyFromBeacon(curve, challengeHash, beaconHash, numIterationsExp) {
|
|
|
|
const rng = rngFromBeaconParams(beaconHash, numIterationsExp);
|
|
|
|
const key = createPTauKey(curve, challengeHash, rng);
|
|
|
|
return key;
|
|
}
|
|
|
|
/*
|
|
Header(1)
|
|
n8
|
|
prime
|
|
power
|
|
tauG1(2)
|
|
{(1<<power)*2-1} [
|
|
G1, tau*G1, tau^2 * G1, ....
|
|
]
|
|
tauG2(3)
|
|
{1<<power}[
|
|
G2, tau*G2, tau^2 * G2, ...
|
|
]
|
|
alphaTauG1(4)
|
|
{1<<power}[
|
|
alpha*G1, alpha*tau*G1, alpha*tau^2*G1,....
|
|
]
|
|
betaTauG1(5)
|
|
{1<<power} []
|
|
beta*G1, beta*tau*G1, beta*tau^2*G1, ....
|
|
]
|
|
betaG2(6)
|
|
{1}[
|
|
beta*G2
|
|
]
|
|
contributions(7)
|
|
NContributions
|
|
{NContributions}[
|
|
tau*G1
|
|
tau*G2
|
|
alpha*G1
|
|
beta*G1
|
|
beta*G2
|
|
pubKey
|
|
tau_g1s
|
|
tau_g1sx
|
|
tau_g2spx
|
|
alpha_g1s
|
|
alpha_g1sx
|
|
alpha_g1spx
|
|
beta_g1s
|
|
beta_g1sx
|
|
beta_g1spx
|
|
partialHash (216 bytes) See https://github.com/mafintosh/blake2b-wasm/blob/23bee06945806309977af802bc374727542617c7/blake2b.wat#L9
|
|
hashNewChallenge
|
|
]
|
|
*/
|
|
|
|
async function newAccumulator(curve, power, fileName, logger) {
|
|
|
|
await blake2bWasm.ready();
|
|
|
|
const fd = await createBinFile(fileName, "ptau", 1, 7);
|
|
|
|
await writePTauHeader(fd, curve, power, 0);
|
|
|
|
const buffG1 = curve.G1.oneAffine;
|
|
const buffG2 = curve.G2.oneAffine;
|
|
|
|
// Write tauG1
|
|
///////////
|
|
await startWriteSection(fd, 2);
|
|
const nTauG1 = (1 << power) * 2 -1;
|
|
for (let i=0; i< nTauG1; i++) {
|
|
await fd.write(buffG1);
|
|
if ((logger)&&((i%100000) == 0)&&i) logger.info("tauG1: " + i);
|
|
}
|
|
await endWriteSection(fd);
|
|
|
|
// Write tauG2
|
|
///////////
|
|
await startWriteSection(fd, 3);
|
|
const nTauG2 = (1 << power);
|
|
for (let i=0; i< nTauG2; i++) {
|
|
await fd.write(buffG2);
|
|
if ((logger)&&((i%100000) == 0)&&i) logger.log("tauG2: " + i);
|
|
}
|
|
await endWriteSection(fd);
|
|
|
|
// Write alphaTauG1
|
|
///////////
|
|
await startWriteSection(fd, 4);
|
|
const nAlfaTauG1 = (1 << power);
|
|
for (let i=0; i< nAlfaTauG1; i++) {
|
|
await fd.write(buffG1);
|
|
if ((logger)&&((i%100000) == 0)&&i) logger.log("alphaTauG1: " + i);
|
|
}
|
|
await endWriteSection(fd);
|
|
|
|
// Write betaTauG1
|
|
///////////
|
|
await startWriteSection(fd, 5);
|
|
const nBetaTauG1 = (1 << power);
|
|
for (let i=0; i< nBetaTauG1; i++) {
|
|
await fd.write(buffG1);
|
|
if ((logger)&&((i%100000) == 0)&&i) logger.log("betaTauG1: " + i);
|
|
}
|
|
await endWriteSection(fd);
|
|
|
|
// Write betaG2
|
|
///////////
|
|
await startWriteSection(fd, 6);
|
|
await fd.write(buffG2);
|
|
await endWriteSection(fd);
|
|
|
|
// Contributions
|
|
///////////
|
|
await startWriteSection(fd, 7);
|
|
await fd.writeULE32(0); // 0 Contributions
|
|
await endWriteSection(fd);
|
|
|
|
await fd.close();
|
|
|
|
const firstChallengeHash = calculateFirstChallengeHash(curve, power, logger);
|
|
|
|
if (logger) logger.debug(formatHash(blake2bWasm(64).digest(), "Blank Contribution Hash:"));
|
|
|
|
if (logger) logger.info(formatHash(firstChallengeHash, "First Contribution Hash:"));
|
|
|
|
return firstChallengeHash;
|
|
|
|
}
|
|
|
|
// Format of the outpu
|
|
|
|
async function exportChallenge(pTauFilename, challengeFilename, logger) {
|
|
await blake2bWasm.ready();
|
|
const {fd: fdFrom, sections} = await readBinFile(pTauFilename, "ptau", 1);
|
|
|
|
const {curve, power} = await readPTauHeader(fdFrom, sections);
|
|
|
|
const contributions = await readContributions(fdFrom, curve, sections);
|
|
let lastResponseHash, curChallengeHash;
|
|
if (contributions.length == 0) {
|
|
lastResponseHash = blake2bWasm(64).digest();
|
|
curChallengeHash = calculateFirstChallengeHash(curve, power);
|
|
} else {
|
|
lastResponseHash = contributions[contributions.length-1].responseHash;
|
|
curChallengeHash = contributions[contributions.length-1].nextChallenge;
|
|
}
|
|
|
|
if (logger) logger.info(formatHash(lastResponseHash, "Last Response Hash: "));
|
|
|
|
if (logger) logger.info(formatHash(curChallengeHash, "New Challenge Hash: "));
|
|
|
|
|
|
const fdTo = await createOverride(challengeFilename);
|
|
|
|
const toHash = blake2bWasm(64);
|
|
await fdTo.write(lastResponseHash);
|
|
toHash.update(lastResponseHash);
|
|
|
|
await exportSection(2, "G1", (1 << power) * 2 -1, "tauG1");
|
|
await exportSection(3, "G2", (1 << power) , "tauG2");
|
|
await exportSection(4, "G1", (1 << power) , "alphaTauG1");
|
|
await exportSection(5, "G1", (1 << power) , "betaTauG1");
|
|
await exportSection(6, "G2", 1 , "betaG2");
|
|
|
|
await fdFrom.close();
|
|
await fdTo.close();
|
|
|
|
const calcCurChallengeHash = toHash.digest();
|
|
|
|
if (!hashIsEqual (curChallengeHash, calcCurChallengeHash)) {
|
|
if (logger) logger.info(formatHash(calcCurChallengeHash, "Calc Curret Challenge Hash: "));
|
|
|
|
if (logger) logger.error("PTau file is corrupted. Calculated new challenge hash does not match with the eclared one");
|
|
throw new Error("PTau file is corrupted. Calculated new challenge hash does not match with the eclared one");
|
|
}
|
|
|
|
return curChallengeHash;
|
|
|
|
async function exportSection(sectionId, groupName, nPoints, sectionName) {
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const nPointsChunk = Math.floor((1<<24)/sG);
|
|
|
|
await startReadUniqueSection(fdFrom, sections, sectionId);
|
|
for (let i=0; i< nPoints; i+= nPointsChunk) {
|
|
if (logger) logger.debug(`Exporting ${sectionName}: ${i}/${nPoints}`);
|
|
const n = Math.min(nPoints-i, nPointsChunk);
|
|
let buff;
|
|
buff = await fdFrom.read(n*sG);
|
|
buff = await G.batchLEMtoU(buff);
|
|
await fdTo.write(buff);
|
|
toHash.update(buff);
|
|
}
|
|
await endReadSection(fdFrom);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
async function importResponse(oldPtauFilename, contributionFilename, newPTauFilename, name, importPoints, logger) {
|
|
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd: fdOld, sections} = await readBinFile(oldPtauFilename, "ptau", 1);
|
|
const {curve, power} = await readPTauHeader(fdOld, sections);
|
|
const contributions = await readContributions(fdOld, curve, sections);
|
|
const currentContribution = {};
|
|
|
|
if (name) currentContribution.name = name;
|
|
|
|
const sG1 = curve.F1.n8*2;
|
|
const scG1 = curve.F1.n8; // Compresed size
|
|
const sG2 = curve.F2.n8*2;
|
|
const scG2 = curve.F2.n8; // Compresed size
|
|
|
|
const fdResponse = await readExisting$2(contributionFilename);
|
|
|
|
if (fdResponse.totalSize !=
|
|
64 + // Old Hash
|
|
((1<<power)*2-1)*scG1 +
|
|
(1<<power)*scG2 +
|
|
(1<<power)*scG1 +
|
|
(1<<power)*scG1 +
|
|
scG2 +
|
|
sG1*6 + sG2*3)
|
|
throw new Error("Size of the contribution is invalid");
|
|
|
|
let lastChallengeHash;
|
|
|
|
if (contributions.length>0) {
|
|
lastChallengeHash = contributions[contributions.length-1].nextChallenge;
|
|
} else {
|
|
lastChallengeHash = calculateFirstChallengeHash(curve, power, logger);
|
|
}
|
|
|
|
const fdNew = await createBinFile(newPTauFilename, "ptau", 1, 7);
|
|
await writePTauHeader(fdNew, curve, power);
|
|
|
|
const contributionPreviousHash = await fdResponse.read(64);
|
|
|
|
if(!hashIsEqual(contributionPreviousHash,lastChallengeHash))
|
|
throw new Error("Wrong contribution. this contribution is not based on the previus hash");
|
|
|
|
const hasherResponse = new blake2bWasm(64);
|
|
hasherResponse.update(contributionPreviousHash);
|
|
|
|
const startSections = [];
|
|
let res;
|
|
res = await processSection(fdResponse, fdNew, "G1", 2, (1 << power) * 2 -1, [1], "tauG1");
|
|
currentContribution.tauG1 = res[0];
|
|
res = await processSection(fdResponse, fdNew, "G2", 3, (1 << power) , [1], "tauG2");
|
|
currentContribution.tauG2 = res[0];
|
|
res = await processSection(fdResponse, fdNew, "G1", 4, (1 << power) , [0], "alphaG1");
|
|
currentContribution.alphaG1 = res[0];
|
|
res = await processSection(fdResponse, fdNew, "G1", 5, (1 << power) , [0], "betaG1");
|
|
currentContribution.betaG1 = res[0];
|
|
res = await processSection(fdResponse, fdNew, "G2", 6, 1 , [0], "betaG2");
|
|
currentContribution.betaG2 = res[0];
|
|
|
|
currentContribution.partialHash = hasherResponse.getPartialHash();
|
|
|
|
|
|
const buffKey = await fdResponse.read(curve.F1.n8*2*6+curve.F2.n8*2*3);
|
|
|
|
currentContribution.key = fromPtauPubKeyRpr(buffKey, 0, curve, false);
|
|
|
|
hasherResponse.update(new Uint8Array(buffKey));
|
|
const hashResponse = hasherResponse.digest();
|
|
|
|
if (logger) logger.info(formatHash(hashResponse, "Contribution Response Hash imported: "));
|
|
|
|
const nextChallengeHasher = new blake2bWasm(64);
|
|
nextChallengeHasher.update(hashResponse);
|
|
|
|
await hashSection(fdNew, "G1", 2, (1 << power) * 2 -1, "tauG1", logger);
|
|
await hashSection(fdNew, "G2", 3, (1 << power) , "tauG2", logger);
|
|
await hashSection(fdNew, "G1", 4, (1 << power) , "alphaTauG1", logger);
|
|
await hashSection(fdNew, "G1", 5, (1 << power) , "betaTauG1", logger);
|
|
await hashSection(fdNew, "G2", 6, 1 , "betaG2", logger);
|
|
|
|
currentContribution.nextChallenge = nextChallengeHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(currentContribution.nextChallenge, "Next Challenge Hash: "));
|
|
|
|
contributions.push(currentContribution);
|
|
|
|
await writeContributions(fdNew, curve, contributions);
|
|
|
|
await fdResponse.close();
|
|
await fdNew.close();
|
|
await fdOld.close();
|
|
|
|
return currentContribution.nextChallenge;
|
|
|
|
async function processSection(fdFrom, fdTo, groupName, sectionId, nPoints, singularPointIndexes, sectionName) {
|
|
|
|
const G = curve[groupName];
|
|
const scG = G.F.n8;
|
|
const sG = G.F.n8*2;
|
|
|
|
const singularPoints = [];
|
|
|
|
await startWriteSection(fdTo, sectionId);
|
|
const nPointsChunk = Math.floor((1<<24)/sG);
|
|
|
|
startSections[sectionId] = fdTo.pos;
|
|
|
|
for (let i=0; i< nPoints; i += nPointsChunk) {
|
|
if (logger) logger.debug(`Importing ${sectionName}: ${i}/${nPoints}`);
|
|
const n = Math.min(nPoints-i, nPointsChunk);
|
|
|
|
const buffC = await fdFrom.read(n * scG);
|
|
hasherResponse.update(buffC);
|
|
|
|
const buffLEM = await G.batchCtoLEM(buffC);
|
|
|
|
await fdTo.write(buffLEM);
|
|
for (let j=0; j<singularPointIndexes.length; j++) {
|
|
const sp = singularPointIndexes[j];
|
|
if ((sp >=i) && (sp < i+n)) {
|
|
const P = G.fromRprLEM(buffLEM, (sp-i)*sG);
|
|
singularPoints.push(P);
|
|
}
|
|
}
|
|
}
|
|
|
|
await endWriteSection(fdTo);
|
|
|
|
return singularPoints;
|
|
}
|
|
|
|
|
|
async function hashSection(fdTo, groupName, sectionId, nPoints, sectionName, logger) {
|
|
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const nPointsChunk = Math.floor((1<<24)/sG);
|
|
|
|
const oldPos = fdTo.pos;
|
|
fdTo.pos = startSections[sectionId];
|
|
|
|
for (let i=0; i< nPoints; i += nPointsChunk) {
|
|
if (logger) logger.debug(`Hashing ${sectionName}: ${i}/${nPoints}`);
|
|
const n = Math.min(nPoints-i, nPointsChunk);
|
|
|
|
const buffLEM = await fdTo.read(n * sG);
|
|
|
|
const buffU = await G.batchLEMtoU(buffLEM);
|
|
|
|
nextChallengeHasher.update(buffU);
|
|
}
|
|
|
|
fdTo.pos = oldPos;
|
|
}
|
|
|
|
}
|
|
|
|
const sameRatio$1 = sameRatio;
|
|
|
|
async function verifyContribution(curve, cur, prev, logger) {
|
|
let sr;
|
|
if (cur.type == 1) { // Verify the beacon.
|
|
const beaconKey = keyFromBeacon(curve, prev.nextChallenge, cur.beaconHash, cur.numIterationsExp);
|
|
|
|
if (!curve.G1.eq(cur.key.tau.g1_s, beaconKey.tau.g1_s)) {
|
|
if (logger) logger.error(`BEACON key (tauG1_s) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(cur.key.tau.g1_sx, beaconKey.tau.g1_sx)) {
|
|
if (logger) logger.error(`BEACON key (tauG1_sx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(cur.key.tau.g2_spx, beaconKey.tau.g2_spx)) {
|
|
if (logger) logger.error(`BEACON key (tauG2_spx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
|
|
if (!curve.G1.eq(cur.key.alpha.g1_s, beaconKey.alpha.g1_s)) {
|
|
if (logger) logger.error(`BEACON key (alphaG1_s) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(cur.key.alpha.g1_sx, beaconKey.alpha.g1_sx)) {
|
|
if (logger) logger.error(`BEACON key (alphaG1_sx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(cur.key.alpha.g2_spx, beaconKey.alpha.g2_spx)) {
|
|
if (logger) logger.error(`BEACON key (alphaG2_spx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
|
|
if (!curve.G1.eq(cur.key.beta.g1_s, beaconKey.beta.g1_s)) {
|
|
if (logger) logger.error(`BEACON key (betaG1_s) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(cur.key.beta.g1_sx, beaconKey.beta.g1_sx)) {
|
|
if (logger) logger.error(`BEACON key (betaG1_sx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(cur.key.beta.g2_spx, beaconKey.beta.g2_spx)) {
|
|
if (logger) logger.error(`BEACON key (betaG2_spx) is not generated correctly in challenge #${cur.id} ${cur.name || ""}` );
|
|
return false;
|
|
}
|
|
}
|
|
|
|
cur.key.tau.g2_sp = curve.G2.toAffine(getG2sp(curve, 0, prev.nextChallenge, cur.key.tau.g1_s, cur.key.tau.g1_sx));
|
|
cur.key.alpha.g2_sp = curve.G2.toAffine(getG2sp(curve, 1, prev.nextChallenge, cur.key.alpha.g1_s, cur.key.alpha.g1_sx));
|
|
cur.key.beta.g2_sp = curve.G2.toAffine(getG2sp(curve, 2, prev.nextChallenge, cur.key.beta.g1_s, cur.key.beta.g1_sx));
|
|
|
|
sr = await sameRatio$1(curve, cur.key.tau.g1_s, cur.key.tau.g1_sx, cur.key.tau.g2_sp, cur.key.tau.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID key (tau) in challenge #"+cur.id);
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, cur.key.alpha.g1_s, cur.key.alpha.g1_sx, cur.key.alpha.g2_sp, cur.key.alpha.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID key (alpha) in challenge #"+cur.id);
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, cur.key.beta.g1_s, cur.key.beta.g1_sx, cur.key.beta.g2_sp, cur.key.beta.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID key (beta) in challenge #"+cur.id);
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, prev.tauG1, cur.tauG1, cur.key.tau.g2_sp, cur.key.tau.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID tau*G1. challenge #"+cur.id+" It does not follow the previous contribution");
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, cur.key.tau.g1_s, cur.key.tau.g1_sx, prev.tauG2, cur.tauG2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID tau*G2. challenge #"+cur.id+" It does not follow the previous contribution");
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, prev.alphaG1, cur.alphaG1, cur.key.alpha.g2_sp, cur.key.alpha.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID alpha*G1. challenge #"+cur.id+" It does not follow the previous contribution");
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, prev.betaG1, cur.betaG1, cur.key.beta.g2_sp, cur.key.beta.g2_spx);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID beta*G1. challenge #"+cur.id+" It does not follow the previous contribution");
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$1(curve, cur.key.beta.g1_s, cur.key.beta.g1_sx, prev.betaG2, cur.betaG2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID beta*G2. challenge #"+cur.id+"It does not follow the previous contribution");
|
|
return false;
|
|
}
|
|
|
|
if (logger) logger.info("Powers Of tau file OK!");
|
|
return true;
|
|
}
|
|
|
|
async function verify(tauFilename, logger) {
|
|
let sr;
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd, sections} = await readBinFile(tauFilename, "ptau", 1);
|
|
const {curve, power, ceremonyPower} = await readPTauHeader(fd, sections);
|
|
const contrs = await readContributions(fd, curve, sections);
|
|
|
|
if (logger) logger.debug("power: 2**" + power);
|
|
// Verify Last contribution
|
|
|
|
if (logger) logger.debug("Computing initial contribution hash");
|
|
const initialContribution = {
|
|
tauG1: curve.G1.g,
|
|
tauG2: curve.G2.g,
|
|
alphaG1: curve.G1.g,
|
|
betaG1: curve.G1.g,
|
|
betaG2: curve.G2.g,
|
|
nextChallenge: calculateFirstChallengeHash(curve, ceremonyPower, logger),
|
|
responseHash: blake2bWasm(64).digest()
|
|
};
|
|
|
|
if (contrs.length == 0) {
|
|
if (logger) logger.error("This file has no contribution! It cannot be used in production");
|
|
return false;
|
|
}
|
|
|
|
let prevContr;
|
|
if (contrs.length>1) {
|
|
prevContr = contrs[contrs.length-2];
|
|
} else {
|
|
prevContr = initialContribution;
|
|
}
|
|
const curContr = contrs[contrs.length-1];
|
|
if (logger) logger.debug("Validating contribution #"+contrs[contrs.length-1].id);
|
|
const res = await verifyContribution(curve, curContr, prevContr, logger);
|
|
if (!res) return false;
|
|
|
|
|
|
const nextContributionHasher = blake2bWasm(64);
|
|
nextContributionHasher.update(curContr.responseHash);
|
|
|
|
// Verify powers and compute nextChallengeHash
|
|
|
|
// await test();
|
|
|
|
// Verify Section tau*G1
|
|
if (logger) logger.debug("Verifying powers in tau*G1 section");
|
|
const rTau1 = await processSection(2, "G1", "tauG1", (1 << power)*2-1, [0, 1], logger);
|
|
sr = await sameRatio$1(curve, rTau1.R1, rTau1.R2, curve.G2.g, curContr.tauG2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("tauG1 section. Powers do not match");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(curve.G1.g, rTau1.singularPoints[0])) {
|
|
if (logger) logger.error("First element of tau*G1 section must be the generator");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(curContr.tauG1, rTau1.singularPoints[1])) {
|
|
if (logger) logger.error("Second element of tau*G1 section does not match the one in the contribution section");
|
|
return false;
|
|
}
|
|
|
|
// await test();
|
|
|
|
// Verify Section tau*G2
|
|
if (logger) logger.debug("Verifying powers in tau*G2 section");
|
|
const rTau2 = await processSection(3, "G2", "tauG2", 1 << power, [0, 1], logger);
|
|
sr = await sameRatio$1(curve, curve.G1.g, curContr.tauG1, rTau2.R1, rTau2.R2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("tauG2 section. Powers do not match");
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(curve.G2.g, rTau2.singularPoints[0])) {
|
|
if (logger) logger.error("First element of tau*G2 section must be the generator");
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(curContr.tauG2, rTau2.singularPoints[1])) {
|
|
if (logger) logger.error("Second element of tau*G2 section does not match the one in the contribution section");
|
|
return false;
|
|
}
|
|
|
|
// Verify Section alpha*tau*G1
|
|
if (logger) logger.debug("Verifying powers in alpha*tau*G1 section");
|
|
const rAlphaTauG1 = await processSection(4, "G1", "alphatauG1", 1 << power, [0], logger);
|
|
sr = await sameRatio$1(curve, rAlphaTauG1.R1, rAlphaTauG1.R2, curve.G2.g, curContr.tauG2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("alphaTauG1 section. Powers do not match");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(curContr.alphaG1, rAlphaTauG1.singularPoints[0])) {
|
|
if (logger) logger.error("First element of alpha*tau*G1 section (alpha*G1) does not match the one in the contribution section");
|
|
return false;
|
|
}
|
|
|
|
// Verify Section beta*tau*G1
|
|
if (logger) logger.debug("Verifying powers in beta*tau*G1 section");
|
|
const rBetaTauG1 = await processSection(5, "G1", "betatauG1", 1 << power, [0], logger);
|
|
sr = await sameRatio$1(curve, rBetaTauG1.R1, rBetaTauG1.R2, curve.G2.g, curContr.tauG2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("betaTauG1 section. Powers do not match");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(curContr.betaG1, rBetaTauG1.singularPoints[0])) {
|
|
if (logger) logger.error("First element of beta*tau*G1 section (beta*G1) does not match the one in the contribution section");
|
|
return false;
|
|
}
|
|
|
|
//Verify Beta G2
|
|
const betaG2 = await processSectionBetaG2(logger);
|
|
if (!curve.G2.eq(curContr.betaG2, betaG2)) {
|
|
if (logger) logger.error("betaG2 element in betaG2 section does not match the one in the contribution section");
|
|
return false;
|
|
}
|
|
|
|
|
|
const nextContributionHash = nextContributionHasher.digest();
|
|
|
|
// Check the nextChallengeHash
|
|
if (!hashIsEqual(nextContributionHash,curContr.nextChallenge)) {
|
|
if (logger) logger.error("Hash of the values does not match the next challenge of the last contributor in the contributions section");
|
|
return false;
|
|
}
|
|
|
|
if (logger) logger.info(formatHash(nextContributionHash, "Next challenge hash: "));
|
|
|
|
// Verify Previous contributions
|
|
|
|
printContribution(curContr, prevContr);
|
|
for (let i = contrs.length-2; i>=0; i--) {
|
|
const curContr = contrs[i];
|
|
const prevContr = (i>0) ? contrs[i-1] : initialContribution;
|
|
const res = await verifyContribution(curve, curContr, prevContr, logger);
|
|
if (!res) return false;
|
|
printContribution(curContr, prevContr);
|
|
}
|
|
if (logger) logger.info("-----------------------------------------------------");
|
|
|
|
if ((!sections[12]) || (!sections[13]) || (!sections[14]) || (!sections[15])) {
|
|
if (logger) logger.warn(
|
|
"this file does not contain phase2 precalculated values. Please run: \n" +
|
|
" snarkjs \"powersoftau preparephase2\" to prepare this file to be used in the phase2 ceremony."
|
|
);
|
|
} else {
|
|
let res;
|
|
res = await verifyLagrangeEvaluations("G1", 2, 12, "tauG1", logger);
|
|
if (!res) return false;
|
|
res = await verifyLagrangeEvaluations("G2", 3, 13, "tauG2", logger);
|
|
if (!res) return false;
|
|
res = await verifyLagrangeEvaluations("G1", 4, 14, "alphaTauG1", logger);
|
|
if (!res) return false;
|
|
res = await verifyLagrangeEvaluations("G1", 5, 15, "betaTauG1", logger);
|
|
if (!res) return false;
|
|
}
|
|
|
|
await fd.close();
|
|
|
|
return true;
|
|
|
|
function printContribution(curContr, prevContr) {
|
|
if (!logger) return;
|
|
logger.info("-----------------------------------------------------");
|
|
logger.info(`Contribution #${curContr.id}: ${curContr.name ||""}`);
|
|
|
|
logger.info(formatHash(curContr.nextChallenge, "Next Challenge: "));
|
|
|
|
const buffV = new Uint8Array(curve.G1.F.n8*2*6+curve.G2.F.n8*2*3);
|
|
toPtauPubKeyRpr(buffV, 0, curve, curContr.key, false);
|
|
|
|
const responseHasher = blake2bWasm(64);
|
|
responseHasher.setPartialHash(curContr.partialHash);
|
|
responseHasher.update(buffV);
|
|
const responseHash = responseHasher.digest();
|
|
|
|
logger.info(formatHash(responseHash, "Response Hash:"));
|
|
|
|
logger.info(formatHash(prevContr.nextChallenge, "Response Hash:"));
|
|
|
|
if (curContr.type == 1) {
|
|
logger.info(`Beacon generator: ${byteArray2hex(curContr.beaconHash)}`);
|
|
logger.info(`Beacon iterations Exp: ${curContr.numIterationsExp}`);
|
|
}
|
|
|
|
}
|
|
|
|
async function processSectionBetaG2(logger) {
|
|
const G = curve.G2;
|
|
const sG = G.F.n8*2;
|
|
const buffUv = new Uint8Array(sG);
|
|
|
|
if (!sections[6]) {
|
|
logger.error("File has no BetaG2 section");
|
|
throw new Error("File has no BetaG2 section");
|
|
}
|
|
if (sections[6].length>1) {
|
|
logger.error("File has no BetaG2 section");
|
|
throw new Error("File has more than one GetaG2 section");
|
|
}
|
|
fd.pos = sections[6][0].p;
|
|
|
|
const buff = await fd.read(sG);
|
|
const P = G.fromRprLEM(buff);
|
|
|
|
G.toRprUncompressed(buffUv, 0, P);
|
|
nextContributionHasher.update(buffUv);
|
|
|
|
return P;
|
|
}
|
|
|
|
async function processSection(idSection, groupName, sectionName, nPoints, singularPointIndexes, logger) {
|
|
const MAX_CHUNK_SIZE = 1<<16;
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
await startReadUniqueSection(fd, sections, idSection);
|
|
|
|
const singularPoints = [];
|
|
|
|
let R1 = G.zero;
|
|
let R2 = G.zero;
|
|
|
|
let lastBase = G.zero;
|
|
|
|
for (let i=0; i<nPoints; i += MAX_CHUNK_SIZE) {
|
|
if (logger) logger.debug(`points relations: ${sectionName}: ${i}/${nPoints} `);
|
|
const n = Math.min(nPoints - i, MAX_CHUNK_SIZE);
|
|
const bases = await fd.read(n*sG);
|
|
|
|
const basesU = await G.batchLEMtoU(bases);
|
|
nextContributionHasher.update(basesU);
|
|
|
|
const scalars = new Uint8Array(4*(n-1));
|
|
crypto.randomFillSync(scalars);
|
|
|
|
|
|
if (i>0) {
|
|
const firstBase = G.fromRprLEM(bases, 0);
|
|
const r = crypto.randomBytes(4).readUInt32BE(0, true);
|
|
|
|
R1 = G.add(R1, G.timesScalar(lastBase, r));
|
|
R2 = G.add(R2, G.timesScalar(firstBase, r));
|
|
}
|
|
|
|
const r1 = await G.multiExpAffine(bases.slice(0, (n-1)*sG), scalars);
|
|
const r2 = await G.multiExpAffine(bases.slice(sG), scalars);
|
|
|
|
R1 = G.add(R1, r1);
|
|
R2 = G.add(R2, r2);
|
|
|
|
lastBase = G.fromRprLEM( bases, (n-1)*sG);
|
|
|
|
for (let j=0; j<singularPointIndexes.length; j++) {
|
|
const sp = singularPointIndexes[j];
|
|
if ((sp >=i) && (sp < i+n)) {
|
|
const P = G.fromRprLEM(bases, (sp-i)*sG);
|
|
singularPoints.push(P);
|
|
}
|
|
}
|
|
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
return {
|
|
R1: R1,
|
|
R2: R2,
|
|
singularPoints: singularPoints
|
|
};
|
|
|
|
}
|
|
|
|
async function verifyLagrangeEvaluations(gName, tauSection, lagrangeSection, sectionName, logger) {
|
|
|
|
if (logger) logger.debug(`Verifying phase2 calculated values ${sectionName}...`);
|
|
const G = curve[gName];
|
|
const sG = G.F.n8*2;
|
|
|
|
const seed= new Array(8);
|
|
for (let i=0; i<8; i++) {
|
|
seed[i] = crypto.randomBytes(4).readUInt32BE(0, true);
|
|
}
|
|
|
|
const rng = new ChaCha(seed);
|
|
|
|
|
|
for (let p=0; p<= power; p ++) {
|
|
const res = await verifyPower(p);
|
|
if (!res) return false;
|
|
}
|
|
|
|
return true;
|
|
|
|
async function verifyPower(p) {
|
|
if (logger) logger.debug(`Power ${p}...`);
|
|
const n8r = curve.Fr.n8;
|
|
const nPoints = 1<<p;
|
|
let buff_r = new Uint8Array(nPoints * n8r);
|
|
let buffG;
|
|
|
|
for (let i=0; i<nPoints; i++) {
|
|
const e = curve.Fr.fromRng(rng);
|
|
curve.Fr.toRprLE(buff_r, i*n8r, e);
|
|
}
|
|
|
|
await startReadUniqueSection(fd, sections, tauSection);
|
|
buffG = await fd.read(nPoints*sG);
|
|
await endReadSection(fd, true);
|
|
|
|
const resTau = await G.multiExpAffine(buffG, buff_r);
|
|
|
|
buff_r = await curve.Fr.batchToMontgomery(buff_r);
|
|
buff_r = await curve.Fr.fft(buff_r);
|
|
buff_r = await curve.Fr.batchFromMontgomery(buff_r);
|
|
|
|
await startReadUniqueSection(fd, sections, lagrangeSection);
|
|
fd.pos += sG*((1 << p)-1);
|
|
buffG = await fd.read(nPoints*sG);
|
|
await endReadSection(fd, true);
|
|
|
|
const resLagrange = await G.multiExpAffine(buffG, buff_r);
|
|
|
|
if (!G.eq(resTau, resLagrange)) {
|
|
if (logger) logger.error("Phase2 caclutation does not match with powers of tau");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
This function creates a new section in the fdTo file with id idSection.
|
|
It multiplies the pooints in fdFrom by first, first*inc, first*inc^2, ....
|
|
nPoint Times.
|
|
It also updates the newChallengeHasher with the new points
|
|
*/
|
|
|
|
async function applyKeyToSection(fdOld, sections, fdNew, idSection, curve, groupName, first, inc, sectionName, logger) {
|
|
const MAX_CHUNK_SIZE = 1 << 16;
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const nPoints = sections[idSection][0].size / sG;
|
|
|
|
await startReadUniqueSection(fdOld, sections,idSection );
|
|
await startWriteSection(fdNew, idSection);
|
|
|
|
let t = first;
|
|
for (let i=0; i<nPoints; i += MAX_CHUNK_SIZE) {
|
|
if (logger) logger.debug(`Applying key: ${sectionName}: ${i}/${nPoints}`);
|
|
const n= Math.min(nPoints - i, MAX_CHUNK_SIZE);
|
|
let buff;
|
|
buff = await fdOld.read(n*sG);
|
|
buff = await G.batchApplyKey(buff, t, inc);
|
|
await fdNew.write(buff);
|
|
t = curve.Fr.mul(t, curve.Fr.exp(inc, n));
|
|
}
|
|
|
|
await endWriteSection(fdNew);
|
|
await endReadSection(fdOld);
|
|
}
|
|
|
|
|
|
|
|
async function applyKeyToChallengeSection(fdOld, fdNew, responseHasher, curve, groupName, nPoints, first, inc, formatOut, sectionName, logger) {
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const chunkSize = Math.floor((1<<20) / sG); // 128Mb chunks
|
|
let t = first;
|
|
for (let i=0 ; i<nPoints ; i+= chunkSize) {
|
|
if (logger) logger.debug(`Applying key ${sectionName}: ${i}/${nPoints}`);
|
|
const n= Math.min(nPoints-i, chunkSize );
|
|
const buffInU = await fdOld.read(n * sG);
|
|
const buffInLEM = await G.batchUtoLEM(buffInU);
|
|
const buffOutLEM = await G.batchApplyKey(buffInLEM, t, inc);
|
|
let buffOut;
|
|
if (formatOut == "COMPRESSED") {
|
|
buffOut = await G.batchLEMtoC(buffOutLEM);
|
|
} else {
|
|
buffOut = await G.batchLEMtoU(buffOutLEM);
|
|
}
|
|
|
|
if (responseHasher) responseHasher.update(buffOut);
|
|
await fdNew.write(buffOut);
|
|
t = curve.Fr.mul(t, curve.Fr.exp(inc, n));
|
|
}
|
|
}
|
|
|
|
// Format of the output
|
|
|
|
async function challengeContribute(curve, challengeFilename, responesFileName, entropy, logger) {
|
|
await blake2bWasm.ready();
|
|
|
|
const fdFrom = await readExisting$2(challengeFilename);
|
|
|
|
|
|
const sG1 = curve.F1.n64*8*2;
|
|
const sG2 = curve.F2.n64*8*2;
|
|
const domainSize = (fdFrom.totalSize + sG1 - 64 - sG2) / (4*sG1 + sG2);
|
|
let e = domainSize;
|
|
let power = 0;
|
|
while (e>1) {
|
|
e = e /2;
|
|
power += 1;
|
|
}
|
|
|
|
if (1<<power != domainSize) throw new Error("Invalid file size");
|
|
if (logger) logger.debug("Power to tau size: "+power);
|
|
|
|
const rng = await getRandomRng(entropy);
|
|
|
|
const fdTo = await createOverride(responesFileName);
|
|
|
|
// Calculate the hash
|
|
const challengeHasher = blake2bWasm(64);
|
|
for (let i=0; i<fdFrom.totalSize; i+= fdFrom.pageSize) {
|
|
if (logger) logger.debug(`Hashing challenge ${i}/${fdFrom.totalSize}`);
|
|
const s = Math.min(fdFrom.totalSize - i, fdFrom.pageSize);
|
|
const buff = await fdFrom.read(s);
|
|
challengeHasher.update(buff);
|
|
}
|
|
|
|
const claimedHash = await fdFrom.read(64, 0);
|
|
if (logger) logger.info(formatHash(claimedHash, "Claimed Previous Response Hash: "));
|
|
|
|
const challengeHash = challengeHasher.digest();
|
|
if (logger) logger.info(formatHash(challengeHash, "Current Challenge Hash: "));
|
|
|
|
const key = createPTauKey(curve, challengeHash, rng);
|
|
|
|
if (logger) {
|
|
["tau", "alpha", "beta"].forEach( (k) => {
|
|
logger.debug(k + ".g1_s: " + curve.G1.toString(key[k].g1_s, 16));
|
|
logger.debug(k + ".g1_sx: " + curve.G1.toString(key[k].g1_sx, 16));
|
|
logger.debug(k + ".g2_sp: " + curve.G2.toString(key[k].g2_sp, 16));
|
|
logger.debug(k + ".g2_spx: " + curve.G2.toString(key[k].g2_spx, 16));
|
|
logger.debug("");
|
|
});
|
|
}
|
|
|
|
const responseHasher = blake2bWasm(64);
|
|
|
|
await fdTo.write(challengeHash);
|
|
responseHasher.update(challengeHash);
|
|
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, responseHasher, curve, "G1", (1<<power)*2-1, curve.Fr.one , key.tau.prvKey, "COMPRESSED", "tauG1" , logger );
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, responseHasher, curve, "G2", (1<<power) , curve.Fr.one , key.tau.prvKey, "COMPRESSED", "tauG2" , logger );
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, responseHasher, curve, "G1", (1<<power) , key.alpha.prvKey, key.tau.prvKey, "COMPRESSED", "alphaTauG1", logger );
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, responseHasher, curve, "G1", (1<<power) , key.beta.prvKey , key.tau.prvKey, "COMPRESSED", "betaTauG1" , logger );
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, responseHasher, curve, "G2", 1 , key.beta.prvKey , key.tau.prvKey, "COMPRESSED", "betaTauG2" , logger );
|
|
|
|
// Write and hash key
|
|
const buffKey = new Uint8Array(curve.F1.n8*2*6+curve.F2.n8*2*3);
|
|
toPtauPubKeyRpr(buffKey, 0, curve, key, false);
|
|
await fdTo.write(buffKey);
|
|
responseHasher.update(buffKey);
|
|
const responseHash = responseHasher.digest();
|
|
if (logger) logger.info(formatHash(responseHash, "Contribution Response Hash: "));
|
|
|
|
await fdTo.close();
|
|
await fdFrom.close();
|
|
}
|
|
|
|
async function beacon(oldPtauFilename, newPTauFilename, name, beaconHashStr,numIterationsExp, logger) {
|
|
const beaconHash = hex2ByteArray(beaconHashStr);
|
|
if ( (beaconHash.byteLength == 0)
|
|
|| (beaconHash.byteLength*2 !=beaconHashStr.length))
|
|
{
|
|
if (logger) logger.error("Invalid Beacon Hash. (It must be a valid hexadecimal sequence)");
|
|
return false;
|
|
}
|
|
if (beaconHash.length>=256) {
|
|
if (logger) logger.error("Maximum lenght of beacon hash is 255 bytes");
|
|
return false;
|
|
}
|
|
|
|
numIterationsExp = parseInt(numIterationsExp);
|
|
if ((numIterationsExp<10)||(numIterationsExp>63)) {
|
|
if (logger) logger.error("Invalid numIterationsExp. (Must be between 10 and 63)");
|
|
return false;
|
|
}
|
|
|
|
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd: fdOld, sections} = await readBinFile(oldPtauFilename, "ptau", 1);
|
|
const {curve, power, ceremonyPower} = await readPTauHeader(fdOld, sections);
|
|
if (power != ceremonyPower) {
|
|
if (logger) logger.error("This file has been reduced. You cannot contribute into a reduced file.");
|
|
return false;
|
|
}
|
|
if (sections[12]) {
|
|
if (logger) logger.warn("Contributing into a file that has phase2 calculated. You will have to prepare phase2 again.");
|
|
}
|
|
const contributions = await readContributions(fdOld, curve, sections);
|
|
const curContribution = {
|
|
name: name,
|
|
type: 1, // Beacon
|
|
numIterationsExp: numIterationsExp,
|
|
beaconHash: beaconHash
|
|
};
|
|
|
|
let lastChallengeHash;
|
|
|
|
if (contributions.length>0) {
|
|
lastChallengeHash = contributions[contributions.length-1].nextChallenge;
|
|
} else {
|
|
lastChallengeHash = calculateFirstChallengeHash(curve, power, logger);
|
|
}
|
|
|
|
curContribution.key = keyFromBeacon(curve, lastChallengeHash, beaconHash, numIterationsExp);
|
|
|
|
const responseHasher = new blake2bWasm(64);
|
|
responseHasher.update(lastChallengeHash);
|
|
|
|
const fdNew = await createBinFile(newPTauFilename, "ptau", 1, 7);
|
|
await writePTauHeader(fdNew, curve, power);
|
|
|
|
const startSections = [];
|
|
|
|
let firstPoints;
|
|
firstPoints = await processSection(2, "G1", (1<<power) * 2 -1, curve.Fr.e(1), curContribution.key.tau.prvKey, "tauG1", logger );
|
|
curContribution.tauG1 = firstPoints[1];
|
|
firstPoints = await processSection(3, "G2", (1<<power) , curve.Fr.e(1), curContribution.key.tau.prvKey, "tauG2", logger );
|
|
curContribution.tauG2 = firstPoints[1];
|
|
firstPoints = await processSection(4, "G1", (1<<power) , curContribution.key.alpha.prvKey, curContribution.key.tau.prvKey, "alphaTauG1", logger );
|
|
curContribution.alphaG1 = firstPoints[0];
|
|
firstPoints = await processSection(5, "G1", (1<<power) , curContribution.key.beta.prvKey, curContribution.key.tau.prvKey, "betaTauG1", logger );
|
|
curContribution.betaG1 = firstPoints[0];
|
|
firstPoints = await processSection(6, "G2", 1, curContribution.key.beta.prvKey, curContribution.key.tau.prvKey, "betaTauG2", logger );
|
|
curContribution.betaG2 = firstPoints[0];
|
|
|
|
curContribution.partialHash = responseHasher.getPartialHash();
|
|
|
|
const buffKey = new Uint8Array(curve.F1.n8*2*6+curve.F2.n8*2*3);
|
|
|
|
toPtauPubKeyRpr(buffKey, 0, curve, curContribution.key, false);
|
|
|
|
responseHasher.update(new Uint8Array(buffKey));
|
|
const hashResponse = responseHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(hashResponse, "Contribution Response Hash imported: "));
|
|
|
|
const nextChallengeHasher = new blake2bWasm(64);
|
|
nextChallengeHasher.update(hashResponse);
|
|
|
|
await hashSection(fdNew, "G1", 2, (1 << power) * 2 -1, "tauG1", logger);
|
|
await hashSection(fdNew, "G2", 3, (1 << power) , "tauG2", logger);
|
|
await hashSection(fdNew, "G1", 4, (1 << power) , "alphaTauG1", logger);
|
|
await hashSection(fdNew, "G1", 5, (1 << power) , "betaTauG1", logger);
|
|
await hashSection(fdNew, "G2", 6, 1 , "betaG2", logger);
|
|
|
|
curContribution.nextChallenge = nextChallengeHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(curContribution.nextChallenge, "Next Challenge Hash: "));
|
|
|
|
contributions.push(curContribution);
|
|
|
|
await writeContributions(fdNew, curve, contributions);
|
|
|
|
await fdOld.close();
|
|
await fdNew.close();
|
|
|
|
return hashResponse;
|
|
|
|
async function processSection(sectionId, groupName, NPoints, first, inc, sectionName, logger) {
|
|
const res = [];
|
|
fdOld.pos = sections[sectionId][0].p;
|
|
|
|
await startWriteSection(fdNew, sectionId);
|
|
|
|
startSections[sectionId] = fdNew.pos;
|
|
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const chunkSize = Math.floor((1<<20) / sG); // 128Mb chunks
|
|
let t = first;
|
|
for (let i=0 ; i<NPoints ; i+= chunkSize) {
|
|
if (logger) logger.debug(`applying key${sectionName}: ${i}/${NPoints}`);
|
|
const n= Math.min(NPoints-i, chunkSize );
|
|
const buffIn = await fdOld.read(n * sG);
|
|
const buffOutLEM = await G.batchApplyKey(buffIn, t, inc);
|
|
|
|
/* Code to test the case where we don't have the 2^m-2 component
|
|
if (sectionName== "tauG1") {
|
|
const bz = new Uint8Array(64);
|
|
buffOutLEM.set(bz, 64*((1 << power) - 1 ));
|
|
}
|
|
*/
|
|
|
|
const promiseWrite = fdNew.write(buffOutLEM);
|
|
const buffOutC = await G.batchLEMtoC(buffOutLEM);
|
|
|
|
responseHasher.update(buffOutC);
|
|
await promiseWrite;
|
|
if (i==0) // Return the 2 first points.
|
|
for (let j=0; j<Math.min(2, NPoints); j++)
|
|
res.push(G.fromRprLEM(buffOutLEM, j*sG));
|
|
t = curve.Fr.mul(t, curve.Fr.exp(inc, n));
|
|
}
|
|
|
|
await endWriteSection(fdNew);
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
async function hashSection(fdTo, groupName, sectionId, nPoints, sectionName, logger) {
|
|
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const nPointsChunk = Math.floor((1<<24)/sG);
|
|
|
|
const oldPos = fdTo.pos;
|
|
fdTo.pos = startSections[sectionId];
|
|
|
|
for (let i=0; i< nPoints; i += nPointsChunk) {
|
|
if (logger) logger.debug(`Hashing ${sectionName}: ${i}/${nPoints}`);
|
|
const n = Math.min(nPoints-i, nPointsChunk);
|
|
|
|
const buffLEM = await fdTo.read(n * sG);
|
|
|
|
const buffU = await G.batchLEMtoU(buffLEM);
|
|
|
|
nextChallengeHasher.update(buffU);
|
|
}
|
|
|
|
fdTo.pos = oldPos;
|
|
}
|
|
}
|
|
|
|
// Format of the output
|
|
|
|
async function contribute(oldPtauFilename, newPTauFilename, name, entropy, logger) {
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd: fdOld, sections} = await readBinFile(oldPtauFilename, "ptau", 1);
|
|
const {curve, power, ceremonyPower} = await readPTauHeader(fdOld, sections);
|
|
if (power != ceremonyPower) {
|
|
if (logger) logger.error("This file has been reduced. You cannot contribute into a reduced file.");
|
|
throw new Error("This file has been reduced. You cannot contribute into a reduced file.");
|
|
}
|
|
if (sections[12]) {
|
|
if (logger) logger.warn("WARNING: Contributing into a file that has phase2 calculated. You will have to prepare phase2 again.");
|
|
}
|
|
const contributions = await readContributions(fdOld, curve, sections);
|
|
const curContribution = {
|
|
name: name,
|
|
type: 0, // Beacon
|
|
};
|
|
|
|
let lastChallengeHash;
|
|
|
|
const rng = await getRandomRng(entropy);
|
|
|
|
if (contributions.length>0) {
|
|
lastChallengeHash = contributions[contributions.length-1].nextChallenge;
|
|
} else {
|
|
lastChallengeHash = calculateFirstChallengeHash(curve, power, logger);
|
|
}
|
|
|
|
// Generate a random key
|
|
|
|
|
|
curContribution.key = createPTauKey(curve, lastChallengeHash, rng);
|
|
|
|
|
|
const responseHasher = new blake2bWasm(64);
|
|
responseHasher.update(lastChallengeHash);
|
|
|
|
const fdNew = await createBinFile(newPTauFilename, "ptau", 1, 7);
|
|
await writePTauHeader(fdNew, curve, power);
|
|
|
|
const startSections = [];
|
|
|
|
let firstPoints;
|
|
firstPoints = await processSection(2, "G1", (1<<power) * 2 -1, curve.Fr.e(1), curContribution.key.tau.prvKey, "tauG1" );
|
|
curContribution.tauG1 = firstPoints[1];
|
|
firstPoints = await processSection(3, "G2", (1<<power) , curve.Fr.e(1), curContribution.key.tau.prvKey, "tauG2" );
|
|
curContribution.tauG2 = firstPoints[1];
|
|
firstPoints = await processSection(4, "G1", (1<<power) , curContribution.key.alpha.prvKey, curContribution.key.tau.prvKey, "alphaTauG1" );
|
|
curContribution.alphaG1 = firstPoints[0];
|
|
firstPoints = await processSection(5, "G1", (1<<power) , curContribution.key.beta.prvKey, curContribution.key.tau.prvKey, "betaTauG1" );
|
|
curContribution.betaG1 = firstPoints[0];
|
|
firstPoints = await processSection(6, "G2", 1, curContribution.key.beta.prvKey, curContribution.key.tau.prvKey, "betaTauG2" );
|
|
curContribution.betaG2 = firstPoints[0];
|
|
|
|
curContribution.partialHash = responseHasher.getPartialHash();
|
|
|
|
const buffKey = new Uint8Array(curve.F1.n8*2*6+curve.F2.n8*2*3);
|
|
|
|
toPtauPubKeyRpr(buffKey, 0, curve, curContribution.key, false);
|
|
|
|
responseHasher.update(new Uint8Array(buffKey));
|
|
const hashResponse = responseHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(hashResponse, "Contribution Response Hash imported: "));
|
|
|
|
const nextChallengeHasher = new blake2bWasm(64);
|
|
nextChallengeHasher.update(hashResponse);
|
|
|
|
await hashSection(fdNew, "G1", 2, (1 << power) * 2 -1, "tauG1");
|
|
await hashSection(fdNew, "G2", 3, (1 << power) , "tauG2");
|
|
await hashSection(fdNew, "G1", 4, (1 << power) , "alphaTauG1");
|
|
await hashSection(fdNew, "G1", 5, (1 << power) , "betaTauG1");
|
|
await hashSection(fdNew, "G2", 6, 1 , "betaG2");
|
|
|
|
curContribution.nextChallenge = nextChallengeHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(curContribution.nextChallenge, "Next Challenge Hash: "));
|
|
|
|
contributions.push(curContribution);
|
|
|
|
await writeContributions(fdNew, curve, contributions);
|
|
|
|
await fdOld.close();
|
|
await fdNew.close();
|
|
|
|
return hashResponse;
|
|
|
|
async function processSection(sectionId, groupName, NPoints, first, inc, sectionName) {
|
|
const res = [];
|
|
fdOld.pos = sections[sectionId][0].p;
|
|
|
|
await startWriteSection(fdNew, sectionId);
|
|
|
|
startSections[sectionId] = fdNew.pos;
|
|
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const chunkSize = Math.floor((1<<20) / sG); // 128Mb chunks
|
|
let t = first;
|
|
for (let i=0 ; i<NPoints ; i+= chunkSize) {
|
|
if (logger) logger.debug(`processing: ${sectionName}: ${i}/${NPoints}`);
|
|
const n= Math.min(NPoints-i, chunkSize );
|
|
const buffIn = await fdOld.read(n * sG);
|
|
const buffOutLEM = await G.batchApplyKey(buffIn, t, inc);
|
|
|
|
/* Code to test the case where we don't have the 2^m-2 component
|
|
if (sectionName== "tauG1") {
|
|
const bz = new Uint8Array(64);
|
|
buffOutLEM.set(bz, 64*((1 << power) - 1 ));
|
|
}
|
|
*/
|
|
|
|
const promiseWrite = fdNew.write(buffOutLEM);
|
|
const buffOutC = await G.batchLEMtoC(buffOutLEM);
|
|
|
|
responseHasher.update(buffOutC);
|
|
await promiseWrite;
|
|
if (i==0) // Return the 2 first points.
|
|
for (let j=0; j<Math.min(2, NPoints); j++)
|
|
res.push(G.fromRprLEM(buffOutLEM, j*sG));
|
|
t = curve.Fr.mul(t, curve.Fr.exp(inc, n));
|
|
}
|
|
|
|
await endWriteSection(fdNew);
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
async function hashSection(fdTo, groupName, sectionId, nPoints, sectionName) {
|
|
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
const nPointsChunk = Math.floor((1<<24)/sG);
|
|
|
|
const oldPos = fdTo.pos;
|
|
fdTo.pos = startSections[sectionId];
|
|
|
|
for (let i=0; i< nPoints; i += nPointsChunk) {
|
|
if ((logger)&&i) logger.debug(`Hashing ${sectionName}: ` + i);
|
|
const n = Math.min(nPoints-i, nPointsChunk);
|
|
|
|
const buffLEM = await fdTo.read(n * sG);
|
|
|
|
const buffU = await G.batchLEMtoU(buffLEM);
|
|
|
|
nextChallengeHasher.update(buffU);
|
|
}
|
|
|
|
fdTo.pos = oldPos;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
async function preparePhase2(oldPtauFilename, newPTauFilename, logger) {
|
|
|
|
const {fd: fdOld, sections} = await readBinFile(oldPtauFilename, "ptau", 1);
|
|
const {curve, power} = await readPTauHeader(fdOld, sections);
|
|
|
|
const fdNew = await createBinFile(newPTauFilename, "ptau", 1, 11);
|
|
await writePTauHeader(fdNew, curve, power);
|
|
|
|
// const fdTmp = await fastFile.createOverride(newPTauFilename+ ".tmp");
|
|
const fdTmp = await createOverride({type: "bigMem"});
|
|
|
|
await copySection(fdOld, sections, fdNew, 2);
|
|
await copySection(fdOld, sections, fdNew, 3);
|
|
await copySection(fdOld, sections, fdNew, 4);
|
|
await copySection(fdOld, sections, fdNew, 5);
|
|
await copySection(fdOld, sections, fdNew, 6);
|
|
await copySection(fdOld, sections, fdNew, 7);
|
|
|
|
await processSection(2, 12, "G1", "tauG1" );
|
|
await processSection(3, 13, "G2", "tauG2" );
|
|
await processSection(4, 14, "G1", "alphaTauG1" );
|
|
await processSection(5, 15, "G1", "betaTauG1" );
|
|
|
|
await fdOld.close();
|
|
await fdNew.close();
|
|
await fdTmp.close();
|
|
|
|
// await fs.promises.unlink(newPTauFilename+ ".tmp");
|
|
|
|
return;
|
|
|
|
async function processSection(oldSectionId, newSectionId, Gstr, sectionName) {
|
|
const CHUNKPOW = 16;
|
|
if (logger) logger.debug("Starting section: "+sectionName);
|
|
|
|
await startWriteSection(fdNew, newSectionId);
|
|
|
|
for (let p=0; p<=power; p++) {
|
|
await processSectionPower(p);
|
|
}
|
|
|
|
await endWriteSection(fdNew);
|
|
|
|
async function processSectionPower(p) {
|
|
const chunkPower = p > CHUNKPOW ? CHUNKPOW : p;
|
|
const pointsPerChunk = 1<<chunkPower;
|
|
const nPoints = 1 << p;
|
|
const nChunks = nPoints / pointsPerChunk;
|
|
|
|
const G = curve[Gstr];
|
|
const Fr = curve.Fr;
|
|
const sGin = G.F.n8*2;
|
|
const sGmid = G.F.n8*3;
|
|
|
|
await startReadUniqueSection(fdOld, sections, oldSectionId);
|
|
// Build the initial tmp Buff
|
|
fdTmp.pos =0;
|
|
for (let i=0; i<nChunks; i++) {
|
|
let buff;
|
|
if (logger) logger.debug(`${sectionName} Prepare ${i+1}/${nChunks}`);
|
|
buff = await fdOld.read(pointsPerChunk*sGin);
|
|
buff = await G.batchToJacobian(buff);
|
|
for (let j=0; j<pointsPerChunk; j++) {
|
|
fdTmp.pos = bitReverse$1(i*pointsPerChunk+j, p)*sGmid;
|
|
await fdTmp.write(buff.slice(j*sGmid, (j+1)*sGmid ));
|
|
}
|
|
}
|
|
await endReadSection(fdOld, true);
|
|
|
|
for (let j=0; j<nChunks; j++) {
|
|
if (logger) logger.debug(`${sectionName} ${p} FFTMix ${j+1}/${nChunks}`);
|
|
let buff;
|
|
fdTmp.pos = (j*pointsPerChunk)*sGmid;
|
|
buff = await fdTmp.read(pointsPerChunk*sGmid);
|
|
buff = await G.fftMix(buff);
|
|
fdTmp.pos = (j*pointsPerChunk)*sGmid;
|
|
await fdTmp.write(buff);
|
|
}
|
|
for (let i=chunkPower+1; i<= p; i++) {
|
|
const nGroups = 1 << (p - i);
|
|
const nChunksPerGroup = nChunks / nGroups;
|
|
for (let j=0; j<nGroups; j++) {
|
|
for (let k=0; k <nChunksPerGroup/2; k++) {
|
|
if (logger) logger.debug(`${sectionName} ${i}/${p} FFTJoin ${j+1}/${nGroups} ${k}/${nChunksPerGroup/2}`);
|
|
const first = Fr.exp( Fr.w[i], k*pointsPerChunk);
|
|
const inc = Fr.w[i];
|
|
const o1 = j*nChunksPerGroup + k;
|
|
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
|
|
|
|
let buff1, buff2;
|
|
fdTmp.pos = o1*pointsPerChunk*sGmid;
|
|
buff1 = await fdTmp.read(pointsPerChunk * sGmid);
|
|
fdTmp.pos = o2*pointsPerChunk*sGmid;
|
|
buff2 = await fdTmp.read(pointsPerChunk * sGmid);
|
|
|
|
[buff1, buff2] = await G.fftJoin(buff1, buff2, first, inc);
|
|
|
|
fdTmp.pos = o1*pointsPerChunk*sGmid;
|
|
await fdTmp.write(buff1);
|
|
fdTmp.pos = o2*pointsPerChunk*sGmid;
|
|
await fdTmp.write(buff2);
|
|
}
|
|
}
|
|
}
|
|
await finalInverse(p);
|
|
}
|
|
async function finalInverse(p) {
|
|
const G = curve[Gstr];
|
|
const Fr = curve.Fr;
|
|
const sGmid = G.F.n8*3;
|
|
const sGout = G.F.n8*2;
|
|
|
|
const chunkPower = p > CHUNKPOW ? CHUNKPOW : p;
|
|
const pointsPerChunk = 1<<chunkPower;
|
|
const nPoints = 1 << p;
|
|
const nChunks = nPoints / pointsPerChunk;
|
|
|
|
const o = fdNew.pos;
|
|
fdTmp.pos = 0;
|
|
const factor = Fr.inv( Fr.e( 1<< p));
|
|
for (let i=0; i<nChunks; i++) {
|
|
if (logger) logger.debug(`${sectionName} ${p} FFTFinal ${i+1}/${nChunks}`);
|
|
let buff;
|
|
buff = await fdTmp.read(pointsPerChunk * sGmid);
|
|
buff = await G.fftFinal(buff, factor);
|
|
|
|
if ( i == 0) {
|
|
fdNew.pos = o;
|
|
await fdNew.write(buff.slice((pointsPerChunk-1)*sGout));
|
|
fdNew.pos = o + ((nChunks - 1)*pointsPerChunk + 1) * sGout;
|
|
await fdNew.write(buff.slice(0, (pointsPerChunk-1)*sGout));
|
|
} else {
|
|
fdNew.pos = o + ((nChunks - 1 - i)*pointsPerChunk + 1) * sGout;
|
|
await fdNew.write(buff);
|
|
}
|
|
}
|
|
fdNew.pos = o + nChunks * pointsPerChunk * sGout;
|
|
}
|
|
}
|
|
}
|
|
|
|
async function exportJson(pTauFilename, verbose) {
|
|
const {fd, sections} = await readBinFile(pTauFilename, "ptau", 1);
|
|
|
|
const {curve, power} = await readPTauHeader(fd, sections);
|
|
|
|
const pTau = {};
|
|
pTau.q = curve.q;
|
|
pTau.power = power;
|
|
pTau.contributions = await readContributions(fd, curve, sections);
|
|
|
|
pTau.tauG1 = await exportSection(2, "G1", (1 << power)*2 -1, "tauG1");
|
|
pTau.tauG2 = await exportSection(3, "G2", (1 << power), "tauG2");
|
|
pTau.alphaTauG1 = await exportSection(4, "G1", (1 << power), "alphaTauG1");
|
|
pTau.betaTauG1 = await exportSection(5, "G1", (1 << power), "betaTauG1");
|
|
pTau.betaG2 = await exportSection(6, "G2", 1, "betaG2");
|
|
|
|
pTau.lTauG1 = await exportLagrange(12, "G1", "lTauG1");
|
|
pTau.lTauG2 = await exportLagrange(13, "G2", "lTauG2");
|
|
pTau.lAlphaTauG1 = await exportLagrange(14, "G1", "lAlphaTauG2");
|
|
pTau.lBetaTauG1 = await exportLagrange(15, "G1", "lBetaTauG2");
|
|
|
|
await fd.close();
|
|
|
|
return pTau;
|
|
|
|
|
|
|
|
async function exportSection(sectionId, groupName, nPoints, sectionName) {
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
|
|
const res = [];
|
|
await startReadUniqueSection(fd, sections, sectionId);
|
|
for (let i=0; i< nPoints; i++) {
|
|
if ((verbose)&&i&&(i%10000 == 0)) console.log(`${sectionName}: ` + i);
|
|
const buff = await fd.read(sG);
|
|
res.push(G.fromRprLEM(buff, 0));
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
return res;
|
|
}
|
|
|
|
async function exportLagrange(sectionId, groupName, sectionName) {
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
|
|
const res = [];
|
|
await startReadUniqueSection(fd, sections, sectionId);
|
|
for (let p=0; p<=power; p++) {
|
|
if (verbose) console.log(`${sectionName}: Power: ${p}`);
|
|
res[p] = [];
|
|
const nPoints = (1<<p);
|
|
for (let i=0; i<nPoints; i++) {
|
|
if ((verbose)&&i&&(i%10000 == 0)) console.log(`${sectionName}: ${i}/${nPoints}`);
|
|
const buff = await fd.read(sG);
|
|
res[p].push(G.fromRprLEM(buff, 0));
|
|
}
|
|
}
|
|
await endReadSection(fd);
|
|
return res;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
var powersoftau = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
newAccumulator: newAccumulator,
|
|
exportChallenge: exportChallenge,
|
|
importResponse: importResponse,
|
|
verify: verify,
|
|
challengeContribute: challengeContribute,
|
|
beacon: beacon,
|
|
contribute: contribute,
|
|
preparePhase2: preparePhase2,
|
|
exportJson: exportJson
|
|
});
|
|
|
|
function r1csPrint(r1cs, syms, logger) {
|
|
for (let i=0; i<r1cs.constraints.length; i++) {
|
|
printCostraint(r1cs.constraints[i]);
|
|
}
|
|
function printCostraint(c) {
|
|
const lc2str = (lc) => {
|
|
let S = "";
|
|
const keys = Object.keys(lc);
|
|
keys.forEach( (k) => {
|
|
let name = syms.varIdx2Name[k];
|
|
if (name == "one") name = "";
|
|
|
|
let vs = r1cs.Fr.toString(lc[k]);
|
|
if (vs == "1") vs = ""; // Do not show ones
|
|
if (vs == "-1") vs = "-"; // Do not show ones
|
|
if ((S!="")&&(vs[0]!="-")) vs = "+"+vs;
|
|
if (S!="") vs = " "+vs;
|
|
S= S + vs + name;
|
|
});
|
|
return S;
|
|
};
|
|
const S = `[ ${lc2str(c[0])} ] * [ ${lc2str(c[1])} ] - [ ${lc2str(c[2])} ] = 0`;
|
|
if (logger) logger.info(S);
|
|
}
|
|
|
|
}
|
|
|
|
/* global BigInt */
|
|
const hexLen$2 = [ 0, 1, 2, 2, 3, 3, 3, 3, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4];
|
|
|
|
function fromString$6(s, radix) {
|
|
if ((!radix)||(radix==10)) {
|
|
return BigInt(s);
|
|
} else if (radix==16) {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInt(s);
|
|
} else {
|
|
return BigInt("0x"+s);
|
|
}
|
|
}
|
|
}
|
|
|
|
const e$6 = fromString$6;
|
|
|
|
function fromArray$6(a, radix) {
|
|
let acc =0n;
|
|
radix = BigInt(radix);
|
|
for (let i=0; i<a.length; i++) {
|
|
acc = acc*radix + BigInt(a[i]);
|
|
}
|
|
return acc;
|
|
}
|
|
|
|
function bitLength$6(a) {
|
|
const aS =a.toString(16);
|
|
return (aS.length-1)*4 +hexLen$2[parseInt(aS[0], 16)];
|
|
}
|
|
|
|
function isNegative$6(a) {
|
|
return BigInt(a) < 0n;
|
|
}
|
|
|
|
function isZero$6(a) {
|
|
return !a;
|
|
}
|
|
|
|
function shiftLeft$6(a, n) {
|
|
return BigInt(a) << BigInt(n);
|
|
}
|
|
|
|
function shiftRight$6(a, n) {
|
|
return BigInt(a) >> BigInt(n);
|
|
}
|
|
|
|
const shl$6 = shiftLeft$6;
|
|
const shr$6 = shiftRight$6;
|
|
|
|
function isOdd$6(a) {
|
|
return (BigInt(a) & 1n) == 1n;
|
|
}
|
|
|
|
|
|
function naf$6(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
const z = 2 - Number(E % 4n);
|
|
res.push( z );
|
|
E = E - BigInt(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function bits$6(n) {
|
|
let E = BigInt(n);
|
|
const res = [];
|
|
while (E) {
|
|
if (E & 1n) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E >> 1n;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber$6(s) {
|
|
if (s>BigInt(Number.MAX_SAFE_INTEGER )) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return Number(s);
|
|
}
|
|
|
|
function toArray$6(s, radix) {
|
|
const res = [];
|
|
let rem = BigInt(s);
|
|
radix = BigInt(radix);
|
|
while (rem) {
|
|
res.unshift( Number(rem % radix));
|
|
rem = rem / radix;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function add$6(a, b) {
|
|
return BigInt(a) + BigInt(b);
|
|
}
|
|
|
|
function sub$6(a, b) {
|
|
return BigInt(a) - BigInt(b);
|
|
}
|
|
|
|
function neg$6(a) {
|
|
return -BigInt(a);
|
|
}
|
|
|
|
function mul$6(a, b) {
|
|
return BigInt(a) * BigInt(b);
|
|
}
|
|
|
|
function square$6(a) {
|
|
return BigInt(a) * BigInt(a);
|
|
}
|
|
|
|
function pow$6(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function exp$8(a, b) {
|
|
return BigInt(a) ** BigInt(b);
|
|
}
|
|
|
|
function abs$6(a) {
|
|
return BigInt(a) >= 0 ? BigInt(a) : -BigInt(a);
|
|
}
|
|
|
|
function div$6(a, b) {
|
|
return BigInt(a) / BigInt(b);
|
|
}
|
|
|
|
function mod$6(a, b) {
|
|
return BigInt(a) % BigInt(b);
|
|
}
|
|
|
|
function eq$6(a, b) {
|
|
return BigInt(a) == BigInt(b);
|
|
}
|
|
|
|
function neq$6(a, b) {
|
|
return BigInt(a) != BigInt(b);
|
|
}
|
|
|
|
function lt$6(a, b) {
|
|
return BigInt(a) < BigInt(b);
|
|
}
|
|
|
|
function gt$6(a, b) {
|
|
return BigInt(a) > BigInt(b);
|
|
}
|
|
|
|
function leq$6(a, b) {
|
|
return BigInt(a) <= BigInt(b);
|
|
}
|
|
|
|
function geq$6(a, b) {
|
|
return BigInt(a) >= BigInt(b);
|
|
}
|
|
|
|
function band$6(a, b) {
|
|
return BigInt(a) & BigInt(b);
|
|
}
|
|
|
|
function bor$6(a, b) {
|
|
return BigInt(a) | BigInt(b);
|
|
}
|
|
|
|
function bxor$6(a, b) {
|
|
return BigInt(a) ^ BigInt(b);
|
|
}
|
|
|
|
function land$6(a, b) {
|
|
return BigInt(a) && BigInt(b);
|
|
}
|
|
|
|
function lor$6(a, b) {
|
|
return BigInt(a) || BigInt(b);
|
|
}
|
|
|
|
function lnot$6(a) {
|
|
return !BigInt(a);
|
|
}
|
|
|
|
var Scalar_native$2 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString$6,
|
|
e: e$6,
|
|
fromArray: fromArray$6,
|
|
bitLength: bitLength$6,
|
|
isNegative: isNegative$6,
|
|
isZero: isZero$6,
|
|
shiftLeft: shiftLeft$6,
|
|
shiftRight: shiftRight$6,
|
|
shl: shl$6,
|
|
shr: shr$6,
|
|
isOdd: isOdd$6,
|
|
naf: naf$6,
|
|
bits: bits$6,
|
|
toNumber: toNumber$6,
|
|
toArray: toArray$6,
|
|
add: add$6,
|
|
sub: sub$6,
|
|
neg: neg$6,
|
|
mul: mul$6,
|
|
square: square$6,
|
|
pow: pow$6,
|
|
exp: exp$8,
|
|
abs: abs$6,
|
|
div: div$6,
|
|
mod: mod$6,
|
|
eq: eq$6,
|
|
neq: neq$6,
|
|
lt: lt$6,
|
|
gt: gt$6,
|
|
leq: leq$6,
|
|
geq: geq$6,
|
|
band: band$6,
|
|
bor: bor$6,
|
|
bxor: bxor$6,
|
|
land: land$6,
|
|
lor: lor$6,
|
|
lnot: lnot$6
|
|
});
|
|
|
|
function fromString$7(s, radix) {
|
|
if (typeof s == "string") {
|
|
if (s.slice(0,2) == "0x") {
|
|
return BigInteger(s.slice(2), 16);
|
|
} else {
|
|
return BigInteger(s,radix);
|
|
}
|
|
} else {
|
|
return BigInteger(s, radix);
|
|
}
|
|
}
|
|
|
|
const e$7 = fromString$7;
|
|
|
|
function fromArray$7(a, radix) {
|
|
return BigInteger.fromArray(a, radix);
|
|
}
|
|
|
|
function bitLength$7(a) {
|
|
return BigInteger(a).bitLength();
|
|
}
|
|
|
|
function isNegative$7(a) {
|
|
return BigInteger(a).isNegative();
|
|
}
|
|
|
|
function isZero$7(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
function shiftLeft$7(a, n) {
|
|
return BigInteger(a).shiftLeft(n);
|
|
}
|
|
|
|
function shiftRight$7(a, n) {
|
|
return BigInteger(a).shiftRight(n);
|
|
}
|
|
|
|
const shl$7 = shiftLeft$7;
|
|
const shr$7 = shiftRight$7;
|
|
|
|
function isOdd$7(a) {
|
|
return BigInteger(a).isOdd();
|
|
}
|
|
|
|
|
|
function naf$7(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
const z = 2 - E.mod(4).toJSNumber();
|
|
res.push( z );
|
|
E = E.minus(z);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function bits$7(n) {
|
|
let E = BigInteger(n);
|
|
const res = [];
|
|
while (E.gt(BigInteger.zero)) {
|
|
if (E.isOdd()) {
|
|
res.push(1);
|
|
} else {
|
|
res.push( 0 );
|
|
}
|
|
E = E.shiftRight(1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function toNumber$7(s) {
|
|
if (!s.lt(BigInteger("9007199254740992", 10))) {
|
|
throw new Error("Number too big");
|
|
}
|
|
return s.toJSNumber();
|
|
}
|
|
|
|
function toArray$7(s, radix) {
|
|
return BigInteger(s).toArray(radix);
|
|
}
|
|
|
|
function add$7(a, b) {
|
|
return BigInteger(a).add(BigInteger(b));
|
|
}
|
|
|
|
function sub$7(a, b) {
|
|
return BigInteger(a).minus(BigInteger(b));
|
|
}
|
|
|
|
function neg$7(a) {
|
|
return BigInteger.zero.minus(BigInteger(a));
|
|
}
|
|
|
|
function mul$7(a, b) {
|
|
return BigInteger(a).times(BigInteger(b));
|
|
}
|
|
|
|
function square$7(a) {
|
|
return BigInteger(a).square();
|
|
}
|
|
|
|
function pow$7(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function exp$9(a, b) {
|
|
return BigInteger(a).pow(BigInteger(b));
|
|
}
|
|
|
|
function abs$7(a) {
|
|
return BigInteger(a).abs();
|
|
}
|
|
|
|
function div$7(a, b) {
|
|
return BigInteger(a).divide(BigInteger(b));
|
|
}
|
|
|
|
function mod$7(a, b) {
|
|
return BigInteger(a).mod(BigInteger(b));
|
|
}
|
|
|
|
function eq$7(a, b) {
|
|
return BigInteger(a).eq(BigInteger(b));
|
|
}
|
|
|
|
function neq$7(a, b) {
|
|
return BigInteger(a).neq(BigInteger(b));
|
|
}
|
|
|
|
function lt$7(a, b) {
|
|
return BigInteger(a).lt(BigInteger(b));
|
|
}
|
|
|
|
function gt$7(a, b) {
|
|
return BigInteger(a).gt(BigInteger(b));
|
|
}
|
|
|
|
function leq$7(a, b) {
|
|
return BigInteger(a).leq(BigInteger(b));
|
|
}
|
|
|
|
function geq$7(a, b) {
|
|
return BigInteger(a).geq(BigInteger(b));
|
|
}
|
|
|
|
function band$7(a, b) {
|
|
return BigInteger(a).and(BigInteger(b));
|
|
}
|
|
|
|
function bor$7(a, b) {
|
|
return BigInteger(a).or(BigInteger(b));
|
|
}
|
|
|
|
function bxor$7(a, b) {
|
|
return BigInteger(a).xor(BigInteger(b));
|
|
}
|
|
|
|
function land$7(a, b) {
|
|
return (!BigInteger(a).isZero()) && (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lor$7(a, b) {
|
|
return (!BigInteger(a).isZero()) || (!BigInteger(b).isZero());
|
|
}
|
|
|
|
function lnot$7(a) {
|
|
return BigInteger(a).isZero();
|
|
}
|
|
|
|
var Scalar_bigint$2 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
fromString: fromString$7,
|
|
e: e$7,
|
|
fromArray: fromArray$7,
|
|
bitLength: bitLength$7,
|
|
isNegative: isNegative$7,
|
|
isZero: isZero$7,
|
|
shiftLeft: shiftLeft$7,
|
|
shiftRight: shiftRight$7,
|
|
shl: shl$7,
|
|
shr: shr$7,
|
|
isOdd: isOdd$7,
|
|
naf: naf$7,
|
|
bits: bits$7,
|
|
toNumber: toNumber$7,
|
|
toArray: toArray$7,
|
|
add: add$7,
|
|
sub: sub$7,
|
|
neg: neg$7,
|
|
mul: mul$7,
|
|
square: square$7,
|
|
pow: pow$7,
|
|
exp: exp$9,
|
|
abs: abs$7,
|
|
div: div$7,
|
|
mod: mod$7,
|
|
eq: eq$7,
|
|
neq: neq$7,
|
|
lt: lt$7,
|
|
gt: gt$7,
|
|
leq: leq$7,
|
|
geq: geq$7,
|
|
band: band$7,
|
|
bor: bor$7,
|
|
bxor: bxor$7,
|
|
land: land$7,
|
|
lor: lor$7,
|
|
lnot: lnot$7
|
|
});
|
|
|
|
const supportsNativeBigInt$6 = typeof BigInt === "function";
|
|
|
|
let Scalar$5 = {};
|
|
if (supportsNativeBigInt$6) {
|
|
Object.assign(Scalar$5, Scalar_native$2);
|
|
} else {
|
|
Object.assign(Scalar$5, Scalar_bigint$2);
|
|
}
|
|
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
Scalar$5.toRprLE = function rprBE(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v[i] = parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16);
|
|
for (let i=l; i<v.length; i++) v[i] = 0;
|
|
for (let i=v.length*4; i<n8; i++) buff[i] = Scalar$5.toNumber(Scalar$5.band(Scalar$5.shiftRight(e, i*8), 0xFF));
|
|
};
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
Scalar$5.toRprBE = function rprLEM(buff, o, e, n8) {
|
|
const s = "0000000" + e.toString(16);
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
|
|
for (let i=0; i<l; i++) v.setUint32(n8-i*4 -4, parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16), false);
|
|
for (let i=0; i<n8/4-l; i++) v[i] = 0;
|
|
};
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
Scalar$5.fromRprLE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new Uint32Array(buff.buffer, o, n8/4);
|
|
const a = new Array(n8/4);
|
|
v.forEach( (ch,i) => a[a.length-i-1] = ch.toString(16).padStart(8,"0") );
|
|
return Scalar$5.fromString(a.join(""), 16);
|
|
};
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
Scalar$5.fromRprBE = function rprLEM(buff, o, n8) {
|
|
n8 = n8 || buff.byteLength;
|
|
const v = new DataView(buff.buffer, o, n8);
|
|
const a = new Array(n8/4);
|
|
for (let i=0; i<n8/4; i++) {
|
|
a[i] = v.getUint32(i*4, false).toString(16).padStart(8, "0");
|
|
}
|
|
return Scalar$5.fromString(a.join(""), 16);
|
|
};
|
|
|
|
Scalar$5.toString = function toString(a, radix) {
|
|
return a.toString(radix);
|
|
};
|
|
|
|
Scalar$5.toLEBuff = function toLEBuff(a) {
|
|
const buff = new Uint8Array(Math.floor((Scalar$5.bitLength(a) - 1) / 8) +1);
|
|
Scalar$5.toRprLE(buff, 0, a, buff.byteLength);
|
|
return buff;
|
|
};
|
|
|
|
|
|
Scalar$5.zero = Scalar$5.e(0);
|
|
Scalar$5.one = Scalar$5.e(1);
|
|
|
|
let {
|
|
toRprLE: toRprLE$2,
|
|
toRprBE: toRprBE$2,
|
|
fromRprLE: fromRprLE$2,
|
|
fromRprBE: fromRprBE$2,
|
|
toString: toString$2,
|
|
toLEBuff: toLEBuff$2,
|
|
zero: zero$2,
|
|
one: one$2,
|
|
fromString: fromString$8,
|
|
e: e$8,
|
|
fromArray: fromArray$8,
|
|
bitLength: bitLength$8,
|
|
isNegative: isNegative$8,
|
|
isZero: isZero$8,
|
|
shiftLeft: shiftLeft$8,
|
|
shiftRight: shiftRight$8,
|
|
shl: shl$8,
|
|
shr: shr$8,
|
|
isOdd: isOdd$8,
|
|
naf: naf$8,
|
|
bits: bits$8,
|
|
toNumber: toNumber$8,
|
|
toArray: toArray$8,
|
|
add: add$8,
|
|
sub: sub$8,
|
|
neg: neg$8,
|
|
mul: mul$8,
|
|
square: square$8,
|
|
pow: pow$8,
|
|
exp: exp$a,
|
|
abs: abs$8,
|
|
div: div$8,
|
|
mod: mod$8,
|
|
eq: eq$8,
|
|
neq: neq$8,
|
|
lt: lt$8,
|
|
gt: gt$8,
|
|
leq: leq$8,
|
|
geq: geq$8,
|
|
band: band$8,
|
|
bor: bor$8,
|
|
bxor: bxor$8,
|
|
land: land$8,
|
|
lor: lor$8,
|
|
lnot: lnot$8,
|
|
} = Scalar$5;
|
|
|
|
var _Scalar$2 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
toRprLE: toRprLE$2,
|
|
toRprBE: toRprBE$2,
|
|
fromRprLE: fromRprLE$2,
|
|
fromRprBE: fromRprBE$2,
|
|
toString: toString$2,
|
|
toLEBuff: toLEBuff$2,
|
|
zero: zero$2,
|
|
one: one$2,
|
|
fromString: fromString$8,
|
|
e: e$8,
|
|
fromArray: fromArray$8,
|
|
bitLength: bitLength$8,
|
|
isNegative: isNegative$8,
|
|
isZero: isZero$8,
|
|
shiftLeft: shiftLeft$8,
|
|
shiftRight: shiftRight$8,
|
|
shl: shl$8,
|
|
shr: shr$8,
|
|
isOdd: isOdd$8,
|
|
naf: naf$8,
|
|
bits: bits$8,
|
|
toNumber: toNumber$8,
|
|
toArray: toArray$8,
|
|
add: add$8,
|
|
sub: sub$8,
|
|
neg: neg$8,
|
|
mul: mul$8,
|
|
square: square$8,
|
|
pow: pow$8,
|
|
exp: exp$a,
|
|
abs: abs$8,
|
|
div: div$8,
|
|
mod: mod$8,
|
|
eq: eq$8,
|
|
neq: neq$8,
|
|
lt: lt$8,
|
|
gt: gt$8,
|
|
leq: leq$8,
|
|
geq: geq$8,
|
|
band: band$8,
|
|
bor: bor$8,
|
|
bxor: bxor$8,
|
|
land: land$8,
|
|
lor: lor$8,
|
|
lnot: lnot$8
|
|
});
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
const _revTable$5 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$5[i] = _revSlow$5(i, 8);
|
|
}
|
|
|
|
function _revSlow$5(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/*
|
|
Copyright 2018 0kims association.
|
|
|
|
This file is part of snarkjs.
|
|
|
|
snarkjs is a free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
any later version.
|
|
|
|
snarkjs is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
snarkjs. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
/*
|
|
exports.mulScalar = (F, base, e) =>{
|
|
let res = F.zero;
|
|
let rem = bigInt(e);
|
|
let exp = base;
|
|
|
|
while (! rem.eq(bigInt.zero)) {
|
|
if (rem.and(bigInt.one).eq(bigInt.one)) {
|
|
res = F.add(res, exp);
|
|
}
|
|
exp = F.double(exp);
|
|
rem = rem.shiftRight(1);
|
|
}
|
|
|
|
return res;
|
|
};
|
|
*/
|
|
|
|
|
|
function exp$b(F, base, e) {
|
|
|
|
if (isZero$8(e)) return F.one;
|
|
|
|
const n = bits$8(e);
|
|
|
|
if (n.legth==0) return F.one;
|
|
|
|
let res = base;
|
|
|
|
for (let i=n.length-2; i>=0; i--) {
|
|
|
|
res = F.square(res);
|
|
|
|
if (n[i]) {
|
|
res = F.mul(res, base);
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
// Check here: https://eprint.iacr.org/2012/685.pdf
|
|
|
|
function buildSqrt$2 (F) {
|
|
if ((F.m % 2) == 1) {
|
|
if (eq$8(mod$8(F.p, 4), 1 )) {
|
|
if (eq$8(mod$8(F.p, 8), 1 )) {
|
|
if (eq$8(mod$8(F.p, 16), 1 )) {
|
|
// alg7_muller(F);
|
|
alg5_tonelliShanks$2(F);
|
|
} else if (eq$8(mod$8(F.p, 16), 9 )) {
|
|
alg4_kong$2(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$8(mod$8(F.p, 8), 5 )) {
|
|
alg3_atkin$2(F);
|
|
} else {
|
|
throw new Error("Field withot sqrt");
|
|
}
|
|
} else if (eq$8(mod$8(F.p, 4), 3 )) {
|
|
alg2_shanks$2(F);
|
|
}
|
|
} else {
|
|
const pm2mod4 = mod$8(pow$8(F.p, F.m/2), 4);
|
|
if (pm2mod4 == 1) {
|
|
alg10_adj$2(F);
|
|
} else if (pm2mod4 == 3) {
|
|
alg9_adj$2(F);
|
|
} else {
|
|
alg8_complex$2(F);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function alg5_tonelliShanks$2(F) {
|
|
F.sqrt_q = pow$8(F.p, F.m);
|
|
|
|
F.sqrt_s = 0;
|
|
F.sqrt_t = sub$8(F.sqrt_q, 1);
|
|
|
|
while (!isOdd$8(F.sqrt_t)) {
|
|
F.sqrt_s = F.sqrt_s + 1;
|
|
F.sqrt_t = div$8(F.sqrt_t, 2);
|
|
}
|
|
|
|
let c0 = F.one;
|
|
|
|
while (F.eq(c0, F.one)) {
|
|
const c = F.random();
|
|
F.sqrt_z = F.pow(c, F.sqrt_t);
|
|
c0 = F.pow(F.sqrt_z, 1 << (F.sqrt_s-1) );
|
|
}
|
|
|
|
F.sqrt_tm1d2 = div$8(sub$8(F.sqrt_t, 1),2);
|
|
|
|
F.sqrt = function(a) {
|
|
const F=this;
|
|
if (F.isZero(a)) return F.zero;
|
|
let w = F.pow(a, F.sqrt_tm1d2);
|
|
const a0 = F.pow( F.mul(F.square(w), a), 1 << (F.sqrt_s-1) );
|
|
if (F.eq(a0, F.negone)) return null;
|
|
|
|
let v = F.sqrt_s;
|
|
let x = F.mul(a, w);
|
|
let b = F.mul(x, w);
|
|
let z = F.sqrt_z;
|
|
while (!F.eq(b, F.one)) {
|
|
let b2k = F.square(b);
|
|
let k=1;
|
|
while (!F.eq(b2k, F.one)) {
|
|
b2k = F.square(b2k);
|
|
k++;
|
|
}
|
|
|
|
w = z;
|
|
for (let i=0; i<v-k-1; i++) {
|
|
w = F.square(w);
|
|
}
|
|
z = F.square(w);
|
|
b = F.mul(b, z);
|
|
x = F.mul(x, w);
|
|
v = k;
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg4_kong$2(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 4 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg3_atkin$2(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 3 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg2_shanks$2(F) {
|
|
|
|
F.sqrt_q = pow$8(F.p, F.m);
|
|
F.sqrt_e1 = div$8( sub$8(F.sqrt_q, 3) , 4);
|
|
|
|
F.sqrt = function(a) {
|
|
if (this.isZero(a)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const a1 = this.pow(a, this.sqrt_e1);
|
|
|
|
const a0 = this.mul(this.square(a1), a);
|
|
|
|
if ( this.eq(a0, this.negone) ) return null;
|
|
|
|
const x = this.mul(a1, a);
|
|
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
function alg10_adj$2(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 10 not implemented");
|
|
};
|
|
}
|
|
|
|
function alg9_adj$2(F) {
|
|
F.sqrt_q = pow$8(F.p, F.m/2);
|
|
F.sqrt_e34 = div$8( sub$8(F.sqrt_q, 3) , 4);
|
|
F.sqrt_e12 = div$8( sub$8(F.sqrt_q, 1) , 2);
|
|
|
|
F.frobenius = function(n, x) {
|
|
if ((n%2) == 1) {
|
|
return F.conjugate(x);
|
|
} else {
|
|
return x;
|
|
}
|
|
};
|
|
|
|
F.sqrt = function(a) {
|
|
const F = this;
|
|
const a1 = F.pow(a, F.sqrt_e34);
|
|
const alfa = F.mul(F.square(a1), a);
|
|
const a0 = F.mul(F.frobenius(1, alfa), alfa);
|
|
if (F.eq(a0, F.negone)) return null;
|
|
const x0 = F.mul(a1, a);
|
|
let x;
|
|
if (F.eq(alfa, F.negone)) {
|
|
x = F.mul(x0, [F.F.zero, F.F.one]);
|
|
} else {
|
|
const b = F.pow(F.add(F.one, alfa), F.sqrt_e12);
|
|
x = F.mul(b, x0);
|
|
}
|
|
return F.geq(x, F.zero) ? x : F.neg(x);
|
|
};
|
|
}
|
|
|
|
|
|
function alg8_complex$2(F) {
|
|
F.sqrt = function() {
|
|
throw new Error("Sqrt alg 8 not implemented");
|
|
};
|
|
}
|
|
|
|
/* global window */
|
|
|
|
function getRandomBytes$2(n) {
|
|
let array = new Uint8Array(n);
|
|
if (typeof window !== "undefined") { // Browser
|
|
if (typeof window.crypto !== "undefined") { // Supported
|
|
window.crypto.getRandomValues(array);
|
|
} else { // fallback
|
|
for (let i=0; i<n; i++) {
|
|
array[i] = (Math.random()*4294967296)>>>0;
|
|
}
|
|
}
|
|
}
|
|
else { // NodeJS
|
|
crypto.randomFillSync(array);
|
|
}
|
|
return array;
|
|
}
|
|
|
|
/* global BigInt */
|
|
|
|
class ZqField$4 {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = 1n;
|
|
this.zero = 0n;
|
|
this.p = BigInt(p);
|
|
this.m = 1;
|
|
this.negone = this.p-1n;
|
|
this.two = 2n;
|
|
this.half = this.p >> 1n;
|
|
this.bitLength = bitLength$8(this.p);
|
|
this.mask = (1n << BigInt(this.bitLength)) - 1n;
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = this.e(1n << BigInt(this.n64*64));
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone >> 1n;
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!this.eq(r, this.negone)) {
|
|
this.nqr = this.nqr + 1n;
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
|
|
this.s = 0;
|
|
this.t = this.negone;
|
|
|
|
while ((this.t & 1n) == 0n) {
|
|
this.s = this.s + 1;
|
|
this.t = this.t >> 1n;
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt$2(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
let res;
|
|
if (!b) {
|
|
res = BigInt(a);
|
|
} else if (b==16) {
|
|
res = BigInt("0x"+a);
|
|
}
|
|
if (res < 0) {
|
|
let nres = -res;
|
|
if (nres >= this.p) nres = nres % this.p;
|
|
return this.p - nres;
|
|
} else {
|
|
return (res>= this.p) ? res%this.p : res;
|
|
}
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
const res = a + b;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
return (a >= b) ? a-b : this.p-b+a;
|
|
}
|
|
|
|
neg(a) {
|
|
return a ? this.p-a : a;
|
|
}
|
|
|
|
mul(a, b) {
|
|
return (a*b)%this.p;
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return (base * this.e(s)) % this.p;
|
|
}
|
|
|
|
square(a) {
|
|
return (a*a) % this.p;
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a==b;
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a!=b;
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa < bb;
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa > bb;
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa <= bb;
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = (a > this.half) ? a - this.p : a;
|
|
const bb = (b > this.half) ? b - this.p : b;
|
|
return aa >= bb;
|
|
}
|
|
|
|
div(a, b) {
|
|
return this.mul(a, this.inv(b));
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (!b) throw new Error("Division by zero");
|
|
return a / b;
|
|
}
|
|
|
|
inv(a) {
|
|
if (!a) throw new Error("Division by zero");
|
|
|
|
let t = 0n;
|
|
let r = this.p;
|
|
let newt = 1n;
|
|
let newr = a % this.p;
|
|
while (newr) {
|
|
let q = r/newr;
|
|
[t, newt] = [newt, t-q*newt];
|
|
[r, newr] = [newr, r-q*newr];
|
|
}
|
|
if (t<0n) t += this.p;
|
|
return t;
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a % b;
|
|
}
|
|
|
|
pow(b, e) {
|
|
return exp$b(this, b, e);
|
|
}
|
|
|
|
exp(b, e) {
|
|
return exp$b(this, b, e);
|
|
}
|
|
|
|
band(a, b) {
|
|
const res = ((a & b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bor(a, b) {
|
|
const res = ((a | b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bxor(a, b) {
|
|
const res = ((a ^ b) & this.mask);
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
bnot(a) {
|
|
const res = a ^ this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
const res = (a << b) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
return a >> nb;
|
|
} else {
|
|
return 0n;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (Number(b) < this.bitLength) {
|
|
return a >> b;
|
|
} else {
|
|
const nb = this.p - b;
|
|
if (Number(nb) < this.bitLength) {
|
|
const res = (a << nb) & this.mask;
|
|
return res >= this.p ? res-this.p : res;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a && b) ? 1n : 0n;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a || b) ? 1n : 0n;
|
|
}
|
|
|
|
lnot(a) {
|
|
return (a) ? 0n : 1n;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n == 0n) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone >> this.one);
|
|
if ( res != 1n ) return null;
|
|
|
|
let m = this.s;
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one) >> 1n );
|
|
|
|
while ( t != 1n ) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (sq != 1n ) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r > (this.p >> 1n)) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a, b) {
|
|
a = BigInt(a,b);
|
|
if (a < 0) {
|
|
let na = -a;
|
|
if (na >= this.p) na = na % this.p;
|
|
return this.p - na;
|
|
} else {
|
|
return (a>= this.p) ? a%this.p : a;
|
|
}
|
|
}
|
|
|
|
random() {
|
|
const nBytes = (this.bitLength*2 / 8);
|
|
let res =0n;
|
|
for (let i=0; i<nBytes; i++) {
|
|
res = (res << 8n) + BigInt(getRandomBytes$2(1)[0]);
|
|
}
|
|
return res % this.p;
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (a > this.half) {
|
|
const v = this.p-a;
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a == 0n;
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v=0n;
|
|
for (let i=0; i<this.n64; i++) {
|
|
v += rng.nextU64() << BigInt(64 *i);
|
|
}
|
|
v &= this.mask;
|
|
} while (v >= this.p);
|
|
v = (v * this.Ri) % this.p; // Convert from montgomery
|
|
return v;
|
|
}
|
|
|
|
}
|
|
|
|
class ZqField$5 {
|
|
constructor(p) {
|
|
this.type="F1";
|
|
this.one = BigInteger.one;
|
|
this.zero = BigInteger.zero;
|
|
this.p = BigInteger(p);
|
|
this.m = 1;
|
|
this.negone = this.p.minus(BigInteger.one);
|
|
this.two = BigInteger(2);
|
|
this.half = this.p.shiftRight(1);
|
|
this.bitLength = this.p.bitLength();
|
|
this.mask = BigInteger.one.shiftLeft(this.bitLength).minus(BigInteger.one);
|
|
|
|
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
|
|
this.n32 = this.n64*2;
|
|
this.n8 = this.n64*8;
|
|
this.R = BigInteger.one.shiftLeft(this.n64*64);
|
|
this.Ri = this.inv(this.R);
|
|
|
|
const e = this.negone.shiftRight(this.one);
|
|
this.nqr = this.two;
|
|
let r = this.pow(this.nqr, e);
|
|
while (!r.equals(this.negone)) {
|
|
this.nqr = this.nqr.add(this.one);
|
|
r = this.pow(this.nqr, e);
|
|
}
|
|
|
|
this.s = this.zero;
|
|
this.t = this.negone;
|
|
|
|
while (!this.t.isOdd()) {
|
|
this.s = this.s.add(this.one);
|
|
this.t = this.t.shiftRight(this.one);
|
|
}
|
|
|
|
this.nqr_to_t = this.pow(this.nqr, this.t);
|
|
|
|
buildSqrt$2(this);
|
|
}
|
|
|
|
e(a,b) {
|
|
|
|
const res = BigInteger(a,b);
|
|
|
|
return this.normalize(res);
|
|
|
|
}
|
|
|
|
add(a, b) {
|
|
let res = a.add(b);
|
|
if (res.geq(this.p)) {
|
|
res = res.minus(this.p);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
sub(a, b) {
|
|
if (a.geq(b)) {
|
|
return a.minus(b);
|
|
} else {
|
|
return this.p.minus(b.minus(a));
|
|
}
|
|
}
|
|
|
|
neg(a) {
|
|
if (a.isZero()) return a;
|
|
return this.p.minus(a);
|
|
}
|
|
|
|
mul(a, b) {
|
|
return a.times(b).mod(this.p);
|
|
}
|
|
|
|
mulScalar(base, s) {
|
|
return base.times(BigInteger(s)).mod(this.p);
|
|
}
|
|
|
|
square(a) {
|
|
return a.square().mod(this.p);
|
|
}
|
|
|
|
eq(a, b) {
|
|
return a.eq(b);
|
|
}
|
|
|
|
neq(a, b) {
|
|
return a.neq(b);
|
|
}
|
|
|
|
lt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.lt(bb);
|
|
}
|
|
|
|
gt(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.gt(bb);
|
|
}
|
|
|
|
leq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.leq(bb);
|
|
}
|
|
|
|
geq(a, b) {
|
|
const aa = a.gt(this.half) ? a.minus(this.p) : a;
|
|
const bb = b.gt(this.half) ? b.minus(this.p) : b;
|
|
return aa.geq(bb);
|
|
}
|
|
|
|
div(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.times(b.modInv(this.p)).mod(this.p);
|
|
}
|
|
|
|
idiv(a, b) {
|
|
if (b.isZero()) throw new Error("Division by zero");
|
|
return a.divide(b);
|
|
}
|
|
|
|
inv(a) {
|
|
if (a.isZero()) throw new Error("Division by zero");
|
|
return a.modInv(this.p);
|
|
}
|
|
|
|
mod(a, b) {
|
|
return a.mod(b);
|
|
}
|
|
|
|
pow(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
exp(a, b) {
|
|
return a.modPow(b, this.p);
|
|
}
|
|
|
|
band(a, b) {
|
|
return a.and(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bor(a, b) {
|
|
return a.or(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bxor(a, b) {
|
|
return a.xor(b).and(this.mask).mod(this.p);
|
|
}
|
|
|
|
bnot(a) {
|
|
return a.xor(this.mask).mod(this.p);
|
|
}
|
|
|
|
shl(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftLeft(b).and(this.mask).mod(this.p);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shr(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
shr(a, b) {
|
|
if (b.lt(this.bitLength)) {
|
|
return a.shiftRight(b);
|
|
} else {
|
|
const nb = this.p.minus(b);
|
|
if (nb.lt(this.bitLength)) {
|
|
return this.shl(a, nb);
|
|
} else {
|
|
return BigInteger.zero;
|
|
}
|
|
}
|
|
}
|
|
|
|
land(a, b) {
|
|
return (a.isZero() || b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lor(a, b) {
|
|
return (a.isZero() && b.isZero()) ? BigInteger.zero : BigInteger.one;
|
|
}
|
|
|
|
lnot(a) {
|
|
return a.isZero() ? BigInteger.one : BigInteger.zero;
|
|
}
|
|
|
|
sqrt_old(n) {
|
|
|
|
if (n.equals(this.zero)) return this.zero;
|
|
|
|
// Test that have solution
|
|
const res = this.pow(n, this.negone.shiftRight(this.one));
|
|
if (!res.equals(this.one)) return null;
|
|
|
|
let m = parseInt(this.s);
|
|
let c = this.nqr_to_t;
|
|
let t = this.pow(n, this.t);
|
|
let r = this.pow(n, this.add(this.t, this.one).shiftRight(this.one) );
|
|
|
|
while (!t.equals(this.one)) {
|
|
let sq = this.square(t);
|
|
let i = 1;
|
|
while (!sq.equals(this.one)) {
|
|
i++;
|
|
sq = this.square(sq);
|
|
}
|
|
|
|
// b = c ^ m-i-1
|
|
let b = c;
|
|
for (let j=0; j< m-i-1; j ++) b = this.square(b);
|
|
|
|
m = i;
|
|
c = this.square(b);
|
|
t = this.mul(t, c);
|
|
r = this.mul(r, b);
|
|
}
|
|
|
|
if (r.greater(this.p.shiftRight(this.one))) {
|
|
r = this.neg(r);
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
normalize(a) {
|
|
a = BigInteger(a);
|
|
if (a.isNegative()) {
|
|
return this.p.minus(a.abs().mod(this.p));
|
|
} else {
|
|
return a.mod(this.p);
|
|
}
|
|
}
|
|
|
|
random() {
|
|
let res = BigInteger(0);
|
|
let n = BigInteger(this.p.square());
|
|
while (!n.isZero()) {
|
|
res = res.shiftLeft(8).add(BigInteger(getRandomBytes$2(1)[0]));
|
|
n = n.shiftRight(8);
|
|
}
|
|
return res.mod(this.p);
|
|
}
|
|
|
|
toString(a, base) {
|
|
let vs;
|
|
if (!a.lesserOrEquals(this.p.shiftRight(BigInteger(1)))) {
|
|
const v = this.p.minus(a);
|
|
vs = "-"+v.toString(base);
|
|
} else {
|
|
vs = a.toString(base);
|
|
}
|
|
|
|
return vs;
|
|
}
|
|
|
|
isZero(a) {
|
|
return a.isZero();
|
|
}
|
|
|
|
fromRng(rng) {
|
|
let v;
|
|
do {
|
|
v = BigInteger(0);
|
|
for (let i=0; i<this.n64; i++) {
|
|
v = v.add(v, rng.nextU64().shiftLeft(64*i));
|
|
}
|
|
v = v.and(this.mask);
|
|
} while (v.geq(this.p));
|
|
v = v.times(this.Ri).mod(this.q);
|
|
return v;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
const supportsNativeBigInt$7 = typeof BigInt === "function";
|
|
let _F1Field$2;
|
|
if (supportsNativeBigInt$7) {
|
|
_F1Field$2 = ZqField$4;
|
|
} else {
|
|
_F1Field$2 = ZqField$5;
|
|
}
|
|
|
|
class F1Field$3 extends _F1Field$2 {
|
|
|
|
// Returns a buffer with Little Endian Representation
|
|
toRprLE(buff, o, e) {
|
|
toRprLE$2(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Representation
|
|
toRprBE(buff, o, e) {
|
|
toRprBE$2(buff, o, e, this.n64*8);
|
|
}
|
|
|
|
// Returns a buffer with Big Endian Montgomery Representation
|
|
toRprBEM(buff, o, e) {
|
|
return this.toRprBE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
toRprLEM(buff, o, e) {
|
|
return this.toRprLE(buff, o, this.mul(this.R, e));
|
|
}
|
|
|
|
|
|
// Pases a buffer with Little Endian Representation
|
|
fromRprLE(buff, o) {
|
|
return fromRprLE$2(buff, o, this.n8);
|
|
}
|
|
|
|
// Pases a buffer with Big Endian Representation
|
|
fromRprBE(buff, o) {
|
|
return fromRprBE$2(buff, o, this.n8);
|
|
}
|
|
|
|
fromRprLEM(buff, o) {
|
|
return this.mul(this.fromRprLE(buff, o), this.Ri);
|
|
}
|
|
|
|
fromRprBEM(buff, o) {
|
|
return this.mul(this.fromRprBE(buff, o), this.Ri);
|
|
}
|
|
|
|
}
|
|
|
|
/* global BigInt */
|
|
|
|
function stringifyBigInts$7(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts$7);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts$7(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts$7(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInt(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts$7);
|
|
} else if (typeof o == "object") {
|
|
if (o===null) return null;
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts$7(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int$6(buff) {
|
|
let res = 0n;
|
|
let i = buff.length;
|
|
let offset = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i>0) {
|
|
if (i >= 4) {
|
|
i -= 4;
|
|
res += BigInt(buffV.getUint32(i)) << BigInt(offset*8);
|
|
offset += 4;
|
|
} else if (i >= 2) {
|
|
i -= 2;
|
|
res += BigInt(buffV.getUint16(i)) << BigInt(offset*8);
|
|
offset += 2;
|
|
} else {
|
|
i -= 1;
|
|
res += BigInt(buffV.getUint8(i)) << BigInt(offset*8);
|
|
offset += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff$6(n, len) {
|
|
let r = n;
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = len;
|
|
while (o > 0) {
|
|
if (o-4 >= 0) {
|
|
o -= 4;
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn));
|
|
r = r >> 32n;
|
|
} else if (o-2 >= 0) {
|
|
o -= 2;
|
|
buffV.setUint16(o, Number(r & 0xFFFFn));
|
|
r = r >> 16n;
|
|
} else {
|
|
o -= 1;
|
|
buffV.setUint8(o, Number(r & 0xFFn));
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int$6(buff) {
|
|
let res = 0n;
|
|
let i = 0;
|
|
const buffV = new DataView(buff.buffer);
|
|
while (i<buff.length) {
|
|
if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint32(i, true)) << BigInt( i*8);
|
|
i += 4;
|
|
} else if (i + 4 <= buff.length) {
|
|
res += BigInt(buffV.getUint16(i, true)) << BigInt( i*8);
|
|
i += 2;
|
|
} else {
|
|
res += BigInt(buffV.getUint8(i, true)) << BigInt( i*8);
|
|
i += 1;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff$6(n, len) {
|
|
let r = n;
|
|
if (typeof len === "undefined") {
|
|
len = Math.floor((bitLength$8(n) - 1) / 8) +1;
|
|
if (len==0) len = 1;
|
|
}
|
|
const buff = new Uint8Array(len);
|
|
const buffV = new DataView(buff.buffer);
|
|
let o = 0;
|
|
while (o < len) {
|
|
if (o+4 <= len) {
|
|
buffV.setUint32(o, Number(r & 0xFFFFFFFFn), true );
|
|
o += 4;
|
|
r = r >> 32n;
|
|
} else if (o+2 <= len) {
|
|
buff.setUint16(Number(o, r & 0xFFFFn), true );
|
|
o += 2;
|
|
r = r >> 16n;
|
|
} else {
|
|
buff.setUint8(Number(o, r & 0xFFn), true );
|
|
o += 1;
|
|
r = r >> 8n;
|
|
}
|
|
}
|
|
if (r) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_native$2 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts$7,
|
|
unstringifyBigInts: unstringifyBigInts$7,
|
|
beBuff2int: beBuff2int$6,
|
|
beInt2Buff: beInt2Buff$6,
|
|
leBuff2int: leBuff2int$6,
|
|
leInt2Buff: leInt2Buff$6
|
|
});
|
|
|
|
function stringifyBigInts$8(o) {
|
|
if ((typeof(o) == "bigint") || o.eq !== undefined) {
|
|
return o.toString(10);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(stringifyBigInts$8);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = stringifyBigInts$8(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function unstringifyBigInts$8(o) {
|
|
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
|
|
return BigInteger(o);
|
|
} else if (Array.isArray(o)) {
|
|
return o.map(unstringifyBigInts$8);
|
|
} else if (typeof o == "object") {
|
|
const res = {};
|
|
const keys = Object.keys(o);
|
|
keys.forEach( (k) => {
|
|
res[k] = unstringifyBigInts$8(o[k]);
|
|
});
|
|
return res;
|
|
} else {
|
|
return o;
|
|
}
|
|
}
|
|
|
|
function beBuff2int$7(buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[buff.length - i - 1]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function beInt2Buff$7(n, len) {
|
|
let r = n;
|
|
let o =len-1;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o>=0)) {
|
|
let c = Number(r.and(BigInteger("255")));
|
|
buff[o] = c;
|
|
o--;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
|
|
function leBuff2int$7 (buff) {
|
|
let res = BigInteger.zero;
|
|
for (let i=0; i<buff.length; i++) {
|
|
const n = BigInteger(buff[i]);
|
|
res = res.add(n.shiftLeft(i*8));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
function leInt2Buff$7(n, len) {
|
|
let r = n;
|
|
let o =0;
|
|
const buff = new Uint8Array(len);
|
|
while ((r.gt(BigInteger.zero))&&(o<buff.length)) {
|
|
let c = Number(r.and(BigInteger(255)));
|
|
buff[o] = c;
|
|
o++;
|
|
r = r.shiftRight(8);
|
|
}
|
|
if (!r.eq(BigInteger.zero)) {
|
|
throw new Error("Number does not fit in this length");
|
|
}
|
|
return buff;
|
|
}
|
|
|
|
var utils_bigint$2 = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
stringifyBigInts: stringifyBigInts$8,
|
|
unstringifyBigInts: unstringifyBigInts$8,
|
|
beBuff2int: beBuff2int$7,
|
|
beInt2Buff: beInt2Buff$7,
|
|
leBuff2int: leBuff2int$7,
|
|
leInt2Buff: leInt2Buff$7
|
|
});
|
|
|
|
let utils$5 = {};
|
|
|
|
const supportsNativeBigInt$8 = typeof BigInt === "function";
|
|
if (supportsNativeBigInt$8) {
|
|
Object.assign(utils$5, utils_native$2);
|
|
} else {
|
|
Object.assign(utils$5, utils_bigint$2);
|
|
}
|
|
|
|
|
|
const _revTable$6 = [];
|
|
for (let i=0; i<256; i++) {
|
|
_revTable$6[i] = _revSlow$6(i, 8);
|
|
}
|
|
|
|
function _revSlow$6(idx, bits) {
|
|
let res =0;
|
|
let a = idx;
|
|
for (let i=0; i<bits; i++) {
|
|
res <<= 1;
|
|
res = res | (a &1);
|
|
a >>=1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
utils$5.bitReverse = function bitReverse(idx, bits) {
|
|
return (
|
|
_revTable$6[idx >>> 24] |
|
|
(_revTable$6[(idx >>> 16) & 0xFF] << 8) |
|
|
(_revTable$6[(idx >>> 8) & 0xFF] << 16) |
|
|
(_revTable$6[idx & 0xFF] << 24)
|
|
) >>> (32-bits);
|
|
};
|
|
|
|
|
|
utils$5.log2 = function log2( V )
|
|
{
|
|
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
|
|
};
|
|
|
|
utils$5.buffReverseBits = function buffReverseBits(buff, eSize) {
|
|
const n = buff.byteLength /eSize;
|
|
const bits = utils$5.log2(n);
|
|
if (n != (1 << bits)) {
|
|
throw new Error("Invalid number of pointers");
|
|
}
|
|
for (let i=0; i<n; i++) {
|
|
const r = utils$5.bitReverse(i,bits);
|
|
if (i>r) {
|
|
const tmp = buff.slice(i*eSize, (i+1)*eSize);
|
|
buff.set( buff.slice(r*eSize, (r+1)*eSize), i*eSize);
|
|
buff.set(tmp, r*eSize);
|
|
}
|
|
}
|
|
};
|
|
|
|
const Scalar$6=_Scalar$2;
|
|
|
|
async function open$1(fileName, openFlags, cacheSize) {
|
|
cacheSize = cacheSize || 4096*64;
|
|
if (["w+", "wx+", "r", "ax+", "a+"].indexOf(openFlags) <0)
|
|
throw new Error("Invalid open option");
|
|
const fd =await crypto.promises.open(fileName, openFlags);
|
|
|
|
const stats = await fd.stat();
|
|
|
|
return new FastFile$1(fd, stats, cacheSize, fileName);
|
|
}
|
|
|
|
class FastFile$1 {
|
|
|
|
constructor(fd, stats, cacheSize, fileName) {
|
|
this.fileName = fileName;
|
|
this.fd = fd;
|
|
this.pos = 0;
|
|
this.pageBits = 8;
|
|
this.pageSize = (1 << this.pageBits);
|
|
while (this.pageSize < stats.blksize*4) {
|
|
this.pageBits ++;
|
|
this.pageSize *= 2;
|
|
}
|
|
this.totalSize = stats.size;
|
|
this.totalPages = Math.floor((stats.size -1) / this.pageSize)+1;
|
|
this.maxPagesLoaded = Math.floor( cacheSize / this.pageSize)+1;
|
|
this.pages = {};
|
|
this.pendingLoads = [];
|
|
this.writing = false;
|
|
this.reading = false;
|
|
}
|
|
|
|
_loadPage(p) {
|
|
const self = this;
|
|
return new Promise((resolve, reject)=> {
|
|
self.pendingLoads.push({
|
|
page: p,
|
|
resolve: resolve,
|
|
reject: reject
|
|
});
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
});
|
|
}
|
|
|
|
|
|
_triggerLoad() {
|
|
const self = this;
|
|
processPendingLoads();
|
|
if (self.pendingLoads.length == 0) return;
|
|
if (Object.keys(self.pages).length >= self.maxPagesLoaded) {
|
|
const dp = getDeletablePage();
|
|
if (dp<0) { // // No sizes available
|
|
// setTimeout(self._triggerLoad.bind(self), 10000);
|
|
return;
|
|
}
|
|
delete self.pages[dp];
|
|
}
|
|
const load = self.pendingLoads.shift();
|
|
if (load.page>=self.totalPages) {
|
|
self.pages[load.page] = {
|
|
dirty: false,
|
|
buff: new Uint8Array(self.pageSize),
|
|
pendingOps: 1,
|
|
size: 0
|
|
};
|
|
load.resolve();
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
return;
|
|
}
|
|
if (self.reading) {
|
|
self.pendingLoads.unshift(load);
|
|
return; // Only one read at a time.
|
|
}
|
|
|
|
self.reading = true;
|
|
const page = {
|
|
dirty: false,
|
|
buff: new Uint8Array(self.pageSize),
|
|
pendingOps: 1,
|
|
size: 0
|
|
};
|
|
self.fd.read(page.buff, 0, self.pageSize, load.page*self.pageSize).then((res)=> {
|
|
page.size = res.bytesRead;
|
|
self.pages[load.page] = page;
|
|
self.reading = false;
|
|
load.resolve();
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
}, (err) => {
|
|
load.reject(err);
|
|
});
|
|
|
|
function processPendingLoads() {
|
|
const newPendingLoads = [];
|
|
for (let i=0; i<self.pendingLoads.length; i++) {
|
|
const load = self.pendingLoads[i];
|
|
if (typeof self.pages[load.page] != "undefined") {
|
|
self.pages[load.page].pendingOps ++;
|
|
load.resolve();
|
|
} else {
|
|
newPendingLoads.push(load);
|
|
}
|
|
}
|
|
self.pendingLoads = newPendingLoads;
|
|
}
|
|
|
|
function getDeletablePage() {
|
|
for (let p in self.pages) {
|
|
const page = self.pages[p];
|
|
if ((page.dirty == false)&&(page.pendingOps==0)) return p;
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
_triggerWrite() {
|
|
const self = this;
|
|
if (self.writing) return;
|
|
const p = self._getDirtyPage();
|
|
if (p<0) {
|
|
if (self.pendingClose) self.pendingClose();
|
|
return;
|
|
}
|
|
self.writing=true;
|
|
self.pages[p].dirty = false;
|
|
self.fd.write(self.pages[p].buff, 0, self.pages[p].size, p*self.pageSize).then(() => {
|
|
self.writing = false;
|
|
setImmediate(self._triggerWrite.bind(self));
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
}, (err) => {
|
|
console.log("ERROR Writing: "+err);
|
|
self.error = err;
|
|
self._tryClose();
|
|
});
|
|
|
|
}
|
|
|
|
_getDirtyPage() {
|
|
for (let p in this.pages) {
|
|
if (this.pages[p].dirty) return p;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
async write(buff, pos) {
|
|
if (buff.byteLength == 0) return;
|
|
const self = this;
|
|
if (buff.byteLength > self.pageSize*self.maxPagesLoaded*0.8) {
|
|
const cacheSize = Math.floor(buff.byteLength * 1.1);
|
|
this.maxPagesLoaded = Math.floor( cacheSize / self.pageSize)+1;
|
|
}
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
self.pos = pos+buff.byteLength;
|
|
if (self.totalSize < pos + buff.byteLength) self.totalSize = pos + buff.byteLength;
|
|
if (self.pendingClose)
|
|
throw new Error("Writing a closing file");
|
|
const firstPage = Math.floor(pos / self.pageSize);
|
|
const lastPage = Math.floor((pos+buff.byteLength-1) / self.pageSize);
|
|
|
|
for (let i=firstPage; i<=lastPage; i++) await self._loadPage(i);
|
|
|
|
let p = firstPage;
|
|
let o = pos % self.pageSize;
|
|
let r = buff.byteLength;
|
|
while (r>0) {
|
|
const l = (o+r > self.pageSize) ? (self.pageSize -o) : r;
|
|
const srcView = new Uint8Array(buff.buffer, buff.byteLength - r, l);
|
|
const dstView = new Uint8Array(self.pages[p].buff.buffer, o, l);
|
|
dstView.set(srcView);
|
|
self.pages[p].dirty = true;
|
|
self.pages[p].pendingOps --;
|
|
self.pages[p].size = Math.max(o+l, self.pages[p].size);
|
|
if (p>=self.totalPages) {
|
|
self.totalPages = p+1;
|
|
}
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
}
|
|
setImmediate(self._triggerWrite.bind(self));
|
|
}
|
|
|
|
async read(len, pos) {
|
|
if (len == 0) {
|
|
return new Uint8Array(0);
|
|
}
|
|
const self = this;
|
|
if (len > self.pageSize*self.maxPagesLoaded*0.8) {
|
|
const cacheSize = Math.floor(len * 1.1);
|
|
this.maxPagesLoaded = Math.floor( cacheSize / self.pageSize)+1;
|
|
}
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
self.pos = pos+len;
|
|
if (self.pendingClose)
|
|
throw new Error("Reading a closing file");
|
|
const firstPage = Math.floor(pos / self.pageSize);
|
|
const lastPage = Math.floor((pos+len-1) / self.pageSize);
|
|
|
|
for (let i=firstPage; i<=lastPage; i++) await self._loadPage(i);
|
|
|
|
let buff = new Uint8Array(len);
|
|
let dstView = new Uint8Array(buff);
|
|
let p = firstPage;
|
|
let o = pos % self.pageSize;
|
|
// Remaining bytes to read
|
|
let r = pos + len > self.totalSize ? len - (pos + len - self.totalSize): len;
|
|
while (r>0) {
|
|
// bytes to copy from this page
|
|
const l = (o+r > self.pageSize) ? (self.pageSize -o) : r;
|
|
const srcView = new Uint8Array(self.pages[p].buff.buffer, o, l);
|
|
buff.set(srcView, dstView.byteLength-r);
|
|
self.pages[p].pendingOps --;
|
|
r = r-l;
|
|
p ++;
|
|
o = 0;
|
|
}
|
|
setImmediate(self._triggerLoad.bind(self));
|
|
return buff;
|
|
}
|
|
|
|
_tryClose() {
|
|
const self = this;
|
|
if (!self.pendingClose) return;
|
|
if (self.error) {
|
|
self.pendingCloseReject(self.error);
|
|
}
|
|
const p = self._getDirtyPage();
|
|
if ((p>=0) || (self.writing) || (self.reading) || (self.pendingLoads.length>0)) return;
|
|
self.pendingClose();
|
|
}
|
|
|
|
close() {
|
|
const self = this;
|
|
if (self.pendingClose)
|
|
throw new Error("Closing the file twice");
|
|
return new Promise((resolve, reject) => {
|
|
self.pendingClose = resolve;
|
|
self.pendingCloseReject = reject;
|
|
self._tryClose();
|
|
}).then(()=> {
|
|
self.fd.close();
|
|
}, (err) => {
|
|
self.fd.close();
|
|
throw (err);
|
|
});
|
|
}
|
|
|
|
async discard() {
|
|
const self = this;
|
|
await self.close();
|
|
await crypto.promises.unlink(this.fileName);
|
|
}
|
|
|
|
async writeULE32(v, pos) {
|
|
const self = this;
|
|
|
|
const b = Uint32Array.of(v);
|
|
|
|
await self.write(new Uint8Array(b.buffer), pos);
|
|
}
|
|
|
|
async writeUBE32(v, pos) {
|
|
const self = this;
|
|
|
|
const buff = new Uint8Array(4);
|
|
const buffV = new DataView(buff.buffer);
|
|
buffV.setUint32(0, v, false);
|
|
|
|
await self.write(buff, pos);
|
|
}
|
|
|
|
|
|
async writeULE64(v, pos) {
|
|
const self = this;
|
|
|
|
const b = Uint32Array.of(v & 0xFFFFFFFF, Math.floor(v / 0x100000000));
|
|
|
|
await self.write(new Uint8Array(b.buffer), pos);
|
|
}
|
|
|
|
async readULE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[0];
|
|
}
|
|
|
|
async readUBE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new DataView(b.buffer);
|
|
|
|
return view.getUint32(0, false);
|
|
}
|
|
|
|
async readULE64(pos) {
|
|
const self = this;
|
|
const b = await self.read(8, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[1] * 0x100000000 + view[0];
|
|
}
|
|
|
|
}
|
|
|
|
function readExisting$3(o) {
|
|
const fd = new MemFile$1();
|
|
fd.o = o;
|
|
fd.allocSize = o.data.byteLength;
|
|
fd.totalSize = o.data.byteLength;
|
|
fd.readOnly = true;
|
|
fd.pos = 0;
|
|
return fd;
|
|
}
|
|
|
|
class MemFile$1 {
|
|
|
|
constructor() {
|
|
this.pageSize = 1 << 14; // for compatibility
|
|
}
|
|
|
|
_resizeIfNeeded(newLen) {
|
|
if (newLen > this.allocSize) {
|
|
const newAllocSize = Math.max(
|
|
this.allocSize + (1 << 20),
|
|
Math.floor(this.allocSize * 1.1),
|
|
newLen
|
|
);
|
|
const newData = new Uint8Array(newAllocSize);
|
|
newData.set(this.o.data);
|
|
this.o.data = newData;
|
|
this.allocSize = newAllocSize;
|
|
}
|
|
}
|
|
|
|
async write(buff, pos) {
|
|
const self =this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) throw new Error("Writing a read only file");
|
|
|
|
this._resizeIfNeeded(pos + buff.byteLength);
|
|
|
|
this.o.data.set(buff, pos);
|
|
|
|
if (pos + buff.byteLength > this.totalSize) this.totalSize = pos + buff.byteLength;
|
|
|
|
this.pos = pos + buff.byteLength;
|
|
}
|
|
|
|
async read(len, pos) {
|
|
const self = this;
|
|
if (typeof pos == "undefined") pos = self.pos;
|
|
if (this.readOnly) {
|
|
if (pos + len > this.totalSize) throw new Error("Reading out of bounds");
|
|
}
|
|
this._resizeIfNeeded(pos + len);
|
|
|
|
const buff = this.o.data.slice(pos, pos+len);
|
|
this.pos = pos + len;
|
|
return buff;
|
|
}
|
|
|
|
close() {
|
|
if (this.o.data.byteLength != this.totalSize) {
|
|
this.o.data = this.o.data.slice(0, this.totalSize);
|
|
}
|
|
}
|
|
|
|
async discard() {
|
|
}
|
|
|
|
async writeULE32(v, pos) {
|
|
const self = this;
|
|
|
|
const b = Uint32Array.of(v);
|
|
|
|
await self.write(new Uint8Array(b.buffer), pos);
|
|
}
|
|
|
|
async writeUBE32(v, pos) {
|
|
const self = this;
|
|
|
|
const buff = new Uint8Array(4);
|
|
const buffV = new DataView(buff.buffer);
|
|
buffV.setUint32(0, v, false);
|
|
|
|
await self.write(buff, pos);
|
|
}
|
|
|
|
|
|
async writeULE64(v, pos) {
|
|
const self = this;
|
|
|
|
const b = Uint32Array.of(v & 0xFFFFFFFF, Math.floor(v / 0x100000000));
|
|
|
|
await self.write(new Uint8Array(b.buffer), pos);
|
|
}
|
|
|
|
async readULE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[0];
|
|
}
|
|
|
|
async readUBE32(pos) {
|
|
const self = this;
|
|
const b = await self.read(4, pos);
|
|
|
|
const view = new DataView(b.buffer);
|
|
|
|
return view.getUint32(0, false);
|
|
}
|
|
|
|
async readULE64(pos) {
|
|
const self = this;
|
|
const b = await self.read(8, pos);
|
|
|
|
const view = new Uint32Array(b.buffer);
|
|
|
|
return view[1] * 0x100000000 + view[0];
|
|
}
|
|
|
|
}
|
|
|
|
/* global fetch */
|
|
|
|
async function readExisting$4(o, b) {
|
|
if (o instanceof Uint8Array) {
|
|
o = {
|
|
type: "mem",
|
|
data: o
|
|
};
|
|
}
|
|
{
|
|
if (typeof o === "string") {
|
|
const buff = await fetch(o).then( function(res) {
|
|
return res.arrayBuffer();
|
|
}).then(function (ab) {
|
|
return new Uint8Array(ab);
|
|
});
|
|
o = {
|
|
type: "mem",
|
|
data: buff
|
|
};
|
|
}
|
|
}
|
|
if (o.type == "file") {
|
|
return await open$1(o.fileName, "r", o.cacheSize);
|
|
} else if (o.type == "mem") {
|
|
return await readExisting$3(o);
|
|
} else {
|
|
throw new Error("Invalid FastFile type: "+o.type);
|
|
}
|
|
}
|
|
|
|
async function readBinFile$1(fileName, type, maxVersion) {
|
|
|
|
const fd = await readExisting$4(fileName);
|
|
|
|
const b = await fd.read(4);
|
|
let readedType = "";
|
|
for (let i=0; i<4; i++) readedType += String.fromCharCode(b[i]);
|
|
|
|
if (readedType != type) throw new Error(fileName + ": Invalid File format");
|
|
|
|
let v = await fd.readULE32();
|
|
|
|
if (v>maxVersion) throw new Error("Version not supported");
|
|
|
|
const nSections = await fd.readULE32();
|
|
|
|
// Scan sections
|
|
let sections = [];
|
|
for (let i=0; i<nSections; i++) {
|
|
let ht = await fd.readULE32();
|
|
let hl = await fd.readULE64();
|
|
if (typeof sections[ht] == "undefined") sections[ht] = [];
|
|
sections[ht].push({
|
|
p: fd.pos,
|
|
size: hl
|
|
});
|
|
fd.pos += hl;
|
|
}
|
|
|
|
return {fd, sections};
|
|
}
|
|
|
|
async function startReadUniqueSection$1(fd, sections, idSection) {
|
|
if (typeof fd.readingSection != "undefined")
|
|
throw new Error("Already reading a section");
|
|
if (!sections[idSection]) throw new Error(fd.fileName + ": Missing section "+ idSection );
|
|
if (sections[idSection].length>1) throw new Error(fd.fileName +": Section Duplicated " +idSection);
|
|
|
|
fd.pos = sections[idSection][0].p;
|
|
|
|
fd.readingSection = sections[idSection][0];
|
|
}
|
|
|
|
async function endReadSection$1(fd, noCheck) {
|
|
if (typeof fd.readingSection == "undefined")
|
|
throw new Error("Not reading a section");
|
|
if (!noCheck) {
|
|
if (fd.pos-fd.readingSection.p != fd.readingSection.size)
|
|
throw new Error("Invalid section size");
|
|
}
|
|
delete fd.readingSection;
|
|
}
|
|
|
|
|
|
async function readBigInt$1(fd, n8, pos) {
|
|
const buff = await fd.read(n8, pos);
|
|
return Scalar$6.fromRprLE(buff, 0, n8);
|
|
}
|
|
|
|
async function loadHeader(fd,sections) {
|
|
|
|
|
|
const res = {};
|
|
await startReadUniqueSection$1(fd, sections, 1);
|
|
// Read Header
|
|
res.n8 = await fd.readULE32();
|
|
res.prime = await readBigInt$1(fd, res.n8);
|
|
res.Fr = new F1Field$3(res.prime);
|
|
|
|
res.nVars = await fd.readULE32();
|
|
res.nOutputs = await fd.readULE32();
|
|
res.nPubInputs = await fd.readULE32();
|
|
res.nPrvInputs = await fd.readULE32();
|
|
res.nLabels = await fd.readULE64();
|
|
res.nConstraints = await fd.readULE32();
|
|
await endReadSection$1(fd);
|
|
|
|
return res;
|
|
}
|
|
|
|
async function load(fileName, loadConstraints, loadMap) {
|
|
|
|
const {fd, sections} = await readBinFile$1(fileName, "r1cs", 1);
|
|
const res = await loadHeader(fd, sections);
|
|
|
|
|
|
if (loadConstraints) {
|
|
await startReadUniqueSection$1(fd, sections, 2);
|
|
res.constraints = [];
|
|
for (let i=0; i<res.nConstraints; i++) {
|
|
const c = await readConstraint();
|
|
res.constraints.push(c);
|
|
}
|
|
await endReadSection$1(fd);
|
|
}
|
|
|
|
// Read Labels
|
|
|
|
if (loadMap) {
|
|
await startReadUniqueSection$1(fd, sections, 3);
|
|
|
|
res.map = [];
|
|
for (let i=0; i<res.nVars; i++) {
|
|
const idx = await fd.readULE64();
|
|
res.map.push(idx);
|
|
}
|
|
await endReadSection$1(fd);
|
|
}
|
|
|
|
await fd.close();
|
|
|
|
return res;
|
|
|
|
async function readConstraint() {
|
|
const c = [];
|
|
c[0] = await readLC();
|
|
c[1] = await readLC();
|
|
c[2] = await readLC();
|
|
return c;
|
|
}
|
|
|
|
async function readLC() {
|
|
const lc= {};
|
|
const nIdx = await fd.readULE32();
|
|
for (let i=0; i<nIdx; i++) {
|
|
const idx = await fd.readULE32();
|
|
const val = res.Fr.e(await readBigInt$1(fd, res.n8));
|
|
lc[idx] = val;
|
|
}
|
|
return lc;
|
|
}
|
|
}
|
|
|
|
const bls12381r$1 = Scalar$1.e("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16);
|
|
const bn128r$1 = Scalar$1.e("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
|
|
async function r1csInfo(r1csName, logger) {
|
|
|
|
const cir = await load(r1csName);
|
|
|
|
if (Scalar$1.eq(cir.prime, bn128r$1)) {
|
|
if (logger) logger.info("Curve: bn-128");
|
|
} else if (Scalar$1.eq(cir.prime, bls12381r$1)) {
|
|
if (logger) logger.info("Curve: bls12-381");
|
|
} else {
|
|
if (logger) logger.info(`Unknown Curve. Prime: ${Scalar$1.toString(cir.prime)}`);
|
|
}
|
|
if (logger) logger.info(`# of Wires: ${cir.nVars}`);
|
|
if (logger) logger.info(`# of Constraints: ${cir.nConstraints}`);
|
|
if (logger) logger.info(`# of Private Inputs: ${cir.nPrvInputs}`);
|
|
if (logger) logger.info(`# of Public Inputs: ${cir.nPubInputs}`);
|
|
if (logger) logger.info(`# of Outputs: ${cir.nOutputs}`);
|
|
|
|
return cir;
|
|
}
|
|
|
|
async function r1csExportJson(r1csFileName, logger) {
|
|
|
|
const cir = await load(r1csFileName, true, true);
|
|
|
|
return cir;
|
|
}
|
|
|
|
var r1cs = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
print: r1csPrint,
|
|
info: r1csInfo,
|
|
exportJson: r1csExportJson
|
|
});
|
|
|
|
async function loadSymbols(symFileName) {
|
|
const sym = {
|
|
labelIdx2Name: [ "one" ],
|
|
varIdx2Name: [ "one" ],
|
|
componentIdx2Name: []
|
|
};
|
|
const fd = await readExisting$2(symFileName);
|
|
const buff = await fd.read(fd.totalSize);
|
|
const symsStr = new TextDecoder("utf-8").decode(buff);
|
|
const lines = symsStr.split("\n");
|
|
for (let i=0; i<lines.length; i++) {
|
|
const arr = lines[i].split(",");
|
|
if (arr.length!=4) continue;
|
|
if (sym.varIdx2Name[arr[1]]) {
|
|
sym.varIdx2Name[arr[1]] += "|" + arr[3];
|
|
} else {
|
|
sym.varIdx2Name[arr[1]] = arr[3];
|
|
}
|
|
sym.labelIdx2Name[arr[0]] = arr[3];
|
|
if (!sym.componentIdx2Name[arr[2]]) {
|
|
sym.componentIdx2Name[arr[2]] = extractComponent(arr[3]);
|
|
}
|
|
}
|
|
|
|
await fd.close();
|
|
|
|
return sym;
|
|
|
|
function extractComponent(name) {
|
|
const arr = name.split(".");
|
|
arr.pop(); // Remove the lasr element
|
|
return arr.join(".");
|
|
}
|
|
}
|
|
|
|
const { WitnessCalculatorBuilder: WitnessCalculatorBuilder$2 } = circom_runtime;
|
|
|
|
async function wtnsDebug(input, wasmFileName, wtnsFileName, symName, options, logger) {
|
|
|
|
const fdWasm = await readExisting$2(wasmFileName);
|
|
const wasm = await fdWasm.read(fdWasm.totalSize);
|
|
await fdWasm.close();
|
|
|
|
|
|
let wcOps = {
|
|
sanityCheck: true
|
|
};
|
|
let sym = await loadSymbols(symName);
|
|
if (options.set) {
|
|
if (!sym) sym = await loadSymbols(symName);
|
|
wcOps.logSetSignal= function(labelIdx, value) {
|
|
if (logger) logger.info("SET " + sym.labelIdx2Name[labelIdx] + " <-- " + value.toString());
|
|
};
|
|
}
|
|
if (options.get) {
|
|
if (!sym) sym = await loadSymbols(symName);
|
|
wcOps.logGetSignal= function(varIdx, value) {
|
|
if (logger) logger.info("GET " + sym.labelIdx2Name[varIdx] + " --> " + value.toString());
|
|
};
|
|
}
|
|
if (options.trigger) {
|
|
if (!sym) sym = await loadSymbols(symName);
|
|
wcOps.logStartComponent= function(cIdx) {
|
|
if (logger) logger.info("START: " + sym.componentIdx2Name[cIdx]);
|
|
};
|
|
wcOps.logFinishComponent= function(cIdx) {
|
|
if (logger) logger.info("FINISH: " + sym.componentIdx2Name[cIdx]);
|
|
};
|
|
}
|
|
|
|
|
|
const wc = await WitnessCalculatorBuilder$2(wasm, wcOps);
|
|
const w = await wc.calculateWitness(input);
|
|
|
|
const fdWtns = await createBinFile(wtnsFileName, "wtns", 2, 2);
|
|
|
|
await write(fdWtns, w, wc.prime);
|
|
|
|
await fdWtns.close();
|
|
}
|
|
|
|
async function wtnsExportJson(wtnsFileName) {
|
|
|
|
const w = await read(wtnsFileName);
|
|
|
|
return w;
|
|
}
|
|
|
|
var wtns = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
calculate: wtnsCalculate,
|
|
debug: wtnsDebug,
|
|
exportJson: wtnsExportJson
|
|
});
|
|
|
|
const SUBARRAY_SIZE = 0x40000;
|
|
|
|
const BigArrayHandler = {
|
|
get: function(obj, prop) {
|
|
if (!isNaN(prop)) {
|
|
return obj.getElement(prop);
|
|
} else return obj[prop];
|
|
},
|
|
set: function(obj, prop, value) {
|
|
if (!isNaN(prop)) {
|
|
return obj.setElement(prop, value);
|
|
} else {
|
|
obj[prop] = value;
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
|
|
class _BigArray {
|
|
constructor (initSize) {
|
|
this.length = initSize || 0;
|
|
this.arr = new Array(SUBARRAY_SIZE);
|
|
|
|
for (let i=0; i<initSize; i+=SUBARRAY_SIZE) {
|
|
this.arr[i/SUBARRAY_SIZE] = new Array(Math.min(SUBARRAY_SIZE, initSize - i));
|
|
}
|
|
return this;
|
|
}
|
|
push () {
|
|
for (let i=0; i<arguments.length; i++) {
|
|
this.setElement (this.length, arguments[i]);
|
|
}
|
|
}
|
|
|
|
slice (f, t) {
|
|
const arr = new Array(t-f);
|
|
for (let i=f; i< t; i++) arr[i-f] = this.getElement(i);
|
|
return arr;
|
|
}
|
|
getElement(idx) {
|
|
idx = parseInt(idx);
|
|
const idx1 = Math.floor(idx / SUBARRAY_SIZE);
|
|
const idx2 = idx % SUBARRAY_SIZE;
|
|
return this.arr[idx1] ? this.arr[idx1][idx2] : undefined;
|
|
}
|
|
setElement(idx, value) {
|
|
idx = parseInt(idx);
|
|
const idx1 = Math.floor(idx / SUBARRAY_SIZE);
|
|
if (!this.arr[idx1]) {
|
|
this.arr[idx1] = new Array(SUBARRAY_SIZE);
|
|
}
|
|
const idx2 = idx % SUBARRAY_SIZE;
|
|
this.arr[idx1][idx2] = value;
|
|
if (idx >= this.length) this.length = idx+1;
|
|
return true;
|
|
}
|
|
getKeys() {
|
|
const newA = new BigArray();
|
|
for (let i=0; i<this.arr.length; i++) {
|
|
if (this.arr[i]) {
|
|
for (let j=0; j<this.arr[i].length; j++) {
|
|
if (typeof this.arr[i][j] !== "undefined") {
|
|
newA.push(i*SUBARRAY_SIZE+j);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return newA;
|
|
}
|
|
}
|
|
|
|
class BigArray {
|
|
constructor( initSize ) {
|
|
const obj = new _BigArray(initSize);
|
|
const extObj = new Proxy(obj, BigArrayHandler);
|
|
return extObj;
|
|
}
|
|
}
|
|
|
|
async function newZKey(r1csName, ptauName, zkeyName, logger) {
|
|
await blake2bWasm.ready();
|
|
const csHasher = blake2bWasm(64);
|
|
|
|
const {fd: fdR1cs, sections: sectionsR1cs} = await readBinFile(r1csName, "r1cs", 1);
|
|
const r1cs = await loadHeader(fdR1cs, sectionsR1cs);
|
|
|
|
const {fd: fdPTau, sections: sectionsPTau} = await readBinFile(ptauName, "ptau", 1);
|
|
const {curve, power} = await readPTauHeader(fdPTau, sectionsPTau);
|
|
|
|
const fdZKey = await createBinFile(zkeyName, "zkey", 1, 10);
|
|
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sG2 = curve.G2.F.n8*2;
|
|
|
|
if (r1cs.prime != curve.r) {
|
|
if (logger) logger.error("r1cs curve does not match powers of tau ceremony curve");
|
|
return -1;
|
|
}
|
|
|
|
const cirPower = log2$1(r1cs.nConstraints + r1cs.nPubInputs + r1cs.nOutputs +1 -1) +1;
|
|
|
|
if (cirPower > power+1) {
|
|
if (logger) logger.error(`circuit too big for this power of tau ceremony. ${r1cs.nConstraints}*2 > 2**${power}`);
|
|
return -1;
|
|
}
|
|
|
|
if (!sectionsPTau[12]) {
|
|
if (logger) logger.error("Powers of tau is not prepared.");
|
|
return -1;
|
|
}
|
|
|
|
const nPublic = r1cs.nOutputs + r1cs.nPubInputs;
|
|
const domainSize = 1 << cirPower;
|
|
|
|
// Write the header
|
|
///////////
|
|
await startWriteSection(fdZKey, 1);
|
|
await fdZKey.writeULE32(1); // Groth
|
|
await endWriteSection(fdZKey);
|
|
|
|
// Write the Groth header section
|
|
///////////
|
|
|
|
await startWriteSection(fdZKey, 2);
|
|
const primeQ = curve.q;
|
|
const n8q = (Math.floor( (Scalar$1.bitLength(primeQ) - 1) / 64) +1)*8;
|
|
|
|
const primeR = curve.r;
|
|
const n8r = (Math.floor( (Scalar$1.bitLength(primeR) - 1) / 64) +1)*8;
|
|
const Rr = Scalar$1.mod(Scalar$1.shl(1, n8r*8), primeR);
|
|
const R2r = curve.Fr.e(Scalar$1.mod(Scalar$1.mul(Rr,Rr), primeR));
|
|
|
|
await fdZKey.writeULE32(n8q);
|
|
await writeBigInt(fdZKey, primeQ, n8q);
|
|
await fdZKey.writeULE32(n8r);
|
|
await writeBigInt(fdZKey, primeR, n8r);
|
|
await fdZKey.writeULE32(r1cs.nVars); // Total number of bars
|
|
await fdZKey.writeULE32(nPublic); // Total number of public vars (not including ONE)
|
|
await fdZKey.writeULE32(domainSize); // domainSize
|
|
|
|
let bAlpha1;
|
|
bAlpha1 = await fdPTau.read(sG1, sectionsPTau[4][0].p);
|
|
await fdZKey.write(bAlpha1);
|
|
bAlpha1 = await curve.G1.batchLEMtoU(bAlpha1);
|
|
csHasher.update(bAlpha1);
|
|
|
|
let bBeta1;
|
|
bBeta1 = await fdPTau.read(sG1, sectionsPTau[5][0].p);
|
|
await fdZKey.write(bBeta1);
|
|
bBeta1 = await curve.G1.batchLEMtoU(bBeta1);
|
|
csHasher.update(bBeta1);
|
|
|
|
let bBeta2;
|
|
bBeta2 = await fdPTau.read(sG2, sectionsPTau[6][0].p);
|
|
await fdZKey.write(bBeta2);
|
|
bBeta2 = await curve.G2.batchLEMtoU(bBeta2);
|
|
csHasher.update(bBeta2);
|
|
|
|
const bg1 = new Uint8Array(sG1);
|
|
curve.G1.toRprLEM(bg1, 0, curve.G1.g);
|
|
const bg2 = new Uint8Array(sG2);
|
|
curve.G2.toRprLEM(bg2, 0, curve.G2.g);
|
|
const bg1U = new Uint8Array(sG1);
|
|
curve.G1.toRprUncompressed(bg1U, 0, curve.G1.g);
|
|
const bg2U = new Uint8Array(sG2);
|
|
curve.G2.toRprUncompressed(bg2U, 0, curve.G2.g);
|
|
|
|
await fdZKey.write(bg2); // gamma2
|
|
await fdZKey.write(bg1); // delta1
|
|
await fdZKey.write(bg2); // delta2
|
|
csHasher.update(bg2U); // gamma2
|
|
csHasher.update(bg1U); // delta1
|
|
csHasher.update(bg2U); // delta2
|
|
await endWriteSection(fdZKey);
|
|
|
|
|
|
const A = new BigArray(r1cs.nVars);
|
|
const B1 = new BigArray(r1cs.nVars);
|
|
const B2 = new BigArray(r1cs.nVars);
|
|
const C = new BigArray(r1cs.nVars- nPublic -1);
|
|
const IC = new Array(nPublic+1);
|
|
|
|
const buffCoeff = new Uint8Array(12 + curve.Fr.n8);
|
|
const buffCoeffV = new DataView(buffCoeff.buffer);
|
|
|
|
const lTauG1 = sectionsPTau[12][0].p + ((1 << cirPower) -1)*sG1;
|
|
const lTauG2 = sectionsPTau[13][0].p + ((1 << cirPower) -1)*sG2;
|
|
const lAlphaTauG1 = sectionsPTau[14][0].p + ((1 << cirPower) -1)*sG1;
|
|
const lBetaTauG1 = sectionsPTau[15][0].p + ((1 << cirPower) -1)*sG1;
|
|
|
|
await startWriteSection(fdZKey, 4);
|
|
await startReadUniqueSection(fdR1cs, sectionsR1cs, 2);
|
|
|
|
const pNCoefs = fdZKey.pos;
|
|
let nCoefs = 0;
|
|
fdZKey.pos += 4;
|
|
for (let c=0; c<r1cs.nConstraints; c++) {
|
|
if ((logger)&&(c%10000 == 0)) logger.debug(`processing constraints: ${c}/${r1cs.nConstraints}`);
|
|
const nA = await fdR1cs.readULE32();
|
|
for (let i=0; i<nA; i++) {
|
|
const s = await fdR1cs.readULE32();
|
|
const coef = await fdR1cs.read(r1cs.n8);
|
|
|
|
const l1 = lTauG1 + sG1*c;
|
|
const l2 = lBetaTauG1 + sG1*c;
|
|
if (typeof A[s] === "undefined") A[s] = [];
|
|
A[s].push([l1, coef]);
|
|
|
|
if (s <= nPublic) {
|
|
if (typeof IC[s] === "undefined") IC[s] = [];
|
|
IC[s].push([l2, coef]);
|
|
} else {
|
|
if (typeof C[s- nPublic -1] === "undefined") C[s- nPublic -1] = [];
|
|
C[s - nPublic -1].push([l2, coef]);
|
|
}
|
|
await writeCoef(0, c, s, coef);
|
|
nCoefs ++;
|
|
}
|
|
|
|
const nB = await fdR1cs.readULE32();
|
|
for (let i=0; i<nB; i++) {
|
|
const s = await fdR1cs.readULE32();
|
|
const coef = await fdR1cs.read(r1cs.n8);
|
|
|
|
const l1 = lTauG1 + sG1*c;
|
|
const l2 = lTauG2 + sG2*c;
|
|
const l3 = lAlphaTauG1 + sG1*c;
|
|
if (typeof B1[s] === "undefined") B1[s] = [];
|
|
B1[s].push([l1, coef]);
|
|
if (typeof B2[s] === "undefined") B2[s] = [];
|
|
B2[s].push([l2, coef]);
|
|
|
|
if (s <= nPublic) {
|
|
if (typeof IC[s] === "undefined") IC[s] = [];
|
|
IC[s].push([l3, coef]);
|
|
} else {
|
|
if (typeof C[s- nPublic -1] === "undefined") C[s- nPublic -1] = [];
|
|
C[s- nPublic -1].push([l3, coef]);
|
|
}
|
|
|
|
await writeCoef(1, c, s, coef);
|
|
nCoefs ++;
|
|
}
|
|
|
|
const nC = await fdR1cs.readULE32();
|
|
for (let i=0; i<nC; i++) {
|
|
const s = await fdR1cs.readULE32();
|
|
const coef = await fdR1cs.read(r1cs.n8);
|
|
|
|
const l1 = lTauG1 + sG1*c;
|
|
if (s <= nPublic) {
|
|
if (typeof IC[s] === "undefined") IC[s] = [];
|
|
IC[s].push([l1, coef]);
|
|
} else {
|
|
if (typeof C[s- nPublic -1] === "undefined") C[s- nPublic -1] = [];
|
|
C[s- nPublic -1].push([l1, coef]);
|
|
}
|
|
}
|
|
}
|
|
|
|
const bOne = new Uint8Array(curve.Fr.n8);
|
|
curve.Fr.toRprLE(bOne, 0, curve.Fr.e(1));
|
|
for (let s = 0; s <= nPublic ; s++) {
|
|
const l1 = lTauG1 + sG1*(r1cs.nConstraints + s);
|
|
const l2 = lBetaTauG1 + sG1*(r1cs.nConstraints + s);
|
|
if (typeof A[s] === "undefined") A[s] = [];
|
|
A[s].push([l1, bOne]);
|
|
if (typeof IC[s] === "undefined") IC[s] = [];
|
|
IC[s].push([l2, bOne]);
|
|
await writeCoef(0, r1cs.nConstraints + s, s, bOne);
|
|
nCoefs ++;
|
|
}
|
|
|
|
const oldPos = fdZKey.pos;
|
|
await fdZKey.writeULE32(nCoefs, pNCoefs);
|
|
fdZKey.pos = oldPos;
|
|
|
|
await endWriteSection(fdZKey);
|
|
await endReadSection(fdR1cs);
|
|
|
|
/*
|
|
zKey.hExps = new Array(zKey.domainSize-1);
|
|
for (let i=0; i< zKey.domainSize; i++) {
|
|
const t1 = await readEvaluation("tauG1", i);
|
|
const t2 = await readEvaluation("tauG1", i+zKey.domainSize);
|
|
zKey.hExps[i] = curve.G1.sub(t2, t1);
|
|
}
|
|
*/
|
|
|
|
await composeAndWritePoints(3, "G1", IC, "IC");
|
|
|
|
// Write Hs
|
|
await startWriteSection(fdZKey, 9);
|
|
const o = sectionsPTau[12][0].p + ((1 << (cirPower+1)) -1)*sG1;
|
|
for (let i=0; i< domainSize; i++) {
|
|
const buff = await fdPTau.read(sG1, o + (i*2+1)*sG1 );
|
|
await fdZKey.write(buff);
|
|
}
|
|
await endWriteSection(fdZKey);
|
|
await hashHPoints();
|
|
|
|
await composeAndWritePoints(8, "G1", C, "C");
|
|
await composeAndWritePoints(5, "G1", A, "A");
|
|
await composeAndWritePoints(6, "G1", B1, "B1");
|
|
await composeAndWritePoints(7, "G2", B2, "B2");
|
|
|
|
const csHash = csHasher.digest();
|
|
// Contributions section
|
|
await startWriteSection(fdZKey, 10);
|
|
await fdZKey.write(csHash);
|
|
await fdZKey.writeULE32(0);
|
|
await endWriteSection(fdZKey);
|
|
|
|
if (logger) logger.info(formatHash(csHash, "Circuit hash: "));
|
|
|
|
|
|
await fdZKey.close();
|
|
await fdPTau.close();
|
|
await fdR1cs.close();
|
|
|
|
return csHash;
|
|
|
|
async function writeCoef(a, c, s, coef) {
|
|
const n = curve.Fr.fromRprLE(coef, 0);
|
|
const nR2 = curve.Fr.mul(n, R2r);
|
|
buffCoeffV.setUint32(0, a, true);
|
|
buffCoeffV.setUint32(4, c, true);
|
|
buffCoeffV.setUint32(8, s, true);
|
|
curve.Fr.toRprLE(buffCoeff, 12, nR2);
|
|
await fdZKey.write(buffCoeff);
|
|
}
|
|
|
|
async function composeAndWritePoints(idSection, groupName, arr, sectionName) {
|
|
const CHUNK_SIZE= 1<<16;
|
|
|
|
hashU32(arr.length);
|
|
await startWriteSection(fdZKey, idSection);
|
|
|
|
for (let i=0; i<arr.length; i+= CHUNK_SIZE) {
|
|
if (logger) logger.debug(`Writing points ${sectionName}: ${i}/${arr.length}`);
|
|
const n = Math.min(arr.length -i, CHUNK_SIZE);
|
|
const subArr = arr.slice(i, i + n);
|
|
await composeAndWritePointsChunk(groupName, subArr);
|
|
}
|
|
await endWriteSection(fdZKey);
|
|
}
|
|
|
|
async function composeAndWritePointsChunk(groupName, arr) {
|
|
const concurrency= curve.tm.concurrency;
|
|
const nElementsPerThread = Math.floor(arr.length / concurrency);
|
|
const opPromises = [];
|
|
const G = curve[groupName];
|
|
for (let i=0; i<concurrency; i++) {
|
|
let n;
|
|
if (i< concurrency-1) {
|
|
n = nElementsPerThread;
|
|
} else {
|
|
n = arr.length - i*nElementsPerThread;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const subArr = arr.slice(i*nElementsPerThread, i*nElementsPerThread + n);
|
|
opPromises.push(composeAndWritePointsThread(groupName, subArr));
|
|
}
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
for (let i=0; i<result.length; i++) {
|
|
await fdZKey.write(result[i][0]);
|
|
const buff = await G.batchLEMtoU(result[i][0]);
|
|
csHasher.update(buff);
|
|
}
|
|
}
|
|
|
|
async function composeAndWritePointsThread(groupName, arr) {
|
|
const G = curve[groupName];
|
|
const sGin = G.F.n8*2;
|
|
const sGmid = G.F.n8*3;
|
|
const sGout = G.F.n8*2;
|
|
let fnExp, fnMultiExp, fnBatchToAffine, fnZero;
|
|
if (groupName == "G1") {
|
|
fnExp = "g1m_timesScalarAffine";
|
|
fnMultiExp = "g1m_multiexpAffine";
|
|
fnBatchToAffine = "g1m_batchToAffine";
|
|
fnZero = "g1m_zero";
|
|
} else if (groupName == "G2") {
|
|
fnExp = "g2m_timesScalarAffine";
|
|
fnMultiExp = "g2m_multiexpAffine";
|
|
fnBatchToAffine = "g2m_batchToAffine";
|
|
fnZero = "g2m_zero";
|
|
} else {
|
|
throw new Error("Invalid group");
|
|
}
|
|
let acc =0;
|
|
for (let i=0; i<arr.length; i++) acc += arr[i] ? arr[i].length : 0;
|
|
const bBases = new Uint8Array(acc*sGin);
|
|
const bScalars = new Uint8Array(acc*curve.Fr.n8);
|
|
let pB =0;
|
|
let pS =0;
|
|
for (let i=0; i<arr.length; i++) {
|
|
if (!arr[i]) continue;
|
|
for (let j=0; j<arr[i].length; j++) {
|
|
const bBase = await fdPTau.read(sGin, arr[i][j][0]);
|
|
bBases.set(bBase, pB);
|
|
pB += sGin;
|
|
bScalars.set(arr[i][j][1], pS);
|
|
pS += curve.Fr.n8;
|
|
}
|
|
}
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: bBases});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: bScalars});
|
|
task.push({cmd: "ALLOC", var: 2, len: arr.length*sGmid});
|
|
pB = 0;
|
|
pS = 0;
|
|
let pD =0;
|
|
for (let i=0; i<arr.length; i++) {
|
|
if (!arr[i]) {
|
|
task.push({cmd: "CALL", fnName: fnZero, params: [
|
|
{var: 2, offset: pD}
|
|
]});
|
|
pD += sGmid;
|
|
continue;
|
|
}
|
|
if (arr[i].length == 1) {
|
|
task.push({cmd: "CALL", fnName: fnExp, params: [
|
|
{var: 0, offset: pB},
|
|
{var: 1, offset: pS},
|
|
{val: curve.Fr.n8},
|
|
{var: 2, offset: pD}
|
|
]});
|
|
} else {
|
|
task.push({cmd: "CALL", fnName: fnMultiExp, params: [
|
|
{var: 0, offset: pB},
|
|
{var: 1, offset: pS},
|
|
{val: curve.Fr.n8},
|
|
{val: arr[i].length},
|
|
{var: 2, offset: pD}
|
|
]});
|
|
}
|
|
pB += sGin*arr[i].length;
|
|
pS += curve.Fr.n8*arr[i].length;
|
|
pD += sGmid;
|
|
}
|
|
task.push({cmd: "CALL", fnName: fnBatchToAffine, params: [
|
|
{var: 2},
|
|
{val: arr.length},
|
|
{var: 2},
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 2, len: arr.length*sGout});
|
|
|
|
const res = await curve.tm.queueAction(task);
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
async function hashHPoints() {
|
|
const CHUNK_SIZE = 1<<14;
|
|
|
|
hashU32(domainSize-1);
|
|
|
|
for (let i=0; i<domainSize-1; i+= CHUNK_SIZE) {
|
|
if (logger) logger.debug(`HashingHPoints: ${i}/${domainSize}`);
|
|
const n = Math.min(domainSize-1, CHUNK_SIZE);
|
|
await hashHPointsChunk(i, n);
|
|
}
|
|
}
|
|
|
|
async function hashHPointsChunk(offset, nPoints) {
|
|
const buff1 = await fdPTau.read(nPoints *sG1, sectionsPTau[2][0].p + (offset + domainSize)*sG1);
|
|
const buff2 = await fdPTau.read(nPoints *sG1, sectionsPTau[2][0].p + offset*sG1);
|
|
const concurrency= curve.tm.concurrency;
|
|
const nPointsPerThread = Math.floor(nPoints / concurrency);
|
|
const opPromises = [];
|
|
for (let i=0; i<concurrency; i++) {
|
|
let n;
|
|
if (i< concurrency-1) {
|
|
n = nPointsPerThread;
|
|
} else {
|
|
n = nPoints - i*nPointsPerThread;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const subBuff1 = buff1.slice(i*nPointsPerThread*sG1, (i*nPointsPerThread+n)*sG1);
|
|
const subBuff2 = buff2.slice(i*nPointsPerThread*sG1, (i*nPointsPerThread+n)*sG1);
|
|
opPromises.push(hashHPointsThread(subBuff1, subBuff2));
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
for (let i=0; i<result.length; i++) {
|
|
csHasher.update(result[i][0]);
|
|
}
|
|
}
|
|
|
|
async function hashHPointsThread(buff1, buff2) {
|
|
const nPoints = buff1.byteLength/sG1;
|
|
const sGmid = curve.G1.F.n8*3;
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: buff1});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: buff2});
|
|
task.push({cmd: "ALLOC", var: 2, len: nPoints*sGmid});
|
|
for (let i=0; i<nPoints; i++) {
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: "g1m_subAffine",
|
|
params: [
|
|
{var: 0, offset: i*sG1},
|
|
{var: 1, offset: i*sG1},
|
|
{var: 2, offset: i*sGmid},
|
|
]
|
|
});
|
|
}
|
|
task.push({cmd: "CALL", fnName: "g1m_batchToAffine", params: [
|
|
{var: 2},
|
|
{val: nPoints},
|
|
{var: 2},
|
|
]});
|
|
task.push({cmd: "CALL", fnName: "g1m_batchLEMtoU", params: [
|
|
{var: 2},
|
|
{val: nPoints},
|
|
{var: 2},
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 2, len: nPoints*sG1});
|
|
|
|
const res = await curve.tm.queueAction(task);
|
|
|
|
return res;
|
|
}
|
|
|
|
function hashU32(n) {
|
|
const buff = new Uint8Array(4);
|
|
const buffV = new DataView(buff.buffer, buff.byteOffset, buff.byteLength);
|
|
buffV.setUint32(0, n, false);
|
|
csHasher.update(buff);
|
|
}
|
|
|
|
}
|
|
|
|
async function phase2exportMPCParams(zkeyName, mpcparamsName, logger) {
|
|
|
|
const {fd: fdZKey, sections: sectionsZKey} = await readBinFile(zkeyName, "zkey", 2);
|
|
const zkey = await readHeader(fdZKey, sectionsZKey, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sG2 = curve.G2.F.n8*2;
|
|
|
|
const mpcParams = await readMPCParams(fdZKey, curve, sectionsZKey);
|
|
|
|
const fdMPCParams = await createOverride(mpcparamsName);
|
|
|
|
/////////////////////
|
|
// Verification Key Section
|
|
/////////////////////
|
|
await writeG1(zkey.vk_alpha_1);
|
|
await writeG1(zkey.vk_beta_1);
|
|
await writeG2(zkey.vk_beta_2);
|
|
await writeG2(zkey.vk_gamma_2);
|
|
await writeG1(zkey.vk_delta_1);
|
|
await writeG2(zkey.vk_delta_2);
|
|
|
|
// IC
|
|
let buffBasesIC;
|
|
buffBasesIC = await readFullSection(fdZKey, sectionsZKey, 3);
|
|
buffBasesIC = await curve.G1.batchLEMtoU(buffBasesIC);
|
|
|
|
await writePointArray("G1", buffBasesIC);
|
|
|
|
/////////////////////
|
|
// h Section
|
|
/////////////////////
|
|
const buffBasesH_Lodd = await readFullSection(fdZKey, sectionsZKey, 9);
|
|
|
|
let buffBasesH_Tau;
|
|
buffBasesH_Tau = await curve.G1.fft(buffBasesH_Lodd, "affine", "jacobian", logger);
|
|
buffBasesH_Tau = await curve.G1.batchApplyKey(buffBasesH_Tau, curve.Fr.neg(curve.Fr.e(2)), curve.Fr.w[zkey.power+1], "jacobian", "affine", logger);
|
|
|
|
// Remove last element. (The degree of H will be allways m-2)
|
|
buffBasesH_Tau = buffBasesH_Tau.slice(0, buffBasesH_Tau.byteLength - sG1);
|
|
buffBasesH_Tau = await curve.G1.batchLEMtoU(buffBasesH_Tau);
|
|
await writePointArray("G1", buffBasesH_Tau);
|
|
|
|
/////////////////////
|
|
// L section
|
|
/////////////////////
|
|
let buffBasesC;
|
|
buffBasesC = await readFullSection(fdZKey, sectionsZKey, 8);
|
|
buffBasesC = await curve.G1.batchLEMtoU(buffBasesC);
|
|
await writePointArray("G1", buffBasesC);
|
|
|
|
/////////////////////
|
|
// A Section (C section)
|
|
/////////////////////
|
|
let buffBasesA;
|
|
buffBasesA = await readFullSection(fdZKey, sectionsZKey, 5);
|
|
buffBasesA = await curve.G1.batchLEMtoU(buffBasesA);
|
|
await writePointArray("G1", buffBasesA);
|
|
|
|
/////////////////////
|
|
// B1 Section
|
|
/////////////////////
|
|
let buffBasesB1;
|
|
buffBasesB1 = await readFullSection(fdZKey, sectionsZKey, 6);
|
|
buffBasesB1 = await curve.G1.batchLEMtoU(buffBasesB1);
|
|
await writePointArray("G1", buffBasesB1);
|
|
|
|
/////////////////////
|
|
// B2 Section
|
|
/////////////////////
|
|
let buffBasesB2;
|
|
buffBasesB2 = await readFullSection(fdZKey, sectionsZKey, 7);
|
|
buffBasesB2 = await curve.G2.batchLEMtoU(buffBasesB2);
|
|
await writePointArray("G2", buffBasesB2);
|
|
|
|
await fdMPCParams.write(mpcParams.csHash);
|
|
await writeU32(mpcParams.contributions.length);
|
|
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
const c = mpcParams.contributions[i];
|
|
await writeG1(c.deltaAfter);
|
|
await writeG1(c.delta.g1_s);
|
|
await writeG1(c.delta.g1_sx);
|
|
await writeG2(c.delta.g2_spx);
|
|
await fdMPCParams.write(c.transcript);
|
|
}
|
|
|
|
await fdZKey.close();
|
|
await fdMPCParams.close();
|
|
|
|
async function writeG1(P) {
|
|
const buff = new Uint8Array(sG1);
|
|
curve.G1.toRprUncompressed(buff, 0, P);
|
|
await fdMPCParams.write(buff);
|
|
}
|
|
|
|
async function writeG2(P) {
|
|
const buff = new Uint8Array(sG2);
|
|
curve.G2.toRprUncompressed(buff, 0, P);
|
|
await fdMPCParams.write(buff);
|
|
}
|
|
|
|
async function writePointArray(groupName, buff) {
|
|
let sG;
|
|
if (groupName == "G1") {
|
|
sG = sG1;
|
|
} else {
|
|
sG = sG2;
|
|
}
|
|
|
|
const buffSize = new Uint8Array(4);
|
|
const buffSizeV = new DataView(buffSize.buffer, buffSize.byteOffset, buffSize.byteLength);
|
|
buffSizeV.setUint32(0, buff.byteLength / sG, false);
|
|
|
|
await fdMPCParams.write(buffSize);
|
|
await fdMPCParams.write(buff);
|
|
}
|
|
|
|
async function writeU32(n) {
|
|
const buffSize = new Uint8Array(4);
|
|
const buffSizeV = new DataView(buffSize.buffer, buffSize.byteOffset, buffSize.byteLength);
|
|
buffSizeV.setUint32(0, n, false);
|
|
|
|
await fdMPCParams.write(buffSize);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
async function phase2importMPCParams(zkeyNameOld, mpcparamsName, zkeyNameNew, name, logger) {
|
|
|
|
const {fd: fdZKeyOld, sections: sectionsZKeyOld} = await readBinFile(zkeyNameOld, "zkey", 2);
|
|
const zkeyHeader = await readHeader(fdZKeyOld, sectionsZKeyOld, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkeyHeader.q);
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sG2 = curve.G2.F.n8*2;
|
|
|
|
const oldMPCParams = await readMPCParams(fdZKeyOld, curve, sectionsZKeyOld);
|
|
const newMPCParams = {};
|
|
|
|
const fdMPCParams = await readExisting$2(mpcparamsName);
|
|
|
|
fdMPCParams.pos =
|
|
sG1*3 + sG2*3 + // vKey
|
|
8 + sG1*zkeyHeader.nVars + // IC + C
|
|
4 + sG1*(zkeyHeader.domainSize-1) + // H
|
|
4 + sG1*zkeyHeader.nVars + // A
|
|
4 + sG1*zkeyHeader.nVars + // B1
|
|
4 + sG2*zkeyHeader.nVars; // B2
|
|
|
|
// csHash
|
|
newMPCParams.csHash = await fdMPCParams.read(64);
|
|
|
|
const nConttributions = await fdMPCParams.readUBE32();
|
|
newMPCParams.contributions = [];
|
|
for (let i=0; i<nConttributions; i++) {
|
|
const c = { delta:{} };
|
|
c.deltaAfter = await readG1(fdMPCParams);
|
|
c.delta.g1_s = await readG1(fdMPCParams);
|
|
c.delta.g1_sx = await readG1(fdMPCParams);
|
|
c.delta.g2_spx = await readG2(fdMPCParams);
|
|
c.transcript = await fdMPCParams.read(64);
|
|
if (i<oldMPCParams.contributions.length) {
|
|
c.type = oldMPCParams.contributions[i].type;
|
|
if (c.type==1) {
|
|
c.beaconHash = oldMPCParams.contributions[i].beaconHash;
|
|
c.numIterationsExp = oldMPCParams.contributions[i].numIterationsExp;
|
|
}
|
|
if (oldMPCParams.contributions[i].name) {
|
|
c.name = oldMPCParams.contributions[i].name;
|
|
}
|
|
}
|
|
newMPCParams.contributions.push(c);
|
|
}
|
|
|
|
if (!hashIsEqual(newMPCParams.csHash, oldMPCParams.csHash)) {
|
|
if (logger) logger.error("Hash of the original circuit does not match with the MPC one");
|
|
return false;
|
|
}
|
|
|
|
if (oldMPCParams.contributions.length > newMPCParams.contributions.length) {
|
|
if (logger) logger.error("The impoerted file does not include new contributions");
|
|
return false;
|
|
}
|
|
|
|
for (let i=0; i<oldMPCParams.contributions.length; i++) {
|
|
if (!contributionIsEqual(oldMPCParams.contributions[i], newMPCParams.contributions[i])) {
|
|
if (logger) logger.error(`Previos contribution ${i} does not match`);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
// Set the same name to all new controbutions
|
|
if (name) {
|
|
for (let i=oldMPCParams.contributions.length; i<newMPCParams.contributions.length; i++) {
|
|
newMPCParams.contributions[i].name = name;
|
|
}
|
|
}
|
|
|
|
const fdZKeyNew = await createBinFile(zkeyNameNew, "zkey", 1, 10);
|
|
fdMPCParams.pos = 0;
|
|
|
|
// Header
|
|
fdMPCParams.pos += sG1; // ignore alpha1 (keep original)
|
|
fdMPCParams.pos += sG1; // ignore beta1
|
|
fdMPCParams.pos += sG2; // ignore beta2
|
|
fdMPCParams.pos += sG2; // ignore gamma2
|
|
zkeyHeader.vk_delta_1 = await readG1(fdMPCParams);
|
|
zkeyHeader.vk_delta_2 = await readG2(fdMPCParams);
|
|
await writeHeader(fdZKeyNew, zkeyHeader);
|
|
|
|
// IC (Keep original)
|
|
const nIC = await fdMPCParams.readUBE32();
|
|
if (nIC != zkeyHeader.nPublic +1) {
|
|
if (logger) logger.error("Invalid number of points in IC");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
fdMPCParams.pos += sG1*(zkeyHeader.nPublic+1);
|
|
await copySection(fdZKeyOld, sectionsZKeyOld, fdZKeyNew, 3);
|
|
|
|
// Coeffs (Keep original)
|
|
await copySection(fdZKeyOld, sectionsZKeyOld, fdZKeyNew, 4);
|
|
|
|
// H Section
|
|
const nH = await fdMPCParams.readUBE32();
|
|
if (nH != zkeyHeader.domainSize-1) {
|
|
if (logger) logger.error("Invalid number of points in H");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
let buffH;
|
|
const buffTauU = await fdMPCParams.read(sG1*(zkeyHeader.domainSize-1));
|
|
const buffTauLEM = await curve.G1.batchUtoLEM(buffTauU);
|
|
buffH = new Uint8Array(zkeyHeader.domainSize*sG1);
|
|
buffH.set(buffTauLEM); // Let the last one to zero.
|
|
curve.G1.toRprLEM(buffH, sG1*(zkeyHeader.domainSize-1), curve.G1.zeroAffine);
|
|
const n2Inv = curve.Fr.neg(curve.Fr.inv(curve.Fr.e(2)));
|
|
const wInv = curve.Fr.inv(curve.Fr.w[zkeyHeader.power+1]);
|
|
buffH = await curve.G1.batchApplyKey(buffH, n2Inv, wInv, "affine", "jacobian", logger);
|
|
buffH = await curve.G1.ifft(buffH, "jacobian", "affine", logger);
|
|
await startWriteSection(fdZKeyNew, 9);
|
|
await fdZKeyNew.write(buffH);
|
|
await endWriteSection(fdZKeyNew);
|
|
|
|
// C Secion (L section)
|
|
const nL = await fdMPCParams.readUBE32();
|
|
if (nL != (zkeyHeader.nVars-zkeyHeader.nPublic-1)) {
|
|
if (logger) logger.error("Invalid number of points in L");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
let buffL;
|
|
buffL = await fdMPCParams.read(sG1*(zkeyHeader.nVars-zkeyHeader.nPublic-1));
|
|
buffL = await curve.G1.batchUtoLEM(buffL);
|
|
await startWriteSection(fdZKeyNew, 8);
|
|
await fdZKeyNew.write(buffL);
|
|
await endWriteSection(fdZKeyNew);
|
|
|
|
// A Section
|
|
const nA = await fdMPCParams.readUBE32();
|
|
if (nA != zkeyHeader.nVars) {
|
|
if (logger) logger.error("Invalid number of points in A");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
fdMPCParams.pos += sG1*(zkeyHeader.nVars);
|
|
await copySection(fdZKeyOld, sectionsZKeyOld, fdZKeyNew, 5);
|
|
|
|
// B1 Section
|
|
const nB1 = await fdMPCParams.readUBE32();
|
|
if (nB1 != zkeyHeader.nVars) {
|
|
if (logger) logger.error("Invalid number of points in B1");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
fdMPCParams.pos += sG1*(zkeyHeader.nVars);
|
|
await copySection(fdZKeyOld, sectionsZKeyOld, fdZKeyNew, 6);
|
|
|
|
// B2 Section
|
|
const nB2 = await fdMPCParams.readUBE32();
|
|
if (nB2 != zkeyHeader.nVars) {
|
|
if (logger) logger.error("Invalid number of points in B2");
|
|
await fdZKeyNew.discard();
|
|
return false;
|
|
}
|
|
fdMPCParams.pos += sG2*(zkeyHeader.nVars);
|
|
await copySection(fdZKeyOld, sectionsZKeyOld, fdZKeyNew, 7);
|
|
|
|
await writeMPCParams(fdZKeyNew, curve, newMPCParams);
|
|
|
|
await fdMPCParams.close();
|
|
await fdZKeyNew.close();
|
|
await fdZKeyOld.close();
|
|
|
|
return true;
|
|
|
|
async function readG1(fd) {
|
|
const buff = await fd.read(curve.G1.F.n8*2);
|
|
return curve.G1.fromRprUncompressed(buff, 0);
|
|
}
|
|
|
|
async function readG2(fd) {
|
|
const buff = await fd.read(curve.G2.F.n8*2);
|
|
return curve.G2.fromRprUncompressed(buff, 0);
|
|
}
|
|
|
|
|
|
function contributionIsEqual(c1, c2) {
|
|
if (!curve.G1.eq(c1.deltaAfter , c2.deltaAfter)) return false;
|
|
if (!curve.G1.eq(c1.delta.g1_s , c2.delta.g1_s)) return false;
|
|
if (!curve.G1.eq(c1.delta.g1_sx , c2.delta.g1_sx)) return false;
|
|
if (!curve.G2.eq(c1.delta.g2_spx , c2.delta.g2_spx)) return false;
|
|
if (!hashIsEqual(c1.transcript, c2.transcript)) return false;
|
|
return true;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
const sameRatio$2 = sameRatio;
|
|
|
|
|
|
|
|
async function phase2verify(r1csFileName, pTauFileName, zkeyFileName, logger) {
|
|
|
|
let sr;
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd, sections} = await readBinFile(zkeyFileName, "zkey", 2);
|
|
const zkey = await readHeader(fd, sections, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sG2 = curve.G2.F.n8*2;
|
|
|
|
const mpcParams = await readMPCParams(fd, curve, sections);
|
|
|
|
const accumulatedHasher = blake2bWasm(64);
|
|
accumulatedHasher.update(mpcParams.csHash);
|
|
let curDelta = curve.G1.g;
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
const c = mpcParams.contributions[i];
|
|
const ourHasher = cloneHasher(accumulatedHasher);
|
|
|
|
hashG1(ourHasher, curve, c.delta.g1_s);
|
|
hashG1(ourHasher, curve, c.delta.g1_sx);
|
|
|
|
if (!hashIsEqual(ourHasher.digest(), c.transcript)) {
|
|
console.log(`INVALID(${i}): Inconsistent transcript `);
|
|
return false;
|
|
}
|
|
|
|
const delta_g2_sp = hashToG2(curve, c.transcript);
|
|
|
|
sr = await sameRatio$2(curve, c.delta.g1_s, c.delta.g1_sx, delta_g2_sp, c.delta.g2_spx);
|
|
if (sr !== true) {
|
|
console.log(`INVALID(${i}): public key G1 and G2 do not have the same ration `);
|
|
return false;
|
|
}
|
|
|
|
sr = await sameRatio$2(curve, curDelta, c.deltaAfter, delta_g2_sp, c.delta.g2_spx);
|
|
if (sr !== true) {
|
|
console.log(`INVALID(${i}): deltaAfter does not fillow the public key `);
|
|
return false;
|
|
}
|
|
|
|
if (c.type == 1) {
|
|
const rng = rngFromBeaconParams(c.beaconHash, c.numIterationsExp);
|
|
const expected_prvKey = curve.Fr.fromRng(rng);
|
|
const expected_g1_s = curve.G1.toAffine(curve.G1.fromRng(rng));
|
|
const expected_g1_sx = curve.G1.toAffine(curve.G1.timesFr(expected_g1_s, expected_prvKey));
|
|
if (curve.G1.eq(expected_g1_s, c.delta.g1_s) !== true) {
|
|
console.log(`INVALID(${i}): Key of the beacon does not match. g1_s `);
|
|
return false;
|
|
}
|
|
if (curve.G1.eq(expected_g1_sx, c.delta.g1_sx) !== true) {
|
|
console.log(`INVALID(${i}): Key of the beacon does not match. g1_sx `);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
hashPubKey(accumulatedHasher, curve, c);
|
|
|
|
const contributionHasher = blake2bWasm(64);
|
|
hashPubKey(contributionHasher, curve, c);
|
|
|
|
c.contributionHash = contributionHasher.digest();
|
|
|
|
curDelta = c.deltaAfter;
|
|
}
|
|
|
|
|
|
|
|
// const initFileName = "~" + zkeyFileName + ".init";
|
|
const initFileName = {type: "mem"};
|
|
await newZKey(r1csFileName, pTauFileName, initFileName);
|
|
|
|
const {fd: fdInit, sections: sectionsInit} = await readBinFile(initFileName, "zkey", 2);
|
|
const zkeyInit = await readHeader(fdInit, sectionsInit, "groth16");
|
|
|
|
if ( (!Scalar$1.eq(zkeyInit.q, zkey.q))
|
|
||(!Scalar$1.eq(zkeyInit.r, zkey.r))
|
|
||(zkeyInit.n8q != zkey.n8q)
|
|
||(zkeyInit.n8r != zkey.n8r))
|
|
{
|
|
if (logger) logger.error("INVALID: Different curves");
|
|
return false;
|
|
}
|
|
|
|
if ( (zkeyInit.nVars != zkey.nVars)
|
|
||(zkeyInit.nPublic != zkey.nPublic)
|
|
||(zkeyInit.domainSize != zkey.domainSize))
|
|
{
|
|
if (logger) logger.error("INVALID: Different circuit parameters");
|
|
return false;
|
|
}
|
|
|
|
if (!curve.G1.eq(zkey.vk_alpha_1, zkeyInit.vk_alpha_1)) {
|
|
if (logger) logger.error("INVALID: Invalid alpha1");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(zkey.vk_beta_1, zkeyInit.vk_beta_1)) {
|
|
if (logger) logger.error("INVALID: Invalid beta1");
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(zkey.vk_beta_2, zkeyInit.vk_beta_2)) {
|
|
if (logger) logger.error("INVALID: Invalid beta2");
|
|
return false;
|
|
}
|
|
if (!curve.G2.eq(zkey.vk_gamma_2, zkeyInit.vk_gamma_2)) {
|
|
if (logger) logger.error("INVALID: Invalid gamma2");
|
|
return false;
|
|
}
|
|
if (!curve.G1.eq(zkey.vk_delta_1, curDelta)) {
|
|
if (logger) logger.error("INVALID: Invalud delta1");
|
|
return false;
|
|
}
|
|
sr = await sameRatio$2(curve, curve.G1.g, curDelta, curve.G2.g, zkey.vk_delta_2);
|
|
if (sr !== true) {
|
|
if (logger) logger.error("INVALID: Invalud delta2");
|
|
return false;
|
|
}
|
|
|
|
const mpcParamsInit = await readMPCParams(fdInit, curve, sectionsInit);
|
|
if (!hashIsEqual(mpcParams.csHash, mpcParamsInit.csHash)) {
|
|
if (logger) logger.error("INVALID: Circuit does not match");
|
|
return false;
|
|
}
|
|
|
|
// Check sizes of sections
|
|
if (sections[8][0].size != sG1*(zkey.nVars-zkey.nPublic-1)) {
|
|
if (logger) logger.error("INVALID: Invalid L section size");
|
|
return false;
|
|
}
|
|
|
|
if (sections[9][0].size != sG1*(zkey.domainSize)) {
|
|
if (logger) logger.error("INVALID: Invalid H section size");
|
|
return false;
|
|
}
|
|
|
|
let ss;
|
|
ss = await sectionIsEqual(fd, sections, fdInit, sectionsInit, 3);
|
|
if (!ss) {
|
|
if (logger) logger.error("INVALID: IC section is not identical");
|
|
return false;
|
|
}
|
|
|
|
ss = await sectionIsEqual(fd, sections, fdInit, sectionsInit, 4);
|
|
if (!ss) {
|
|
if (logger) logger.error("Coeffs section is not identical");
|
|
return false;
|
|
}
|
|
|
|
ss = await sectionIsEqual(fd, sections, fdInit, sectionsInit, 5);
|
|
if (!ss) {
|
|
if (logger) logger.error("A section is not identical");
|
|
return false;
|
|
}
|
|
|
|
ss = await sectionIsEqual(fd, sections, fdInit, sectionsInit, 6);
|
|
if (!ss) {
|
|
if (logger) logger.error("B1 section is not identical");
|
|
return false;
|
|
}
|
|
|
|
ss = await sectionIsEqual(fd, sections, fdInit, sectionsInit, 7);
|
|
if (!ss) {
|
|
if (logger) logger.error("B2 section is not identical");
|
|
return false;
|
|
}
|
|
|
|
// Check L
|
|
sr = await sectionHasSameRatio("G1", fdInit, sectionsInit, fd, sections, 8, zkey.vk_delta_2, zkeyInit.vk_delta_2, "L section");
|
|
if (sr!==true) {
|
|
if (logger) logger.error("L section does not match");
|
|
return false;
|
|
}
|
|
|
|
// Check H
|
|
sr = await sameRatioH();
|
|
if (sr!==true) {
|
|
if (logger) logger.error("H section does not match");
|
|
return false;
|
|
}
|
|
|
|
if (logger) logger.info(formatHash(mpcParams.csHash, "Circuit Hash: "));
|
|
|
|
await fd.close();
|
|
await fdInit.close();
|
|
|
|
for (let i=mpcParams.contributions.length-1; i>=0; i--) {
|
|
const c = mpcParams.contributions[i];
|
|
if (logger) logger.info("-------------------------");
|
|
if (logger) logger.info(formatHash(c.contributionHash, `contribution #${i+1} ${c.name ? c.name : ""}:`));
|
|
if (c.type == 1) {
|
|
if (logger) logger.info(`Beacon generator: ${byteArray2hex(c.beaconHash)}`);
|
|
if (logger) logger.info(`Beacon iterations Exp: ${c.numIterationsExp}`);
|
|
}
|
|
}
|
|
if (logger) logger.info("-------------------------");
|
|
|
|
if (logger) logger.info("ZKey Ok!");
|
|
|
|
return true;
|
|
|
|
|
|
async function sectionHasSameRatio(groupName, fd1, sections1, fd2, sections2, idSection, g2sp, g2spx, sectionName) {
|
|
const MAX_CHUNK_SIZE = 1<<20;
|
|
const G = curve[groupName];
|
|
const sG = G.F.n8*2;
|
|
await startReadUniqueSection(fd1, sections1, idSection);
|
|
await startReadUniqueSection(fd2, sections2, idSection);
|
|
|
|
let R1 = G.zero;
|
|
let R2 = G.zero;
|
|
|
|
const nPoints = sections1[idSection][0].size / sG;
|
|
|
|
for (let i=0; i<nPoints; i += MAX_CHUNK_SIZE) {
|
|
if (logger) logger.debug(`Same ratio check ${sectionName}: ${i}/${nPoints}`);
|
|
const n = Math.min(nPoints - i, MAX_CHUNK_SIZE);
|
|
const bases1 = await fd1.read(n*sG);
|
|
const bases2 = await fd2.read(n*sG);
|
|
|
|
const scalars = new Uint8Array(4*n);
|
|
crypto.randomFillSync(scalars);
|
|
|
|
|
|
const r1 = await G.multiExpAffine(bases1, scalars);
|
|
const r2 = await G.multiExpAffine(bases2, scalars);
|
|
|
|
R1 = G.add(R1, r1);
|
|
R2 = G.add(R2, r2);
|
|
}
|
|
await endReadSection(fd1);
|
|
await endReadSection(fd2);
|
|
|
|
if (nPoints == 0) return true;
|
|
|
|
sr = await sameRatio$2(curve, R1, R2, g2sp, g2spx);
|
|
if (sr !== true) return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
async function sameRatioH() {
|
|
const MAX_CHUNK_SIZE = 1<<20;
|
|
const G = curve.G1;
|
|
const sG = G.F.n8*2;
|
|
|
|
const {fd: fdPTau, sections: sectionsPTau} = await readBinFile(pTauFileName, "ptau", 1);
|
|
|
|
let buff_r = new Uint8Array(zkey.domainSize * zkey.n8r);
|
|
|
|
const seed= new Array(8);
|
|
for (let i=0; i<8; i++) {
|
|
seed[i] = crypto.randomBytes(4).readUInt32BE(0, true);
|
|
}
|
|
const rng = new ChaCha(seed);
|
|
for (let i=0; i<zkey.domainSize-1; i++) { // Note that last one is zero
|
|
const e = curve.Fr.fromRng(rng);
|
|
curve.Fr.toRprLE(buff_r, i*zkey.n8r, e);
|
|
}
|
|
curve.Fr.toRprLE(buff_r, (zkey.domainSize-1)*zkey.n8r, curve.Fr.zero);
|
|
|
|
let R1 = G.zero;
|
|
for (let i=0; i<zkey.domainSize; i += MAX_CHUNK_SIZE) {
|
|
if (logger) logger.debug(`H Verificaition(tau): ${i}/${zkey.domainSize}`);
|
|
const n = Math.min(zkey.domainSize - i, MAX_CHUNK_SIZE);
|
|
|
|
const buff1 = await fdPTau.read(sG*n, sectionsPTau[2][0].p + zkey.domainSize*sG + i*MAX_CHUNK_SIZE*sG);
|
|
const buff2 = await fdPTau.read(sG*n, sectionsPTau[2][0].p + i*MAX_CHUNK_SIZE*sG);
|
|
|
|
const buffB = await batchSubstract(buff1, buff2);
|
|
const buffS = buff_r.slice((i*MAX_CHUNK_SIZE)*zkey.n8r, (i*MAX_CHUNK_SIZE+n)*zkey.n8r);
|
|
const r = await G.multiExpAffine(buffB, buffS);
|
|
|
|
R1 = G.add(R1, r);
|
|
}
|
|
|
|
// Caluclate odd coeficients in transformed domain
|
|
|
|
buff_r = await curve.Fr.batchToMontgomery(buff_r);
|
|
// const first = curve.Fr.neg(curve.Fr.inv(curve.Fr.e(2)));
|
|
// Works*2 const first = curve.Fr.neg(curve.Fr.e(2));
|
|
const first = curve.Fr.neg(curve.Fr.e(2));
|
|
// const inc = curve.Fr.inv(curve.PFr.w[zkey.power+1]);
|
|
const inc = curve.Fr.w[zkey.power+1];
|
|
buff_r = await curve.Fr.batchApplyKey(buff_r, first, inc);
|
|
buff_r = await curve.Fr.fft(buff_r);
|
|
buff_r = await curve.Fr.batchFromMontgomery(buff_r);
|
|
|
|
await startReadUniqueSection(fd, sections, 9);
|
|
let R2 = G.zero;
|
|
for (let i=0; i<zkey.domainSize; i += MAX_CHUNK_SIZE) {
|
|
if (logger) logger.debug(`H Verificaition(lagrange): ${i}/${zkey.domainSize}`);
|
|
const n = Math.min(zkey.domainSize - i, MAX_CHUNK_SIZE);
|
|
|
|
const buff = await fd.read(sG*n);
|
|
const buffS = buff_r.slice((i*MAX_CHUNK_SIZE)*zkey.n8r, (i*MAX_CHUNK_SIZE+n)*zkey.n8r);
|
|
const r = await G.multiExpAffine(buff, buffS);
|
|
|
|
R2 = G.add(R2, r);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
sr = await sameRatio$2(curve, R1, R2, zkey.vk_delta_2, zkeyInit.vk_delta_2);
|
|
if (sr !== true) return false;
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
async function batchSubstract(buff1, buff2) {
|
|
const sG = curve.G1.F.n8*2;
|
|
const nPoints = buff1.byteLength / sG;
|
|
const concurrency= curve.tm.concurrency;
|
|
const nPointsPerThread = Math.floor(nPoints / concurrency);
|
|
const opPromises = [];
|
|
for (let i=0; i<concurrency; i++) {
|
|
let n;
|
|
if (i< concurrency-1) {
|
|
n = nPointsPerThread;
|
|
} else {
|
|
n = nPoints - i*nPointsPerThread;
|
|
}
|
|
if (n==0) continue;
|
|
|
|
const subBuff1 = buff1.slice(i*nPointsPerThread*sG1, (i*nPointsPerThread+n)*sG1);
|
|
const subBuff2 = buff2.slice(i*nPointsPerThread*sG1, (i*nPointsPerThread+n)*sG1);
|
|
opPromises.push(batchSubstractThread(subBuff1, subBuff2));
|
|
}
|
|
|
|
|
|
const result = await Promise.all(opPromises);
|
|
|
|
const fullBuffOut = new Uint8Array(nPoints*sG);
|
|
let p =0;
|
|
for (let i=0; i<result.length; i++) {
|
|
fullBuffOut.set(result[i][0], p);
|
|
p+=result[i][0].byteLength;
|
|
}
|
|
|
|
return fullBuffOut;
|
|
}
|
|
|
|
|
|
async function batchSubstractThread(buff1, buff2) {
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sGmid = curve.G1.F.n8*3;
|
|
const nPoints = buff1.byteLength/sG1;
|
|
const task = [];
|
|
task.push({cmd: "ALLOCSET", var: 0, buff: buff1});
|
|
task.push({cmd: "ALLOCSET", var: 1, buff: buff2});
|
|
task.push({cmd: "ALLOC", var: 2, len: nPoints*sGmid});
|
|
for (let i=0; i<nPoints; i++) {
|
|
task.push({
|
|
cmd: "CALL",
|
|
fnName: "g1m_subAffine",
|
|
params: [
|
|
{var: 0, offset: i*sG1},
|
|
{var: 1, offset: i*sG1},
|
|
{var: 2, offset: i*sGmid},
|
|
]
|
|
});
|
|
}
|
|
task.push({cmd: "CALL", fnName: "g1m_batchToAffine", params: [
|
|
{var: 2},
|
|
{val: nPoints},
|
|
{var: 2},
|
|
]});
|
|
task.push({cmd: "GET", out: 0, var: 2, len: nPoints*sG1});
|
|
|
|
const res = await curve.tm.queueAction(task);
|
|
|
|
return res;
|
|
}
|
|
|
|
}
|
|
|
|
async function phase2contribute(zkeyNameOld, zkeyNameNew, name, entropy, logger) {
|
|
await blake2bWasm.ready();
|
|
|
|
const {fd: fdOld, sections: sections} = await readBinFile(zkeyNameOld, "zkey", 2);
|
|
const zkey = await readHeader(fdOld, sections, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
|
|
const mpcParams = await readMPCParams(fdOld, curve, sections);
|
|
|
|
const fdNew = await createBinFile(zkeyNameNew, "zkey", 1, 10);
|
|
|
|
|
|
const rng = await getRandomRng(entropy);
|
|
|
|
const transcriptHasher = blake2bWasm(64);
|
|
transcriptHasher.update(mpcParams.csHash);
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
hashPubKey(transcriptHasher, curve, mpcParams.contributions[i]);
|
|
}
|
|
|
|
const curContribution = {};
|
|
curContribution.delta = {};
|
|
curContribution.delta.prvKey = curve.Fr.fromRng(rng);
|
|
curContribution.delta.g1_s = curve.G1.toAffine(curve.G1.fromRng(rng));
|
|
curContribution.delta.g1_sx = curve.G1.toAffine(curve.G1.timesFr(curContribution.delta.g1_s, curContribution.delta.prvKey));
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_s);
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_sx);
|
|
curContribution.transcript = transcriptHasher.digest();
|
|
curContribution.delta.g2_sp = hashToG2(curve, curContribution.transcript);
|
|
curContribution.delta.g2_spx = curve.G2.toAffine(curve.G2.timesFr(curContribution.delta.g2_sp, curContribution.delta.prvKey));
|
|
|
|
zkey.vk_delta_1 = curve.G1.timesFr(zkey.vk_delta_1, curContribution.delta.prvKey);
|
|
zkey.vk_delta_2 = curve.G2.timesFr(zkey.vk_delta_2, curContribution.delta.prvKey);
|
|
|
|
curContribution.deltaAfter = zkey.vk_delta_1;
|
|
|
|
curContribution.type = 0;
|
|
if (name) curContribution.name = name;
|
|
|
|
mpcParams.contributions.push(curContribution);
|
|
|
|
await writeHeader(fdNew, zkey);
|
|
|
|
// IC
|
|
await copySection(fdOld, sections, fdNew, 3);
|
|
|
|
// Coeffs (Keep original)
|
|
await copySection(fdOld, sections, fdNew, 4);
|
|
|
|
// A Section
|
|
await copySection(fdOld, sections, fdNew, 5);
|
|
|
|
// B1 Section
|
|
await copySection(fdOld, sections, fdNew, 6);
|
|
|
|
// B2 Section
|
|
await copySection(fdOld, sections, fdNew, 7);
|
|
|
|
const invDelta = curve.Fr.inv(curContribution.delta.prvKey);
|
|
await applyKeyToSection(fdOld, sections, fdNew, 8, curve, "G1", invDelta, curve.Fr.e(1), "L Section", logger);
|
|
await applyKeyToSection(fdOld, sections, fdNew, 9, curve, "G1", invDelta, curve.Fr.e(1), "H Section", logger);
|
|
|
|
await writeMPCParams(fdNew, curve, mpcParams);
|
|
|
|
await fdOld.close();
|
|
await fdNew.close();
|
|
|
|
const contributionHasher = blake2bWasm(64);
|
|
hashPubKey(contributionHasher, curve, curContribution);
|
|
|
|
const contribuionHash = contributionHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(contribuionHash, "Contribution Hash: "));
|
|
|
|
return contribuionHash;
|
|
}
|
|
|
|
async function beacon$1(zkeyNameOld, zkeyNameNew, name, beaconHashStr, numIterationsExp, logger) {
|
|
await blake2bWasm.ready();
|
|
|
|
const beaconHash = hex2ByteArray(beaconHashStr);
|
|
if ( (beaconHash.byteLength == 0)
|
|
|| (beaconHash.byteLength*2 !=beaconHashStr.length))
|
|
{
|
|
if (logger) logger.error("Invalid Beacon Hash. (It must be a valid hexadecimal sequence)");
|
|
return false;
|
|
}
|
|
if (beaconHash.length>=256) {
|
|
if (logger) logger.error("Maximum lenght of beacon hash is 255 bytes");
|
|
return false;
|
|
}
|
|
|
|
numIterationsExp = parseInt(numIterationsExp);
|
|
if ((numIterationsExp<10)||(numIterationsExp>63)) {
|
|
if (logger) logger.error("Invalid numIterationsExp. (Must be between 10 and 63)");
|
|
return false;
|
|
}
|
|
|
|
|
|
const {fd: fdOld, sections: sections} = await readBinFile(zkeyNameOld, "zkey", 2);
|
|
const zkey = await readHeader(fdOld, sections, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
|
|
const mpcParams = await readMPCParams(fdOld, curve, sections);
|
|
|
|
const fdNew = await createBinFile(zkeyNameNew, "zkey", 1, 10);
|
|
|
|
const rng = await rngFromBeaconParams(beaconHash, numIterationsExp);
|
|
|
|
const transcriptHasher = blake2bWasm(64);
|
|
transcriptHasher.update(mpcParams.csHash);
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
hashPubKey(transcriptHasher, curve, mpcParams.contributions[i]);
|
|
}
|
|
|
|
const curContribution = {};
|
|
curContribution.delta = {};
|
|
curContribution.delta.prvKey = curve.Fr.fromRng(rng);
|
|
curContribution.delta.g1_s = curve.G1.toAffine(curve.G1.fromRng(rng));
|
|
curContribution.delta.g1_sx = curve.G1.toAffine(curve.G1.timesFr(curContribution.delta.g1_s, curContribution.delta.prvKey));
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_s);
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_sx);
|
|
curContribution.transcript = transcriptHasher.digest();
|
|
curContribution.delta.g2_sp = hashToG2(curve, curContribution.transcript);
|
|
curContribution.delta.g2_spx = curve.G2.toAffine(curve.G2.timesFr(curContribution.delta.g2_sp, curContribution.delta.prvKey));
|
|
|
|
zkey.vk_delta_1 = curve.G1.timesFr(zkey.vk_delta_1, curContribution.delta.prvKey);
|
|
zkey.vk_delta_2 = curve.G2.timesFr(zkey.vk_delta_2, curContribution.delta.prvKey);
|
|
|
|
curContribution.deltaAfter = zkey.vk_delta_1;
|
|
|
|
curContribution.type = 1;
|
|
curContribution.numIterationsExp = numIterationsExp;
|
|
curContribution.beaconHash = beaconHash;
|
|
|
|
if (name) curContribution.name = name;
|
|
|
|
mpcParams.contributions.push(curContribution);
|
|
|
|
await writeHeader(fdNew, zkey);
|
|
|
|
// IC
|
|
await copySection(fdOld, sections, fdNew, 3);
|
|
|
|
// Coeffs (Keep original)
|
|
await copySection(fdOld, sections, fdNew, 4);
|
|
|
|
// A Section
|
|
await copySection(fdOld, sections, fdNew, 5);
|
|
|
|
// B1 Section
|
|
await copySection(fdOld, sections, fdNew, 6);
|
|
|
|
// B2 Section
|
|
await copySection(fdOld, sections, fdNew, 7);
|
|
|
|
const invDelta = curve.Fr.inv(curContribution.delta.prvKey);
|
|
await applyKeyToSection(fdOld, sections, fdNew, 8, curve, "G1", invDelta, curve.Fr.e(1), "L Section", logger);
|
|
await applyKeyToSection(fdOld, sections, fdNew, 9, curve, "G1", invDelta, curve.Fr.e(1), "H Section", logger);
|
|
|
|
await writeMPCParams(fdNew, curve, mpcParams);
|
|
|
|
await fdOld.close();
|
|
await fdNew.close();
|
|
|
|
const contributionHasher = blake2bWasm(64);
|
|
hashPubKey(contributionHasher, curve, curContribution);
|
|
|
|
const contribuionHash = contributionHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(contribuionHash, "Contribution Hash: "));
|
|
|
|
return contribuionHash;
|
|
}
|
|
|
|
async function zkeyExportJson(zkeyFileName, verbose) {
|
|
|
|
const zKey = await readZKey(zkeyFileName);
|
|
|
|
return zKey;
|
|
}
|
|
|
|
// Format of the output
|
|
|
|
async function bellmanContribute(curve, challengeFilename, responesFileName, entropy, logger) {
|
|
await blake2bWasm.ready();
|
|
|
|
const rng = await getRandomRng(entropy);
|
|
|
|
const delta = curve.Fr.fromRng(rng);
|
|
const invDelta = curve.Fr.inv(delta);
|
|
|
|
const sG1 = curve.G1.F.n8*2;
|
|
const sG2 = curve.G2.F.n8*2;
|
|
|
|
const fdFrom = await readExisting$2(challengeFilename);
|
|
const fdTo = await createOverride(responesFileName);
|
|
|
|
|
|
await copy(sG1); // alpha1
|
|
await copy(sG1); // beta1
|
|
await copy(sG2); // beta2
|
|
await copy(sG2); // gamma2
|
|
const oldDelta1 = await readG1();
|
|
const delta1 = curve.G1.timesFr(oldDelta1, delta);
|
|
await writeG1(delta1);
|
|
const oldDelta2 = await readG2();
|
|
const delta2 = curve.G2.timesFr(oldDelta2, delta);
|
|
await writeG2(delta2);
|
|
|
|
// IC
|
|
const nIC = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nIC);
|
|
await copy(nIC*sG1);
|
|
|
|
// H
|
|
const nH = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nH);
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, null, curve, "G1", nH, invDelta, curve.Fr.e(1), "UNCOMPRESSED", "H", logger);
|
|
|
|
// L
|
|
const nL = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nL);
|
|
await applyKeyToChallengeSection(fdFrom, fdTo, null, curve, "G1", nL, invDelta, curve.Fr.e(1), "UNCOMPRESSED", "L", logger);
|
|
|
|
// A
|
|
const nA = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nA);
|
|
await copy(nA*sG1);
|
|
|
|
// B1
|
|
const nB1 = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nB1);
|
|
await copy(nB1*sG1);
|
|
|
|
// B2
|
|
const nB2 = await fdFrom.readUBE32();
|
|
await fdTo.writeUBE32(nB2);
|
|
await copy(nB2*sG2);
|
|
|
|
|
|
//////////
|
|
/// Read contributions
|
|
//////////
|
|
const transcriptHasher = blake2bWasm(64);
|
|
|
|
const mpcParams = {};
|
|
// csHash
|
|
mpcParams.csHash = await fdFrom.read(64);
|
|
transcriptHasher.update(mpcParams.csHash);
|
|
|
|
const nConttributions = await fdFrom.readUBE32();
|
|
mpcParams.contributions = [];
|
|
for (let i=0; i<nConttributions; i++) {
|
|
const c = { delta:{} };
|
|
c.deltaAfter = await readG1();
|
|
c.delta.g1_s = await readG1();
|
|
c.delta.g1_sx = await readG1();
|
|
c.delta.g2_spx = await readG2();
|
|
c.transcript = await fdFrom.read(64);
|
|
mpcParams.contributions.push(c);
|
|
hashPubKey(transcriptHasher, curve, c);
|
|
}
|
|
|
|
const curContribution = {};
|
|
curContribution.delta = {};
|
|
curContribution.delta.prvKey = delta;
|
|
curContribution.delta.g1_s = curve.G1.toAffine(curve.G1.fromRng(rng));
|
|
curContribution.delta.g1_sx = curve.G1.toAffine(curve.G1.timesFr(curContribution.delta.g1_s, delta));
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_s);
|
|
hashG1(transcriptHasher, curve, curContribution.delta.g1_sx);
|
|
curContribution.transcript = transcriptHasher.digest();
|
|
curContribution.delta.g2_sp = hashToG2(curve, curContribution.transcript);
|
|
curContribution.delta.g2_spx = curve.G2.toAffine(curve.G2.timesFr(curContribution.delta.g2_sp, delta));
|
|
curContribution.deltaAfter = delta1;
|
|
curContribution.type = 0;
|
|
mpcParams.contributions.push(curContribution);
|
|
|
|
|
|
//////////
|
|
/// Write COntribution
|
|
//////////
|
|
|
|
await fdTo.write(mpcParams.csHash);
|
|
await fdTo.writeUBE32(mpcParams.contributions.length);
|
|
|
|
for (let i=0; i<mpcParams.contributions.length; i++) {
|
|
const c = mpcParams.contributions[i];
|
|
await writeG1(c.deltaAfter);
|
|
await writeG1(c.delta.g1_s);
|
|
await writeG1(c.delta.g1_sx);
|
|
await writeG2(c.delta.g2_spx);
|
|
await fdTo.write(c.transcript);
|
|
}
|
|
|
|
const contributionHasher = blake2bWasm(64);
|
|
hashPubKey(contributionHasher, curve, curContribution);
|
|
|
|
const contributionHash = contributionHasher.digest();
|
|
|
|
if (logger) logger.info(formatHash(contributionHash, "Contribution Hash: "));
|
|
|
|
await fdTo.close();
|
|
await fdFrom.close();
|
|
|
|
return contributionHash;
|
|
|
|
async function copy(nBytes) {
|
|
const CHUNK_SIZE = fdFrom.pageSize*2;
|
|
for (let i=0; i<nBytes; i+= CHUNK_SIZE) {
|
|
const n = Math.min(nBytes -i, CHUNK_SIZE);
|
|
const buff = await fdFrom.read(n);
|
|
await fdTo.write(buff);
|
|
}
|
|
}
|
|
|
|
async function readG1() {
|
|
const buff = await fdFrom.read(curve.G1.F.n8*2);
|
|
return curve.G1.fromRprUncompressed(buff, 0);
|
|
}
|
|
|
|
async function readG2() {
|
|
const buff = await fdFrom.read(curve.G2.F.n8*2);
|
|
return curve.G2.fromRprUncompressed(buff, 0);
|
|
}
|
|
|
|
async function writeG1(P) {
|
|
const buff = new Uint8Array(sG1);
|
|
curve.G1.toRprUncompressed(buff, 0, P);
|
|
await fdTo.write(buff);
|
|
}
|
|
|
|
async function writeG2(P) {
|
|
const buff = new Uint8Array(sG2);
|
|
curve.G2.toRprUncompressed(buff, 0, P);
|
|
await fdTo.write(buff);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
const {stringifyBigInts: stringifyBigInts$9} = utils$1;
|
|
|
|
|
|
async function zkeyExportVerificationKey(zkeyName, logger) {
|
|
|
|
const {fd, sections} = await readBinFile(zkeyName, "zkey", 2);
|
|
const zkey = await readHeader(fd, sections, "groth16");
|
|
|
|
const curve = await getCurveFromQ(zkey.q);
|
|
const sG1 = curve.G1.F.n8*2;
|
|
|
|
const alphaBeta = await curve.pairing( zkey.vk_alpha_1 , zkey.vk_beta_2 );
|
|
|
|
let vKey = {
|
|
protocol: zkey.protocol,
|
|
curve: curve.name,
|
|
nPublic: zkey.nPublic,
|
|
|
|
vk_alpha_1: curve.G1.toObject(zkey.vk_alpha_1),
|
|
|
|
vk_beta_2: curve.G2.toObject(zkey.vk_beta_2),
|
|
vk_gamma_2: curve.G2.toObject(zkey.vk_gamma_2),
|
|
vk_delta_2: curve.G2.toObject(zkey.vk_delta_2),
|
|
|
|
vk_alphabeta_12: curve.Gt.toObject(alphaBeta)
|
|
};
|
|
|
|
// Read IC Section
|
|
///////////
|
|
await startReadUniqueSection(fd, sections, 3);
|
|
vKey.IC = [];
|
|
for (let i=0; i<= zkey.nPublic; i++) {
|
|
const buff = await fd.read(sG1);
|
|
const P = curve.G1.toObject(buff);
|
|
vKey.IC.push(P);
|
|
}
|
|
await endReadSection(fd);
|
|
|
|
vKey = stringifyBigInts$9(vKey);
|
|
|
|
await fd.close();
|
|
|
|
return vKey;
|
|
}
|
|
|
|
// Not ready yet
|
|
// module.exports.generateVerifier_kimleeoh = generateVerifier_kimleeoh;
|
|
|
|
|
|
|
|
async function exportSolidityVerifier(zKeyName, templateName, logger) {
|
|
|
|
const verificationKey = await zkeyExportVerificationKey(zKeyName);
|
|
|
|
const fd = await readExisting$2(templateName);
|
|
const buff = await fd.read(fd.totalSize);
|
|
let template = new TextDecoder("utf-8").decode(buff);
|
|
|
|
const vkalpha1_str = `${verificationKey.vk_alpha_1[0].toString()},`+
|
|
`${verificationKey.vk_alpha_1[1].toString()}`;
|
|
template = template.replace("<%vk_alpha1%>", vkalpha1_str);
|
|
|
|
const vkbeta2_str = `[${verificationKey.vk_beta_2[0][1].toString()},`+
|
|
`${verificationKey.vk_beta_2[0][0].toString()}], `+
|
|
`[${verificationKey.vk_beta_2[1][1].toString()},` +
|
|
`${verificationKey.vk_beta_2[1][0].toString()}]`;
|
|
template = template.replace("<%vk_beta2%>", vkbeta2_str);
|
|
|
|
const vkgamma2_str = `[${verificationKey.vk_gamma_2[0][1].toString()},`+
|
|
`${verificationKey.vk_gamma_2[0][0].toString()}], `+
|
|
`[${verificationKey.vk_gamma_2[1][1].toString()},` +
|
|
`${verificationKey.vk_gamma_2[1][0].toString()}]`;
|
|
template = template.replace("<%vk_gamma2%>", vkgamma2_str);
|
|
|
|
const vkdelta2_str = `[${verificationKey.vk_delta_2[0][1].toString()},`+
|
|
`${verificationKey.vk_delta_2[0][0].toString()}], `+
|
|
`[${verificationKey.vk_delta_2[1][1].toString()},` +
|
|
`${verificationKey.vk_delta_2[1][0].toString()}]`;
|
|
template = template.replace("<%vk_delta2%>", vkdelta2_str);
|
|
|
|
// The points
|
|
|
|
template = template.replace("<%vk_input_length%>", (verificationKey.IC.length-1).toString());
|
|
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
|
let vi = "";
|
|
for (let i=0; i<verificationKey.IC.length; i++) {
|
|
if (vi != "") vi = vi + " ";
|
|
vi = vi + `vk.IC[${i}] = Pairing.G1Point(${verificationKey.IC[i][0].toString()},`+
|
|
`${verificationKey.IC[i][1].toString()});\n`;
|
|
}
|
|
template = template.replace("<%vk_ic_pts%>", vi);
|
|
|
|
return template;
|
|
}
|
|
|
|
var zkey = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
newZKey: newZKey,
|
|
exportBellman: phase2exportMPCParams,
|
|
importBellman: phase2importMPCParams,
|
|
verify: phase2verify,
|
|
contribute: phase2contribute,
|
|
beacon: beacon$1,
|
|
exportJson: zkeyExportJson,
|
|
bellmanContribute: bellmanContribute,
|
|
exportVerificationKey: zkeyExportVerificationKey,
|
|
exportSolidityVerifier: exportSolidityVerifier
|
|
});
|
|
|
|
exports.groth16 = groth16;
|
|
exports.powersOfTau = powersoftau;
|
|
exports.r1cs = r1cs;
|
|
exports.wtns = wtns;
|
|
exports.zKey = zkey;
|
|
|
|
return exports;
|
|
|
|
}({}));
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcmtqcy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvc2NhbGFyX25hdGl2ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9iaWctaW50ZWdlci9CaWdJbnRlZ2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvc2NhbGFyX2JpZ2ludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3NjYWxhci5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3BvbGZpZWxkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZnV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZnNxcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9jaGFjaGEuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9yYW5kb20uanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9mMWZpZWxkX25hdGl2ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2YxZmllbGRfYmlnaW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZjFmaWVsZC5qcyIsIi4uL25vZGVfbW9kdWxlcy93YXNtY3VydmVzL2J1aWxkL2JuMTI4X3dhc20uanMiLCIuLi9ub2RlX21vZHVsZXMvd2FzbWN1cnZlcy9idWlsZC9ibHMxMjM4MV93YXNtLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3dhc21jdXJ2ZXMvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy91dGlsc19uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy91dGlsc19iaWdpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy91dGlscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZV9iYXRjaGNvbnZlcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy93YXNtX2ZpZWxkMS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3dhc21fZmllbGQyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvd2FzbV9maWVsZDMuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy93YXNtX2N1cnZlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvdGhyZWFkbWFuX3RocmVhZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3RocmVhZG1hbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZV9hcHBseWtleS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZV9wYWlyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZW5naW5lX211bHRpZXhwLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZW5naW5lX2ZmdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2JuMTI4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvYmxzMTIzODEuanMiLCIuLi9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L21haW4uanMiLCIuLi9ub2RlX21vZHVsZXMvZmFzdGZpbGUvc3JjL29zZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvbWVtZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvYmlnbWVtZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvZmFzdGZpbGUuanMiLCIuLi9zcmMvYmluZmlsZXV0aWxzLmpzIiwiLi4vc3JjL2N1cnZlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9uYW5vYXNzZXJ0L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9ibGFrZTJiLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9pbmRleC5qcyIsIi4uL3NyYy9taXNjLmpzIiwiLi4vc3JjL3prZXlfdXRpbHMuanMiLCIuLi9zcmMvd3Ruc191dGlscy5qcyIsIi4uL3NyYy9ncm90aDE2X3Byb3ZlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zudi1wbHVzL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL2pzL3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3NjYWxhcl9uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvc2NhbGFyX2JpZ2ludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9zY2FsYXIuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvcG9sZmllbGQuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZnV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2ZzcXJ0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2NoYWNoYS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9yYW5kb20uanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZjFmaWVsZF9uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZjFmaWVsZF9iaWdpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZjFmaWVsZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9mMmZpZWxkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2YzZmllbGQuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZWMuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvdXRpbHNfbmF0aXZlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3V0aWxzX2JpZ2ludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy91dGlscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9lbmdpbmVfYmF0Y2hjb252ZXJ0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3dhc21fZmllbGQxLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3dhc21fZmllbGQyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3dhc21fZmllbGQzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3dhc21fY3VydmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvdGhyZWFkbWFuX3RocmVhZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy90aHJlYWRtYW4uanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZW5naW5lX2FwcGx5a2V5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZV9wYWlyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZV9tdWx0aWV4cC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9lbmdpbmVfZmZ0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2VuZ2luZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9ibjEyOC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9ibHMxMjM4MS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jaXJjb21fcnVudGltZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L21haW4uanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NpcmNvbV9ydW50aW1lL2luZGV4LmpzIiwiLi4vc3JjL3d0bnNfY2FsY3VsYXRlLmpzIiwiLi4vc3JjL2dyb3RoMTZfZnVsbHByb3ZlLmpzIiwiLi4vc3JjL2dyb3RoMTZfdmVyaWZ5LmpzIiwiLi4vc3JjL2tleXBhaXIuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfdXRpbHMuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfbmV3LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfaW1wb3J0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qcyIsIi4uL3NyYy9tcGNfYXBwbHlrZXkuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfY2hhbGxlbmdlX2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfYmVhY29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV9leHBvcnRfanNvbi5qcyIsIi4uL3NyYy9yMWNzX3ByaW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3NjYWxhcl9uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvc2NhbGFyX2JpZ2ludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9zY2FsYXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvcG9sZmllbGQuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvZnV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL2ZzcXJ0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3JhbmRvbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9mMWZpZWxkX25hdGl2ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9mMWZpZWxkX2JpZ2ludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy9mMWZpZWxkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mZmphdmFzY3JpcHQvc3JjL3V0aWxzX25hdGl2ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmZqYXZhc2NyaXB0L3NyYy91dGlsc19iaWdpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9zcmMvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9tYWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvb3NmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvbWVtZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9ub2RlX21vZHVsZXMvZmFzdGZpbGUvc3JjL2Zhc3RmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL3NyYy9yMWNzZmlsZS5qcyIsIi4uL3NyYy9yMWNzX2luZm8uanMiLCIuLi9zcmMvcjFjc19leHBvcnRfanNvbi5qcyIsIi4uL3NyYy9sb2Fkc3ltcy5qcyIsIi4uL3NyYy93dG5zX2RlYnVnLmpzIiwiLi4vc3JjL3d0bnNfZXhwb3J0X2pzb24uanMiLCIuLi9zcmMvYmlnYXJyYXkuanMiLCIuLi9zcmMvemtleV9uZXcuanMiLCIuLi9zcmMvemtleV9leHBvcnRfYmVsbG1hbi5qcyIsIi4uL3NyYy96a2V5X2ltcG9ydF9iZWxsbWFuLmpzIiwiLi4vc3JjL3prZXlfdmVyaWZ5LmpzIiwiLi4vc3JjL3prZXlfY29udHJpYnV0ZS5qcyIsIi4uL3NyYy96a2V5X2JlYWNvbi5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3prZXlfYmVsbG1hbl9jb250cmlidXRlLmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9zb2xpZGl0eXZlcmlmaWVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmNvbnN0IGhleExlbiA9IFsgMCwgMSwgMiwgMiwgMywgMywgMywgMywgNCAsNCAsNCAsNCAsNCAsNCAsNCAsNF07XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBlID0gZnJvbVN0cmluZztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21BcnJheShhLCByYWRpeCkge1xuICAgIGxldCBhY2MgPTBuO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8YS5sZW5ndGg7IGkrKykge1xuICAgICAgICBhY2MgPSBhY2MqcmFkaXggKyBCaWdJbnQoYVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRMZW5ndGgoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05lZ2F0aXZlKGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgMG47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1plcm8oYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWZ0TGVmdChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8PCBCaWdJbnQobik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdFJpZ2h0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4+IEJpZ0ludChuKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmV4cG9ydCBjb25zdCBzaHIgPSBzaGlmdFJpZ2h0O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPZGQoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgMW4pID09IDFuO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBuYWYobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgMW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IDFuO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIDFuKSB7XG4gICAgICAgICAgICByZXMucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcihzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0FycmF5KHMsIHJhZGl4KSB7XG4gICAgY29uc3QgcmVzID0gW107XG4gICAgbGV0IHJlbSA9IEJpZ0ludChzKTtcbiAgICByYWRpeCA9IEJpZ0ludChyYWRpeCk7XG4gICAgd2hpbGUgKHJlbSkge1xuICAgICAgICByZXMudW5zaGlmdCggTnVtYmVyKHJlbSAlIHJhZGl4KSk7XG4gICAgICAgIHJlbSA9IHJlbSAvIHJhZGl4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKyBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWcoYSkge1xuICAgIHJldHVybiAtQmlnSW50KGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbXVsKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlKGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG93KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYnMoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXYoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLyBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2QoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgIT0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbHQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPCBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8PSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvcihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSB8IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ4b3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgXiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvcihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSB8fCBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsbm90KGEpIHtcbiAgICByZXR1cm4gIUJpZ0ludChhKTtcbn1cblxuIiwidmFyIGJpZ0ludCA9IChmdW5jdGlvbiAodW5kZWZpbmVkKSB7XHJcbiAgICBcInVzZSBzdHJpY3RcIjtcclxuXHJcbiAgICB2YXIgQkFTRSA9IDFlNyxcclxuICAgICAgICBMT0dfQkFTRSA9IDcsXHJcbiAgICAgICAgTUFYX0lOVCA9IDkwMDcxOTkyNTQ3NDA5OTIsXHJcbiAgICAgICAgTUFYX0lOVF9BUlIgPSBzbWFsbFRvQXJyYXkoTUFYX0lOVCksXHJcbiAgICAgICAgREVGQVVMVF9BTFBIQUJFVCA9IFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCI7XHJcblxyXG4gICAgdmFyIHN1cHBvcnRzTmF0aXZlQmlnSW50ID0gdHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiO1xyXG5cclxuICAgIGZ1bmN0aW9uIEludGVnZXIodiwgcmFkaXgsIGFscGhhYmV0LCBjYXNlU2Vuc2l0aXZlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gSW50ZWdlclswXTtcclxuICAgICAgICBpZiAodHlwZW9mIHJhZGl4ICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gK3JhZGl4ID09PSAxMCAmJiAhYWxwaGFiZXQgPyBwYXJzZVZhbHVlKHYpIDogcGFyc2VCYXNlKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gQmlnSW50ZWdlcih2YWx1ZSwgc2lnbikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNpZ24gPSBzaWduO1xyXG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcclxuXHJcbiAgICBmdW5jdGlvbiBTbWFsbEludGVnZXIodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zaWduID0gdmFsdWUgPCAwO1xyXG4gICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XHJcblxyXG4gICAgZnVuY3Rpb24gTmF0aXZlQmlnSW50KHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGlzUHJlY2lzZShuKSB7XHJcbiAgICAgICAgcmV0dXJuIC1NQVhfSU5UIDwgbiAmJiBuIDwgTUFYX0lOVDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzbWFsbFRvQXJyYXkobikgeyAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBkb2Vzbid0IHJlZmVyZW5jZSBCQVNFLCBuZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGlmIEJBU0UgY2hhbmdlc1xyXG4gICAgICAgIGlmIChuIDwgMWU3KVxyXG4gICAgICAgICAgICByZXR1cm4gW25dO1xyXG4gICAgICAgIGlmIChuIDwgMWUxNClcclxuICAgICAgICAgICAgcmV0dXJuIFtuICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTcpXTtcclxuICAgICAgICByZXR1cm4gW24gJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlNykgJSAxZTcsIE1hdGguZmxvb3IobiAvIDFlMTQpXTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBhcnJheVRvU21hbGwoYXJyKSB7IC8vIElmIEJBU0UgY2hhbmdlcyB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGNoYW5nZVxyXG4gICAgICAgIHRyaW0oYXJyKTtcclxuICAgICAgICB2YXIgbGVuZ3RoID0gYXJyLmxlbmd0aDtcclxuICAgICAgICBpZiAobGVuZ3RoIDwgNCAmJiBjb21wYXJlQWJzKGFyciwgTUFYX0lOVF9BUlIpIDwgMCkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIGFyclswXTtcclxuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGFyclswXSArIGFyclsxXSAqIEJBU0U7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gYXJyWzBdICsgKGFyclsxXSArIGFyclsyXSAqIEJBU0UpICogQkFTRTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXJyO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHRyaW0odikge1xyXG4gICAgICAgIHZhciBpID0gdi5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKHZbLS1pXSA9PT0gMCk7XHJcbiAgICAgICAgdi5sZW5ndGggPSBpICsgMTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjcmVhdGVBcnJheShsZW5ndGgpIHsgLy8gZnVuY3Rpb24gc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gWWFmZmxlJ3MgbGlicmFyeSBodHRwczovL2dpdGh1Yi5jb20vWWFmZmxlL0JpZ0ludGVnZXJcclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShsZW5ndGgpO1xyXG4gICAgICAgIHZhciBpID0gLTE7XHJcbiAgICAgICAgd2hpbGUgKCsraSA8IGxlbmd0aCkge1xyXG4gICAgICAgICAgICB4W2ldID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHg7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUobikge1xyXG4gICAgICAgIGlmIChuID4gMCkgcmV0dXJuIE1hdGguZmxvb3Iobik7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBhZGQoYSwgYikgeyAvLyBhc3N1bWVzIGEgYW5kIGIgYXJlIGFycmF5cyB3aXRoIGEubGVuZ3RoID49IGIubGVuZ3RoXHJcbiAgICAgICAgdmFyIGxfYSA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICBsX2IgPSBiLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsX2EpLFxyXG4gICAgICAgICAgICBjYXJyeSA9IDAsXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBzdW0sIGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxfYjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBiW2ldICsgY2Fycnk7XHJcbiAgICAgICAgICAgIGNhcnJ5ID0gc3VtID49IGJhc2UgPyAxIDogMDtcclxuICAgICAgICAgICAgcltpXSA9IHN1bSAtIGNhcnJ5ICogYmFzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGkgPCBsX2EpIHtcclxuICAgICAgICAgICAgc3VtID0gYVtpXSArIGNhcnJ5O1xyXG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA9PT0gYmFzZSA/IDEgOiAwO1xyXG4gICAgICAgICAgICByW2krK10gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjYXJyeSA+IDApIHIucHVzaChjYXJyeSk7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYWRkQW55KGEsIGIpIHtcclxuICAgICAgICBpZiAoYS5sZW5ndGggPj0gYi5sZW5ndGgpIHJldHVybiBhZGQoYSwgYik7XHJcbiAgICAgICAgcmV0dXJuIGFkZChiLCBhKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBhZGRTbWFsbChhLCBjYXJyeSkgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGNhcnJ5IGlzIG51bWJlciB3aXRoIDAgPD0gY2FycnkgPCBNQVhfSU5UXHJcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIHN1bSwgaTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gLSBiYXNlICsgY2Fycnk7XHJcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihzdW0gLyBiYXNlKTtcclxuICAgICAgICAgICAgcltpXSA9IHN1bSAtIGNhcnJ5ICogYmFzZTtcclxuICAgICAgICAgICAgY2FycnkgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGNhcnJ5ID4gMCkge1xyXG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XHJcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcclxuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qobi5uZWdhdGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYSwgTWF0aC5hYnMoYikpLCB0aGlzLnNpZ24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkQW55KGEsIGIpLCB0aGlzLnNpZ24pO1xyXG4gICAgfTtcclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnBsdXMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hZGQ7XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcclxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qobi5uZWdhdGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1ByZWNpc2UoYSArIGIpKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhICsgYik7XHJcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoTWF0aC5hYnMoYikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwoYiwgTWF0aC5hYnMoYSkpLCBhIDwgMCk7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hZGQ7XHJcblxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKyBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcclxuICAgIH1cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucGx1cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkO1xyXG5cclxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhID49IGJcclxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXHJcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxyXG4gICAgICAgICAgICByID0gbmV3IEFycmF5KGFfbCksXHJcbiAgICAgICAgICAgIGJvcnJvdyA9IDAsXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBiX2w7IGkrKykge1xyXG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdyAtIGJbaV07XHJcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgZGlmZmVyZW5jZSArPSBiYXNlO1xyXG4gICAgICAgICAgICAgICAgYm9ycm93ID0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIGJvcnJvdyA9IDA7XHJcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGkgPSBiX2w7IGkgPCBhX2w7IGkrKykge1xyXG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSAtIGJvcnJvdztcclxuICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKSBkaWZmZXJlbmNlICs9IGJhc2U7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcltpKytdID0gZGlmZmVyZW5jZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKDsgaSA8IGFfbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJbaV0gPSBhW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cmltKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0QW55KGEsIGIsIHNpZ24pIHtcclxuICAgICAgICB2YXIgdmFsdWU7XHJcbiAgICAgICAgaWYgKGNvbXBhcmVBYnMoYSwgYikgPj0gMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGEsIGIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gc3VidHJhY3QoYiwgYSk7XHJcbiAgICAgICAgICAgIHNpZ24gPSAhc2lnbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsdWUgPSBhcnJheVRvU21hbGwodmFsdWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgaWYgKHNpZ24pIHZhbHVlID0gLXZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih2YWx1ZSwgc2lnbik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc3VidHJhY3RTbWFsbChhLCBiLCBzaWduKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCAwIDw9IGIgPCBNQVhfSU5UXHJcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcclxuICAgICAgICAgICAgY2FycnkgPSAtYixcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIGksIGRpZmZlcmVuY2U7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBkaWZmZXJlbmNlID0gYVtpXSArIGNhcnJ5O1xyXG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIGJhc2UpO1xyXG4gICAgICAgICAgICBkaWZmZXJlbmNlICU9IGJhc2U7XHJcbiAgICAgICAgICAgIHJbaV0gPSBkaWZmZXJlbmNlIDwgMCA/IGRpZmZlcmVuY2UgKyBiYXNlIDogZGlmZmVyZW5jZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgciA9IGFycmF5VG9TbWFsbChyKTtcclxuICAgICAgICBpZiAodHlwZW9mIHIgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgaWYgKHNpZ24pIHIgPSAtcjtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIocik7XHJcbiAgICAgICAgfSByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcclxuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xyXG4gICAgICAgIGlmIChuLmlzU21hbGwpXHJcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGEsIE1hdGguYWJzKGIpLCB0aGlzLnNpZ24pO1xyXG4gICAgICAgIHJldHVybiBzdWJ0cmFjdEFueShhLCBiLCB0aGlzLnNpZ24pO1xyXG4gICAgfTtcclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1pbnVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobi5uZWdhdGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEgLSBiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwoYiwgTWF0aC5hYnMoYSksIGEgPj0gMCk7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3Q7XHJcblxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAtIHBhcnNlVmFsdWUodikudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5taW51cyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3Q7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih0aGlzLnZhbHVlLCAhdGhpcy5zaWduKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2lnbiA9IHRoaXMuc2lnbjtcclxuICAgICAgICB2YXIgc21hbGwgPSBuZXcgU21hbGxJbnRlZ2VyKC10aGlzLnZhbHVlKTtcclxuICAgICAgICBzbWFsbC5zaWduID0gIXNpZ247XHJcbiAgICAgICAgcmV0dXJuIHNtYWxsO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVnYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KC10aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHRoaXMudmFsdWUsIGZhbHNlKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihNYXRoLmFicyh0aGlzLnZhbHVlKSk7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSA+PSAwID8gdGhpcy52YWx1ZSA6IC10aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlMb25nKGEsIGIpIHtcclxuICAgICAgICB2YXIgYV9sID0gYS5sZW5ndGgsXHJcbiAgICAgICAgICAgIGJfbCA9IGIubGVuZ3RoLFxyXG4gICAgICAgICAgICBsID0gYV9sICsgYl9sLFxyXG4gICAgICAgICAgICByID0gY3JlYXRlQXJyYXkobCksXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBwcm9kdWN0LCBjYXJyeSwgaSwgYV9pLCBiX2o7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFfbDsgKytpKSB7XHJcbiAgICAgICAgICAgIGFfaSA9IGFbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYl9sOyArK2opIHtcclxuICAgICAgICAgICAgICAgIGJfaiA9IGJbal07XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gYV9pICogYl9qICsgcltpICsgal07XHJcbiAgICAgICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgcltpICsgal0gPSBwcm9kdWN0IC0gY2FycnkgKiBiYXNlO1xyXG4gICAgICAgICAgICAgICAgcltpICsgaiArIDFdICs9IGNhcnJ5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyaW0ocik7XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbChhLCBiKSB7IC8vIGFzc3VtZXMgYSBpcyBhcnJheSwgYiBpcyBudW1iZXIgd2l0aCB8YnwgPCBCQVNFXHJcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShsKSxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIGNhcnJ5ID0gMCxcclxuICAgICAgICAgICAgcHJvZHVjdCwgaTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHByb2R1Y3QgPSBhW2ldICogYiArIGNhcnJ5O1xyXG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IocHJvZHVjdCAvIGJhc2UpO1xyXG4gICAgICAgICAgICByW2ldID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGNhcnJ5ID4gMCkge1xyXG4gICAgICAgICAgICByW2krK10gPSBjYXJyeSAlIGJhc2U7XHJcbiAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzaGlmdExlZnQoeCwgbikge1xyXG4gICAgICAgIHZhciByID0gW107XHJcbiAgICAgICAgd2hpbGUgKG4tLSA+IDApIHIucHVzaCgwKTtcclxuICAgICAgICByZXR1cm4gci5jb25jYXQoeCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlLYXJhdHN1YmEoeCwgeSkge1xyXG4gICAgICAgIHZhciBuID0gTWF0aC5tYXgoeC5sZW5ndGgsIHkubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgaWYgKG4gPD0gMzApIHJldHVybiBtdWx0aXBseUxvbmcoeCwgeSk7XHJcbiAgICAgICAgbiA9IE1hdGguY2VpbChuIC8gMik7XHJcblxyXG4gICAgICAgIHZhciBiID0geC5zbGljZShuKSxcclxuICAgICAgICAgICAgYSA9IHguc2xpY2UoMCwgbiksXHJcbiAgICAgICAgICAgIGQgPSB5LnNsaWNlKG4pLFxyXG4gICAgICAgICAgICBjID0geS5zbGljZSgwLCBuKTtcclxuXHJcbiAgICAgICAgdmFyIGFjID0gbXVsdGlwbHlLYXJhdHN1YmEoYSwgYyksXHJcbiAgICAgICAgICAgIGJkID0gbXVsdGlwbHlLYXJhdHN1YmEoYiwgZCksXHJcbiAgICAgICAgICAgIGFiY2QgPSBtdWx0aXBseUthcmF0c3ViYShhZGRBbnkoYSwgYiksIGFkZEFueShjLCBkKSk7XHJcblxyXG4gICAgICAgIHZhciBwcm9kdWN0ID0gYWRkQW55KGFkZEFueShhYywgc2hpZnRMZWZ0KHN1YnRyYWN0KHN1YnRyYWN0KGFiY2QsIGFjKSwgYmQpLCBuKSksIHNoaWZ0TGVmdChiZCwgMiAqIG4pKTtcclxuICAgICAgICB0cmltKHByb2R1Y3QpO1xyXG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIGEgc3VyZmFjZSBmaXQgb2YgYSBncmFwaCBwbG90dGluZyB0aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZVxyXG4gICAgLy8gYmV0d2VlbiBsb25nIG11bHRpcGxpY2F0aW9uIGFuZCBrYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gdmVyc3VzIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gYXJyYXlzLlxyXG4gICAgZnVuY3Rpb24gdXNlS2FyYXRzdWJhKGwxLCBsMikge1xyXG4gICAgICAgIHJldHVybiAtMC4wMTIgKiBsMSAtIDAuMDEyICogbDIgKyAwLjAwMDAxNSAqIGwxICogbDIgPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXHJcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZSxcclxuICAgICAgICAgICAgc2lnbiA9IHRoaXMuc2lnbiAhPT0gbi5zaWduLFxyXG4gICAgICAgICAgICBhYnM7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XHJcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gdGhpcztcclxuICAgICAgICAgICAgaWYgKGIgPT09IC0xKSByZXR1cm4gdGhpcy5uZWdhdGUoKTtcclxuICAgICAgICAgICAgYWJzID0gTWF0aC5hYnMoYik7XHJcbiAgICAgICAgICAgIGlmIChhYnMgPCBCQVNFKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlTbWFsbChhLCBhYnMpLCBzaWduKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KGFicyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1c2VLYXJhdHN1YmEoYS5sZW5ndGgsIGIubGVuZ3RoKSkgLy8gS2FyYXRzdWJhIGlzIG9ubHkgZmFzdGVyIGZvciBjZXJ0YWluIGFycmF5IHNpemVzXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUthcmF0c3ViYShhLCBiKSwgc2lnbik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5TG9uZyhhLCBiKSwgc2lnbik7XHJcbiAgICB9O1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRpbWVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHk7XHJcblxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlTbWFsbEFuZEFycmF5KGEsIGIsIHNpZ24pIHsgLy8gYSA+PSAwXHJcbiAgICAgICAgaWYgKGEgPCBCQVNFKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseVNtYWxsKGIsIGEpLCBzaWduKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5TG9uZyhiLCBzbWFsbFRvQXJyYXkoYSkpLCBzaWduKTtcclxuICAgIH1cclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgICAgaWYgKGlzUHJlY2lzZShhLnZhbHVlICogdGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYS52YWx1ZSAqIHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCBzbWFsbFRvQXJyYXkoTWF0aC5hYnModGhpcy52YWx1ZSkpLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XHJcbiAgICB9O1xyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuX211bHRpcGx5QnlTbWFsbCA9IGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgIGlmIChhLnZhbHVlID09PSAxKSByZXR1cm4gdGhpcztcclxuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gLTEpIHJldHVybiB0aGlzLm5lZ2F0ZSgpO1xyXG4gICAgICAgIHJldHVybiBtdWx0aXBseVNtYWxsQW5kQXJyYXkoTWF0aC5hYnMoYS52YWx1ZSksIHRoaXMudmFsdWUsIHRoaXMuc2lnbiAhPT0gYS5zaWduKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VWYWx1ZSh2KS5fbXVsdGlwbHlCeVNtYWxsKHRoaXMpO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudGltZXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcclxuICAgIH1cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudGltZXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm11bHRpcGx5O1xyXG5cclxuICAgIGZ1bmN0aW9uIHNxdWFyZShhKSB7XHJcbiAgICAgICAgLy9jb25zb2xlLmFzc2VydCgyICogQkFTRSAqIEJBU0UgPCBNQVhfSU5UKTtcclxuICAgICAgICB2YXIgbCA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICByID0gY3JlYXRlQXJyYXkobCArIGwpLFxyXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcclxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYV9qO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgYV9pID0gYVtpXTtcclxuICAgICAgICAgICAgY2FycnkgPSAwIC0gYV9pICogYV9pO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA8IGw7IGorKykge1xyXG4gICAgICAgICAgICAgICAgYV9qID0gYVtqXTtcclxuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAyICogKGFfaSAqIGFfaikgKyByW2kgKyBqXSArIGNhcnJ5O1xyXG4gICAgICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByW2kgKyBsXSA9IGNhcnJ5O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cmltKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3F1YXJlKHRoaXMudmFsdWUpLCBmYWxzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3F1YXJlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmIChpc1ByZWNpc2UodmFsdWUpKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHNxdWFyZShzbWFsbFRvQXJyYXkoTWF0aC5hYnModGhpcy52YWx1ZSkpKSwgZmFsc2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSAqIHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRpdk1vZDEoYSwgYikgeyAvLyBMZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiBQZXJmb3JtcyBmYXN0ZXIgdGhhbiBkaXZNb2QyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXMuXHJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUFycmF5KGIubGVuZ3RoKSxcclxuICAgICAgICAgICAgZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0ID0gYltiX2wgLSAxXSxcclxuICAgICAgICAgICAgLy8gbm9ybWFsaXphdGlvblxyXG4gICAgICAgICAgICBsYW1iZGEgPSBNYXRoLmNlaWwoYmFzZSAvICgyICogZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KSksXHJcbiAgICAgICAgICAgIHJlbWFpbmRlciA9IG11bHRpcGx5U21hbGwoYSwgbGFtYmRhKSxcclxuICAgICAgICAgICAgZGl2aXNvciA9IG11bHRpcGx5U21hbGwoYiwgbGFtYmRhKSxcclxuICAgICAgICAgICAgcXVvdGllbnREaWdpdCwgc2hpZnQsIGNhcnJ5LCBib3Jyb3csIGksIGwsIHE7XHJcbiAgICAgICAgaWYgKHJlbWFpbmRlci5sZW5ndGggPD0gYV9sKSByZW1haW5kZXIucHVzaCgwKTtcclxuICAgICAgICBkaXZpc29yLnB1c2goMCk7XHJcbiAgICAgICAgZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0ID0gZGl2aXNvcltiX2wgLSAxXTtcclxuICAgICAgICBmb3IgKHNoaWZ0ID0gYV9sIC0gYl9sOyBzaGlmdCA+PSAwOyBzaGlmdC0tKSB7XHJcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBiYXNlIC0gMTtcclxuICAgICAgICAgICAgaWYgKHJlbWFpbmRlcltzaGlmdCArIGJfbF0gIT09IGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkge1xyXG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCA9IE1hdGguZmxvb3IoKHJlbWFpbmRlcltzaGlmdCArIGJfbF0gKiBiYXNlICsgcmVtYWluZGVyW3NoaWZ0ICsgYl9sIC0gMV0pIC8gZGl2aXNvck1vc3RTaWduaWZpY2FudERpZ2l0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBxdW90aWVudERpZ2l0IDw9IGJhc2UgLSAxXHJcbiAgICAgICAgICAgIGNhcnJ5ID0gMDtcclxuICAgICAgICAgICAgYm9ycm93ID0gMDtcclxuICAgICAgICAgICAgbCA9IGRpdmlzb3IubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjYXJyeSArPSBxdW90aWVudERpZ2l0ICogZGl2aXNvcltpXTtcclxuICAgICAgICAgICAgICAgIHEgPSBNYXRoLmZsb29yKGNhcnJ5IC8gYmFzZSk7XHJcbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gcmVtYWluZGVyW3NoaWZ0ICsgaV0gLSAoY2FycnkgLSBxICogYmFzZSk7XHJcbiAgICAgICAgICAgICAgICBjYXJyeSA9IHE7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9ycm93IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gYm9ycm93ICsgYmFzZTtcclxuICAgICAgICAgICAgICAgICAgICBib3Jyb3cgPSAtMTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBib3Jyb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aGlsZSAoYm9ycm93ICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBxdW90aWVudERpZ2l0IC09IDE7XHJcbiAgICAgICAgICAgICAgICBjYXJyeSA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FycnkgKz0gcmVtYWluZGVyW3NoaWZ0ICsgaV0gLSBiYXNlICsgZGl2aXNvcltpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FycnkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2FycnkgKyBiYXNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJyeSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyW3NoaWZ0ICsgaV0gPSBjYXJyeTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJvcnJvdyArPSBjYXJyeTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHRbc2hpZnRdID0gcXVvdGllbnREaWdpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZGVub3JtYWxpemF0aW9uXHJcbiAgICAgICAgcmVtYWluZGVyID0gZGl2TW9kU21hbGwocmVtYWluZGVyLCBsYW1iZGEpWzBdO1xyXG4gICAgICAgIHJldHVybiBbYXJyYXlUb1NtYWxsKHJlc3VsdCksIGFycmF5VG9TbWFsbChyZW1haW5kZXIpXTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkaXZNb2QyKGEsIGIpIHsgLy8gSW1wbGVtZW50YXRpb24gaWRlYSBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSBTaWxlbnQgTWF0dCdzIGxpYnJhcnkgaHR0cDovL3NpbGVudG1hdHQuY29tL2JpZ2ludGVnZXIvXHJcbiAgICAgICAgLy8gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMSBvbiBsYXJnZXIgaW5wdXQgc2l6ZXMuXHJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcclxuICAgICAgICAgICAgcmVzdWx0ID0gW10sXHJcbiAgICAgICAgICAgIHBhcnQgPSBbXSxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIGd1ZXNzLCB4bGVuLCBoaWdoeCwgaGlnaHksIGNoZWNrO1xyXG4gICAgICAgIHdoaWxlIChhX2wpIHtcclxuICAgICAgICAgICAgcGFydC51bnNoaWZ0KGFbLS1hX2xdKTtcclxuICAgICAgICAgICAgdHJpbShwYXJ0KTtcclxuICAgICAgICAgICAgaWYgKGNvbXBhcmVBYnMocGFydCwgYikgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgwKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHhsZW4gPSBwYXJ0Lmxlbmd0aDtcclxuICAgICAgICAgICAgaGlnaHggPSBwYXJ0W3hsZW4gLSAxXSAqIGJhc2UgKyBwYXJ0W3hsZW4gLSAyXTtcclxuICAgICAgICAgICAgaGlnaHkgPSBiW2JfbCAtIDFdICogYmFzZSArIGJbYl9sIC0gMl07XHJcbiAgICAgICAgICAgIGlmICh4bGVuID4gYl9sKSB7XHJcbiAgICAgICAgICAgICAgICBoaWdoeCA9IChoaWdoeCArIDEpICogYmFzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBndWVzcyA9IE1hdGguY2VpbChoaWdoeCAvIGhpZ2h5KTtcclxuICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgICAgY2hlY2sgPSBtdWx0aXBseVNtYWxsKGIsIGd1ZXNzKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wYXJlQWJzKGNoZWNrLCBwYXJ0KSA8PSAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIGd1ZXNzLS07XHJcbiAgICAgICAgICAgIH0gd2hpbGUgKGd1ZXNzKTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZ3Vlc3MpO1xyXG4gICAgICAgICAgICBwYXJ0ID0gc3VidHJhY3QocGFydCwgY2hlY2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQucmV2ZXJzZSgpO1xyXG4gICAgICAgIHJldHVybiBbYXJyYXlUb1NtYWxsKHJlc3VsdCksIGFycmF5VG9TbWFsbChwYXJ0KV07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZGl2TW9kU21hbGwodmFsdWUsIGxhbWJkYSkge1xyXG4gICAgICAgIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsXHJcbiAgICAgICAgICAgIHF1b3RpZW50ID0gY3JlYXRlQXJyYXkobGVuZ3RoKSxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIGksIHEsIHJlbWFpbmRlciwgZGl2aXNvcjtcclxuICAgICAgICByZW1haW5kZXIgPSAwO1xyXG4gICAgICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgIGRpdmlzb3IgPSByZW1haW5kZXIgKiBiYXNlICsgdmFsdWVbaV07XHJcbiAgICAgICAgICAgIHEgPSB0cnVuY2F0ZShkaXZpc29yIC8gbGFtYmRhKTtcclxuICAgICAgICAgICAgcmVtYWluZGVyID0gZGl2aXNvciAtIHEgKiBsYW1iZGE7XHJcbiAgICAgICAgICAgIHF1b3RpZW50W2ldID0gcSB8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIHJlbWFpbmRlciB8IDBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRpdk1vZEFueShzZWxmLCB2KSB7XHJcbiAgICAgICAgdmFyIHZhbHVlLCBuID0gcGFyc2VWYWx1ZSh2KTtcclxuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtuZXcgTmF0aXZlQmlnSW50KHNlbGYudmFsdWUgLyBuLnZhbHVlKSwgbmV3IE5hdGl2ZUJpZ0ludChzZWxmLnZhbHVlICUgbi52YWx1ZSldO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYSA9IHNlbGYudmFsdWUsIGIgPSBuLnZhbHVlO1xyXG4gICAgICAgIHZhciBxdW90aWVudDtcclxuICAgICAgICBpZiAoYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpdmlkZSBieSB6ZXJvXCIpO1xyXG4gICAgICAgIGlmIChzZWxmLmlzU21hbGwpIHtcclxuICAgICAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKGEgLyBiKSksIG5ldyBTbWFsbEludGVnZXIoYSAlIGIpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gW0ludGVnZXJbMF0sIHNlbGZdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChiID09PSAxKSByZXR1cm4gW3NlbGYsIEludGVnZXJbMF1dO1xyXG4gICAgICAgICAgICBpZiAoYiA9PSAtMSkgcmV0dXJuIFtzZWxmLm5lZ2F0ZSgpLCBJbnRlZ2VyWzBdXTtcclxuICAgICAgICAgICAgdmFyIGFicyA9IE1hdGguYWJzKGIpO1xyXG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2RTbWFsbChhLCBhYnMpO1xyXG4gICAgICAgICAgICAgICAgcXVvdGllbnQgPSBhcnJheVRvU21hbGwodmFsdWVbMF0pO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IHZhbHVlWzFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbikgcmVtYWluZGVyID0gLXJlbWFpbmRlcjtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5zaWduICE9PSBuLnNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcihxdW90aWVudCksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBCaWdJbnRlZ2VyKHF1b3RpZW50LCBzZWxmLnNpZ24gIT09IG4uc2lnbiksIG5ldyBTbWFsbEludGVnZXIocmVtYWluZGVyKV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShhYnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmVBYnMoYSwgYik7XHJcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPT09IC0xKSByZXR1cm4gW0ludGVnZXJbMF0sIHNlbGZdO1xyXG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAwKSByZXR1cm4gW0ludGVnZXJbc2VsZi5zaWduID09PSBuLnNpZ24gPyAxIDogLTFdLCBJbnRlZ2VyWzBdXTtcclxuXHJcbiAgICAgICAgLy8gZGl2TW9kMSBpcyBmYXN0ZXIgb24gc21hbGxlciBpbnB1dCBzaXplc1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCArIGIubGVuZ3RoIDw9IDIwMClcclxuICAgICAgICAgICAgdmFsdWUgPSBkaXZNb2QxKGEsIGIpO1xyXG4gICAgICAgIGVsc2UgdmFsdWUgPSBkaXZNb2QyKGEsIGIpO1xyXG5cclxuICAgICAgICBxdW90aWVudCA9IHZhbHVlWzBdO1xyXG4gICAgICAgIHZhciBxU2lnbiA9IHNlbGYuc2lnbiAhPT0gbi5zaWduLFxyXG4gICAgICAgICAgICBtb2QgPSB2YWx1ZVsxXSxcclxuICAgICAgICAgICAgbVNpZ24gPSBzZWxmLnNpZ247XHJcbiAgICAgICAgaWYgKHR5cGVvZiBxdW90aWVudCA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICBpZiAocVNpZ24pIHF1b3RpZW50ID0gLXF1b3RpZW50O1xyXG4gICAgICAgICAgICBxdW90aWVudCA9IG5ldyBTbWFsbEludGVnZXIocXVvdGllbnQpO1xyXG4gICAgICAgIH0gZWxzZSBxdW90aWVudCA9IG5ldyBCaWdJbnRlZ2VyKHF1b3RpZW50LCBxU2lnbik7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2QgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgaWYgKG1TaWduKSBtb2QgPSAtbW9kO1xyXG4gICAgICAgICAgICBtb2QgPSBuZXcgU21hbGxJbnRlZ2VyKG1vZCk7XHJcbiAgICAgICAgfSBlbHNlIG1vZCA9IG5ldyBCaWdJbnRlZ2VyKG1vZCwgbVNpZ24pO1xyXG4gICAgICAgIHJldHVybiBbcXVvdGllbnQsIG1vZF07XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gZGl2TW9kQW55KHRoaXMsIHYpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHF1b3RpZW50OiByZXN1bHRbMF0sXHJcbiAgICAgICAgICAgIHJlbWFpbmRlcjogcmVzdWx0WzFdXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmRpdm1vZCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2bW9kO1xyXG5cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBkaXZNb2RBbnkodGhpcywgdilbMF07XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5vdmVyID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLyBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm92ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdmlkZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm92ZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gZGl2TW9kQW55KHRoaXMsIHYpWzFdO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubW9kID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5yZW1haW5kZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgJSBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kID0gQmlnSW50ZWdlci5wcm90b3R5cGUucmVtYWluZGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxyXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcclxuICAgICAgICAgICAgYiA9IG4udmFsdWUsXHJcbiAgICAgICAgICAgIHZhbHVlLCB4LCB5O1xyXG4gICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gSW50ZWdlclsxXTtcclxuICAgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJuIEludGVnZXJbMF07XHJcbiAgICAgICAgaWYgKGEgPT09IDEpIHJldHVybiBJbnRlZ2VyWzFdO1xyXG4gICAgICAgIGlmIChhID09PSAtMSkgcmV0dXJuIG4uaXNFdmVuKCkgPyBJbnRlZ2VyWzFdIDogSW50ZWdlclstMV07XHJcbiAgICAgICAgaWYgKG4uc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlclswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFuLmlzU21hbGwpIHRocm93IG5ldyBFcnJvcihcIlRoZSBleHBvbmVudCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGlzIHRvbyBsYXJnZS5cIik7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTbWFsbCkge1xyXG4gICAgICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlID0gTWF0aC5wb3coYSwgYikpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodHJ1bmNhdGUodmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgeCA9IHRoaXM7XHJcbiAgICAgICAgeSA9IEludGVnZXJbMV07XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgaWYgKGIgJiAxID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcclxuICAgICAgICAgICAgICAgIC0tYjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIGIgLz0gMjtcclxuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucG93ID0gQmlnSW50ZWdlci5wcm90b3R5cGUucG93O1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XHJcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcclxuICAgICAgICB2YXIgXzAgPSBCaWdJbnQoMCksIF8xID0gQmlnSW50KDEpLCBfMiA9IEJpZ0ludCgyKTtcclxuICAgICAgICBpZiAoYiA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzFdO1xyXG4gICAgICAgIGlmIChhID09PSBfMCkgcmV0dXJuIEludGVnZXJbMF07XHJcbiAgICAgICAgaWYgKGEgPT09IF8xKSByZXR1cm4gSW50ZWdlclsxXTtcclxuICAgICAgICBpZiAoYSA9PT0gQmlnSW50KC0xKSkgcmV0dXJuIG4uaXNFdmVuKCkgPyBJbnRlZ2VyWzFdIDogSW50ZWdlclstMV07XHJcbiAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKSByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChfMCk7XHJcbiAgICAgICAgdmFyIHggPSB0aGlzO1xyXG4gICAgICAgIHZhciB5ID0gSW50ZWdlclsxXTtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICBpZiAoKGIgJiBfMSkgPT09IF8xKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0geS50aW1lcyh4KTtcclxuICAgICAgICAgICAgICAgIC0tYjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYiA9PT0gXzApIGJyZWFrO1xyXG4gICAgICAgICAgICBiIC89IF8yO1xyXG4gICAgICAgICAgICB4ID0geC5zcXVhcmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gZnVuY3Rpb24gKGV4cCwgbW9kKSB7XHJcbiAgICAgICAgZXhwID0gcGFyc2VWYWx1ZShleHApO1xyXG4gICAgICAgIG1vZCA9IHBhcnNlVmFsdWUobW9kKTtcclxuICAgICAgICBpZiAobW9kLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdGFrZSBtb2RQb3cgd2l0aCBtb2R1bHVzIDBcIik7XHJcbiAgICAgICAgdmFyIHIgPSBJbnRlZ2VyWzFdLFxyXG4gICAgICAgICAgICBiYXNlID0gdGhpcy5tb2QobW9kKTtcclxuICAgICAgICBpZiAoZXhwLmlzTmVnYXRpdmUoKSkge1xyXG4gICAgICAgICAgICBleHAgPSBleHAubXVsdGlwbHkoSW50ZWdlclstMV0pO1xyXG4gICAgICAgICAgICBiYXNlID0gYmFzZS5tb2RJbnYobW9kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGV4cC5pc1Bvc2l0aXZlKCkpIHtcclxuICAgICAgICAgICAgaWYgKGJhc2UuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xyXG4gICAgICAgICAgICBleHAgPSBleHAuZGl2aWRlKDIpO1xyXG4gICAgICAgICAgICBiYXNlID0gYmFzZS5zcXVhcmUoKS5tb2QobW9kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcclxuXHJcbiAgICBmdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcclxuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXHJcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSByZXR1cm4gMTtcclxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcclxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcclxuICAgICAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcclxuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XHJcbiAgICAgICAgYSA9IGEgPj0gMCA/IGEgOiAtYTtcclxuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xyXG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGFib3V0IGNvbXBhcmlzb24gd2l0aCBJbmZpbml0eTpcclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxyXG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXHJcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKSAqICh0aGlzLnNpZ24gPyAtMSA6IDEpO1xyXG4gICAgfTtcclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxyXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcclxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhIDwgMCA/IDEgOiAtMTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcclxuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XHJcbiAgICB9XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVUbyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5lcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHM7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpICE9PSAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3QgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmd0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA8IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sdCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubHQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXI7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID49IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscztcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdICYgMSkgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDApO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2lnbjtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPiAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy52YWx1ZSkgPT09IDE7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzKCkudmFsdWUgPT09IEJpZ0ludCgxKTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xyXG4gICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChuLmNvbXBhcmVBYnMoMikgPT09IDApIHJldHVybiB0aGlzLmlzRXZlbigpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZChuKS5pc1plcm8oKTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5O1xyXG5cclxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSB2LmFicygpO1xyXG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAobi5pc0V2ZW4oKSB8fCBuLmlzRGl2aXNpYmxlQnkoMykgfHwgbi5pc0RpdmlzaWJsZUJ5KDUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4ubGVzc2VyKDQ5KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcclxuICAgICAgICB2YXIgblByZXYgPSBuLnByZXYoKSxcclxuICAgICAgICAgICAgYiA9IG5QcmV2LFxyXG4gICAgICAgICAgICByID0gMCxcclxuICAgICAgICAgICAgZCwgdCwgaSwgeDtcclxuICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkgYiA9IGIuZGl2aWRlKDIpLCByKys7XHJcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKG4ubGVzc2VyKGFbaV0pKSBjb250aW51ZTtcclxuICAgICAgICAgICAgeCA9IGJpZ0ludChhW2ldKS5tb2RQb3coYiwgbik7XHJcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGZvciAoZCA9IHIgLSAxOyBkICE9IDA7IGQtLSkge1xyXG4gICAgICAgICAgICAgICAgeCA9IHguc3F1YXJlKCkubW9kKG4pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICh4LmVxdWFscyhuUHJldikpIGNvbnRpbnVlIG5leHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgXCJzdHJpY3RcIiB0byB0cnVlIHRvIGZvcmNlIEdSSC1zdXBwb3J0ZWQgbG93ZXIgYm91bmQgb2YgMipsb2coTileMlxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcclxuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcclxuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcclxuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XHJcbiAgICAgICAgdmFyIGJpdHMgPSBuLmJpdExlbmd0aCgpO1xyXG4gICAgICAgIGlmIChiaXRzIDw9IDY0KVxyXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcclxuICAgICAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogYml0cy50b0pTTnVtYmVyKCk7XHJcbiAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwoKHN0cmljdCA9PT0gdHJ1ZSkgPyAoMiAqIE1hdGgucG93KGxvZ04sIDIpKSA6IGxvZ04pO1xyXG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludChpICsgMikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMsIHJuZykge1xyXG4gICAgICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHRoaXMpO1xyXG4gICAgICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xyXG4gICAgICAgIHZhciBuID0gdGhpcy5hYnMoKTtcclxuICAgICAgICB2YXIgdCA9IGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCA/IDUgOiBpdGVyYXRpb25zO1xyXG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludC5yYW5kQmV0d2VlbigyLCBuLm1pbnVzKDIpLCBybmcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1pbGxlclJhYmluVGVzdChuLCBhKTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludiA9IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgdmFyIHQgPSBiaWdJbnQuemVybywgbmV3VCA9IGJpZ0ludC5vbmUsIHIgPSBwYXJzZVZhbHVlKG4pLCBuZXdSID0gdGhpcy5hYnMoKSwgcSwgbGFzdFQsIGxhc3RSO1xyXG4gICAgICAgIHdoaWxlICghbmV3Ui5pc1plcm8oKSkge1xyXG4gICAgICAgICAgICBxID0gci5kaXZpZGUobmV3Uik7XHJcbiAgICAgICAgICAgIGxhc3RUID0gdDtcclxuICAgICAgICAgICAgbGFzdFIgPSByO1xyXG4gICAgICAgICAgICB0ID0gbmV3VDtcclxuICAgICAgICAgICAgciA9IG5ld1I7XHJcbiAgICAgICAgICAgIG5ld1QgPSBsYXN0VC5zdWJ0cmFjdChxLm11bHRpcGx5KG5ld1QpKTtcclxuICAgICAgICAgICAgbmV3UiA9IGxhc3RSLnN1YnRyYWN0KHEubXVsdGlwbHkobmV3UikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXIuaXNVbml0KCkpIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xyXG4gICAgICAgIGlmICh0LmNvbXBhcmUoMCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHQgPSB0LmFkZChuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0Lm5lZ2F0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcblxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RJbnYgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZEludiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludjtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbCh2YWx1ZSwgMSwgdGhpcy5zaWduKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdGhpcy5zaWduKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgKyAxIDwgTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgKyAxKTtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIGZhbHNlKTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodGhpcy52YWx1ZSArIEJpZ0ludCgxKSk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKHZhbHVlLCAxKSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSAtIDEgPiAtTUFYX0lOVCkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUgLSAxKTtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoTUFYX0lOVF9BUlIsIHRydWUpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucHJldiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC0gQmlnSW50KDEpKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcG93ZXJzT2ZUd28gPSBbMV07XHJcbiAgICB3aGlsZSAoMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdIDw9IEJBU0UpIHBvd2Vyc09mVHdvLnB1c2goMiAqIHBvd2Vyc09mVHdvW3Bvd2Vyc09mVHdvLmxlbmd0aCAtIDFdKTtcclxuICAgIHZhciBwb3dlcnMyTGVuZ3RoID0gcG93ZXJzT2ZUd28ubGVuZ3RoLCBoaWdoZXN0UG93ZXIyID0gcG93ZXJzT2ZUd29bcG93ZXJzMkxlbmd0aCAtIDFdO1xyXG5cclxuICAgIGZ1bmN0aW9uIHNoaWZ0X2lzU21hbGwobikge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhuKSA8PSBCQVNFO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLnRvSlNOdW1iZXIoKTtcclxuICAgICAgICBpZiAoIXNoaWZ0X2lzU21hbGwobikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhuKSArIFwiIGlzIHRvbyBsYXJnZSBmb3Igc2hpZnRpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobiA8IDApIHJldHVybiB0aGlzLnNoaWZ0UmlnaHQoLW4pO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXNaZXJvKCkpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgd2hpbGUgKG4gPj0gcG93ZXJzMkxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoaGlnaGVzdFBvd2VyMik7XHJcbiAgICAgICAgICAgIG4gLT0gcG93ZXJzMkxlbmd0aCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQubXVsdGlwbHkocG93ZXJzT2ZUd29bbl0pO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdExlZnQ7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIHJlbVF1bztcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xyXG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKG4pICsgXCIgaXMgdG9vIGxhcmdlIGZvciBzaGlmdGluZy5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRMZWZ0KC1uKTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcztcclxuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNaZXJvKCkgfHwgKHJlc3VsdC5pc05lZ2F0aXZlKCkgJiYgcmVzdWx0LmlzVW5pdCgpKSkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgcmVtUXVvID0gZGl2TW9kQW55KHJlc3VsdCwgaGlnaGVzdFBvd2VyMik7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xyXG4gICAgICAgICAgICBuIC09IHBvd2VyczJMZW5ndGggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBwb3dlcnNPZlR3b1tuXSk7XHJcbiAgICAgICAgcmV0dXJuIHJlbVF1b1sxXS5pc05lZ2F0aXZlKCkgPyByZW1RdW9bMF0ucHJldigpIDogcmVtUXVvWzBdO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc2hpZnRSaWdodCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQ7XHJcblxyXG4gICAgZnVuY3Rpb24gYml0d2lzZSh4LCB5LCBmbikge1xyXG4gICAgICAgIHkgPSBwYXJzZVZhbHVlKHkpO1xyXG4gICAgICAgIHZhciB4U2lnbiA9IHguaXNOZWdhdGl2ZSgpLCB5U2lnbiA9IHkuaXNOZWdhdGl2ZSgpO1xyXG4gICAgICAgIHZhciB4UmVtID0geFNpZ24gPyB4Lm5vdCgpIDogeCxcclxuICAgICAgICAgICAgeVJlbSA9IHlTaWduID8geS5ub3QoKSA6IHk7XHJcbiAgICAgICAgdmFyIHhEaWdpdCA9IDAsIHlEaWdpdCA9IDA7XHJcbiAgICAgICAgdmFyIHhEaXZNb2QgPSBudWxsLCB5RGl2TW9kID0gbnVsbDtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICAgICAgd2hpbGUgKCF4UmVtLmlzWmVybygpIHx8ICF5UmVtLmlzWmVybygpKSB7XHJcbiAgICAgICAgICAgIHhEaXZNb2QgPSBkaXZNb2RBbnkoeFJlbSwgaGlnaGVzdFBvd2VyMik7XHJcbiAgICAgICAgICAgIHhEaWdpdCA9IHhEaXZNb2RbMV0udG9KU051bWJlcigpO1xyXG4gICAgICAgICAgICBpZiAoeFNpZ24pIHtcclxuICAgICAgICAgICAgICAgIHhEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geERpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHlEaXZNb2QgPSBkaXZNb2RBbnkoeVJlbSwgaGlnaGVzdFBvd2VyMik7XHJcbiAgICAgICAgICAgIHlEaWdpdCA9IHlEaXZNb2RbMV0udG9KU051bWJlcigpO1xyXG4gICAgICAgICAgICBpZiAoeVNpZ24pIHtcclxuICAgICAgICAgICAgICAgIHlEaWdpdCA9IGhpZ2hlc3RQb3dlcjIgLSAxIC0geURpZ2l0OyAvLyB0d28ncyBjb21wbGVtZW50IGZvciBuZWdhdGl2ZSBudW1iZXJzXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHhSZW0gPSB4RGl2TW9kWzBdO1xyXG4gICAgICAgICAgICB5UmVtID0geURpdk1vZFswXTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZm4oeERpZ2l0LCB5RGlnaXQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN1bSA9IGZuKHhTaWduID8gMSA6IDAsIHlTaWduID8gMSA6IDApICE9PSAwID8gYmlnSW50KC0xKSA6IGJpZ0ludCgwKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gcmVzdWx0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XHJcbiAgICAgICAgICAgIHN1bSA9IHN1bS5tdWx0aXBseShoaWdoZXN0UG93ZXIyKS5hZGQoYmlnSW50KHJlc3VsdFtpXSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3VtO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5wcmV2KCk7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5vdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm5vdDtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAobikge1xyXG4gICAgICAgIHJldHVybiBiaXR3aXNlKHRoaXMsIG4sIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICYgYjsgfSk7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5hbmQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmFuZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZDtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgfCBiOyB9KTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm9yO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgXiBiOyB9KTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnhvciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUueG9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUueG9yO1xyXG5cclxuICAgIHZhciBMT0JNQVNLX0kgPSAxIDw8IDMwLCBMT0JNQVNLX0JJID0gKEJBU0UgJiAtQkFTRSkgKiAoQkFTRSAmIC1CQVNFKSB8IExPQk1BU0tfSTtcclxuICAgIGZ1bmN0aW9uIHJvdWdoTE9CKG4pIHsgLy8gZ2V0IGxvd2VzdE9uZUJpdCAocm91Z2gpXHJcbiAgICAgICAgLy8gU21hbGxJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAzMClcclxuICAgICAgICAvLyBCaWdJbnRlZ2VyOiByZXR1cm4gTWluKGxvd2VzdE9uZUJpdChuKSwgMSA8PCAxNCkgW0JBU0U9MWU3XVxyXG4gICAgICAgIHZhciB2ID0gbi52YWx1ZSxcclxuICAgICAgICAgICAgeCA9IHR5cGVvZiB2ID09PSBcIm51bWJlclwiID8gdiB8IExPQk1BU0tfSSA6XHJcbiAgICAgICAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIiA/IHYgfCBCaWdJbnQoTE9CTUFTS19JKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgdlswXSArIHZbMV0gKiBCQVNFIHwgTE9CTUFTS19CSTtcclxuICAgICAgICByZXR1cm4geCAmIC14O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGludGVnZXJMb2dhcml0aG0odmFsdWUsIGJhc2UpIHtcclxuICAgICAgICBpZiAoYmFzZS5jb21wYXJlVG8odmFsdWUpIDw9IDApIHtcclxuICAgICAgICAgICAgdmFyIHRtcCA9IGludGVnZXJMb2dhcml0aG0odmFsdWUsIGJhc2Uuc3F1YXJlKGJhc2UpKTtcclxuICAgICAgICAgICAgdmFyIHAgPSB0bXAucDtcclxuICAgICAgICAgICAgdmFyIGUgPSB0bXAuZTtcclxuICAgICAgICAgICAgdmFyIHQgPSBwLm11bHRpcGx5KGJhc2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gdC5jb21wYXJlVG8odmFsdWUpIDw9IDAgPyB7IHA6IHQsIGU6IGUgKiAyICsgMSB9IDogeyBwOiBwLCBlOiBlICogMiB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyBwOiBiaWdJbnQoMSksIGU6IDAgfTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzO1xyXG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpIDwgMCkge1xyXG4gICAgICAgICAgICBuID0gbi5uZWdhdGUoKS5zdWJ0cmFjdChiaWdJbnQoMSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobi5jb21wYXJlVG8oYmlnSW50KDApKSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYmlnSW50KDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYmlnSW50KGludGVnZXJMb2dhcml0aG0obiwgYmlnSW50KDIpKS5lKS5hZGQoYmlnSW50KDEpKTtcclxuICAgIH1cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYml0TGVuZ3RoID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGggPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRMZW5ndGg7XHJcblxyXG4gICAgZnVuY3Rpb24gbWF4KGEsIGIpIHtcclxuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcclxuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcclxuICAgICAgICByZXR1cm4gYS5ncmVhdGVyKGIpID8gYSA6IGI7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBtaW4oYSwgYikge1xyXG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xyXG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xyXG4gICAgICAgIHJldHVybiBhLmxlc3NlcihiKSA/IGEgOiBiO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ2NkKGEsIGIpIHtcclxuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcclxuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKS5hYnMoKTtcclxuICAgICAgICBpZiAoYS5lcXVhbHMoYikpIHJldHVybiBhO1xyXG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYjtcclxuICAgICAgICBpZiAoYi5pc1plcm8oKSkgcmV0dXJuIGE7XHJcbiAgICAgICAgdmFyIGMgPSBJbnRlZ2VyWzFdLCBkLCB0O1xyXG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpICYmIGIuaXNFdmVuKCkpIHtcclxuICAgICAgICAgICAgZCA9IG1pbihyb3VnaExPQihhKSwgcm91Z2hMT0IoYikpO1xyXG4gICAgICAgICAgICBhID0gYS5kaXZpZGUoZCk7XHJcbiAgICAgICAgICAgIGIgPSBiLmRpdmlkZShkKTtcclxuICAgICAgICAgICAgYyA9IGMubXVsdGlwbHkoZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XHJcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShyb3VnaExPQihhKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcclxuICAgICAgICAgICAgICAgIGIgPSBiLmRpdmlkZShyb3VnaExPQihiKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGEuZ3JlYXRlcihiKSkge1xyXG4gICAgICAgICAgICAgICAgdCA9IGI7IGIgPSBhOyBhID0gdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiID0gYi5zdWJ0cmFjdChhKTtcclxuICAgICAgICB9IHdoaWxlICghYi5pc1plcm8oKSk7XHJcbiAgICAgICAgcmV0dXJuIGMuaXNVbml0KCkgPyBhIDogYS5tdWx0aXBseShjKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGxjbShhLCBiKSB7XHJcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSkuYWJzKCk7XHJcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYikuYWJzKCk7XHJcbiAgICAgICAgcmV0dXJuIGEuZGl2aWRlKGdjZChhLCBiKSkubXVsdGlwbHkoYik7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByYW5kQmV0d2VlbihhLCBiLCBybmcpIHtcclxuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcclxuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcclxuICAgICAgICB2YXIgdXNlZFJORyA9IHJuZyB8fCBNYXRoLnJhbmRvbTtcclxuICAgICAgICB2YXIgbG93ID0gbWluKGEsIGIpLCBoaWdoID0gbWF4KGEsIGIpO1xyXG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XHJcbiAgICAgICAgaWYgKHJhbmdlLmlzU21hbGwpIHJldHVybiBsb3cuYWRkKE1hdGguZmxvb3IodXNlZFJORygpICogcmFuZ2UpKTtcclxuICAgICAgICB2YXIgZGlnaXRzID0gdG9CYXNlKHJhbmdlLCBCQVNFKS52YWx1ZTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gW10sIHJlc3RyaWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciB0b3AgPSByZXN0cmljdGVkID8gZGlnaXRzW2ldIDogQkFTRTtcclxuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gdHJ1bmNhdGUodXNlZFJORygpICogdG9wKTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZGlnaXQpO1xyXG4gICAgICAgICAgICBpZiAoZGlnaXQgPCB0b3ApIHJlc3RyaWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvdy5hZGQoSW50ZWdlci5mcm9tQXJyYXkocmVzdWx0LCBCQVNFLCBmYWxzZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBwYXJzZUJhc2UgPSBmdW5jdGlvbiAodGV4dCwgYmFzZSwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XHJcbiAgICAgICAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcclxuICAgICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICAgICAgdGV4dCA9IHRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIGk7XHJcbiAgICAgICAgdmFyIGFic0Jhc2UgPSBNYXRoLmFicyhiYXNlKTtcclxuICAgICAgICB2YXIgYWxwaGFiZXRWYWx1ZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWxwaGFiZXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgYWxwaGFiZXRWYWx1ZXNbYWxwaGFiZXRbaV1dID0gaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcclxuICAgICAgICAgICAgaWYgKGMgPT09IFwiLVwiKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhbHBoYWJldFZhbHVlc1tjXSA+PSBhYnNCYXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09IFwiMVwiICYmIGFic0Jhc2UgPT09IDEpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihjICsgXCIgaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gYmFzZSBcIiArIGJhc2UgKyBcIi5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYmFzZSA9IHBhcnNlVmFsdWUoYmFzZSk7XHJcbiAgICAgICAgdmFyIGRpZ2l0cyA9IFtdO1xyXG4gICAgICAgIHZhciBpc05lZ2F0aXZlID0gdGV4dFswXSA9PT0gXCItXCI7XHJcbiAgICAgICAgZm9yIChpID0gaXNOZWdhdGl2ZSA/IDEgOiAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHRleHRbaV07XHJcbiAgICAgICAgICAgIGlmIChjIGluIGFscGhhYmV0VmFsdWVzKSBkaWdpdHMucHVzaChwYXJzZVZhbHVlKGFscGhhYmV0VmFsdWVzW2NdKSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IFwiPFwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBpO1xyXG4gICAgICAgICAgICAgICAgZG8geyBpKys7IH0gd2hpbGUgKHRleHRbaV0gIT09IFwiPlwiICYmIGkgPCB0ZXh0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBkaWdpdHMucHVzaChwYXJzZVZhbHVlKHRleHQuc2xpY2Uoc3RhcnQgKyAxLCBpKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBjaGFyYWN0ZXJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKTtcclxuICAgIH07XHJcblxyXG4gICAgZnVuY3Rpb24gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cywgYmFzZSwgaXNOZWdhdGl2ZSkge1xyXG4gICAgICAgIHZhciB2YWwgPSBJbnRlZ2VyWzBdLCBwb3cgPSBJbnRlZ2VyWzFdLCBpO1xyXG4gICAgICAgIGZvciAoaSA9IGRpZ2l0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICB2YWwgPSB2YWwuYWRkKGRpZ2l0c1tpXS50aW1lcyhwb3cpKTtcclxuICAgICAgICAgICAgcG93ID0gcG93LnRpbWVzKGJhc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZSA/IHZhbC5uZWdhdGUoKSA6IHZhbDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdHJpbmdpZnkoZGlnaXQsIGFscGhhYmV0KSB7XHJcbiAgICAgICAgYWxwaGFiZXQgPSBhbHBoYWJldCB8fCBERUZBVUxUX0FMUEhBQkVUO1xyXG4gICAgICAgIGlmIChkaWdpdCA8IGFscGhhYmV0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWxwaGFiZXRbZGlnaXRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCI8XCIgKyBkaWdpdCArIFwiPlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHRvQmFzZShuLCBiYXNlKSB7XHJcbiAgICAgICAgYmFzZSA9IGJpZ0ludChiYXNlKTtcclxuICAgICAgICBpZiAoYmFzZS5pc1plcm8oKSkge1xyXG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbnZlcnQgbm9uemVybyBudW1iZXJzIHRvIGJhc2UgMC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChiYXNlLmVxdWFscygtMSkpIHtcclxuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtdLmNvbmNhdC5hcHBseShbXSwgQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkoLW4udG9KU051bWJlcigpKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzEsIDBdKVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgYXJyID0gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobi50b0pTTnVtYmVyKCkgLSAxKSlcclxuICAgICAgICAgICAgICAgIC5tYXAoQXJyYXkucHJvdG90eXBlLnZhbHVlT2YsIFswLCAxXSk7XHJcbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFsxXSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBhcnIpLFxyXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogZmFsc2VcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBuZWcgPSBmYWxzZTtcclxuICAgICAgICBpZiAobi5pc05lZ2F0aXZlKCkgJiYgYmFzZS5pc1Bvc2l0aXZlKCkpIHtcclxuICAgICAgICAgICAgbmVnID0gdHJ1ZTtcclxuICAgICAgICAgICAgbiA9IG4uYWJzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChiYXNlLmlzVW5pdCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBBcnJheS5hcHBseShudWxsLCBBcnJheShuLnRvSlNOdW1iZXIoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsIDEpLFxyXG4gICAgICAgICAgICAgICAgaXNOZWdhdGl2ZTogbmVnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBvdXQgPSBbXTtcclxuICAgICAgICB2YXIgbGVmdCA9IG4sIGRpdm1vZDtcclxuICAgICAgICB3aGlsZSAobGVmdC5pc05lZ2F0aXZlKCkgfHwgbGVmdC5jb21wYXJlQWJzKGJhc2UpID49IDApIHtcclxuICAgICAgICAgICAgZGl2bW9kID0gbGVmdC5kaXZtb2QoYmFzZSk7XHJcbiAgICAgICAgICAgIGxlZnQgPSBkaXZtb2QucXVvdGllbnQ7XHJcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IGRpdm1vZC5yZW1haW5kZXI7XHJcbiAgICAgICAgICAgIGlmIChkaWdpdC5pc05lZ2F0aXZlKCkpIHtcclxuICAgICAgICAgICAgICAgIGRpZ2l0ID0gYmFzZS5taW51cyhkaWdpdCkuYWJzKCk7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3V0LnB1c2goZGlnaXQudG9KU051bWJlcigpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0LnB1c2gobGVmdC50b0pTTnVtYmVyKCkpO1xyXG4gICAgICAgIHJldHVybiB7IHZhbHVlOiBvdXQucmV2ZXJzZSgpLCBpc05lZ2F0aXZlOiBuZWcgfTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0b0Jhc2VTdHJpbmcobiwgYmFzZSwgYWxwaGFiZXQpIHtcclxuICAgICAgICB2YXIgYXJyID0gdG9CYXNlKG4sIGJhc2UpO1xyXG4gICAgICAgIHJldHVybiAoYXJyLmlzTmVnYXRpdmUgPyBcIi1cIiA6IFwiXCIpICsgYXJyLnZhbHVlLm1hcChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3RyaW5naWZ5KHgsIGFscGhhYmV0KTtcclxuICAgICAgICB9KS5qb2luKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XHJcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XHJcbiAgICB9O1xyXG5cclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xyXG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcclxuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcclxuICAgIH07XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAocmFkaXgsIGFscGhhYmV0KSB7XHJcbiAgICAgICAgaWYgKHJhZGl4ID09PSB1bmRlZmluZWQpIHJhZGl4ID0gMTA7XHJcbiAgICAgICAgaWYgKHJhZGl4ICE9PSAxMCkgcmV0dXJuIHRvQmFzZVN0cmluZyh0aGlzLCByYWRpeCwgYWxwaGFiZXQpO1xyXG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZSwgbCA9IHYubGVuZ3RoLCBzdHIgPSBTdHJpbmcodlstLWxdKSwgemVyb3MgPSBcIjAwMDAwMDBcIiwgZGlnaXQ7XHJcbiAgICAgICAgd2hpbGUgKC0tbCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGRpZ2l0ID0gU3RyaW5nKHZbbF0pO1xyXG4gICAgICAgICAgICBzdHIgKz0gemVyb3Muc2xpY2UoZGlnaXQubGVuZ3RoKSArIGRpZ2l0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc2lnbiA9IHRoaXMuc2lnbiA/IFwiLVwiIDogXCJcIjtcclxuICAgICAgICByZXR1cm4gc2lnbiArIHN0cjtcclxuICAgIH07XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcclxuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcclxuICAgICAgICBpZiAocmFkaXggIT0gMTApIHJldHVybiB0b0Jhc2VTdHJpbmcodGhpcywgcmFkaXgsIGFscGhhYmV0KTtcclxuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvU3RyaW5nID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZztcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRvSlNPTiA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnRvSlNPTiA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy50b1N0cmluZygpOyB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy50b1N0cmluZygpLCAxMCk7XHJcbiAgICB9O1xyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnZhbHVlT2Y7XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUudG9KU051bWJlciA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZjtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU051bWJlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy50b1N0cmluZygpLCAxMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcGFyc2VTdHJpbmdWYWx1ZSh2KSB7XHJcbiAgICAgICAgaWYgKGlzUHJlY2lzZSgrdikpIHtcclxuICAgICAgICAgICAgdmFyIHggPSArdjtcclxuICAgICAgICAgICAgaWYgKHggPT09IHRydW5jYXRlKHgpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRzTmF0aXZlQmlnSW50ID8gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQoeCkpIDogbmV3IFNtYWxsSW50ZWdlcih4KTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc2lnbiA9IHZbMF0gPT09IFwiLVwiO1xyXG4gICAgICAgIGlmIChzaWduKSB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB2YXIgc3BsaXQgPSB2LnNwbGl0KC9lL2kpO1xyXG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPiAyKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgc3BsaXQuam9pbihcImVcIikpO1xyXG4gICAgICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgdmFyIGV4cCA9IHNwbGl0WzFdO1xyXG4gICAgICAgICAgICBpZiAoZXhwWzBdID09PSBcIitcIikgZXhwID0gZXhwLnNsaWNlKDEpO1xyXG4gICAgICAgICAgICBleHAgPSArZXhwO1xyXG4gICAgICAgICAgICBpZiAoZXhwICE9PSB0cnVuY2F0ZShleHApIHx8ICFpc1ByZWNpc2UoZXhwKSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIGV4cCArIFwiIGlzIG5vdCBhIHZhbGlkIGV4cG9uZW50LlwiKTtcclxuICAgICAgICAgICAgdmFyIHRleHQgPSBzcGxpdFswXTtcclxuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZSA9IHRleHQuaW5kZXhPZihcIi5cIik7XHJcbiAgICAgICAgICAgIGlmIChkZWNpbWFsUGxhY2UgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgZXhwIC09IHRleHQubGVuZ3RoIC0gZGVjaW1hbFBsYWNlIC0gMTtcclxuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIGRlY2ltYWxQbGFjZSkgKyB0ZXh0LnNsaWNlKGRlY2ltYWxQbGFjZSArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChleHAgPCAwKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgaW5jbHVkZSBuZWdhdGl2ZSBleHBvbmVudCBwYXJ0IGZvciBpbnRlZ2Vyc1wiKTtcclxuICAgICAgICAgICAgdGV4dCArPSAobmV3IEFycmF5KGV4cCArIDEpKS5qb2luKFwiMFwiKTtcclxuICAgICAgICAgICAgdiA9IHRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBpc1ZhbGlkID0gL14oWzAtOV1bMC05XSopJC8udGVzdCh2KTtcclxuICAgICAgICBpZiAoIWlzVmFsaWQpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyB2KTtcclxuICAgICAgICBpZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoQmlnSW50KHNpZ24gPyBcIi1cIiArIHYgOiB2KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByID0gW10sIG1heCA9IHYubGVuZ3RoLCBsID0gTE9HX0JBU0UsIG1pbiA9IG1heCAtIGw7XHJcbiAgICAgICAgd2hpbGUgKG1heCA+IDApIHtcclxuICAgICAgICAgICAgci5wdXNoKCt2LnNsaWNlKG1pbiwgbWF4KSk7XHJcbiAgICAgICAgICAgIG1pbiAtPSBsO1xyXG4gICAgICAgICAgICBpZiAobWluIDwgMCkgbWluID0gMDtcclxuICAgICAgICAgICAgbWF4IC09IGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyaW0ocik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHIsIHNpZ24pO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHBhcnNlTnVtYmVyVmFsdWUodikge1xyXG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQodikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNQcmVjaXNlKHYpKSB7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSB0cnVuY2F0ZSh2KSkgdGhyb3cgbmV3IEVycm9yKHYgKyBcIiBpcyBub3QgYW4gaW50ZWdlci5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyc2VTdHJpbmdWYWx1ZSh2LnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJWYWx1ZSh2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1ZhbHVlKHYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwiYmlnaW50XCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG4gICAgLy8gUHJlLWRlZmluZSBudW1iZXJzIGluIHJhbmdlIFstOTk5LDk5OV1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7XHJcbiAgICAgICAgSW50ZWdlcltpXSA9IHBhcnNlVmFsdWUoaSk7XHJcbiAgICAgICAgaWYgKGkgPiAwKSBJbnRlZ2VyWy1pXSA9IHBhcnNlVmFsdWUoLWkpO1xyXG4gICAgfVxyXG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcclxuICAgIEludGVnZXIub25lID0gSW50ZWdlclsxXTtcclxuICAgIEludGVnZXIuemVybyA9IEludGVnZXJbMF07XHJcbiAgICBJbnRlZ2VyLm1pbnVzT25lID0gSW50ZWdlclstMV07XHJcbiAgICBJbnRlZ2VyLm1heCA9IG1heDtcclxuICAgIEludGVnZXIubWluID0gbWluO1xyXG4gICAgSW50ZWdlci5nY2QgPSBnY2Q7XHJcbiAgICBJbnRlZ2VyLmxjbSA9IGxjbTtcclxuICAgIEludGVnZXIuaXNJbnN0YW5jZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IGluc3RhbmNlb2YgQmlnSW50ZWdlciB8fCB4IGluc3RhbmNlb2YgU21hbGxJbnRlZ2VyIHx8IHggaW5zdGFuY2VvZiBOYXRpdmVCaWdJbnQ7IH07XHJcbiAgICBJbnRlZ2VyLnJhbmRCZXR3ZWVuID0gcmFuZEJldHdlZW47XHJcblxyXG4gICAgSW50ZWdlci5mcm9tQXJyYXkgPSBmdW5jdGlvbiAoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMubWFwKHBhcnNlVmFsdWUpLCBwYXJzZVZhbHVlKGJhc2UgfHwgMTApLCBpc05lZ2F0aXZlKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIEludGVnZXI7XHJcbn0pKCk7XHJcblxyXG4vLyBOb2RlLmpzIGNoZWNrXHJcbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZS5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydHNcIikpIHtcclxuICAgIG1vZHVsZS5leHBvcnRzID0gYmlnSW50O1xyXG59XHJcblxyXG4vL2FtZCBjaGVja1xyXG5pZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZSggZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBiaWdJbnQ7XHJcbiAgICB9KTtcclxufVxyXG4iLCJpbXBvcnQgYmlnSW50IGZyb20gXCJiaWctaW50ZWdlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVN0cmluZyhzLCByYWRpeCkge1xuICAgIGlmICh0eXBlb2YgcyA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gYmlnSW50KHMuc2xpY2UoMiksIDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBiaWdJbnQocyxyYWRpeCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYmlnSW50KHMsIHJhZGl4KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBlID0gZnJvbVN0cmluZztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21BcnJheShhLCByYWRpeCkge1xuICAgIHJldHVybiBiaWdJbnQuZnJvbUFycmF5KGEsIHJhZGl4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdExlbmd0aChhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5iaXRMZW5ndGgoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmVnYXRpdmUoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuaXNOZWdhdGl2ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNaZXJvKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmlzWmVybygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRMZWZ0KGEsIG4pIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnNoaWZ0TGVmdChuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWZ0UmlnaHQoYSwgbikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuc2hpZnRSaWdodChuKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmV4cG9ydCBjb25zdCBzaHIgPSBzaGlmdFJpZ2h0O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPZGQoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuaXNPZGQoKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IGJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRS5ndChiaWdJbnQuemVybykpIHtcbiAgICAgICAgaWYgKEUuaXNPZGQoKSkge1xuICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBFLm1vZCg0KS50b0pTTnVtYmVyKCk7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUubWludXMoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFLnNoaWZ0UmlnaHQoMSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IGJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRS5ndChiaWdJbnQuemVybykpIHtcbiAgICAgICAgaWYgKEUuaXNPZGQoKSkge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFLnNoaWZ0UmlnaHQoMSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcihzKSB7XG4gICAgaWYgKCFzLmx0KGJpZ0ludChcIjkwMDcxOTkyNTQ3NDA5OTJcIiwgMTApKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIHMudG9KU051bWJlcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheShzLCByYWRpeCkge1xuICAgIHJldHVybiBiaWdJbnQocykudG9BcnJheShyYWRpeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuYWRkKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkubWludXMoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZyhhKSB7XG4gICAgcmV0dXJuIGJpZ0ludC56ZXJvLm1pbnVzKGJpZ0ludChhKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtdWwoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkudGltZXMoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyZShhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5zcXVhcmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5wb3coYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5wb3coYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFicyhhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5hYnMoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdihhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5kaXZpZGUoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5tb2QoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmVxKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXEoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkubmVxKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsdChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5sdChiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3QoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuZ3QoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlcShhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5sZXEoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlcShhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5nZXEoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhbmQoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuYW5kKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib3IoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkub3IoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ4b3IoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkueG9yKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gKCFiaWdJbnQoYSkuaXNaZXJvKCkpICYmICghYmlnSW50KGIpLmlzWmVybygpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvcihhLCBiKSB7XG4gICAgcmV0dXJuICghYmlnSW50KGEpLmlzWmVybygpKSB8fCAoIWJpZ0ludChiKS5pc1plcm8oKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsbm90KGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmlzWmVybygpO1xufVxuXG5cbiIsIlxuaW1wb3J0ICogYXMgU2NhbGFyX25hdGl2ZSBmcm9tIFwiLi9zY2FsYXJfbmF0aXZlLmpzXCI7XG5pbXBvcnQgKiBhcyBTY2FsYXJfYmlnaW50IGZyb20gXCIuL3NjYWxhcl9iaWdpbnQuanNcIjtcblxuY29uc3Qgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5cbmxldCBTY2FsYXIgPSB7fTtcbmlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgIE9iamVjdC5hc3NpZ24oU2NhbGFyLCBTY2FsYXJfbmF0aXZlKTtcbn0gZWxzZSB7XG4gICAgT2JqZWN0LmFzc2lnbihTY2FsYXIsIFNjYWxhcl9iaWdpbnQpO1xufVxuXG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5TY2FsYXIudG9ScHJMRSA9IGZ1bmN0aW9uIHJwckJFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgbywgbjgvNCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdltpXSA9IHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNik7XG4gICAgZm9yIChsZXQgaT1sOyBpPHYubGVuZ3RoOyBpKyspIHZbaV0gPSAwO1xuICAgIGZvciAobGV0IGk9di5sZW5ndGgqNDsgaTxuODsgaSsrKSBidWZmW2ldID0gU2NhbGFyLnRvTnVtYmVyKFNjYWxhci5iYW5kKFNjYWxhci5zaGlmdFJpZ2h0KGUsIGkqOCksIDB4RkYpKTtcbn07XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5TY2FsYXIudG9ScHJCRSA9IGZ1bmN0aW9uIHJwckxFTShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIG8sIG44KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2LnNldFVpbnQzMihuOC1pKjQgLTQsIHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNiksIGZhbHNlKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNC1sOyBpKyspIHZbaV0gPSAwO1xufTtcblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5TY2FsYXIuZnJvbVJwckxFID0gZnVuY3Rpb24gcnByTEVNKGJ1ZmYsIG8sIG44KSB7XG4gICAgbjggPSBuOCB8fCBidWZmLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgbywgbjgvNCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICB2LmZvckVhY2goIChjaCxpKSA9PiBhW2EubGVuZ3RoLWktMV0gPSBjaC50b1N0cmluZygxNikucGFkU3RhcnQoOCxcIjBcIikgKTtcbiAgICByZXR1cm4gU2NhbGFyLmZyb21TdHJpbmcoYS5qb2luKFwiXCIpLCAxNik7XG59O1xuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cblNjYWxhci5mcm9tUnByQkUgPSBmdW5jdGlvbiBycHJMRU0oYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBjb25zdCB2ID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBvLCBuOCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNDsgaSsrKSB7XG4gICAgICAgIGFbaV0gPSB2LmdldFVpbnQzMihpKjQsIGZhbHNlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgXCIwXCIpO1xuICAgIH1cbiAgICByZXR1cm4gU2NhbGFyLmZyb21TdHJpbmcoYS5qb2luKFwiXCIpLCAxNik7XG59O1xuXG5TY2FsYXIudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgIHJldHVybiBhLnRvU3RyaW5nKHJhZGl4KTtcbn07XG5cblNjYWxhci50b0xFQnVmZiA9IGZ1bmN0aW9uIHRvTEVCdWZmKGEpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChhKSAtIDEpIC8gOCkgKzEpO1xuICAgIFNjYWxhci50b1JwckxFKGJ1ZmYsIDAsIGEsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgcmV0dXJuIGJ1ZmY7XG59O1xuXG5cblNjYWxhci56ZXJvID0gU2NhbGFyLmUoMCk7XG5TY2FsYXIub25lID0gU2NhbGFyLmUoMSk7XG5cbmV4cG9ydCBsZXQge1xuICAgIHRvUnByTEUsXG4gICAgdG9ScHJCRSxcbiAgICBmcm9tUnByTEUsXG4gICAgZnJvbVJwckJFLFxuICAgIHRvU3RyaW5nLFxuICAgIHRvTEVCdWZmLFxuICAgIHplcm8sXG4gICAgb25lLFxuICAgIGZyb21TdHJpbmcsXG4gICAgZSxcbiAgICBmcm9tQXJyYXksXG4gICAgYml0TGVuZ3RoLFxuICAgIGlzTmVnYXRpdmUsXG4gICAgaXNaZXJvLFxuICAgIHNoaWZ0TGVmdCxcbiAgICBzaGlmdFJpZ2h0LFxuICAgIHNobCxcbiAgICBzaHIsXG4gICAgaXNPZGQsXG4gICAgbmFmLFxuICAgIGJpdHMsXG4gICAgdG9OdW1iZXIsXG4gICAgdG9BcnJheSxcbiAgICBhZGQsXG4gICAgc3ViLFxuICAgIG5lZyxcbiAgICBtdWwsXG4gICAgc3F1YXJlLFxuICAgIHBvdyxcbiAgICBleHAsXG4gICAgYWJzLFxuICAgIGRpdixcbiAgICBtb2QsXG4gICAgZXEsXG4gICAgbmVxLFxuICAgIGx0LFxuICAgIGd0LFxuICAgIGxlcSxcbiAgICBnZXEsXG4gICAgYmFuZCxcbiAgICBib3IsXG4gICAgYnhvcixcbiAgICBsYW5kLFxuICAgIGxvcixcbiAgICBsbm90LFxufSA9IFNjYWxhcjtcblxuXG5cblxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuICAgIFRoaXMgbGlicmFyeSBkb2VzIG9wZXJhdGlvbnMgb24gcG9seW5vbWlhbHMgd2l0aCBjb2VmZmljaWVudHMgaW4gYSBmaWVsZCBGLlxuXG4gICAgQSBwb2x5bm9taWFsIFAoeCkgPSBwMCArIHAxICogeCArIHAyICogeF4yICsgLi4uICsgcG4gKiB4Xm4gIGlzIHJlcHJlc2VudGVkXG4gICAgYnkgdGhlIGFycmF5IFsgcDAsIHAxLCBwMiwgLi4uICwgcG4gXS5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2xGaWVsZCB7XG4gICAgY29uc3RydWN0b3IgKEYpIHtcbiAgICAgICAgdGhpcy5GID0gRjtcblxuICAgICAgICBsZXQgcmVtID0gRi5zcXJ0X3Q7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3M7XG5cbiAgICAgICAgY29uc3QgZml2ZSA9IHRoaXMuRi5hZGQodGhpcy5GLmFkZCh0aGlzLkYudHdvLCB0aGlzLkYudHdvKSwgdGhpcy5GLm9uZSk7XG5cbiAgICAgICAgdGhpcy53ID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud2kgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53W3NdID0gdGhpcy5GLnBvdyhmaXZlLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuLyogICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBuID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290cy5wdXNoKHJvb3RzaSk7XG4gICAgICAgIH1cbiAgICAqL1xuICAgICAgICB0aGlzLl9zZXRSb290cygxNSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucm9vdHNbaV0gPSByb290c2k7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5zdWIoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKHAsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYuemVybykpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYub25lKSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubXVsKHBbaV0sIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYiwgYVswXSk7XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYSwgYlswXSk7XG5cbiAgICAgICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIFtiLCBhXSA9IFthLCBiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoYi5sZW5ndGggPD0gMikgfHwgKGIubGVuZ3RoIDwgbG9nMihhLmxlbmd0aCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWxOb3JtYWwoYSxiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bEZGVChhLGIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsTm9ybWFsKGEsIGIpIHtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5hZGQocmVzLCB0aGlzLnNjYWxlWCh0aGlzLm11bFNjYWxhcihhLCBiW2ldKSwgaSkgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIG11bEZGVChhLGIpIHtcbiAgICAgICAgY29uc3QgbG9uZ2VzdE4gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCBiaXRzUmVzdWx0ID0gbG9nMihsb25nZXN0Ti0xKSsyO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzUmVzdWx0KTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzUmVzdWx0O1xuICAgICAgICBjb25zdCBlYSA9IHRoaXMuZXh0ZW5kKGEsbSk7XG4gICAgICAgIGNvbnN0IGViID0gdGhpcy5leHRlbmQoYixtKTtcblxuICAgICAgICBjb25zdCB0YSA9IF9fZmZ0KHRoaXMsIGVhLCBiaXRzUmVzdWx0LCAwLCAxLCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IHRiID0gX19mZnQodGhpcywgZWIsIGJpdHNSZXN1bHQsIDAsIDEsIGZhbHNlKTtcblxuICAgICAgICBjb25zdCB0cmVzID0gbmV3IEFycmF5KG0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHRyZXNbaV0gPSB0aGlzLkYubXVsKHRhW2ldLCB0YltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCh0aGlzLCB0cmVzLCBiaXRzUmVzdWx0LCAwLCAxLCB0cnVlKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlc24pO1xuICAgIH1cblxuXG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwoYSxhKTtcbiAgICB9XG5cbiAgICBzY2FsZVgocCwgbikge1xuICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSBpZiAobj4wKSB7XG4gICAgICAgICAgICBjb25zdCB6ID0gbmV3IEFycmF5KG4pLmZpbGwodGhpcy5GLnplcm8pO1xuICAgICAgICAgICAgcmV0dXJuIHouY29uY2F0KHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKC1uID49IHAubGVuZ3RoKSByZXR1cm4gW107XG4gICAgICAgICAgICByZXR1cm4gcC5zbGljZSgtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBldmFsMihwLCB4KSB7XG4gICAgICAgIGxldCB2ID0gdGhpcy5GLnplcm87XG4gICAgICAgIGxldCBpeCA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2ID0gdGhpcy5GLmFkZCh2LCB0aGlzLkYubXVsKHBbaV0sIGl4KSk7XG4gICAgICAgICAgICBpeCA9IHRoaXMuRi5tdWwoaXgsIHgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIGV2YWwocCx4KSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fbmV4dDJQb3dlcihwLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG5cbiAgICAgICAgcmV0dXJuIF9ldmFsKGVwLCB4LCAwLCAxLCBtKTtcblxuICAgICAgICBmdW5jdGlvbiBfZXZhbChwLCB4LCBvZmZzZXQsIHN0ZXAsIG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0xKSByZXR1cm4gcFtvZmZzZXRdO1xuICAgICAgICAgICAgY29uc3QgbmV3WCA9IEYuc3F1YXJlKHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzPSBGLmFkZChcbiAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQsIHN0ZXAgPDwgMSwgbiA+PiAxKSxcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0K3N0ZXAgLCBzdGVwIDw8IDEsIG4gPj4gMSkpKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWdyYW5nZShwb2ludHMpIHtcbiAgICAgICAgbGV0IHJvb3RzID0gW3RoaXMuRi5vbmVdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb290cyA9IHRoaXMubXVsKHJvb3RzLCBbdGhpcy5GLm5lZyhwb2ludHNbaV1bMF0pLCB0aGlzLkYub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3VtID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtcG9sID0gdGhpcy5ydWZmaW5pKHJvb3RzLCBwb2ludHNbaV1bMF0pO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID1cbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuaW52KHRoaXMuZXZhbChtcG9sLCBwb2ludHNbaV1bMF0pKSxcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgIG1wb2wgPSB0aGlzLm11bFNjYWxhcihtcG9sLCBmYWN0b3IpO1xuICAgICAgICAgICAgc3VtID0gdGhpcy5hZGQoc3VtLCBtcG9sKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIH1cblxuXG4gICAgZmZ0KHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCh0aGlzLCBlcCwgYml0cywgMCwgMSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZmZ0MihwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQyKHRoaXMsIGVwLCBiaXRzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGlmZnQocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdCh0aGlzLCBlcCwgYml0cywgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuXG4gICAgfVxuXG5cbiAgICBpZmZ0MihwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0Mih0aGlzLCBlcCwgYml0cywgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuXG4gICAgfVxuXG4gICAgX2ZmdChwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgICAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAobj09MSkge1xuICAgICAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9mZnQocGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgICAgIGNvbnN0IHAyID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICAgICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgICAgIGxldCBtPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gdGhpcy5GLmFkZChwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgb3V0W2krbmRpdjJdID0gdGhpcy5GLnN1YihwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgbSA9IHRoaXMuRi5tdWwobSwgdGhpcy53W2JpdHNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZXh0ZW5kKHAsIGUpIHtcbiAgICAgICAgaWYgKGUgPT0gcC5sZW5ndGgpIHJldHVybiBwO1xuICAgICAgICBjb25zdCB6ID0gbmV3IEFycmF5KGUtcC5sZW5ndGgpLmZpbGwodGhpcy5GLnplcm8pO1xuXG4gICAgICAgIHJldHVybiBwLmNvbmNhdCh6KTtcbiAgICB9XG5cbiAgICByZWR1Y2UocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPT0gMCkgcmV0dXJuIHA7XG4gICAgICAgIGlmICghIHRoaXMuRi5lcShwW3AubGVuZ3RoLTFdLCB0aGlzLkYuemVybykgKSByZXR1cm4gcDtcbiAgICAgICAgbGV0IGk9cC5sZW5ndGgtMTtcbiAgICAgICAgd2hpbGUoIGk+MCAmJiB0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pICkgaS0tO1xuICAgICAgICByZXR1cm4gcC5zbGljZSgwLCBpKzEpO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcGEgPSB0aGlzLnJlZHVjZShhKTtcbiAgICAgICAgY29uc3QgcGIgPSB0aGlzLnJlZHVjZShiKTtcblxuICAgICAgICBpZiAocGEubGVuZ3RoICE9IHBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBhW2ldLCBwYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJ1ZmZpbmkocCwgcikge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkocC5sZW5ndGgtMSk7XG4gICAgICAgIHJlc1tyZXMubGVuZ3RoLTFdID0gcFtwLmxlbmd0aC0xXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJlcy5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKHRoaXMuRi5tdWwocmVzW2krMV0sIHIpLCBwW2krMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgX25leHQyUG93ZXIodikge1xuICAgICAgICB2LS07XG4gICAgICAgIHYgfD0gdiA+PiAxO1xuICAgICAgICB2IHw9IHYgPj4gMjtcbiAgICAgICAgdiB8PSB2ID4+IDQ7XG4gICAgICAgIHYgfD0gdiA+PiA4O1xuICAgICAgICB2IHw9IHYgPj4gMTY7XG4gICAgICAgIHYrKztcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcocCkge1xuICAgICAgICBjb25zdCBhcCA9IHRoaXMubm9ybWFsaXplKHApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9YXAubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIFMgKz0gXCIgKyBcIjtcbiAgICAgICAgICAgICAgICBTID0gUyArIHBbaV0udG9TdHJpbmcoMTApO1xuICAgICAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcInhcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGk+MSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcIl5cIiAraTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUztcbiAgICB9XG5cbiAgICBub3JtYWxpemUocCkge1xuICAgICAgICBjb25zdCByZXMgID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5ub3JtYWxpemUocFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIF9yZWNpcHJvY2FsKHAsIGJpdHMpIHtcbiAgICAgICAgY29uc3QgayA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKGs9PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHRoaXMuRi5pbnYocFswXSkgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBucCA9IHRoaXMuc2NhbGVYKHAsIC1rLzIpO1xuICAgICAgICBjb25zdCBxID0gdGhpcy5fcmVjaXByb2NhbChucCwgYml0cy0xKTtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuc2NhbGVYKHRoaXMuZG91YmxlKHEpLCAzKmsvMi0yKTtcbiAgICAgICAgY29uc3QgYiA9IHRoaXMubXVsKCB0aGlzLnNxdWFyZShxKSwgcCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVYKHRoaXMuc3ViKGEsYiksICAgLShrLTIpKTtcbiAgICB9XG5cbiAgICAvLyBkaXZpZGVzIHhebSAvIHZcbiAgICBfZGl2MihtLCB2KSB7XG4gICAgICAgIGNvbnN0IGtiaXRzID0gbG9nMih2Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCBzY2FsZVYgPSBrIC0gdi5sZW5ndGg7XG5cbiAgICAgICAgLy8gcmVjID0geF4oayAtIDIpIC8gdiogeF5zY2FsZVYgPT5cbiAgICAgICAgLy8gcmVjID0geF4oay0yLXNjYWxlVikvIHZcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmVzID0geF5tL3YgPSB4XihtICsgKDIqay0yIC0gc2NhbGVWKSAtICgyKmstMiAtIHNjYWxlVikpIC92ID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAoMiprLTIgLSBzY2FsZVYpKSA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gMiprICsgMiArIHNjYWxlVilcblxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLl9yZWNpcHJvY2FsKHRoaXMuc2NhbGVYKHYsIHNjYWxlViksIGtiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5zY2FsZVgocmVjLCBtIC0gMiprICsgMiArIHNjYWxlVik7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBkaXYoX3UsIF92KSB7XG4gICAgICAgIGlmIChfdS5sZW5ndGggPCBfdi5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyKF92Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCB1ID0gdGhpcy5zY2FsZVgoX3UsIGstX3YubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuc2NhbGVYKF92LCBrLV92Lmxlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgbiA9IHYubGVuZ3RoLTE7XG4gICAgICAgIGxldCBtID0gdS5sZW5ndGgtMTtcblxuICAgICAgICBjb25zdCBzID0gdGhpcy5fcmVjaXByb2NhbCh2LCBrYml0cyk7XG4gICAgICAgIGxldCB0O1xuICAgICAgICBpZiAobT4yKm4pIHtcbiAgICAgICAgICAgIHQgPSB0aGlzLnN1Yih0aGlzLnNjYWxlWChbdGhpcy5GLm9uZV0sIDIqbiksIHRoaXMubXVsKHMsIHYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBxID0gW107XG4gICAgICAgIGxldCByZW0gPSB1O1xuICAgICAgICBsZXQgdXMsIHV0O1xuICAgICAgICBsZXQgZmluaXNoID0gZmFsc2U7XG5cbiAgICAgICAgd2hpbGUgKCFmaW5pc2gpIHtcbiAgICAgICAgICAgIHVzID0gdGhpcy5tdWwocmVtLCBzKTtcbiAgICAgICAgICAgIHEgPSB0aGlzLmFkZChxLCB0aGlzLnNjYWxlWCh1cywgLTIqbikpO1xuXG4gICAgICAgICAgICBpZiAoIG0gPiAyKm4gKSB7XG4gICAgICAgICAgICAgICAgdXQgPSB0aGlzLm11bChyZW0sIHQpO1xuICAgICAgICAgICAgICAgIHJlbSA9IHRoaXMuc2NhbGVYKHV0LCAtMipuKTtcbiAgICAgICAgICAgICAgICBtID0gcmVtLmxlbmd0aC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaW5pc2ggPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHE7XG4gICAgfVxuXG5cbiAgICAvLyByZXR1cm5zIHRoZSBpdGggbnRoLXJvb3Qgb2Ygb25lXG4gICAgb25lUm9vdChuLCBpKSB7XG4gICAgICAgIGxldCBuYml0cyA9IGxvZzIobi0xKSsxO1xuICAgICAgICBsZXQgcmVzID0gdGhpcy5GLm9uZTtcbiAgICAgICAgbGV0IHIgPSBpO1xuXG4gICAgICAgIGlmKGk+PW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdpdmVuICdpJyBzaG91bGQgYmUgbG93ZXIgdGhhbiAnbidcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoMTw8bmJpdHMgIT09IG4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgZXJybHI6ICR7bn0gc2hvdWxkIGVxdWFsICR7MTw8bmJpdHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBpZiAociAmIDEgPT0gMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMuRi5tdWwocmVzLCB0aGlzLndbbmJpdHNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSByID4+IDE7XG4gICAgICAgICAgICBuYml0cyAtLTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGNvbXB1dGVWYW5pc2hpbmdQb2xpbm9taWFsKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5zdWIodGhpcy5GLnBvdyh0LCBtKSwgdGhpcy5GLm9uZSk7XG4gICAgfVxuXG4gICAgZXZhbHVhdGVMYWdyYW5nZVBvbHlub21pYWxzKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbT0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCB0bSA9IHRoaXMuRi5wb3codCwgbSk7XG4gICAgICAgIGNvbnN0IHU9IG5ldyBBcnJheShtKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG9tZWdhID0gdGhpcy53W2JpdHNdO1xuXG4gICAgICAgIGlmICh0aGlzLkYuZXEodG0sIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLkYuZXEodGhpcy5yb290c1tiaXRzXVswXSx0KSkgeyAvLyBpLmUuLCB0IGVxdWFscyBvbWVnYV5pXG4gICAgICAgICAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6ID0gdGhpcy5GLnN1Yih0bSwgdGhpcy5GLm9uZSk7XG4gICAgICAgIC8vICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5wb3codGhpcy5GLnR3b2ludiwgbSkpO1xuICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5pbnYodGhpcy5GLmUobSkpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYubXVsKGwsIHRoaXMuRi5pbnYodGhpcy5GLnN1Yih0LHRoaXMucm9vdHNbYml0c11baV0pKSk7XG4gICAgICAgICAgICBsID0gdGhpcy5GLm11bChsLCBvbWVnYSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdTtcbiAgICB9XG5cbiAgICBsb2cyKFYpIHtcbiAgICAgICAgcmV0dXJuIGxvZzIoVik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2cyKCBWIClcbntcbiAgICByZXR1cm4oICggKCBWICYgMHhGRkZGMDAwMCApICE9PSAwID8gKCBWICY9IDB4RkZGRjAwMDAsIDE2ICkgOiAwICkgfCAoICggViAmIDB4RkYwMEZGMDAgKSAhPT0gMCA/ICggViAmPSAweEZGMDBGRjAwLCA4ICkgOiAwICkgfCAoICggViAmIDB4RjBGMEYwRjAgKSAhPT0gMCA/ICggViAmPSAweEYwRjBGMEYwLCA0ICkgOiAwICkgfCAoICggViAmIDB4Q0NDQ0NDQ0MgKSAhPT0gMCA/ICggViAmPSAweENDQ0NDQ0NDLCAyICkgOiAwICkgfCAoICggViAmIDB4QUFBQUFBQUEgKSAhPT0gMCApICk7XG59XG5cblxuZnVuY3Rpb24gX19mZnQoUEYsIHBhbGwsIGJpdHMsIG9mZnNldCwgc3RlcCkge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsW29mZnNldF0gXTtcbiAgICB9IGVsc2UgaWYgKG49PTIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFBGLkYuYWRkKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSksXG4gICAgICAgICAgICBQRi5GLnN1YihwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0KFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0KFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgb3V0W2ldID0gUEYuRi5hZGQocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5GLnN1YihwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdDIoUEYsIHBhbGwsIGJpdHMpIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFswXSBdO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKDAsIG5kaXYyKSwgYml0cy0xKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0MihQRiwgcGFsbC5zbGljZShuZGl2MiksIGJpdHMtMSk7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZVtpXSA9IF9yZXZTbG93KGksIDgpO1xufVxuXG5mdW5jdGlvbiBfcmV2U2xvdyhpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gcmV2KGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIF9yZXZUYWJsZVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gMTYpICYgMHhGRl0gPDwgOCkgfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDgpICYgMHhGRl0gPDwgMTYpIHxcbiAgICAgICAgKF9yZXZUYWJsZVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59XG5cbmZ1bmN0aW9uIF9fYml0UmV2ZXJzZShwLCBiaXRzKSB7XG4gICAgZm9yIChsZXQgaz0wOyBrPHAubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgY29uc3QgciA9IHJldihrLCBiaXRzKTtcbiAgICAgICAgaWYgKHI+aykge1xuICAgICAgICAgICAgY29uc3QgdG1wPSBwW2tdO1xuICAgICAgICAgICAgcFtrXSA9IHBbcl07XG4gICAgICAgICAgICBwW3JdID0gdG1wO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWxTY2FsYXIoRiwgYmFzZSwgZSkge1xuICAgIGxldCByZXM7XG5cbiAgICBpZiAoU2NhbGFyLmlzWmVybyhlKSkgcmV0dXJuIEYuemVybztcblxuICAgIGNvbnN0IG4gPSBTY2FsYXIubmFmKGUpO1xuXG4gICAgaWYgKG5bbi5sZW5ndGgtMV0gPT0gMSkge1xuICAgICAgICByZXMgPSBiYXNlO1xuICAgIH0gZWxzZSBpZiAobltuLmxlbmd0aC0xXSA9PSAtMSkge1xuICAgICAgICByZXMgPSBGLm5lZyhiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZsYXVkIE5BRlwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuZG91YmxlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0gPT0gMSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBiYXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChuW2ldID09IC0xKSB7XG4gICAgICAgICAgICByZXMgPSBGLnN1YihyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vKlxuZXhwb3J0cy5tdWxTY2FsYXIgPSAoRiwgYmFzZSwgZSkgPT57XG4gICAgbGV0IHJlcyA9IEYuemVybztcbiAgICBsZXQgcmVtID0gYmlnSW50KGUpO1xuICAgIGxldCBleHAgPSBiYXNlO1xuXG4gICAgd2hpbGUgKCEgcmVtLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAocmVtLmFuZChiaWdJbnQub25lKS5lcShiaWdJbnQub25lKSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBleHApO1xuICAgICAgICB9XG4gICAgICAgIGV4cCA9IEYuZG91YmxlKGV4cCk7XG4gICAgICAgIHJlbSA9IHJlbS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59O1xuKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gZXhwKEYsIGJhc2UsIGUpIHtcblxuICAgIGlmIChTY2FsYXIuaXNaZXJvKGUpKSByZXR1cm4gRi5vbmU7XG5cbiAgICBjb25zdCBuID0gU2NhbGFyLmJpdHMoZSk7XG5cbiAgICBpZiAobi5sZWd0aD09MCkgcmV0dXJuIEYub25lO1xuXG4gICAgbGV0IHJlcyA9IGJhc2U7XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuc3F1YXJlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0pIHtcbiAgICAgICAgICAgIHJlcyA9IEYubXVsKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbiIsImltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcbi8vIENoZWNrIGhlcmU6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTIvNjg1LnBkZlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZFNxcnQgKEYpIHtcbiAgICBpZiAoKEYubSAlIDIpID09IDEpIHtcbiAgICAgICAgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgNCksIDEgKSkge1xuICAgICAgICAgICAgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgOCksIDEgKSkge1xuICAgICAgICAgICAgICAgIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDE2KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZzdfbXVsbGVyKEYpO1xuICAgICAgICAgICAgICAgICAgICBhbGc1X3RvbmVsbGlTaGFua3MoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDE2KSwgOSApKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZzRfa29uZyhGKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWVsZCB3aXRob3Qgc3FydFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgOCksIDUgKSkge1xuICAgICAgICAgICAgICAgIGFsZzNfYXRraW4oRik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgNCksIDMgKSkge1xuICAgICAgICAgICAgYWxnMl9zaGFua3MoRik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbTJtb2Q0ID0gU2NhbGFyLm1vZChTY2FsYXIucG93KEYucCwgRi5tLzIpLCA0KTtcbiAgICAgICAgaWYgKHBtMm1vZDQgPT0gMSkge1xuICAgICAgICAgICAgYWxnMTBfYWRqKEYpO1xuICAgICAgICB9IGVsc2UgaWYgKHBtMm1vZDQgPT0gMykge1xuICAgICAgICAgICAgYWxnOV9hZGooRik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbGc4X2NvbXBsZXgoRik7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuXG5mdW5jdGlvbiBhbGc1X3RvbmVsbGlTaGFua3MoRikge1xuICAgIEYuc3FydF9xID0gU2NhbGFyLnBvdyhGLnAsIEYubSk7XG5cbiAgICBGLnNxcnRfcyA9IDA7XG4gICAgRi5zcXJ0X3QgPSBTY2FsYXIuc3ViKEYuc3FydF9xLCAxKTtcblxuICAgIHdoaWxlICghU2NhbGFyLmlzT2RkKEYuc3FydF90KSkge1xuICAgICAgICBGLnNxcnRfcyA9IEYuc3FydF9zICsgMTtcbiAgICAgICAgRi5zcXJ0X3QgPSBTY2FsYXIuZGl2KEYuc3FydF90LCAyKTtcbiAgICB9XG5cbiAgICBsZXQgYzAgPSBGLm9uZTtcblxuICAgIHdoaWxlIChGLmVxKGMwLCBGLm9uZSkpIHtcbiAgICAgICAgY29uc3QgYyA9IEYucmFuZG9tKCk7XG4gICAgICAgIEYuc3FydF96ID0gRi5wb3coYywgRi5zcXJ0X3QpO1xuICAgICAgICBjMCA9IEYucG93KEYuc3FydF96LCAxIDw8IChGLnNxcnRfcy0xKSApO1xuICAgIH1cblxuICAgIEYuc3FydF90bTFkMiA9IFNjYWxhci5kaXYoU2NhbGFyLnN1YihGLnNxcnRfdCwgMSksMik7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGNvbnN0IEY9dGhpcztcbiAgICAgICAgaWYgKEYuaXNaZXJvKGEpKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBsZXQgdyA9IEYucG93KGEsIEYuc3FydF90bTFkMik7XG4gICAgICAgIGNvbnN0IGEwID0gRi5wb3coIEYubXVsKEYuc3F1YXJlKHcpLCBhKSwgMSA8PCAoRi5zcXJ0X3MtMSkgKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IHYgPSBGLnNxcnRfcztcbiAgICAgICAgbGV0IHggPSBGLm11bChhLCB3KTtcbiAgICAgICAgbGV0IGIgPSBGLm11bCh4LCB3KTtcbiAgICAgICAgbGV0IHogPSBGLnNxcnRfejtcbiAgICAgICAgd2hpbGUgKCFGLmVxKGIsIEYub25lKSkge1xuICAgICAgICAgICAgbGV0IGIyayA9IEYuc3F1YXJlKGIpO1xuICAgICAgICAgICAgbGV0IGs9MTtcbiAgICAgICAgICAgIHdoaWxlICghRi5lcShiMmssIEYub25lKSkge1xuICAgICAgICAgICAgICAgIGIyayA9IEYuc3F1YXJlKGIyayk7XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3ID0gejtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx2LWstMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdyA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeiA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgYiA9IEYubXVsKGIsIHopO1xuICAgICAgICAgICAgeCA9IEYubXVsKHgsIHcpO1xuICAgICAgICAgICAgdiA9IGs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnNF9rb25nKEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgNCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnM19hdGtpbihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDMgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzJfc2hhbmtzKEYpIHtcblxuICAgIEYuc3FydF9xID0gU2NhbGFyLnBvdyhGLnAsIEYubSk7XG4gICAgRi5zcXJ0X2UxID0gU2NhbGFyLmRpdiggU2NhbGFyLnN1YihGLnNxcnRfcSwgMykgLCA0KTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIC8vIFRlc3QgdGhhdCBoYXZlIHNvbHV0aW9uXG4gICAgICAgIGNvbnN0IGExID0gdGhpcy5wb3coYSwgdGhpcy5zcXJ0X2UxKTtcblxuICAgICAgICBjb25zdCBhMCA9IHRoaXMubXVsKHRoaXMuc3F1YXJlKGExKSwgYSk7XG5cbiAgICAgICAgaWYgKCB0aGlzLmVxKGEwLCB0aGlzLm5lZ29uZSkgKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCB4ID0gdGhpcy5tdWwoYTEsIGEpO1xuXG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzEwX2FkaihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDEwIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGc5X2FkaihGKSB7XG4gICAgRi5zcXJ0X3EgPSBTY2FsYXIucG93KEYucCwgRi5tLzIpO1xuICAgIEYuc3FydF9lMzQgPSBTY2FsYXIuZGl2KCBTY2FsYXIuc3ViKEYuc3FydF9xLCAzKSAsIDQpO1xuICAgIEYuc3FydF9lMTIgPSBTY2FsYXIuZGl2KCBTY2FsYXIuc3ViKEYuc3FydF9xLCAxKSAsIDIpO1xuXG4gICAgRi5mcm9iZW5pdXMgPSBmdW5jdGlvbihuLCB4KSB7XG4gICAgICAgIGlmICgobiUyKSA9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gRi5jb25qdWdhdGUoeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzO1xuICAgICAgICBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICBjb25zdCBhbGZhID0gRi5tdWwoRi5zcXVhcmUoYTEpLCBhKTtcbiAgICAgICAgY29uc3QgYTAgPSBGLm11bChGLmZyb2Jlbml1cygxLCBhbGZhKSwgYWxmYSk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCB4MCA9IEYubXVsKGExLCBhKTtcbiAgICAgICAgbGV0IHg7XG4gICAgICAgIGlmIChGLmVxKGFsZmEsIEYubmVnb25lKSkge1xuICAgICAgICAgICAgeCA9IEYubXVsKHgwLCBbRi5GLnplcm8sIEYuRi5vbmVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBGLnBvdyhGLmFkZChGLm9uZSwgYWxmYSksIEYuc3FydF9lMTIpO1xuICAgICAgICAgICAgeCA9IEYubXVsKGIsIHgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5cbmZ1bmN0aW9uIGFsZzhfY29tcGxleChGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDggbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG4iLCJcblxuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5cbmZ1bmN0aW9uIHF1YXJ0ZXJSb3VuZChzdCwgYSwgYiwgYywgZCkge1xuXG4gICAgc3RbYV0gPSAoc3RbYV0gKyBzdFtiXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoc3RbZF0gXiBzdFthXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoKHN0W2RdIDw8IDE2KSB8ICgoc3RbZF0+Pj4xNikgJiAweEZGRkYpKSA+Pj4gMDtcblxuICAgIHN0W2NdID0gKHN0W2NdICsgc3RbZF0pID4+PiAwO1xuICAgIHN0W2JdID0gKHN0W2JdIF4gc3RbY10pID4+PiAwO1xuICAgIHN0W2JdID0gKChzdFtiXSA8PCAxMikgfCAoKHN0W2JdPj4+MjApICYgMHhGRkYpKSA+Pj4gMDtcblxuICAgIHN0W2FdID0gKHN0W2FdICsgc3RbYl0pID4+PiAwO1xuICAgIHN0W2RdID0gKHN0W2RdIF4gc3RbYV0pID4+PiAwO1xuICAgIHN0W2RdID0gKChzdFtkXSA8PCA4KSB8ICgoc3RbZF0+Pj4yNCkgJiAweEZGKSkgPj4+IDA7XG5cbiAgICBzdFtjXSA9IChzdFtjXSArIHN0W2RdKSA+Pj4gMDtcbiAgICBzdFtiXSA9IChzdFtiXSBeIHN0W2NdKSA+Pj4gMDtcbiAgICBzdFtiXSA9ICgoc3RbYl0gPDwgNykgfCAoKHN0W2JdPj4+MjUpICYgMHg3RikpID4+PiAwO1xufVxuXG5mdW5jdGlvbiBkb3VibGVSb3VuZChzdCkge1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMCwgNCwgOCwxMik7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAxLCA1LCA5LDEzKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDIsIDYsMTAsMTQpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMywgNywxMSwxNSk7XG5cbiAgICBxdWFydGVyUm91bmQoc3QsIDAsIDUsMTAsMTUpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMSwgNiwxMSwxMik7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAyLCA3LCA4LDEzKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDMsIDQsIDksMTQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFDaGEge1xuXG4gICAgY29uc3RydWN0b3Ioc2VlZCkge1xuICAgICAgICBzZWVkID0gc2VlZCB8fCBbMCwwLDAsMCwwLDAsMCwwXTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFtcbiAgICAgICAgICAgIDB4NjE3MDc4NjUsXG4gICAgICAgICAgICAweDMzMjA2NDZFLFxuICAgICAgICAgICAgMHg3OTYyMkQzMixcbiAgICAgICAgICAgIDB4NkIyMDY1NzQsXG4gICAgICAgICAgICBzZWVkWzBdLFxuICAgICAgICAgICAgc2VlZFsxXSxcbiAgICAgICAgICAgIHNlZWRbMl0sXG4gICAgICAgICAgICBzZWVkWzNdLFxuICAgICAgICAgICAgc2VlZFs0XSxcbiAgICAgICAgICAgIHNlZWRbNV0sXG4gICAgICAgICAgICBzZWVkWzZdLFxuICAgICAgICAgICAgc2VlZFs3XSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDBcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pZHggPSAxNjtcbiAgICAgICAgdGhpcy5idWZmID0gbmV3IEFycmF5KDE2KTtcbiAgICB9XG5cbiAgICBuZXh0VTMyKCkge1xuICAgICAgICBpZiAodGhpcy5pZHggPT0gMTYpIHRoaXMudXBkYXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZbdGhpcy5pZHgrK107XG4gICAgfVxuXG4gICAgbmV4dFU2NCgpIHtcbiAgICAgICAgcmV0dXJuIFNjYWxhci5hZGQoU2NhbGFyLm11bCh0aGlzLm5leHRVMzIoKSwgMHgxMDAwMDAwMDApLCB0aGlzLm5leHRVMzIoKSk7XG4gICAgfVxuXG4gICAgbmV4dEJvb2woKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZXh0VTMyKCkgJiAxKSA9PSAxO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgc3RhdGVcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9IHRoaXMuc3RhdGVbaV07XG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIHJvdW5kc1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykgZG91YmxlUm91bmQodGhpcy5idWZmKTtcblxuICAgICAgICAvLyBBZGQgdG8gdGhlIGluaXRpYWxcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9ICh0aGlzLmJ1ZmZbaV0gKyB0aGlzLnN0YXRlW2ldKSA+Pj4gMDtcblxuICAgICAgICB0aGlzLmlkeCA9IDA7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVsxMl0gPSAodGhpcy5zdGF0ZVsxMl0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTJdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxM10gPSAodGhpcy5zdGF0ZVsxM10gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTNdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNF0gPSAodGhpcy5zdGF0ZVsxNF0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTRdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNV0gPSAodGhpcy5zdGF0ZVsxNV0gKyAxKSA+Pj4gMDtcbiAgICB9XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5pbXBvcnQgQ2hhQ2hhIGZyb20gXCIuL2NoYWNoYS5qc1wiO1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21CeXRlcyhuKSB7XG4gICAgbGV0IGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHsgLy8gQnJvd3NlclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5jcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpIHsgLy8gU3VwcG9ydGVkXG4gICAgICAgICAgICB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGZhbGxiYWNrXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSAoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk2KT4+PjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7IC8vIE5vZGVKU1xuICAgICAgICBjcnlwdG8ucmFuZG9tRmlsbFN5bmMoYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21TZWVkKCkge1xuICAgIGNvbnN0IGFyciA9IGdldFJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBhcnJWID0gbmV3IFVpbnQzMkFycmF5KGFyci5idWZmZXIpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWQucHVzaChhcnJWW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZWQ7XG59XG5cbmxldCB0aHJlYWRSbmcgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZWFkUm5nKCkge1xuICAgIGlmICh0aHJlYWRSbmcpIHJldHVybiB0aHJlYWRSbmc7XG4gICAgdGhyZWFkUm5nID0gbmV3IENoYUNoYShnZXRSYW5kb21TZWVkKCkpO1xuICAgIHJldHVybiB0aHJlYWRSbmc7XG59XG4iLCIvKiBnbG9iYWwgQmlnSW50ICovXG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5pbXBvcnQgKiBhcyBmdXRpbHMgZnJvbSBcIi4vZnV0aWxzLmpzXCI7XG5pbXBvcnQgYnVpbGRTcXJ0IGZyb20gXCIuL2ZzcXJ0LmpzXCI7XG5pbXBvcnQge2dldFJhbmRvbUJ5dGVzfSBmcm9tIFwiLi9yYW5kb20uanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWnFGaWVsZCB7XG4gICAgY29uc3RydWN0b3IocCkge1xuICAgICAgICB0aGlzLnR5cGU9XCJGMVwiO1xuICAgICAgICB0aGlzLm9uZSA9IDFuO1xuICAgICAgICB0aGlzLnplcm8gPSAwbjtcbiAgICAgICAgdGhpcy5wID0gQmlnSW50KHApO1xuICAgICAgICB0aGlzLm0gPSAxO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMucC0xbjtcbiAgICAgICAgdGhpcy50d28gPSAybjtcbiAgICAgICAgdGhpcy5oYWxmID0gdGhpcy5wID4+IDFuO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IFNjYWxhci5iaXRMZW5ndGgodGhpcy5wKTtcbiAgICAgICAgdGhpcy5tYXNrID0gKDFuIDw8IEJpZ0ludCh0aGlzLmJpdExlbmd0aCkpIC0gMW47XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuZSgxbiA8PCBCaWdJbnQodGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lID4+IDFuO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xciArIDFuO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCh0aGlzLnQgJiAxbikgPT0gMG4pIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucyArIDE7XG4gICAgICAgICAgICB0aGlzLnQgPSB0aGlzLnQgPj4gMW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5xcl90b190ID0gdGhpcy5wb3codGhpcy5ucXIsIHRoaXMudCk7XG5cbiAgICAgICAgYnVpbGRTcXJ0KHRoaXMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGI9PTE2KSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoXCIweFwiK2EpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbnJlcyA9IC1yZXM7XG4gICAgICAgICAgICBpZiAobnJlcyA+PSB0aGlzLnApIG5yZXMgPSBucmVzICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5yZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKHJlcz49IHRoaXMucCkgPyByZXMldGhpcy5wIDogcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSBhICsgYjtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSA+PSBiKSA/IGEtYiA6IHRoaXMucC1iK2E7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPyB0aGlzLnAtYSA6IGE7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhKmIpJXRoaXMucDtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gKGJhc2UgKiB0aGlzLmUocykpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiAoYSphKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhPT1iO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIT1iO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDwgYmI7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPiBiYjtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPD0gYmI7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID49IGJiO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmICghYikgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEgLyBiO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmICghYSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcblxuICAgICAgICBsZXQgdCA9IDBuO1xuICAgICAgICBsZXQgciA9IHRoaXMucDtcbiAgICAgICAgbGV0IG5ld3QgPSAxbjtcbiAgICAgICAgbGV0IG5ld3IgPSBhICUgdGhpcy5wO1xuICAgICAgICB3aGlsZSAobmV3cikge1xuICAgICAgICAgICAgbGV0IHEgPSByL25ld3I7XG4gICAgICAgICAgICBbdCwgbmV3dF0gPSBbbmV3dCwgdC1xKm5ld3RdO1xuICAgICAgICAgICAgW3IsIG5ld3JdID0gW25ld3IsIHItcSpuZXdyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodDwwbikgdCArPSB0aGlzLnA7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIG1vZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhICUgYjtcbiAgICB9XG5cbiAgICBwb3coYiwgZSkge1xuICAgICAgICByZXR1cm4gZnV0aWxzLmV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBleHAoYiwgZSkge1xuICAgICAgICByZXR1cm4gZnV0aWxzLmV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSAmIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgfCBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSBeIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICBjb25zdCByZXMgPSBhIF4gdGhpcy5tYXNrO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBiKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA+PiBuYjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDBuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hyKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA+PiBiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IG5iKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFuZChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSAmJiBiKSA/IDFuIDogMG47XG4gICAgfVxuXG4gICAgbG9yKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhIHx8IGIpID8gMW4gOiAwbjtcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIChhKSA/IDBuIDogMW47XG4gICAgfVxuXG4gICAgc3FydF9vbGQobikge1xuXG4gICAgICAgIGlmIChuID09IDBuKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIC8vIFRlc3QgdGhhdCBoYXZlIHNvbHV0aW9uXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMucG93KG4sIHRoaXMubmVnb25lID4+IHRoaXMub25lKTtcbiAgICAgICAgaWYgKCByZXMgIT0gMW4gKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBsZXQgbSA9IHRoaXMucztcbiAgICAgICAgbGV0IGMgPSB0aGlzLm5xcl90b190O1xuICAgICAgICBsZXQgdCA9IHRoaXMucG93KG4sIHRoaXMudCk7XG4gICAgICAgIGxldCByID0gdGhpcy5wb3cobiwgdGhpcy5hZGQodGhpcy50LCB0aGlzLm9uZSkgPj4gMW4gKTtcblxuICAgICAgICB3aGlsZSAoIHQgIT0gMW4gKSB7XG4gICAgICAgICAgICBsZXQgc3EgPSB0aGlzLnNxdWFyZSh0KTtcbiAgICAgICAgICAgIGxldCBpID0gMTtcbiAgICAgICAgICAgIHdoaWxlIChzcSAhPSAxbiApIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgc3EgPSB0aGlzLnNxdWFyZShzcSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGIgPSBjIF4gbS1pLTFcbiAgICAgICAgICAgIGxldCBiID0gYztcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajwgbS1pLTE7IGogKyspIGIgPSB0aGlzLnNxdWFyZShiKTtcblxuICAgICAgICAgICAgbSA9IGk7XG4gICAgICAgICAgICBjID0gdGhpcy5zcXVhcmUoYik7XG4gICAgICAgICAgICB0ID0gdGhpcy5tdWwodCwgYyk7XG4gICAgICAgICAgICByID0gdGhpcy5tdWwociwgYik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAociA+ICh0aGlzLnAgPj4gMW4pKSB7XG4gICAgICAgICAgICByID0gdGhpcy5uZWcocik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBub3JtYWxpemUoYSwgYikge1xuICAgICAgICBhID0gQmlnSW50KGEsYik7XG4gICAgICAgIGlmIChhIDwgMCkge1xuICAgICAgICAgICAgbGV0IG5hID0gLWE7XG4gICAgICAgICAgICBpZiAobmEgPj0gdGhpcy5wKSBuYSA9IG5hICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5hO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChhPj0gdGhpcy5wKSA/IGEldGhpcy5wIDogYTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgY29uc3QgbkJ5dGVzID0gKHRoaXMuYml0TGVuZ3RoKjIgLyA4KTtcbiAgICAgICAgbGV0IHJlcyA9MG47XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gKHJlcyA8PCA4bikgKyBCaWdJbnQoZ2V0UmFuZG9tQnl0ZXMoMSlbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgYmFzZSkge1xuICAgICAgICBsZXQgdnM7XG4gICAgICAgIGlmIChhID4gdGhpcy5oYWxmKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLWE7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhID09IDBuO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGxldCB2O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2PTBuO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjY0OyBpKyspIHtcbiAgICAgICAgICAgICAgICB2ICs9IHJuZy5uZXh0VTY0KCkgPDwgQmlnSW50KDY0ICppKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHYgJj0gdGhpcy5tYXNrO1xuICAgICAgICB9IHdoaWxlICh2ID49IHRoaXMucCk7XG4gICAgICAgIHYgPSAodiAqIHRoaXMuUmkpICUgdGhpcy5wOyAgIC8vIENvbnZlcnQgZnJvbSBtb250Z29tZXJ5XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxufVxuXG4iLCJpbXBvcnQgYmlnSW50IGZyb20gXCJiaWctaW50ZWdlclwiO1xuaW1wb3J0IGJ1aWxkU3FydCBmcm9tIFwiLi9mc3FydC5qc1wiO1xuaW1wb3J0IHtnZXRSYW5kb21CeXRlc30gZnJvbSBcIi4vcmFuZG9tLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpxRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHApIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjFcIjtcbiAgICAgICAgdGhpcy5vbmUgPSBiaWdJbnQub25lO1xuICAgICAgICB0aGlzLnplcm8gPSBiaWdJbnQuemVybztcbiAgICAgICAgdGhpcy5wID0gYmlnSW50KHApO1xuICAgICAgICB0aGlzLm0gPSAxO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMucC5taW51cyhiaWdJbnQub25lKTtcbiAgICAgICAgdGhpcy50d28gPSBiaWdJbnQoMik7XG4gICAgICAgIHRoaXMuaGFsZiA9IHRoaXMucC5zaGlmdFJpZ2h0KDEpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICAgICAgdGhpcy5tYXNrID0gYmlnSW50Lm9uZS5zaGlmdExlZnQodGhpcy5iaXRMZW5ndGgpLm1pbnVzKGJpZ0ludC5vbmUpO1xuXG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcigodGhpcy5iaXRMZW5ndGggLSAxKSAvIDY0KSsxO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuICAgICAgICB0aGlzLlIgPSBiaWdJbnQub25lLnNoaWZ0TGVmdCh0aGlzLm42NCo2NCk7XG4gICAgICAgIHRoaXMuUmkgPSB0aGlzLmludih0aGlzLlIpO1xuXG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLm5lZ29uZS5zaGlmdFJpZ2h0KHRoaXMub25lKTtcbiAgICAgICAgdGhpcy5ucXIgPSB0aGlzLnR3bztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyh0aGlzLm5xciwgZSk7XG4gICAgICAgIHdoaWxlICghci5lcXVhbHModGhpcy5uZWdvbmUpKSB7XG4gICAgICAgICAgICB0aGlzLm5xciA9IHRoaXMubnFyLmFkZCh0aGlzLm9uZSk7XG4gICAgICAgICAgICByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zID0gdGhpcy56ZXJvO1xuICAgICAgICB0aGlzLnQgPSB0aGlzLm5lZ29uZTtcblxuICAgICAgICB3aGlsZSAoIXRoaXMudC5pc09kZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMuYWRkKHRoaXMub25lKTtcbiAgICAgICAgICAgIHRoaXMudCA9IHRoaXMudC5zaGlmdFJpZ2h0KHRoaXMub25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubnFyX3RvX3QgPSB0aGlzLnBvdyh0aGlzLm5xciwgdGhpcy50KTtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgZShhLGIpIHtcblxuICAgICAgICBjb25zdCByZXMgPSBiaWdJbnQoYSxiKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocmVzKTtcblxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGxldCByZXMgPSBhLmFkZChiKTtcbiAgICAgICAgaWYgKHJlcy5nZXEodGhpcy5wKSkge1xuICAgICAgICAgICAgcmVzID0gcmVzLm1pbnVzKHRoaXMucCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICBpZiAoYS5nZXEoYikpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1pbnVzKGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucC5taW51cyhiLm1pbnVzKGEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYTtcbiAgICAgICAgcmV0dXJuIHRoaXMucC5taW51cyhhKTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICByZXR1cm4gYS50aW1lcyhiKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gYmFzZS50aW1lcyhiaWdJbnQocykpLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiBhLnNxdWFyZSgpLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEuZXEoYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubmVxKGIpO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSBhLmd0KHRoaXMuaGFsZikgPyBhLm1pbnVzKHRoaXMucCkgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IGIuZ3QodGhpcy5oYWxmKSA/IGIubWludXModGhpcy5wKSA6IGI7XG4gICAgICAgIHJldHVybiBhYS5sdChiYik7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IGEuZ3QodGhpcy5oYWxmKSA/IGEubWludXModGhpcy5wKSA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gYi5ndCh0aGlzLmhhbGYpID8gYi5taW51cyh0aGlzLnApIDogYjtcbiAgICAgICAgcmV0dXJuIGFhLmd0KGJiKTtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IGEuZ3QodGhpcy5oYWxmKSA/IGEubWludXModGhpcy5wKSA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gYi5ndCh0aGlzLmhhbGYpID8gYi5taW51cyh0aGlzLnApIDogYjtcbiAgICAgICAgcmV0dXJuIGFhLmxlcShiYik7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSBhLmd0KHRoaXMuaGFsZikgPyBhLm1pbnVzKHRoaXMucCkgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IGIuZ3QodGhpcy5oYWxmKSA/IGIubWludXModGhpcy5wKSA6IGI7XG4gICAgICAgIHJldHVybiBhYS5nZXEoYmIpO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIGlmIChiLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYS50aW1lcyhiLm1vZEludih0aGlzLnApKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBpZGl2KGEsIGIpIHtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHRocm93IG5ldyBFcnJvcihcIkRpdmlzaW9uIGJ5IHplcm9cIik7XG4gICAgICAgIHJldHVybiBhLmRpdmlkZShiKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBpZiAoYS5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEubW9kSW52KHRoaXMucCk7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubW9kKGIpO1xuICAgIH1cblxuICAgIHBvdyhhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm1vZFBvdyhiLCB0aGlzLnApO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm1vZFBvdyhiLCB0aGlzLnApO1xuICAgIH1cblxuICAgIGJhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5hbmQoYikuYW5kKHRoaXMubWFzaykubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgYm9yKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEub3IoYikuYW5kKHRoaXMubWFzaykubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgYnhvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLnhvcihiKS5hbmQodGhpcy5tYXNrKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBibm90KGEpIHtcbiAgICAgICAgcmV0dXJuIGEueG9yKHRoaXMubWFzaykubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKGIubHQodGhpcy5iaXRMZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5zaGlmdExlZnQoYikuYW5kKHRoaXMubWFzaykubW9kKHRoaXMucCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuYiA9IHRoaXMucC5taW51cyhiKTtcbiAgICAgICAgICAgIGlmIChuYi5sdCh0aGlzLmJpdExlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaHIoYSwgbmIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmlnSW50Lnplcm87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaHIoYSwgYikge1xuICAgICAgICBpZiAoYi5sdCh0aGlzLmJpdExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnNoaWZ0UmlnaHQoYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuYiA9IHRoaXMucC5taW51cyhiKTtcbiAgICAgICAgICAgIGlmIChuYi5sdCh0aGlzLmJpdExlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaGwoYSwgbmIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmlnSW50Lnplcm87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYW5kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpID8gYmlnSW50Lnplcm8gOiBiaWdJbnQub25lO1xuICAgIH1cblxuICAgIGxvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYS5pc1plcm8oKSAmJiBiLmlzWmVybygpKSA/IGJpZ0ludC56ZXJvIDogYmlnSW50Lm9uZTtcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIGEuaXNaZXJvKCkgPyBiaWdJbnQub25lIDogYmlnSW50Lnplcm87XG4gICAgfVxuXG4gICAgc3FydF9vbGQobikge1xuXG4gICAgICAgIGlmIChuLmVxdWFscyh0aGlzLnplcm8pKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIC8vIFRlc3QgdGhhdCBoYXZlIHNvbHV0aW9uXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMucG93KG4sIHRoaXMubmVnb25lLnNoaWZ0UmlnaHQodGhpcy5vbmUpKTtcbiAgICAgICAgaWYgKCFyZXMuZXF1YWxzKHRoaXMub25lKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IG0gPSBwYXJzZUludCh0aGlzLnMpO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKS5zaGlmdFJpZ2h0KHRoaXMub25lKSApO1xuXG4gICAgICAgIHdoaWxlICghdC5lcXVhbHModGhpcy5vbmUpKSB7XG4gICAgICAgICAgICBsZXQgc3EgPSB0aGlzLnNxdWFyZSh0KTtcbiAgICAgICAgICAgIGxldCBpID0gMTtcbiAgICAgICAgICAgIHdoaWxlICghc3EuZXF1YWxzKHRoaXMub25lKSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyLmdyZWF0ZXIodGhpcy5wLnNoaWZ0UmlnaHQodGhpcy5vbmUpKSkge1xuICAgICAgICAgICAgciA9IHRoaXMubmVnKHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKGEpIHtcbiAgICAgICAgYSA9IGJpZ0ludChhKTtcbiAgICAgICAgaWYgKGEuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wLm1pbnVzKGEuYWJzKCkubW9kKHRoaXMucCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGEubW9kKHRoaXMucCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIGxldCByZXMgPSBiaWdJbnQoMCk7XG4gICAgICAgIGxldCBuID0gYmlnSW50KHRoaXMucC5zcXVhcmUoKSk7XG4gICAgICAgIHdoaWxlICghbi5pc1plcm8oKSkge1xuICAgICAgICAgICAgcmVzID0gcmVzLnNoaWZ0TGVmdCg4KS5hZGQoYmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKSk7XG4gICAgICAgICAgICBuID0gbi5zaGlmdFJpZ2h0KDgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgYmFzZSkge1xuICAgICAgICBsZXQgdnM7XG4gICAgICAgIGlmICghYS5sZXNzZXJPckVxdWFscyh0aGlzLnAuc2hpZnRSaWdodChiaWdJbnQoMSkpKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMucC5taW51cyhhKTtcbiAgICAgICAgICAgIHZzID0gXCItXCIrdi50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZzID0gYS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2cztcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gYS5pc1plcm8oKTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IGJpZ0ludCgwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiA9IHYuYWRkKHYsIHJuZy5uZXh0VTY0KCkuc2hpZnRMZWZ0KDY0KmkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHYgPSB2LmFuZCh0aGlzLm1hc2spO1xuICAgICAgICB9IHdoaWxlICh2LmdlcSh0aGlzLnApKTtcbiAgICAgICAgdiA9IHYudGltZXModGhpcy5SaSkubW9kKHRoaXMucSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuXG59XG5cbiIsImltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxuaW1wb3J0IEYxRmllbGRfbmF0aXZlIGZyb20gXCIuL2YxZmllbGRfbmF0aXZlLmpzXCI7XG5pbXBvcnQgRjFGaWVsZF9iaWdpbnQgZnJvbSBcIi4vZjFmaWVsZF9iaWdpbnQuanNcIjtcblxuY29uc3Qgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5sZXQgX0YxRmllbGQ7XG5pZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICBfRjFGaWVsZCA9IEYxRmllbGRfbmF0aXZlO1xufSBlbHNlIHtcbiAgICBfRjFGaWVsZCA9IEYxRmllbGRfYmlnaW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCAgY2xhc3MgRjFGaWVsZCBleHRlbmRzIF9GMUZpZWxkIHtcblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgdG9ScHJMRShidWZmLCBvLCBlKSB7XG4gICAgICAgIFNjYWxhci50b1JwckxFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIFNjYWxhci50b1JwckJFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIE1vbnRnb21lcnkgUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByQkUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckxFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIFNjYWxhci5mcm9tUnByTEUoYnVmZiwgbywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIFNjYWxhci5mcm9tUnByQkUoYnVmZiwgbywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJMRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJCRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG59XG5cbiIsIlxuICAgICAgICAgICAgZXhwb3J0cy5jb2RlID0gXCJBR0Z6YlFFQUFBQUJpUUVSWUFKL2Z3QmdBWDhBWUFGL0FYOWdBbjkvQVg5Z0EzOS9md0YvWUFOL2YzOEFZQU4vZm44QVlBSi9mZ0JnQkg5L2YzOEFZQVYvZjM5L2Z3QmdCSDkvZjM4QmYyQUhmMzkvZjM5L2Z3QmdDSDkvZjM5L2YzOS9BR0FGZjM5L2YzOEJmMkFIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZndJUUFRTmxibllHYldWdGIzSjVBZ0RvQndPckFxa0NBQUVDQVFNREJBUUZBQUFHQndnRkFnVUZBQUFGQUFBQUFBSUNBQUVGQ0FrRkJRZ0FBZ0lGQlFBQUJRQUFBQUFDQWdBQkJRZ0pCUVVJQUFJRkFBQUNBZ0lCQVFBQUFBTURBd0FBQlFVRkFBQUZCUVVBQUFBQUFBVUFCUUFBQUFBRkJRVUZCUW9BQ3drS0FBc0pDQWdEQUFnSUFnQUFDUVVGQUFnTUNRSUNBUUVBQlFVQUJRVUFBQUFBQXdBSUFnSUpDQUFDQWdJQkFRQUFBQU1EQXdBQUJRVUZBQUFGQlFVQUFBQUFBQVVBQlFBQUFBQUZCUVVGQlFvQUN3a0tBQXNKQ0FnRkF3QUlDQUlBQUFrRkJRVURBQWdJQWdBQUNRVUZCUVVKQ1FrSkNRQUNBZ0VCQUFVQUJRVUFBZ0FBQXdBSUFna0lBQUlDQVFFQUJRVUFCUVVBQUFBQUF3QUlBZ0lKQ0FBQ0JRQUFBQUFJQ0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkEwT0R4QUZCNzBpbWdJSWFXNTBYMk52Y0hrQUFBaHBiblJmZW1WeWJ3QUJCMmx1ZEY5dmJtVUFBd3BwYm5SZmFYTmFaWEp2QUFJR2FXNTBYMlZ4QUFRSGFXNTBYMmQwWlFBRkIybHVkRjloWkdRQUJnZHBiblJmYzNWaUFBY0hhVzUwWDIxMWJBQUlDbWx1ZEY5emNYVmhjbVVBQ1ExcGJuUmZjM0YxWVhKbFQyeGtBQW9IYVc1MFgyUnBkZ0FORG1sdWRGOXBiblpsY25ObFRXOWtBQTRJWmpGdFgyTnZjSGtBQUFobU1XMWZlbVZ5YndBQkNtWXhiVjlwYzFwbGNtOEFBZ1ptTVcxZlpYRUFCQWRtTVcxZllXUmtBQkFIWmpGdFgzTjFZZ0FSQjJZeGJWOXVaV2NBRWc1bU1XMWZhWE5PWldkaGRHbDJaUUFaQ1dZeGJWOXBjMDl1WlFBUENHWXhiVjl6YVdkdUFCb0xaakZ0WDIxU1pXUjFZM1FBRXdkbU1XMWZiWFZzQUJRS1pqRnRYM054ZFdGeVpRQVZEV1l4YlY5emNYVmhjbVZQYkdRQUZoSm1NVzFmWm5KdmJVMXZiblJuYjIxbGNua0FHQkJtTVcxZmRHOU5iMjUwWjI5dFpYSjVBQmNMWmpGdFgybHVkbVZ5YzJVQUd3ZG1NVzFmYjI1bEFCd0laakZ0WDJ4dllXUUFIUTltTVcxZmRHbHRaWE5UWTJGc1lYSUFIZ2RtTVcxZlpYaHdBQ0lRWmpGdFgySmhkR05vU1c1MlpYSnpaUUFmQ0dZeGJWOXpjWEowQUNNTVpqRnRYMmx6VTNGMVlYSmxBQ1FWWmpGdFgySmhkR05vVkc5TmIyNTBaMjl0WlhKNUFDQVhaakZ0WDJKaGRHTm9Sbkp2YlUxdmJuUm5iMjFsY25rQUlRaG1jbTFmWTI5d2VRQUFDR1p5YlY5NlpYSnZBQUVLWm5KdFgybHpXbVZ5YndBQ0JtWnliVjlsY1FBRUIyWnliVjloWkdRQUpnZG1jbTFmYzNWaUFDY0habkp0WDI1bFp3QW9EbVp5YlY5cGMwNWxaMkYwYVhabEFDOEpabkp0WDJselQyNWxBQ1VJWm5KdFgzTnBaMjRBTUF0bWNtMWZiVkpsWkhWamRBQXBCMlp5YlY5dGRXd0FLZ3BtY20xZmMzRjFZWEpsQUNzTlpuSnRYM054ZFdGeVpVOXNaQUFzRW1aeWJWOW1jbTl0VFc5dWRHZHZiV1Z5ZVFBdUVHWnliVjkwYjAxdmJuUm5iMjFsY25rQUxRdG1jbTFmYVc1MlpYSnpaUUF4QjJaeWJWOXZibVVBTWdobWNtMWZiRzloWkFBekQyWnliVjkwYVcxbGMxTmpZV3hoY2dBMEIyWnliVjlsZUhBQU9CQm1jbTFmWW1GMFkyaEpiblpsY25ObEFEVUlabkp0WDNOeGNuUUFPUXhtY20xZmFYTlRjWFZoY21VQU9oVm1jbTFmWW1GMFkyaFViMDF2Ym5SbmIyMWxjbmtBTmhkbWNtMWZZbUYwWTJoR2NtOXRUVzl1ZEdkdmJXVnllUUEzQm1aeVgyRmtaQUFtQm1aeVgzTjFZZ0FuQm1aeVgyNWxad0FvQm1aeVgyMTFiQUE3Q1daeVgzTnhkV0Z5WlFBOENtWnlYMmx1ZG1WeWMyVUFQUTFtY2w5cGMwNWxaMkYwYVhabEFENEhabkpmWTI5d2VRQUFCMlp5WDNwbGNtOEFBUVptY2w5dmJtVUFNZ2xtY2w5cGMxcGxjbThBQWdWbWNsOWxjUUFFREdjeGJWOXRkV3gwYVdWNGNBQm5FbWN4YlY5dGRXeDBhV1Y0Y0Y5amFIVnVhd0JtRW1jeGJWOXRkV3gwYVdWNGNFRm1abWx1WlFCckdHY3hiVjl0ZFd4MGFXVjRjRUZtWm1sdVpWOWphSFZ1YXdCcUNtY3hiVjlwYzFwbGNtOEFRQkJuTVcxZmFYTmFaWEp2UVdabWFXNWxBRDhHWnpGdFgyVnhBRWdMWnpGdFgyVnhUV2w0WldRQVJ3eG5NVzFmWlhGQlptWnBibVVBUmdobk1XMWZZMjl3ZVFCRURtY3hiVjlqYjNCNVFXWm1hVzVsQUVNSVp6RnRYM3BsY204QVFnNW5NVzFmZW1WeWIwRm1abWx1WlFCQkNtY3hiVjlrYjNWaWJHVUFTaEJuTVcxZlpHOTFZbXhsUVdabWFXNWxBRWtIWnpGdFgyRmtaQUJOREdjeGJWOWhaR1JOYVhobFpBQk1EV2N4YlY5aFpHUkJabVpwYm1VQVN3ZG5NVzFmYm1WbkFFOE5aekZ0WDI1bFowRm1abWx1WlFCT0IyY3hiVjl6ZFdJQVVneG5NVzFmYzNWaVRXbDRaV1FBVVExbk1XMWZjM1ZpUVdabWFXNWxBRkFTWnpGdFgyWnliMjFOYjI1MFoyOXRaWEo1QUZRWVp6RnRYMlp5YjIxTmIyNTBaMjl0WlhKNVFXWm1hVzVsQUZNUVp6RnRYM1J2VFc5dWRHZHZiV1Z5ZVFCV0ZtY3hiVjkwYjAxdmJuUm5iMjFsY25sQlptWnBibVVBVlE5bk1XMWZkR2x0WlhOVFkyRnNZWElBYkJWbk1XMWZkR2x0WlhOVFkyRnNZWEpCWm1acGJtVUFiUTFuTVcxZmJtOXliV0ZzYVhwbEFGa0taekZ0WDB4RlRYUnZWUUJiQ21jeGJWOU1SVTEwYjBNQVhBcG5NVzFmVlhSdlRFVk5BRjBLWnpGdFgwTjBiMHhGVFFCZUQyY3hiVjlpWVhSamFFeEZUWFJ2VlFCZkQyY3hiVjlpWVhSamFFeEZUWFJ2UXdCZ0QyY3hiVjlpWVhSamFGVjBiMHhGVFFCaEQyY3hiVjlpWVhSamFFTjBiMHhGVFFCaURHY3hiVjkwYjBGbVptbHVaUUJYRG1jeGJWOTBiMHBoWTI5aWFXRnVBRVVSWnpGdFgySmhkR05vVkc5QlptWnBibVVBV0JObk1XMWZZbUYwWTJoVWIwcGhZMjlpYVdGdUFHTUhabkp0WDJabWRBQnpDR1p5YlY5cFptWjBBSFFLWm5KdFgzSmhkMlptZEFCeEMyWnliVjltWm5SS2IybHVBSFVLWm5KdFgyWm1kRTFwZUFCMkRHWnliVjltWm5SR2FXNWhiQUIzQ0hCdmJGOTZaWEp2QUhnUGNHOXNYMk52Ym5OMGNuVmpkRXhEQUhrTWNXRndYMkoxYVd4a1FVSkRBSG9MY1dGd1gycHZhVzVCUWtNQWV3cG1NbTFmYVhOYVpYSnZBSHdKWmpKdFgybHpUMjVsQUgwSVpqSnRYM3BsY204QWZnZG1NbTFmYjI1bEFIOElaakp0WDJOdmNIa0FnQUVIWmpKdFgyMTFiQUNCQVFobU1tMWZiWFZzTVFDQ0FRcG1NbTFmYzNGMVlYSmxBSU1CQjJZeWJWOWhaR1FBaEFFSFpqSnRYM04xWWdDRkFRZG1NbTFmYm1WbkFJWUJDR1l5YlY5emFXZHVBSTBCRFdZeWJWOWpiMjVxZFdkaGRHVUFod0VTWmpKdFgyWnliMjFOYjI1MFoyOXRaWEo1QUlrQkVHWXliVjkwYjAxdmJuUm5iMjFsY25rQWlBRUdaakp0WDJWeEFJb0JDMll5YlY5cGJuWmxjbk5sQUlzQkIyWXliVjlsZUhBQWtBRVBaakp0WDNScGJXVnpVMk5oYkdGeUFJd0JFR1l5YlY5aVlYUmphRWx1ZG1WeWMyVUFqd0VJWmpKdFgzTnhjblFBa1FFTVpqSnRYMmx6VTNGMVlYSmxBSklCRG1ZeWJWOXBjMDVsWjJGMGFYWmxBSTRCREdjeWJWOXRkV3gwYVdWNGNBQzdBUkpuTW0xZmJYVnNkR2xsZUhCZlkyaDFibXNBdWdFU1p6SnRYMjExYkhScFpYaHdRV1ptYVc1bEFMOEJHR2N5YlY5dGRXeDBhV1Y0Y0VGbVptbHVaVjlqYUhWdWF3QytBUXBuTW0xZmFYTmFaWEp2QUpRQkVHY3liVjlwYzFwbGNtOUJabVpwYm1VQWt3RUdaekp0WDJWeEFKd0JDMmN5YlY5bGNVMXBlR1ZrQUpzQkRHY3liVjlsY1VGbVptbHVaUUNhQVFobk1tMWZZMjl3ZVFDWUFRNW5NbTFmWTI5d2VVRm1abWx1WlFDWEFRaG5NbTFmZW1WeWJ3Q1dBUTVuTW0xZmVtVnliMEZtWm1sdVpRQ1ZBUXBuTW0xZlpHOTFZbXhsQUo0QkVHY3liVjlrYjNWaWJHVkJabVpwYm1VQW5RRUhaekp0WDJGa1pBQ2hBUXhuTW0xZllXUmtUV2w0WldRQW9BRU5aekp0WDJGa1pFRm1abWx1WlFDZkFRZG5NbTFmYm1WbkFLTUJEV2N5YlY5dVpXZEJabVpwYm1VQW9nRUhaekp0WDNOMVlnQ21BUXhuTW0xZmMzVmlUV2w0WldRQXBRRU5aekp0WDNOMVlrRm1abWx1WlFDa0FSSm5NbTFmWm5KdmJVMXZiblJuYjIxbGNua0FxQUVZWnpKdFgyWnliMjFOYjI1MFoyOXRaWEo1UVdabWFXNWxBS2NCRUdjeWJWOTBiMDF2Ym5SbmIyMWxjbmtBcWdFV1p6SnRYM1J2VFc5dWRHZHZiV1Z5ZVVGbVptbHVaUUNwQVE5bk1tMWZkR2x0WlhOVFkyRnNZWElBd0FFVlp6SnRYM1JwYldWelUyTmhiR0Z5UVdabWFXNWxBTUVCRFdjeWJWOXViM0p0WVd4cGVtVUFyUUVLWnpKdFgweEZUWFJ2VlFDdkFRcG5NbTFmVEVWTmRHOURBTEFCQ21jeWJWOVZkRzlNUlUwQXNRRUtaekp0WDBOMGIweEZUUUN5QVE5bk1tMWZZbUYwWTJoTVJVMTBiMVVBc3dFUFp6SnRYMkpoZEdOb1RFVk5kRzlEQUxRQkQyY3liVjlpWVhSamFGVjBiMHhGVFFDMUFROW5NbTFmWW1GMFkyaERkRzlNUlUwQXRnRU1aekp0WDNSdlFXWm1hVzVsQUtzQkRtY3liVjkwYjBwaFkyOWlhV0Z1QUprQkVXY3liVjlpWVhSamFGUnZRV1ptYVc1bEFLd0JFMmN5YlY5aVlYUmphRlJ2U21GamIySnBZVzRBdHdFTFp6RnRYM1JwYldWelJuSUF3Z0VIWnpGdFgyWm1kQURJQVFobk1XMWZhV1ptZEFESkFRcG5NVzFmY21GM1ptWjBBTVlCQzJjeGJWOW1ablJLYjJsdUFNb0JDbWN4YlY5bVpuUk5hWGdBeXdFTVp6RnRYMlptZEVacGJtRnNBTXdCQzJjeWJWOTBhVzFsYzBaeUFNMEJCMmN5YlY5bVpuUUEwd0VJWnpKdFgybG1ablFBMUFFS1p6SnRYM0poZDJabWRBRFJBUXRuTW0xZlptWjBTbTlwYmdEVkFRcG5NbTFmWm1aMFRXbDRBTllCREdjeWJWOW1ablJHYVc1aGJBRFhBUkZuTVcxZmRHbHRaWE5HY2tGbVptbHVaUURZQVJGbk1tMWZkR2x0WlhOR2NrRm1abWx1WlFEWkFSRm1jbTFmWW1GMFkyaEJjSEJzZVV0bGVRRGFBUkZuTVcxZlltRjBZMmhCY0hCc2VVdGxlUURiQVJabk1XMWZZbUYwWTJoQmNIQnNlVXRsZVUxcGVHVmtBTndCRVdjeWJWOWlZWFJqYUVGd2NHeDVTMlY1QU4wQkZtY3liVjlpWVhSamFFRndjR3g1UzJWNVRXbDRaV1FBM2dFS1pqWnRYMmx6V21WeWJ3RGdBUWxtTm0xZmFYTlBibVVBNFFFSVpqWnRYM3BsY204QTRnRUhaalp0WDI5dVpRRGpBUWhtTm0xZlkyOXdlUURrQVFkbU5tMWZiWFZzQU9VQkNtWTJiVjl6Y1hWaGNtVUE1Z0VIWmpadFgyRmtaQURuQVFkbU5tMWZjM1ZpQU9nQkIyWTJiVjl1WldjQTZRRUlaalp0WDNOcFoyNEE2Z0VTWmpadFgyWnliMjFOYjI1MFoyOXRaWEo1QU93QkVHWTJiVjkwYjAxdmJuUm5iMjFsY25rQTZ3RUdaalp0WDJWeEFPMEJDMlkyYlY5cGJuWmxjbk5sQU80QkIyWTJiVjlsZUhBQThnRVBaalp0WDNScGJXVnpVMk5oYkdGeUFPOEJFR1kyYlY5aVlYUmphRWx1ZG1WeWMyVUE4UUVPWmpadFgybHpUbVZuWVhScGRtVUE4QUVLWm5SdFgybHpXbVZ5YndEMEFRbG1kRzFmYVhOUGJtVUE5UUVJWm5SdFgzcGxjbThBOWdFSFpuUnRYMjl1WlFEM0FRaG1kRzFmWTI5d2VRRDRBUWRtZEcxZmJYVnNBUGtCQ0daMGJWOXRkV3d4QVBvQkNtWjBiVjl6Y1hWaGNtVUErd0VIWm5SdFgyRmtaQUQ4QVFkbWRHMWZjM1ZpQVAwQkIyWjBiVjl1WldjQS9nRUlablJ0WDNOcFoyNEFoUUlOWm5SdFgyTnZibXAxWjJGMFpRRC9BUkptZEcxZlpuSnZiVTF2Ym5SbmIyMWxjbmtBZ1FJUVpuUnRYM1J2VFc5dWRHZHZiV1Z5ZVFDQUFnWm1kRzFmWlhFQWdnSUxablJ0WDJsdWRtVnljMlVBZ3dJSFpuUnRYMlY0Y0FDSUFnOW1kRzFmZEdsdFpYTlRZMkZzWVhJQWhBSVFablJ0WDJKaGRHTm9TVzUyWlhKelpRQ0hBZ2htZEcxZmMzRnlkQUNKQWd4bWRHMWZhWE5UY1hWaGNtVUFpZ0lPWm5SdFgybHpUbVZuWVhScGRtVUFoZ0lVWW00eE1qaGZYMlp5YjJKbGJtbDFjMDFoY0RBQWt3SVVZbTR4TWpoZlgyWnliMkpsYm1sMWMwMWhjREVBbEFJVVltNHhNamhmWDJaeWIySmxibWwxYzAxaGNESUFsUUlVWW00eE1qaGZYMlp5YjJKbGJtbDFjMDFoY0RNQWxnSVVZbTR4TWpoZlgyWnliMkpsYm1sMWMwMWhjRFFBbHdJVVltNHhNamhmWDJaeWIySmxibWwxYzAxaGNEVUFtQUlVWW00eE1qaGZYMlp5YjJKbGJtbDFjMDFoY0RZQW1RSVVZbTR4TWpoZlgyWnliMkpsYm1sMWMwMWhjRGNBbWdJVVltNHhNamhmWDJaeWIySmxibWwxYzAxaGNEZ0Ftd0lVWW00eE1qaGZYMlp5YjJKbGJtbDFjMDFoY0RrQW5BSVFZbTR4TWpoZmNHRnBjbWx1WjBWeE1RQ2pBaEJpYmpFeU9GOXdZV2x5YVc1blJYRXlBS1FDRUdKdU1USTRYM0JoYVhKcGJtZEZjVE1BcFFJUVltNHhNamhmY0dGcGNtbHVaMFZ4TkFDbUFoQmliakV5T0Y5d1lXbHlhVzVuUlhFMUFLY0NEV0p1TVRJNFgzQmhhWEpwYm1jQXFBSVBZbTR4TWpoZmNISmxjR0Z5WlVjeEFJMENEMkp1TVRJNFgzQnlaWEJoY21WSE1nQ1BBaEJpYmpFeU9GOXRhV3hzWlhKTWIyOXdBSklDR1dKdU1USTRYMlpwYm1Gc1JYaHdiMjVsYm5ScFlYUnBiMjRBb2dJY1ltNHhNamhmWm1sdVlXeEZlSEJ2Ym1WdWRHbGhkR2x2Yms5c1pBQ2RBZzlpYmpFeU9GOWZiWFZzUW5rd01qUUFrQUlTWW00eE1qaGZYMjExYkVKNU1ESTBUMnhrQUpFQ0YySnVNVEk0WDE5amVXTnNiM1J2YldsalUzRjFZWEpsQUo4Q0YySnVNVEk0WDE5amVXTnNiM1J2YldsalJYaHdYM2N3QUtBQ0NvWE9BNmtDS2dBZ0FTQUFLUU1BTndNQUlBRWdBQ2tEQ0RjRENDQUJJQUFwQXhBM0F4QWdBU0FBS1FNWU53TVlDeDRBSUFCQ0FEY0RBQ0FBUWdBM0F3Z2dBRUlBTndNUUlBQkNBRGNER0FzekFDQUFLUU1ZVUFSQUlBQXBBeEJRQkVBZ0FDa0RDRkFFUUNBQUtRTUFVQThGUVFBUEN3VkJBQThMQlVFQUR3dEJBQThMSGdBZ0FFSUJOd01BSUFCQ0FEY0RDQ0FBUWdBM0F4QWdBRUlBTndNWUMwY0FJQUFwQXhnZ0FTa0RHRkVFUUNBQUtRTVFJQUVwQXhCUkJFQWdBQ2tEQ0NBQktRTUlVUVJBSUFBcEF3QWdBU2tEQUZFUEJVRUFEd3NGUVFBUEN3VkJBQThMUVFBUEMzMEFJQUFwQXhnZ0FTa0RHRlFFUUVFQUR3VWdBQ2tER0NBQktRTVlWZ1JBUVFFUEJTQUFLUU1RSUFFcEF4QlVCRUJCQUE4RklBQXBBeEFnQVNrREVGWUVRRUVCRHdVZ0FDa0RDQ0FCS1FNSVZBUkFRUUFQQlNBQUtRTUlJQUVwQXdoV0JFQkJBUThGSUFBcEF3QWdBU2tEQUZvUEN3c0xDd3NMUVFBUEM5UUJBUUYrSUFBMUFnQWdBVFVDQUh3aEF5QUNJQU0rQWdBZ0FEVUNCQ0FCTlFJRWZDQURRaUNJZkNFRElBSWdBejRDQkNBQU5RSUlJQUUxQWdoOElBTkNJSWg4SVFNZ0FpQURQZ0lJSUFBMUFnd2dBVFVDREh3Z0EwSWdpSHdoQXlBQ0lBTStBZ3dnQURVQ0VDQUJOUUlRZkNBRFFpQ0lmQ0VESUFJZ0F6NENFQ0FBTlFJVUlBRTFBaFI4SUFOQ0lJaDhJUU1nQWlBRFBnSVVJQUExQWhnZ0FUVUNHSHdnQTBJZ2lId2hBeUFDSUFNK0FoZ2dBRFVDSENBQk5RSWNmQ0FEUWlDSWZDRURJQUlnQXo0Q0hDQURRaUNJcHd1TUFnRUJmaUFBTlFJQUlBRTFBZ0I5SVFNZ0FpQURRdi8vLy84UGd6NENBQ0FBTlFJRUlBRTFBZ1I5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0JDQUFOUUlJSUFFMUFnaDlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDQ0NBQU5RSU1JQUUxQWd4OUlBTkNJSWQ4SVFNZ0FpQURRdi8vLy84UGd6NENEQ0FBTlFJUUlBRTFBaEI5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0VDQUFOUUlVSUFFMUFoUjlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDRkNBQU5RSVlJQUUxQWhoOUlBTkNJSWQ4SVFNZ0FpQURRdi8vLy84UGd6NENHQ0FBTlFJY0lBRTFBaHg5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0hDQURRaUNIcHd1UEVCSUJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNGdBMEwvLy8vL0Q0TWdBRFVDQUNJRklBRTFBZ0FpQm41OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q0FDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0JTQUJOUUlFSWdoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFBTlFJRUlnY2dCbjU4SVFRZ0F5QUVRaUNJZkNFRElBSWdCRDRDQkNBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nQlNBQk5RSUlJZ3ArZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUhJQWgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUFOUUlJSWdrZ0JuNThJUU1nQkNBRFFpQ0lmQ0VFSUFJZ0F6NENDQ0FFUWlDSUlRTWdCRUwvLy8vL0Q0TWdCU0FCTlFJTUlneCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBSElBcCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBSklBaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBQU5RSU1JZ3NnQm41OElRUWdBeUFFUWlDSWZDRURJQUlnQkQ0Q0RDQURRaUNJSVFRZ0EwTC8vLy8vRDRNZ0JTQUJOUUlRSWc1K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFISUF4K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFKSUFwK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFMSUFoK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFBTlFJUUlnMGdCbjU4SVFNZ0JDQURRaUNJZkNFRUlBSWdBejRDRUNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nQlNBQk5RSVVJaEIrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUhJQTUrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUpJQXgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUxJQXArZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QU5JQWgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUFOUUlVSWc4Z0JuNThJUVFnQXlBRVFpQ0lmQ0VESUFJZ0JENENGQ0FEUWlDSUlRUWdBMEwvLy8vL0Q0TWdCU0FCTlFJWUloSitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBSElCQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBSklBNStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBTElBeCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBTklBcCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUElBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBQU5RSVlJaEVnQm41OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q0dDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0JTQUJOUUljSWhSK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFISUJKK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFKSUJCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFMSUE1K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFOSUF4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFQSUFwK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFSSUFoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFBTlFJY0loTWdCbjU4SVFRZ0F5QUVRaUNJZkNFRElBSWdCRDRDSENBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nQnlBVWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ1NBU2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ3lBUWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRFNBT2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRHlBTWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRVNBS2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRXlBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQWlBRFBnSWdJQVJDSUlnaEF5QUVRdi8vLy84UGd5QUpJQlIrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUxJQkorZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QU5JQkIrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QVBJQTUrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QVJJQXgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QVRJQXArZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWlRZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUFzZ0ZINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUEwZ0VuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUE4Z0VINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJFZ0RuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJNZ0RINThJUU1nQkNBRFFpQ0lmQ0VFSUFJZ0F6NENLQ0FFUWlDSUlRTWdCRUwvLy8vL0Q0TWdEU0FVZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEeUFTZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFU0FRZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFeUFPZm53aEJDQURJQVJDSUloOElRTWdBaUFFUGdJc0lBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBUElCUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUklCSitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBVElCQitmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBakFnQkVJZ2lDRURJQVJDLy8vLy93K0RJQkVnRkg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQk1nRW41OElRUWdBeUFFUWlDSWZDRURJQUlnQkQ0Q05DQURRaUNJSVFRZ0EwTC8vLy8vRDRNZ0V5QVVmbndoQXlBRUlBTkNJSWg4SVFRZ0FpQURQZ0k0SUFSQ0lJZ2hBeUFDSUFRK0Fqd0xqQklNQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdBRFVDQUNJR0lBWitmQ0VDSUFNZ0FrSWdpSHdoQXlBQklBSStBZ0FnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFZZ0FEVUNCQ0lIZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBRWdBajRDQkNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0JpQUFOUUlJSWdoK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFISUFkK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBU0FDUGdJSUlBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUdJQUExQWd3aUNYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFjZ0NINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0Fnd2dBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQVlnQURVQ0VDSUtmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0J5QUpmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NDQUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFFZ0FqNENFQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQmlBQU5RSVVJZ3QrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUhJQXArZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUlJQWwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FTQUNQZ0lVSUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBR0lBQTFBaGdpREg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWNnQzM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWdnQ241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWtnQ1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWhnZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBWWdBRFVDSENJTmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQnlBTWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ0NBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ1NBS2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUVnQWo0Q0hDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCeUFOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDQ0FNZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDU0FMZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFLZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBRWdBajRDSUNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0NDQU5mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NTQU1mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NpQUxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFFZ0FqNENKQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQ1NBTmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ2lBTWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ3lBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUVnQWo0Q0tDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdDaUFOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDeUFNZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBRWdBajRDTENBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0N5QU5mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0RDQU1mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFFZ0FqNENNQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nRENBTmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUVnQWo0Q05DQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBRWdBajRDT0NBRElRUWdCRUlnaUNFRklBRWdCRDRDUEFzS0FDQUFJQUFnQVJBSUM3WUJBUUYrSUFBMUFBQWdBWDRoQXlBQ0lBTStBQUFnQURVQUJDQUJmaUFEUWlDSWZDRURJQUlnQXo0QUJDQUFOUUFJSUFGK0lBTkNJSWg4SVFNZ0FpQURQZ0FJSUFBMUFBd2dBWDRnQTBJZ2lId2hBeUFDSUFNK0FBd2dBRFVBRUNBQmZpQURRaUNJZkNFRElBSWdBejRBRUNBQU5RQVVJQUYrSUFOQ0lJaDhJUU1nQWlBRFBnQVVJQUExQUJnZ0FYNGdBMElnaUh3aEF5QUNJQU0rQUJnZ0FEVUFIQ0FCZmlBRFFpQ0lmQ0VESUFJZ0F6NEFIQXRPQWdGK0FYOGdBQ0VESUFNMUFBQWdBWHdoQWlBRElBSStBQUFnQWtJZ2lDRUNBa0FEUUNBQ1VBMEJJQU5CQkdvaEF5QUROUUFBSUFKOElRSWdBeUFDUGdBQUlBSkNJSWdoQWd3QUN3c0xzQUlIQVg4QmZ3Ri9BWDhCZmdGK0FYOGdBZ1JBSUFJaEJRVkI2QUFoQlFzZ0F3UkFJQU1oQkFWQmlBRWhCQXNnQUNBRUVBQWdBVUhJQUJBQUlBVVFBVUdvQVJBQlFSOGhCa0VmSVFjQ1FBTkFRY2dBSUFkcUxRQUFJQWRCQTBaeURRRWdCMEVCYXlFSERBQUxDMEhJQUNBSGFrRURhelVBQUVJQmZDRUlJQWhDQVZFRVFFSUFRZ0NBR2dzQ1FBTkFBa0FEUUNBRUlBWnFMUUFBSUFaQkIwWnlEUUVnQmtFQmF5RUdEQUFMQ3lBRUlBWnFRUWRyS1FBQUlRa2dDU0FJZ0NFSklBWWdCMnRCQkdzaENnSkFBMEFnQ1VLQWdJQ0FjSU5RSUFwQkFFNXhEUUVnQ1VJSWlDRUpJQXBCQVdvaENnd0FDd3NnQ1ZBRVFDQUVRY2dBRUFWRkRRSkNBU0VKUVFBaENndEJ5QUFnQ1VISUFSQUxJQVJCeUFFZ0Ntc2dCQkFIR2lBRklBcHFJQWtRREF3QUN3c0x0UUlMQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmYwSG9BU0VEUWVnQkVBRkJBQ0VMUVlnQ0lRVWdBVUdJQWhBQVFhZ0NJUVJCcUFJUUEwRUFJUXhCeUFJaENDQUFRY2dDRUFCQjZBSWhCa0dJQXlFSFFlZ0RJUW9DUUFOQUlBZ1FBZzBCSUFVZ0NDQUdJQWNRRFNBR0lBUkJxQU1RQ0NBTEJFQWdEQVJBUWFnRElBTVFCUVJBUWFnRElBTWdDaEFIR2tFQUlRMEZJQU5CcUFNZ0NoQUhHa0VCSVEwTEJVR29BeUFESUFvUUJocEJBU0VOQ3dVZ0RBUkFRYWdESUFNZ0NoQUdHa0VBSVEwRklBTkJxQU1RQlFSQUlBTkJxQU1nQ2hBSEdrRUFJUTBGUWFnRElBTWdDaEFIR2tFQklRMExDd3NnQXlFSklBUWhBeUFLSVFRZ0NTRUtJQXdoQ3lBTklRd2dCU0VKSUFnaEJTQUhJUWdnQ1NFSERBQUxDeUFMQkVBZ0FTQURJQUlRQnhvRklBTWdBaEFBQ3dzS0FDQUFRZWdFRUFRUEN5d0FJQUFnQVNBQ0VBWUVRQ0FDUVlnRUlBSVFCeG9GSUFKQmlBUVFCUVJBSUFKQmlBUWdBaEFIR2dzTEN4Y0FJQUFnQVNBQ0VBY0VRQ0FDUVlnRUlBSVFCaG9MQ3dzQVFZZ0ZJQUFnQVJBUkM1d1JBd0YrQVg0QmZrS0p4NW1rRGlFQ1FnQWhBeUFBTlFJQUlBSitRdi8vLy84UGd5RUVJQUExQWdBZ0EwSWdpSHhCaUFRMUFnQWdCSDU4SVFNZ0FDQURQZ0lBSUFBMUFnUWdBMElnaUh4QmlBUTFBZ1FnQkg1OElRTWdBQ0FEUGdJRUlBQTFBZ2dnQTBJZ2lIeEJpQVExQWdnZ0JINThJUU1nQUNBRFBnSUlJQUExQWd3Z0EwSWdpSHhCaUFRMUFnd2dCSDU4SVFNZ0FDQURQZ0lNSUFBMUFoQWdBMElnaUh4QmlBUTFBaEFnQkg1OElRTWdBQ0FEUGdJUUlBQTFBaFFnQTBJZ2lIeEJpQVExQWhRZ0JINThJUU1nQUNBRFBnSVVJQUExQWhnZ0EwSWdpSHhCaUFRMUFoZ2dCSDU4SVFNZ0FDQURQZ0lZSUFBMUFod2dBMElnaUh4QmlBUTFBaHdnQkg1OElRTWdBQ0FEUGdJY1FlZ0dJQU5DSUlnK0FnQkNBQ0VESUFBMUFnUWdBbjVDLy8vLy93K0RJUVFnQURVQ0JDQURRaUNJZkVHSUJEVUNBQ0FFZm53aEF5QUFJQU0rQWdRZ0FEVUNDQ0FEUWlDSWZFR0lCRFVDQkNBRWZud2hBeUFBSUFNK0FnZ2dBRFVDRENBRFFpQ0lmRUdJQkRVQ0NDQUVmbndoQXlBQUlBTStBZ3dnQURVQ0VDQURRaUNJZkVHSUJEVUNEQ0FFZm53aEF5QUFJQU0rQWhBZ0FEVUNGQ0FEUWlDSWZFR0lCRFVDRUNBRWZud2hBeUFBSUFNK0FoUWdBRFVDR0NBRFFpQ0lmRUdJQkRVQ0ZDQUVmbndoQXlBQUlBTStBaGdnQURVQ0hDQURRaUNJZkVHSUJEVUNHQ0FFZm53aEF5QUFJQU0rQWh3Z0FEVUNJQ0FEUWlDSWZFR0lCRFVDSENBRWZud2hBeUFBSUFNK0FpQkI2QVlnQTBJZ2lENENCRUlBSVFNZ0FEVUNDQ0FDZmtMLy8vLy9ENE1oQkNBQU5RSUlJQU5DSUloOFFZZ0VOUUlBSUFSK2ZDRURJQUFnQXo0Q0NDQUFOUUlNSUFOQ0lJaDhRWWdFTlFJRUlBUitmQ0VESUFBZ0F6NENEQ0FBTlFJUUlBTkNJSWg4UVlnRU5RSUlJQVIrZkNFRElBQWdBejRDRUNBQU5RSVVJQU5DSUloOFFZZ0VOUUlNSUFSK2ZDRURJQUFnQXo0Q0ZDQUFOUUlZSUFOQ0lJaDhRWWdFTlFJUUlBUitmQ0VESUFBZ0F6NENHQ0FBTlFJY0lBTkNJSWg4UVlnRU5RSVVJQVIrZkNFRElBQWdBejRDSENBQU5RSWdJQU5DSUloOFFZZ0VOUUlZSUFSK2ZDRURJQUFnQXo0Q0lDQUFOUUlrSUFOQ0lJaDhRWWdFTlFJY0lBUitmQ0VESUFBZ0F6NENKRUhvQmlBRFFpQ0lQZ0lJUWdBaEF5QUFOUUlNSUFKK1F2Ly8vLzhQZ3lFRUlBQTFBZ3dnQTBJZ2lIeEJpQVExQWdBZ0JINThJUU1nQUNBRFBnSU1JQUExQWhBZ0EwSWdpSHhCaUFRMUFnUWdCSDU4SVFNZ0FDQURQZ0lRSUFBMUFoUWdBMElnaUh4QmlBUTFBZ2dnQkg1OElRTWdBQ0FEUGdJVUlBQTFBaGdnQTBJZ2lIeEJpQVExQWd3Z0JINThJUU1nQUNBRFBnSVlJQUExQWh3Z0EwSWdpSHhCaUFRMUFoQWdCSDU4SVFNZ0FDQURQZ0ljSUFBMUFpQWdBMElnaUh4QmlBUTFBaFFnQkg1OElRTWdBQ0FEUGdJZ0lBQTFBaVFnQTBJZ2lIeEJpQVExQWhnZ0JINThJUU1nQUNBRFBnSWtJQUExQWlnZ0EwSWdpSHhCaUFRMUFod2dCSDU4SVFNZ0FDQURQZ0lvUWVnR0lBTkNJSWcrQWd4Q0FDRURJQUExQWhBZ0FuNUMvLy8vL3crRElRUWdBRFVDRUNBRFFpQ0lmRUdJQkRVQ0FDQUVmbndoQXlBQUlBTStBaEFnQURVQ0ZDQURRaUNJZkVHSUJEVUNCQ0FFZm53aEF5QUFJQU0rQWhRZ0FEVUNHQ0FEUWlDSWZFR0lCRFVDQ0NBRWZud2hBeUFBSUFNK0FoZ2dBRFVDSENBRFFpQ0lmRUdJQkRVQ0RDQUVmbndoQXlBQUlBTStBaHdnQURVQ0lDQURRaUNJZkVHSUJEVUNFQ0FFZm53aEF5QUFJQU0rQWlBZ0FEVUNKQ0FEUWlDSWZFR0lCRFVDRkNBRWZud2hBeUFBSUFNK0FpUWdBRFVDS0NBRFFpQ0lmRUdJQkRVQ0dDQUVmbndoQXlBQUlBTStBaWdnQURVQ0xDQURRaUNJZkVHSUJEVUNIQ0FFZm53aEF5QUFJQU0rQWl4QjZBWWdBMElnaUQ0Q0VFSUFJUU1nQURVQ0ZDQUNma0wvLy8vL0Q0TWhCQ0FBTlFJVUlBTkNJSWg4UVlnRU5RSUFJQVIrZkNFRElBQWdBejRDRkNBQU5RSVlJQU5DSUloOFFZZ0VOUUlFSUFSK2ZDRURJQUFnQXo0Q0dDQUFOUUljSUFOQ0lJaDhRWWdFTlFJSUlBUitmQ0VESUFBZ0F6NENIQ0FBTlFJZ0lBTkNJSWg4UVlnRU5RSU1JQVIrZkNFRElBQWdBejRDSUNBQU5RSWtJQU5DSUloOFFZZ0VOUUlRSUFSK2ZDRURJQUFnQXo0Q0pDQUFOUUlvSUFOQ0lJaDhRWWdFTlFJVUlBUitmQ0VESUFBZ0F6NENLQ0FBTlFJc0lBTkNJSWg4UVlnRU5RSVlJQVIrZkNFRElBQWdBejRDTENBQU5RSXdJQU5DSUloOFFZZ0VOUUljSUFSK2ZDRURJQUFnQXo0Q01FSG9CaUFEUWlDSVBnSVVRZ0FoQXlBQU5RSVlJQUorUXYvLy8vOFBneUVFSUFBMUFoZ2dBMElnaUh4QmlBUTFBZ0FnQkg1OElRTWdBQ0FEUGdJWUlBQTFBaHdnQTBJZ2lIeEJpQVExQWdRZ0JINThJUU1nQUNBRFBnSWNJQUExQWlBZ0EwSWdpSHhCaUFRMUFnZ2dCSDU4SVFNZ0FDQURQZ0lnSUFBMUFpUWdBMElnaUh4QmlBUTFBZ3dnQkg1OElRTWdBQ0FEUGdJa0lBQTFBaWdnQTBJZ2lIeEJpQVExQWhBZ0JINThJUU1nQUNBRFBnSW9JQUExQWl3Z0EwSWdpSHhCaUFRMUFoUWdCSDU4SVFNZ0FDQURQZ0lzSUFBMUFqQWdBMElnaUh4QmlBUTFBaGdnQkg1OElRTWdBQ0FEUGdJd0lBQTFBalFnQTBJZ2lIeEJpQVExQWh3Z0JINThJUU1nQUNBRFBnSTBRZWdHSUFOQ0lJZytBaGhDQUNFRElBQTFBaHdnQW41Qy8vLy8vdytESVFRZ0FEVUNIQ0FEUWlDSWZFR0lCRFVDQUNBRWZud2hBeUFBSUFNK0Fod2dBRFVDSUNBRFFpQ0lmRUdJQkRVQ0JDQUVmbndoQXlBQUlBTStBaUFnQURVQ0pDQURRaUNJZkVHSUJEVUNDQ0FFZm53aEF5QUFJQU0rQWlRZ0FEVUNLQ0FEUWlDSWZFR0lCRFVDRENBRWZud2hBeUFBSUFNK0FpZ2dBRFVDTENBRFFpQ0lmRUdJQkRVQ0VDQUVmbndoQXlBQUlBTStBaXdnQURVQ01DQURRaUNJZkVHSUJEVUNGQ0FFZm53aEF5QUFJQU0rQWpBZ0FEVUNOQ0FEUWlDSWZFR0lCRFVDR0NBRWZud2hBeUFBSUFNK0FqUWdBRFVDT0NBRFFpQ0lmRUdJQkRVQ0hDQUVmbndoQXlBQUlBTStBamhCNkFZZ0EwSWdpRDRDSEVIb0JpQUFRU0JxSUFFUUVBdStIeU1CZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitRb25IbWFRT0lRVWdBMEwvLy8vL0Q0TWdBRFVDQUNJR0lBRTFBZ0FpQjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQVYrUXYvLy8vOFBneUVJSUFOQy8vLy8vdytEUVFBMUFvZ0VJZ2tnQ0g1OElRTWdCQ0FEUWlDSWZDRUVJQVJDSUlnaEF5QUVRdi8vLy84UGd5QUdJQUUxQWdRaUMzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFBMUFnUWlDaUFIZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TkJBRFVDakFRaURTQUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0JYNUMvLy8vL3crRElRd2dCRUwvLy8vL0Q0TWdDU0FNZm53aEJDQURJQVJDSUloOElRTWdBMElnaUNFRUlBTkMvLy8vL3crRElBWWdBVFVDQ0NJUGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ2lBTGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0NDSU9JQWQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU5JQXgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGcwRUFOUUtRQkNJUklBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaEVDQURRdi8vLy84UGd5QUpJQkIrZkNFRElBUWdBMElnaUh3aEJDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0JpQUJOUUlNSWhOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFLSUE5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFPSUF0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFBTlFJTUloSWdCMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBMGdFSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCRWdESDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRFFRQTFBcFFFSWhVZ0NINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFWK1F2Ly8vLzhQZ3lFVUlBUkMvLy8vL3crRElBa2dGSDU4SVFRZ0F5QUVRaUNJZkNFRElBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBR0lBRTFBaEFpRjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQW9nRTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTRnRDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQklnQzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQUExQWhBaUZpQUhmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0RTQVVmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0VTQVFmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZTQU1mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDROQkFEVUNtQVFpR1NBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQlg1Qy8vLy8vdytESVJnZ0EwTC8vLy8vRDRNZ0NTQVlmbndoQXlBRUlBTkNJSWg4SVFRZ0JFSWdpQ0VESUFSQy8vLy8vdytESUFZZ0FUVUNGQ0liZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDaUFYZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEaUFUZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFaUFQZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGaUFMZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdBRFVDRkNJYUlBZCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBTklCaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBUklCUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBVklCQitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBWklBeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZzBFQU5RS2NCQ0lkSUFoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFGZmtMLy8vLy9ENE1oSENBRVF2Ly8vLzhQZ3lBSklCeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nQmlBQk5RSVlJaDkrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUtJQnQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU9JQmQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVNJQk4rZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVdJQTkrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWFJQXQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUFOUUlZSWg0Z0IzNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUEwZ0hINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJFZ0dINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJVZ0ZINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJrZ0VINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUIwZ0RINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytEUVFBMUFxQUVJaUVnQ0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQVYrUXYvLy8vOFBneUVnSUFOQy8vLy8vdytESUFrZ0lINThJUU1nQkNBRFFpQ0lmQ0VFSUFSQ0lJZ2hBeUFFUXYvLy8vOFBneUFHSUFFMUFod2lJMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBb2dIMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBNGdHMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCSWdGMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCWWdFMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCb2dEMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCNGdDMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBQTFBaHdpSWlBSGZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBZ2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRVNBY2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRlNBWWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nR1NBVWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSFNBUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSVNBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE5CQURVQ3BBUWlKU0FJZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJU1FnQkVMLy8vLy9ENE1nQ1NBa2Zud2hCQ0FESUFSQ0lJaDhJUU1nQTBJZ2lDRUVJQU5DLy8vLy93K0RJQW9nSTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTRnSDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQklnRzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQllnRjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQm9nRTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjRnRDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0lnQzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTBnSkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQkVnSUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQlVnSEg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQmtnR0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjBnRkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0VnRUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ1VnREg1OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q0FDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0RpQWpmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VpQWZmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ZpQWJmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dpQVhmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hpQVRmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lpQVBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VTQWtmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ZTQWdmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dTQWNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hTQVlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lTQVVmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0pTQVFmbndoQkNBRElBUkNJSWg4SVFNZ0FpQUVQZ0lFSUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFTSUNOK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFXSUI5K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFhSUJ0K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFlSUJkK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFpSUJOK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFWSUNSK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFaSUNCK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFkSUJ4K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFoSUJoK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFsSUJSK2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FnZ2dCRUlnaUNFRElBUkMvLy8vL3crRElCWWdJMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCb2dIMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCNGdHMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDSWdGMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCa2dKSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCMGdJSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDRWdISDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDVWdHSDU4SVFRZ0F5QUVRaUNJZkNFRElBSWdCRDRDRENBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nR2lBamZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSGlBZmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSWlBYmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSFNBa2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSVNBZ2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSlNBY2Zud2hBeUFFSUFOQ0lJaDhJUVFnQWlBRFBnSVFJQVJDSUlnaEF5QUVRdi8vLy84UGd5QWVJQ04rZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWlJQjkrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWhJQ1IrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWxJQ0IrZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWhRZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUNJZ0kzNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNVZ0pINThJUU1nQkNBRFFpQ0lmQ0VFSUFJZ0F6NENHQ0FFUWlDSUlRTWdBaUFFUGdJY0lBT25CRUFnQWtHSUJDQUNFQWNhQlNBQ1FZZ0VFQVVFUUNBQ1FZZ0VJQUlRQnhvTEN3dTdJUjBCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK1FvbkhtYVFPSVFaQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBQU5RSUFJZ2NnQjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVJSUFKQy8vLy8vdytEUVFBMUFvZ0VJZ2tnQ0g1OElRSWdBeUFDUWlDSWZDRURJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFISUFBMUFnUWlDbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQ1F2Ly8vLzhQZzBFQU5RS01CQ0lNSUFoK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFHZmtMLy8vLy9ENE1oQ3lBQ1F2Ly8vLzhQZ3lBSklBdCtmQ0VDSUFNZ0FrSWdpSHdoQXlBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0J5QUFOUUlJSWcxK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFLSUFwK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TWdEQ0FMZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkJBRFVDa0FRaUR5QUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JuNUMvLy8vL3crRElRNGdBa0wvLy8vL0Q0TWdDU0FPZm53aEFpQURJQUpDSUloOElRTWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnQURVQ0RDSVFmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NpQU5mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUF3Z0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUE4Z0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUVFBMUFwUUVJaElnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVSSUFKQy8vLy8vdytESUFrZ0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBSElBQTFBaEFpRTM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nRUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQTBnRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QU1JQkYrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVBJQTUrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVNJQXQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwRUFOUUtZQkNJVklBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaEZDQUNRdi8vLy84UGd5QUpJQlIrZkNFQ0lBTWdBa0lnaUh3aEF5QURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCeUFBTlFJVUloWitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBS0lCTitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBTklCQitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nRENBVWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRHlBUmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRWlBT2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRlNBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5CQURVQ25BUWlHQ0FJZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUmNnQWtMLy8vLy9ENE1nQ1NBWGZud2hBaUFESUFKQ0lJaDhJUU1nQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFjZ0FEVUNHQ0laZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFXZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FUZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFQ0FRZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBd2dGMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdGSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCVWdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCZ2dDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFRQTFBcUFFSWhzZ0NINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFaK1F2Ly8vLzhQZ3lFYUlBSkMvLy8vL3crRElBa2dHbjU4SVFJZ0F5QUNRaUNJZkNFRElBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUhJQUExQWh3aUhINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0dYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0ZuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJBZ0UzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFNSUJwK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFQSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFTSUJSK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFWSUJGK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFZSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFiSUF0K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMEVBTlFLa0JDSWVJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUdma0wvLy8vL0Q0TWhIU0FDUXYvLy8vOFBneUFKSUIxK2ZDRUNJQU1nQWtJZ2lId2hBeUFESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQ2lBY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRFNBWmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRUNBV2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRXlBVGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQXdnSFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQThnR241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQklnRjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQlVnRkg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQmdnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQnNnRG41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQjRnQzM1OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0FDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdEU0FjZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFQ0FaZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFeUFXZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBOGdIWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdHbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCVWdGMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCZ2dGSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCc2dFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCNGdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDQkNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0VDQWNmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0V5QVpmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZpQVdmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUJJZ0hYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJVZ0duNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJnZ0YzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJzZ0ZINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUI0Z0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENDQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nRXlBY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRmlBWmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQlVnSFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQmdnR241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQnNnRjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQjRnRkg1OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0RDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdGaUFjZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHU0FaZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElCZ2dIWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCc2dHbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCNGdGMzU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDRUNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0dTQWNmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUJzZ0hYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUI0Z0duNThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENGQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSENBY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQjRnSFg1OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0dDQURJUVFnQkVJZ2lDRUZJQUVnQkQ0Q0hDQUZwd1JBSUFGQmlBUWdBUkFIR2dVZ0FVR0lCQkFGQkVBZ0FVR0lCQ0FCRUFjYUN3c0xDZ0FnQUNBQUlBRVFGQXNMQUNBQVFjZ0VJQUVRRkFzVkFDQUFRZWdLRUFCQmlBc1FBVUhvQ2lBQkVCTUxFUUFnQUVHb0N4QVlRYWdMUWNnRkVBVUxKQUFnQUJBQ0JFQkJBQThMSUFCQnlBc1FHRUhJQzBISUJSQUZCRUJCZnc4TFFRRVBDeGNBSUFBZ0FSQVlJQUZCaUFRZ0FSQU9JQUVnQVJBWEN3a0FRZWdFSUFBUUFBdkxBUVFCZndGL0FYOEJmeUFDRUFGQklDRUZJQUFoQXdKQUEwQWdCU0FCU3cwQklBVkJJRVlFUUVIb0N4QWNCVUhvQzBISUJFSG9DeEFVQ3lBRFFlZ0xRWWdNRUJRZ0FrR0lEQ0FDRUJBZ0EwRWdhaUVESUFWQklHb2hCUXdBQ3dzZ0FVRWdjQ0VFSUFSRkJFQVBDMEdJREJBQlFRQWhCZ0pBQTBBZ0JpQUVSZzBCSUFZZ0F5MEFBRG9BaUF3Z0EwRUJhaUVESUFaQkFXb2hCZ3dBQ3dzZ0JVRWdSZ1JBUWVnTEVCd0ZRZWdMUWNnRVFlZ0xFQlFMUVlnTVFlZ0xRWWdNRUJRZ0FrR0lEQ0FDRUJBTEhBQWdBU0FDUWFnTUVCMUJxQXhCcUF3UUZ5QUFRYWdNSUFNUUZBdjRBUVFCZndGL0FYOEJmMEVBS0FJQUlRVkJBQ0FGSUFKQkFXcEJJR3hxTmdJQUlBVVFIQ0FBSVFZZ0JVRWdhaUVGUVFBaENBSkFBMEFnQ0NBQ1JnMEJJQVlRQWdSQUlBVkJJR3NnQlJBQUJTQUdJQVZCSUdzZ0JSQVVDeUFHSUFGcUlRWWdCVUVnYWlFRklBaEJBV29oQ0F3QUN3c2dCaUFCYXlFR0lBVkJJR3NoQlNBRElBSkJBV3NnQkd4cUlRY2dCU0FGRUJzQ1FBTkFJQWhGRFFFZ0JoQUNCRUFnQlNBRlFTQnJFQUFnQnhBQkJTQUZRU0JyUWNnTUVBQWdCU0FHSUFWQklHc1FGQ0FGUWNnTUlBY1FGQXNnQmlBQmF5RUdJQWNnQkdzaEJ5QUZRU0JySVFVZ0NFRUJheUVJREFBTEMwRUFJQVUyQWdBTFBnTUJmd0YvQVg4Z0FDRUVJQUloQlVFQUlRTUNRQU5BSUFNZ0FVWU5BU0FFSUFVUUZ5QUVRU0JxSVFRZ0JVRWdhaUVGSUFOQkFXb2hBd3dBQ3dzTFBnTUJmd0YvQVg4Z0FDRUVJQUloQlVFQUlRTUNRQU5BSUFNZ0FVWU5BU0FFSUFVUUdDQUVRU0JxSVFRZ0JVRWdhaUVGSUFOQkFXb2hBd3dBQ3dzTHNnSUNBWDhCZnlBQ1JRUkFJQU1RSEE4TElBQkI2QXdRQUNBREVCd2dBaUVFQWtBRFFDQUVRUUZySVFRZ0FTQUVhaTBBQUNFRklBTWdBeEFWSUFWQmdBRlBCRUFnQlVHQUFXc2hCU0FEUWVnTUlBTVFGQXNnQXlBREVCVWdCVUhBQUU4RVFDQUZRY0FBYXlFRklBTkI2QXdnQXhBVUN5QURJQU1RRlNBRlFTQlBCRUFnQlVFZ2F5RUZJQU5CNkF3Z0F4QVVDeUFESUFNUUZTQUZRUkJQQkVBZ0JVRVFheUVGSUFOQjZBd2dBeEFVQ3lBRElBTVFGU0FGUVFoUEJFQWdCVUVJYXlFRklBTkI2QXdnQXhBVUN5QURJQU1RRlNBRlFRUlBCRUFnQlVFRWF5RUZJQU5CNkF3Z0F4QVVDeUFESUFNUUZTQUZRUUpQQkVBZ0JVRUNheUVGSUFOQjZBd2dBeEFVQ3lBRElBTVFGU0FGUVFGUEJFQWdCVUVCYXlFRklBTkI2QXdnQXhBVUN5QUVSUTBCREFBTEN3dmVBUU1CZndGL0FYOGdBQkFDQkVBZ0FSQUJEd3RCQVNFQ1FhZ0dRWWdORUFBZ0FFR0lCa0VnUWFnTkVDSWdBRUhJQmtFZ1FjZ05FQ0lDUUFOQVFhZ05RZWdFRUFRTkFVR29EVUhvRFJBVlFRRWhBd0pBQTBCQjZBMUI2QVFRQkEwQlFlZ05RZWdORUJVZ0EwRUJhaUVEREFBTEMwR0lEVUdJRGhBQUlBSWdBMnRCQVdzaEJBSkFBMEFnQkVVTkFVR0lEa0dJRGhBVklBUkJBV3NoQkF3QUN3c2dBeUVDUVlnT1FZZ05FQlZCcUExQmlBMUJxQTBRRkVISURVR0lEa0hJRFJBVURBQUxDMEhJRFJBWkJFQkJ5QTBnQVJBU0JVSElEU0FCRUFBTEN5QUFJQUFRQWdSQVFRRVBDeUFBUWFnRlFTQkJxQTRRSWtHb0RrSG9CQkFFQ3dvQUlBQkJxQThRQkE4TExBQWdBQ0FCSUFJUUJnUkFJQUpCeUE0Z0FoQUhHZ1VnQWtISURoQUZCRUFnQWtISURpQUNFQWNhQ3dzTEZ3QWdBQ0FCSUFJUUJ3UkFJQUpCeUE0Z0FoQUdHZ3NMQ3dCQnlBOGdBQ0FCRUNjTG5CRURBWDRCZmdGK1F2Ly8vLzhPSVFKQ0FDRURJQUExQWdBZ0FuNUMvLy8vL3crRElRUWdBRFVDQUNBRFFpQ0lmRUhJRGpVQ0FDQUVmbndoQXlBQUlBTStBZ0FnQURVQ0JDQURRaUNJZkVISURqVUNCQ0FFZm53aEF5QUFJQU0rQWdRZ0FEVUNDQ0FEUWlDSWZFSElEalVDQ0NBRWZud2hBeUFBSUFNK0FnZ2dBRFVDRENBRFFpQ0lmRUhJRGpVQ0RDQUVmbndoQXlBQUlBTStBZ3dnQURVQ0VDQURRaUNJZkVISURqVUNFQ0FFZm53aEF5QUFJQU0rQWhBZ0FEVUNGQ0FEUWlDSWZFSElEalVDRkNBRWZud2hBeUFBSUFNK0FoUWdBRFVDR0NBRFFpQ0lmRUhJRGpVQ0dDQUVmbndoQXlBQUlBTStBaGdnQURVQ0hDQURRaUNJZkVISURqVUNIQ0FFZm53aEF5QUFJQU0rQWh4QnFCRWdBMElnaUQ0Q0FFSUFJUU1nQURVQ0JDQUNma0wvLy8vL0Q0TWhCQ0FBTlFJRUlBTkNJSWg4UWNnT05RSUFJQVIrZkNFRElBQWdBejRDQkNBQU5RSUlJQU5DSUloOFFjZ09OUUlFSUFSK2ZDRURJQUFnQXo0Q0NDQUFOUUlNSUFOQ0lJaDhRY2dPTlFJSUlBUitmQ0VESUFBZ0F6NENEQ0FBTlFJUUlBTkNJSWg4UWNnT05RSU1JQVIrZkNFRElBQWdBejRDRUNBQU5RSVVJQU5DSUloOFFjZ09OUUlRSUFSK2ZDRURJQUFnQXo0Q0ZDQUFOUUlZSUFOQ0lJaDhRY2dPTlFJVUlBUitmQ0VESUFBZ0F6NENHQ0FBTlFJY0lBTkNJSWg4UWNnT05RSVlJQVIrZkNFRElBQWdBejRDSENBQU5RSWdJQU5DSUloOFFjZ09OUUljSUFSK2ZDRURJQUFnQXo0Q0lFR29FU0FEUWlDSVBnSUVRZ0FoQXlBQU5RSUlJQUorUXYvLy8vOFBneUVFSUFBMUFnZ2dBMElnaUh4QnlBNDFBZ0FnQkg1OElRTWdBQ0FEUGdJSUlBQTFBZ3dnQTBJZ2lIeEJ5QTQxQWdRZ0JINThJUU1nQUNBRFBnSU1JQUExQWhBZ0EwSWdpSHhCeUE0MUFnZ2dCSDU4SVFNZ0FDQURQZ0lRSUFBMUFoUWdBMElnaUh4QnlBNDFBZ3dnQkg1OElRTWdBQ0FEUGdJVUlBQTFBaGdnQTBJZ2lIeEJ5QTQxQWhBZ0JINThJUU1nQUNBRFBnSVlJQUExQWh3Z0EwSWdpSHhCeUE0MUFoUWdCSDU4SVFNZ0FDQURQZ0ljSUFBMUFpQWdBMElnaUh4QnlBNDFBaGdnQkg1OElRTWdBQ0FEUGdJZ0lBQTFBaVFnQTBJZ2lIeEJ5QTQxQWh3Z0JINThJUU1nQUNBRFBnSWtRYWdSSUFOQ0lJZytBZ2hDQUNFRElBQTFBZ3dnQW41Qy8vLy8vdytESVFRZ0FEVUNEQ0FEUWlDSWZFSElEalVDQUNBRWZud2hBeUFBSUFNK0Fnd2dBRFVDRUNBRFFpQ0lmRUhJRGpVQ0JDQUVmbndoQXlBQUlBTStBaEFnQURVQ0ZDQURRaUNJZkVISURqVUNDQ0FFZm53aEF5QUFJQU0rQWhRZ0FEVUNHQ0FEUWlDSWZFSElEalVDRENBRWZud2hBeUFBSUFNK0FoZ2dBRFVDSENBRFFpQ0lmRUhJRGpVQ0VDQUVmbndoQXlBQUlBTStBaHdnQURVQ0lDQURRaUNJZkVISURqVUNGQ0FFZm53aEF5QUFJQU0rQWlBZ0FEVUNKQ0FEUWlDSWZFSElEalVDR0NBRWZud2hBeUFBSUFNK0FpUWdBRFVDS0NBRFFpQ0lmRUhJRGpVQ0hDQUVmbndoQXlBQUlBTStBaWhCcUJFZ0EwSWdpRDRDREVJQUlRTWdBRFVDRUNBQ2ZrTC8vLy8vRDRNaEJDQUFOUUlRSUFOQ0lJaDhRY2dPTlFJQUlBUitmQ0VESUFBZ0F6NENFQ0FBTlFJVUlBTkNJSWg4UWNnT05RSUVJQVIrZkNFRElBQWdBejRDRkNBQU5RSVlJQU5DSUloOFFjZ09OUUlJSUFSK2ZDRURJQUFnQXo0Q0dDQUFOUUljSUFOQ0lJaDhRY2dPTlFJTUlBUitmQ0VESUFBZ0F6NENIQ0FBTlFJZ0lBTkNJSWg4UWNnT05RSVFJQVIrZkNFRElBQWdBejRDSUNBQU5RSWtJQU5DSUloOFFjZ09OUUlVSUFSK2ZDRURJQUFnQXo0Q0pDQUFOUUlvSUFOQ0lJaDhRY2dPTlFJWUlBUitmQ0VESUFBZ0F6NENLQ0FBTlFJc0lBTkNJSWg4UWNnT05RSWNJQVIrZkNFRElBQWdBejRDTEVHb0VTQURRaUNJUGdJUVFnQWhBeUFBTlFJVUlBSitRdi8vLy84UGd5RUVJQUExQWhRZ0EwSWdpSHhCeUE0MUFnQWdCSDU4SVFNZ0FDQURQZ0lVSUFBMUFoZ2dBMElnaUh4QnlBNDFBZ1FnQkg1OElRTWdBQ0FEUGdJWUlBQTFBaHdnQTBJZ2lIeEJ5QTQxQWdnZ0JINThJUU1nQUNBRFBnSWNJQUExQWlBZ0EwSWdpSHhCeUE0MUFnd2dCSDU4SVFNZ0FDQURQZ0lnSUFBMUFpUWdBMElnaUh4QnlBNDFBaEFnQkg1OElRTWdBQ0FEUGdJa0lBQTFBaWdnQTBJZ2lIeEJ5QTQxQWhRZ0JINThJUU1nQUNBRFBnSW9JQUExQWl3Z0EwSWdpSHhCeUE0MUFoZ2dCSDU4SVFNZ0FDQURQZ0lzSUFBMUFqQWdBMElnaUh4QnlBNDFBaHdnQkg1OElRTWdBQ0FEUGdJd1FhZ1JJQU5DSUlnK0FoUkNBQ0VESUFBMUFoZ2dBbjVDLy8vLy93K0RJUVFnQURVQ0dDQURRaUNJZkVISURqVUNBQ0FFZm53aEF5QUFJQU0rQWhnZ0FEVUNIQ0FEUWlDSWZFSElEalVDQkNBRWZud2hBeUFBSUFNK0Fod2dBRFVDSUNBRFFpQ0lmRUhJRGpVQ0NDQUVmbndoQXlBQUlBTStBaUFnQURVQ0pDQURRaUNJZkVISURqVUNEQ0FFZm53aEF5QUFJQU0rQWlRZ0FEVUNLQ0FEUWlDSWZFSElEalVDRUNBRWZud2hBeUFBSUFNK0FpZ2dBRFVDTENBRFFpQ0lmRUhJRGpVQ0ZDQUVmbndoQXlBQUlBTStBaXdnQURVQ01DQURRaUNJZkVISURqVUNHQ0FFZm53aEF5QUFJQU0rQWpBZ0FEVUNOQ0FEUWlDSWZFSElEalVDSENBRWZud2hBeUFBSUFNK0FqUkJxQkVnQTBJZ2lENENHRUlBSVFNZ0FEVUNIQ0FDZmtMLy8vLy9ENE1oQkNBQU5RSWNJQU5DSUloOFFjZ09OUUlBSUFSK2ZDRURJQUFnQXo0Q0hDQUFOUUlnSUFOQ0lJaDhRY2dPTlFJRUlBUitmQ0VESUFBZ0F6NENJQ0FBTlFJa0lBTkNJSWg4UWNnT05RSUlJQVIrZkNFRElBQWdBejRDSkNBQU5RSW9JQU5DSUloOFFjZ09OUUlNSUFSK2ZDRURJQUFnQXo0Q0tDQUFOUUlzSUFOQ0lJaDhRY2dPTlFJUUlBUitmQ0VESUFBZ0F6NENMQ0FBTlFJd0lBTkNJSWg4UWNnT05RSVVJQVIrZkNFRElBQWdBejRDTUNBQU5RSTBJQU5DSUloOFFjZ09OUUlZSUFSK2ZDRURJQUFnQXo0Q05DQUFOUUk0SUFOQ0lJaDhRY2dPTlFJY0lBUitmQ0VESUFBZ0F6NENPRUdvRVNBRFFpQ0lQZ0ljUWFnUklBQkJJR29nQVJBbUM3NGZJd0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNUMvLy8vL3c0aEJTQURRdi8vLy84UGd5QUFOUUlBSWdZZ0FUVUNBQ0lIZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJUWdnQTBMLy8vLy9ENE5CQURVQ3lBNGlDU0FJZm53aEF5QUVJQU5DSUloOElRUWdCRUlnaUNFRElBUkMvLy8vL3crRElBWWdBVFVDQkNJTGZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQURVQ0JDSUtJQWQrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGcwRUFOUUxNRGlJTklBaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaERDQUVRdi8vLy84UGd5QUpJQXgrZkNFRUlBTWdCRUlnaUh3aEF5QURRaUNJSVFRZ0EwTC8vLy8vRDRNZ0JpQUJOUUlJSWc5K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFLSUF0K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFBTlFJSUlnNGdCMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBMGdESDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRFFRQTFBdEFPSWhFZ0NINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUFWK1F2Ly8vLzhQZ3lFUUlBTkMvLy8vL3crRElBa2dFSDU4SVFNZ0JDQURRaUNJZkNFRUlBUkNJSWdoQXlBRVF2Ly8vLzhQZ3lBR0lBRTFBZ3dpRTM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQW9nRDM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQTRnQzM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQUExQWd3aUVpQUhmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RTQVFmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VTQU1mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDROQkFEVUMxQTRpRlNBSWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQlg1Qy8vLy8vdytESVJRZ0JFTC8vLy8vRDRNZ0NTQVVmbndoQkNBRElBUkNJSWg4SVFNZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUFZZ0FUVUNFQ0lYZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdDaUFUZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEaUFQZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdFaUFMZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdBRFVDRUNJV0lBZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBTklCUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUklCQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBVklBeCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZzBFQU5RTFlEaUlaSUFoK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFGZmtMLy8vLy9ENE1oR0NBRFF2Ly8vLzhQZ3lBSklCaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nQmlBQk5RSVVJaHQrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUtJQmQrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QU9JQk4rZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QVNJQTkrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QVdJQXQrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUFOUUlVSWhvZ0IzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUEwZ0dINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJFZ0ZINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJVZ0VINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJrZ0RINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytEUVFBMUF0d09JaDBnQ0g1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQVYrUXYvLy8vOFBneUVjSUFSQy8vLy8vdytESUFrZ0hINThJUVFnQXlBRVFpQ0lmQ0VESUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFHSUFFMUFoZ2lIMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBb2dHMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBNGdGMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCSWdFMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCWWdEMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCb2dDMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBQTFBaGdpSGlBSGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRFNBY2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRVNBWWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRlNBVWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nR1NBUWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSFNBTWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE5CQURVQzRBNGlJU0FJZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJU0FnQTBMLy8vLy9ENE1nQ1NBZ2Zud2hBeUFFSUFOQ0lJaDhJUVFnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVlnQVRVQ0hDSWpmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0NpQWZmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RpQWJmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VpQVhmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ZpQVRmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dpQVBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hpQUxmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNIQ0lpSUFkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFOSUNCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFSSUJ4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFWSUJoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFaSUJSK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFkSUJCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFoSUF4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBnMEVBTlFMa0RpSWxJQWgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUZma0wvLy8vL0Q0TWhKQ0FFUXYvLy8vOFBneUFKSUNSK2ZDRUVJQU1nQkVJZ2lId2hBeUFEUWlDSUlRUWdBMEwvLy8vL0Q0TWdDaUFqZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEaUFmZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdFaUFiZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdGaUFYZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdHaUFUZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdIaUFQZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdJaUFMZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEU0FrZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdFU0FnZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdGU0FjZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdHU0FZZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdIU0FVZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdJU0FRZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdKU0FNZm53aEF5QUVJQU5DSUloOElRUWdBaUFEUGdJQUlBUkNJSWdoQXlBRVF2Ly8vLzhQZ3lBT0lDTitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBU0lCOStmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBV0lCdCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBYUlCZCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBZUlCTitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBaUlBOStmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBUklDUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBVklDQitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBWklCeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBZElCaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBaElCUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBbElCQitmQ0VFSUFNZ0JFSWdpSHdoQXlBQ0lBUStBZ1FnQTBJZ2lDRUVJQU5DLy8vLy93K0RJQklnSTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQllnSDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQm9nRzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjRnRjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0lnRTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQlVnSkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQmtnSUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjBnSEg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0VnR0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ1VnRkg1OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q0NDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0ZpQWpmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dpQWZmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hpQWJmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lpQVhmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dTQWtmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hTQWdmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lTQWNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0pTQVlmbndoQkNBRElBUkNJSWg4SVFNZ0FpQUVQZ0lNSUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFhSUNOK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFlSUI5K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFpSUJ0K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFkSUNSK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFoSUNCK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFsSUJ4K2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FoQWdCRUlnaUNFRElBUkMvLy8vL3crRElCNGdJMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDSWdIMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDRWdKSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDVWdJSDU4SVFRZ0F5QUVRaUNJZkNFRElBSWdCRDRDRkNBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nSWlBamZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSlNBa2Zud2hBeUFFSUFOQ0lJaDhJUVFnQWlBRFBnSVlJQVJDSUlnaEF5QUNJQVErQWh3Z0E2Y0VRQ0FDUWNnT0lBSVFCeG9GSUFKQnlBNFFCUVJBSUFKQnlBNGdBaEFIR2dzTEM3c2hIUUYrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg1Qy8vLy8vdzRoQmtJQUlRSkNBQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFBMUFnQWlCeUFIZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUWdnQWtMLy8vLy9ENE5CQURVQ3lBNGlDU0FJZm53aEFpQURJQUpDSUloOElRTWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnQURVQ0JDSUtmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytEUVFBMUFzd09JZ3dnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVMSUFKQy8vLy8vdytESUFrZ0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBSElBQTFBZ2dpRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nQ241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QU1JQXQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwRUFOUUxRRGlJUElBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaERpQUNRdi8vLy84UGd5QUpJQTUrZkNFQ0lBTWdBa0lnaUh3aEF5QURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCeUFBTlFJTUloQitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBS0lBMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nRENBT2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRHlBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5CQURVQzFBNGlFaUFJZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUkVnQWtMLy8vLy9ENE1nQ1NBUmZud2hBaUFESUFKQ0lJaDhJUU1nQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFjZ0FEVUNFQ0lUZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFRZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBd2dFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFRQTFBdGdPSWhVZ0NINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFaK1F2Ly8vLzhQZ3lFVUlBSkMvLy8vL3crRElBa2dGSDU4SVFJZ0F5QUNRaUNJZkNFRElBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUhJQUExQWhRaUZuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0UzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFNSUJSK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFQSUJGK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFTSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFWSUF0K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMEVBTlFMY0RpSVlJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUdma0wvLy8vL0Q0TWhGeUFDUXYvLy8vOFBneUFKSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQnlBQU5RSVlJaGwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUtJQlorZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QU5JQk4rZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVFJQkIrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FrTC8vLy8vRDRNZ0RDQVhmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0R5QVVmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VpQVJmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZTQU9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dDQUxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQkFEVUM0QTRpR3lBSWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQm41Qy8vLy8vdytESVJvZ0FrTC8vLy8vRDRNZ0NTQWFmbndoQWlBRElBSkNJSWg4SVFNZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBY2dBRFVDSENJY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ2lBWmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRFNBV2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRUNBVGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQXdnR241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQThnRjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQklnRkg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQlVnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQmdnRG41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQnNnQzM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRUUExQXVRT0loNGdDSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBWitRdi8vLy84UGd5RWRJQUpDLy8vLy93K0RJQWtnSFg1OElRSWdBeUFDUWlDSWZDRURJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFLSUJ4K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFOSUJsK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFRSUJaK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFUSUJOK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TWdEQ0FkZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEeUFhZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFaUFYZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdGU0FVZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHQ0FSZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHeUFPZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdIaUFMZm53aEFpQURJQUpDSUloOElRTWdBU0FDUGdJQUlBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QU5JQngrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVFJQmwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVRJQlorZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FrTC8vLy8vRDRNZ0R5QWRmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VpQWFmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZTQVhmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dDQVVmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0d5QVJmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0hpQU9mbndoQWlBRElBSkNJSWg4SVFNZ0FTQUNQZ0lFSUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBUUlCeCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBVElCbCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBV0lCWitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nRWlBZGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRlNBYWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nR0NBWGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nR3lBVWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSGlBUmZud2hBaUFESUFKQ0lJaDhJUU1nQVNBQ1BnSUlJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFUSUJ4K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFXSUJsK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TWdGU0FkZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHQ0FhZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHeUFYZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdIaUFVZm53aEFpQURJQUpDSUloOElRTWdBU0FDUGdJTUlBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QVdJQngrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVpJQmwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FrTC8vLy8vRDRNZ0dDQWRmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0d5QWFmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0hpQVhmbndoQWlBRElBSkNJSWg4SVFNZ0FTQUNQZ0lRSUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBWklCeCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nR3lBZGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSGlBYWZud2hBaUFESUFKQ0lJaDhJUU1nQVNBQ1BnSVVJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFjSUJ4K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TWdIaUFkZm53aEFpQURJQUpDSUloOElRTWdBU0FDUGdJWUlBTWhCQ0FFUWlDSUlRVWdBU0FFUGdJY0lBV25CRUFnQVVISURpQUJFQWNhQlNBQlFjZ09FQVVFUUNBQlFjZ09JQUVRQnhvTEN3c0tBQ0FBSUFBZ0FSQXFDd3NBSUFCQmlBOGdBUkFxQ3hVQUlBQkJxQlVRQUVISUZSQUJRYWdWSUFFUUtRc1JBQ0FBUWVnVkVDNUI2QlZCaUJBUUJRc2tBQ0FBRUFJRVFFRUFEd3NnQUVHSUZoQXVRWWdXUVlnUUVBVUVRRUYvRHd0QkFROExGd0FnQUNBQkVDNGdBVUhJRGlBQkVBNGdBU0FCRUMwTENRQkJxQThnQUJBQUM4c0JCQUYvQVg4QmZ3Ri9JQUlRQVVFZ0lRVWdBQ0VEQWtBRFFDQUZJQUZMRFFFZ0JVRWdSZ1JBUWFnV0VESUZRYWdXUVlnUFFhZ1dFQ29MSUFOQnFCWkJ5QllRS2lBQ1FjZ1dJQUlRSmlBRFFTQnFJUU1nQlVFZ2FpRUZEQUFMQ3lBQlFTQndJUVFnQkVVRVFBOExRY2dXRUFGQkFDRUdBa0FEUUNBR0lBUkdEUUVnQmlBRExRQUFPZ0RJRmlBRFFRRnFJUU1nQmtFQmFpRUdEQUFMQ3lBRlFTQkdCRUJCcUJZUU1nVkJxQlpCaUE5QnFCWVFLZ3RCeUJaQnFCWkJ5QllRS2lBQ1FjZ1dJQUlRSmdzY0FDQUJJQUpCNkJZUU0wSG9Ga0hvRmhBdElBQkI2QllnQXhBcUMvZ0JCQUYvQVg4QmZ3Ri9RUUFvQWdBaEJVRUFJQVVnQWtFQmFrRWdiR28yQWdBZ0JSQXlJQUFoQmlBRlFTQnFJUVZCQUNFSUFrQURRQ0FJSUFKR0RRRWdCaEFDQkVBZ0JVRWdheUFGRUFBRklBWWdCVUVnYXlBRkVDb0xJQVlnQVdvaEJpQUZRU0JxSVFVZ0NFRUJhaUVJREFBTEN5QUdJQUZySVFZZ0JVRWdheUVGSUFNZ0FrRUJheUFFYkdvaEJ5QUZJQVVRTVFKQUEwQWdDRVVOQVNBR0VBSUVRQ0FGSUFWQklHc1FBQ0FIRUFFRklBVkJJR3RCaUJjUUFDQUZJQVlnQlVFZ2F4QXFJQVZCaUJjZ0J4QXFDeUFHSUFGcklRWWdCeUFFYXlFSElBVkJJR3NoQlNBSVFRRnJJUWdNQUFzTFFRQWdCVFlDQUFzK0F3Ri9BWDhCZnlBQUlRUWdBaUVGUVFBaEF3SkFBMEFnQXlBQlJnMEJJQVFnQlJBdElBUkJJR29oQkNBRlFTQnFJUVVnQTBFQmFpRUREQUFMQ3dzK0F3Ri9BWDhCZnlBQUlRUWdBaUVGUVFBaEF3SkFBMEFnQXlBQlJnMEJJQVFnQlJBdUlBUkJJR29oQkNBRlFTQnFJUVVnQTBFQmFpRUREQUFMQ3d1eUFnSUJmd0YvSUFKRkJFQWdBeEF5RHdzZ0FFR29GeEFBSUFNUU1pQUNJUVFDUUFOQUlBUkJBV3NoQkNBQklBUnFMUUFBSVFVZ0F5QURFQ3NnQlVHQUFVOEVRQ0FGUVlBQmF5RUZJQU5CcUJjZ0F4QXFDeUFESUFNUUt5QUZRY0FBVHdSQUlBVkJ3QUJySVFVZ0EwR29GeUFERUNvTElBTWdBeEFySUFWQklFOEVRQ0FGUVNCcklRVWdBMEdvRnlBREVDb0xJQU1nQXhBcklBVkJFRThFUUNBRlFSQnJJUVVnQTBHb0Z5QURFQ29MSUFNZ0F4QXJJQVZCQ0U4RVFDQUZRUWhySVFVZ0EwR29GeUFERUNvTElBTWdBeEFySUFWQkJFOEVRQ0FGUVFScklRVWdBMEdvRnlBREVDb0xJQU1nQXhBcklBVkJBazhFUUNBRlFRSnJJUVVnQTBHb0Z5QURFQ29MSUFNZ0F4QXJJQVZCQVU4RVFDQUZRUUZySVFVZ0EwR29GeUFERUNvTElBUkZEUUVNQUFzTEM5NEJBd0YvQVg4QmZ5QUFFQUlFUUNBQkVBRVBDMEVjSVFKQjZCQkJ5QmNRQUNBQVFjZ1FRU0JCNkJjUU9DQUFRWWdSUVNCQmlCZ1FPQUpBQTBCQjZCZEJxQThRQkEwQlFlZ1hRYWdZRUN0QkFTRURBa0FEUUVHb0dFR29EeEFFRFFGQnFCaEJxQmdRS3lBRFFRRnFJUU1NQUFzTFFjZ1hRY2dZRUFBZ0FpQURhMEVCYXlFRUFrQURRQ0FFUlEwQlFjZ1lRY2dZRUNzZ0JFRUJheUVFREFBTEN5QURJUUpCeUJoQnlCY1FLMEhvRjBISUYwSG9GeEFxUVlnWVFjZ1lRWWdZRUNvTUFBc0xRWWdZRUM4RVFFR0lHQ0FCRUNnRlFZZ1lJQUVRQUFzTElBQWdBQkFDQkVCQkFROExJQUJCNkE5QklFSG9HQkE0UWVnWVFhZ1BFQVFMRlFBZ0FDQUJRWWdaRUNwQmlCbEJpQThnQWhBcUN3b0FJQUFnQUNBQkVEc0xDd0FnQUVISURpQUJFQTRMQ1FBZ0FFR0lFQkFGQ3c0QUlBQVFBaUFBUVNCcUVBSnhDd29BSUFCQndBQnFFQUlMRFFBZ0FCQUJJQUJCSUdvUUFRc1ZBQ0FBRUFFZ0FFRWdhaEFjSUFCQndBQnFFQUVMVWdBZ0FTQUFLUU1BTndNQUlBRWdBQ2tEQ0RjRENDQUJJQUFwQXhBM0F4QWdBU0FBS1FNWU53TVlJQUVnQUNrRElEY0RJQ0FCSUFBcEF5ZzNBeWdnQVNBQUtRTXdOd013SUFFZ0FDa0RPRGNET0F0NkFDQUJJQUFwQXdBM0F3QWdBU0FBS1FNSU53TUlJQUVnQUNrREVEY0RFQ0FCSUFBcEF4ZzNBeGdnQVNBQUtRTWdOd01nSUFFZ0FDa0RLRGNES0NBQklBQXBBekEzQXpBZ0FTQUFLUU00TndNNElBRWdBQ2tEUURjRFFDQUJJQUFwQTBnM0EwZ2dBU0FBS1FOUU53TlFJQUVnQUNrRFdEY0RXQXNjQUNBQlFjQUFhaEFjSUFCQklHb2dBVUVnYWhBQUlBQWdBUkFBQ3hnQkFYOGdBQ0FCRUFRZ0FFRWdhaUFCUVNCcUVBUnhEd3QxQVFGL0lBQkJ3QUJxSVFJZ0FCQkFCRUFnQVJBL0R3c2dBUkEvQkVCQkFBOExJQUlRRHdSQUlBQWdBUkJHRHdzZ0FrSElHUkFWSUFGQnlCbEI2QmtRRkNBQ1FjZ1pRWWdhRUJRZ0FVRWdha0dJR2tHb0doQVVJQUJCNkJrUUJBUkFJQUJCSUdwQnFCb1FCQVJBUVFFUEN3dEJBQThMdEFFQ0FYOEJmeUFBUWNBQWFpRUNJQUZCd0FCcUlRTWdBQkJBQkVBZ0FSQkFEd3NnQVJCQUJFQkJBQThMSUFJUUR3UkFJQUVnQUJCSER3c2dBeEFQQkVBZ0FDQUJFRWNQQ3lBQ1FjZ2FFQlVnQTBIb0doQVZJQUJCNkJwQmlCc1FGQ0FCUWNnYVFhZ2JFQlFnQWtISUdrSElHeEFVSUFOQjZCcEI2QnNRRkNBQVFTQnFRZWdiUVlnY0VCUWdBVUVnYWtISUcwR29IQkFVUVlnYlFhZ2JFQVFFUUVHSUhFR29IQkFFQkVCQkFROExDMEVBRHd2b0FRQWdBQkEvQkVBZ0FDQUJFRVVQQ3lBQVFjZ2NFQlVnQUVFZ2FrSG9IQkFWUWVnY1FZZ2RFQlVnQUVIb0hFR29IUkFRUWFnZFFhZ2RFQlZCcUIxQnlCeEJxQjBRRVVHb0hVR0lIVUdvSFJBUlFhZ2RRYWdkUWFnZEVCQkJ5QnhCeUJ4QnlCMFFFRUhJSFVISUhFSElIUkFRSUFCQklHb2dBRUVnYWlBQlFjQUFhaEFRUWNnZElBRVFGU0FCUWFnZElBRVFFU0FCUWFnZElBRVFFVUdJSFVHSUhVSG9IUkFRUWVnZFFlZ2RRZWdkRUJCQjZCMUI2QjFCNkIwUUVFR29IU0FCSUFGQklHb1FFU0FCUVNCcVFjZ2RJQUZCSUdvUUZDQUJRU0JxUWVnZElBRkJJR29RRVF1SkFnQWdBQkJBQkVBZ0FDQUJFRVFQQ3lBQVFjQUFhaEFQQkVBZ0FDQUJFRWtQRHdzZ0FFR0lIaEFWSUFCQklHcEJxQjRRRlVHb0hrSElIaEFWSUFCQnFCNUI2QjRRRUVIb0hrSG9IaEFWUWVnZVFZZ2VRZWdlRUJGQjZCNUJ5QjVCNkI0UUVVSG9Ia0hvSGtIb0hoQVFRWWdlUVlnZVFZZ2ZFQkJCaUI5QmlCNUJpQjhRRUVHSUgwR29IeEFWSUFCQklHb2dBRUhBQUdwQnlCOFFGRUhvSGtIb0hpQUJFQkJCcUI4Z0FTQUJFQkZCeUI1QnlCNUI2QjhRRUVIb0gwSG9IMEhvSHhBUVFlZ2ZRZWdmUWVnZkVCQkI2QjRnQVNBQlFTQnFFQkVnQVVFZ2FrR0lIeUFCUVNCcUVCUWdBVUVnYWtIb0h5QUJRU0JxRUJGQnlCOUJ5QjhnQVVIQUFHb1FFQXVqQWdFQmZ5QUFRY0FBYWlFRElBQVFQd1JBSUFFZ0FoQkRJQUpCd0FCcUVCd1BDeUFCRUQ4RVFDQUFJQUlRUXlBQ1FjQUFhaEFjRHdzZ0FDQUJFQVFFUUNBQVFTQnFJQUZCSUdvUUJBUkFJQUVnQWhCSkR3c0xJQUVnQUVHSUlCQVJJQUZCSUdvZ0FFRWdha0hJSUJBUlFZZ2dRYWdnRUJWQnFDQkJxQ0JCNkNBUUVFSG9JRUhvSUVIb0lCQVFRWWdnUWVnZ1FZZ2hFQlJCeUNCQnlDQkJxQ0VRRUNBQVFlZ2dRZWdoRUJSQnFDRkJ5Q0VRRlVIb0lVSG9JVUdJSWhBUVFjZ2hRWWdoSUFJUUVTQUNRWWdpSUFJUUVTQUFRU0JxUVlnaFFhZ2lFQlJCcUNKQnFDSkJxQ0lRRUVIb0lTQUNJQUpCSUdvUUVTQUNRU0JxUWFnaElBSkJJR29RRkNBQ1FTQnFRYWdpSUFKQklHb1FFVUdJSUVHSUlDQUNRY0FBYWhBUUM0QURBUUYvSUFCQndBQnFJUU1nQUJCQUJFQWdBU0FDRUVNZ0FrSEFBR29RSEE4TElBRVFQd1JBSUFBZ0FoQkVEd3NnQXhBUEJFQWdBQ0FCSUFJUVN3OExJQU5CeUNJUUZTQUJRY2dpUWVnaUVCUWdBMEhJSWtHSUl4QVVJQUZCSUdwQmlDTkJxQ01RRkNBQVFlZ2lFQVFFUUNBQVFTQnFRYWdqRUFRRVFDQUJJQUlRU1E4TEMwSG9JaUFBUWNnakVCRkJxQ01nQUVFZ2FrR0lKQkFSUWNnalFlZ2pFQlZCNkNOQjZDTkJxQ1FRRUVHb0pFR29KRUdvSkJBUVFjZ2pRYWdrUWNna0VCUkJpQ1JCaUNSQjZDUVFFQ0FBUWFna1FhZ2xFQlJCNkNSQmlDVVFGVUdvSlVHb0pVSElKUkFRUVlnbFFjZ2tJQUlRRVNBQ1FjZ2xJQUlRRVNBQVFTQnFRY2drUWVnbEVCUkI2Q1ZCNkNWQjZDVVFFRUdvSlNBQ0lBSkJJR29RRVNBQ1FTQnFRZWdrSUFKQklHb1FGQ0FDUVNCcVFlZ2xJQUpCSUdvUUVTQURRY2dqSUFKQndBQnFFQkFnQWtIQUFHb2dBa0hBQUdvUUZTQUNRY0FBYWtISUlpQUNRY0FBYWhBUklBSkJ3QUJxUWVnaklBSkJ3QUJxRUJFTHZBTUNBWDhCZnlBQVFjQUFhaUVESUFGQndBQnFJUVFnQUJCQUJFQWdBU0FDRUVRUEN5QUJFRUFFUUNBQUlBSVFSQThMSUFNUUR3UkFJQUVnQUNBQ0VFd1BDeUFFRUE4RVFDQUFJQUVnQWhCTUR3c2dBMEdJSmhBVklBUkJxQ1lRRlNBQVFhZ21RY2dtRUJRZ0FVR0lKa0hvSmhBVUlBTkJpQ1pCaUNjUUZDQUVRYWdtUWFnbkVCUWdBRUVnYWtHb0owSElKeEFVSUFGQklHcEJpQ2RCNkNjUUZFSElKa0hvSmhBRUJFQkJ5Q2RCNkNjUUJBUkFJQUFnQWhCS0R3c0xRZWdtUWNnbVFZZ29FQkZCNkNkQnlDZEJxQ2dRRVVHSUtFR0lLRUhJS0JBUVFjZ29RY2dvRUJWQmlDaEJ5Q2hCNkNnUUZFR29LRUdvS0VHSUtSQVFRY2dtUWNnb1FjZ3BFQlJCaUNsQnFDa1FGVUhJS1VISUtVSG9LUkFRUWFncFFlZ29JQUlRRVNBQ1FlZ3BJQUlRRVVISUowSG9LRUdJS2hBVVFZZ3FRWWdxUVlncUVCQkJ5Q2tnQWlBQ1FTQnFFQkVnQWtFZ2FrR0lLU0FDUVNCcUVCUWdBa0VnYWtHSUtpQUNRU0JxRUJFZ0F5QUVJQUpCd0FCcUVCQWdBa0hBQUdvZ0FrSEFBR29RRlNBQ1FjQUFha0dJSmlBQ1FjQUFhaEFSSUFKQndBQnFRYWdtSUFKQndBQnFFQkVnQWtIQUFHcEJpQ2dnQWtIQUFHb1FGQXNVQUNBQUlBRVFBQ0FBUVNCcUlBRkJJR29RRWdzaUFDQUFJQUVRQUNBQVFTQnFJQUZCSUdvUUVpQUFRY0FBYWlBQlFjQUFhaEFBQ3hJQUlBRkJxQ29RVGlBQVFhZ3FJQUlRU3dzU0FDQUJRWWdyRUU0Z0FFR0lLeUFDRUV3TEVnQWdBVUhvS3hCUElBQkI2Q3NnQWhCTkN4UUFJQUFnQVJBWUlBQkJJR29nQVVFZ2FoQVlDeUlBSUFBZ0FSQVlJQUJCSUdvZ0FVRWdhaEFZSUFCQndBQnFJQUZCd0FCcUVCZ0xGQUFnQUNBQkVCY2dBRUVnYWlBQlFTQnFFQmNMSWdBZ0FDQUJFQmNnQUVFZ2FpQUJRU0JxRUJjZ0FFSEFBR29nQVVIQUFHb1FGd3RMQUNBQUVFQUVRQ0FCRUFFZ0FVRWdhaEFCQlNBQVFjQUFha0hJTEJBYlFjZ3NRZWdzRUJWQnlDeEI2Q3hCaUMwUUZDQUFRZWdzSUFFUUZDQUFRU0JxUVlndElBRkJJR29RRkFzTHJnRUZBWDhCZndGL0FYOEJmMEVBS0FJQUlRTkJBQ0FESUFGQklHeHFOZ0lBSUFCQndBQnFRZUFBSUFFZ0EwRWdFQjhnQUNFRUlBTWhCU0FDSVFaQkFDRUhBa0FEUUNBSElBRkdEUUVnQlJBQ0JFQWdCaEFCSUFaQklHb1FBUVVnQlNBRVFTQnFRYWd0RUJRZ0JTQUZFQlVnQlNBRUlBWVFGQ0FGUWFndElBWkJJR29RRkFzZ0JFSGdBR29oQkNBR1FjQUFhaUVHSUFWQklHb2hCU0FIUVFGcUlRY01BQXNMUVFBZ0F6WUNBQXRNQUNBQUVFQUVRQ0FCRUVJRklBQkJ3QUJxUWNndEVCdEJ5QzFCNkMwUUZVSElMVUhvTFVHSUxoQVVJQUJCNkMwZ0FSQVVJQUJCSUdwQmlDNGdBVUVnYWhBVUlBRkJ3QUJxRUJ3TEN6c0NBWDhCZnlBQ0lBRnFRUUZySVFNZ0FDRUVBa0FEUUNBRElBSklEUUVnQXlBRUxRQUFPZ0FBSUFOQkFXc2hBeUFFUVFGcUlRUU1BQXNMQ3pJQUlBQVFQd1JBSUFFUVFTQUJRY0FBT2dBQUR3c2dBRUdvTGhCVFFhZ3VRU0FnQVJCYVFjZ3VRU0FnQVVFZ2FoQmFDMEVBSUFBUVFBUkFJQUVRQVNBQlFjQUFPZ0FBRHdzZ0FFSG9MaEFZUWVndVFTQWdBUkJhSUFCQklHb1FHa0YvUmdSQUlBRWdBUzBBQUVHQUFYSTZBQUFMQ3k4QUlBQXRBQUJCd0FCeEJFQWdBUkJCRHdzZ0FFRWdRWWd2RUZvZ0FFRWdha0VnUWFndkVGcEJpQzhnQVJCVkM3SUJBZ0YvQVg4Z0FDMEFBQ0VDSUFKQndBQnhCRUFnQVJCQkR3c2dBa0dBQVhFaEF5QUFRZWd2RUFCQjZDOGdBa0UvY1RvQUFFSG9MMEVnUWNndkVGcEJ5QzhnQVJBWElBRkI2QzhRRlNBQlFlZ3ZRZWd2RUJSQjZDOUJxQmxCNkM4UUVFSG9MMEhvTHhBalFlZ3ZRY2d2RUJKQjZDOFFHa0YvUmdSQUlBTUVRRUhvTHlBQlFTQnFFQUFGUWVndklBRkJJR29RRWdzRklBTUVRRUhvTHlBQlFTQnFFQklGUWVndklBRkJJR29RQUFzTEMwQURBWDhCZndGL0lBQWhCQ0FDSVFWQkFDRURBa0FEUUNBRElBRkdEUUVnQkNBRkVGc2dCRUhBQUdvaEJDQUZRY0FBYWlFRklBTkJBV29oQXd3QUN3c0xQd01CZndGL0FYOGdBQ0VFSUFJaEJVRUFJUU1DUUFOQUlBTWdBVVlOQVNBRUlBVVFYQ0FFUWNBQWFpRUVJQVZCSUdvaEJTQURRUUZxSVFNTUFBc0xDMEFEQVg4QmZ3Ri9JQUFoQkNBQ0lRVkJBQ0VEQWtBRFFDQURJQUZHRFFFZ0JDQUZFRjBnQkVIQUFHb2hCQ0FGUWNBQWFpRUZJQU5CQVdvaEF3d0FDd3NMVWdNQmZ3Ri9BWDhnQUNBQlFRRnJRU0JzYWlFRUlBSWdBVUVCYTBIQUFHeHFJUVZCQUNFREFrQURRQ0FESUFGR0RRRWdCQ0FGRUY0Z0JFRWdheUVFSUFWQndBQnJJUVVnQTBFQmFpRUREQUFMQ3d0VUF3Ri9BWDhCZnlBQUlBRkJBV3RCd0FCc2FpRUVJQUlnQVVFQmEwSGdBR3hxSVFWQkFDRURBa0FEUUNBRElBRkdEUUVnQkNBRkVFVWdCRUhBQUdzaEJDQUZRZUFBYXlFRklBTkJBV29oQXd3QUN3c0xRUUlCZndGL0lBRkJDR3dnQW1zaEJDQURJQVJLQkVCQkFTQUVkRUVCYXlFRkJVRUJJQU4wUVFGcklRVUxJQUFnQWtFRGRtb29BQUFnQWtFSGNYWWdCWEVMbFFFRUFYOEJmd0YvQVg4Z0FVRUJSZ1JBRHd0QkFTQUJRUUZyZENFQ0lBQWhBeUFBSUFKQjRBQnNhaUVFSUFSQjRBQnJJUVVDUUFOQUlBTWdCVVlOQVNBRElBUWdBeEJOSUFVZ0JDQUZFRTBnQTBIZ0FHb2hBeUFFUWVBQWFpRUVEQUFMQ3lBQUlBRkJBV3NRWlNBQlFRRnJJUUVDUUFOQUlBRkZEUUVnQlNBRkVFb2dBVUVCYXlFQkRBQUxDeUFBSUFVZ0FCQk5DOHdCQ2dGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0lBTkZCRUFnQmhCQ0R3dEJBU0FGZENFTlFRQW9BZ0FoRGtFQUlBNGdEVUhnQUd4cU5nSUFRUUFoREFKQUEwQWdEQ0FOUmcwQklBNGdERUhnQUd4cUVFSWdERUVCYWlFTURBQUxDeUFBSVFvZ0FTRUlJQUVnQXlBQ2JHb2hDUUpBQTBBZ0NDQUpSZzBCSUFnZ0FpQUVJQVVRWkNFUElBOEVRQ0FPSUE5QkFXdEI0QUJzYWlFUUlCQWdDaUFRRUUwTElBZ2dBbW9oQ0NBS1FlQUFhaUVLREFBTEN5QU9JQVVRWlNBT0lBWVFSRUVBSUE0MkFnQUxvQUVNQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQVFRUWlBRFJRUkFEd3NnQTJjdEFPZ3dJUVVnQWtFRGRFRUJheUFGYmtFQmFpRUdJQVpCQVdzZ0JXd2hDZ0pBQTBBZ0NrRUFTQTBCSUFRUVFFVUVRRUVBSVF3Q1FBTkFJQXdnQlVZTkFTQUVJQVFRU2lBTVFRRnFJUXdNQUFzTEN5QUFJQUVnQWlBRElBb2dCVUdJTUJCbUlBUkJpREFnQkJCTklBb2dCV3NoQ2d3QUN3c0xRUUlCZndGL0lBRkJDR3dnQW1zaEJDQURJQVJLQkVCQkFTQUVkRUVCYXlFRkJVRUJJQU4wUVFGcklRVUxJQUFnQWtFRGRtb29BQUFnQWtFSGNYWWdCWEVMbFFFRUFYOEJmd0YvQVg4Z0FVRUJSZ1JBRHd0QkFTQUJRUUZyZENFQ0lBQWhBeUFBSUFKQjRBQnNhaUVFSUFSQjRBQnJJUVVDUUFOQUlBTWdCVVlOQVNBRElBUWdBeEJOSUFVZ0JDQUZFRTBnQTBIZ0FHb2hBeUFFUWVBQWFpRUVEQUFMQ3lBQUlBRkJBV3NRYVNBQlFRRnJJUUVDUUFOQUlBRkZEUUVnQlNBRkVFb2dBVUVCYXlFQkRBQUxDeUFBSUFVZ0FCQk5DOHdCQ2dGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0lBTkZCRUFnQmhCQ0R3dEJBU0FGZENFTlFRQW9BZ0FoRGtFQUlBNGdEVUhnQUd4cU5nSUFRUUFoREFKQUEwQWdEQ0FOUmcwQklBNGdERUhnQUd4cUVFSWdERUVCYWlFTURBQUxDeUFBSVFvZ0FTRUlJQUVnQXlBQ2JHb2hDUUpBQTBBZ0NDQUpSZzBCSUFnZ0FpQUVJQVVRYUNFUElBOEVRQ0FPSUE5QkFXdEI0QUJzYWlFUUlCQWdDaUFRRUV3TElBZ2dBbW9oQ0NBS1FjQUFhaUVLREFBTEN5QU9JQVVRYVNBT0lBWVFSRUVBSUE0MkFnQUxvQUVNQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQVFRUWlBRFJRUkFEd3NnQTJjdEFPZ3hJUVVnQWtFRGRFRUJheUFGYmtFQmFpRUdJQVpCQVdzZ0JXd2hDZ0pBQTBBZ0NrRUFTQTBCSUFRUVFFVUVRRUVBSVF3Q1FBTkFJQXdnQlVZTkFTQUVJQVFRU2lBTVFRRnFJUXdNQUFzTEN5QUFJQUVnQWlBRElBb2dCVUdJTVJCcUlBUkJpREVnQkJCTklBb2dCV3NoQ2d3QUN3c0xxd1FIQVg4QmZ3Ri9BWDhCZndGL0FYOGdBa1VFUUNBREVFSVBDeUFDUVFOMElRVkJBQ2dDQUNFRUlBUWhDa0VBSUFSQklHb2dCV3BCZUhFMkFnQkJBU0VHSUFGQkFFRURka0Y4Y1dvb0FnQkJBRUVmY1haQkFYRWhCMEVBSVFrQ1FBTkFJQVlnQlVZTkFTQUJJQVpCQTNaQmZIRnFLQUlBSUFaQkgzRjJRUUZ4SVFnZ0J3UkFJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUU2QUFBZ0NrRUJhaUVLQlVFQUlRZEJBU0VKSUFwQi93RTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRQWhCMEVCSVFrZ0NrSC9BVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUFJUWtnQ2tFQk9nQUFJQXBCQVdvaENnc0xCU0FJQkVBZ0NRUkFRUUFoQjBFQklRa2dDa0VBT2dBQUlBcEJBV29oQ2dWQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRRWhCMEVBSVFrZ0NrRUFPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFBNkFBQWdDa0VCYWlFS0N3c0xJQVpCQVdvaEJnd0FDd3NnQndSQUlBa0VRQ0FLUWY4Qk9nQUFJQXBCQVdvaENpQUtRUUE2QUFBZ0NrRUJhaUVLSUFwQkFUb0FBQ0FLUVFGcUlRb0ZJQXBCQVRvQUFDQUtRUUZxSVFvTEJTQUpCRUFnQ2tFQU9nQUFJQXBCQVdvaENpQUtRUUU2QUFBZ0NrRUJhaUVLQ3dzZ0NrRUJheUVLSUFCQmlESVFSQ0FERUVJQ1FBTkFJQU1nQXhCS0lBb3RBQUFoQ0NBSUJFQWdDRUVCUmdSQUlBTkJpRElnQXhCTkJTQURRWWd5SUFNUVVnc0xJQVFnQ2tZTkFTQUtRUUZySVFvTUFBc0xRUUFnQkRZQ0FBdXJCQWNCZndGL0FYOEJmd0YvQVg4QmZ5QUNSUVJBSUFNUVFnOExJQUpCQTNRaEJVRUFLQUlBSVFRZ0JDRUtRUUFnQkVFZ2FpQUZha0Y0Y1RZQ0FFRUJJUVlnQVVFQVFRTjJRWHh4YWlnQ0FFRUFRUjl4ZGtFQmNTRUhRUUFoQ1FKQUEwQWdCaUFGUmcwQklBRWdCa0VEZGtGOGNXb29BZ0FnQmtFZmNYWkJBWEVoQ0NBSEJFQWdDQVJBSUFrRVFFRUFJUWRCQVNFSklBcEJBVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUJJUWtnQ2tIL0FUb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFDRUhRUUVoQ1NBS1FmOEJPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFFNkFBQWdDa0VCYWlFS0N3c0ZJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUE2QUFBZ0NrRUJhaUVLQlVFQklRZEJBQ0VKSUFwQkFEb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtCVUVBSVFkQkFDRUpJQXBCQURvQUFDQUtRUUZxSVFvTEN3c2dCa0VCYWlFR0RBQUxDeUFIQkVBZ0NRUkFJQXBCL3dFNkFBQWdDa0VCYWlFS0lBcEJBRG9BQUNBS1FRRnFJUW9nQ2tFQk9nQUFJQXBCQVdvaENnVWdDa0VCT2dBQUlBcEJBV29oQ2dzRklBa0VRQ0FLUVFBNkFBQWdDa0VCYWlFS0lBcEJBVG9BQUNBS1FRRnFJUW9MQ3lBS1FRRnJJUW9nQUVIb01oQkRJQU1RUWdKQUEwQWdBeUFERUVvZ0NpMEFBQ0VJSUFnRVFDQUlRUUZHQkVBZ0EwSG9NaUFERUV3RklBTkI2RElnQXhCUkN3c2dCQ0FLUmcwQklBcEJBV3NoQ2d3QUN3dEJBQ0FFTmdJQUMwSUFJQUJCL3dGeExRRG9RVUVZZENBQVFRaDJRZjhCY1MwQTZFRkJFSFJxSUFCQkVIWkIvd0Z4TFFEb1FVRUlkQ0FBUVJoMlFmOEJjUzBBNkVGcWFpQUJkd3RuQlFGL0FYOEJmd0YvQVg5QkFTQUJkQ0VDUVFBaEF3SkFBMEFnQXlBQ1JnMEJJQUFnQTBFZ2JHb2hCU0FESUFFUWJpRUVJQUFnQkVFZ2JHb2hCaUFESUFSSkJFQWdCVUhvd3dBUUFDQUdJQVVRQUVIb3d3QWdCaEFBQ3lBRFFRRnFJUU1NQUFzTEM5b0JCd0YvQVg4QmZ3Ri9BWDhCZndGL0lBSkZJQU1RSlhFRVFBOExRUUVnQVhRaEJDQUVRUUZySVFoQkFTRUhJQVJCQVhZaEJRSkFBMEFnQnlBRlJnMEJJQUFnQjBFZ2JHb2hDU0FBSUFRZ0IydEJJR3hxSVFvZ0FnUkFJQU1RSlFSQUlBbEJpTVFBRUFBZ0NpQUpFQUJCaU1RQUlBb1FBQVVnQ1VHSXhBQVFBQ0FLSUFNZ0NSQXFRWWpFQUNBRElBb1FLZ3NGSUFNUUpRUkFCU0FKSUFNZ0NSQXFJQW9nQXlBS0VDb0xDeUFIUVFGcUlRY01BQXNMSUFNUUpRUkFCU0FBSUFNZ0FCQXFJQUFnQlVFZ2JHb2hDaUFLSUFNZ0NoQXFDd3ZuQVFrQmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4Z0FDQUJFRzlCQVNBQmRDRUpRUUVoQkFKQUEwQWdCQ0FCU3cwQlFRRWdCSFFoQjBHb015QUVRU0JzYWlFS1FRQWhCUUpBQTBBZ0JTQUpUdzBCUWFqRUFCQXlJQWRCQVhZaENFRUFJUVlDUUFOQUlBWWdDRThOQVNBQUlBVWdCbXBCSUd4cUlRc2dDeUFJUVNCc2FpRU1JQXhCcU1RQVFjakVBQkFxSUF0QjZNUUFFQUJCNk1RQVFjakVBQ0FMRUNaQjZNUUFRY2pFQUNBTUVDZEJxTVFBSUFwQnFNUUFFQ29nQmtFQmFpRUdEQUFMQ3lBRklBZHFJUVVNQUFzTElBUkJBV29oQkF3QUN3c2dBQ0FCSUFJZ0F4QndDME1DQVg4QmZ5QUFRUUYySVFKQkFDRUJBa0FEUUNBQ1JRMEJJQUpCQVhZaEFpQUJRUUZxSVFFTUFBc0xJQUJCQVNBQmRFY0VRQUFMSUFGQkhFc0VRQUFMSUFFTEhBRUJmeUFCRUhJaEFrR0l4UUFRTWlBQUlBSkJBRUdJeFFBUWNRc2hBZ0YvQVg4Z0FSQnlJUUpCeURvZ0FrRWdiR29oQXlBQUlBSkJBU0FERUhFTGRnTUJmd0YvQVg4Z0EwR294UUFRQUVFQUlRY0NRQU5BSUFjZ0FrWU5BU0FBSUFkQklHeHFJUVVnQVNBSFFTQnNhaUVHSUFaQnFNVUFRY2pGQUJBcUlBVkI2TVVBRUFCQjZNVUFRY2pGQUNBRkVDWkI2TVVBUWNqRkFDQUdFQ2RCcU1VQUlBUkJxTVVBRUNvZ0IwRUJhaUVIREFBTEN3dkVBUWtCZndGL0FYOEJmd0YvQVg4QmZ3Ri9BWDlCQVNBQ2RDRUVJQVJCQVhZaEJTQUJJQUoySVFNZ0JVRWdiQ0VHUWFneklBSkJJR3hxSVF0QkFDRUpBa0FEUUNBSklBTkdEUUZCaU1ZQUVESkJBQ0VLQWtBRFFDQUtJQVZHRFFFZ0FDQUpJQVJzSUFwcVFTQnNhaUVISUFjZ0Jtb2hDQ0FJUVlqR0FFR294Z0FRS2lBSFFjakdBQkFBUWNqR0FFR294Z0FnQnhBbVFjakdBRUdveGdBZ0NCQW5RWWpHQUNBTFFZakdBQkFxSUFwQkFXb2hDZ3dBQ3dzZ0NVRUJhaUVKREFBTEN3dDdCQUYvQVg4QmZ3Ri9JQUZCQVhZaEJpQUJRUUZHQkVBZ0FDQUdRU0JzYWlBQ0lBQWdCa0VnYkdvUUtndEJBQ0VGQWtBRFFDQUZJQVpHRFFFZ0FDQUZRU0JzYWlFRElBQWdBVUVCYXlBRmEwRWdiR29oQkNBRUlBSkI2TVlBRUNvZ0F5QUNJQVFRS2tIb3hnQWdBeEFBSUFWQkFXb2hCUXdBQ3dzTExnSUJmd0YvSUFBaEF5QUFJQUZCSUd4cUlRSUNRQU5BSUFNZ0FrWU5BU0FERUFFZ0EwRWdhaUVEREFBTEN3dU9BUVlCZndGL0FYOEJmd0YvQVg5QkFDRUVJQUFoQmlBQklRY0NRQU5BSUFRZ0FrWU5BU0FHS0FJQUlRa2dCa0VFYWlFR1FRQWhCUUpBQTBBZ0JTQUpSZzBCSUFNZ0JpZ0NBRUVnYkdvaENDQUdRUVJxSVFZZ0J5QUdRWWpIQUJBcVFZakhBQ0FJSUFnUUppQUdRU0JxSVFZZ0JVRUJhaUVGREFBTEN5QUhRU0JxSVFjZ0JFRUJhaUVFREFBTEN3dWxBZ2NCZndGL0FYOEJmd0YvQVg4QmZ5QURJUWtnQkNFS0lBTWdCMEVnYkdvaEN3SkFBMEFnQ1NBTFJnMEJJQWtRQVNBS0VBRWdDVUVnYWlFSklBcEJJR29oQ2d3QUN3c2dBQ0VJSUFBZ0FVRXNiR29oQ3dKQUEwQWdDQ0FMUmcwQklBZ29BZ0FoRENBTVFRQkdCRUFnQXlFT0JTQU1RUUZHQkVBZ0JDRU9CU0FJUVN4cUlRZ01BUXNMSUFnb0FnUWhEU0FOSUFaSklBMGdCaUFIYWs5eUJFQWdDRUVzYWlFSURBRUxJQTRnRFNBR2EwRWdiR29oRGlBQ0lBZ29BZ2hCSUd4cUlBaEJER3BCcU1jQUVDb2dEa0dveHdBZ0RoQW1JQWhCTEdvaENBd0FDd3NnQXlFSklBUWhDaUFGSVFnZ0F5QUhRU0JzYWlFTEFrQURRQ0FKSUF0R0RRRWdDU0FLSUFnUUtpQUpRU0JxSVFrZ0NrRWdhaUVLSUFoQklHb2hDQXdBQ3dzTFpRVUJmd0YvQVg4QmZ3Ri9JQUFoQlNBQklRWWdBaUVISUFRaENDQUFJQU5CSUd4cUlRa0NRQU5BSUFVZ0NVWU5BU0FGSUFaQnlNY0FFQ3BCeU1jQUlBY2dDQkFuSUFWQklHb2hCU0FHUVNCcUlRWWdCMEVnYWlFSElBaEJJR29oQ0F3QUN3c0xEZ0FnQUJBQ0lBQkJJR29RQW5FTER3QWdBQkFQSUFCQklHb1FBbkVQQ3cwQUlBQVFBU0FBUVNCcUVBRUxEUUFnQUJBY0lBQkJJR29RQVFzVUFDQUFJQUVRQUNBQVFTQnFJQUZCSUdvUUFBdDFBQ0FBSUFGQjZNY0FFQlFnQUVFZ2FpQUJRU0JxUVlqSUFCQVVJQUFnQUVFZ2FrR295QUFRRUNBQklBRkJJR3BCeU1nQUVCQkJxTWdBUWNqSUFFR295QUFRRkVHSXlBQWdBaEFTUWVqSEFDQUNJQUlRRUVIb3h3QkJpTWdBSUFKQklHb1FFRUdveUFBZ0FrRWdhaUFDUVNCcUVCRUxHQUFnQUNBQklBSVFGQ0FBUVNCcUlBRWdBa0VnYWhBVUMzQUFJQUFnQUVFZ2FrSG95QUFRRkNBQUlBQkJJR3BCaU1rQUVCQWdBRUVnYWtHb3lRQVFFaUFBUWFqSkFFR295UUFRRUVIb3lBQkJ5TWtBRUJKQnlNa0FRZWpJQUVISXlRQVFFRUdJeVFCQnFNa0FJQUVRRkNBQlFjakpBQ0FCRUJGQjZNZ0FRZWpJQUNBQlFTQnFFQkFMR3dBZ0FDQUJJQUlRRUNBQVFTQnFJQUZCSUdvZ0FrRWdhaEFRQ3hzQUlBQWdBU0FDRUJFZ0FFRWdhaUFCUVNCcUlBSkJJR29RRVFzVUFDQUFJQUVRRWlBQVFTQnFJQUZCSUdvUUVnc1VBQ0FBSUFFUUFDQUFRU0JxSUFGQklHb1FFZ3NVQUNBQUlBRVFGeUFBUVNCcUlBRkJJR29RRndzVUFDQUFJQUVRR0NBQVFTQnFJQUZCSUdvUUdBc1ZBQ0FBSUFFUUJDQUFRU0JxSUFGQklHb1FCSEVMWFFBZ0FFSG95UUFRRlNBQVFTQnFRWWpLQUJBVlFZaktBRUdveWdBUUVrSG95UUJCcU1vQVFhaktBQkFSUWFqS0FFSEl5Z0FRR3lBQVFjaktBQ0FCRUJRZ0FFRWdha0hJeWdBZ0FVRWdhaEFVSUFGQklHb2dBVUVnYWhBU0N4d0FJQUFnQVNBQ0lBTVFIaUFBUVNCcUlBRWdBaUFEUVNCcUVCNExHZ0VCZnlBQVFTQnFFQm9oQVNBQkJFQWdBUThMSUFBUUdnOExHUUFnQUVFZ2FoQUNCRUFnQUJBWkR3c2dBRUVnYWhBWkR3dUxBZ1FCZndGL0FYOEJmMEVBS0FJQUlRVkJBQ0FGSUFKQkFXcEJ3QUJzYWpZQ0FDQUZFSDhnQUNFR0lBVkJ3QUJxSVFWQkFDRUlBa0FEUUNBSUlBSkdEUUVnQmhCOEJFQWdCVUhBQUdzZ0JSQ0FBUVVnQmlBRlFjQUFheUFGRUlFQkN5QUdJQUZxSVFZZ0JVSEFBR29oQlNBSVFRRnFJUWdNQUFzTElBWWdBV3NoQmlBRlFjQUFheUVGSUFNZ0FrRUJheUFFYkdvaEJ5QUZJQVVRaXdFQ1FBTkFJQWhGRFFFZ0JoQjhCRUFnQlNBRlFjQUFheENBQVNBSEVINEZJQVZCd0FCclFlaktBQkNBQVNBRklBWWdCVUhBQUdzUWdRRWdCVUhveWdBZ0J4Q0JBUXNnQmlBQmF5RUdJQWNnQkdzaEJ5QUZRY0FBYXlFRklBaEJBV3NoQ0F3QUN3dEJBQ0FGTmdJQUM4d0NBZ0YvQVg4Z0FrVUVRQ0FERUg4UEN5QUFRYWpMQUJDQUFTQURFSDhnQWlFRUFrQURRQ0FFUVFGcklRUWdBU0FFYWkwQUFDRUZJQU1nQXhDREFTQUZRWUFCVHdSQUlBVkJnQUZySVFVZ0EwR295d0FnQXhDQkFRc2dBeUFERUlNQklBVkJ3QUJQQkVBZ0JVSEFBR3NoQlNBRFFhakxBQ0FERUlFQkN5QURJQU1RZ3dFZ0JVRWdUd1JBSUFWQklHc2hCU0FEUWFqTEFDQURFSUVCQ3lBRElBTVFnd0VnQlVFUVR3UkFJQVZCRUdzaEJTQURRYWpMQUNBREVJRUJDeUFESUFNUWd3RWdCVUVJVHdSQUlBVkJDR3NoQlNBRFFhakxBQ0FERUlFQkN5QURJQU1RZ3dFZ0JVRUVUd1JBSUFWQkJHc2hCU0FEUWFqTEFDQURFSUVCQ3lBRElBTVFnd0VnQlVFQ1R3UkFJQVZCQW1zaEJTQURRYWpMQUNBREVJRUJDeUFESUFNUWd3RWdCVUVCVHdSQUlBVkJBV3NoQlNBRFFhakxBQ0FERUlFQkN5QUVSUTBCREFBTEN3dkxBUUJCNk0wQUVIOUI2TTBBUWVqTkFCQ0dBU0FBUWVqTEFFRWdRYWpNQUJDUUFVR296QUJCNk13QUVJTUJJQUJCNk13QVFlak1BQkNCQVVIb3pBQkJxTTBBRUljQlFhak5BRUhvekFCQnFNMEFFSUVCUWFqTkFFSG96UUFRaWdFRVFBQUxRYWpNQUNBQVFhak9BQkNCQVVIb3pBQkI2TTBBRUlvQkJFQkI2TTBBRUFGQmlNNEFFQnhCNk0wQVFhak9BQ0FCRUlFQkJVSG96Z0FRZjBIb3pnQkI2TXdBUWVqT0FCQ0VBVUhvemdCQmlNd0FRU0JCNk00QUVKQUJRZWpPQUVHb3pnQWdBUkNCQVFzTGFBQkJpTkVBRUg5QmlORUFRWWpSQUJDR0FTQUFRYWpQQUVFZ1FjalBBQkNRQVVISXp3QkJpTkFBRUlNQklBQkJpTkFBUVlqUUFCQ0JBVUdJMEFCQnlOQUFFSWNCUWNqUUFFR0kwQUJCeU5BQUVJRUJRY2pRQUVHSTBRQVFpZ0VFUUVFQUR3dEJBUThMRHdBZ0FCQjhJQUJCd0FCcUVIeHhDd29BSUFCQmdBRnFFSHdMRGdBZ0FCQitJQUJCd0FCcUVINExGZ0FnQUJCK0lBQkJ3QUJxRUg4Z0FFR0FBV29RZmd1aUFRQWdBU0FBS1FNQU53TUFJQUVnQUNrRENEY0RDQ0FCSUFBcEF4QTNBeEFnQVNBQUtRTVlOd01ZSUFFZ0FDa0RJRGNESUNBQklBQXBBeWczQXlnZ0FTQUFLUU13TndNd0lBRWdBQ2tET0RjRE9DQUJJQUFwQTBBM0EwQWdBU0FBS1FOSU53TklJQUVnQUNrRFVEY0RVQ0FCSUFBcEExZzNBMWdnQVNBQUtRTmdOd05nSUFFZ0FDa0RhRGNEYUNBQklBQXBBM0EzQTNBZ0FTQUFLUU40TndONEM0SUNBQ0FCSUFBcEF3QTNBd0FnQVNBQUtRTUlOd01JSUFFZ0FDa0RFRGNERUNBQklBQXBBeGczQXhnZ0FTQUFLUU1nTndNZ0lBRWdBQ2tES0RjREtDQUJJQUFwQXpBM0F6QWdBU0FBS1FNNE53TTRJQUVnQUNrRFFEY0RRQ0FCSUFBcEEwZzNBMGdnQVNBQUtRTlFOd05RSUFFZ0FDa0RXRGNEV0NBQklBQXBBMkEzQTJBZ0FTQUFLUU5vTndOb0lBRWdBQ2tEY0RjRGNDQUJJQUFwQTNnM0EzZ2dBU0FBS1FPQUFUY0RnQUVnQVNBQUtRT0lBVGNEaUFFZ0FTQUFLUU9RQVRjRGtBRWdBU0FBS1FPWUFUY0RtQUVnQVNBQUtRT2dBVGNEb0FFZ0FTQUFLUU9vQVRjRHFBRWdBU0FBS1FPd0FUY0RzQUVnQVNBQUtRTzRBVGNEdUFFTElBQWdBVUdBQVdvUWZ5QUFRY0FBYWlBQlFjQUFhaENBQVNBQUlBRVFnQUVMSEFFQmZ5QUFJQUVRaWdFZ0FFSEFBR29nQVVIQUFHb1FpZ0Z4RHd1S0FRRUJmeUFBUVlBQmFpRUNJQUFRbEFFRVFDQUJFSk1CRHdzZ0FSQ1RBUVJBUVFBUEN5QUNFSDBFUUNBQUlBRVFtZ0VQQ3lBQ1FZalNBQkNEQVNBQlFZalNBRUhJMGdBUWdRRWdBa0dJMGdCQmlOTUFFSUVCSUFGQndBQnFRWWpUQUVISTB3QVFnUUVnQUVISTBnQVFpZ0VFUUNBQVFjQUFha0hJMHdBUWlnRUVRRUVCRHdzTFFRQVBDOWNCQWdGL0FYOGdBRUdBQVdvaEFpQUJRWUFCYWlFRElBQVFsQUVFUUNBQkVKUUJEd3NnQVJDVUFRUkFRUUFQQ3lBQ0VIMEVRQ0FCSUFBUW13RVBDeUFERUgwRVFDQUFJQUVRbXdFUEN5QUNRWWpVQUJDREFTQURRY2pVQUJDREFTQUFRY2pVQUVHSTFRQVFnUUVnQVVHSTFBQkJ5TlVBRUlFQklBSkJpTlFBUVlqV0FCQ0JBU0FEUWNqVUFFSEkxZ0FRZ1FFZ0FFSEFBR3BCeU5ZQVFZalhBQkNCQVNBQlFjQUFha0dJMWdCQnlOY0FFSUVCUVlqVkFFSEkxUUFRaWdFRVFFR0kxd0JCeU5jQUVJb0JCRUJCQVE4TEMwRUFEd3VzQWdBZ0FCQ1RBUVJBSUFBZ0FSQ1pBUThMSUFCQmlOZ0FFSU1CSUFCQndBQnFRY2pZQUJDREFVSEkyQUJCaU5rQUVJTUJJQUJCeU5nQVFjalpBQkNFQVVISTJRQkJ5TmtBRUlNQlFjalpBRUdJMkFCQnlOa0FFSVVCUWNqWkFFR0kyUUJCeU5rQUVJVUJRY2paQUVISTJRQkJ5TmtBRUlRQlFZallBRUdJMkFCQmlOb0FFSVFCUVlqYUFFR0kyQUJCaU5vQUVJUUJJQUJCd0FCcUlBQkJ3QUJxSUFGQmdBRnFFSVFCUVlqYUFDQUJFSU1CSUFGQnlOa0FJQUVRaFFFZ0FVSEkyUUFnQVJDRkFVR0kyUUJCaU5rQVFjamFBQkNFQVVISTJnQkJ5Tm9BUWNqYUFCQ0VBVUhJMmdCQnlOb0FRY2phQUJDRUFVSEkyUUFnQVNBQlFjQUFhaENGQVNBQlFjQUFha0dJMmdBZ0FVSEFBR29RZ1FFZ0FVSEFBR3BCeU5vQUlBRkJ3QUJxRUlVQkM5TUNBQ0FBRUpRQkJFQWdBQ0FCRUpnQkR3c2dBRUdBQVdvUWZRUkFJQUFnQVJDZEFROFBDeUFBUVlqYkFCQ0RBU0FBUWNBQWFrSEkyd0FRZ3dGQnlOc0FRWWpjQUJDREFTQUFRY2piQUVISTNBQVFoQUZCeU53QVFjamNBQkNEQVVISTNBQkJpTnNBUWNqY0FCQ0ZBVUhJM0FCQmlOd0FRY2pjQUJDRkFVSEkzQUJCeU53QVFjamNBQkNFQVVHSTJ3QkJpTnNBUVlqZEFCQ0VBVUdJM1FCQmlOc0FRWWpkQUJDRUFVR0kzUUJCeU4wQUVJTUJJQUJCd0FCcUlBQkJnQUZxUVlqZUFCQ0JBVUhJM0FCQnlOd0FJQUVRaEFGQnlOMEFJQUVnQVJDRkFVR0kzQUJCaU53QVFjamVBQkNFQVVISTNnQkJ5TjRBUWNqZUFCQ0VBVUhJM2dCQnlONEFRY2plQUJDRUFVSEkzQUFnQVNBQlFjQUFhaENGQVNBQlFjQUFha0dJM1FBZ0FVSEFBR29RZ1FFZ0FVSEFBR3BCeU40QUlBRkJ3QUJxRUlVQlFZamVBRUdJM2dBZ0FVR0FBV29RaEFFTDZnSUJBWDhnQUVHQUFXb2hBeUFBRUpNQkJFQWdBU0FDRUpjQklBSkJnQUZxRUg4UEN5QUJFSk1CQkVBZ0FDQUNFSmNCSUFKQmdBRnFFSDhQQ3lBQUlBRVFpZ0VFUUNBQVFjQUFhaUFCUWNBQWFoQ0tBUVJBSUFFZ0FoQ2RBUThMQ3lBQklBQkJpTjhBRUlVQklBRkJ3QUJxSUFCQndBQnFRWWpnQUJDRkFVR0kzd0JCeU44QUVJTUJRY2pmQUVISTN3QkJ5T0FBRUlRQlFjamdBRUhJNEFCQnlPQUFFSVFCUVlqZkFFSEk0QUJCaU9FQUVJRUJRWWpnQUVHSTRBQkJ5T0VBRUlRQklBQkJ5T0FBUWNqaUFCQ0JBVUhJNFFCQmlPSUFFSU1CUWNqaUFFSEk0Z0JCaU9NQUVJUUJRWWppQUVHSTRRQWdBaENGQVNBQ1FZampBQ0FDRUlVQklBQkJ3QUJxUVlqaEFFSEk0d0FRZ1FGQnlPTUFRY2pqQUVISTR3QVFoQUZCeU9JQUlBSWdBa0hBQUdvUWhRRWdBa0hBQUdwQnlPRUFJQUpCd0FCcUVJRUJJQUpCd0FCcVFjampBQ0FDUWNBQWFoQ0ZBVUdJM3dCQmlOOEFJQUpCZ0FGcUVJUUJDOW9EQVFGL0lBQkJnQUZxSVFNZ0FCQ1VBUVJBSUFFZ0FoQ1hBU0FDUVlBQmFoQi9Ed3NnQVJDVEFRUkFJQUFnQWhDWUFROExJQU1RZlFSQUlBQWdBU0FDRUo4QkR3c2dBMEdJNUFBUWd3RWdBVUdJNUFCQnlPUUFFSUVCSUFOQmlPUUFRWWpsQUJDQkFTQUJRY0FBYWtHSTVRQkJ5T1VBRUlFQklBQkJ5T1FBRUlvQkJFQWdBRUhBQUdwQnlPVUFFSW9CQkVBZ0FTQUNFSjBCRHdzTFFjamtBQ0FBUVlqbUFCQ0ZBVUhJNVFBZ0FFSEFBR3BCaU9jQUVJVUJRWWptQUVISTVnQVFnd0ZCeU9ZQVFjam1BRUhJNXdBUWhBRkJ5T2NBUWNqbkFFSEk1d0FRaEFGQmlPWUFRY2puQUVHSTZBQVFnUUZCaU9jQVFZam5BRUhJNkFBUWhBRWdBRUhJNXdCQnlPa0FFSUVCUWNqb0FFR0k2UUFRZ3dGQnlPa0FRY2pwQUVHSTZnQVFoQUZCaU9rQVFZam9BQ0FDRUlVQklBSkJpT29BSUFJUWhRRWdBRUhBQUdwQmlPZ0FRY2pxQUJDQkFVSEk2Z0JCeU9vQVFjanFBQkNFQVVISTZRQWdBaUFDUWNBQWFoQ0ZBU0FDUWNBQWFrSEk2QUFnQWtIQUFHb1FnUUVnQWtIQUFHcEJ5T29BSUFKQndBQnFFSVVCSUFOQmlPWUFJQUpCZ0FGcUVJUUJJQUpCZ0FGcUlBSkJnQUZxRUlNQklBSkJnQUZxUVlqa0FDQUNRWUFCYWhDRkFTQUNRWUFCYWtISTVnQWdBa0dBQVdvUWhRRUxvd1FDQVg4QmZ5QUFRWUFCYWlFRElBRkJnQUZxSVFRZ0FCQ1VBUVJBSUFFZ0FoQ1lBUThMSUFFUWxBRUVRQ0FBSUFJUW1BRVBDeUFERUgwRVFDQUJJQUFnQWhDZ0FROExJQVFRZlFSQUlBQWdBU0FDRUtBQkR3c2dBMEdJNndBUWd3RWdCRUhJNndBUWd3RWdBRUhJNndCQmlPd0FFSUVCSUFGQmlPc0FRY2pzQUJDQkFTQURRWWpyQUVHSTdRQVFnUUVnQkVISTZ3QkJ5TzBBRUlFQklBQkJ3QUJxUWNqdEFFR0k3Z0FRZ1FFZ0FVSEFBR3BCaU8wQVFjanVBQkNCQVVHSTdBQkJ5T3dBRUlvQkJFQkJpTzRBUWNqdUFCQ0tBUVJBSUFBZ0FoQ2VBUThMQzBISTdBQkJpT3dBUVlqdkFCQ0ZBVUhJN2dCQmlPNEFRY2p2QUJDRkFVR0k3d0JCaU84QVFZandBQkNFQVVHSThBQkJpUEFBRUlNQlFZanZBRUdJOEFCQnlQQUFFSUVCUWNqdkFFSEk3d0JCaVBFQUVJUUJRWWpzQUVHSThBQkJpUElBRUlFQlFZanhBRUhJOFFBUWd3RkJpUElBUVlqeUFFSEk4Z0FRaEFGQnlQRUFRY2p3QUNBQ0VJVUJJQUpCeVBJQUlBSVFoUUZCaU80QVFjandBRUdJOHdBUWdRRkJpUE1BUVlqekFFR0k4d0FRaEFGQmlQSUFJQUlnQWtIQUFHb1FoUUVnQWtIQUFHcEJpUEVBSUFKQndBQnFFSUVCSUFKQndBQnFRWWp6QUNBQ1FjQUFhaENGQVNBRElBUWdBa0dBQVdvUWhBRWdBa0dBQVdvZ0FrR0FBV29RZ3dFZ0FrR0FBV3BCaU9zQUlBSkJnQUZxRUlVQklBSkJnQUZxUWNqckFDQUNRWUFCYWhDRkFTQUNRWUFCYWtHSTd3QWdBa0dBQVdvUWdRRUxHQUFnQUNBQkVJQUJJQUJCd0FCcUlBRkJ3QUJxRUlZQkN5Y0FJQUFnQVJDQUFTQUFRY0FBYWlBQlFjQUFhaENHQVNBQVFZQUJhaUFCUVlBQmFoQ0FBUXNXQUNBQlFjanpBQkNpQVNBQVFjanpBQ0FDRUo4QkN4WUFJQUZCaVBVQUVLSUJJQUJCaVBVQUlBSVFvQUVMRmdBZ0FVSEk5Z0FRb3dFZ0FFSEk5Z0FnQWhDaEFRc1lBQ0FBSUFFUWlRRWdBRUhBQUdvZ0FVSEFBR29RaVFFTEp3QWdBQ0FCRUlrQklBQkJ3QUJxSUFGQndBQnFFSWtCSUFCQmdBRnFJQUZCZ0FGcUVJa0JDeGdBSUFBZ0FSQ0lBU0FBUWNBQWFpQUJRY0FBYWhDSUFRc25BQ0FBSUFFUWlBRWdBRUhBQUdvZ0FVSEFBR29RaUFFZ0FFR0FBV29nQVVHQUFXb1FpQUVMWEFBZ0FCQ1VBUVJBSUFFUWZpQUJRY0FBYWhCK0JTQUFRWUFCYWtHSStBQVFpd0ZCaVBnQVFjajRBQkNEQVVHSStBQkJ5UGdBUVlqNUFCQ0JBU0FBUWNqNEFDQUJFSUVCSUFCQndBQnFRWWo1QUNBQlFjQUFhaENCQVFzTHV3RUZBWDhCZndGL0FYOEJmMEVBS0FJQUlRTkJBQ0FESUFGQndBQnNhallDQUNBQVFZQUJha0hBQVNBQklBTkJ3QUFRandFZ0FDRUVJQU1oQlNBQ0lRWkJBQ0VIQWtBRFFDQUhJQUZHRFFFZ0JSQjhCRUFnQmhCK0lBWkJ3QUJxRUg0RklBVWdCRUhBQUdwQnlQa0FFSUVCSUFVZ0JSQ0RBU0FGSUFRZ0JoQ0JBU0FGUWNqNUFDQUdRY0FBYWhDQkFRc2dCRUhBQVdvaEJDQUdRWUFCYWlFR0lBVkJ3QUJxSVFVZ0IwRUJhaUVIREFBTEMwRUFJQU0yQWdBTFhRQWdBQkNVQVFSQUlBRVFsZ0VGSUFCQmdBRnFRWWo2QUJDTEFVR0krZ0JCeVBvQUVJTUJRWWo2QUVISStnQkJpUHNBRUlFQklBQkJ5UG9BSUFFUWdRRWdBRUhBQUdwQmlQc0FJQUZCd0FCcUVJRUJJQUZCZ0FGcUVIOExDenNDQVg4QmZ5QUNJQUZxUVFGcklRTWdBQ0VFQWtBRFFDQURJQUpJRFFFZ0F5QUVMUUFBT2dBQUlBTkJBV3NoQXlBRVFRRnFJUVFNQUFzTEN6MEFJQUFRa3dFRVFDQUJFSlVCSUFGQndBQTZBQUFQQ3lBQVFjajdBQkNuQVVISSt3QkJ3QUFnQVJDdUFVR0kvQUJCd0FBZ0FVSEFBR29RcmdFTFNRQWdBQkNVQVFSQUlBRVFmaUFCUWNBQU9nQUFEd3NnQUVISS9BQVFpUUZCeVB3QVFjQUFJQUVRcmdFZ0FFSEFBR29RalFGQmYwWUVRQ0FCSUFFdEFBQkJnQUZ5T2dBQUN3czVBQ0FBTFFBQVFjQUFjUVJBSUFFUWxRRVBDeUFBUWNBQVFZajlBQkN1QVNBQVFjQUFha0hBQUVISS9RQVFyZ0ZCaVAwQUlBRVFxUUVMMlFFQ0FYOEJmeUFBTFFBQUlRSWdBa0hBQUhFRVFDQUJFSlVCRHdzZ0FrR0FBWEVoQXlBQVFjaitBQkNBQVVISS9nQWdBa0UvY1RvQUFFSEkvZ0JCd0FCQmlQNEFFSzRCUVlqK0FDQUJFSWdCSUFGQnlQNEFFSU1CSUFGQnlQNEFRY2orQUJDQkFVSEkvZ0JCeU5FQVFjaitBQkNFQVVISS9nQkJ5UDRBRUpFQlFjaitBRUdJL2dBUWhnRkJ5UDRBRUkwQlFYOUdCRUFnQXdSQVFjaitBQ0FCUWNBQWFoQ0FBUVZCeVA0QUlBRkJ3QUJxRUlZQkN3VWdBd1JBUWNqK0FDQUJRY0FBYWhDR0FRVkJ5UDRBSUFGQndBQnFFSUFCQ3dzTFFRTUJmd0YvQVg4Z0FDRUVJQUloQlVFQUlRTUNRQU5BSUFNZ0FVWU5BU0FFSUFVUXJ3RWdCRUdBQVdvaEJDQUZRWUFCYWlFRklBTkJBV29oQXd3QUN3c0xRUU1CZndGL0FYOGdBQ0VFSUFJaEJVRUFJUU1DUUFOQUlBTWdBVVlOQVNBRUlBVVFzQUVnQkVHQUFXb2hCQ0FGUWNBQWFpRUZJQU5CQVdvaEF3d0FDd3NMUVFNQmZ3Ri9BWDhnQUNFRUlBSWhCVUVBSVFNQ1FBTkFJQU1nQVVZTkFTQUVJQVVRc1FFZ0JFR0FBV29oQkNBRlFZQUJhaUVGSUFOQkFXb2hBd3dBQ3dzTFZRTUJmd0YvQVg4Z0FDQUJRUUZyUWNBQWJHb2hCQ0FDSUFGQkFXdEJnQUZzYWlFRlFRQWhBd0pBQTBBZ0F5QUJSZzBCSUFRZ0JSQ3lBU0FFUWNBQWF5RUVJQVZCZ0FGcklRVWdBMEVCYWlFRERBQUxDd3RWQXdGL0FYOEJmeUFBSUFGQkFXdEJnQUZzYWlFRUlBSWdBVUVCYTBIQUFXeHFJUVZCQUNFREFrQURRQ0FESUFGR0RRRWdCQ0FGRUprQklBUkJnQUZySVFRZ0JVSEFBV3NoQlNBRFFRRnFJUU1NQUFzTEMwRUNBWDhCZnlBQlFRaHNJQUpySVFRZ0F5QUVTZ1JBUVFFZ0JIUkJBV3NoQlFWQkFTQURkRUVCYXlFRkN5QUFJQUpCQTNacUtBQUFJQUpCQjNGMklBVnhDNW9CQkFGL0FYOEJmd0YvSUFGQkFVWUVRQThMUVFFZ0FVRUJhM1FoQWlBQUlRTWdBQ0FDUWNBQmJHb2hCQ0FFUWNBQmF5RUZBa0FEUUNBRElBVkdEUUVnQXlBRUlBTVFvUUVnQlNBRUlBVVFvUUVnQTBIQUFXb2hBeUFFUWNBQmFpRUVEQUFMQ3lBQUlBRkJBV3NRdVFFZ0FVRUJheUVCQWtBRFFDQUJSUTBCSUFVZ0JSQ2VBU0FCUVFGcklRRU1BQXNMSUFBZ0JTQUFFS0VCQzlJQkNnRi9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQU5GQkVBZ0JoQ1dBUThMUVFFZ0JYUWhEVUVBS0FJQUlRNUJBQ0FPSUExQndBRnNhallDQUVFQUlRd0NRQU5BSUF3Z0RVWU5BU0FPSUF4QndBRnNhaENXQVNBTVFRRnFJUXdNQUFzTElBQWhDaUFCSVFnZ0FTQURJQUpzYWlFSkFrQURRQ0FJSUFsR0RRRWdDQ0FDSUFRZ0JSQzRBU0VQSUE4RVFDQU9JQTlCQVd0QndBRnNhaUVRSUJBZ0NpQVFFS0VCQ3lBSUlBSnFJUWdnQ2tIQUFXb2hDZ3dBQ3dzZ0RpQUZFTGtCSUE0Z0JoQ1lBVUVBSUE0MkFnQUxxQUVNQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQVFRbGdFZ0EwVUVRQThMSUFObkxRRElnQUVoQlNBQ1FRTjBRUUZySUFWdVFRRnFJUVlnQmtFQmF5QUZiQ0VLQWtBRFFDQUtRUUJJRFFFZ0JCQ1VBVVVFUUVFQUlRd0NRQU5BSUF3Z0JVWU5BU0FFSUFRUW5nRWdERUVCYWlFTURBQUxDd3NnQUNBQklBSWdBeUFLSUFWQmlQOEFFTG9CSUFSQmlQOEFJQVFRb1FFZ0NpQUZheUVLREFBTEN3dEJBZ0YvQVg4Z0FVRUliQ0FDYXlFRUlBTWdCRW9FUUVFQklBUjBRUUZySVFVRlFRRWdBM1JCQVdzaEJRc2dBQ0FDUVFOMmFpZ0FBQ0FDUVFkeGRpQUZjUXVhQVFRQmZ3Ri9BWDhCZnlBQlFRRkdCRUFQQzBFQklBRkJBV3QwSVFJZ0FDRURJQUFnQWtIQUFXeHFJUVFnQkVIQUFXc2hCUUpBQTBBZ0F5QUZSZzBCSUFNZ0JDQURFS0VCSUFVZ0JDQUZFS0VCSUFOQndBRnFJUU1nQkVIQUFXb2hCQXdBQ3dzZ0FDQUJRUUZyRUwwQklBRkJBV3NoQVFKQUEwQWdBVVVOQVNBRklBVVFuZ0VnQVVFQmF5RUJEQUFMQ3lBQUlBVWdBQkNoQVF2U0FRb0Jmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmeUFEUlFSQUlBWVFsZ0VQQzBFQklBVjBJUTFCQUNnQ0FDRU9RUUFnRGlBTlFjQUJiR28yQWdCQkFDRU1Ba0FEUUNBTUlBMUdEUUVnRGlBTVFjQUJiR29RbGdFZ0RFRUJhaUVNREFBTEN5QUFJUW9nQVNFSUlBRWdBeUFDYkdvaENRSkFBMEFnQ0NBSlJnMEJJQWdnQWlBRUlBVVF2QUVoRHlBUEJFQWdEaUFQUVFGclFjQUJiR29oRUNBUUlBb2dFQkNnQVFzZ0NDQUNhaUVJSUFwQmdBRnFJUW9NQUFzTElBNGdCUkM5QVNBT0lBWVFtQUZCQUNBT05nSUFDNmdCREFGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmeUFFRUpZQklBTkZCRUFQQ3lBRFp5MEFxSUlCSVFVZ0FrRURkRUVCYXlBRmJrRUJhaUVHSUFaQkFXc2dCV3doQ2dKQUEwQWdDa0VBU0EwQklBUVFsQUZGQkVCQkFDRU1Ba0FEUUNBTUlBVkdEUUVnQkNBRUVKNEJJQXhCQVdvaERBd0FDd3NMSUFBZ0FTQUNJQU1nQ2lBRlFlaUFBUkMrQVNBRVFlaUFBU0FFRUtFQklBb2dCV3NoQ2d3QUN3c0x0QVFIQVg4QmZ3Ri9BWDhCZndGL0FYOGdBa1VFUUNBREVKWUJEd3NnQWtFRGRDRUZRUUFvQWdBaEJDQUVJUXBCQUNBRVFTQnFJQVZxUVhoeE5nSUFRUUVoQmlBQlFRQkJBM1pCZkhGcUtBSUFRUUJCSDNGMlFRRnhJUWRCQUNFSkFrQURRQ0FHSUFWR0RRRWdBU0FHUVFOMlFYeHhhaWdDQUNBR1FSOXhka0VCY1NFSUlBY0VRQ0FJQkVBZ0NRUkFRUUFoQjBFQklRa2dDa0VCT2dBQUlBcEJBV29oQ2dWQkFDRUhRUUVoQ1NBS1FmOEJPZ0FBSUFwQkFXb2hDZ3NGSUFrRVFFRUFJUWRCQVNFSklBcEIvd0U2QUFBZ0NrRUJhaUVLQlVFQUlRZEJBQ0VKSUFwQkFUb0FBQ0FLUVFGcUlRb0xDd1VnQ0FSQUlBa0VRRUVBSVFkQkFTRUpJQXBCQURvQUFDQUtRUUZxSVFvRlFRRWhCMEVBSVFrZ0NrRUFPZ0FBSUFwQkFXb2hDZ3NGSUFrRVFFRUJJUWRCQUNFSklBcEJBRG9BQUNBS1FRRnFJUW9GUVFBaEIwRUFJUWtnQ2tFQU9nQUFJQXBCQVdvaENnc0xDeUFHUVFGcUlRWU1BQXNMSUFjRVFDQUpCRUFnQ2tIL0FUb0FBQ0FLUVFGcUlRb2dDa0VBT2dBQUlBcEJBV29oQ2lBS1FRRTZBQUFnQ2tFQmFpRUtCU0FLUVFFNkFBQWdDa0VCYWlFS0N3VWdDUVJBSUFwQkFEb0FBQ0FLUVFGcUlRb2dDa0VCT2dBQUlBcEJBV29oQ2dzTElBcEJBV3NoQ2lBQVFjaUNBUkNZQVNBREVKWUJBa0FEUUNBRElBTVFuZ0VnQ2kwQUFDRUlJQWdFUUNBSVFRRkdCRUFnQTBISWdnRWdBeENoQVFVZ0EwSElnZ0VnQXhDbUFRc0xJQVFnQ2tZTkFTQUtRUUZySVFvTUFBc0xRUUFnQkRZQ0FBdTBCQWNCZndGL0FYOEJmd0YvQVg4QmZ5QUNSUVJBSUFNUWxnRVBDeUFDUVFOMElRVkJBQ2dDQUNFRUlBUWhDa0VBSUFSQklHb2dCV3BCZUhFMkFnQkJBU0VHSUFGQkFFRURka0Y4Y1dvb0FnQkJBRUVmY1haQkFYRWhCMEVBSVFrQ1FBTkFJQVlnQlVZTkFTQUJJQVpCQTNaQmZIRnFLQUlBSUFaQkgzRjJRUUZ4SVFnZ0J3UkFJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUU2QUFBZ0NrRUJhaUVLQlVFQUlRZEJBU0VKSUFwQi93RTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRQWhCMEVCSVFrZ0NrSC9BVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUFJUWtnQ2tFQk9nQUFJQXBCQVdvaENnc0xCU0FJQkVBZ0NRUkFRUUFoQjBFQklRa2dDa0VBT2dBQUlBcEJBV29oQ2dWQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRRWhCMEVBSVFrZ0NrRUFPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFBNkFBQWdDa0VCYWlFS0N3c0xJQVpCQVdvaEJnd0FDd3NnQndSQUlBa0VRQ0FLUWY4Qk9nQUFJQXBCQVdvaENpQUtRUUE2QUFBZ0NrRUJhaUVLSUFwQkFUb0FBQ0FLUVFGcUlRb0ZJQXBCQVRvQUFDQUtRUUZxSVFvTEJTQUpCRUFnQ2tFQU9nQUFJQXBCQVdvaENpQUtRUUU2QUFBZ0NrRUJhaUVLQ3dzZ0NrRUJheUVLSUFCQmlJUUJFSmNCSUFNUWxnRUNRQU5BSUFNZ0F4Q2VBU0FLTFFBQUlRZ2dDQVJBSUFoQkFVWUVRQ0FEUVlpRUFTQURFS0FCQlNBRFFZaUVBU0FERUtVQkN3c2dCQ0FLUmcwQklBcEJBV3NoQ2d3QUN3dEJBQ0FFTmdJQUN4WUFJQUZCaUlVQkVDNGdBRUdJaFFGQklDQUNFR3dMUmdBZ0FFSC9BWEV0QU9pVEFVRVlkQ0FBUVFoMlFmOEJjUzBBNkpNQlFSQjBhaUFBUVJCMlFmOEJjUzBBNkpNQlFRaDBJQUJCR0haQi93RnhMUURva3dGcWFpQUJkd3RxQlFGL0FYOEJmd0YvQVg5QkFTQUJkQ0VDUVFBaEF3SkFBMEFnQXlBQ1JnMEJJQUFnQTBIZ0FHeHFJUVVnQXlBQkVNTUJJUVFnQUNBRVFlQUFiR29oQmlBRElBUkpCRUFnQlVIb2xRRVFSQ0FHSUFVUVJFSG9sUUVnQmhCRUN5QURRUUZxSVFNTUFBc0xDK01CQndGL0FYOEJmd0YvQVg4QmZ3Ri9JQUpGSUFNUUpYRUVRQThMUVFFZ0FYUWhCQ0FFUVFGcklRaEJBU0VISUFSQkFYWWhCUUpBQTBBZ0J5QUZSZzBCSUFBZ0IwSGdBR3hxSVFrZ0FDQUVJQWRyUWVBQWJHb2hDaUFDQkVBZ0F4QWxCRUFnQ1VISWxnRVFSQ0FLSUFrUVJFSElsZ0VnQ2hCRUJTQUpRY2lXQVJCRUlBb2dBeUFKRU1JQlFjaVdBU0FESUFvUXdnRUxCU0FERUNVRVFBVWdDU0FESUFrUXdnRWdDaUFESUFvUXdnRUxDeUFIUVFGcUlRY01BQXNMSUFNUUpRUkFCU0FBSUFNZ0FCRENBU0FBSUFWQjRBQnNhaUVLSUFvZ0F5QUtFTUlCQ3d2dEFRa0Jmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOGdBQ0FCRU1RQlFRRWdBWFFoQ1VFQklRUUNRQU5BSUFRZ0FVc05BVUVCSUFSMElRZEJxSVVCSUFSQklHeHFJUXBCQUNFRkFrQURRQ0FGSUFsUERRRkJxSmNCRURJZ0IwRUJkaUVJUVFBaEJnSkFBMEFnQmlBSVR3MEJJQUFnQlNBR2FrSGdBR3hxSVFzZ0N5QUlRZUFBYkdvaERDQU1RYWlYQVVISWx3RVF3Z0VnQzBHb21BRVFSRUdvbUFGQnlKY0JJQXNRVFVHb21BRkJ5SmNCSUF3UVVrR29sd0VnQ2tHb2x3RVFLaUFHUVFGcUlRWU1BQXNMSUFVZ0Iyb2hCUXdBQ3dzZ0JFRUJhaUVFREFBTEN5QUFJQUVnQWlBREVNVUJDME1DQVg4QmZ5QUFRUUYySVFKQkFDRUJBa0FEUUNBQ1JRMEJJQUpCQVhZaEFpQUJRUUZxSVFFTUFBc0xJQUJCQVNBQmRFY0VRQUFMSUFGQkhFc0VRQUFMSUFFTEhnRUJmeUFCRU1jQklRSkJpSmtCRURJZ0FDQUNRUUJCaUprQkVNWUJDeVFDQVg4QmZ5QUJFTWNCSVFKQnlJd0JJQUpCSUd4cUlRTWdBQ0FDUVFFZ0F4REdBUXQ1QXdGL0FYOEJmeUFEUWFpWkFSQUFRUUFoQndKQUEwQWdCeUFDUmcwQklBQWdCMEhnQUd4cUlRVWdBU0FIUWVBQWJHb2hCaUFHUWFpWkFVSEltUUVRd2dFZ0JVR29tZ0VRUkVHb21nRkJ5SmtCSUFVUVRVR29tZ0ZCeUprQklBWVFVa0dvbVFFZ0JFR29tUUVRS2lBSFFRRnFJUWNNQUFzTEM4Z0JDUUYvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmMEVCSUFKMElRUWdCRUVCZGlFRklBRWdBblloQXlBRlFlQUFiQ0VHUWFpRkFTQUNRU0JzYWlFTFFRQWhDUUpBQTBBZ0NTQURSZzBCUVlpYkFSQXlRUUFoQ2dKQUEwQWdDaUFGUmcwQklBQWdDU0FFYkNBS2FrSGdBR3hxSVFjZ0J5QUdhaUVJSUFoQmlKc0JRYWliQVJEQ0FTQUhRWWljQVJCRVFZaWNBVUdvbXdFZ0J4Qk5RWWljQVVHb213RWdDQkJTUVlpYkFTQUxRWWliQVJBcUlBcEJBV29oQ2d3QUN3c2dDVUVCYWlFSkRBQUxDd3VDQVFRQmZ3Ri9BWDhCZnlBQlFRRjJJUVlnQVVFQlJnUkFJQUFnQmtIZ0FHeHFJQUlnQUNBR1FlQUFiR29Rd2dFTFFRQWhCUUpBQTBBZ0JTQUdSZzBCSUFBZ0JVSGdBR3hxSVFNZ0FDQUJRUUZySUFWclFlQUFiR29oQkNBRUlBSkI2SndCRU1JQklBTWdBaUFFRU1JQlFlaWNBU0FERUVRZ0JVRUJhaUVGREFBTEN3c1hBQ0FCUWNpZEFSQXVJQUJCeUowQlFTQWdBaERBQVF0R0FDQUFRZjhCY1MwQXFLd0JRUmgwSUFCQkNIWkIvd0Z4TFFDb3JBRkJFSFJxSUFCQkVIWkIvd0Z4TFFDb3JBRkJDSFFnQUVFWWRrSC9BWEV0QUtpc0FXcHFJQUYzQzIwRkFYOEJmd0YvQVg4QmYwRUJJQUYwSVFKQkFDRURBa0FEUUNBRElBSkdEUUVnQUNBRFFjQUJiR29oQlNBRElBRVF6Z0VoQkNBQUlBUkJ3QUZzYWlFR0lBTWdCRWtFUUNBRlFhaXVBUkNZQVNBR0lBVVFtQUZCcUs0QklBWVFtQUVMSUFOQkFXb2hBd3dBQ3dzTDV3RUhBWDhCZndGL0FYOEJmd0YvQVg4Z0FrVWdBeEFsY1FSQUR3dEJBU0FCZENFRUlBUkJBV3NoQ0VFQklRY2dCRUVCZGlFRkFrQURRQ0FISUFWR0RRRWdBQ0FIUWNBQmJHb2hDU0FBSUFRZ0IydEJ3QUZzYWlFS0lBSUVRQ0FERUNVRVFDQUpRZWl2QVJDWUFTQUtJQWtRbUFGQjZLOEJJQW9RbUFFRklBbEI2SzhCRUpnQklBb2dBeUFKRU0wQlFlaXZBU0FESUFvUXpRRUxCU0FERUNVRVFBVWdDU0FESUFrUXpRRWdDaUFESUFvUXpRRUxDeUFIUVFGcUlRY01BQXNMSUFNUUpRUkFCU0FBSUFNZ0FCRE5BU0FBSUFWQndBRnNhaUVLSUFvZ0F5QUtFTTBCQ3d2d0FRa0Jmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOGdBQ0FCRU04QlFRRWdBWFFoQ1VFQklRUUNRQU5BSUFRZ0FVc05BVUVCSUFSMElRZEI2SjBCSUFSQklHeHFJUXBCQUNFRkFrQURRQ0FGSUFsUERRRkJxTEVCRURJZ0IwRUJkaUVJUVFBaEJnSkFBMEFnQmlBSVR3MEJJQUFnQlNBR2FrSEFBV3hxSVFzZ0N5QUlRY0FCYkdvaERDQU1RYWl4QVVISXNRRVF6UUVnQzBHSXN3RVFtQUZCaUxNQlFjaXhBU0FMRUtFQlFZaXpBVUhJc1FFZ0RCQ21BVUdvc1FFZ0NrR29zUUVRS2lBR1FRRnFJUVlNQUFzTElBVWdCMm9oQlF3QUN3c2dCRUVCYWlFRURBQUxDeUFBSUFFZ0FpQURFTkFCQzBNQ0FYOEJmeUFBUVFGMklRSkJBQ0VCQWtBRFFDQUNSUTBCSUFKQkFYWWhBaUFCUVFGcUlRRU1BQXNMSUFCQkFTQUJkRWNFUUFBTElBRkJIRXNFUUFBTElBRUxIZ0VCZnlBQkVOSUJJUUpCeUxRQkVESWdBQ0FDUVFCQnlMUUJFTkVCQ3lRQ0FYOEJmeUFCRU5JQklRSkJpS1VCSUFKQklHeHFJUU1nQUNBQ1FRRWdBeERSQVF0OEF3Ri9BWDhCZnlBRFFlaTBBUkFBUVFBaEJ3SkFBMEFnQnlBQ1JnMEJJQUFnQjBIQUFXeHFJUVVnQVNBSFFjQUJiR29oQmlBR1FlaTBBVUdJdFFFUXpRRWdCVUhJdGdFUW1BRkJ5TFlCUVlpMUFTQUZFS0VCUWNpMkFVR0l0UUVnQmhDbUFVSG90QUVnQkVIb3RBRVFLaUFIUVFGcUlRY01BQXNMQzhzQkNRRi9BWDhCZndGL0FYOEJmd0YvQVg4QmYwRUJJQUowSVFRZ0JFRUJkaUVGSUFFZ0FuWWhBeUFGUWNBQmJDRUdRZWlkQVNBQ1FTQnNhaUVMUVFBaENRSkFBMEFnQ1NBRFJnMEJRWWk0QVJBeVFRQWhDZ0pBQTBBZ0NpQUZSZzBCSUFBZ0NTQUViQ0FLYWtIQUFXeHFJUWNnQnlBR2FpRUlJQWhCaUxnQlFhaTRBUkROQVNBSFFlaTVBUkNZQVVIb3VRRkJxTGdCSUFjUW9RRkI2TGtCUWFpNEFTQUlFS1lCUVlpNEFTQUxRWWk0QVJBcUlBcEJBV29oQ2d3QUN3c2dDVUVCYWlFSkRBQUxDd3VEQVFRQmZ3Ri9BWDhCZnlBQlFRRjJJUVlnQVVFQlJnUkFJQUFnQmtIQUFXeHFJQUlnQUNBR1FjQUJiR29RelFFTFFRQWhCUUpBQTBBZ0JTQUdSZzBCSUFBZ0JVSEFBV3hxSVFNZ0FDQUJRUUZySUFWclFjQUJiR29oQkNBRUlBSkJxTHNCRU0wQklBTWdBaUFFRU0wQlFhaTdBU0FERUpnQklBVkJBV29oQlF3QUN3c0xGZ0FnQVVIb3ZBRVFMaUFBUWVpOEFVRWdJQUlRYlFzWEFDQUJRWWk5QVJBdUlBQkJpTDBCUVNBZ0FoREJBUXRZQkFGL0FYOEJmd0YvSUFBaEJ5QUVJUWdnQWtHb3ZRRVFBRUVBSVFZQ1FBTkFJQVlnQVVZTkFTQUhRYWk5QVNBSUVDb2dCMEVnYWlFSElBaEJJR29oQ0VHb3ZRRWdBMEdvdlFFUUtpQUdRUUZxSVFZTUFBc0xDMXNFQVg4QmZ3Ri9BWDhnQUNFSElBUWhDQ0FDUWNpOUFSQUFRUUFoQmdKQUEwQWdCaUFCUmcwQklBZEJ5TDBCSUFnUXdnRWdCMEhnQUdvaEJ5QUlRZUFBYWlFSVFjaTlBU0FEUWNpOUFSQXFJQVpCQVdvaEJnd0FDd3NMV3dRQmZ3Ri9BWDhCZnlBQUlRY2dCQ0VJSUFKQjZMMEJFQUJCQUNFR0FrQURRQ0FHSUFGR0RRRWdCMEhvdlFFZ0NCRFlBU0FIUWNBQWFpRUhJQWhCNEFCcUlRaEI2TDBCSUFOQjZMMEJFQ29nQmtFQmFpRUdEQUFMQ3d0YkJBRi9BWDhCZndGL0lBQWhCeUFFSVFnZ0FrR0l2Z0VRQUVFQUlRWUNRQU5BSUFZZ0FVWU5BU0FIUVlpK0FTQUlFTTBCSUFkQndBRnFJUWNnQ0VIQUFXb2hDRUdJdmdFZ0EwR0l2Z0VRS2lBR1FRRnFJUVlNQUFzTEMxc0VBWDhCZndGL0FYOGdBQ0VISUFRaENDQUNRYWkrQVJBQVFRQWhCZ0pBQTBBZ0JpQUJSZzBCSUFkQnFMNEJJQWdRMlFFZ0IwR0FBV29oQnlBSVFjQUJhaUVJUWFpK0FTQURRYWkrQVJBcUlBWkJBV29oQmd3QUN3c0xEUUJCaU1ZQklBQWdBUkNCQVFzWUFDQUFFSHdnQUVIQUFHb1FmSEVnQUVHQUFXb1FmSEVMR1FBZ0FCQjlJQUJCd0FCcUVIeHhJQUJCZ0FGcUVIeHhEd3NXQUNBQUVINGdBRUhBQUdvUWZpQUFRWUFCYWhCK0N4WUFJQUFRZnlBQVFjQUFhaEIrSUFCQmdBRnFFSDRMSndBZ0FDQUJFSUFCSUFCQndBQnFJQUZCd0FCcUVJQUJJQUJCZ0FGcUlBRkJnQUZxRUlBQkMrVUNBQ0FBSUFGQnlNY0JFSUVCSUFCQndBQnFJQUZCd0FCcVFZaklBUkNCQVNBQVFZQUJhaUFCUVlBQmFrSEl5QUVRZ1FFZ0FDQUFRY0FBYWtHSXlRRVFoQUVnQVNBQlFjQUFha0hJeVFFUWhBRWdBQ0FBUVlBQmFrR0l5Z0VRaEFFZ0FTQUJRWUFCYWtISXlnRVFoQUVnQUVIQUFHb2dBRUdBQVdwQmlNc0JFSVFCSUFGQndBQnFJQUZCZ0FGcVFjakxBUkNFQVVISXh3RkJpTWdCUVlqTUFSQ0VBVUhJeHdGQnlNZ0JRY2pNQVJDRUFVR0l5QUZCeU1nQlFZak5BUkNFQVVHSXl3RkJ5TXNCSUFJUWdRRWdBa0dJelFFZ0FoQ0ZBU0FDSUFJUTN3RkJ5TWNCSUFJZ0FoQ0VBVUdJeVFGQnlNa0JJQUpCd0FCcUVJRUJJQUpCd0FCcVFZak1BU0FDUWNBQWFoQ0ZBVUhJeUFGQnlNMEJFTjhCSUFKQndBQnFRY2pOQVNBQ1FjQUFhaENFQVVHSXlnRkJ5TW9CSUFKQmdBRnFFSUVCSUFKQmdBRnFRY2pNQVNBQ1FZQUJhaENGQVNBQ1FZQUJha0dJeUFFZ0FrR0FBV29RaEFFTGdRSUFJQUJCaU00QkVJTUJJQUFnQUVIQUFHcEJ5TTRCRUlFQlFjak9BVUhJemdGQmlNOEJFSVFCSUFBZ0FFSEFBR3BCeU04QkVJVUJRY2pQQVNBQVFZQUJha0hJendFUWhBRkJ5TThCUWNqUEFSQ0RBU0FBUWNBQWFpQUFRWUFCYWtHSTBBRVFnUUZCaU5BQlFZalFBVUhJMEFFUWhBRWdBRUdBQVdwQmlORUJFSU1CUWNqUUFTQUJFTjhCUVlqT0FTQUJJQUVRaEFGQmlORUJJQUZCd0FCcUVOOEJRWWpQQVNBQlFjQUFhaUFCUWNBQWFoQ0VBVUdJemdGQmlORUJJQUZCZ0FGcUVJUUJRY2pRQVNBQlFZQUJhaUFCUVlBQmFoQ0ZBVUhJendFZ0FVR0FBV29nQVVHQUFXb1FoQUZCaU04QklBRkJnQUZxSUFGQmdBRnFFSVFCQ3pVQUlBQWdBU0FDRUlRQklBQkJ3QUJxSUFGQndBQnFJQUpCd0FCcUVJUUJJQUJCZ0FGcUlBRkJnQUZxSUFKQmdBRnFFSVFCQ3pVQUlBQWdBU0FDRUlVQklBQkJ3QUJxSUFGQndBQnFJQUpCd0FCcUVJVUJJQUJCZ0FGcUlBRkJnQUZxSUFKQmdBRnFFSVVCQ3ljQUlBQWdBUkNHQVNBQVFjQUFhaUFCUWNBQWFoQ0dBU0FBUVlBQmFpQUJRWUFCYWhDR0FRc3dBUUYvSUFCQmdBRnFFSTBCSVFFZ0FRUkFJQUVQQ3lBQVFjQUFhaENOQVNFQklBRUVRQ0FCRHdzZ0FCQ05BUThMSndBZ0FDQUJFSWdCSUFCQndBQnFJQUZCd0FCcUVJZ0JJQUJCZ0FGcUlBRkJnQUZxRUlnQkN5Y0FJQUFnQVJDSkFTQUFRY0FBYWlBQlFjQUFhaENKQVNBQVFZQUJhaUFCUVlBQmFoQ0pBUXNwQUNBQUlBRVFpZ0VnQUVIQUFHb2dBVUhBQUdvUWlnRnhJQUJCZ0FGcUlBRkJnQUZxRUlvQmNRdXJBZ0FnQUVISTBRRVFnd0VnQUVIQUFHcEJpTklCRUlNQklBQkJnQUZxUWNqU0FSQ0RBU0FBSUFCQndBQnFRWWpUQVJDQkFTQUFJQUJCZ0FGcVFjalRBUkNCQVNBQVFjQUFhaUFBUVlBQmFrR0kxQUVRZ1FGQmlOUUJRY2pVQVJEZkFVSEkwUUZCeU5RQlFjalVBUkNGQVVISTBnRkJpTlVCRU44QlFZalZBVUdJMHdGQmlOVUJFSVVCUVlqU0FVSEkwd0ZCeU5VQkVJVUJJQUJCZ0FGcVFZalZBVUdJMWdFUWdRRWdBRUhBQUdwQnlOVUJRY2pXQVJDQkFVR0kxZ0ZCeU5ZQlFZaldBUkNFQVVHSTFnRkJpTllCRU44QklBQkJ5TlFCUWNqV0FSQ0JBVUhJMWdGQmlOWUJRWWpXQVJDRUFVR0kxZ0ZCaU5ZQkVJc0JRWWpXQVVISTFBRWdBUkNCQVVHSTFnRkJpTlVCSUFGQndBQnFFSUVCUVlqV0FVSEkxUUVnQVVHQUFXb1FnUUVMTXdBZ0FDQUJJQUlnQXhDTUFTQUFRY0FBYWlBQklBSWdBMEhBQUdvUWpBRWdBRUdBQVdvZ0FTQUNJQU5CZ0FGcUVJd0JDek1BSUFCQmdBRnFFSHdFUUNBQVFjQUFhaEI4QkVBZ0FCQ09BUThGSUFCQndBQnFFSTRCRHdzTElBQkJnQUZxRUk0QkR3dVBBZ1FCZndGL0FYOEJmMEVBS0FJQUlRVkJBQ0FGSUFKQkFXcEJ3QUZzYWpZQ0FDQUZFT01CSUFBaEJpQUZRY0FCYWlFRlFRQWhDQUpBQTBBZ0NDQUNSZzBCSUFZUTRBRUVRQ0FGUWNBQmF5QUZFT1FCQlNBR0lBVkJ3QUZySUFVUTVRRUxJQVlnQVdvaEJpQUZRY0FCYWlFRklBaEJBV29oQ0F3QUN3c2dCaUFCYXlFR0lBVkJ3QUZySVFVZ0F5QUNRUUZySUFSc2FpRUhJQVVnQlJEdUFRSkFBMEFnQ0VVTkFTQUdFT0FCQkVBZ0JTQUZRY0FCYXhEa0FTQUhFT0lCQlNBRlFjQUJhMEdJMXdFUTVBRWdCU0FHSUFWQndBRnJFT1VCSUFWQmlOY0JJQWNRNVFFTElBWWdBV3NoQmlBSElBUnJJUWNnQlVIQUFXc2hCU0FJUVFGcklRZ01BQXNMUVFBZ0JUWUNBQXZPQWdJQmZ3Ri9JQUpGQkVBZ0F4RGpBUThMSUFCQnlOZ0JFT1FCSUFNUTR3RWdBaUVFQWtBRFFDQUVRUUZySVFRZ0FTQUVhaTBBQUNFRklBTWdBeERtQVNBRlFZQUJUd1JBSUFWQmdBRnJJUVVnQTBISTJBRWdBeERsQVFzZ0F5QURFT1lCSUFWQndBQlBCRUFnQlVIQUFHc2hCU0FEUWNqWUFTQURFT1VCQ3lBRElBTVE1Z0VnQlVFZ1R3UkFJQVZCSUdzaEJTQURRY2pZQVNBREVPVUJDeUFESUFNUTVnRWdCVUVRVHdSQUlBVkJFR3NoQlNBRFFjallBU0FERU9VQkN5QURJQU1RNWdFZ0JVRUlUd1JBSUFWQkNHc2hCU0FEUWNqWUFTQURFT1VCQ3lBRElBTVE1Z0VnQlVFRVR3UkFJQVZCQkdzaEJTQURRY2pZQVNBREVPVUJDeUFESUFNUTVnRWdCVUVDVHdSQUlBVkJBbXNoQlNBRFFjallBU0FERU9VQkN5QURJQU1RNWdFZ0JVRUJUd1JBSUFWQkFXc2hCU0FEUWNqWUFTQURFT1VCQ3lBRVJRMEJEQUFMQ3dzckFFR0l4Z0VnQUVHQUFXb2dBUkNCQVNBQUlBRkJ3QUJxRUlBQklBQkJ3QUJxSUFGQmdBRnFFSUFCQ3hFQUlBQVE0QUVnQUVIQUFXb1E0QUZ4Q3hJQUlBQVE0UUVnQUVIQUFXb1E0QUZ4RHdzUUFDQUFFT0lCSUFCQndBRnFFT0lCQ3hBQUlBQVE0d0VnQUVIQUFXb1E0Z0VMR0FBZ0FDQUJFT1FCSUFCQndBRnFJQUZCd0FGcUVPUUJDNFVCQUNBQUlBRkJpTm9CRU9VQklBQkJ3QUZxSUFGQndBRnFRY2piQVJEbEFTQUFJQUJCd0FGcVFZamRBUkRuQVNBQklBRkJ3QUZxUWNqZUFSRG5BVUdJM1FGQnlONEJRWWpkQVJEbEFVSEkyd0VnQWhEekFVR0kyZ0VnQWlBQ0VPY0JRWWphQVVISTJ3RWdBa0hBQVdvUTV3RkJpTjBCSUFKQndBRnFJQUpCd0FGcUVPZ0JDeHdBSUFBZ0FTQUNFT1VCSUFCQndBRnFJQUVnQWtIQUFXb1E1UUVMZlFBZ0FDQUFRY0FCYWtHSTRBRVE1UUVnQUNBQVFjQUJha0hJNFFFUTV3RWdBRUhBQVdwQmlPTUJFUE1CSUFCQmlPTUJRWWpqQVJEbkFVR0k0QUZCeU9RQkVQTUJRY2prQVVHSTRBRkJ5T1FCRU9jQlFjamhBVUdJNHdFZ0FSRGxBU0FCUWNqa0FTQUJFT2dCUVlqZ0FVR0k0QUVnQVVIQUFXb1E1d0VMSUFBZ0FDQUJJQUlRNXdFZ0FFSEFBV29nQVVIQUFXb2dBa0hBQVdvUTV3RUxJQUFnQUNBQklBSVE2QUVnQUVIQUFXb2dBVUhBQVdvZ0FrSEFBV29RNkFFTEdBQWdBQ0FCRU9rQklBQkJ3QUZxSUFGQndBRnFFT2tCQ3hnQUlBQWdBUkRrQVNBQVFjQUJhaUFCUWNBQmFoRHBBUXNZQUNBQUlBRVE2d0VnQUVIQUFXb2dBVUhBQVdvUTZ3RUxHQUFnQUNBQkVPd0JJQUJCd0FGcUlBRkJ3QUZxRU93QkN4a0FJQUFnQVJEdEFTQUFRY0FCYWlBQlFjQUJhaER0QVhFTGFnQWdBRUdJNWdFUTVnRWdBRUhBQVdwQnlPY0JFT1lCUWNqbkFVR0k2UUVROHdGQmlPWUJRWWpwQVVHSTZRRVE2QUZCaU9rQlFjanFBUkR1QVNBQVFjanFBU0FCRU9VQklBQkJ3QUZxUWNqcUFTQUJRY0FCYWhEbEFTQUJRY0FCYWlBQlFjQUJhaERwQVFzZ0FDQUFJQUVnQWlBREVPOEJJQUJCd0FGcUlBRWdBaUFEUWNBQmFoRHZBUXNkQVFGL0lBQkJ3QUZxRU9vQklRRWdBUVJBSUFFUEN5QUFFT29CRHdzZUFDQUFRY0FCYWhEZ0FRUkFJQUFROEFFUEN5QUFRY0FCYWhEd0FROExqd0lFQVg4QmZ3Ri9BWDlCQUNnQ0FDRUZRUUFnQlNBQ1FRRnFRWUFEYkdvMkFnQWdCUkQzQVNBQUlRWWdCVUdBQTJvaEJVRUFJUWdDUUFOQUlBZ2dBa1lOQVNBR0VQUUJCRUFnQlVHQUEyc2dCUkQ0QVFVZ0JpQUZRWUFEYXlBRkVQa0JDeUFHSUFGcUlRWWdCVUdBQTJvaEJTQUlRUUZxSVFnTUFBc0xJQVlnQVdzaEJpQUZRWUFEYXlFRklBTWdBa0VCYXlBRWJHb2hCeUFGSUFVUWd3SUNRQU5BSUFoRkRRRWdCaEQwQVFSQUlBVWdCVUdBQTJzUStBRWdCeEQyQVFVZ0JVR0FBMnRCaU93QkVQZ0JJQVVnQmlBRlFZQURheEQ1QVNBRlFZanNBU0FIRVBrQkN5QUdJQUZySVFZZ0J5QUVheUVISUFWQmdBTnJJUVVnQ0VFQmF5RUlEQUFMQzBFQUlBVTJBZ0FMemdJQ0FYOEJmeUFDUlFSQUlBTVE5d0VQQ3lBQVFZanZBUkQ0QVNBREVQY0JJQUloQkFKQUEwQWdCRUVCYXlFRUlBRWdCR290QUFBaEJTQURJQU1RK3dFZ0JVR0FBVThFUUNBRlFZQUJheUVGSUFOQmlPOEJJQU1RK1FFTElBTWdBeEQ3QVNBRlFjQUFUd1JBSUFWQndBQnJJUVVnQTBHSTd3RWdBeEQ1QVFzZ0F5QURFUHNCSUFWQklFOEVRQ0FGUVNCcklRVWdBMEdJN3dFZ0F4RDVBUXNnQXlBREVQc0JJQVZCRUU4RVFDQUZRUkJySVFVZ0EwR0k3d0VnQXhENUFRc2dBeUFERVBzQklBVkJDRThFUUNBRlFRaHJJUVVnQTBHSTd3RWdBeEQ1QVFzZ0F5QURFUHNCSUFWQkJFOEVRQ0FGUVFScklRVWdBMEdJN3dFZ0F4RDVBUXNnQXlBREVQc0JJQVZCQWs4RVFDQUZRUUpySVFVZ0EwR0k3d0VnQXhENUFRc2dBeUFERVBzQklBVkJBVThFUUNBRlFRRnJJUVVnQTBHSTd3RWdBeEQ1QVFzZ0JFVU5BUXdBQ3dzTDBRRUFRWWorQVJEM0FVR0kvZ0ZCaVA0QkVQNEJJQUJCaVBJQlFjQUJRWWoxQVJDSUFrR0k5UUZCaVBnQkVQc0JJQUJCaVBnQlFZajRBUkQ1QVVHSStBRkJpUHNCRVA4QlFZajdBVUdJK0FGQmlQc0JFUGtCUVlqN0FVR0kvZ0VRZ2dJRVFBQUxRWWoxQVNBQVFZaUJBaEQ1QVVHSStBRkJpUDRCRUlJQ0JFQkJpUDRCRU9JQlFjai9BUkRqQVVHSS9nRkJpSUVDSUFFUStRRUZRWWlFQWhEM0FVR0loQUpCaVBnQlFZaUVBaEQ4QVVHSWhBSkJ5UE1CUWNBQlFZaUVBaENJQWtHSWhBSkJpSUVDSUFFUStRRUxDMm9BUWNpUkFoRDNBVUhJa1FKQnlKRUNFUDRCSUFCQmlJY0NRY0FCUWNpSUFoQ0lBa0hJaUFKQnlJc0NFUHNCSUFCQnlJc0NRY2lMQWhENUFVSElpd0pCeUk0Q0VQOEJRY2lPQWtISWl3SkJ5STRDRVBrQlFjaU9Ba0hJa1FJUWdnSUVRRUVBRHd0QkFROEw0d0lBSUFBZ0FVR0FBV29nQWtIQUFHb1FnUUVnQVNBQ1FjQUFhaUFDUWNBQWFoQ0ZBU0FBUWNBQWFpQUJRWUFCYWtHUXNRTVFnUUVnQVVIQUFHcEJrTEVEUVpDeEF4Q0ZBU0FDUWNBQWFrSFFzUU1RZ3dGQmtMRURRWkN5QXhDREFTQUNRY0FBYWtIUXNRTkIwTElERUlFQklBRkIwTEVEUVpDekF4Q0JBVUdRc3dOQmtMTURRWkMwQXhDRUFTQUJRWUFCYWtHUXNnTkIwTE1ERUlFQlFkQ3lBMEhRc3dOQjBMTURFSVFCUWRDekEwR1F0QU5CMExNREVJVUJJQUpCd0FCcVFkQ3pBeUFCRUlFQlFkQ3lBeUFCUWNBQWFpQUJRY0FBYWhDQkFVR1Fzd05CMExNRFFaQzBBeENGQVVHUXNRTkJrTFFEUVpDMEF4Q0JBVUdRdEFNZ0FVSEFBR29nQVVIQUFHb1FoUUVnQVVHQUFXcEIwTElESUFGQmdBRnFFSUVCSUFKQndBQnFJQUJCd0FCcVFaQzBBeENCQVVHUXNRTWdBQ0FDRUlFQklBSkJrTFFESUFJUWhRRWdBa0dJeGdFZ0FoQ0JBVUdRc1FNZ0FrR0FBV29RaGdFTHF3TUFJQUJCd0FCcVFjakdBVUhRdEFNUWdRRWdBRUhRdEFOQjBMUURFSUVCSUFCQndBQnFRWkMxQXhDREFTQUFRWUFCYWtIUXRRTVFnd0ZCMExVRFFkQzFBMEdRdGdNUWhBRkJrTFlEUWRDMUEwR1F0Z01RaEFGQmlNY0JRWkMyQTBIUXRnTVFnUUZCMExZRFFkQzJBMEdRdHdNUWhBRkIwTFlEUVpDM0EwR1F0d01RaEFGQmtMVURRWkMzQTBIUXR3TVFoQUZCMExjRFFjakdBVUhRdHdNUWdRRkJrTFVEUWRDMUEwR1F1Z01RaEFFZ0FFSEFBR29nQUVHQUFXcEJrTGdERUlRQlFaQzRBMEdRdUFNUWd3RkJrTGdEUVpDNkEwR1F1QU1RaFFGQjBMWURRWkMxQTBIUXVBTVFoUUVnQUVHUXVRTVFnd0ZCMExZRFFkQzVBeENEQVVHUXRRTkJrTGNEUVpDNkF4Q0ZBVUhRdEFOQmtMb0RJQUFRZ1FGQjBMa0RRZEM1QTBHUXVnTVFoQUZCMExrRFFaQzZBMEdRdWdNUWhBRkIwTGNESUFCQndBQnFFSU1CSUFCQndBQnFRWkM2QXlBQVFjQUFhaENGQVVHUXRRTkJrTGdESUFCQmdBRnFFSUVCUVlqR0FVSFF1QU1nQVJDQkFVR1F1QU1nQVVIQUFHb1FoZ0ZCa0xrRFFaQzVBeUFCUVlBQmFoQ0VBVUdRdVFNZ0FVR0FBV29nQVVHQUFXb1FoQUVMQ0FBZ0FDQUJFRmtMUlFBZ0FDQUJFSWNCUWRDNkF5QUJJQUVRZ1FFZ0FFSEFBR29nQVVIQUFHb1Fod0ZCa0xzRElBRkJ3QUJxSUFGQndBQnFFSUVCSUFCQmdBRnFJQUZCZ0FGcUVJY0JDOHdCQWdGL0FYOGdBQ0FCUVFCcUVLMEJJQUZCQUdwQjBMc0RFSUFCSUFGQndBQnFRWkM4QXhDQUFVSFF2QU1RZnlBQlFjQUJhaUVDUVQ4aEF3SkFBMEJCMExzRElBSVFqQUlnQWtIQUFXb2hBaUFETEFESWxBSUVRQ0FCUVFCcVFkQzdBeUFDRUlzQ0lBSkJ3QUZxSVFJTElBTkZEUUVnQTBFQmF5RUREQUFMQ3lBQlFRQnFRWkM5QXhDT0FrR1F2UU5CMEw0REVJNENRWkMvQTBHUXZ3TVFoZ0ZCa0wwRFFkQzdBeUFDRUlzQ0lBSkJ3QUZxSVFKQjBMNERRZEM3QXlBQ0VJc0NJQUpCd0FGcUlRSUxzQVVBSUFNZ0FFR1F3d01RZ1FFZ0EwR0FBV29nQWtIUXd3TVFnUUVnQTBHQUFtb2dBVUdReEFNUWdRRWdBeUFEUVlBQ2FrR1F3UU1RaEFFZ0F5QURRWUFCYWtIUXdBTVFoQUVnQTBIQUFHb2dBMEhBQVdwQjBNRURFSVFCUWREQkF5QURRY0FDYWtIUXdRTVFoQUVnQTBIQUFHb2dBa0hReEFNUWdRRkIwTVFEUVpERUEwR1F3Z01RaEFGQmlNWUJRWkRDQTBIUXdnTVFnUUZCME1JRFFaRERBeUFERUlRQklBTkJ3QUpxSUFGQmtNSURFSUVCUWRERUEwR1F3Z05CME1RREVJUUJRWkRDQTBIUXd3TkJrTUlERUlRQlFZakdBVUdRd2dOQjBNSURFSUVCSUFOQndBQnFJQUJCa01JREVJRUJRZERFQTBHUXdnTkIwTVFERUlRQlFkRENBMEdRd2dNZ0EwSEFBR29RaEFFZ0FDQUNRWkRBQXhDRUFVSFF3QU5Ca01BRFFaRENBeENCQVVHUXd3TkIwTU1EUVpERkF4Q0VBVUdRd2dOQmtNVURRWkRDQXhDRkFTQURRY0FCYWlBQlFkRENBeENCQVVIUXhBTkIwTUlEUWRERUF4Q0VBU0FEUVlBQmFpQURRWUFDYWtHUXdBTVFoQUZCa01JRFFkRENBeUFEUVlBQmFoQ0VBU0FDSUFGQjBNQURFSVFCUWREQUEwR1F3QU5Ca01JREVJRUJRZEREQTBHUXhBTkJrTVVERUlRQlFaRENBMEdReFFOQmtNSURFSVVCUVlqR0FVR1F3Z05CME1JREVJRUJJQU5Cd0FGcUlBQkJrTUlERUlFQlFkREVBMEdRd2dOQjBNUURFSVFCUWREQ0EwR1F3Z01nQTBIQUFXb1FoQUVnQTBIQUFtb2dBa0dRd2dNUWdRRkIwTVFEUVpEQ0EwSFF4QU1RaEFGQmlNWUJRWkRDQTBIUXdnTVFnUUVnQUNBQlFaREFBeENFQVVHUXdRTkJrTUFEUVpEQ0F4Q0JBVUdRd3dOQmtNUURRWkRGQXhDRUFVR1F3Z05Ca01VRFFaRENBeENGQVVIUXdnTkJrTUlESUFOQmdBSnFFSVFCSUFBZ0FrR1F3QU1RaEFGQmtNQURJQUZCa01BREVJUUJRZERCQTBHUXdBTkJrTUlERUlFQlFaRENBMEhReEFNZ0EwSEFBbW9RaFFFTE9nQWdBRUhReFFNUWdBRkJrTVlERUg0Z0FrSFF4Z01RZ0FGQmtNY0RFSDRnQVVIUXh3TVFnQUZCa01nREVINUIwTVVESUFNZ0F4RDVBUXVjQWdJQmZ3Ri9JQUlROXdFZ0FVSEFBV29oQTBFL0lRUUNRQU5BSUFJZ0FoRDdBU0FEUWNBQWFpQUFRU0JxUWRESUF4Q0NBU0FEUVlBQmFpQUFRWkRKQXhDQ0FTQURRZERJQTBHUXlRTWdBaENRQWlBRFFjQUJhaUVESUFRc0FNaVVBZ1JBSUFOQndBQnFJQUJCSUdwQjBNZ0RFSUlCSUFOQmdBRnFJQUJCa01rREVJSUJJQU5CME1nRFFaREpBeUFDRUpBQ0lBTkJ3QUZxSVFNTElBUkZEUUVnQkVFQmF5RUVEQUFMQ3lBRFFjQUFhaUFBUVNCcVFkRElBeENDQVNBRFFZQUJhaUFBUVpESkF4Q0NBU0FEUWRESUEwR1F5UU1nQWhDUUFpQURRY0FCYWlFRElBTkJ3QUJxSUFCQklHcEIwTWdERUlJQklBTkJnQUZxSUFCQmtNa0RFSUlCSUFOQjBNZ0RRWkRKQXlBQ0VKQUNJQU5Cd0FGcUlRTUxiQUFnQUVIUXlRTWdBUkNCQVNBQVFjQUFha0dReWdNZ0FVSEFBR29RZ1FFZ0FFR0FBV3BCME1vRElBRkJnQUZxRUlFQklBQkJ3QUZxUVpETEF5QUJRY0FCYWhDQkFTQUFRWUFDYWtIUXl3TWdBVUdBQW1vUWdRRWdBRUhBQW1wQmtNd0RJQUZCd0FKcUVJRUJDNG9DQUNBQUlBRVFBQ0FBUVNCcUlBRkJJR29RRWlBQlFkRE1BeUFCRUlFQklBQkJ3QUJxSUFGQndBQnFFQUFnQUVIZ0FHb2dBVUhnQUdvUUVpQUJRY0FBYWtHUXpRTWdBVUhBQUdvUWdRRWdBRUdBQVdvZ0FVR0FBV29RQUNBQVFhQUJhaUFCUWFBQmFoQVNJQUZCZ0FGcVFkRE5BeUFCUVlBQmFoQ0JBU0FBUWNBQmFpQUJRY0FCYWhBQUlBQkI0QUZxSUFGQjRBRnFFQklnQVVIQUFXcEJrTTRESUFGQndBRnFFSUVCSUFCQmdBSnFJQUZCZ0FKcUVBQWdBRUdnQW1vZ0FVR2dBbW9RRWlBQlFZQUNha0hRemdNZ0FVR0FBbW9RZ1FFZ0FFSEFBbW9nQVVIQUFtb1FBQ0FBUWVBQ2FpQUJRZUFDYWhBU0lBRkJ3QUpxUVpEUEF5QUJRY0FDYWhDQkFRdHNBQ0FBUWREUEF5QUJFSUVCSUFCQndBQnFRWkRRQXlBQlFjQUFhaENCQVNBQVFZQUJha0hRMEFNZ0FVR0FBV29RZ1FFZ0FFSEFBV3BCa05FRElBRkJ3QUZxRUlFQklBQkJnQUpxUWREUkF5QUJRWUFDYWhDQkFTQUFRY0FDYWtHUTBnTWdBVUhBQW1vUWdRRUxpZ0lBSUFBZ0FSQUFJQUJCSUdvZ0FVRWdhaEFTSUFGQjBOSURJQUVRZ1FFZ0FFSEFBR29nQVVIQUFHb1FBQ0FBUWVBQWFpQUJRZUFBYWhBU0lBRkJ3QUJxUVpEVEF5QUJRY0FBYWhDQkFTQUFRWUFCYWlBQlFZQUJhaEFBSUFCQm9BRnFJQUZCb0FGcUVCSWdBVUdBQVdwQjBOTURJQUZCZ0FGcUVJRUJJQUJCd0FGcUlBRkJ3QUZxRUFBZ0FFSGdBV29nQVVIZ0FXb1FFaUFCUWNBQmFrR1ExQU1nQVVIQUFXb1FnUUVnQUVHQUFtb2dBVUdBQW1vUUFDQUFRYUFDYWlBQlFhQUNhaEFTSUFGQmdBSnFRZERVQXlBQlFZQUNhaENCQVNBQVFjQUNhaUFCUWNBQ2FoQUFJQUJCNEFKcUlBRkI0QUpxRUJJZ0FVSEFBbXBCa05VRElBRkJ3QUpxRUlFQkMyd0FJQUJCME5VRElBRVFnUUVnQUVIQUFHcEJrTllESUFGQndBQnFFSUVCSUFCQmdBRnFRZERXQXlBQlFZQUJhaENCQVNBQVFjQUJha0dRMXdNZ0FVSEFBV29RZ1FFZ0FFR0FBbXBCME5jRElBRkJnQUpxRUlFQklBQkJ3QUpxUVpEWUF5QUJRY0FDYWhDQkFRdUtBZ0FnQUNBQkVBQWdBRUVnYWlBQlFTQnFFQklnQVVIUTJBTWdBUkNCQVNBQVFjQUFhaUFCUWNBQWFoQUFJQUJCNEFCcUlBRkI0QUJxRUJJZ0FVSEFBR3BCa05rRElBRkJ3QUJxRUlFQklBQkJnQUZxSUFGQmdBRnFFQUFnQUVHZ0FXb2dBVUdnQVdvUUVpQUJRWUFCYWtIUTJRTWdBVUdBQVdvUWdRRWdBRUhBQVdvZ0FVSEFBV29RQUNBQVFlQUJhaUFCUWVBQmFoQVNJQUZCd0FGcVFaRGFBeUFCUWNBQmFoQ0JBU0FBUVlBQ2FpQUJRWUFDYWhBQUlBQkJvQUpxSUFGQm9BSnFFQklnQVVHQUFtcEIwTm9ESUFGQmdBSnFFSUVCSUFCQndBSnFJQUZCd0FKcUVBQWdBRUhnQW1vZ0FVSGdBbW9RRWlBQlFjQUNha0dRMndNZ0FVSEFBbW9RZ1FFTGJBQWdBRUhRMndNZ0FSQ0JBU0FBUWNBQWFrR1EzQU1nQVVIQUFHb1FnUUVnQUVHQUFXcEIwTndESUFGQmdBRnFFSUVCSUFCQndBRnFRWkRkQXlBQlFjQUJhaENCQVNBQVFZQUNha0hRM1FNZ0FVR0FBbW9RZ1FFZ0FFSEFBbXBCa040RElBRkJ3QUpxRUlFQkM0b0NBQ0FBSUFFUUFDQUFRU0JxSUFGQklHb1FFaUFCUWREZUF5QUJFSUVCSUFCQndBQnFJQUZCd0FCcUVBQWdBRUhnQUdvZ0FVSGdBR29RRWlBQlFjQUFha0dRM3dNZ0FVSEFBR29RZ1FFZ0FFR0FBV29nQVVHQUFXb1FBQ0FBUWFBQmFpQUJRYUFCYWhBU0lBRkJnQUZxUWREZkF5QUJRWUFCYWhDQkFTQUFRY0FCYWlBQlFjQUJhaEFBSUFCQjRBRnFJQUZCNEFGcUVCSWdBVUhBQVdwQmtPQURJQUZCd0FGcUVJRUJJQUJCZ0FKcUlBRkJnQUpxRUFBZ0FFR2dBbW9nQVVHZ0Ftb1FFaUFCUVlBQ2FrSFE0QU1nQVVHQUFtb1FnUUVnQUVIQUFtb2dBVUhBQW1vUUFDQUFRZUFDYWlBQlFlQUNhaEFTSUFGQndBSnFRWkRoQXlBQlFjQUNhaENCQVF0c0FDQUFRZERoQXlBQkVJRUJJQUJCd0FCcVFaRGlBeUFCUWNBQWFoQ0JBU0FBUVlBQmFrSFE0Z01nQVVHQUFXb1FnUUVnQUVIQUFXcEJrT01ESUFGQndBRnFFSUVCSUFCQmdBSnFRZERqQXlBQlFZQUNhaENCQVNBQVFjQUNha0dRNUFNZ0FVSEFBbW9RZ1FFTGlnSUFJQUFnQVJBQUlBQkJJR29nQVVFZ2FoQVNJQUZCME9RRElBRVFnUUVnQUVIQUFHb2dBVUhBQUdvUUFDQUFRZUFBYWlBQlFlQUFhaEFTSUFGQndBQnFRWkRsQXlBQlFjQUFhaENCQVNBQVFZQUJhaUFCUVlBQmFoQUFJQUJCb0FGcUlBRkJvQUZxRUJJZ0FVR0FBV3BCME9VRElBRkJnQUZxRUlFQklBQkJ3QUZxSUFGQndBRnFFQUFnQUVIZ0FXb2dBVUhnQVdvUUVpQUJRY0FCYWtHUTVnTWdBVUhBQVdvUWdRRWdBRUdBQW1vZ0FVR0FBbW9RQUNBQVFhQUNhaUFCUWFBQ2FoQVNJQUZCZ0FKcVFkRG1BeUFCUVlBQ2FoQ0JBU0FBUWNBQ2FpQUJRY0FDYWhBQUlBQkI0QUpxSUFGQjRBSnFFQklnQVVIQUFtcEJrT2NESUFGQndBSnFFSUVCQ3hBQUlBQkIwT2NEUWVBQ0lBRVFpQUlMU0FBZ0FFR3c2Z01RNUFFZ0FFSEFBV3BCOE9zREVPa0JJQUJCc08wREVJTUNRYkRxQTBHdzdRTkJzUEFERVBrQlFiRHdBMEd3OHdNUWxRSkJzUEFEUWJEekF5QUJFUGtCQzRRR0FDQUFJQUJCZ0FKcVFiRDVBeENCQVNBQVFZQUNha0dJeGdGQnNQWURFSUVCSUFCQnNQWURRYkQyQXhDRUFTQUFJQUJCZ0FKcVFmRDVBeENFQVVIdytRTkJzUFlEUWJEMkF4Q0JBVUdJeGdGQnNQa0RRZkQ1QXhDQkFVR3crUU5COFBrRFFmRDVBeENFQVVHdzlnTkI4UGtEUWJEMkF4Q0ZBVUd3K1FOQnNQa0RRZkQyQXhDRUFTQUFRY0FCYWlBQVFZQUJha0d3K1FNUWdRRWdBRUdBQVdwQmlNWUJRYkQzQXhDQkFTQUFRY0FCYWtHdzl3TkJzUGNERUlRQklBQkJ3QUZxSUFCQmdBRnFRZkQ1QXhDRUFVSHcrUU5Cc1BjRFFiRDNBeENCQVVHSXhnRkJzUGtEUWZENUF4Q0JBVUd3K1FOQjhQa0RRZkQ1QXhDRUFVR3c5d05COFBrRFFiRDNBeENGQVVHdytRTkJzUGtEUWZEM0F4Q0VBU0FBUWNBQWFpQUFRY0FDYWtHdytRTVFnUUVnQUVIQUFtcEJpTVlCUWJENEF4Q0JBU0FBUWNBQWFrR3crQU5Cc1BnREVJUUJJQUJCd0FCcUlBQkJ3QUpxUWZENUF4Q0VBVUh3K1FOQnNQZ0RRYkQ0QXhDQkFVR0l4Z0ZCc1BrRFFmRDVBeENCQVVHdytRTkI4UGtEUWZENUF4Q0VBVUd3K0FOQjhQa0RRYkQ0QXhDRkFVR3crUU5Cc1BrRFFmRDRBeENFQVVHdzlnTWdBQ0FCRUlVQklBRWdBU0FCRUlRQlFiRDJBeUFCSUFFUWhBRkI4UFlESUFCQmdBSnFJQUZCZ0FKcUVJUUJJQUZCZ0FKcUlBRkJnQUpxSUFGQmdBSnFFSVFCUWZEMkF5QUJRWUFDYWlBQlFZQUNhaENFQVVIdytBTkJpTVlCUWZENUF4Q0JBVUh3K1FNZ0FFSEFBV29nQVVIQUFXb1FoQUVnQVVIQUFXb2dBVUhBQVdvZ0FVSEFBV29RaEFGQjhQa0RJQUZCd0FGcUlBRkJ3QUZxRUlRQlFiRDRBeUFBUVlBQmFpQUJRWUFCYWhDRkFTQUJRWUFCYWlBQlFZQUJhaUFCUVlBQmFoQ0VBVUd3K0FNZ0FVR0FBV29nQVVHQUFXb1FoQUZCc1BjRElBQkJ3QUJxSUFGQndBQnFFSVVCSUFGQndBQnFJQUZCd0FCcUlBRkJ3QUJxRUlRQlFiRDNBeUFCUWNBQWFpQUJRY0FBYWhDRUFVSHc5d01nQUVIQUFtb2dBVUhBQW1vUWhBRWdBVUhBQW1vZ0FVSEFBbW9nQVVIQUFtb1FoQUZCOFBjRElBRkJ3QUpxSUFGQndBSnFFSVFCQzRVQkFnRi9BWDhnQUVHUSt3TVEvd0VnQVJEM0FVRStMQUN3K2dNaUFnUkFJQUpCQVVZRVFDQUJJQUFnQVJENUFRVWdBVUdRK3dNZ0FSRDVBUXNMUVQwaEF3SkFBMEFnQVNBQkVKOENJQU1zQUxENkF5SUNCRUFnQWtFQlJnUkFJQUVnQUNBQkVQa0JCU0FCUVpEN0F5QUJFUGtCQ3dzZ0EwVU5BU0FEUVFGcklRTU1BQXNMQzdVQ0FDQUFRWkQrQXhDZ0FrR1EvZ05Ca1A0REVQOEJRWkQrQTBHUWdRUVFud0pCa0lFRVFaQ0VCQkNmQWtHUWhBUkJrSUVFUVpDSEJCRDVBVUdRaHdSQmtJb0VFS0FDUVpDS0JFR1FpZ1FRL3dGQmtJb0VRWkNOQkJDZkFrR1FqUVJCa0pBRUVLQUNRWkNRQkVHUWtBUVEvd0ZCa0ljRVFaQ1RCQkQvQVVHUWtBUkJrSllFRVA4QlFaQ1dCRUdRaWdSQmtKa0VFUGtCUVpDWkJFR1Frd1JCa0p3RUVQa0JRWkNjQkVHUWdRUkJrSjhFRVBrQlFaQ2NCRUdRaWdSQmtLSUVFUGtCUVpDaUJDQUFRWkNsQkJENUFVR1Fud1JCa0tnRUVKUUNRWkNvQkVHUXBRUkJrS3NFRVBrQlFaQ2NCRUdRcmdRUWxRSkJrSzRFUVpDckJFR1FzUVFRK1FFZ0FFR1F0QVFRL3dGQmtMUUVRWkNmQkVHUXR3UVErUUZCa0xjRVFaQzZCQkNXQWtHUXVnUkJrTEVFSUFFUStRRUxGQUFnQUVHUXZRUVFuZ0pCa0wwRUlBRVFvUUlMVFFCQmtNQUVFUGNCSUFCQmtKVUNFSTBDSUFGQjBKWUNFSThDUVpDVkFrSFFsZ0pCa01NRUVKSUNRWkRBQkVHUXd3UkJrTUFFRVBrQlFaREFCRUdRd0FRUW9nSkJrTUFFSUFJUWdnSUxmUUJCa01ZRUVQY0JJQUJCa0pVQ0VJMENJQUZCMEpZQ0VJOENRWkNWQWtIUWxnSkJrTWtFRUpJQ1FaREdCRUdReVFSQmtNWUVFUGtCSUFKQmtKVUNFSTBDSUFOQjBKWUNFSThDUVpDVkFrSFFsZ0pCa01rRUVKSUNRWkRHQkVHUXlRUkJrTVlFRVBrQlFaREdCRUdReGdRUW9nSkJrTVlFSUFRUWdnSUxyUUVBUVpETUJCRDNBU0FBUVpDVkFoQ05BaUFCUWRDV0FoQ1BBa0dRbFFKQjBKWUNRWkRQQkJDU0FrR1F6QVJCa004RVFaRE1CQkQ1QVNBQ1FaQ1ZBaENOQWlBRFFkQ1dBaENQQWtHUWxRSkIwSllDUVpEUEJCQ1NBa0dRekFSQmtNOEVRWkRNQkJENUFTQUVRWkNWQWhDTkFpQUZRZENXQWhDUEFrR1FsUUpCMEpZQ1FaRFBCQkNTQWtHUXpBUkJrTThFUVpETUJCRDVBVUdRekFSQmtNd0VFS0lDUVpETUJDQUdFSUlDQzkwQkFFR1EwZ1FROXdFZ0FFR1FsUUlRalFJZ0FVSFFsZ0lRandKQmtKVUNRZENXQWtHUTFRUVFrZ0pCa05JRVFaRFZCRUdRMGdRUStRRWdBa0dRbFFJUWpRSWdBMEhRbGdJUWp3SkJrSlVDUWRDV0FrR1ExUVFRa2dKQmtOSUVRWkRWQkVHUTBnUVErUUVnQkVHUWxRSVFqUUlnQlVIUWxnSVFqd0pCa0pVQ1FkQ1dBa0dRMVFRUWtnSkJrTklFUVpEVkJFR1EwZ1FRK1FFZ0JrR1FsUUlRalFJZ0IwSFFsZ0lRandKQmtKVUNRZENXQWtHUTFRUVFrZ0pCa05JRVFaRFZCRUdRMGdRUStRRkJrTklFUVpEU0JCQ2lBa0dRMGdRZ0NCQ0NBZ3VOQWdCQmtOZ0VFUGNCSUFCQmtKVUNFSTBDSUFGQjBKWUNFSThDUVpDVkFrSFFsZ0pCa05zRUVKSUNRWkRZQkVHUTJ3UkJrTmdFRVBrQklBSkJrSlVDRUkwQ0lBTkIwSllDRUk4Q1FaQ1ZBa0hRbGdKQmtOc0VFSklDUVpEWUJFR1Eyd1JCa05nRUVQa0JJQVJCa0pVQ0VJMENJQVZCMEpZQ0VJOENRWkNWQWtIUWxnSkJrTnNFRUpJQ1FaRFlCRUdRMndSQmtOZ0VFUGtCSUFaQmtKVUNFSTBDSUFkQjBKWUNFSThDUVpDVkFrSFFsZ0pCa05zRUVKSUNRWkRZQkVHUTJ3UkJrTmdFRVBrQklBaEJrSlVDRUkwQ0lBbEIwSllDRUk4Q1FaQ1ZBa0hRbGdKQmtOc0VFSklDUVpEWUJFR1Eyd1JCa05nRUVQa0JRWkRZQkVHUTJBUVFvZ0pCa05nRUlBb1FnZ0lMTEFBZ0FFR1FsUUlRalFJZ0FVSFFsZ0lRandKQmtKVUNRZENXQWtHUTNnUVFrZ0pCa040RUlBSVFvZ0lMQy94d2VBQkJBQXNFa0RBQkFBQkJDQXNnQVFBQThKUDE0VU9SY0xsNVNPZ3pLRjFZZ1lHMlJWQzRLYUF4NFhKT1pEQUFRU2dMSUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdJQkFzZ1IvMTgyQmFNSUR5TnluRm9rV3FCbDExWWdZRzJSVkM0S2FBeDRYSk9aREFBUWFnRUN5Q2REWS9GalVOZDB6MEx4L1VvNjNnS0xFWjVlRytqYm1ZdjN3ZWF3WGNLRGdCQnlBUUxJSW42aWxOYi9Denord0ZGMUJFWjU3WDJmMEVLL3g2clJ4ODF1TXB4bjlnR0FFSG9CQXNnblEyUHhZMURYZE05QzhmMUtPdDRDaXhHZVhodm8yNW1MOThIbXNGM0NnNEFRWWdGQ3lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCcUFVTElLTitQbXdMUmhDZVJ1VTR0RWkxd01zdXJNQkEyeUlvM0JUUW1IQTVKeklZQUVISUJRc2dwSDQrYkF0R0VKNUc1VGkwU0xYQXl5NnN3RURiSWlqY0ZOQ1ljRGtuTWhnQVFlZ0ZDeURYS0sxUXFjb1hlcmtoVmVGNndXb2ZoTkpyYVU3cVN6T09uUmZPUkdjZktnQkJpQVlMSUtOK1Btd0xSaENlUnVVNHRFaTF3TXN1ck1CQTJ5SW8zQlRRbUhBNUp6SVlBRUdvQmdzZ3F1L3RFb2xJdzJoUHY2cHlhSDhJalRFU0NBbEhvdUZSK3NBcFI3SFdXU0lBUWNnR0N5QlNQeCsyQlNNSVQ2TnlIRnFrV3VCbEYxWmdvRzBSRkc0S2FFeTRuQk1aREFCQnlBNExJQUVBQVBDVDllRkRrWEM1ZVVqb015aGRXSUdCdGtWUXVDbWdNZUZ5VG1Rd0FFSG9EZ3NnKy8vL1R4dzBscXdweldDZmxYYjhOaTVHZVhodm8yNW1MOThIbXNGM0NnNEFRWWdQQ3lDbmJTR3VSZWE0RytOWlhPT3hPdjVUaFlDN1V6MkRTWXlsUkU1L3NkQVdBZ0JCcUE4TElQdi8vMDhjTkphc0tjMWduNVYyL0RZdVJubDRiNk51WmkvZkI1ckJkd29PQUVISUR3c2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFlZ1BDeUFBQUFENHlmcndvVWk0M0R3azlCbVVMcXpBUU5zaUtOd1UwSmh3T1NjeUdBQkJpQkFMSUFFQUFQakordkNoU0xqY1BDVDBHWlF1ck1CQTJ5SW8zQlRRbUhBNUp6SVlBRUdvRUFzZzV2Ly9uL2tPRFJzL2tTcWpvMmk2Nm9rRzNkaDI2OWhIdzd2MUlGVUkwQlVBUWNnUUN5QS9XUjgrRkFtWG00ZUVQb1BTaFJVWWFGc0VoWnNDR2hNdTUwUUdBd0FBQUFCQjZCQUxJSnc5MFlCVmMyNWoxdjlGSkhUeks2TFlBN0lld0NwRlZ1ZjVZeW1VNzJBWUFFR0lFUXNnb0t3UEg0cUV5ODFEUXA5QjZjSUtETFF0Z3NKTkFZMEpsM01pZ3dFQUFBQUFRYWdaQ3lEWEtLMVFxY29YZXJraFZlRjZ3V29maE5KcmFVN3FTek9PblJmT1JHY2ZLZ0JCNkRBTElCRVJFUkVSRVJFUkVSRVFFQThPRFEwTUN3b0pDQWNIQmdVRUF3SUJBUUVCQUVIb01Rc2dFUkVSRVJFUkVSRVJFUkFRRHc0TkRRd0xDZ2tJQndjR0JRUURBZ0VCQVFFQVFhZ3pDNkFIKy8vL1R4dzBscXdweldDZmxYYjhOaTVHZVhodm8yNW1MOThIbXNGM0NnNEdBQUNnZDhGTGwyZWpXTnF5Y1RmeExoSUlDVWVpNFZINndDbEhzZFpaSW92djNKNlhQWFYvSUpGSHNTd1hQMTl1YkFsMGVXS3hqYzhJd1RrMWV6Y3JQM3l0dGVKS3JmaStoY3VELzhaZ0xmY3BsRjByL1hiWnFkbWFQK2Q4UUNRRGp5OTBmSDIyOU14bzBHUGNMUnRvYWxmN0crKzg1WXorUExiU1VTbDhGbVJNVjcreDl4UWk4bjB4OXk4aitTak5kYTJ3cUlSMTVRTnRGOXhaKzRFcnYyR1BnZVVEa0k3Qy92aWJOTCtiakU1VEFUL043dHhUUEtvcDVXdVdrQ2F4ZTRFbU1NUjVDdkI5VTVsOHpMSjczdVpCQXRVbnlyWk04REkyUDdONkFNeEtvb00vdUsraWJsTmRVdGxWOHBJWjNZWUNDR1oxWGtrbExjV21zWHNZM2lPa0l1YzdVNXdOYnQ5OEVwMHFaQVhBbWtCR2Rid05nbEE5c28xTThBQ0VFUXdvdExQMEhpd3FYcTdDMUhyUEdHV2p4V3c3QnJpTXdOOWx1Y1JJSTdMUFQ2NkpJZWRJQjFyNGpUejdBd29LTHB2cU5ZcE4vM2Nkbk0wdWpLa28wOXZzc3k5UzFCMnQ4MVhRa3lvaWFPaFYxYk5tZlp5K1J2aVVZYmoya2h2V1RxQjV2dHhNaVljSDAwUnEzbXlWWDhIYjF5dTJvVmxPYjRDYUVPVHJFcmpxQlUzSG9CTzZGakdyRVdOZEFTNWFvS1dNTEpJRHRkcVU0LzdYRmI0R1ZMajlXd1gzVG9EeTZzNUFjV3VuZXN1Si9ySm9Xc244eHdiRThUVWNSaDB6ZERrNVdlZXpSOUVrSEEyU09qcHRRMS8zZEZFU05LRlcxV3J1QVIrQ0czemNCQkxZdUFYYVFZMHdCdVlxTWtnc2laNkVKNDQxTlpMVkxkYjd5ZzhFaEF0d0NTL0daaVZnaHIrZ2Rqb1lNL0ZZVUZkWmp6blpOTTNST2M0dWJRVTJlcUxtdDZPZUJMemJQZ1VENXV2djFKN09PbHEwSklSZWVZaW1rSU44S0JxVGphcGwxRExhbkkrQVlZWDJhU2FGc01qa1JxdDdKQm9DMW9HSFpqc05QQzh5OVpJaDZpZW42WTlsNllRWXNXbkFVNkM4STRZNnBqbmhKZkR6anhMeUd1KzhiaUtPbTJCclFOK3I4VVdlUGJ1bjFWZlNqVk84bzRKNEE1TTRDZ0NSbnNBRUpFaHVzaVVBV2NlUmRRMFJ2bDQ2ZVNjQ3BLaE1xY0hEcG1RQk1OQlAyR205SXNjc0ZsTFBKa29PWU9tbjgwWFhmbkw3WENmN2FiS25VaGJpQjF4WC8vb09RTVdhajB0SmN5TlZONjNuZ2UycmVhbzVMazBJdU9YR0d2NGdpc2tpbEtLZ25WeVRaY3BpMUhQM2drWFVia3E2NGJhQ09nekFGUHdvWndLSmdCUmtXWWRKQThEa3RYZzZTbjZ4cGxMZFR3QkpFdXJtWmQwWFJTaWNQZEdBVlhOdVk5Yi9SU1IwOHl1aTJBT3lIc0FxUlZibitXTXBsTzlnR0FCQnlEb0xvQWY3Ly85UEhEU1dyQ25OWUorVmR2dzJMa1o1ZUcramJtWXYzd2Vhd1hjS0R2Ny8veC9ZRkR4NDNSNk5ERzh2bUs5RlQvMzhrblJmajZ5L25EMGFZemNmLy8vL0Qyd0tIcnh1ajBhR3R4Zk0xNktuZm41SnVxOUgxbC9PSG8yeG13OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUVIb3dRQUxnQUlBZ0VEQUlLQmc0QkNRVU5Bd3NIRHdDSWhJeUNpb2FPZ1ltRmpZT0xoNCtBU0VSTVFrcEdUa0ZKUlUxRFMwZFBRTWpFek1MS3hzN0J5Y1hOdzh2SHo4QW9KQ3dpS2lZdUlTa2xMU01ySnk4Z3FLU3NvcXFtcnFHcHBhMmpxNmV2b0doa2JHSnFabTVoYVdWdFkydG5iMkRvNU96aTZ1YnU0ZW5sN2VQcjUrL2dHQlFjRWhvV0hoRVpGUjBUR3hjZkVKaVVuSkthbHA2Um1aV2RrNXVYbjVCWVZGeFNXbFplVVZsVlhWTmJWMTlRMk5UYzB0clczdEhaMWQzVDI5ZmYwRGcwUERJNk5qNHhPVFU5TXpzM1B6QzR0THl5dXJhK3NibTF2Yk83dDcrd2VIUjhjbnAyZm5GNWRYMXplM2QvY1BqMC9QTDY5djd4K2ZYOTgvdjMvL0FFSG95d0FMSUZFL0g3WUZJd2hQbzNJY1dxUmE0R1VYVm1DZ2JSRVViZ3BvVExpY0V4a01BRUdJekFBTElLTitQbXdMUmhDZVJ1VTR0RWkxd01zdXJNQkEyeUlvM0JUUW1IQTVKeklZQUVHb3p3QUxJRkUvSDdZRkl3aFBvM0ljV3FSYTRHVVhWbUNnYlJFVWJncG9UTGljRXhrTUFFSEkwUUFMUUtnQ3VIZmpPUGs3WFZNek5pY2JDd0pnVW5WSjhPMjNKbTJvaEVNeXhoUWxaLy9jMGN6czV6ZytEYzZUZmJQd1phb0FyQ0xkMEVuWFRZMW9TczY1UVFFQVFjaUFBUXNnRVJFUkVSRVJFUkVSRVJBUUR3NE5EUXdMQ2drSUJ3Y0dCUVFEQWdFQkFRRUFRYWlDQVFzZ0VSRVJFUkVSRVJFUkVSQVFEdzRORFF3TENna0lCd2NHQlFRREFnRUJBUUVBUWFpRkFRdWdCL3YvLzA4Y05KYXNLYzFnbjVWMi9EWXVSbmw0YjZOdVppL2ZCNXJCZHdvT0JnQUFvSGZCUzVkbm8xamFzbkUzOFM0U0NBbEhvdUZSK3NBcFI3SFdXU0tMNzl5ZWx6MTFmeUNSUjdFc0Z6OWZibXdKZEhsaXNZM1BDTUU1TlhzM0t6OThyYlhpU3EzNHZvWExnLy9HWUMzM0taUmRLLzEyMmFuWm1qL25mRUFrQTQ4dmRIeDl0dlRNYU5CajNDMGJhR3BYK3h2dnZPV00vankyMGxFcGZCWmtURmUvc2ZjVUl2SjlNZmN2SS9rb3pYV3RzS2lFZGVVRGJSZmNXZnVCSzc5aGo0SGxBNUNPd3Y3NG16Uy9tNHhPVXdFL3plN2NVenlxS2VWcmxwQW1zWHVCSmpERWVRcndmVk9aZk15eWU5N21RUUxWSjhxMlRQQXlOait6ZWdETVNxS0RQN2l2b201VFhWTFpWZktTR2QyR0FnaG1kVjVKSlMzRnByRjdHTjRqcENMbk8xT2NEVzdmZkJLZEttUUZ3SnBBUm5XOERZSlFQYktOVFBBQWhCRU1LTFN6OUI0c0tsNnV3dFI2enhobG84VnNPd2E0ak1EZlpibkVTQ095ejArdWlTSG5TQWRhK0kwOCt3TUtDaTZiNmpXS1RmOTNIWnpOTG95cEtOUGI3TE12VXRRZHJmTlYwSk1xSW1qb1ZkV3pabjJjdmtiNGxHRzQ5cEliMWs2Z2ViN2NUSW1IQjlORWF0NXNsVi9CMjljcnRxRlpUbStBbWhEazZ4SzQ2Z1ZOeDZBVHVoWXhxeEZqWFFFdVdxQ2xqQ3lTQTdYYWxPUCsxeFcrQmxTNC9Wc0Y5MDZBOHVyT1FIRnJwM3JMaWY2eWFGckovTWNHeFBFMUhFWWRNM1E1T1ZubnMwZlJKQndOa2pvNmJVTmY5M1JSRWpTaFZ0VnE3Z0VmZ2h0ODNBUVMyTGdGMmtHTk1BYm1LakpJTEltZWhDZU9OVFdTMVMzVys4b1BCSVFMY0FrdnhtWWxZSWEvb0hZNkdEUHhXRkJYV1k4NTJUVE4wVG5PTG0wRk5ucWk1cmVqbmdTODJ6NEZBK2JyNzlTZXpqcGF0Q1NFWG5tSXBwQ0RmQ2dhazQycVpkUXkycHlQZ0dHRjlta21oYkRJNUVhcmV5UWFBdGFCaDJZN0RUd3ZNdldTSWVvbnArbVBaZW1FR0xGcHdGT2d2Q09HT3FZNTRTWHc4NDhTOGhydnZHNGlqcHRnYTBEZnEvRkZuajI3cDlWWDBvMVR2S09DZUFPVE9Bb0FrWjdBQkNSSWJySWxBRm5Ia1hVTkViNWVPbmtuQXFTb1RLbkJ3NlprQVREUVQ5aHB2U0xITEJaU3p5WktEbURwcC9ORjEzNXkrMXduKzJteXAxSVc0Z2RjVi8vNkRrREZtbzlMU1hNalZUZXQ1NEh0cTNtcU9TNU5DTGpseGhyK0lJckpJcFNpb0oxY2syWEtZdFJ6OTRKRjFHNUt1dUcyZ2pvTXdCVDhLR2NDaVlBVVpGbUhTUVBBNUxWNE9rcCtzYVpTM1U4QVNSTHE1bVhkRjBVb25EM1JnRlZ6Ym1QVy8wVWtkUE1yb3RnRHNoN0FLa1ZXNS9saktaVHZZQmdBUWNpTUFRdWdCL3YvLzA4Y05KYXNLYzFnbjVWMi9EWXVSbmw0YjZOdVppL2ZCNXJCZHdvTy92Ly9IOWdVUEhqZEhvME1ieStZcjBWUC9meVNkRitQckwrY1BScGpOeC8vLy84UGJBb2V2RzZQUm9hM0Y4elhvcWQrZmttNnIwZldYODRlamJHYkR3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBUWVpVEFRdUFBZ0NBUU1BZ29HRGdFSkJRMERDd2NQQUlpRWpJS0tobzZCaVlXTmc0dUhqNEJJUkV4Q1NrWk9RVWxGVFVOTFIwOUF5TVRNd3NyR3pzSEp4YzNEeThmUHdDZ2tMQ0lxSmk0aEtTVXRJeXNuTHlDb3BLeWlxcWF1b2FtbHJhT3JwNitnYUdSc1ltcG1ibUZwWlcxamEyZHZZT2prN09McTV1N2g2ZVh0NCt2bjcrQVlGQndTR2hZZUVSa1ZIUk1iRng4UW1KU2NrcHFXbnBHWmxaMlRtNWVma0ZoVVhGSmFWbDVSV1ZWZFUxdFhYMURZMU56UzJ0YmUwZG5WM2RQYjE5L1FPRFE4TWpvMlBqRTVOVDB6T3pjL01MaTB2TEs2dHI2eHViVzlzN3UzdjdCNGRIeHllblorY1hsMWZYTjdkMzl3K1BUODh2cjIvdkg1OWYzeisvZi84QVFlaWRBUXVnQi92Ly8wOGNOSmFzS2MxZ241VjIvRFl1Um5sNGI2TnVaaS9mQjVyQmR3b09CZ0FBb0hmQlM1ZG5vMWphc25FMzhTNFNDQWxIb3VGUitzQXBSN0hXV1NLTDc5eWVsejExZnlDUlI3RXNGejlmYm13SmRIbGlzWTNQQ01FNU5YczNLejk4cmJYaVNxMzR2b1hMZy8vR1lDMzNLWlJkSy8xMjJhblptai9uZkVBa0E0OHZkSHg5dHZUTWFOQmozQzBiYUdwWCt4dnZ2T1dNL2p5MjBsRXBmQlprVEZlL3NmY1VJdko5TWZjdkkva296WFd0c0tpRWRlVURiUmZjV2Z1Qks3OWhqNEhsQTVDT3d2NzRtelMvbTR4T1V3RS96ZTdjVXp5cUtlVnJscEFtc1h1QkpqREVlUXJ3ZlZPWmZNeXllOTdtUVFMVko4cTJUUEF5TmoremVnRE1TcUtEUDdpdm9tNVRYVkxaVmZLU0dkMkdBZ2htZFY1SkpTM0ZwckY3R040anBDTG5PMU9jRFc3ZmZCS2RLbVFGd0pwQVJuVzhEWUpRUGJLTlRQQUFoQkVNS0xTejlCNHNLbDZ1d3RSNnp4aGxvOFZzT3dhNGpNRGZaYm5FU0NPeXowK3VpU0huU0FkYStJMDgrd01LQ2k2YjZqV0tUZjkzSFp6TkxveXBLTlBiN0xNdlV0UWRyZk5WMEpNcUltam9WZFd6Wm4yY3ZrYjRsR0c0OXBJYjFrNmdlYjdjVEltSEI5TkVhdDVzbFYvQjI5Y3J0cUZaVG0rQW1oRGs2eEs0NmdWTng2QVR1aFl4cXhGalhRRXVXcUNsakN5U0E3WGFsT1ArMXhXK0JsUzQvVnNGOTA2QTh1ck9RSEZycDNyTGlmNnlhRnJKL01jR3hQRTFIRVlkTTNRNU9Wbm5zMGZSSkJ3TmtqbzZiVU5mOTNSUkVqU2hWdFZxN2dFZmdodDgzQVFTMkxnRjJrR05NQWJtS2pKSUxJbWVoQ2VPTlRXUzFTM1crOG9QQklRTGNBa3Z4bVlsWUlhL29IWTZHRFB4V0ZCWFdZODUyVFROMFRuT0xtMEZObnFpNXJlam5nUzgyejRGQSticjc5U2V6anBhdENTRVhubUlwcENEZkNnYWs0MnFaZFF5MnB5UGdHR0Y5bWttaGJESTVFYXJleVFhQXRhQmgyWTdEVHd2TXZXU0llb25wK21QWmVtRUdMRnB3Rk9ndkNPR09xWTU0U1h3ODQ4UzhocnZ2RzRpanB0Z2EwRGZxL0ZGbmoyN3A5VlgwbzFUdktPQ2VBT1RPQW9Ba1o3QUJDUklicklsQUZuSGtYVU5FYjVlT25rbkFxU29US25CdzZaa0FURFFUOWhwdlNMSExCWlN6eVpLRG1EcHAvTkYxMzV5KzF3bisybXlwMUlXNGdkY1YvLzZEa0RGbW85TFNYTWpWVGV0NTRIdHEzbXFPUzVOQ0xqbHhocitJSXJKSXBTaW9KMWNrMlhLWXRSejk0SkYxRzVLdXVHMmdqb013QlQ4S0djQ2lZQVVaRm1IU1FQQTVMVjRPa3Arc2FaUzNVOEFTUkxxNW1YZEYwVW9uRDNSZ0ZWemJtUFcvMFVrZFBNcm90Z0RzaDdBS2tWVzUvbGpLWlR2WUJnQVFZaWxBUXVnQi92Ly8wOGNOSmFzS2MxZ241VjIvRFl1Um5sNGI2TnVaaS9mQjVyQmR3b08vdi8vSDlnVVBIamRIbzBNYnkrWXIwVlAvZnlTZEYrUHJMK2NQUnBqTngvLy8vOFBiQW9ldkc2UFJvYTNGOHpYb3FkK2ZrbTZyMGZXWDg0ZWpiR2JEd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQVFhaXNBUXVBQWdDQVFNQWdvR0RnRUpCUTBEQ3djUEFJaUVqSUtLaG82QmlZV05nNHVIajRCSVJFeENTa1pPUVVsRlRVTkxSMDlBeU1UTXdzckd6c0hKeGMzRHk4ZlB3Q2drTENJcUppNGhLU1V0SXlzbkx5Q29wS3lpcXFhdW9hbWxyYU9ycDYrZ2FHUnNZbXBtYm1GcFpXMWphMmR2WU9qazdPTHE1dTdoNmVYdDQrdm43K0FZRkJ3U0doWWVFUmtWSFJNYkZ4OFFtSlNja3BxV25wR1psWjJUbTVlZmtGaFVYRkphVmw1UldWVmRVMXRYWDFEWTFOelMydGJlMGRuVjNkUGIxOS9RT0RROE1qbzJQakU1TlQwek96Yy9NTGkwdkxLNnRyNnh1Ylc5czd1M3Y3QjRkSHh5ZW5aK2NYbDFmWE43ZDM5dytQVDg4dnIyL3ZINTlmM3orL2YvOEFRY2krQVF0Z25RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzQ2R3g2TEc0ZTZwbnNXanV0UjF2RVVXSXp5OE41RzNjeGV2ZzgwZys4VUhKME5qOFdOUTEzVFBRdkg5U2pyZUFvc1JubDRiNk51WmkvZkI1ckJkd29PQUVHb3Z3RUxZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW5RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJpTUFCQzhBQkppQzhBdEcxZzQ1eUFYdEpOUm5yM044YWdaZEhKcmo3TzFDV3IwRTRWeGxBWVV5b2ZYTzByOFRZQWxoYTNVTmdoaStnVXZ4UTZRbHJlK282Zy9EK0ZQYnBhNGlkK3AxaGVKdWU5WmZTZi83K2ZSc2pZaHFlL3daQ25xN3JmdjBvN2xZWXgxWmJDV1M3UEgweUl2bFgzSFlRTlRPK05mbFZnbVQ5aythZ3BBMmREWS9GalVOZDB6MEx4L1VvNjNnS0xFWjVlRytqYm1ZdjN3ZWF3WGNLRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUhJd1FFTHdBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFuUTJQeFkxRFhkTTlDOGYxS090NENpeEdlWGh2bzI1bUw5OEhtc0YzQ2c0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVlqREFRdUFBNTBOajhXTlExM1RQUXZIOVNqcmVBb3NSbmw0YjZOdVppL2ZCNXJCZHdvT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJpTVlCQzBEM2Z3MUJ6a2NHOWhIUUc5Tk5iejB2MGNaQU9YNHpReWxYbU9PbjZKaVZIWjBOajhXTlExM1RQUXZIOVNqcmVBb3NSbmw0YjZOdVppL2ZCNXJCZHdvT0FFSEl4Z0VMUUhJRkJrL1M1NzZINVdvY0w5MHEvZEJFVC8zOGtuUmZqNnkvbkQwYVl6Y2ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFZakhBUXRBcUFLNGQrTTQrVHRkVXpNMkp4c0xBbUJTZFVudzdiY21iYWlFUXpMR0ZDVm4vOXpSek96bk9ENE56cE45cy9CbHFnQ3NJdDNRU2RkTmpXaEt6cmxCQVFCQmlQSUJDOEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFSEk4d0VMd0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWWlIQWd2QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCeUpRQ0MwRUFBQUFCQUFFQUFRRUJBQUVCQVFBQUFBRUJBQUVCQVFBQUFRRUJBUUVBQVFFQUFBRUJBUUFBQUFBQUFBRUJBUUFCQUFBQkFRRUJBQUVBQVFFQkFBQUJBUUJCMExvREMwQXdxMk5GRUR0M3RWUmtxcW5Ja1g4MGtRa3VKQ2R4QUhyc0ZJSVIyTHhXR1ZkSHFxQWVuNFJ1UVpINGlXMTdIS282eXVENnpSUG50c1ByZ2s2N1Qya21BRUdRdXdNTFFDbTJOaWtNM2J2a3k3b3o0V0x4TUx0bVUyVDV0dEdwTWQzNEFLVytjRFVseDNmK1grUjgxNkhiMFNaNEVmMnZCMnZjZnJzbnZSWnR6UDdlaFFJZ2h5d0FRZERKQXd0QW5RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrTW9EQzBDZERZL0ZqVU5kMHowTHgvVW82M2dLTEVaNWVHK2pibVl2M3dlYXdYY0tEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFSFF5Z01MUUowTmo4V05RMTNUUFF2SDlTanJlQW9zUm5sNGI2TnVaaS9mQjVyQmR3b09BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaRExBd3RBblEyUHhZMURYZE05QzhmMUtPdDRDaXhHZVhodm8yNW1MOThIbXNGM0NnNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQjBNc0RDMENkRFkvRmpVTmQwejBMeC9VbzYzZ0tMRVo1ZUcramJtWXYzd2Vhd1hjS0RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHUXpBTUxRSjBOajhXTlExM1RQUXZIOVNqcmVBb3NSbmw0YjZOdVppL2ZCNXJCZHdvT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUWRETUF3dEFuUTJQeFkxRFhkTTlDOGYxS090NENpeEdlWGh2bzI1bUw5OEhtc0YzQ2c0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa00wREMwQXdxMk5GRUR0M3RWUmtxcW5Ja1g4MGtRa3VKQ2R4QUhyc0ZJSVIyTHhXR1ZkSHFxQWVuNFJ1UVpINGlXMTdIS282eXVENnpSUG50c1ByZ2s2N1Qya21BRUhRelFNTFFKSytPb1IvMTJGeit4RTBKOU1ydTZXWkl6NUxNUitVbk96VG43dmRuTjhWU2NuWVN4WDkzVjFnVzBTa3BTbkxZcm5TZlF3S2g3dzMvZkJ4TVowS2d5UUFRWkRPQXd0QUIwa1VNNWFtbTYrS3Q2K0hjeDFyeW9jZ2l2QmU3YjBSZkRvZkduVk44d0p5TFVsTUk2NGlvbHZoWFZha0FnL1FKc25mVTZMekw5eFJsWW16RmxlbkVBQkIwTTREQzBBcHRqWXBETjI3NU11Nk0rRmk4VEM3WmxOaytiYlJxVEhkK0FDbHZuQTFKY2QzL2wva2ZOZWgyOUVtZUJIOXJ3ZHIzSDY3SjcwV2Jjeiszb1VDSUljc0FFR1F6d01MUU9jUGFVRXZhWERKQzB0cEp5RTBRT0xvV2NTRGErYStNa0dJc0FydHZLb1NxYit1UUNOZFNBMVh6QytyR0RRWkJmVVFTWW9McExEVFdwTFNOYlhySVM4QVFkRFBBd3RBblEyUHhZMURYZE05QzhmMUtPdDRDaXhHZVhodm8yNW1MOThIbXNGM0NnNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmtOQURDMENjQytnVGpzaFFNN2xXWHR0OFZjNTlTbFlWdHJpMEFXRGdGd0lDRithQ0pnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVIUTBBTUxRRlhoZ3RjUkRKTnhJek8rLzN5VXU2WkVGSFRVUkRNd3FrTkpXU1lOUHpzc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpEUkF3dEE4aHY2QUFXQWpjcHBsN05vRk5iRjhCaEVEYTF4RWlBTzVsYll1bVVQS1FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCME5FREMwQ3E3KzBTaVVqRGFFKy9xbkpvZndpTk1SSUlDVWVpNFZINndDbEhzZFpaSWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdRMGdNTFFLdnhsTVNJdzg4STFITVRqUlFWc3hrVEFtekwvWkJPV0VtSUw5OWJhT0VKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRZERTQXd0QW5RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrTk1EQzBDdGE2MFc5eUt2eWJKaXBrb3FlQkd6OU1kSTRtU3Y3aG1DbjBQamR6NG5JS3lUenZkZ0tNQ3NUR3VuZTRIVk16bG5oR3hFaXhqbWFWWE1GMFJ0QTBZS0FFSFEwd01MUU45aVozdWxrNHBFMytyOUtQVXQxcjk2MUpzTzBQVlkyRmpzZGpSTlBiQUcwVGJKdlBUYUdTdWZLZlJXZWs2bG9mR3UzbHJnN2pPMXNxRGRoQ3VCREJjQVFaRFVBd3RBZmRsR1RoZ1dVemFmYmNuVW5oTDNDclVKRU1vdnA1MWxJdzJpZzRsdEVRZzVHWnpEOTByZnNYKy9jNHFIQXA4OTRBcXZqSklnSXB1bVZQRHZGVVZvSmdCQjBOUURDMEFlUjBhdkNxOWtWOEVQUG9jdWVWRGM5Z1FkaVA5enBvWk1wekE4dE4wdUM0Q0Zmbmd5RDBtYXNmaEs4SDl0MFkveWV3TEdqb2c1UzEyaFVsdHdMdDBEQUVHUTFRTUxRSjlWejNVaVM3emdEK1pVd1VXNU9NSmVmWnFTcFlJNWdINmo1UGN0QmM0VnA1azN2NzN2S0MxekI5WWFQSDRKbTF0VFNxOFRRUzJZWTJBRjQ1R0o0U1FBUWREVkF3dEFuUTJQeFkxRFhkTTlDOGYxS090NENpeEdlWGh2bzI1bUw5OEhtc0YzQ2c0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa05ZREMwQlY0WUxYRVF5VGNTTXp2djk4bEx1bVJCUjAxRVF6TUtwRFNWa21EVDg3TEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUhRMWdNTFFKd0w2Qk9PeUZBenVWWmUyM3hWem4xS1ZoVzJ1TFFCWU9BWEFnSVg1b0ltQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWkRYQXd0QW5Bdm9FNDdJVURPNVZsN2JmRlhPZlVwV0ZiYTR0QUZnNEJjQ0FoZm1naVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkIwTmNEQzBDZERZL0ZqVU5kMHowTHgvVW82M2dLTEVaNWVHK2pibVl2M3dlYXdYY0tEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1EyQU1MUUZYaGd0Y1JESk54SXpPKy8zeVV1NlpFRkhUVVJETXdxa05KV1NZTlB6c3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFkRFlBd3RBblEyUHhZMURYZE05QzhmMUtPdDRDaXhHZVhodm8yNW1MOThIbXNGM0NnNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmtOa0RDMEN4NCtoVUpyb2ErUkxPa3R3dnkzRkhOZCtML09CcXNkemtpNTNObGFGS0o0c2ZnUml1VVB4Y2pKaER5ek9Fc2tzWllyWERFMS9UVHpxSXlDKzlTUmt3QUVIUTJRTUxRTmJiMnRqeElEU0VzczAvR01rUThERkpZS2NudFRCalErVGZHdkZIZE5RVGRQcFhxQ05BU2U4YUVLdlZBbDJTS2hBdnBwdUNGYkNEbzY0VERCMFJPU1VBUVpEYUF3dEFkcEF5RzRKdnQ0WVV0aGxOSy9XTFFDM3BoZG5RdWQ5VHA5S0NhUlFnSGdYSDYxSjMxSnk4RHlUZUZUVGovNDl0dVVIUE9QQXM4cjVVdjJZOC8rM0FGUUJCME5vREMwQXB0allwRE4yNzVNdTZNK0ZpOFRDN1psTmsrYmJScVRIZCtBQ2x2bkExSmNkMy9sL2tmTmVoMjlFbWVCSDlyd2RyM0g2N0o3MFdiY3orM29VQ0lJY3NBRUdRMndNTFFMaEZaalR6NFVzWEJKdnJtU1NGK045MUk5WU9PcHg2VFQwYk5PMUFTQ01EUmRjRlY3RWVBVnlwQlJqWXRMUnhMY1NhZ3FhKzRzeDhNbTVramsvc0l5WUFRZERiQXd0QW5RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrTndEQzBDZERZL0ZqVU5kMHowTHgvVW82M2dLTEVaNWVHK2pibVl2M3dlYXdYY0tEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFSFEzQU1MUUowTmo4V05RMTNUUFF2SDlTanJlQW9zUm5sNGI2TnVaaS9mQjVyQmR3b09BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaRGRBd3RBcXUvdEVvbEl3MmhQdjZweWFIOElqVEVTQ0FsSG91RlIrc0FwUjdIV1dTSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQjBOMERDMENxNyswU2lVakRhRSsvcW5Kb2Z3aU5NUklJQ1VlaTRWSDZ3Q2xIc2RaWklnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHUTNnTUxRS3J2N1JLSlNNTm9UNytxY21oL0NJMHhFZ2dKUjZMaFVmckFLVWV4MWxraUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUWREZUF3dEFuUTJQeFkxRFhkTTlDOGYxS090NENpeEdlWGh2bzI1bUw5OEhtc0YzQ2c0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa044REMwQXdxMk5GRUR0M3RWUmtxcW5Ja1g4MGtRa3VKQ2R4QUhyc0ZJSVIyTHhXR1ZkSHFxQWVuNFJ1UVpINGlXMTdIS282eXVENnpSUG50c1ByZ2s2N1Qya21BRUhRM3dNTFFKSytPb1IvMTJGeit4RTBKOU1ydTZXWkl6NUxNUitVbk96VG43dmRuTjhWU2NuWVN4WDkzVjFnVzBTa3BTbkxZcm5TZlF3S2g3dzMvZkJ4TVowS2d5UUFRWkRnQXd0QVFMUm9wWURsaEl3Q0U4TGdIVTBXemRVMzk1QlhXSkttcldVU3gvMEFjUzNWenpPTTg5MzltVEhwRXhMdFozTEhObytoTFJSU0lOelhDcWd0WFBlOEh3QkIwT0FEQzBBZVIwYXZDcTlrVjhFUFBvY3VlVkRjOWdRZGlQOXpwb1pNcHpBOHROMHVDNENGZm5neUQwbWFzZmhLOEg5dDBZL3lld0xHam9nNVMxMmhVbHR3THQwREFFR1E0UU1MUUdEdEU1Zm5JckJ5Z1g4SVFYQTJRYlYwL3J6OVNsK1JoZWdYZ2RhRmtia2RuajNPbC9NdTJDNDIva0c5ZURab2ttaEhPUGVxb1ova3pnMWZxNzFpUWdFQVFkRGhBd3RBblEyUHhZMURYZE05QzhmMUtPdDRDaXhHZVhodm8yNW1MOThIbXNGM0NnNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmtPSURDMENjQytnVGpzaFFNN2xXWHR0OFZjNTlTbFlWdHJpMEFXRGdGd0lDRithQ0pnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVIUTRnTUxRRlhoZ3RjUkRKTnhJek8rLzN5VXU2WkVGSFRVUkRNd3FrTkpXU1lOUHpzc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpEakF3dEFWZUdDMXhFTWszRWpNNzcvZkpTN3BrUVVkTlJFTXpDcVEwbFpKZzAvT3l3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCME9NREMwQ2REWS9GalVOZDB6MEx4L1VvNjNnS0xFWjVlRytqYm1ZdjN3ZWF3WGNLRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdRNUFNTFFKd0w2Qk9PeUZBenVWWmUyM3hWem4xS1ZoVzJ1TFFCWU9BWEFnSVg1b0ltQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRZERrQXd0QW5RMlB4WTFEWGRNOUM4ZjFLT3Q0Q2l4R2VYaHZvMjVtTDk4SG1zRjNDZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrT1VEQzBDdGE2MFc5eUt2eWJKaXBrb3FlQkd6OU1kSTRtU3Y3aG1DbjBQamR6NG5JS3lUenZkZ0tNQ3NUR3VuZTRIVk16bG5oR3hFaXhqbWFWWE1GMFJ0QTBZS0FFSFE1UU1MUU45aVozdWxrNHBFMytyOUtQVXQxcjk2MUpzTzBQVlkyRmpzZGpSTlBiQUcwVGJKdlBUYUdTdWZLZlJXZWs2bG9mR3UzbHJnN2pPMXNxRGRoQ3VCREJjQVFaRG1Bd3RBeWlNMml2NTF6UVh1WEtpVDhsZUtqS2hPY2JlR25ySlNCcE9QWGVuZ1VpZ081T0FVSDBGQmlnMEwvdDBKYU9KWmZVM1M5Q01sTGgyRFMwSHhYQW44Q1FCQjBPWURDMEFwdGpZcEROMjc1TXU2TStGaThUQzdabE5rK2JiUnFUSGQrQUNsdm5BMUpjZDMvbC9rZk5laDI5RW1lQkg5cndkcjNINjdKNzBXYmN6KzNvVUNJSWNzQUVHUTV3TUxRS2lucldMMFFHUmJmZVFjcDB1eFNOWCsydWJ1RU1NV09LdjhUT2xFU1pZYW9HTkZHVm1jOXc0YXc1dE5WZXgzL0FFRk45S2lCQ01neGo4cy91REVnZ3NBUWREbkF3dmdBaUR4aHNwa1M1YUdwQ05GNWJmdnBFQzdTdWlXZUtsL2d4aTVzcm0yQWhFMjJwSlc4OTZCM3NCZ3g4T202TWNFdm4rN2NOWEorV2JYUVJoV2cwMlhNTUtqYWI3RGFCYTZXNVJpVWhERUVUaC9IS2ZkMm4zdXVpa0FxVjBValR1QnZ5eWFQMExmdWh0a1hzenFST3EwQzZoODQvMFVTR1psemRLUkFsaTVaQU5LM2ZBbUNMSGZrKzRrUjFIRmpkdENhNFUzRHd0RHp4QzdGa0tBYjBCT1NVRDdxdk9zQitIUFZZZXU2K0NBN0lnZ29EZWpFZEErYW9TVlVUb2VTbHFrU0JZT3hkOW9SV2JsNjhRTVRDbEJhcXZheDJqU0F0YlFnb3JFUE8yYVJHaG0vRjBCc2cvTllsRFJzOTJ4cUVBcGYwaGtJaW82dHZWM3JrUGtZUk40OFA3SXh0V0lEb2QzK2Fwclp4K21aQU41bzk2dHppN25oMWh3RzVxZ1krVjNFN0xEMkJ2dTcxUU05OWdrMVZyUnd6NWRPaml5WmxUeDJzRCtsTHR6Q3VQaDRucy9Yd0Z4SEdyL3NXbGp2ME10aEx3Z2ZSRGYydjBnY01sdFN5OEFBQUFBUWJENkF3cy9BUUFBQVA4QUFBQUFBUUFCQUFBQUFBRUFBQUVBL3dBQkFBRUFBUUFBQVFBQUFBRUEvd0QvQVA4QUFRQUJBQUQvQUFFQUFRRC9BQUFCQUFFQUFBQUJBRUh3K2dNTElQRUphVXEwa3VsRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXCI7XG4gICAgICAgICAgICBleHBvcnRzLnBxID0gNTIwO1xuICAgICAgICAgICAgZXhwb3J0cy5wciA9IDE4NjQ7XG4gICAgICAgICAgICBleHBvcnRzLnBHMWdlbiA9IDI0MzkyO1xuICAgICAgICAgICAgZXhwb3J0cy5wRzF6ZXJvID0gMjQ0ODg7XG4gICAgICAgICAgICBleHBvcnRzLnBHMWIgPSAzMjQwO1xuICAgICAgICAgICAgZXhwb3J0cy5wRzJnZW4gPSAyNDU4NDtcbiAgICAgICAgICAgIGV4cG9ydHMucEcyemVybyA9IDI0Nzc2O1xuICAgICAgICAgICAgZXhwb3J0cy5wRzJiID0gMTA0NDA7XG4gICAgICAgICAgICBleHBvcnRzLnBPbmVUID0gMjQ5Njg7XG4gICAgICAgICAgICBleHBvcnRzLnByZVBTaXplID0gMTkyO1xuICAgICAgICAgICAgZXhwb3J0cy5wcmVRU2l6ZSA9IDE5Nzc2O1xuICAgICAgICAgICAgZXhwb3J0cy5uOHEgPSAzMjtcbiAgICAgICAgICAgIGV4cG9ydHMubjhyID0gMzI7XG4gICAgICAgICAgICBleHBvcnRzLnEgPSBcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCI7XG4gICAgICAgICAgICBleHBvcnRzLnIgPSBcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCI7XG4gICAgICAgICIsIlxuICAgICAgICAgICAgZXhwb3J0cy5jb2RlID0gXCJBR0Z6YlFFQUFBQUJpUUVSWUFKL2Z3QmdBWDhBWUFGL0FYOWdBbjkvQVg5Z0EzOS9md0YvWUFOL2YzOEFZQU4vZm44QVlBSi9mZ0JnQkg5L2YzOEFZQVYvZjM5L2Z3QmdCSDkvZjM4QmYyQUhmMzkvZjM5L2Z3QmdDSDkvZjM5L2YzOS9BR0FGZjM5L2YzOEJmMkFIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZndJUUFRTmxibllHYldWdGIzSjVBZ0RvQndPNUFyY0NBQUVDQVFNREJBUUZBQUFHQndnRkFnVUZBQUFGQUFBQUFBSUNBQUVGQ0FrRkJRZ0FBZ0FCQWdFREF3UUVCUUFBQmdjSUJRSUZCUUFBQlFBQUFBQUNBZ0FCQlFnSkJRVUlBQUlGQUFBQ0FnSUJBUUFBQUFNREF3QUFCUVVGQUFBRkJRVUFBQUFBQUFVQUJRQUFBQUFGQlFVRkJRb0FDd2tLQUFzSkNBZ0RBQWdJQWdBQUNRVUZBQWdNQ1FJQ0FRRUFCUVVBQlFVQUFBQUFBd0FJQWdJSkNBQUNBZ0lCQVFBQUFBTURBd0FBQlFVRkFBQUZCUVVBQUFBQUFBVUFCUUFBQUFBRkJRVUZCUW9BQ3drS0FBc0pDQWdGQXdBSUNBSUFBQWtGQlFVREFBZ0lBZ0FBQ1FVRkJRVUpDUWtKQ1FBQ0FnRUJBQVVBQlFVQUFnQUFBd0FJQWdrSUFBSUNBUUVBQlFVQUJRVUFBQUFBQXdBSUFnSUpDQUFDQlFnSkJRQUFBQUFBQUFBQUFBQUZBQUFBQlFBQUFBQUVEUTRQRUFVSHZpU29BZ2xwYm5SeFgyTnZjSGtBQUFscGJuUnhYM3BsY204QUFRaHBiblJ4WDI5dVpRQURDMmx1ZEhGZmFYTmFaWEp2QUFJSGFXNTBjVjlsY1FBRUNHbHVkSEZmWjNSbEFBVUlhVzUwY1Y5aFpHUUFCZ2hwYm5SeFgzTjFZZ0FIQ0dsdWRIRmZiWFZzQUFnTGFXNTBjVjl6Y1hWaGNtVUFDUTVwYm5SeFgzTnhkV0Z5WlU5c1pBQUtDR2x1ZEhGZlpHbDJBQTBQYVc1MGNWOXBiblpsY25ObFRXOWtBQTRJWmpGdFgyTnZjSGtBQUFobU1XMWZlbVZ5YndBQkNtWXhiVjlwYzFwbGNtOEFBZ1ptTVcxZlpYRUFCQWRtTVcxZllXUmtBQkFIWmpGdFgzTjFZZ0FSQjJZeGJWOXVaV2NBRWc1bU1XMWZhWE5PWldkaGRHbDJaUUFaQ1dZeGJWOXBjMDl1WlFBUENHWXhiVjl6YVdkdUFCb0xaakZ0WDIxU1pXUjFZM1FBRXdkbU1XMWZiWFZzQUJRS1pqRnRYM054ZFdGeVpRQVZEV1l4YlY5emNYVmhjbVZQYkdRQUZoSm1NVzFmWm5KdmJVMXZiblJuYjIxbGNua0FHQkJtTVcxZmRHOU5iMjUwWjI5dFpYSjVBQmNMWmpGdFgybHVkbVZ5YzJVQUd3ZG1NVzFmYjI1bEFCd0laakZ0WDJ4dllXUUFIUTltTVcxZmRHbHRaWE5UWTJGc1lYSUFIZ2RtTVcxZlpYaHdBQ0lRWmpGdFgySmhkR05vU1c1MlpYSnpaUUFmQ0dZeGJWOXpjWEowQUNNTVpqRnRYMmx6VTNGMVlYSmxBQ1FWWmpGdFgySmhkR05vVkc5TmIyNTBaMjl0WlhKNUFDQVhaakZ0WDJKaGRHTm9Sbkp2YlUxdmJuUm5iMjFsY25rQUlRbHBiblJ5WDJOdmNIa0FKUWxwYm5SeVgzcGxjbThBSmdocGJuUnlYMjl1WlFBb0MybHVkSEpmYVhOYVpYSnZBQ2NIYVc1MGNsOWxjUUFwQ0dsdWRISmZaM1JsQUNvSWFXNTBjbDloWkdRQUt3aHBiblJ5WDNOMVlnQXNDR2x1ZEhKZmJYVnNBQzBMYVc1MGNsOXpjWFZoY21VQUxnNXBiblJ5WDNOeGRXRnlaVTlzWkFBdkNHbHVkSEpmWkdsMkFESVBhVzUwY2w5cGJuWmxjbk5sVFc5a0FETUlabkp0WDJOdmNIa0FKUWhtY20xZmVtVnlid0FtQ21aeWJWOXBjMXBsY204QUp3Wm1jbTFmWlhFQUtRZG1jbTFmWVdSa0FEVUhabkp0WDNOMVlnQTJCMlp5YlY5dVpXY0FOdzVtY20xZmFYTk9aV2RoZEdsMlpRQStDV1p5YlY5cGMwOXVaUUEwQ0daeWJWOXphV2R1QUQ4TFpuSnRYMjFTWldSMVkzUUFPQWRtY20xZmJYVnNBRGtLWm5KdFgzTnhkV0Z5WlFBNkRXWnliVjl6Y1hWaGNtVlBiR1FBT3hKbWNtMWZabkp2YlUxdmJuUm5iMjFsY25rQVBSQm1jbTFmZEc5TmIyNTBaMjl0WlhKNUFEd0xabkp0WDJsdWRtVnljMlVBUUFkbWNtMWZiMjVsQUVFSVpuSnRYMnh2WVdRQVFnOW1jbTFmZEdsdFpYTlRZMkZzWVhJQVF3ZG1jbTFmWlhod0FFY1Fabkp0WDJKaGRHTm9TVzUyWlhKelpRQkVDR1p5YlY5emNYSjBBRWdNWm5KdFgybHpVM0YxWVhKbEFFa1Zabkp0WDJKaGRHTm9WRzlOYjI1MFoyOXRaWEo1QUVVWFpuSnRYMkpoZEdOb1JuSnZiVTF2Ym5SbmIyMWxjbmtBUmdabWNsOWhaR1FBTlFabWNsOXpkV0lBTmdabWNsOXVaV2NBTndabWNsOXRkV3dBU2dsbWNsOXpjWFZoY21VQVN3cG1jbDlwYm5abGNuTmxBRXdOWm5KZmFYTk9aV2RoZEdsMlpRQk5CMlp5WDJOdmNIa0FKUWRtY2w5NlpYSnZBQ1lHWm5KZmIyNWxBRUVKWm5KZmFYTmFaWEp2QUNjRlpuSmZaWEVBS1F4bk1XMWZiWFZzZEdsbGVIQUFkaEpuTVcxZmJYVnNkR2xsZUhCZlkyaDFibXNBZFJKbk1XMWZiWFZzZEdsbGVIQkJabVpwYm1VQWVoaG5NVzFmYlhWc2RHbGxlSEJCWm1acGJtVmZZMmgxYm1zQWVRcG5NVzFmYVhOYVpYSnZBRThRWnpGdFgybHpXbVZ5YjBGbVptbHVaUUJPQm1jeGJWOWxjUUJYQzJjeGJWOWxjVTFwZUdWa0FGWU1aekZ0WDJWeFFXWm1hVzVsQUZVSVp6RnRYMk52Y0hrQVV3NW5NVzFmWTI5d2VVRm1abWx1WlFCU0NHY3hiVjk2WlhKdkFGRU9aekZ0WDNwbGNtOUJabVpwYm1VQVVBcG5NVzFmWkc5MVlteGxBRmtRWnpGdFgyUnZkV0pzWlVGbVptbHVaUUJZQjJjeGJWOWhaR1FBWEF4bk1XMWZZV1JrVFdsNFpXUUFXdzFuTVcxZllXUmtRV1ptYVc1bEFGb0haekZ0WDI1bFp3QmVEV2N4YlY5dVpXZEJabVpwYm1VQVhRZG5NVzFmYzNWaUFHRU1aekZ0WDNOMVlrMXBlR1ZrQUdBTlp6RnRYM04xWWtGbVptbHVaUUJmRW1jeGJWOW1jbTl0VFc5dWRHZHZiV1Z5ZVFCakdHY3hiVjltY205dFRXOXVkR2R2YldWeWVVRm1abWx1WlFCaUVHY3hiVjkwYjAxdmJuUm5iMjFsY25rQVpSWm5NVzFmZEc5TmIyNTBaMjl0WlhKNVFXWm1hVzVsQUdRUFp6RnRYM1JwYldWelUyTmhiR0Z5QUhzVlp6RnRYM1JwYldWelUyTmhiR0Z5UVdabWFXNWxBSHdOWnpGdFgyNXZjbTFoYkdsNlpRQm9DbWN4YlY5TVJVMTBiMVVBYWdwbk1XMWZURVZOZEc5REFHc0taekZ0WDFWMGIweEZUUUJzQ21jeGJWOURkRzlNUlUwQWJROW5NVzFmWW1GMFkyaE1SVTEwYjFVQWJnOW5NVzFmWW1GMFkyaE1SVTEwYjBNQWJ3OW5NVzFmWW1GMFkyaFZkRzlNUlUwQWNBOW5NVzFmWW1GMFkyaERkRzlNUlUwQWNReG5NVzFmZEc5QlptWnBibVVBWmc1bk1XMWZkRzlLWVdOdlltbGhiZ0JVRVdjeGJWOWlZWFJqYUZSdlFXWm1hVzVsQUdjVFp6RnRYMkpoZEdOb1ZHOUtZV052WW1saGJnQnlCMlp5YlY5bVpuUUFnZ0VJWm5KdFgybG1ablFBZ3dFS1puSnRYM0poZDJabWRBQ0FBUXRtY20xZlptWjBTbTlwYmdDRUFRcG1jbTFmWm1aMFRXbDRBSVVCREdaeWJWOW1ablJHYVc1aGJBQ0dBUWh3YjJ4ZmVtVnlid0NIQVE5d2IyeGZZMjl1YzNSeWRXTjBURU1BaUFFTWNXRndYMkoxYVd4a1FVSkRBSWtCQzNGaGNGOXFiMmx1UVVKREFJb0JDbVl5YlY5cGMxcGxjbThBaXdFSlpqSnRYMmx6VDI1bEFJd0JDR1l5YlY5NlpYSnZBSTBCQjJZeWJWOXZibVVBamdFSVpqSnRYMk52Y0hrQWp3RUhaakp0WDIxMWJBQ1FBUWhtTW0xZmJYVnNNUUNSQVFwbU1tMWZjM0YxWVhKbEFKSUJCMll5YlY5aFpHUUFrd0VIWmpKdFgzTjFZZ0NVQVFkbU1tMWZibVZuQUpVQkNHWXliVjl6YVdkdUFKd0JEV1l5YlY5amIyNXFkV2RoZEdVQWxnRVNaakp0WDJaeWIyMU5iMjUwWjI5dFpYSjVBSmdCRUdZeWJWOTBiMDF2Ym5SbmIyMWxjbmtBbHdFR1pqSnRYMlZ4QUprQkMyWXliVjlwYm5abGNuTmxBSm9CQjJZeWJWOWxlSEFBbndFUFpqSnRYM1JwYldWelUyTmhiR0Z5QUpzQkVHWXliVjlpWVhSamFFbHVkbVZ5YzJVQW5nRUlaakp0WDNOeGNuUUFvQUVNWmpKdFgybHpVM0YxWVhKbEFLRUJEbVl5YlY5cGMwNWxaMkYwYVhabEFKMEJER2N5YlY5dGRXeDBhV1Y0Y0FES0FSSm5NbTFmYlhWc2RHbGxlSEJmWTJoMWJtc0F5UUVTWnpKdFgyMTFiSFJwWlhod1FXWm1hVzVsQU00QkdHY3liVjl0ZFd4MGFXVjRjRUZtWm1sdVpWOWphSFZ1YXdETkFRcG5NbTFmYVhOYVpYSnZBS01CRUdjeWJWOXBjMXBsY205QlptWnBibVVBb2dFR1p6SnRYMlZ4QUtzQkMyY3liVjlsY1UxcGVHVmtBS29CREdjeWJWOWxjVUZtWm1sdVpRQ3BBUWhuTW0xZlkyOXdlUUNuQVE1bk1tMWZZMjl3ZVVGbVptbHVaUUNtQVFobk1tMWZlbVZ5YndDbEFRNW5NbTFmZW1WeWIwRm1abWx1WlFDa0FRcG5NbTFmWkc5MVlteGxBSzBCRUdjeWJWOWtiM1ZpYkdWQlptWnBibVVBckFFSFp6SnRYMkZrWkFDd0FReG5NbTFmWVdSa1RXbDRaV1FBcndFTlp6SnRYMkZrWkVGbVptbHVaUUN1QVFkbk1tMWZibVZuQUxJQkRXY3liVjl1WldkQlptWnBibVVBc1FFSFp6SnRYM04xWWdDMUFReG5NbTFmYzNWaVRXbDRaV1FBdEFFTlp6SnRYM04xWWtGbVptbHVaUUN6QVJKbk1tMWZabkp2YlUxdmJuUm5iMjFsY25rQXR3RVlaekp0WDJaeWIyMU5iMjUwWjI5dFpYSjVRV1ptYVc1bEFMWUJFR2N5YlY5MGIwMXZiblJuYjIxbGNua0F1UUVXWnpKdFgzUnZUVzl1ZEdkdmJXVnllVUZtWm1sdVpRQzRBUTluTW0xZmRHbHRaWE5UWTJGc1lYSUF6d0VWWnpKdFgzUnBiV1Z6VTJOaGJHRnlRV1ptYVc1bEFOQUJEV2N5YlY5dWIzSnRZV3hwZW1VQXZBRUtaekp0WDB4RlRYUnZWUUMrQVFwbk1tMWZURVZOZEc5REFMOEJDbWN5YlY5VmRHOU1SVTBBd0FFS1p6SnRYME4wYjB4RlRRREJBUTluTW0xZlltRjBZMmhNUlUxMGIxVUF3Z0VQWnpKdFgySmhkR05vVEVWTmRHOURBTU1CRDJjeWJWOWlZWFJqYUZWMGIweEZUUURFQVE5bk1tMWZZbUYwWTJoRGRHOU1SVTBBeFFFTVp6SnRYM1J2UVdabWFXNWxBTG9CRG1jeWJWOTBiMHBoWTI5aWFXRnVBS2dCRVdjeWJWOWlZWFJqYUZSdlFXWm1hVzVsQUxzQkUyY3liVjlpWVhSamFGUnZTbUZqYjJKcFlXNEF4Z0VMWnpGdFgzUnBiV1Z6Um5JQTBRRUhaekZ0WDJabWRBRFhBUWhuTVcxZmFXWm1kQURZQVFwbk1XMWZjbUYzWm1aMEFOVUJDMmN4YlY5bVpuUktiMmx1QU5rQkNtY3hiVjltWm5STmFYZ0EyZ0VNWnpGdFgyWm1kRVpwYm1Gc0FOc0JDMmN5YlY5MGFXMWxjMFp5QU53QkIyY3liVjltWm5RQTRnRUlaekp0WDJsbVpuUUE0d0VLWnpKdFgzSmhkMlptZEFEZ0FRdG5NbTFmWm1aMFNtOXBiZ0RrQVFwbk1tMWZabVowVFdsNEFPVUJER2N5YlY5bVpuUkdhVzVoYkFEbUFSRm5NVzFmZEdsdFpYTkdja0ZtWm1sdVpRRG5BUkZuTW0xZmRHbHRaWE5HY2tGbVptbHVaUURvQVJGbWNtMWZZbUYwWTJoQmNIQnNlVXRsZVFEcEFSRm5NVzFmWW1GMFkyaEJjSEJzZVV0bGVRRHFBUlpuTVcxZlltRjBZMmhCY0hCc2VVdGxlVTFwZUdWa0FPc0JFV2N5YlY5aVlYUmphRUZ3Y0d4NVMyVjVBT3dCRm1jeWJWOWlZWFJqYUVGd2NHeDVTMlY1VFdsNFpXUUE3UUVLWmpadFgybHpXbVZ5YndEdkFRbG1ObTFmYVhOUGJtVUE4QUVJWmpadFgzcGxjbThBOFFFSFpqWnRYMjl1WlFEeUFRaG1ObTFmWTI5d2VRRHpBUWRtTm0xZmJYVnNBUFFCQ21ZMmJWOXpjWFZoY21VQTlRRUhaalp0WDJGa1pBRDJBUWRtTm0xZmMzVmlBUGNCQjJZMmJWOXVaV2NBK0FFSVpqWnRYM05wWjI0QStRRVNaalp0WDJaeWIyMU5iMjUwWjI5dFpYSjVBUHNCRUdZMmJWOTBiMDF2Ym5SbmIyMWxjbmtBK2dFR1pqWnRYMlZ4QVB3QkMyWTJiVjlwYm5abGNuTmxBUDBCQjJZMmJWOWxlSEFBZ1FJUFpqWnRYM1JwYldWelUyTmhiR0Z5QVA0QkVHWTJiVjlpWVhSamFFbHVkbVZ5YzJVQWdBSU9aalp0WDJselRtVm5ZWFJwZG1VQS93RUtablJ0WDJseldtVnlid0NEQWdsbWRHMWZhWE5QYm1VQWhBSUlablJ0WDNwbGNtOEFoUUlIWm5SdFgyOXVaUUNHQWdobWRHMWZZMjl3ZVFDSEFnZG1kRzFmYlhWc0FJZ0NDR1owYlY5dGRXd3hBSWtDQ21aMGJWOXpjWFZoY21VQWlnSUhablJ0WDJGa1pBQ0xBZ2RtZEcxZmMzVmlBSXdDQjJaMGJWOXVaV2NBalFJSVpuUnRYM05wWjI0QWxBSU5ablJ0WDJOdmJtcDFaMkYwWlFDT0FoSm1kRzFmWm5KdmJVMXZiblJuYjIxbGNua0FrQUlRWm5SdFgzUnZUVzl1ZEdkdmJXVnllUUNQQWdabWRHMWZaWEVBa1FJTFpuUnRYMmx1ZG1WeWMyVUFrZ0lIWm5SdFgyVjRjQUNYQWc5bWRHMWZkR2x0WlhOVFkyRnNZWElBa3dJUVpuUnRYMkpoZEdOb1NXNTJaWEp6WlFDV0FnaG1kRzFmYzNGeWRBQ1lBZ3htZEcxZmFYTlRjWFZoY21VQW1RSU9ablJ0WDJselRtVm5ZWFJwZG1VQWxRSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RBQW5nSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RFQW53SVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RJQW9BSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RNQW9RSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RRQW9nSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RVQW93SVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RZQXBBSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RjQXBRSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RnQXBnSVhZbXh6TVRJek9ERmZYMlp5YjJKbGJtbDFjMDFoY0RrQXB3SVRZbXh6TVRJek9ERmZjR0ZwY21sdVowVnhNUUN4QWhOaWJITXhNak00TVY5d1lXbHlhVzVuUlhFeUFMSUNFMkpzY3pFeU16Z3hYM0JoYVhKcGJtZEZjVE1Bc3dJVFlteHpNVEl6T0RGZmNHRnBjbWx1WjBWeE5BQzBBaE5pYkhNeE1qTTRNVjl3WVdseWFXNW5SWEUxQUxVQ0VHSnNjekV5TXpneFgzQmhhWEpwYm1jQXRnSVNZbXh6TVRJek9ERmZjSEpsY0dGeVpVY3hBS29DRW1Kc2N6RXlNemd4WDNCeVpYQmhjbVZITWdDckFoTmliSE14TWpNNE1WOXRhV3hzWlhKTWIyOXdBS3dDSEdKc2N6RXlNemd4WDJacGJtRnNSWGh3YjI1bGJuUnBZWFJwYjI0QXNBSWZZbXh6TVRJek9ERmZabWx1WVd4RmVIQnZibVZ1ZEdsaGRHbHZiazlzWkFDdEFocGliSE14TWpNNE1WOWZZM2xqYkc5MGIyMXBZMU54ZFdGeVpRQ3VBaHBpYkhNeE1qTTRNVjlmWTNsamJHOTBiMjFwWTBWNGNGOTNNQUN2QWdobU5tMWZiWFZzTVFDYUFnbG1ObTFmYlhWc01ERUFtd0lLWm5SdFgyMTFiREF4TkFDY0FncnEvQVMzQWo0QUlBRWdBQ2tEQURjREFDQUJJQUFwQXdnM0F3Z2dBU0FBS1FNUU53TVFJQUVnQUNrREdEY0RHQ0FCSUFBcEF5QTNBeUFnQVNBQUtRTW9Od01vQ3l3QUlBQkNBRGNEQUNBQVFnQTNBd2dnQUVJQU53TVFJQUJDQURjREdDQUFRZ0EzQXlBZ0FFSUFOd01vQzAwQUlBQXBBeWhRQkVBZ0FDa0RJRkFFUUNBQUtRTVlVQVJBSUFBcEF4QlFCRUFnQUNrRENGQUVRQ0FBS1FNQVVBOEZRUUFQQ3dWQkFBOExCVUVBRHdzRlFRQVBDd1ZCQUE4TFFRQVBDeXdBSUFCQ0FUY0RBQ0FBUWdBM0F3Z2dBRUlBTndNUUlBQkNBRGNER0NBQVFnQTNBeUFnQUVJQU53TW9DMnNBSUFBcEF5Z2dBU2tES0ZFRVFDQUFLUU1nSUFFcEF5QlJCRUFnQUNrREdDQUJLUU1ZVVFSQUlBQXBBeEFnQVNrREVGRUVRQ0FBS1FNSUlBRXBBd2hSQkVBZ0FDa0RBQ0FCS1FNQVVROEZRUUFQQ3dWQkFBOExCVUVBRHdzRlFRQVBDd1ZCQUE4TFFRQVBDOFVCQUNBQUtRTW9JQUVwQXloVUJFQkJBQThGSUFBcEF5Z2dBU2tES0ZZRVFFRUJEd1VnQUNrRElDQUJLUU1nVkFSQVFRQVBCU0FBS1FNZ0lBRXBBeUJXQkVCQkFROEZJQUFwQXhnZ0FTa0RHRlFFUUVFQUR3VWdBQ2tER0NBQktRTVlWZ1JBUVFFUEJTQUFLUU1RSUFFcEF4QlVCRUJCQUE4RklBQXBBeEFnQVNrREVGWUVRRUVCRHdVZ0FDa0RDQ0FCS1FNSVZBUkFRUUFQQlNBQUtRTUlJQUVwQXdoV0JFQkJBUThGSUFBcEF3QWdBU2tEQUZvUEN3c0xDd3NMQ3dzTEMwRUFEd3U4QWdFQmZpQUFOUUlBSUFFMUFnQjhJUU1nQWlBRFBnSUFJQUExQWdRZ0FUVUNCSHdnQTBJZ2lId2hBeUFDSUFNK0FnUWdBRFVDQ0NBQk5RSUlmQ0FEUWlDSWZDRURJQUlnQXo0Q0NDQUFOUUlNSUFFMUFneDhJQU5DSUloOElRTWdBaUFEUGdJTUlBQTFBaEFnQVRVQ0VId2dBMElnaUh3aEF5QUNJQU0rQWhBZ0FEVUNGQ0FCTlFJVWZDQURRaUNJZkNFRElBSWdBejRDRkNBQU5RSVlJQUUxQWhoOElBTkNJSWg4SVFNZ0FpQURQZ0lZSUFBMUFod2dBVFVDSEh3Z0EwSWdpSHdoQXlBQ0lBTStBaHdnQURVQ0lDQUJOUUlnZkNBRFFpQ0lmQ0VESUFJZ0F6NENJQ0FBTlFJa0lBRTFBaVI4SUFOQ0lJaDhJUU1nQWlBRFBnSWtJQUExQWlnZ0FUVUNLSHdnQTBJZ2lId2hBeUFDSUFNK0FpZ2dBRFVDTENBQk5RSXNmQ0FEUWlDSWZDRURJQUlnQXo0Q0xDQURRaUNJcHd1UUF3RUJmaUFBTlFJQUlBRTFBZ0I5SVFNZ0FpQURRdi8vLy84UGd6NENBQ0FBTlFJRUlBRTFBZ1I5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0JDQUFOUUlJSUFFMUFnaDlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDQ0NBQU5RSU1JQUUxQWd4OUlBTkNJSWQ4SVFNZ0FpQURRdi8vLy84UGd6NENEQ0FBTlFJUUlBRTFBaEI5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0VDQUFOUUlVSUFFMUFoUjlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDRkNBQU5RSVlJQUUxQWhoOUlBTkNJSWQ4SVFNZ0FpQURRdi8vLy84UGd6NENHQ0FBTlFJY0lBRTFBaHg5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0hDQUFOUUlnSUFFMUFpQjlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDSUNBQU5RSWtJQUUxQWlSOUlBTkNJSWQ4SVFNZ0FpQURRdi8vLy84UGd6NENKQ0FBTlFJb0lBRTFBaWg5SUFOQ0lJZDhJUU1nQWlBRFF2Ly8vLzhQZ3o0Q0tDQUFOUUlzSUFFMUFpeDlJQU5DSUlkOElRTWdBaUFEUXYvLy8vOFBnejRDTENBRFFpQ0hwd3VuSWhvQmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrSUFOQy8vLy8vdytESUFBMUFnQWlCU0FCTlFJQUlnWitmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBZ0FnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVVnQVRVQ0JDSUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNCQ0lISUFaK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0FnUWdBMElnaUNFRUlBTkMvLy8vL3crRElBVWdBVFVDQ0NJS2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQnlBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0NDSUpJQVorZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWdnZ0JFSWdpQ0VESUFSQy8vLy8vdytESUFVZ0FUVUNEQ0lNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdCeUFLZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDU0FJZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdBRFVDRENJTElBWitmQ0VFSUFNZ0JFSWdpSHdoQXlBQ0lBUStBZ3dnQTBJZ2lDRUVJQU5DLy8vLy93K0RJQVVnQVRVQ0VDSU9mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0J5QU1mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0NTQUtmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0N5QUlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0FEVUNFQ0lOSUFaK2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FoQWdCRUlnaUNFRElBUkMvLy8vL3crRElBVWdBVFVDRkNJUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQnlBT2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ1NBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ3lBS2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBSWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQURVQ0ZDSVBJQVorZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWhRZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUFVZ0FUVUNHQ0lTZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCeUFRZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdDU0FPZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdDeUFNZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEU0FLZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEeUFJZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdBRFVDR0NJUklBWitmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBaGdnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVVnQVRVQ0hDSVVmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0J5QVNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0NTQVFmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0N5QU9mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RTQU1mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0R5QUtmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VTQUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNIQ0lUSUFaK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0Fod2dBMElnaUNFRUlBTkMvLy8vL3crRElBVWdBVFVDSUNJV2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQnlBVWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ1NBU2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ3lBUWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRFNBT2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRHlBTWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRVNBS2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRXlBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0lDSVZJQVorZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWlBZ0JFSWdpQ0VESUFSQy8vLy8vdytESUFVZ0FUVUNKQ0lZZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdCeUFXZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDU0FVZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDeUFTZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEU0FRZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEeUFPZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFU0FNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFeUFLZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGU0FJZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdBRFVDSkNJWElBWitmQ0VFSUFNZ0JFSWdpSHdoQXlBQ0lBUStBaVFnQTBJZ2lDRUVJQU5DLy8vLy93K0RJQVVnQVRVQ0tDSWFmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0J5QVlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0NTQVdmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0N5QVVmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0RTQVNmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0R5QVFmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0VTQU9mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0V5QU1mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZTQUtmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0Z5QUlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0FEVUNLQ0laSUFaK2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FpZ2dCRUlnaUNFRElBUkMvLy8vL3crRElBVWdBVFVDTENJY2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQnlBYWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ1NBWWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ3lBV2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBVWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRHlBU2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRVNBUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRXlBT2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRlNBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRnlBS2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nR1NBSWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQURVQ0xDSWJJQVorZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWl3Z0EwSWdpQ0VFSUFOQy8vLy8vdytESUFjZ0hINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUFrZ0duNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUFzZ0dINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUEwZ0ZuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUE4Z0ZINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJFZ0VuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJNZ0VINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJVZ0RuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJjZ0RINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJrZ0NuNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJzZ0NINThJUU1nQkNBRFFpQ0lmQ0VFSUFJZ0F6NENNQ0FFUWlDSUlRTWdCRUwvLy8vL0Q0TWdDU0FjZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDeUFhZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEU0FZZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEeUFXZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFU0FVZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFeUFTZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGU0FRZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGeUFPZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdHU0FNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdHeUFLZm53aEJDQURJQVJDSUloOElRTWdBaUFFUGdJMElBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBTElCeCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBTklCcCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUElCaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUklCWitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBVElCUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBVklCSitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBWElCQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBWklBNStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBYklBeCtmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBamdnQkVJZ2lDRURJQVJDLy8vLy93K0RJQTBnSEg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQThnR241OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQkVnR0g1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQk1nRm41OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQlVnRkg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQmNnRW41OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQmtnRUg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQnNnRG41OElRUWdBeUFFUWlDSWZDRURJQUlnQkQ0Q1BDQURRaUNJSVFRZ0EwTC8vLy8vRDRNZ0R5QWNmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0VTQWFmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0V5QVlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZTQVdmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0Z5QVVmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0dTQVNmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0d5QVFmbndoQXlBRUlBTkNJSWg4SVFRZ0FpQURQZ0pBSUFSQ0lJZ2hBeUFFUXYvLy8vOFBneUFSSUJ4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFUSUJwK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFWSUJoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFYSUJaK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFaSUJSK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFiSUJKK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0FrUWdBMElnaUNFRUlBTkMvLy8vL3crRElCTWdISDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCVWdHbjU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCY2dHSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCa2dGbjU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCc2dGSDU4SVFNZ0JDQURRaUNJZkNFRUlBSWdBejRDU0NBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nRlNBY2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRnlBYWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nR1NBWWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nR3lBV2Zud2hCQ0FESUFSQ0lJaDhJUU1nQWlBRVBnSk1JQU5DSUlnaEJDQURRdi8vLy84UGd5QVhJQngrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVpJQnArZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWJJQmgrZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWxBZ0JFSWdpQ0VESUFSQy8vLy8vdytESUJrZ0hINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJzZ0duNThJUVFnQXlBRVFpQ0lmQ0VESUFJZ0JENENWQ0FEUWlDSUlRUWdBMEwvLy8vL0Q0TWdHeUFjZm53aEF5QUVJQU5DSUloOElRUWdBaUFEUGdKWUlBUkNJSWdoQXlBQ0lBUStBbHdMemlBUUFYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDVDQUNFQ1FnQWhBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFBTlFJQUlnWWdCbjU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDQUNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0JpQUFOUUlFSWdkK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBU0FDUGdJRUlBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUdJQUExQWdnaUNINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFjZ0IzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FnZ2dBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQVlnQURVQ0RDSUpmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0J5QUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFFZ0FqNENEQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQmlBQU5RSVFJZ3ArZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUhJQWwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUlJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FTQUNQZ0lRSUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBR0lBQTFBaFFpQzM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWNnQ241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWdnQ1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWhRZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBWWdBRFVDR0NJTWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQnlBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ0NBS2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ1NBSmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUVnQWo0Q0dDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCaUFBTlFJY0lnMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSElBeCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSUlBdCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSklBcCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQVNBQ1BnSWNJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFHSUFBMUFpQWlEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBY2dEWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBZ2dESDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBa2dDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBb2dDbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBaUFnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFZZ0FEVUNKQ0lQZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCeUFPZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDQ0FOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDU0FNZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFMZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBRWdBajRDSkNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0JpQUFOUUlvSWhCK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFISUE5K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFJSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFKSUExK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFLSUF4K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFMSUF0K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBU0FDUGdJb0lBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUdJQUExQWl3aUVYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFjZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFnZ0QzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFrZ0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0RYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFzZ0RINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0Fpd2dBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWdnRUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWtnRDM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nRG41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQXNnRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQXdnREg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWpBZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBZ2dFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBa2dFSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBb2dEMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBc2dEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBd2dEWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBalFnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFrZ0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFzZ0QzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUF3Z0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0RYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FqZ2dBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQW9nRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQXNnRUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQXdnRDM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQTBnRG41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWp3Z0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBc2dFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBd2dFSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBMGdEMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBNGdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBa0FnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUF3Z0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUE0Z0QzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FrUWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQTBnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQTRnRUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQThnRDM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWtnZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBNGdFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdFSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBa3dnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUE4Z0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJBZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FsQWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQkFnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWxRZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElCRWdFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBbGdnQXlFRUlBUkNJSWdoQlNBQklBUStBbHdMQ2dBZ0FDQUFJQUVRQ0F1U0FnRUJmaUFBTlFBQUlBRitJUU1nQWlBRFBnQUFJQUExQUFRZ0FYNGdBMElnaUh3aEF5QUNJQU0rQUFRZ0FEVUFDQ0FCZmlBRFFpQ0lmQ0VESUFJZ0F6NEFDQ0FBTlFBTUlBRitJQU5DSUloOElRTWdBaUFEUGdBTUlBQTFBQkFnQVg0Z0EwSWdpSHdoQXlBQ0lBTStBQkFnQURVQUZDQUJmaUFEUWlDSWZDRURJQUlnQXo0QUZDQUFOUUFZSUFGK0lBTkNJSWg4SVFNZ0FpQURQZ0FZSUFBMUFCd2dBWDRnQTBJZ2lId2hBeUFDSUFNK0FCd2dBRFVBSUNBQmZpQURRaUNJZkNFRElBSWdBejRBSUNBQU5RQWtJQUYrSUFOQ0lJaDhJUU1nQWlBRFBnQWtJQUExQUNnZ0FYNGdBMElnaUh3aEF5QUNJQU0rQUNnZ0FEVUFMQ0FCZmlBRFFpQ0lmQ0VESUFJZ0F6NEFMQXRPQWdGK0FYOGdBQ0VESUFNMUFBQWdBWHdoQWlBRElBSStBQUFnQWtJZ2lDRUNBa0FEUUNBQ1VBMEJJQU5CQkdvaEF5QUROUUFBSUFKOElRSWdBeUFDUGdBQUlBSkNJSWdoQWd3QUN3c0xzQUlIQVg4QmZ3Ri9BWDhCZmdGK0FYOGdBZ1JBSUFJaEJRVkJpQUVoQlFzZ0F3UkFJQU1oQkFWQnVBRWhCQXNnQUNBRUVBQWdBVUhZQUJBQUlBVVFBVUhvQVJBQlFTOGhCa0V2SVFjQ1FBTkFRZGdBSUFkcUxRQUFJQWRCQTBaeURRRWdCMEVCYXlFSERBQUxDMEhZQUNBSGFrRURhelVBQUVJQmZDRUlJQWhDQVZFRVFFSUFRZ0NBR2dzQ1FBTkFBa0FEUUNBRUlBWnFMUUFBSUFaQkIwWnlEUUVnQmtFQmF5RUdEQUFMQ3lBRUlBWnFRUWRyS1FBQUlRa2dDU0FJZ0NFSklBWWdCMnRCQkdzaENnSkFBMEFnQ1VLQWdJQ0FjSU5RSUFwQkFFNXhEUUVnQ1VJSWlDRUpJQXBCQVdvaENnd0FDd3NnQ1ZBRVFDQUVRZGdBRUFWRkRRSkNBU0VKUVFBaENndEIyQUFnQ1VHWUFoQUxJQVJCbUFJZ0Ntc2dCQkFIR2lBRklBcHFJQWtRREF3QUN3c0x0UUlMQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmYwSElBaUVEUWNnQ0VBRkJBQ0VMUWZnQ0lRVWdBVUg0QWhBQVFhZ0RJUVJCcUFNUUEwRUFJUXhCMkFNaENDQUFRZGdERUFCQmlBUWhCa0c0QkNFSFFjZ0ZJUW9DUUFOQUlBZ1FBZzBCSUFVZ0NDQUdJQWNRRFNBR0lBUkI2QVFRQ0NBTEJFQWdEQVJBUWVnRUlBTVFCUVJBUWVnRUlBTWdDaEFIR2tFQUlRMEZJQU5CNkFRZ0NoQUhHa0VCSVEwTEJVSG9CQ0FESUFvUUJocEJBU0VOQ3dVZ0RBUkFRZWdFSUFNZ0NoQUdHa0VBSVEwRklBTkI2QVFRQlFSQUlBTkI2QVFnQ2hBSEdrRUFJUTBGUWVnRUlBTWdDaEFIR2tFQklRMExDd3NnQXlFSklBUWhBeUFLSVFRZ0NTRUtJQXdoQ3lBTklRd2dCU0VKSUFnaEJTQUhJUWdnQ1NFSERBQUxDeUFMQkVBZ0FTQURJQUlRQnhvRklBTWdBaEFBQ3dzS0FDQUFRWWdIRUFRUEN5d0FJQUFnQVNBQ0VBWUVRQ0FDUWZnRklBSVFCeG9GSUFKQitBVVFCUVJBSUFKQitBVWdBaEFIR2dzTEN4Y0FJQUFnQVNBQ0VBY0VRQ0FDUWZnRklBSVFCaG9MQ3dzQVFiZ0hJQUFnQVJBUkMvd2tBd0YrQVg0QmZrTDkvL1AvRHlFQ1FnQWhBeUFBTlFJQUlBSitRdi8vLy84UGd5RUVJQUExQWdBZ0EwSWdpSHhCK0FVMUFnQWdCSDU4SVFNZ0FDQURQZ0lBSUFBMUFnUWdBMElnaUh4QitBVTFBZ1FnQkg1OElRTWdBQ0FEUGdJRUlBQTFBZ2dnQTBJZ2lIeEIrQVUxQWdnZ0JINThJUU1nQUNBRFBnSUlJQUExQWd3Z0EwSWdpSHhCK0FVMUFnd2dCSDU4SVFNZ0FDQURQZ0lNSUFBMUFoQWdBMElnaUh4QitBVTFBaEFnQkg1OElRTWdBQ0FEUGdJUUlBQTFBaFFnQTBJZ2lIeEIrQVUxQWhRZ0JINThJUU1nQUNBRFBnSVVJQUExQWhnZ0EwSWdpSHhCK0FVMUFoZ2dCSDU4SVFNZ0FDQURQZ0lZSUFBMUFod2dBMElnaUh4QitBVTFBaHdnQkg1OElRTWdBQ0FEUGdJY0lBQTFBaUFnQTBJZ2lIeEIrQVUxQWlBZ0JINThJUU1nQUNBRFBnSWdJQUExQWlRZ0EwSWdpSHhCK0FVMUFpUWdCSDU4SVFNZ0FDQURQZ0lrSUFBMUFpZ2dBMElnaUh4QitBVTFBaWdnQkg1OElRTWdBQ0FEUGdJb0lBQTFBaXdnQTBJZ2lIeEIrQVUxQWl3Z0JINThJUU1nQUNBRFBnSXNRWWdLSUFOQ0lJZytBZ0JDQUNFRElBQTFBZ1FnQW41Qy8vLy8vdytESVFRZ0FEVUNCQ0FEUWlDSWZFSDRCVFVDQUNBRWZud2hBeUFBSUFNK0FnUWdBRFVDQ0NBRFFpQ0lmRUg0QlRVQ0JDQUVmbndoQXlBQUlBTStBZ2dnQURVQ0RDQURRaUNJZkVINEJUVUNDQ0FFZm53aEF5QUFJQU0rQWd3Z0FEVUNFQ0FEUWlDSWZFSDRCVFVDRENBRWZud2hBeUFBSUFNK0FoQWdBRFVDRkNBRFFpQ0lmRUg0QlRVQ0VDQUVmbndoQXlBQUlBTStBaFFnQURVQ0dDQURRaUNJZkVINEJUVUNGQ0FFZm53aEF5QUFJQU0rQWhnZ0FEVUNIQ0FEUWlDSWZFSDRCVFVDR0NBRWZud2hBeUFBSUFNK0Fod2dBRFVDSUNBRFFpQ0lmRUg0QlRVQ0hDQUVmbndoQXlBQUlBTStBaUFnQURVQ0pDQURRaUNJZkVINEJUVUNJQ0FFZm53aEF5QUFJQU0rQWlRZ0FEVUNLQ0FEUWlDSWZFSDRCVFVDSkNBRWZud2hBeUFBSUFNK0FpZ2dBRFVDTENBRFFpQ0lmRUg0QlRVQ0tDQUVmbndoQXlBQUlBTStBaXdnQURVQ01DQURRaUNJZkVINEJUVUNMQ0FFZm53aEF5QUFJQU0rQWpCQmlBb2dBMElnaUQ0Q0JFSUFJUU1nQURVQ0NDQUNma0wvLy8vL0Q0TWhCQ0FBTlFJSUlBTkNJSWg4UWZnRk5RSUFJQVIrZkNFRElBQWdBejRDQ0NBQU5RSU1JQU5DSUloOFFmZ0ZOUUlFSUFSK2ZDRURJQUFnQXo0Q0RDQUFOUUlRSUFOQ0lJaDhRZmdGTlFJSUlBUitmQ0VESUFBZ0F6NENFQ0FBTlFJVUlBTkNJSWg4UWZnRk5RSU1JQVIrZkNFRElBQWdBejRDRkNBQU5RSVlJQU5DSUloOFFmZ0ZOUUlRSUFSK2ZDRURJQUFnQXo0Q0dDQUFOUUljSUFOQ0lJaDhRZmdGTlFJVUlBUitmQ0VESUFBZ0F6NENIQ0FBTlFJZ0lBTkNJSWg4UWZnRk5RSVlJQVIrZkNFRElBQWdBejRDSUNBQU5RSWtJQU5DSUloOFFmZ0ZOUUljSUFSK2ZDRURJQUFnQXo0Q0pDQUFOUUlvSUFOQ0lJaDhRZmdGTlFJZ0lBUitmQ0VESUFBZ0F6NENLQ0FBTlFJc0lBTkNJSWg4UWZnRk5RSWtJQVIrZkNFRElBQWdBejRDTENBQU5RSXdJQU5DSUloOFFmZ0ZOUUlvSUFSK2ZDRURJQUFnQXo0Q01DQUFOUUkwSUFOQ0lJaDhRZmdGTlFJc0lBUitmQ0VESUFBZ0F6NENORUdJQ2lBRFFpQ0lQZ0lJUWdBaEF5QUFOUUlNSUFKK1F2Ly8vLzhQZ3lFRUlBQTFBZ3dnQTBJZ2lIeEIrQVUxQWdBZ0JINThJUU1nQUNBRFBnSU1JQUExQWhBZ0EwSWdpSHhCK0FVMUFnUWdCSDU4SVFNZ0FDQURQZ0lRSUFBMUFoUWdBMElnaUh4QitBVTFBZ2dnQkg1OElRTWdBQ0FEUGdJVUlBQTFBaGdnQTBJZ2lIeEIrQVUxQWd3Z0JINThJUU1nQUNBRFBnSVlJQUExQWh3Z0EwSWdpSHhCK0FVMUFoQWdCSDU4SVFNZ0FDQURQZ0ljSUFBMUFpQWdBMElnaUh4QitBVTFBaFFnQkg1OElRTWdBQ0FEUGdJZ0lBQTFBaVFnQTBJZ2lIeEIrQVUxQWhnZ0JINThJUU1nQUNBRFBnSWtJQUExQWlnZ0EwSWdpSHhCK0FVMUFod2dCSDU4SVFNZ0FDQURQZ0lvSUFBMUFpd2dBMElnaUh4QitBVTFBaUFnQkg1OElRTWdBQ0FEUGdJc0lBQTFBakFnQTBJZ2lIeEIrQVUxQWlRZ0JINThJUU1nQUNBRFBnSXdJQUExQWpRZ0EwSWdpSHhCK0FVMUFpZ2dCSDU4SVFNZ0FDQURQZ0kwSUFBMUFqZ2dBMElnaUh4QitBVTFBaXdnQkg1OElRTWdBQ0FEUGdJNFFZZ0tJQU5DSUlnK0FneENBQ0VESUFBMUFoQWdBbjVDLy8vLy93K0RJUVFnQURVQ0VDQURRaUNJZkVINEJUVUNBQ0FFZm53aEF5QUFJQU0rQWhBZ0FEVUNGQ0FEUWlDSWZFSDRCVFVDQkNBRWZud2hBeUFBSUFNK0FoUWdBRFVDR0NBRFFpQ0lmRUg0QlRVQ0NDQUVmbndoQXlBQUlBTStBaGdnQURVQ0hDQURRaUNJZkVINEJUVUNEQ0FFZm53aEF5QUFJQU0rQWh3Z0FEVUNJQ0FEUWlDSWZFSDRCVFVDRUNBRWZud2hBeUFBSUFNK0FpQWdBRFVDSkNBRFFpQ0lmRUg0QlRVQ0ZDQUVmbndoQXlBQUlBTStBaVFnQURVQ0tDQURRaUNJZkVINEJUVUNHQ0FFZm53aEF5QUFJQU0rQWlnZ0FEVUNMQ0FEUWlDSWZFSDRCVFVDSENBRWZud2hBeUFBSUFNK0Fpd2dBRFVDTUNBRFFpQ0lmRUg0QlRVQ0lDQUVmbndoQXlBQUlBTStBakFnQURVQ05DQURRaUNJZkVINEJUVUNKQ0FFZm53aEF5QUFJQU0rQWpRZ0FEVUNPQ0FEUWlDSWZFSDRCVFVDS0NBRWZud2hBeUFBSUFNK0FqZ2dBRFVDUENBRFFpQ0lmRUg0QlRVQ0xDQUVmbndoQXlBQUlBTStBanhCaUFvZ0EwSWdpRDRDRUVJQUlRTWdBRFVDRkNBQ2ZrTC8vLy8vRDRNaEJDQUFOUUlVSUFOQ0lJaDhRZmdGTlFJQUlBUitmQ0VESUFBZ0F6NENGQ0FBTlFJWUlBTkNJSWg4UWZnRk5RSUVJQVIrZkNFRElBQWdBejRDR0NBQU5RSWNJQU5DSUloOFFmZ0ZOUUlJSUFSK2ZDRURJQUFnQXo0Q0hDQUFOUUlnSUFOQ0lJaDhRZmdGTlFJTUlBUitmQ0VESUFBZ0F6NENJQ0FBTlFJa0lBTkNJSWg4UWZnRk5RSVFJQVIrZkNFRElBQWdBejRDSkNBQU5RSW9JQU5DSUloOFFmZ0ZOUUlVSUFSK2ZDRURJQUFnQXo0Q0tDQUFOUUlzSUFOQ0lJaDhRZmdGTlFJWUlBUitmQ0VESUFBZ0F6NENMQ0FBTlFJd0lBTkNJSWg4UWZnRk5RSWNJQVIrZkNFRElBQWdBejRDTUNBQU5RSTBJQU5DSUloOFFmZ0ZOUUlnSUFSK2ZDRURJQUFnQXo0Q05DQUFOUUk0SUFOQ0lJaDhRZmdGTlFJa0lBUitmQ0VESUFBZ0F6NENPQ0FBTlFJOElBTkNJSWg4UWZnRk5RSW9JQVIrZkNFRElBQWdBejRDUENBQU5RSkFJQU5DSUloOFFmZ0ZOUUlzSUFSK2ZDRURJQUFnQXo0Q1FFR0lDaUFEUWlDSVBnSVVRZ0FoQXlBQU5RSVlJQUorUXYvLy8vOFBneUVFSUFBMUFoZ2dBMElnaUh4QitBVTFBZ0FnQkg1OElRTWdBQ0FEUGdJWUlBQTFBaHdnQTBJZ2lIeEIrQVUxQWdRZ0JINThJUU1nQUNBRFBnSWNJQUExQWlBZ0EwSWdpSHhCK0FVMUFnZ2dCSDU4SVFNZ0FDQURQZ0lnSUFBMUFpUWdBMElnaUh4QitBVTFBZ3dnQkg1OElRTWdBQ0FEUGdJa0lBQTFBaWdnQTBJZ2lIeEIrQVUxQWhBZ0JINThJUU1nQUNBRFBnSW9JQUExQWl3Z0EwSWdpSHhCK0FVMUFoUWdCSDU4SVFNZ0FDQURQZ0lzSUFBMUFqQWdBMElnaUh4QitBVTFBaGdnQkg1OElRTWdBQ0FEUGdJd0lBQTFBalFnQTBJZ2lIeEIrQVUxQWh3Z0JINThJUU1nQUNBRFBnSTBJQUExQWpnZ0EwSWdpSHhCK0FVMUFpQWdCSDU4SVFNZ0FDQURQZ0k0SUFBMUFqd2dBMElnaUh4QitBVTFBaVFnQkg1OElRTWdBQ0FEUGdJOElBQTFBa0FnQTBJZ2lIeEIrQVUxQWlnZ0JINThJUU1nQUNBRFBnSkFJQUExQWtRZ0EwSWdpSHhCK0FVMUFpd2dCSDU4SVFNZ0FDQURQZ0pFUVlnS0lBTkNJSWcrQWhoQ0FDRURJQUExQWh3Z0FuNUMvLy8vL3crRElRUWdBRFVDSENBRFFpQ0lmRUg0QlRVQ0FDQUVmbndoQXlBQUlBTStBaHdnQURVQ0lDQURRaUNJZkVINEJUVUNCQ0FFZm53aEF5QUFJQU0rQWlBZ0FEVUNKQ0FEUWlDSWZFSDRCVFVDQ0NBRWZud2hBeUFBSUFNK0FpUWdBRFVDS0NBRFFpQ0lmRUg0QlRVQ0RDQUVmbndoQXlBQUlBTStBaWdnQURVQ0xDQURRaUNJZkVINEJUVUNFQ0FFZm53aEF5QUFJQU0rQWl3Z0FEVUNNQ0FEUWlDSWZFSDRCVFVDRkNBRWZud2hBeUFBSUFNK0FqQWdBRFVDTkNBRFFpQ0lmRUg0QlRVQ0dDQUVmbndoQXlBQUlBTStBalFnQURVQ09DQURRaUNJZkVINEJUVUNIQ0FFZm53aEF5QUFJQU0rQWpnZ0FEVUNQQ0FEUWlDSWZFSDRCVFVDSUNBRWZud2hBeUFBSUFNK0Fqd2dBRFVDUUNBRFFpQ0lmRUg0QlRVQ0pDQUVmbndoQXlBQUlBTStBa0FnQURVQ1JDQURRaUNJZkVINEJUVUNLQ0FFZm53aEF5QUFJQU0rQWtRZ0FEVUNTQ0FEUWlDSWZFSDRCVFVDTENBRWZud2hBeUFBSUFNK0FraEJpQW9nQTBJZ2lENENIRUlBSVFNZ0FEVUNJQ0FDZmtMLy8vLy9ENE1oQkNBQU5RSWdJQU5DSUloOFFmZ0ZOUUlBSUFSK2ZDRURJQUFnQXo0Q0lDQUFOUUlrSUFOQ0lJaDhRZmdGTlFJRUlBUitmQ0VESUFBZ0F6NENKQ0FBTlFJb0lBTkNJSWg4UWZnRk5RSUlJQVIrZkNFRElBQWdBejRDS0NBQU5RSXNJQU5DSUloOFFmZ0ZOUUlNSUFSK2ZDRURJQUFnQXo0Q0xDQUFOUUl3SUFOQ0lJaDhRZmdGTlFJUUlBUitmQ0VESUFBZ0F6NENNQ0FBTlFJMElBTkNJSWg4UWZnRk5RSVVJQVIrZkNFRElBQWdBejRDTkNBQU5RSTRJQU5DSUloOFFmZ0ZOUUlZSUFSK2ZDRURJQUFnQXo0Q09DQUFOUUk4SUFOQ0lJaDhRZmdGTlFJY0lBUitmQ0VESUFBZ0F6NENQQ0FBTlFKQUlBTkNJSWg4UWZnRk5RSWdJQVIrZkNFRElBQWdBejRDUUNBQU5RSkVJQU5DSUloOFFmZ0ZOUUlrSUFSK2ZDRURJQUFnQXo0Q1JDQUFOUUpJSUFOQ0lJaDhRZmdGTlFJb0lBUitmQ0VESUFBZ0F6NENTQ0FBTlFKTUlBTkNJSWg4UWZnRk5RSXNJQVIrZkNFRElBQWdBejRDVEVHSUNpQURRaUNJUGdJZ1FnQWhBeUFBTlFJa0lBSitRdi8vLy84UGd5RUVJQUExQWlRZ0EwSWdpSHhCK0FVMUFnQWdCSDU4SVFNZ0FDQURQZ0lrSUFBMUFpZ2dBMElnaUh4QitBVTFBZ1FnQkg1OElRTWdBQ0FEUGdJb0lBQTFBaXdnQTBJZ2lIeEIrQVUxQWdnZ0JINThJUU1nQUNBRFBnSXNJQUExQWpBZ0EwSWdpSHhCK0FVMUFnd2dCSDU4SVFNZ0FDQURQZ0l3SUFBMUFqUWdBMElnaUh4QitBVTFBaEFnQkg1OElRTWdBQ0FEUGdJMElBQTFBamdnQTBJZ2lIeEIrQVUxQWhRZ0JINThJUU1nQUNBRFBnSTRJQUExQWp3Z0EwSWdpSHhCK0FVMUFoZ2dCSDU4SVFNZ0FDQURQZ0k4SUFBMUFrQWdBMElnaUh4QitBVTFBaHdnQkg1OElRTWdBQ0FEUGdKQUlBQTFBa1FnQTBJZ2lIeEIrQVUxQWlBZ0JINThJUU1nQUNBRFBnSkVJQUExQWtnZ0EwSWdpSHhCK0FVMUFpUWdCSDU4SVFNZ0FDQURQZ0pJSUFBMUFrd2dBMElnaUh4QitBVTFBaWdnQkg1OElRTWdBQ0FEUGdKTUlBQTFBbEFnQTBJZ2lIeEIrQVUxQWl3Z0JINThJUU1nQUNBRFBnSlFRWWdLSUFOQ0lJZytBaVJDQUNFRElBQTFBaWdnQW41Qy8vLy8vdytESVFRZ0FEVUNLQ0FEUWlDSWZFSDRCVFVDQUNBRWZud2hBeUFBSUFNK0FpZ2dBRFVDTENBRFFpQ0lmRUg0QlRVQ0JDQUVmbndoQXlBQUlBTStBaXdnQURVQ01DQURRaUNJZkVINEJUVUNDQ0FFZm53aEF5QUFJQU0rQWpBZ0FEVUNOQ0FEUWlDSWZFSDRCVFVDRENBRWZud2hBeUFBSUFNK0FqUWdBRFVDT0NBRFFpQ0lmRUg0QlRVQ0VDQUVmbndoQXlBQUlBTStBamdnQURVQ1BDQURRaUNJZkVINEJUVUNGQ0FFZm53aEF5QUFJQU0rQWp3Z0FEVUNRQ0FEUWlDSWZFSDRCVFVDR0NBRWZud2hBeUFBSUFNK0FrQWdBRFVDUkNBRFFpQ0lmRUg0QlRVQ0hDQUVmbndoQXlBQUlBTStBa1FnQURVQ1NDQURRaUNJZkVINEJUVUNJQ0FFZm53aEF5QUFJQU0rQWtnZ0FEVUNUQ0FEUWlDSWZFSDRCVFVDSkNBRWZud2hBeUFBSUFNK0Frd2dBRFVDVUNBRFFpQ0lmRUg0QlRVQ0tDQUVmbndoQXlBQUlBTStBbEFnQURVQ1ZDQURRaUNJZkVINEJUVUNMQ0FFZm53aEF5QUFJQU0rQWxSQmlBb2dBMElnaUQ0Q0tFSUFJUU1nQURVQ0xDQUNma0wvLy8vL0Q0TWhCQ0FBTlFJc0lBTkNJSWg4UWZnRk5RSUFJQVIrZkNFRElBQWdBejRDTENBQU5RSXdJQU5DSUloOFFmZ0ZOUUlFSUFSK2ZDRURJQUFnQXo0Q01DQUFOUUkwSUFOQ0lJaDhRZmdGTlFJSUlBUitmQ0VESUFBZ0F6NENOQ0FBTlFJNElBTkNJSWg4UWZnRk5RSU1JQVIrZkNFRElBQWdBejRDT0NBQU5RSThJQU5DSUloOFFmZ0ZOUUlRSUFSK2ZDRURJQUFnQXo0Q1BDQUFOUUpBSUFOQ0lJaDhRZmdGTlFJVUlBUitmQ0VESUFBZ0F6NENRQ0FBTlFKRUlBTkNJSWg4UWZnRk5RSVlJQVIrZkNFRElBQWdBejRDUkNBQU5RSklJQU5DSUloOFFmZ0ZOUUljSUFSK2ZDRURJQUFnQXo0Q1NDQUFOUUpNSUFOQ0lJaDhRZmdGTlFJZ0lBUitmQ0VESUFBZ0F6NENUQ0FBTlFKUUlBTkNJSWg4UWZnRk5RSWtJQVIrZkNFRElBQWdBejRDVUNBQU5RSlVJQU5DSUloOFFmZ0ZOUUlvSUFSK2ZDRURJQUFnQXo0Q1ZDQUFOUUpZSUFOQ0lJaDhRZmdGTlFJc0lBUitmQ0VESUFBZ0F6NENXRUdJQ2lBRFFpQ0lQZ0lzUVlnS0lBQkJNR29nQVJBUUM2WkRNd0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmtMOS8vUC9EeUVGSUFOQy8vLy8vdytESUFBMUFnQWlCaUFCTlFJQUlnZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaENDQURRdi8vLy84UGcwRUFOUUw0QlNJSklBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nQmlBQk5RSUVJZ3QrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUFOUUlFSWdvZ0IzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytEUVFBMUF2d0ZJZzBnQ0g1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQVYrUXYvLy8vOFBneUVNSUFSQy8vLy8vdytESUFrZ0RINThJUVFnQXlBRVFpQ0lmQ0VESUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFHSUFFMUFnZ2lEMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBb2dDMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBQTFBZ2dpRGlBSGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRFNBTWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE5CQURVQ2dBWWlFU0FJZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJUkFnQTBMLy8vLy9ENE1nQ1NBUWZud2hBeUFFSUFOQ0lJaDhJUVFnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVlnQVRVQ0RDSVRmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0NpQVBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RpQUxmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNEQ0lTSUFkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFOSUJCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFSSUF4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBnMEVBTlFLRUJpSVZJQWgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUZma0wvLy8vL0Q0TWhGQ0FFUXYvLy8vOFBneUFKSUJSK2ZDRUVJQU1nQkVJZ2lId2hBeUFEUWlDSUlRUWdBMEwvLy8vL0Q0TWdCaUFCTlFJUUloZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBS0lCTitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBT0lBOStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBU0lBdCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBQU5RSVFJaFlnQjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTBnRkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQkVnRUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQlVnREg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RRUUExQW9nR0loa2dDSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBVitRdi8vLy84UGd5RVlJQU5DLy8vLy93K0RJQWtnR0g1OElRTWdCQ0FEUWlDSWZDRUVJQVJDSUlnaEF5QUVRdi8vLy84UGd5QUdJQUUxQWhRaUczNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFvZ0YzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUE0Z0UzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJJZ0QzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJZZ0MzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFBMUFoUWlHaUFIZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEU0FZZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFU0FVZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGU0FRZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdHU0FNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TkJBRFVDakFZaUhTQUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0JYNUMvLy8vL3crRElSd2dCRUwvLy8vL0Q0TWdDU0FjZm53aEJDQURJQVJDSUloOElRTWdBMElnaUNFRUlBTkMvLy8vL3crRElBWWdBVFVDR0NJZmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ2lBYmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRGlBWGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRWlBVGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRmlBUGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nR2lBTGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0dDSWVJQWQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU5JQngrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVJJQmgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVZJQlIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVpJQkIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWRJQXgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGcwRUFOUUtRQmlJaElBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaElDQURRdi8vLy84UGd5QUpJQ0IrZkNFRElBUWdBMElnaUh3aEJDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0JpQUJOUUljSWlOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFLSUI5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFPSUJ0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFTSUJkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFXSUJOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFhSUE5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFlSUF0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFBTlFJY0lpSWdCMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBMGdJSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCRWdISDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCVWdHSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCa2dGSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCMGdFSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDRWdESDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRFFRQTFBcFFHSWlVZ0NINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFWK1F2Ly8vLzhQZ3lFa0lBUkMvLy8vL3crRElBa2dKSDU4SVFRZ0F5QUVRaUNJZkNFRElBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBR0lBRTFBaUFpSjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQW9nSTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTRnSDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQklnRzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQllnRjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQm9nRTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjRnRDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0lnQzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQUExQWlBaUppQUhmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0RTQWtmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0VTQWdmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZTQWNmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0dTQVlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0hTQVVmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0lTQVFmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0pTQU1mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDROQkFEVUNtQVlpS1NBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQlg1Qy8vLy8vdytESVNnZ0EwTC8vLy8vRDRNZ0NTQW9mbndoQXlBRUlBTkNJSWg4SVFRZ0JFSWdpQ0VESUFSQy8vLy8vdytESUFZZ0FUVUNKQ0lyZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDaUFuZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEaUFqZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFaUFmZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGaUFiZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdHaUFYZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdIaUFUZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdJaUFQZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdKaUFMZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdBRFVDSkNJcUlBZCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBTklDaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBUklDUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBVklDQitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBWklCeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBZElCaCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBaElCUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBbElCQitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBcElBeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZzBFQU5RS2NCaUl0SUFoK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFGZmtMLy8vLy9ENE1oTENBRVF2Ly8vLzhQZ3lBSklDeCtmQ0VFSUFNZ0JFSWdpSHdoQXlBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nQmlBQk5RSW9JaTkrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUtJQ3QrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU9JQ2QrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVNJQ04rZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVdJQjkrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWFJQnQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWVJQmQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWlJQk4rZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QW1JQTkrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QXFJQXQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QUFOUUlvSWk0Z0IzNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUEwZ0xINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJFZ0tINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJVZ0pINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUJrZ0lINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUIwZ0hINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNFZ0dINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNVZ0ZINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNrZ0VINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUMwZ0RINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytEUVFBMUFxQUdJakVnQ0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQVYrUXYvLy8vOFBneUV3SUFOQy8vLy8vdytESUFrZ01INThJUU1nQkNBRFFpQ0lmQ0VFSUFSQ0lJZ2hBeUFFUXYvLy8vOFBneUFHSUFFMUFpd2lNMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBb2dMMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBNGdLMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCSWdKMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCWWdJMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCb2dIMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCNGdHMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDSWdGMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDWWdFMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDb2dEMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDNGdDMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBQTFBaXdpTWlBSGZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBd2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRVNBc2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRlNBb2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nR1NBa2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSFNBZ2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSVNBY2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSlNBWWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nS1NBVWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nTFNBUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nTVNBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE5CQURVQ3BBWWlOU0FJZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJVFFnQkVMLy8vLy9ENE1nQ1NBMGZud2hCQ0FESUFSQ0lJaDhJUU1nQTBJZ2lDRUVJQU5DLy8vLy93K0RJQW9nTTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTRnTDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQklnSzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQllnSjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQm9nSTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjRnSDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0lnRzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ1lnRjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ29nRTM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQzRnRDM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJRElnQzM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTBnTkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQkVnTUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQlVnTEg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQmtnS0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQjBnSkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ0VnSUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ1VnSEg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQ2tnR0g1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQzBnRkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJREVnRUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJRFVnREg1OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q0FDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0RpQXpmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VpQXZmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ZpQXJmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dpQW5mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hpQWpmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lpQWZmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ppQWJmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0tpQVhmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0xpQVRmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ01pQVBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VTQTBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0ZTQXdmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0dTQXNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0hTQW9mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0lTQWtmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0pTQWdmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0tTQWNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0xTQVlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ01TQVVmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ05TQVFmbndoQkNBRElBUkNJSWg4SVFNZ0FpQUVQZ0lFSUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFTSUROK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFXSUM5K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFhSUN0K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFlSUNkK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFpSUNOK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFtSUI5K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFxSUJ0K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUF1SUJkK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUF5SUJOK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFWSURSK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFaSURCK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFkSUN4K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFoSUNoK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFsSUNSK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUFwSUNCK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUF0SUJ4K2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUF4SUJoK2ZDRURJQVFnQTBJZ2lId2hCQ0FEUXYvLy8vOFBneUExSUJSK2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FnZ2dCRUlnaUNFRElBUkMvLy8vL3crRElCWWdNMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCb2dMMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCNGdLMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDSWdKMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDWWdJMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDb2dIMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDNGdHMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElESWdGMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCa2dOSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCMGdNSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDRWdMSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDVWdLSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDa2dKSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDMGdJSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElERWdISDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElEVWdHSDU4SVFRZ0F5QUVRaUNJZkNFRElBSWdCRDRDRENBRFFpQ0lJUVFnQTBMLy8vLy9ENE1nR2lBemZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSGlBdmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSWlBcmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSmlBbmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nS2lBamZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nTGlBZmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nTWlBYmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSFNBMGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSVNBd2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nSlNBc2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nS1NBb2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nTFNBa2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nTVNBZ2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nTlNBY2Zud2hBeUFFSUFOQ0lJaDhJUVFnQWlBRFBnSVFJQVJDSUlnaEF5QUVRdi8vLy84UGd5QWVJRE4rZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWlJQzkrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QW1JQ3QrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXFJQ2QrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXVJQ04rZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXlJQjkrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWhJRFIrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QWxJREIrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXBJQ3grZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXRJQ2grZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QXhJQ1IrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QTFJQ0IrZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWhRZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUNJZ00zNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNZZ0wzNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNvZ0szNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUM0Z0ozNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESURJZ0kzNThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNVZ05INThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUNrZ01INThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESUMwZ0xINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESURFZ0tINThJUU1nQkNBRFFpQ0lmQ0VFSUFOQy8vLy8vdytESURVZ0pINThJUU1nQkNBRFFpQ0lmQ0VFSUFJZ0F6NENHQ0FFUWlDSUlRTWdCRUwvLy8vL0Q0TWdKaUF6Zm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdLaUF2Zm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdMaUFyZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdNaUFuZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdLU0EwZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdMU0F3Zm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdNU0FzZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdOU0FvZm53aEJDQURJQVJDSUloOElRTWdBaUFFUGdJY0lBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBcUlETitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBdUlDOStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBeUlDdCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBdElEUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBeElEQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBMUlDeCtmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBaUFnQkVJZ2lDRURJQVJDLy8vLy93K0RJQzRnTTM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJRElnTDM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJREVnTkg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJRFVnTUg1OElRUWdBeUFFUWlDSWZDRURJQUlnQkQ0Q0pDQURRaUNJSVFRZ0EwTC8vLy8vRDRNZ01pQXpmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ05TQTBmbndoQXlBRUlBTkNJSWg4SVFRZ0FpQURQZ0lvSUFSQ0lJZ2hBeUFDSUFRK0Fpd2dBNmNFUUNBQ1FmZ0ZJQUlRQnhvRklBSkIrQVVRQlFSQUlBSkIrQVVnQWhBSEdnc0xDODFCS1FGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg1Qy9mL3ovdzhoQmtJQUlRSkNBQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFBMUFnQWlCeUFIZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUWdnQWtMLy8vLy9ENE5CQURVQytBVWlDU0FJZm53aEFpQURJQUpDSUloOElRTWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnQURVQ0JDSUtmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytEUVFBMUF2d0ZJZ3dnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVMSUFKQy8vLy8vdytESUFrZ0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBSElBQTFBZ2dpRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nQ241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QU1JQXQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwRUFOUUtBQmlJUElBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaERpQUNRdi8vLy84UGd5QUpJQTUrZkNFQ0lBTWdBa0lnaUh3aEF5QURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCeUFBTlFJTUloQitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBS0lBMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nRENBT2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRHlBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5CQURVQ2hBWWlFaUFJZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUkVnQWtMLy8vLy9ENE1nQ1NBUmZud2hBaUFESUFKQ0lJaDhJUU1nQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFjZ0FEVUNFQ0lUZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFRZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FOZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBd2dFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFRQTFBb2dHSWhVZ0NINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFaK1F2Ly8vLzhQZ3lFVUlBSkMvLy8vL3crRElBa2dGSDU4SVFJZ0F5QUNRaUNJZkNFRElBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUhJQUExQWhRaUZuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0UzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFNSUJSK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFQSUJGK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFTSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFWSUF0K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMEVBTlFLTUJpSVlJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUdma0wvLy8vL0Q0TWhGeUFDUXYvLy8vOFBneUFKSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQnlBQU5RSVlJaGwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUtJQlorZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QU5JQk4rZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVFJQkIrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FrTC8vLy8vRDRNZ0RDQVhmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0R5QVVmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VpQVJmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZTQU9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dDQUxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQkFEVUNrQVlpR3lBSWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQm41Qy8vLy8vdytESVJvZ0FrTC8vLy8vRDRNZ0NTQWFmbndoQWlBRElBSkNJSWg4SVFNZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBY2dBRFVDSENJY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ2lBWmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRFNBV2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRUNBVGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQXdnR241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQThnRjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQklnRkg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQlVnRVg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQmdnRG41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQnNnQzM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRUUExQXBRR0loNGdDSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBWitRdi8vLy84UGd5RWRJQUpDLy8vLy93K0RJQWtnSFg1OElRSWdBeUFDUWlDSWZDRURJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFISUFBMUFpQWlIMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBb2dISDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBMGdHWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCQWdGbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElCTWdFMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQ1F2Ly8vLzhQZ3lBTUlCMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBUElCcCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBU0lCZCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBVklCUitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBWUlCRitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBYklBNStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBZUlBdCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBFQU5RS1lCaUloSUFoK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFHZmtMLy8vLy9ENE1oSUNBQ1F2Ly8vLzhQZ3lBSklDQitmQ0VDSUFNZ0FrSWdpSHdoQXlBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0J5QUFOUUlrSWlKK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFLSUI5K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFOSUJ4K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFRSUJsK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFUSUJaK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TWdEQ0FnZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEeUFkZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFaUFhZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdGU0FYZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHQ0FVZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHeUFSZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdIaUFPZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdJU0FMZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkJBRFVDbkFZaUpDQUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JuNUMvLy8vL3crRElTTWdBa0wvLy8vL0Q0TWdDU0FqZm53aEFpQURJQUpDSUloOElRTWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnQURVQ0tDSWxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NpQWlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0RTQWZmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VDQWNmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0V5QVpmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZpQVdmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUF3Z0kzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUE4Z0lINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJJZ0hYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJVZ0duNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJnZ0YzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJzZ0ZINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUI0Z0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNFZ0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNRZ0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUVFBMUFxQUdJaWNnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVtSUFKQy8vLy8vdytESUFrZ0puNThJUUlnQXlBQ1FpQ0lmQ0VESUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBSElBQTFBaXdpS0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nSlg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQTBnSW41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQkFnSDM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQk1nSEg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQllnR1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QU1JQ1orZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVBJQ04rZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVNJQ0IrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVZJQjErZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVlJQnArZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWJJQmQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWVJQlIrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWhJQkYrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWtJQTUrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QW5JQXQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwRUFOUUtrQmlJcUlBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaEtTQUNRdi8vLy84UGd5QUpJQ2wrZkNFQ0lBTWdBa0lnaUh3aEF5QURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdDaUFvZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FsZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFQ0FpZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdFeUFmZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdGaUFjZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHU0FaZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBd2dLWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdKbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdJMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCVWdJSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCZ2dIWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCc2dHbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCNGdGMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDRWdGSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDUWdFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDY2dEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDb2dDMzU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDQUNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0RTQW9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VDQWxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0V5QWlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZpQWZmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dTQWNmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUE4Z0tYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJJZ0puNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJVZ0kzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJnZ0lINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJzZ0hYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUI0Z0duNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNFZ0YzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNRZ0ZINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNjZ0VYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNvZ0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENCQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nRUNBb2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRXlBbGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRmlBaWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nR1NBZmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSENBY2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQklnS1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQlVnSm41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQmdnSTM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQnNnSUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQjRnSFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ0VnR241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ1FnRjM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ2NnRkg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ29nRVg1OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0NDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdFeUFvZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdGaUFsZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdHU0FpZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdIQ0FmZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElCVWdLWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCZ2dKbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCc2dJMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCNGdJSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDRWdIWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDUWdHbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDY2dGMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDb2dGSDU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDRENBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0ZpQW9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dTQWxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0hDQWlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0h5QWZmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUJnZ0tYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJzZ0puNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUI0Z0kzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNFZ0lINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNRZ0hYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNjZ0duNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNvZ0YzNThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENFQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nR1NBb2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSENBbGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSHlBaWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQnNnS1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQjRnSm41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ0VnSTM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ1FnSUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ2NnSFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ29nR241OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0ZDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdIQ0FvZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdIeUFsZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdJaUFpZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElCNGdLWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDRWdKbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDUWdJMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDY2dJSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDb2dIWDU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDR0NBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0h5QW9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0lpQWxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUNFZ0tYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNRZ0puNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNjZ0kzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUNvZ0lINThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENIQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nSWlBb2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nSlNBbGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUpDLy8vLy93K0RJQ1FnS1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ2NnSm41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQ29nSTM1OElRSWdBeUFDUWlDSWZDRURJQUVnQWo0Q0lDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdKU0FvZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElDY2dLWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElDb2dKbjU4SVFJZ0F5QUNRaUNJZkNFRElBRWdBajRDSkNBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0tDQW9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUNvZ0tYNThJUUlnQXlBQ1FpQ0lmQ0VESUFFZ0FqNENLQ0FESVFRZ0JFSWdpQ0VGSUFFZ0JENENMQ0FGcHdSQUlBRkIrQVVnQVJBSEdnVWdBVUg0QlJBRkJFQWdBVUg0QlNBQkVBY2FDd3NMQ2dBZ0FDQUFJQUVRRkFzTEFDQUFRZGdHSUFFUUZBc1ZBQ0FBUVlnVEVBQkJ1Qk1RQVVHSUV5QUJFQk1MRVFBZ0FFSG9FeEFZUWVnVFFaZ0lFQVVMSkFBZ0FCQUNCRUJCQUE4TElBQkJtQlFRR0VHWUZFR1lDQkFGQkVCQmZ3OExRUUVQQ3hjQUlBQWdBUkFZSUFGQitBVWdBUkFPSUFFZ0FSQVhDd2tBUVlnSElBQVFBQXZMQVFRQmZ3Ri9BWDhCZnlBQ0VBRkJNQ0VGSUFBaEF3SkFBMEFnQlNBQlN3MEJJQVZCTUVZRVFFSElGQkFjQlVISUZFSFlCa0hJRkJBVUN5QURRY2dVUWZnVUVCUWdBa0g0RkNBQ0VCQWdBMEV3YWlFRElBVkJNR29oQlF3QUN3c2dBVUV3Y0NFRUlBUkZCRUFQQzBINEZCQUJRUUFoQmdKQUEwQWdCaUFFUmcwQklBWWdBeTBBQURvQStCUWdBMEVCYWlFRElBWkJBV29oQmd3QUN3c2dCVUV3UmdSQVFjZ1VFQndGUWNnVVFkZ0dRY2dVRUJRTFFmZ1VRY2dVUWZnVUVCUWdBa0g0RkNBQ0VCQUxIQUFnQVNBQ1FhZ1ZFQjFCcUJWQnFCVVFGeUFBUWFnVklBTVFGQXY0QVFRQmZ3Ri9BWDhCZjBFQUtBSUFJUVZCQUNBRklBSkJBV3BCTUd4cU5nSUFJQVVRSENBQUlRWWdCVUV3YWlFRlFRQWhDQUpBQTBBZ0NDQUNSZzBCSUFZUUFnUkFJQVZCTUdzZ0JSQUFCU0FHSUFWQk1Hc2dCUkFVQ3lBR0lBRnFJUVlnQlVFd2FpRUZJQWhCQVdvaENBd0FDd3NnQmlBQmF5RUdJQVZCTUdzaEJTQURJQUpCQVdzZ0JHeHFJUWNnQlNBRkVCc0NRQU5BSUFoRkRRRWdCaEFDQkVBZ0JTQUZRVEJyRUFBZ0J4QUJCU0FGUVRCclFkZ1ZFQUFnQlNBR0lBVkJNR3NRRkNBRlFkZ1ZJQWNRRkFzZ0JpQUJheUVHSUFjZ0JHc2hCeUFGUVRCcklRVWdDRUVCYXlFSURBQUxDMEVBSUFVMkFnQUxQZ01CZndGL0FYOGdBQ0VFSUFJaEJVRUFJUU1DUUFOQUlBTWdBVVlOQVNBRUlBVVFGeUFFUVRCcUlRUWdCVUV3YWlFRklBTkJBV29oQXd3QUN3c0xQZ01CZndGL0FYOGdBQ0VFSUFJaEJVRUFJUU1DUUFOQUlBTWdBVVlOQVNBRUlBVVFHQ0FFUVRCcUlRUWdCVUV3YWlFRklBTkJBV29oQXd3QUN3c0xzZ0lDQVg4QmZ5QUNSUVJBSUFNUUhBOExJQUJCaUJZUUFDQURFQndnQWlFRUFrQURRQ0FFUVFGcklRUWdBU0FFYWkwQUFDRUZJQU1nQXhBVklBVkJnQUZQQkVBZ0JVR0FBV3NoQlNBRFFZZ1dJQU1RRkFzZ0F5QURFQlVnQlVIQUFFOEVRQ0FGUWNBQWF5RUZJQU5CaUJZZ0F4QVVDeUFESUFNUUZTQUZRU0JQQkVBZ0JVRWdheUVGSUFOQmlCWWdBeEFVQ3lBRElBTVFGU0FGUVJCUEJFQWdCVUVRYXlFRklBTkJpQllnQXhBVUN5QURJQU1RRlNBRlFRaFBCRUFnQlVFSWF5RUZJQU5CaUJZZ0F4QVVDeUFESUFNUUZTQUZRUVJQQkVBZ0JVRUVheUVGSUFOQmlCWWdBeEFVQ3lBRElBTVFGU0FGUVFKUEJFQWdCVUVDYXlFRklBTkJpQllnQXhBVUN5QURJQU1RRlNBRlFRRlBCRUFnQlVFQmF5RUZJQU5CaUJZZ0F4QVVDeUFFUlEwQkRBQUxDd3ZlQVFNQmZ3Ri9BWDhnQUJBQ0JFQWdBUkFCRHd0QkFTRUNRYWdKUWJnV0VBQWdBRUg0Q0VFd1FlZ1dFQ0lnQUVIWUNVRXdRWmdYRUNJQ1FBTkFRZWdXUVlnSEVBUU5BVUhvRmtISUZ4QVZRUUVoQXdKQUEwQkJ5QmRCaUFjUUJBMEJRY2dYUWNnWEVCVWdBMEVCYWlFRERBQUxDMEc0RmtINEZ4QUFJQUlnQTJ0QkFXc2hCQUpBQTBBZ0JFVU5BVUg0RjBINEZ4QVZJQVJCQVdzaEJBd0FDd3NnQXlFQ1FmZ1hRYmdXRUJWQjZCWkJ1QlpCNkJZUUZFR1lGMEg0RjBHWUZ4QVVEQUFMQzBHWUZ4QVpCRUJCbUJjZ0FSQVNCVUdZRnlBQkVBQUxDeUFBSUFBUUFnUkFRUUVQQ3lBQVFlZ0hRVEJCcUJnUUlrR29HRUdJQnhBRUN5b0FJQUVnQUNrREFEY0RBQ0FCSUFBcEF3ZzNBd2dnQVNBQUtRTVFOd01RSUFFZ0FDa0RHRGNER0FzZUFDQUFRZ0EzQXdBZ0FFSUFOd01JSUFCQ0FEY0RFQ0FBUWdBM0F4Z0xNd0FnQUNrREdGQUVRQ0FBS1FNUVVBUkFJQUFwQXdoUUJFQWdBQ2tEQUZBUEJVRUFEd3NGUVFBUEN3VkJBQThMUVFBUEN4NEFJQUJDQVRjREFDQUFRZ0EzQXdnZ0FFSUFOd01RSUFCQ0FEY0RHQXRIQUNBQUtRTVlJQUVwQXhoUkJFQWdBQ2tERUNBQktRTVFVUVJBSUFBcEF3Z2dBU2tEQ0ZFRVFDQUFLUU1BSUFFcEF3QlJEd1ZCQUE4TEJVRUFEd3NGUVFBUEMwRUFEd3Q5QUNBQUtRTVlJQUVwQXhoVUJFQkJBQThGSUFBcEF4Z2dBU2tER0ZZRVFFRUJEd1VnQUNrREVDQUJLUU1RVkFSQVFRQVBCU0FBS1FNUUlBRXBBeEJXQkVCQkFROEZJQUFwQXdnZ0FTa0RDRlFFUUVFQUR3VWdBQ2tEQ0NBQktRTUlWZ1JBUVFFUEJTQUFLUU1BSUFFcEF3QmFEd3NMQ3dzTEMwRUFEd3ZVQVFFQmZpQUFOUUlBSUFFMUFnQjhJUU1nQWlBRFBnSUFJQUExQWdRZ0FUVUNCSHdnQTBJZ2lId2hBeUFDSUFNK0FnUWdBRFVDQ0NBQk5RSUlmQ0FEUWlDSWZDRURJQUlnQXo0Q0NDQUFOUUlNSUFFMUFneDhJQU5DSUloOElRTWdBaUFEUGdJTUlBQTFBaEFnQVRVQ0VId2dBMElnaUh3aEF5QUNJQU0rQWhBZ0FEVUNGQ0FCTlFJVWZDQURRaUNJZkNFRElBSWdBejRDRkNBQU5RSVlJQUUxQWhoOElBTkNJSWg4SVFNZ0FpQURQZ0lZSUFBMUFod2dBVFVDSEh3Z0EwSWdpSHdoQXlBQ0lBTStBaHdnQTBJZ2lLY0xqQUlCQVg0Z0FEVUNBQ0FCTlFJQWZTRURJQUlnQTBMLy8vLy9ENE0rQWdBZ0FEVUNCQ0FCTlFJRWZTQURRaUNIZkNFRElBSWdBMEwvLy8vL0Q0TStBZ1FnQURVQ0NDQUJOUUlJZlNBRFFpQ0hmQ0VESUFJZ0EwTC8vLy8vRDRNK0FnZ2dBRFVDRENBQk5RSU1mU0FEUWlDSGZDRURJQUlnQTBMLy8vLy9ENE0rQWd3Z0FEVUNFQ0FCTlFJUWZTQURRaUNIZkNFRElBSWdBMEwvLy8vL0Q0TStBaEFnQURVQ0ZDQUJOUUlVZlNBRFFpQ0hmQ0VESUFJZ0EwTC8vLy8vRDRNK0FoUWdBRFVDR0NBQk5RSVlmU0FEUWlDSGZDRURJQUlnQTBMLy8vLy9ENE0rQWhnZ0FEVUNIQ0FCTlFJY2ZTQURRaUNIZkNFRElBSWdBMEwvLy8vL0Q0TStBaHdnQTBJZ2g2Y0xqeEFTQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrSUFOQy8vLy8vdytESUFBMUFnQWlCU0FCTlFJQUlnWitmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBZ0FnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVVnQVRVQ0JDSUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNCQ0lISUFaK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0FnUWdBMElnaUNFRUlBTkMvLy8vL3crRElBVWdBVFVDQ0NJS2Zud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQnlBSWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0NDSUpJQVorZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWdnZ0JFSWdpQ0VESUFSQy8vLy8vdytESUFVZ0FUVUNEQ0lNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdCeUFLZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdDU0FJZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdBRFVDRENJTElBWitmQ0VFSUFNZ0JFSWdpSHdoQXlBQ0lBUStBZ3dnQTBJZ2lDRUVJQU5DLy8vLy93K0RJQVVnQVRVQ0VDSU9mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0J5QU1mbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0NTQUtmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0N5QUlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0FEVUNFQ0lOSUFaK2ZDRURJQVFnQTBJZ2lId2hCQ0FDSUFNK0FoQWdCRUlnaUNFRElBUkMvLy8vL3crRElBVWdBVFVDRkNJUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQnlBT2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ1NBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ3lBS2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBSWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQURVQ0ZDSVBJQVorZkNFRUlBTWdCRUlnaUh3aEF5QUNJQVErQWhRZ0EwSWdpQ0VFSUFOQy8vLy8vdytESUFVZ0FUVUNHQ0lTZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCeUFRZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdDU0FPZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdDeUFNZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEU0FLZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdEeUFJZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdBRFVDR0NJUklBWitmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBaGdnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVVnQVRVQ0hDSVVmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0J5QVNmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0NTQVFmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0N5QU9mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RTQU1mbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0R5QUtmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0VTQUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNIQ0lUSUFaK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0Fod2dBMElnaUNFRUlBTkMvLy8vL3crRElBY2dGSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBa2dFbjU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBc2dFSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBMGdEbjU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBOGdESDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCRWdDbjU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCTWdDSDU4SVFNZ0JDQURRaUNJZkNFRUlBSWdBejRDSUNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nQ1NBVWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nQ3lBU2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRFNBUWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRHlBT2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRVNBTWZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nRXlBS2Zud2hCQ0FESUFSQ0lJaDhJUU1nQWlBRVBnSWtJQU5DSUlnaEJDQURRdi8vLy84UGd5QUxJQlIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU5JQkorZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVBJQkIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVJJQTUrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVRJQXgrZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWlnZ0JFSWdpQ0VESUFSQy8vLy8vdytESUEwZ0ZINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUE4Z0VuNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJFZ0VINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJNZ0RuNThJUVFnQXlBRVFpQ0lmQ0VESUFJZ0JENENMQ0FEUWlDSUlRUWdBMEwvLy8vL0Q0TWdEeUFVZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdFU0FTZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdFeUFRZm53aEF5QUVJQU5DSUloOElRUWdBaUFEUGdJd0lBUkNJSWdoQXlBRVF2Ly8vLzhQZ3lBUklCUitmQ0VFSUFNZ0JFSWdpSHdoQXlBRVF2Ly8vLzhQZ3lBVElCSitmQ0VFSUFNZ0JFSWdpSHdoQXlBQ0lBUStBalFnQTBJZ2lDRUVJQU5DLy8vLy93K0RJQk1nRkg1OElRTWdCQ0FEUWlDSWZDRUVJQUlnQXo0Q09DQUVRaUNJSVFNZ0FpQUVQZ0k4QzR3U0RBRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmtJQUlRSkNBQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFBMUFnQWlCaUFHZm53aEFpQURJQUpDSUloOElRTWdBU0FDUGdJQUlBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUdJQUExQWdRaUIzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FnUWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQVlnQURVQ0NDSUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0J5QUhmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFFZ0FqNENDQ0FESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQmlBQU5RSU1JZ2wrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUhJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FTQUNQZ0lNSUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBR0lBQTFBaEFpQ241OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWNnQ1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWdnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWhBZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBWWdBRFVDRkNJTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQnlBS2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQ0NBSmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5DQVlZaEFpQURRZ0dHSUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQkVMLy8vLy9ENE44SVFJZ0F5QUNRaUNJZkNBRmZDRURJQUVnQWo0Q0ZDQURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCaUFBTlFJWUlneCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSElBdCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSUlBcCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBSklBbCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQVNBQ1BnSVlJQU1oQkNBRVFpQ0lJUVZDQUNFQ1FnQWhBeUFDUXYvLy8vOFBneUFHSUFBMUFod2lEWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBY2dESDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBZ2dDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBa2dDbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBaHdnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFjZ0RYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFnZ0RINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFrZ0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0NuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FpQWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWdnRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQWtnREg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nQzM1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWlRZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBa2dEWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBb2dESDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBc2dDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBaWdnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFvZ0RYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFzZ0RINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0Fpd2dBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQXNnRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQXdnREg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUJJQUkrQWpBZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBd2dEWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQklBSStBalFnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0RYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFCSUFJK0FqZ2dBeUVFSUFSQ0lJZ2hCU0FCSUFRK0Fqd0xDZ0FnQUNBQUlBRVFMUXUyQVFFQmZpQUFOUUFBSUFGK0lRTWdBaUFEUGdBQUlBQTFBQVFnQVg0Z0EwSWdpSHdoQXlBQ0lBTStBQVFnQURVQUNDQUJmaUFEUWlDSWZDRURJQUlnQXo0QUNDQUFOUUFNSUFGK0lBTkNJSWg4SVFNZ0FpQURQZ0FNSUFBMUFCQWdBWDRnQTBJZ2lId2hBeUFDSUFNK0FCQWdBRFVBRkNBQmZpQURRaUNJZkNFRElBSWdBejRBRkNBQU5RQVlJQUYrSUFOQ0lJaDhJUU1nQWlBRFBnQVlJQUExQUJ3Z0FYNGdBMElnaUh3aEF5QUNJQU0rQUJ3TFRnSUJmZ0YvSUFBaEF5QUROUUFBSUFGOElRSWdBeUFDUGdBQUlBSkNJSWdoQWdKQUEwQWdBbEFOQVNBRFFRUnFJUU1nQXpVQUFDQUNmQ0VDSUFNZ0FqNEFBQ0FDUWlDSUlRSU1BQXNMQzdBQ0J3Ri9BWDhCZndGL0FYNEJmZ0YvSUFJRVFDQUNJUVVGUVpnWklRVUxJQU1FUUNBRElRUUZRYmdaSVFRTElBQWdCQkFsSUFGQitCZ1FKU0FGRUNaQjJCa1FKa0VmSVFaQkh5RUhBa0FEUUVINEdDQUhhaTBBQUNBSFFRTkdjZzBCSUFkQkFXc2hCd3dBQ3d0QitCZ2dCMnBCQTJzMUFBQkNBWHdoQ0NBSVFnRlJCRUJDQUVJQWdCb0xBa0FEUUFKQUEwQWdCQ0FHYWkwQUFDQUdRUWRHY2cwQklBWkJBV3NoQmd3QUN3c2dCQ0FHYWtFSGF5a0FBQ0VKSUFrZ0NJQWhDU0FHSUFkclFRUnJJUW9DUUFOQUlBbENnSUNBZ0hDRFVDQUtRUUJPY1EwQklBbENDSWdoQ1NBS1FRRnFJUW9NQUFzTElBbFFCRUFnQkVINEdCQXFSUTBDUWdFaENVRUFJUW9MUWZnWUlBbEIrQmtRTUNBRVFmZ1pJQXBySUFRUUxCb2dCU0FLYWlBSkVERU1BQXNMQzdVQ0N3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9BWDlCbUJvaEEwR1lHaEFtUVFBaEMwRzRHaUVGSUFGQnVCb1FKVUhZR2lFRVFkZ2FFQ2hCQUNFTVFmZ2FJUWdnQUVINEdoQWxRWmdiSVFaQnVCc2hCMEdZSENFS0FrQURRQ0FJRUNjTkFTQUZJQWdnQmlBSEVESWdCaUFFUWRnYkVDMGdDd1JBSUF3RVFFSFlHeUFERUNvRVFFSFlHeUFESUFvUUxCcEJBQ0VOQlNBRFFkZ2JJQW9RTEJwQkFTRU5Dd1ZCMkJzZ0F5QUtFQ3NhUVFFaERRc0ZJQXdFUUVIWUd5QURJQW9RS3hwQkFDRU5CU0FEUWRnYkVDb0VRQ0FEUWRnYklBb1FMQnBCQUNFTkJVSFlHeUFESUFvUUxCcEJBU0VOQ3dzTElBTWhDU0FFSVFNZ0NpRUVJQWtoQ2lBTUlRc2dEU0VNSUFVaENTQUlJUVVnQnlFSUlBa2hCd3dBQ3dzZ0N3UkFJQUVnQXlBQ0VDd2FCU0FESUFJUUpRc0xDZ0FnQUVHWUhSQXBEd3NzQUNBQUlBRWdBaEFyQkVBZ0FrRzRIQ0FDRUN3YUJTQUNRYmdjRUNvRVFDQUNRYmdjSUFJUUxCb0xDd3NYQUNBQUlBRWdBaEFzQkVBZ0FrRzRIQ0FDRUNzYUN3c0xBRUc0SFNBQUlBRVFOZ3VjRVFNQmZnRitBWDVDLy8vLy93OGhBa0lBSVFNZ0FEVUNBQ0FDZmtMLy8vLy9ENE1oQkNBQU5RSUFJQU5DSUloOFFiZ2NOUUlBSUFSK2ZDRURJQUFnQXo0Q0FDQUFOUUlFSUFOQ0lJaDhRYmdjTlFJRUlBUitmQ0VESUFBZ0F6NENCQ0FBTlFJSUlBTkNJSWg4UWJnY05RSUlJQVIrZkNFRElBQWdBejRDQ0NBQU5RSU1JQU5DSUloOFFiZ2NOUUlNSUFSK2ZDRURJQUFnQXo0Q0RDQUFOUUlRSUFOQ0lJaDhRYmdjTlFJUUlBUitmQ0VESUFBZ0F6NENFQ0FBTlFJVUlBTkNJSWg4UWJnY05RSVVJQVIrZkNFRElBQWdBejRDRkNBQU5RSVlJQU5DSUloOFFiZ2NOUUlZSUFSK2ZDRURJQUFnQXo0Q0dDQUFOUUljSUFOQ0lJaDhRYmdjTlFJY0lBUitmQ0VESUFBZ0F6NENIRUdZSHlBRFFpQ0lQZ0lBUWdBaEF5QUFOUUlFSUFKK1F2Ly8vLzhQZ3lFRUlBQTFBZ1FnQTBJZ2lIeEJ1QncxQWdBZ0JINThJUU1nQUNBRFBnSUVJQUExQWdnZ0EwSWdpSHhCdUJ3MUFnUWdCSDU4SVFNZ0FDQURQZ0lJSUFBMUFnd2dBMElnaUh4QnVCdzFBZ2dnQkg1OElRTWdBQ0FEUGdJTUlBQTFBaEFnQTBJZ2lIeEJ1QncxQWd3Z0JINThJUU1nQUNBRFBnSVFJQUExQWhRZ0EwSWdpSHhCdUJ3MUFoQWdCSDU4SVFNZ0FDQURQZ0lVSUFBMUFoZ2dBMElnaUh4QnVCdzFBaFFnQkg1OElRTWdBQ0FEUGdJWUlBQTFBaHdnQTBJZ2lIeEJ1QncxQWhnZ0JINThJUU1nQUNBRFBnSWNJQUExQWlBZ0EwSWdpSHhCdUJ3MUFod2dCSDU4SVFNZ0FDQURQZ0lnUVpnZklBTkNJSWcrQWdSQ0FDRURJQUExQWdnZ0FuNUMvLy8vL3crRElRUWdBRFVDQ0NBRFFpQ0lmRUc0SERVQ0FDQUVmbndoQXlBQUlBTStBZ2dnQURVQ0RDQURRaUNJZkVHNEhEVUNCQ0FFZm53aEF5QUFJQU0rQWd3Z0FEVUNFQ0FEUWlDSWZFRzRIRFVDQ0NBRWZud2hBeUFBSUFNK0FoQWdBRFVDRkNBRFFpQ0lmRUc0SERVQ0RDQUVmbndoQXlBQUlBTStBaFFnQURVQ0dDQURRaUNJZkVHNEhEVUNFQ0FFZm53aEF5QUFJQU0rQWhnZ0FEVUNIQ0FEUWlDSWZFRzRIRFVDRkNBRWZud2hBeUFBSUFNK0Fod2dBRFVDSUNBRFFpQ0lmRUc0SERVQ0dDQUVmbndoQXlBQUlBTStBaUFnQURVQ0pDQURRaUNJZkVHNEhEVUNIQ0FFZm53aEF5QUFJQU0rQWlSQm1COGdBMElnaUQ0Q0NFSUFJUU1nQURVQ0RDQUNma0wvLy8vL0Q0TWhCQ0FBTlFJTUlBTkNJSWg4UWJnY05RSUFJQVIrZkNFRElBQWdBejRDRENBQU5RSVFJQU5DSUloOFFiZ2NOUUlFSUFSK2ZDRURJQUFnQXo0Q0VDQUFOUUlVSUFOQ0lJaDhRYmdjTlFJSUlBUitmQ0VESUFBZ0F6NENGQ0FBTlFJWUlBTkNJSWg4UWJnY05RSU1JQVIrZkNFRElBQWdBejRDR0NBQU5RSWNJQU5DSUloOFFiZ2NOUUlRSUFSK2ZDRURJQUFnQXo0Q0hDQUFOUUlnSUFOQ0lJaDhRYmdjTlFJVUlBUitmQ0VESUFBZ0F6NENJQ0FBTlFJa0lBTkNJSWg4UWJnY05RSVlJQVIrZkNFRElBQWdBejRDSkNBQU5RSW9JQU5DSUloOFFiZ2NOUUljSUFSK2ZDRURJQUFnQXo0Q0tFR1lIeUFEUWlDSVBnSU1RZ0FoQXlBQU5RSVFJQUorUXYvLy8vOFBneUVFSUFBMUFoQWdBMElnaUh4QnVCdzFBZ0FnQkg1OElRTWdBQ0FEUGdJUUlBQTFBaFFnQTBJZ2lIeEJ1QncxQWdRZ0JINThJUU1nQUNBRFBnSVVJQUExQWhnZ0EwSWdpSHhCdUJ3MUFnZ2dCSDU4SVFNZ0FDQURQZ0lZSUFBMUFod2dBMElnaUh4QnVCdzFBZ3dnQkg1OElRTWdBQ0FEUGdJY0lBQTFBaUFnQTBJZ2lIeEJ1QncxQWhBZ0JINThJUU1nQUNBRFBnSWdJQUExQWlRZ0EwSWdpSHhCdUJ3MUFoUWdCSDU4SVFNZ0FDQURQZ0lrSUFBMUFpZ2dBMElnaUh4QnVCdzFBaGdnQkg1OElRTWdBQ0FEUGdJb0lBQTFBaXdnQTBJZ2lIeEJ1QncxQWh3Z0JINThJUU1nQUNBRFBnSXNRWmdmSUFOQ0lJZytBaEJDQUNFRElBQTFBaFFnQW41Qy8vLy8vdytESVFRZ0FEVUNGQ0FEUWlDSWZFRzRIRFVDQUNBRWZud2hBeUFBSUFNK0FoUWdBRFVDR0NBRFFpQ0lmRUc0SERVQ0JDQUVmbndoQXlBQUlBTStBaGdnQURVQ0hDQURRaUNJZkVHNEhEVUNDQ0FFZm53aEF5QUFJQU0rQWh3Z0FEVUNJQ0FEUWlDSWZFRzRIRFVDRENBRWZud2hBeUFBSUFNK0FpQWdBRFVDSkNBRFFpQ0lmRUc0SERVQ0VDQUVmbndoQXlBQUlBTStBaVFnQURVQ0tDQURRaUNJZkVHNEhEVUNGQ0FFZm53aEF5QUFJQU0rQWlnZ0FEVUNMQ0FEUWlDSWZFRzRIRFVDR0NBRWZud2hBeUFBSUFNK0Fpd2dBRFVDTUNBRFFpQ0lmRUc0SERVQ0hDQUVmbndoQXlBQUlBTStBakJCbUI4Z0EwSWdpRDRDRkVJQUlRTWdBRFVDR0NBQ2ZrTC8vLy8vRDRNaEJDQUFOUUlZSUFOQ0lJaDhRYmdjTlFJQUlBUitmQ0VESUFBZ0F6NENHQ0FBTlFJY0lBTkNJSWg4UWJnY05RSUVJQVIrZkNFRElBQWdBejRDSENBQU5RSWdJQU5DSUloOFFiZ2NOUUlJSUFSK2ZDRURJQUFnQXo0Q0lDQUFOUUlrSUFOQ0lJaDhRYmdjTlFJTUlBUitmQ0VESUFBZ0F6NENKQ0FBTlFJb0lBTkNJSWg4UWJnY05RSVFJQVIrZkNFRElBQWdBejRDS0NBQU5RSXNJQU5DSUloOFFiZ2NOUUlVSUFSK2ZDRURJQUFnQXo0Q0xDQUFOUUl3SUFOQ0lJaDhRYmdjTlFJWUlBUitmQ0VESUFBZ0F6NENNQ0FBTlFJMElBTkNJSWg4UWJnY05RSWNJQVIrZkNFRElBQWdBejRDTkVHWUh5QURRaUNJUGdJWVFnQWhBeUFBTlFJY0lBSitRdi8vLy84UGd5RUVJQUExQWh3Z0EwSWdpSHhCdUJ3MUFnQWdCSDU4SVFNZ0FDQURQZ0ljSUFBMUFpQWdBMElnaUh4QnVCdzFBZ1FnQkg1OElRTWdBQ0FEUGdJZ0lBQTFBaVFnQTBJZ2lIeEJ1QncxQWdnZ0JINThJUU1nQUNBRFBnSWtJQUExQWlnZ0EwSWdpSHhCdUJ3MUFnd2dCSDU4SVFNZ0FDQURQZ0lvSUFBMUFpd2dBMElnaUh4QnVCdzFBaEFnQkg1OElRTWdBQ0FEUGdJc0lBQTFBakFnQTBJZ2lIeEJ1QncxQWhRZ0JINThJUU1nQUNBRFBnSXdJQUExQWpRZ0EwSWdpSHhCdUJ3MUFoZ2dCSDU4SVFNZ0FDQURQZ0kwSUFBMUFqZ2dBMElnaUh4QnVCdzFBaHdnQkg1OElRTWdBQ0FEUGdJNFFaZ2ZJQU5DSUlnK0FoeEJtQjhnQUVFZ2FpQUJFRFVMdmg4akFYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmtMLy8vLy9EeUVGSUFOQy8vLy8vdytESUFBMUFnQWlCaUFCTlFJQUlnZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaENDQURRdi8vLy84UGcwRUFOUUs0SENJSklBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nQmlBQk5RSUVJZ3QrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUFOUUlFSWdvZ0IzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytEUVFBMUFyd2NJZzBnQ0g1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQVYrUXYvLy8vOFBneUVNSUFSQy8vLy8vdytESUFrZ0RINThJUVFnQXlBRVFpQ0lmQ0VESUFOQ0lJZ2hCQ0FEUXYvLy8vOFBneUFHSUFFMUFnZ2lEMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBb2dDMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBQTFBZ2dpRGlBSGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRFNBTWZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE5CQURVQ3dCd2lFU0FJZm53aEF5QUVJQU5DSUloOElRUWdBMEwvLy8vL0Q0TWdCWDVDLy8vLy93K0RJUkFnQTBMLy8vLy9ENE1nQ1NBUWZud2hBeUFFSUFOQ0lJaDhJUVFnQkVJZ2lDRURJQVJDLy8vLy93K0RJQVlnQVRVQ0RDSVRmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0NpQVBmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0RpQUxmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0FEVUNEQ0lTSUFkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFOSUJCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFSSUF4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBnMEVBTlFMRUhDSVZJQWgrZkNFRUlBTWdCRUlnaUh3aEF5QUVRdi8vLy84UGd5QUZma0wvLy8vL0Q0TWhGQ0FFUXYvLy8vOFBneUFKSUJSK2ZDRUVJQU1nQkVJZ2lId2hBeUFEUWlDSUlRUWdBMEwvLy8vL0Q0TWdCaUFCTlFJUUloZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBS0lCTitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBT0lBOStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBU0lBdCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBQU5RSVFJaFlnQjM1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQTBnRkg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQkVnRUg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RJQlVnREg1OElRTWdCQ0FEUWlDSWZDRUVJQU5DLy8vLy93K0RRUUExQXNnY0loa2dDSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElBVitRdi8vLy84UGd5RVlJQU5DLy8vLy93K0RJQWtnR0g1OElRTWdCQ0FEUWlDSWZDRUVJQVJDSUlnaEF5QUVRdi8vLy84UGd5QUdJQUUxQWhRaUczNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFvZ0YzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUE0Z0UzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJJZ0QzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUJZZ0MzNThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFBMUFoUWlHaUFIZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdEU0FZZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdFU0FVZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdGU0FRZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TWdHU0FNZm53aEJDQURJQVJDSUloOElRTWdCRUwvLy8vL0Q0TkJBRFVDekJ3aUhTQUlmbndoQkNBRElBUkNJSWg4SVFNZ0JFTC8vLy8vRDRNZ0JYNUMvLy8vL3crRElSd2dCRUwvLy8vL0Q0TWdDU0FjZm53aEJDQURJQVJDSUloOElRTWdBMElnaUNFRUlBTkMvLy8vL3crRElBWWdBVFVDR0NJZmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQ2lBYmZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRGlBWGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRWlBVGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nRmlBUGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nR2lBTGZud2hBeUFFSUFOQ0lJaDhJUVFnQTBMLy8vLy9ENE1nQURVQ0dDSWVJQWQrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QU5JQngrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVJJQmgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVZJQlIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QVpJQkIrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWRJQXgrZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGcwRUFOUUxRSENJaElBaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBRmZrTC8vLy8vRDRNaElDQURRdi8vLy84UGd5QUpJQ0IrZkNFRElBUWdBMElnaUh3aEJDQUVRaUNJSVFNZ0JFTC8vLy8vRDRNZ0JpQUJOUUljSWlOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFLSUI5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFPSUJ0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFTSUJkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFXSUJOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFhSUE5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFlSUF0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFBTlFJY0lpSWdCMzU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElBMGdJSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCRWdISDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCVWdHSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCa2dGSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElCMGdFSDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRElDRWdESDU4SVFRZ0F5QUVRaUNJZkNFRElBUkMvLy8vL3crRFFRQTFBdFFjSWlVZ0NINThJUVFnQXlBRVFpQ0lmQ0VESUFSQy8vLy8vdytESUFWK1F2Ly8vLzhQZ3lFa0lBUkMvLy8vL3crRElBa2dKSDU4SVFRZ0F5QUVRaUNJZkNFRElBTkNJSWdoQkNBRFF2Ly8vLzhQZ3lBS0lDTitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBT0lCOStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBU0lCdCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBV0lCZCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBYUlCTitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBZUlBOStmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBaUlBdCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBTklDUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBUklDQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBVklCeCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBWklCaCtmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBZElCUitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBaElCQitmQ0VESUFRZ0EwSWdpSHdoQkNBRFF2Ly8vLzhQZ3lBbElBeCtmQ0VESUFRZ0EwSWdpSHdoQkNBQ0lBTStBZ0FnQkVJZ2lDRURJQVJDLy8vLy93K0RJQTRnSTM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQklnSDM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQllnRzM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQm9nRjM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQjRnRTM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQ0lnRDM1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQkVnSkg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQlVnSUg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQmtnSEg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQjBnR0g1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQ0VnRkg1OElRUWdBeUFFUWlDSWZDRURJQVJDLy8vLy93K0RJQ1VnRUg1OElRUWdBeUFFUWlDSWZDRURJQUlnQkQ0Q0JDQURRaUNJSVFRZ0EwTC8vLy8vRDRNZ0VpQWpmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZpQWZmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0dpQWJmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0hpQVhmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0lpQVRmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0ZTQWtmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0dTQWdmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0hTQWNmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0lTQVlmbndoQXlBRUlBTkNJSWg4SVFRZ0EwTC8vLy8vRDRNZ0pTQVVmbndoQXlBRUlBTkNJSWg4SVFRZ0FpQURQZ0lJSUFSQ0lJZ2hBeUFFUXYvLy8vOFBneUFXSUNOK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFhSUI5K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFlSUJ0K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFpSUJkK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFaSUNSK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFkSUNCK2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFoSUJ4K2ZDRUVJQU1nQkVJZ2lId2hBeUFFUXYvLy8vOFBneUFsSUJoK2ZDRUVJQU1nQkVJZ2lId2hBeUFDSUFRK0Fnd2dBMElnaUNFRUlBTkMvLy8vL3crRElCb2dJMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCNGdIMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElDSWdHMzU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElCMGdKSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElDRWdJSDU4SVFNZ0JDQURRaUNJZkNFRUlBTkMvLy8vL3crRElDVWdISDU4SVFNZ0JDQURRaUNJZkNFRUlBSWdBejRDRUNBRVFpQ0lJUU1nQkVMLy8vLy9ENE1nSGlBamZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSWlBZmZud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSVNBa2Zud2hCQ0FESUFSQ0lJaDhJUU1nQkVMLy8vLy9ENE1nSlNBZ2Zud2hCQ0FESUFSQ0lJaDhJUU1nQWlBRVBnSVVJQU5DSUlnaEJDQURRdi8vLy84UGd5QWlJQ04rZkNFRElBUWdBMElnaUh3aEJDQURRdi8vLy84UGd5QWxJQ1IrZkNFRElBUWdBMElnaUh3aEJDQUNJQU0rQWhnZ0JFSWdpQ0VESUFJZ0JENENIQ0FEcHdSQUlBSkJ1QndnQWhBc0dnVWdBa0c0SEJBcUJFQWdBa0c0SENBQ0VDd2FDd3NMdXlFZEFYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJmZ0YrQVg0QmZnRitBWDRCZmdGK0FYNEJma0wvLy8vL0R5RUdRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdBRFVDQUNJSElBZCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaENDQUNRdi8vLy84UGcwRUFOUUs0SENJSklBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBRElRUWdCRUlnaUNFRlFnQWhBa0lBSVFNZ0FrTC8vLy8vRDRNZ0J5QUFOUUlFSWdwK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMElCaGlFQ0lBTkNBWVlnQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFFUXYvLy8vOFBnM3doQWlBRElBSkNJSWg4SUFWOElRTWdBa0wvLy8vL0Q0TkJBRFVDdkJ3aURDQUlmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JuNUMvLy8vL3crRElRc2dBa0wvLy8vL0Q0TWdDU0FMZm53aEFpQURJQUpDSUloOElRTWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQWNnQURVQ0NDSU5mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQ0FZWWhBaUFEUWdHR0lBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0NpQUtmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0JFTC8vLy8vRDROOElRSWdBeUFDUWlDSWZDQUZmQ0VESUFKQy8vLy8vdytESUF3Z0MzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUVFBMUFzQWNJZzhnQ0g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVorUXYvLy8vOFBneUVPSUFKQy8vLy8vdytESUFrZ0RuNThJUUlnQXlBQ1FpQ0lmQ0VESUFNaEJDQUVRaUNJSVFWQ0FDRUNRZ0FoQXlBQ1F2Ly8vLzhQZ3lBSElBQTFBZ3dpRUg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQW9nRFg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QU1JQTUrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVBJQXQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwRUFOUUxFSENJU0lBaCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBR2ZrTC8vLy8vRDRNaEVTQUNRdi8vLy84UGd5QUpJQkYrZkNFQ0lBTWdBa0lnaUh3aEF5QURJUVFnQkVJZ2lDRUZRZ0FoQWtJQUlRTWdBa0wvLy8vL0Q0TWdCeUFBTlFJUUloTitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBS0lCQitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZzBJQmhpRUNJQU5DQVlZZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBTklBMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBRVF2Ly8vLzhQZzN3aEFpQURJQUpDSUloOElBVjhJUU1nQWtMLy8vLy9ENE1nRENBUmZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRHlBT2Zud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nRWlBTGZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE5CQURVQ3lCd2lGU0FJZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCbjVDLy8vLy93K0RJUlFnQWtMLy8vLy9ENE1nQ1NBVWZud2hBaUFESUFKQ0lJaDhJUU1nQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUFjZ0FEVUNGQ0lXZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdDaUFUZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdEU0FRZm53aEFpQURJQUpDSUloOElRTWdBa0wvLy8vL0Q0TkNBWVloQWlBRFFnR0dJQUpDSUloOElRTWdBa0wvLy8vL0Q0TWdCRUwvLy8vL0Q0TjhJUUlnQXlBQ1FpQ0lmQ0FGZkNFRElBSkMvLy8vL3crRElBd2dGSDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBOGdFWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCSWdEbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCVWdDMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFRQTFBc3djSWhnZ0NINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFaK1F2Ly8vLzhQZ3lFWElBSkMvLy8vL3crRElBa2dGMzU4SVFJZ0F5QUNRaUNJZkNFRElBTWhCQ0FFUWlDSUlRVkNBQ0VDUWdBaEF5QUNRdi8vLy84UGd5QUhJQUExQWhnaUdYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFvZ0ZuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUEwZ0UzNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJBZ0VINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFNSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFQSUJSK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFTSUJGK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFWSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFZSUF0K2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBnMEVBTlFMUUhDSWJJQWgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUdma0wvLy8vL0Q0TWhHaUFDUXYvLy8vOFBneUFKSUJwK2ZDRUNJQU1nQWtJZ2lId2hBeUFESVFRZ0JFSWdpQ0VGUWdBaEFrSUFJUU1nQWtMLy8vLy9ENE1nQnlBQU5RSWNJaHgrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUtJQmwrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QU5JQlorZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVFJQk4rZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGcwSUJoaUVDSUFOQ0FZWWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QUVRdi8vLy84UGczd2hBaUFESUFKQ0lJaDhJQVY4SVFNZ0FrTC8vLy8vRDRNZ0RDQWFmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0R5QVhmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0VpQVVmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0ZTQVJmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0dDQU9mbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDRNZ0d5QUxmbndoQWlBRElBSkNJSWg4SVFNZ0FrTC8vLy8vRDROQkFEVUMxQndpSGlBSWZud2hBaUFESUFKQ0lJaDhJUU1nQWtMLy8vLy9ENE1nQm41Qy8vLy8vdytESVIwZ0FrTC8vLy8vRDRNZ0NTQWRmbndoQWlBRElBSkNJSWg4SVFNZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElBb2dISDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBMGdHWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCQWdGbjU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElCTWdFMzU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQ1F2Ly8vLzhQZ3lBTUlCMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBUElCcCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBU0lCZCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBVklCUitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBWUlCRitmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBYklBNStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBZUlBdCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQklBSStBZ0FnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUEwZ0hINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJBZ0dYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJNZ0ZuNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFQSUIxK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFTSUJwK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFWSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFZSUJSK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFiSUJGK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFlSUE1K2ZDRUNJQU1nQWtJZ2lId2hBeUFCSUFJK0FnUWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQkFnSEg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQk1nR1g1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQllnRm41OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QVNJQjErZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVZJQnArZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QVlJQmQrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWJJQlIrZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWVJQkYrZkNFQ0lBTWdBa0lnaUh3aEF5QUJJQUkrQWdnZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRElCTWdISDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElCWWdHWDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQ1F2Ly8vLzhQZ3lBVklCMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBWUlCcCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBYklCZCtmQ0VDSUFNZ0FrSWdpSHdoQXlBQ1F2Ly8vLzhQZ3lBZUlCUitmQ0VDSUFNZ0FrSWdpSHdoQXlBQklBSStBZ3dnQXlFRUlBUkNJSWdoQlVJQUlRSkNBQ0VESUFKQy8vLy8vdytESUJZZ0hINThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytEUWdHR0lRSWdBMElCaGlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUJrZ0dYNThJUUlnQXlBQ1FpQ0lmQ0VESUFKQy8vLy8vdytESUFSQy8vLy8vdytEZkNFQ0lBTWdBa0lnaUh3Z0JYd2hBeUFDUXYvLy8vOFBneUFZSUIxK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFiSUJwK2ZDRUNJQU1nQWtJZ2lId2hBeUFDUXYvLy8vOFBneUFlSUJkK2ZDRUNJQU1nQWtJZ2lId2hBeUFCSUFJK0FoQWdBeUVFSUFSQ0lJZ2hCVUlBSVFKQ0FDRURJQUpDLy8vLy93K0RJQmtnSEg1OElRSWdBeUFDUWlDSWZDRURJQUpDLy8vLy93K0RRZ0dHSVFJZ0EwSUJoaUFDUWlDSWZDRURJQUpDLy8vLy93K0RJQVJDLy8vLy93K0RmQ0VDSUFNZ0FrSWdpSHdnQlh3aEF5QUNRdi8vLy84UGd5QWJJQjErZkNFQ0lBTWdBa0lnaUh3aEF5QUNRdi8vLy84UGd5QWVJQnArZkNFQ0lBTWdBa0lnaUh3aEF5QUJJQUkrQWhRZ0F5RUVJQVJDSUlnaEJVSUFJUUpDQUNFRElBSkMvLy8vL3crRFFnR0dJUUlnQTBJQmhpQUNRaUNJZkNFRElBSkMvLy8vL3crRElCd2dISDU4SVFJZ0F5QUNRaUNJZkNFRElBSkMvLy8vL3crRElBUkMvLy8vL3crRGZDRUNJQU1nQWtJZ2lId2dCWHdoQXlBQ1F2Ly8vLzhQZ3lBZUlCMStmQ0VDSUFNZ0FrSWdpSHdoQXlBQklBSStBaGdnQXlFRUlBUkNJSWdoQlNBQklBUStBaHdnQmFjRVFDQUJRYmdjSUFFUUxCb0ZJQUZCdUJ3UUtnUkFJQUZCdUJ3Z0FSQXNHZ3NMQ3dvQUlBQWdBQ0FCRURrTEN3QWdBRUg0SENBQkVEa0xGUUFnQUVHWUl4QWxRYmdqRUNaQm1DTWdBUkE0Q3hFQUlBQkIyQ01RUFVIWUkwSDRIUkFxQ3lRQUlBQVFKd1JBUVFBUEN5QUFRZmdqRUQxQitDTkIrQjBRS2dSQVFYOFBDMEVCRHdzWEFDQUFJQUVRUFNBQlFiZ2NJQUVRTXlBQklBRVFQQXNKQUVHWUhTQUFFQ1VMeXdFRUFYOEJmd0YvQVg4Z0FoQW1RU0FoQlNBQUlRTUNRQU5BSUFVZ0FVc05BU0FGUVNCR0JFQkJtQ1FRUVFWQm1DUkIrQnhCbUNRUU9Rc2dBMEdZSkVHNEpCQTVJQUpCdUNRZ0FoQTFJQU5CSUdvaEF5QUZRU0JxSVFVTUFBc0xJQUZCSUhBaEJDQUVSUVJBRHd0QnVDUVFKa0VBSVFZQ1FBTkFJQVlnQkVZTkFTQUdJQU10QUFBNkFMZ2tJQU5CQVdvaEF5QUdRUUZxSVFZTUFBc0xJQVZCSUVZRVFFR1lKQkJCQlVHWUpFSDRIRUdZSkJBNUMwRzRKRUdZSkVHNEpCQTVJQUpCdUNRZ0FoQTFDeHdBSUFFZ0FrSFlKQkJDUWRna1FkZ2tFRHdnQUVIWUpDQURFRGtMK0FFRUFYOEJmd0YvQVg5QkFDZ0NBQ0VGUVFBZ0JTQUNRUUZxUVNCc2FqWUNBQ0FGRUVFZ0FDRUdJQVZCSUdvaEJVRUFJUWdDUUFOQUlBZ2dBa1lOQVNBR0VDY0VRQ0FGUVNCcklBVVFKUVVnQmlBRlFTQnJJQVVRT1FzZ0JpQUJhaUVHSUFWQklHb2hCU0FJUVFGcUlRZ01BQXNMSUFZZ0FXc2hCaUFGUVNCcklRVWdBeUFDUVFGcklBUnNhaUVISUFVZ0JSQkFBa0FEUUNBSVJRMEJJQVlRSndSQUlBVWdCVUVnYXhBbElBY1FKZ1VnQlVFZ2EwSDRKQkFsSUFVZ0JpQUZRU0JyRURrZ0JVSDRKQ0FIRURrTElBWWdBV3NoQmlBSElBUnJJUWNnQlVFZ2F5RUZJQWhCQVdzaENBd0FDd3RCQUNBRk5nSUFDejREQVg4QmZ3Ri9JQUFoQkNBQ0lRVkJBQ0VEQWtBRFFDQURJQUZHRFFFZ0JDQUZFRHdnQkVFZ2FpRUVJQVZCSUdvaEJTQURRUUZxSVFNTUFBc0xDejREQVg4QmZ3Ri9JQUFoQkNBQ0lRVkJBQ0VEQWtBRFFDQURJQUZHRFFFZ0JDQUZFRDBnQkVFZ2FpRUVJQVZCSUdvaEJTQURRUUZxSVFNTUFBc0xDN0lDQWdGL0FYOGdBa1VFUUNBREVFRVBDeUFBUVpnbEVDVWdBeEJCSUFJaEJBSkFBMEFnQkVFQmF5RUVJQUVnQkdvdEFBQWhCU0FESUFNUU9pQUZRWUFCVHdSQUlBVkJnQUZySVFVZ0EwR1lKU0FERURrTElBTWdBeEE2SUFWQndBQlBCRUFnQlVIQUFHc2hCU0FEUVpnbElBTVFPUXNnQXlBREVEb2dCVUVnVHdSQUlBVkJJR3NoQlNBRFFaZ2xJQU1RT1FzZ0F5QURFRG9nQlVFUVR3UkFJQVZCRUdzaEJTQURRWmdsSUFNUU9Rc2dBeUFERURvZ0JVRUlUd1JBSUFWQkNHc2hCU0FEUVpnbElBTVFPUXNnQXlBREVEb2dCVUVFVHdSQUlBVkJCR3NoQlNBRFFaZ2xJQU1RT1FzZ0F5QURFRG9nQlVFQ1R3UkFJQVZCQW1zaEJTQURRWmdsSUFNUU9Rc2dBeUFERURvZ0JVRUJUd1JBSUFWQkFXc2hCU0FEUVpnbElBTVFPUXNnQkVVTkFRd0FDd3NMM2dFREFYOEJmd0YvSUFBUUp3UkFJQUVRSmc4TFFTQWhBa0hZSGtHNEpSQWxJQUJCdUI1QklFSFlKUkJISUFCQitCNUJJRUg0SlJCSEFrQURRRUhZSlVHWUhSQXBEUUZCMkNWQm1DWVFPa0VCSVFNQ1FBTkFRWmdtUVpnZEVDa05BVUdZSmtHWUpoQTZJQU5CQVdvaEF3d0FDd3RCdUNWQnVDWVFKU0FDSUFOclFRRnJJUVFDUUFOQUlBUkZEUUZCdUNaQnVDWVFPaUFFUVFGcklRUU1BQXNMSUFNaEFrRzRKa0c0SlJBNlFkZ2xRYmdsUWRnbEVEbEIrQ1ZCdUNaQitDVVFPUXdBQ3d0QitDVVFQZ1JBUWZnbElBRVFOd1ZCK0NVZ0FSQWxDd3NnQUNBQUVDY0VRRUVCRHdzZ0FFSFlIVUVnUWRnbUVFZEIyQ1pCbUIwUUtRc1ZBQ0FBSUFGQitDWVFPVUg0SmtINEhDQUNFRGtMQ2dBZ0FDQUFJQUVRU2dzTEFDQUFRYmdjSUFFUU13c0pBQ0FBUWZnZEVDb0xEZ0FnQUJBQ0lBQkJNR29RQW5FTENnQWdBRUhnQUdvUUFnc05BQ0FBRUFFZ0FFRXdhaEFCQ3hVQUlBQVFBU0FBUVRCcUVCd2dBRUhnQUdvUUFRdDZBQ0FCSUFBcEF3QTNBd0FnQVNBQUtRTUlOd01JSUFFZ0FDa0RFRGNERUNBQklBQXBBeGczQXhnZ0FTQUFLUU1nTndNZ0lBRWdBQ2tES0RjREtDQUJJQUFwQXpBM0F6QWdBU0FBS1FNNE53TTRJQUVnQUNrRFFEY0RRQ0FCSUFBcEEwZzNBMGdnQVNBQUtRTlFOd05RSUFFZ0FDa0RXRGNEV0F1NkFRQWdBU0FBS1FNQU53TUFJQUVnQUNrRENEY0RDQ0FCSUFBcEF4QTNBeEFnQVNBQUtRTVlOd01ZSUFFZ0FDa0RJRGNESUNBQklBQXBBeWczQXlnZ0FTQUFLUU13TndNd0lBRWdBQ2tET0RjRE9DQUJJQUFwQTBBM0EwQWdBU0FBS1FOSU53TklJQUVnQUNrRFVEY0RVQ0FCSUFBcEExZzNBMWdnQVNBQUtRTmdOd05nSUFFZ0FDa0RhRGNEYUNBQklBQXBBM0EzQTNBZ0FTQUFLUU40TndONElBRWdBQ2tEZ0FFM0E0QUJJQUVnQUNrRGlBRTNBNGdCQ3h3QUlBRkI0QUJxRUJ3Z0FFRXdhaUFCUVRCcUVBQWdBQ0FCRUFBTEdBRUJmeUFBSUFFUUJDQUFRVEJxSUFGQk1Hb1FCSEVQQzNVQkFYOGdBRUhnQUdvaEFpQUFFRThFUUNBQkVFNFBDeUFCRUU0RVFFRUFEd3NnQWhBUEJFQWdBQ0FCRUZVUEN5QUNRY2duRUJVZ0FVSElKMEg0SnhBVUlBSkJ5Q2RCcUNnUUZDQUJRVEJxUWFnb1FkZ29FQlFnQUVINEp4QUVCRUFnQUVFd2FrSFlLQkFFQkVCQkFROExDMEVBRHd1MEFRSUJmd0YvSUFCQjRBQnFJUUlnQVVIZ0FHb2hBeUFBRUU4RVFDQUJFRThQQ3lBQkVFOEVRRUVBRHdzZ0FoQVBCRUFnQVNBQUVGWVBDeUFERUE4RVFDQUFJQUVRVmc4TElBSkJpQ2tRRlNBRFFiZ3BFQlVnQUVHNEtVSG9LUkFVSUFGQmlDbEJtQ29RRkNBQ1FZZ3BRY2dxRUJRZ0EwRzRLVUg0S2hBVUlBQkJNR3BCK0NwQnFDc1FGQ0FCUVRCcVFjZ3FRZGdyRUJSQjZDbEJtQ29RQkFSQVFhZ3JRZGdyRUFRRVFFRUJEd3NMUVFBUEMrZ0JBQ0FBRUU0RVFDQUFJQUVRVkE4TElBQkJpQ3dRRlNBQVFUQnFRYmdzRUJWQnVDeEI2Q3dRRlNBQVFiZ3NRWmd0RUJCQm1DMUJtQzBRRlVHWUxVR0lMRUdZTFJBUlFaZ3RRZWdzUVpndEVCRkJtQzFCbUMxQm1DMFFFRUdJTEVHSUxFSElMUkFRUWNndFFZZ3NRY2d0RUJBZ0FFRXdhaUFBUVRCcUlBRkI0QUJxRUJCQnlDMGdBUkFWSUFGQm1DMGdBUkFSSUFGQm1DMGdBUkFSUWVnc1FlZ3NRZmd0RUJCQitDMUIrQzFCK0MwUUVFSDRMVUg0TFVINExSQVFRWmd0SUFFZ0FVRXdhaEFSSUFGQk1HcEJ5QzBnQVVFd2FoQVVJQUZCTUdwQitDMGdBVUV3YWhBUkM0a0NBQ0FBRUU4RVFDQUFJQUVRVXc4TElBQkI0QUJxRUE4RVFDQUFJQUVRV0E4UEN5QUFRYWd1RUJVZ0FFRXdha0hZTGhBVlFkZ3VRWWd2RUJVZ0FFSFlMa0c0THhBUVFiZ3ZRYmd2RUJWQnVDOUJxQzVCdUM4UUVVRzRMMEdJTDBHNEx4QVJRYmd2UWJndlFiZ3ZFQkJCcUM1QnFDNUI2QzhRRUVIb0wwR29Ma0hvTHhBUVFlZ3ZRWmd3RUJVZ0FFRXdhaUFBUWVBQWFrSElNQkFVUWJndlFiZ3ZJQUVRRUVHWU1DQUJJQUVRRVVHSUwwR0lMMEg0TUJBUVFmZ3dRZmd3UWZnd0VCQkIrREJCK0RCQitEQVFFRUc0THlBQklBRkJNR29RRVNBQlFUQnFRZWd2SUFGQk1Hb1FGQ0FCUVRCcVFmZ3dJQUZCTUdvUUVVSElNRUhJTUNBQlFlQUFhaEFRQzZNQ0FRRi9JQUJCNEFCcUlRTWdBQkJPQkVBZ0FTQUNFRklnQWtIZ0FHb1FIQThMSUFFUVRnUkFJQUFnQWhCU0lBSkI0QUJxRUJ3UEN5QUFJQUVRQkFSQUlBQkJNR29nQVVFd2FoQUVCRUFnQVNBQ0VGZ1BDd3NnQVNBQVFhZ3hFQkVnQVVFd2FpQUFRVEJxUVlneUVCRkJxREZCMkRFUUZVSFlNVUhZTVVHNE1oQVFRYmd5UWJneVFiZ3lFQkJCcURGQnVESkI2RElRRkVHSU1rR0lNa0dZTXhBUUlBQkJ1REpCK0RNUUZFR1lNMEhJTXhBVlFmZ3pRZmd6UWFnMEVCQkJ5RE5CNkRJZ0FoQVJJQUpCcURRZ0FoQVJJQUJCTUdwQjZESkIyRFFRRkVIWU5FSFlORUhZTkJBUVFmZ3pJQUlnQWtFd2FoQVJJQUpCTUdwQm1ETWdBa0V3YWhBVUlBSkJNR3BCMkRRZ0FrRXdhaEFSUWFneFFhZ3hJQUpCNEFCcUVCQUxnQU1CQVg4Z0FFSGdBR29oQXlBQUVFOEVRQ0FCSUFJUVVpQUNRZUFBYWhBY0R3c2dBUkJPQkVBZ0FDQUNFRk1QQ3lBREVBOEVRQ0FBSUFFZ0FoQmFEd3NnQTBHSU5SQVZJQUZCaURWQnVEVVFGQ0FEUVlnMVFlZzFFQlFnQVVFd2FrSG9OVUdZTmhBVUlBQkJ1RFVRQkFSQUlBQkJNR3BCbURZUUJBUkFJQUVnQWhCWUR3c0xRYmcxSUFCQnlEWVFFVUdZTmlBQVFUQnFRYWczRUJGQnlEWkIrRFlRRlVINE5rSDROa0hZTnhBUVFkZzNRZGczUWRnM0VCQkJ5RFpCMkRkQmlEZ1FGRUdvTjBHb04wRzRPQkFRSUFCQjJEZEJtRGtRRkVHNE9FSG9PQkFWUVpnNVFaZzVRY2c1RUJCQjZEaEJpRGdnQWhBUklBSkJ5RGtnQWhBUklBQkJNR3BCaURoQitEa1FGRUg0T1VINE9VSDRPUkFRUVpnNUlBSWdBa0V3YWhBUklBSkJNR3BCdURnZ0FrRXdhaEFVSUFKQk1HcEIrRGtnQWtFd2FoQVJJQU5CeURZZ0FrSGdBR29RRUNBQ1FlQUFhaUFDUWVBQWFoQVZJQUpCNEFCcVFZZzFJQUpCNEFCcUVCRWdBa0hnQUdwQitEWWdBa0hnQUdvUUVRdkJBd0lCZndGL0lBQkI0QUJxSVFNZ0FVSGdBR29oQkNBQUVFOEVRQ0FCSUFJUVV3OExJQUVRVHdSQUlBQWdBaEJURHdzZ0F4QVBCRUFnQVNBQUlBSVFXdzhMSUFRUUR3UkFJQUFnQVNBQ0VGc1BDeUFEUWFnNkVCVWdCRUhZT2hBVklBQkIyRHBCaURzUUZDQUJRYWc2UWJnN0VCUWdBMEdvT2tIb094QVVJQVJCMkRwQm1Ed1FGQ0FBUVRCcVFaZzhRY2c4RUJRZ0FVRXdha0hvTzBINFBCQVVRWWc3UWJnN0VBUUVRRUhJUEVINFBCQUVCRUFnQUNBQ0VGa1BDd3RCdUR0QmlEdEJxRDBRRVVINFBFSElQRUhZUFJBUlFhZzlRYWc5UVlnK0VCQkJpRDVCaUQ0UUZVR29QVUdJUGtHNFBoQVVRZGc5UWRnOVFlZytFQkJCaUR0QmlENUJ5RDhRRkVIb1BrR1lQeEFWUWNnL1FjZy9RZmcvRUJCQm1EOUJ1RDRnQWhBUklBSkIrRDhnQWhBUlFjZzhRYmcrUWFqQUFCQVVRYWpBQUVHb3dBQkJxTUFBRUJCQnlEOGdBaUFDUVRCcUVCRWdBa0V3YWtIb1BpQUNRVEJxRUJRZ0FrRXdha0dvd0FBZ0FrRXdhaEFSSUFNZ0JDQUNRZUFBYWhBUUlBSkI0QUJxSUFKQjRBQnFFQlVnQWtIZ0FHcEJxRG9nQWtIZ0FHb1FFU0FDUWVBQWFrSFlPaUFDUWVBQWFoQVJJQUpCNEFCcVFhZzlJQUpCNEFCcUVCUUxGQUFnQUNBQkVBQWdBRUV3YWlBQlFUQnFFQklMSWdBZ0FDQUJFQUFnQUVFd2FpQUJRVEJxRUJJZ0FFSGdBR29nQVVIZ0FHb1FBQXNVQUNBQlFkakFBQkJkSUFCQjJNQUFJQUlRV2dzVUFDQUJRZWpCQUJCZElBQkI2TUVBSUFJUVd3c1VBQ0FCUWZqQ0FCQmVJQUJCK01JQUlBSVFYQXNVQUNBQUlBRVFHQ0FBUVRCcUlBRkJNR29RR0FzaUFDQUFJQUVRR0NBQVFUQnFJQUZCTUdvUUdDQUFRZUFBYWlBQlFlQUFhaEFZQ3hRQUlBQWdBUkFYSUFCQk1Hb2dBVUV3YWhBWEN5SUFJQUFnQVJBWElBQkJNR29nQVVFd2FoQVhJQUJCNEFCcUlBRkI0QUJxRUJjTFV3QWdBQkJQQkVBZ0FSQUJJQUZCTUdvUUFRVWdBRUhnQUdwQmlNUUFFQnRCaU1RQVFiakVBQkFWUVlqRUFFRzR4QUJCNk1RQUVCUWdBRUc0eEFBZ0FSQVVJQUJCTUdwQjZNUUFJQUZCTUdvUUZBc0xzQUVGQVg4QmZ3Ri9BWDhCZjBFQUtBSUFJUU5CQUNBRElBRkJNR3hxTmdJQUlBQkI0QUJxUVpBQklBRWdBMEV3RUI4Z0FDRUVJQU1oQlNBQ0lRWkJBQ0VIQWtBRFFDQUhJQUZHRFFFZ0JSQUNCRUFnQmhBQklBWkJNR29RQVFVZ0JTQUVRVEJxUVpqRkFCQVVJQVVnQlJBVklBVWdCQ0FHRUJRZ0JVR1l4UUFnQmtFd2FoQVVDeUFFUVpBQmFpRUVJQVpCNEFCcUlRWWdCVUV3YWlFRklBZEJBV29oQnd3QUN3dEJBQ0FETmdJQUMxUUFJQUFRVHdSQUlBRVFVUVVnQUVIZ0FHcEJ5TVVBRUJ0QnlNVUFRZmpGQUJBVlFjakZBRUg0eFFCQnFNWUFFQlFnQUVINHhRQWdBUkFVSUFCQk1HcEJxTVlBSUFGQk1Hb1FGQ0FCUWVBQWFoQWNDd3M3QWdGL0FYOGdBaUFCYWtFQmF5RURJQUFoQkFKQUEwQWdBeUFDU0EwQklBTWdCQzBBQURvQUFDQURRUUZySVFNZ0JFRUJhaUVFREFBTEN3czFBQ0FBRUU0RVFDQUJFRkFnQVVIQUFEb0FBQThMSUFCQjJNWUFFR0pCMk1ZQVFUQWdBUkJwUVlqSEFFRXdJQUZCTUdvUWFRdERBQ0FBRUU4RVFDQUJFQUVnQVVIQUFEb0FBQThMSUFCQnVNY0FFQmhCdU1jQVFUQWdBUkJwSUFCQk1Hb1FHa0YvUmdSQUlBRWdBUzBBQUVHQUFYSTZBQUFMQ3pJQUlBQXRBQUJCd0FCeEJFQWdBUkJRRHdzZ0FFRXdRZWpIQUJCcElBQkJNR3BCTUVHWXlBQVFhVUhveHdBZ0FSQmtDOFVCQWdGL0FYOGdBQzBBQUNFQ0lBSkJ3QUJ4QkVBZ0FSQlFEd3NnQWtHQUFYRWhBeUFBUWZqSUFCQUFRZmpJQUNBQ1FUOXhPZ0FBUWZqSUFFRXdRY2pJQUJCcFFjaklBQ0FCRUJjZ0FVSDR5QUFRRlNBQlFmaklBRUg0eUFBUUZFSDR5QUJCbUNkQitNZ0FFQkJCK01nQVFmaklBQkFqUWZqSUFFSEl5QUFRRWtINHlBQVFHa0YvUmdSQUlBTUVRRUg0eUFBZ0FVRXdhaEFBQlVINHlBQWdBVUV3YWhBU0N3VWdBd1JBUWZqSUFDQUJRVEJxRUJJRlFmaklBQ0FCUVRCcUVBQUxDd3RBQXdGL0FYOEJmeUFBSVFRZ0FpRUZRUUFoQXdKQUEwQWdBeUFCUmcwQklBUWdCUkJxSUFSQjRBQnFJUVFnQlVIZ0FHb2hCU0FEUVFGcUlRTU1BQXNMQ3o4REFYOEJmd0YvSUFBaEJDQUNJUVZCQUNFREFrQURRQ0FESUFGR0RRRWdCQ0FGRUdzZ0JFSGdBR29oQkNBRlFUQnFJUVVnQTBFQmFpRUREQUFMQ3d0QUF3Ri9BWDhCZnlBQUlRUWdBaUVGUVFBaEF3SkFBMEFnQXlBQlJnMEJJQVFnQlJCc0lBUkI0QUJxSVFRZ0JVSGdBR29oQlNBRFFRRnFJUU1NQUFzTEMxSURBWDhCZndGL0lBQWdBVUVCYTBFd2JHb2hCQ0FDSUFGQkFXdEI0QUJzYWlFRlFRQWhBd0pBQTBBZ0F5QUJSZzBCSUFRZ0JSQnRJQVJCTUdzaEJDQUZRZUFBYXlFRklBTkJBV29oQXd3QUN3c0xWQU1CZndGL0FYOGdBQ0FCUVFGclFlQUFiR29oQkNBQ0lBRkJBV3RCa0FGc2FpRUZRUUFoQXdKQUEwQWdBeUFCUmcwQklBUWdCUkJVSUFSQjRBQnJJUVFnQlVHUUFXc2hCU0FEUVFGcUlRTU1BQXNMQzBFQ0FYOEJmeUFCUVFoc0lBSnJJUVFnQXlBRVNnUkFRUUVnQkhSQkFXc2hCUVZCQVNBRGRFRUJheUVGQ3lBQUlBSkJBM1pxS0FBQUlBSkJCM0YySUFWeEM1VUJCQUYvQVg4QmZ3Ri9JQUZCQVVZRVFBOExRUUVnQVVFQmEzUWhBaUFBSVFNZ0FDQUNRWkFCYkdvaEJDQUVRWkFCYXlFRkFrQURRQ0FESUFWR0RRRWdBeUFFSUFNUVhDQUZJQVFnQlJCY0lBTkJrQUZxSVFNZ0JFR1FBV29oQkF3QUN3c2dBQ0FCUVFGckVIUWdBVUVCYXlFQkFrQURRQ0FCUlEwQklBVWdCUkJaSUFGQkFXc2hBUXdBQ3dzZ0FDQUZJQUFRWEF2TUFRb0Jmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmeUFEUlFSQUlBWVFVUThMUVFFZ0JYUWhEVUVBS0FJQUlRNUJBQ0FPSUExQmtBRnNhallDQUVFQUlRd0NRQU5BSUF3Z0RVWU5BU0FPSUF4QmtBRnNhaEJSSUF4QkFXb2hEQXdBQ3dzZ0FDRUtJQUVoQ0NBQklBTWdBbXhxSVFrQ1FBTkFJQWdnQ1VZTkFTQUlJQUlnQkNBRkVITWhEeUFQQkVBZ0RpQVBRUUZyUVpBQmJHb2hFQ0FRSUFvZ0VCQmNDeUFJSUFKcUlRZ2dDa0dRQVdvaENnd0FDd3NnRGlBRkVIUWdEaUFHRUZOQkFDQU9OZ0lBQzZJQkRBRi9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZnlBRUVGRWdBMFVFUUE4TElBTm5MUUM0U2lFRklBSkJBM1JCQVdzZ0JXNUJBV29oQmlBR1FRRnJJQVZzSVFvQ1FBTkFJQXBCQUVnTkFTQUVFRTlGQkVCQkFDRU1Ba0FEUUNBTUlBVkdEUUVnQkNBRUVGa2dERUVCYWlFTURBQUxDd3NnQUNBQklBSWdBeUFLSUFWQnFNa0FFSFVnQkVHb3lRQWdCQkJjSUFvZ0JXc2hDZ3dBQ3dzTFFRSUJmd0YvSUFGQkNHd2dBbXNoQkNBRElBUktCRUJCQVNBRWRFRUJheUVGQlVFQklBTjBRUUZySVFVTElBQWdBa0VEZG1vb0FBQWdBa0VIY1hZZ0JYRUxsUUVFQVg4QmZ3Ri9BWDhnQVVFQlJnUkFEd3RCQVNBQlFRRnJkQ0VDSUFBaEF5QUFJQUpCa0FGc2FpRUVJQVJCa0FGcklRVUNRQU5BSUFNZ0JVWU5BU0FESUFRZ0F4QmNJQVVnQkNBRkVGd2dBMEdRQVdvaEF5QUVRWkFCYWlFRURBQUxDeUFBSUFGQkFXc1FlQ0FCUVFGcklRRUNRQU5BSUFGRkRRRWdCU0FGRUZrZ0FVRUJheUVCREFBTEN5QUFJQVVnQUJCY0M4d0JDZ0YvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvSUFORkJFQWdCaEJSRHd0QkFTQUZkQ0VOUVFBb0FnQWhEa0VBSUE0Z0RVR1FBV3hxTmdJQVFRQWhEQUpBQTBBZ0RDQU5SZzBCSUE0Z0RFR1FBV3hxRUZFZ0RFRUJhaUVNREFBTEN5QUFJUW9nQVNFSUlBRWdBeUFDYkdvaENRSkFBMEFnQ0NBSlJnMEJJQWdnQWlBRUlBVVFkeUVQSUE4RVFDQU9JQTlCQVd0QmtBRnNhaUVRSUJBZ0NpQVFFRnNMSUFnZ0Ftb2hDQ0FLUWVBQWFpRUtEQUFMQ3lBT0lBVVFlQ0FPSUFZUVUwRUFJQTQyQWdBTG9nRU1BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0lBUVFVU0FEUlFSQUR3c2dBMmN0QU9oTElRVWdBa0VEZEVFQmF5QUZia0VCYWlFR0lBWkJBV3NnQld3aENnSkFBMEFnQ2tFQVNBMEJJQVFRVDBVRVFFRUFJUXdDUUFOQUlBd2dCVVlOQVNBRUlBUVFXU0FNUVFGcUlRd01BQXNMQ3lBQUlBRWdBaUFESUFvZ0JVSFl5Z0FRZVNBRVFkaktBQ0FFRUZ3Z0NpQUZheUVLREFBTEN3dXVCQWNCZndGL0FYOEJmd0YvQVg4QmZ5QUNSUVJBSUFNUVVROExJQUpCQTNRaEJVRUFLQUlBSVFRZ0JDRUtRUUFnQkVFZ2FpQUZha0Y0Y1RZQ0FFRUJJUVlnQVVFQVFRTjJRWHh4YWlnQ0FFRUFRUjl4ZGtFQmNTRUhRUUFoQ1FKQUEwQWdCaUFGUmcwQklBRWdCa0VEZGtGOGNXb29BZ0FnQmtFZmNYWkJBWEVoQ0NBSEJFQWdDQVJBSUFrRVFFRUFJUWRCQVNFSklBcEJBVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUJJUWtnQ2tIL0FUb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFDRUhRUUVoQ1NBS1FmOEJPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFFNkFBQWdDa0VCYWlFS0N3c0ZJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUE2QUFBZ0NrRUJhaUVLQlVFQklRZEJBQ0VKSUFwQkFEb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtCVUVBSVFkQkFDRUpJQXBCQURvQUFDQUtRUUZxSVFvTEN3c2dCa0VCYWlFR0RBQUxDeUFIQkVBZ0NRUkFJQXBCL3dFNkFBQWdDa0VCYWlFS0lBcEJBRG9BQUNBS1FRRnFJUW9nQ2tFQk9nQUFJQXBCQVdvaENnVWdDa0VCT2dBQUlBcEJBV29oQ2dzRklBa0VRQ0FLUVFBNkFBQWdDa0VCYWlFS0lBcEJBVG9BQUNBS1FRRnFJUW9MQ3lBS1FRRnJJUW9nQUVHSXpBQVFVeUFERUZFQ1FBTkFJQU1nQXhCWklBb3RBQUFoQ0NBSUJFQWdDRUVCUmdSQUlBTkJpTXdBSUFNUVhBVWdBMEdJekFBZ0F4QmhDd3NnQkNBS1JnMEJJQXBCQVdzaENnd0FDd3RCQUNBRU5nSUFDNjRFQndGL0FYOEJmd0YvQVg4QmZ3Ri9JQUpGQkVBZ0F4QlJEd3NnQWtFRGRDRUZRUUFvQWdBaEJDQUVJUXBCQUNBRVFTQnFJQVZxUVhoeE5nSUFRUUVoQmlBQlFRQkJBM1pCZkhGcUtBSUFRUUJCSDNGMlFRRnhJUWRCQUNFSkFrQURRQ0FHSUFWR0RRRWdBU0FHUVFOMlFYeHhhaWdDQUNBR1FSOXhka0VCY1NFSUlBY0VRQ0FJQkVBZ0NRUkFRUUFoQjBFQklRa2dDa0VCT2dBQUlBcEJBV29oQ2dWQkFDRUhRUUVoQ1NBS1FmOEJPZ0FBSUFwQkFXb2hDZ3NGSUFrRVFFRUFJUWRCQVNFSklBcEIvd0U2QUFBZ0NrRUJhaUVLQlVFQUlRZEJBQ0VKSUFwQkFUb0FBQ0FLUVFGcUlRb0xDd1VnQ0FSQUlBa0VRRUVBSVFkQkFTRUpJQXBCQURvQUFDQUtRUUZxSVFvRlFRRWhCMEVBSVFrZ0NrRUFPZ0FBSUFwQkFXb2hDZ3NGSUFrRVFFRUJJUWRCQUNFSklBcEJBRG9BQUNBS1FRRnFJUW9GUVFBaEIwRUFJUWtnQ2tFQU9nQUFJQXBCQVdvaENnc0xDeUFHUVFGcUlRWU1BQXNMSUFjRVFDQUpCRUFnQ2tIL0FUb0FBQ0FLUVFGcUlRb2dDa0VBT2dBQUlBcEJBV29oQ2lBS1FRRTZBQUFnQ2tFQmFpRUtCU0FLUVFFNkFBQWdDa0VCYWlFS0N3VWdDUVJBSUFwQkFEb0FBQ0FLUVFGcUlRb2dDa0VCT2dBQUlBcEJBV29oQ2dzTElBcEJBV3NoQ2lBQVFaak5BQkJTSUFNUVVRSkFBMEFnQXlBREVGa2dDaTBBQUNFSUlBZ0VRQ0FJUVFGR0JFQWdBMEdZelFBZ0F4QmJCU0FEUVpqTkFDQURFR0FMQ3lBRUlBcEdEUUVnQ2tFQmF5RUtEQUFMQzBFQUlBUTJBZ0FMUWdBZ0FFSC9BWEV0QUxoZVFSaDBJQUJCQ0haQi93RnhMUUM0WGtFUWRHb2dBRUVRZGtIL0FYRXRBTGhlUVFoMElBQkJHSFpCL3dGeExRQzRYbXBxSUFGM0MyY0ZBWDhCZndGL0FYOEJmMEVCSUFGMElRSkJBQ0VEQWtBRFFDQURJQUpHRFFFZ0FDQURRU0JzYWlFRklBTWdBUkI5SVFRZ0FDQUVRU0JzYWlFR0lBTWdCRWtFUUNBRlFiamdBQkFsSUFZZ0JSQWxRYmpnQUNBR0VDVUxJQU5CQVdvaEF3d0FDd3NMMmdFSEFYOEJmd0YvQVg4QmZ3Ri9BWDhnQWtVZ0F4QTBjUVJBRHd0QkFTQUJkQ0VFSUFSQkFXc2hDRUVCSVFjZ0JFRUJkaUVGQWtBRFFDQUhJQVZHRFFFZ0FDQUhRU0JzYWlFSklBQWdCQ0FIYTBFZ2JHb2hDaUFDQkVBZ0F4QTBCRUFnQ1VIWTRBQVFKU0FLSUFrUUpVSFk0QUFnQ2hBbEJTQUpRZGpnQUJBbElBb2dBeUFKRURsQjJPQUFJQU1nQ2hBNUN3VWdBeEEwQkVBRklBa2dBeUFKRURrZ0NpQURJQW9RT1FzTElBZEJBV29oQnd3QUN3c2dBeEEwQkVBRklBQWdBeUFBRURrZ0FDQUZRU0JzYWlFS0lBb2dBeUFLRURrTEMrZ0JDUUYvQVg4QmZ3Ri9BWDhCZndGL0FYOEJmeUFBSUFFUWZrRUJJQUYwSVFsQkFTRUVBa0FEUUNBRUlBRkxEUUZCQVNBRWRDRUhRZmpOQUNBRVFTQnNhaUVLUVFBaEJRSkFBMEFnQlNBSlR3MEJRZmpnQUJCQklBZEJBWFloQ0VFQUlRWUNRQU5BSUFZZ0NFOE5BU0FBSUFVZ0JtcEJJR3hxSVFzZ0N5QUlRU0JzYWlFTUlBeEIrT0FBUVpqaEFCQTVJQXRCdU9FQUVDVkJ1T0VBUVpqaEFDQUxFRFZCdU9FQVFaamhBQ0FNRURaQitPQUFJQXBCK09BQUVEa2dCa0VCYWlFR0RBQUxDeUFGSUFkcUlRVU1BQXNMSUFSQkFXb2hCQXdBQ3dzZ0FDQUJJQUlnQXhCL0MwTUNBWDhCZnlBQVFRRjJJUUpCQUNFQkFrQURRQ0FDUlEwQklBSkJBWFloQWlBQlFRRnFJUUVNQUFzTElBQkJBU0FCZEVjRVFBQUxJQUZCSUVzRVFBQUxJQUVMSGdFQmZ5QUJFSUVCSVFKQjJPRUFFRUVnQUNBQ1FRQkIyT0VBRUlBQkN5UUNBWDhCZnlBQkVJRUJJUUpCbU5ZQUlBSkJJR3hxSVFNZ0FDQUNRUUVnQXhDQUFRdDJBd0YvQVg4QmZ5QURRZmpoQUJBbFFRQWhCd0pBQTBBZ0J5QUNSZzBCSUFBZ0IwRWdiR29oQlNBQklBZEJJR3hxSVFZZ0JrSDQ0UUJCbU9JQUVEa2dCVUc0NGdBUUpVRzQ0Z0JCbU9JQUlBVVFOVUc0NGdCQm1PSUFJQVlRTmtINDRRQWdCRUg0NFFBUU9TQUhRUUZxSVFjTUFBc0xDOFVCQ1FGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZjBFQklBSjBJUVFnQkVFQmRpRUZJQUVnQW5ZaEF5QUZRU0JzSVFaQitNMEFJQUpCSUd4cUlRdEJBQ0VKQWtBRFFDQUpJQU5HRFFGQjJPSUFFRUZCQUNFS0FrQURRQ0FLSUFWR0RRRWdBQ0FKSUFSc0lBcHFRU0JzYWlFSElBY2dCbW9oQ0NBSVFkamlBRUg0NGdBUU9TQUhRWmpqQUJBbFFaampBRUg0NGdBZ0J4QTFRWmpqQUVINDRnQWdDQkEyUWRqaUFDQUxRZGppQUJBNUlBcEJBV29oQ2d3QUN3c2dDVUVCYWlFSkRBQUxDd3Q3QkFGL0FYOEJmd0YvSUFGQkFYWWhCaUFCUVFGR0JFQWdBQ0FHUVNCc2FpQUNJQUFnQmtFZ2JHb1FPUXRCQUNFRkFrQURRQ0FGSUFaR0RRRWdBQ0FGUVNCc2FpRURJQUFnQVVFQmF5QUZhMEVnYkdvaEJDQUVJQUpCdU9NQUVEa2dBeUFDSUFRUU9VRzQ0d0FnQXhBbElBVkJBV29oQlF3QUN3c0xMZ0lCZndGL0lBQWhBeUFBSUFGQklHeHFJUUlDUUFOQUlBTWdBa1lOQVNBREVDWWdBMEVnYWlFRERBQUxDd3VPQVFZQmZ3Ri9BWDhCZndGL0FYOUJBQ0VFSUFBaEJpQUJJUWNDUUFOQUlBUWdBa1lOQVNBR0tBSUFJUWtnQmtFRWFpRUdRUUFoQlFKQUEwQWdCU0FKUmcwQklBTWdCaWdDQUVFZ2JHb2hDQ0FHUVFScUlRWWdCeUFHUWRqakFCQTVRZGpqQUNBSUlBZ1FOU0FHUVNCcUlRWWdCVUVCYWlFRkRBQUxDeUFIUVNCcUlRY2dCRUVCYWlFRURBQUxDd3VsQWdjQmZ3Ri9BWDhCZndGL0FYOEJmeUFESVFrZ0JDRUtJQU1nQjBFZ2JHb2hDd0pBQTBBZ0NTQUxSZzBCSUFrUUppQUtFQ1lnQ1VFZ2FpRUpJQXBCSUdvaENnd0FDd3NnQUNFSUlBQWdBVUVzYkdvaEN3SkFBMEFnQ0NBTFJnMEJJQWdvQWdBaERDQU1RUUJHQkVBZ0F5RU9CU0FNUVFGR0JFQWdCQ0VPQlNBSVFTeHFJUWdNQVFzTElBZ29BZ1FoRFNBTklBWkpJQTBnQmlBSGFrOXlCRUFnQ0VFc2FpRUlEQUVMSUE0Z0RTQUdhMEVnYkdvaERpQUNJQWdvQWdoQklHeHFJQWhCREdwQitPTUFFRGtnRGtINDR3QWdEaEExSUFoQkxHb2hDQXdBQ3dzZ0F5RUpJQVFoQ2lBRklRZ2dBeUFIUVNCc2FpRUxBa0FEUUNBSklBdEdEUUVnQ1NBS0lBZ1FPU0FKUVNCcUlRa2dDa0VnYWlFS0lBaEJJR29oQ0F3QUN3c0xaUVVCZndGL0FYOEJmd0YvSUFBaEJTQUJJUVlnQWlFSElBUWhDQ0FBSUFOQklHeHFJUWtDUUFOQUlBVWdDVVlOQVNBRklBWkJtT1FBRURsQm1PUUFJQWNnQ0JBMklBVkJJR29oQlNBR1FTQnFJUVlnQjBFZ2FpRUhJQWhCSUdvaENBd0FDd3NMRGdBZ0FCQUNJQUJCTUdvUUFuRUxEd0FnQUJBUElBQkJNR29RQW5FUEN3MEFJQUFRQVNBQVFUQnFFQUVMRFFBZ0FCQWNJQUJCTUdvUUFRc1VBQ0FBSUFFUUFDQUFRVEJxSUFGQk1Hb1FBQXQxQUNBQUlBRkJ1T1FBRUJRZ0FFRXdhaUFCUVRCcVFlamtBQkFVSUFBZ0FFRXdha0dZNVFBUUVDQUJJQUZCTUdwQnlPVUFFQkJCbU9VQVFjamxBRUdZNVFBUUZFSG81QUFnQWhBU1FiamtBQ0FDSUFJUUVFRzQ1QUJCNk9RQUlBSkJNR29RRUVHWTVRQWdBa0V3YWlBQ1FUQnFFQkVMR0FBZ0FDQUJJQUlRRkNBQVFUQnFJQUVnQWtFd2FoQVVDM0FBSUFBZ0FFRXdha0g0NVFBUUZDQUFJQUJCTUdwQnFPWUFFQkFnQUVFd2FrSFk1Z0FRRWlBQVFkam1BRUhZNWdBUUVFSDQ1UUJCaU9jQUVCSkJpT2NBUWZqbEFFR0k1d0FRRUVHbzVnQkIyT1lBSUFFUUZDQUJRWWpuQUNBQkVCRkIrT1VBUWZqbEFDQUJRVEJxRUJBTEd3QWdBQ0FCSUFJUUVDQUFRVEJxSUFGQk1Hb2dBa0V3YWhBUUN4c0FJQUFnQVNBQ0VCRWdBRUV3YWlBQlFUQnFJQUpCTUdvUUVRc1VBQ0FBSUFFUUVpQUFRVEJxSUFGQk1Hb1FFZ3NVQUNBQUlBRVFBQ0FBUVRCcUlBRkJNR29RRWdzVUFDQUFJQUVRRnlBQVFUQnFJQUZCTUdvUUZ3c1VBQ0FBSUFFUUdDQUFRVEJxSUFGQk1Hb1FHQXNWQUNBQUlBRVFCQ0FBUVRCcUlBRkJNR29RQkhFTFhRQWdBRUc0NXdBUUZTQUFRVEJxUWVqbkFCQVZRZWpuQUVHWTZBQVFFa0c0NXdCQm1PZ0FRWmpvQUJBUlFaam9BRUhJNkFBUUd5QUFRY2pvQUNBQkVCUWdBRUV3YWtISTZBQWdBVUV3YWhBVUlBRkJNR29nQVVFd2FoQVNDeHdBSUFBZ0FTQUNJQU1RSGlBQVFUQnFJQUVnQWlBRFFUQnFFQjRMR2dFQmZ5QUFRVEJxRUJvaEFTQUJCRUFnQVE4TElBQVFHZzhMR1FBZ0FFRXdhaEFDQkVBZ0FCQVpEd3NnQUVFd2FoQVpEd3VQQWdRQmZ3Ri9BWDhCZjBFQUtBSUFJUVZCQUNBRklBSkJBV3BCNEFCc2FqWUNBQ0FGRUk0QklBQWhCaUFGUWVBQWFpRUZRUUFoQ0FKQUEwQWdDQ0FDUmcwQklBWVFpd0VFUUNBRlFlQUFheUFGRUk4QkJTQUdJQVZCNEFCcklBVVFrQUVMSUFZZ0FXb2hCaUFGUWVBQWFpRUZJQWhCQVdvaENBd0FDd3NnQmlBQmF5RUdJQVZCNEFCcklRVWdBeUFDUVFGcklBUnNhaUVISUFVZ0JSQ2FBUUpBQTBBZ0NFVU5BU0FHRUlzQkJFQWdCU0FGUWVBQWF4Q1BBU0FIRUkwQkJTQUZRZUFBYTBINDZBQVFqd0VnQlNBR0lBVkI0QUJyRUpBQklBVkIrT2dBSUFjUWtBRUxJQVlnQVdzaEJpQUhJQVJySVFjZ0JVSGdBR3NoQlNBSVFRRnJJUWdNQUFzTFFRQWdCVFlDQUF2T0FnSUJmd0YvSUFKRkJFQWdBeENPQVE4TElBQkIyT2tBRUk4QklBTVFqZ0VnQWlFRUFrQURRQ0FFUVFGcklRUWdBU0FFYWkwQUFDRUZJQU1nQXhDU0FTQUZRWUFCVHdSQUlBVkJnQUZySVFVZ0EwSFk2UUFnQXhDUUFRc2dBeUFERUpJQklBVkJ3QUJQQkVBZ0JVSEFBR3NoQlNBRFFkanBBQ0FERUpBQkN5QURJQU1Ra2dFZ0JVRWdUd1JBSUFWQklHc2hCU0FEUWRqcEFDQURFSkFCQ3lBRElBTVFrZ0VnQlVFUVR3UkFJQVZCRUdzaEJTQURRZGpwQUNBREVKQUJDeUFESUFNUWtnRWdCVUVJVHdSQUlBVkJDR3NoQlNBRFFkanBBQ0FERUpBQkN5QURJQU1Ra2dFZ0JVRUVUd1JBSUFWQkJHc2hCU0FEUWRqcEFDQURFSkFCQ3lBRElBTVFrZ0VnQlVFQ1R3UkFJQVZCQW1zaEJTQURRZGpwQUNBREVKQUJDeUFESUFNUWtnRWdCVUVCVHdSQUlBVkJBV3NoQlNBRFFkanBBQ0FERUpBQkN5QUVSUTBCREFBTEN3dk5BUUJCdU8wQUVJNEJRYmp0QUVHNDdRQVFsUUVnQUVHNDZnQkJNRUdZNndBUW53RkJtT3NBUWZqckFCQ1NBU0FBUWZqckFFSDQ2d0FRa0FGQitPc0FRZGpzQUJDV0FVSFk3QUJCK09zQVFkanNBQkNRQVVIWTdBQkJ1TzBBRUprQkJFQUFDMEdZNndBZ0FFR1k3Z0FRa0FGQitPc0FRYmp0QUJDWkFRUkFRYmp0QUJBQlFlanRBQkFjUWJqdEFFR1k3Z0FnQVJDUUFRVkIrTzRBRUk0QlFmanVBRUg0NndCQitPNEFFSk1CUWZqdUFFSG82Z0JCTUVINDdnQVFud0ZCK080QVFaanVBQ0FCRUpBQkN3dHBBRUdvOGdBUWpnRkJxUElBUWFqeUFCQ1ZBU0FBUWRqdkFFRXdRWWp3QUJDZkFVR0k4QUJCNlBBQUVKSUJJQUJCNlBBQVFlandBQkNRQVVIbzhBQkJ5UEVBRUpZQlFjanhBRUhvOEFCQnlQRUFFSkFCUWNqeEFFR284Z0FRbVFFRVFFRUFEd3RCQVE4TEVRQWdBQkNMQVNBQVFlQUFhaENMQVhFTEN3QWdBRUhBQVdvUWl3RUxFQUFnQUJDTkFTQUFRZUFBYWhDTkFRc1pBQ0FBRUkwQklBQkI0QUJxRUk0QklBQkJ3QUZxRUkwQkM0SUNBQ0FCSUFBcEF3QTNBd0FnQVNBQUtRTUlOd01JSUFFZ0FDa0RFRGNERUNBQklBQXBBeGczQXhnZ0FTQUFLUU1nTndNZ0lBRWdBQ2tES0RjREtDQUJJQUFwQXpBM0F6QWdBU0FBS1FNNE53TTRJQUVnQUNrRFFEY0RRQ0FCSUFBcEEwZzNBMGdnQVNBQUtRTlFOd05RSUFFZ0FDa0RXRGNEV0NBQklBQXBBMkEzQTJBZ0FTQUFLUU5vTndOb0lBRWdBQ2tEY0RjRGNDQUJJQUFwQTNnM0EzZ2dBU0FBS1FPQUFUY0RnQUVnQVNBQUtRT0lBVGNEaUFFZ0FTQUFLUU9RQVRjRGtBRWdBU0FBS1FPWUFUY0RtQUVnQVNBQUtRT2dBVGNEb0FFZ0FTQUFLUU9vQVRjRHFBRWdBU0FBS1FPd0FUY0RzQUVnQVNBQUtRTzRBVGNEdUFFTGtnTUFJQUVnQUNrREFEY0RBQ0FCSUFBcEF3ZzNBd2dnQVNBQUtRTVFOd01RSUFFZ0FDa0RHRGNER0NBQklBQXBBeUEzQXlBZ0FTQUFLUU1vTndNb0lBRWdBQ2tETURjRE1DQUJJQUFwQXpnM0F6Z2dBU0FBS1FOQU53TkFJQUVnQUNrRFNEY0RTQ0FCSUFBcEExQTNBMUFnQVNBQUtRTllOd05ZSUFFZ0FDa0RZRGNEWUNBQklBQXBBMmczQTJnZ0FTQUFLUU53TndOd0lBRWdBQ2tEZURjRGVDQUJJQUFwQTRBQk53T0FBU0FCSUFBcEE0Z0JOd09JQVNBQklBQXBBNUFCTndPUUFTQUJJQUFwQTVnQk53T1lBU0FCSUFBcEE2QUJOd09nQVNBQklBQXBBNmdCTndPb0FTQUJJQUFwQTdBQk53T3dBU0FCSUFBcEE3Z0JOd080QVNBQklBQXBBOEFCTndQQUFTQUJJQUFwQThnQk53UElBU0FCSUFBcEE5QUJOd1BRQVNBQklBQXBBOWdCTndQWUFTQUJJQUFwQStBQk53UGdBU0FCSUFBcEErZ0JOd1BvQVNBQklBQXBBL0FCTndQd0FTQUJJQUFwQS9nQk53UDRBU0FCSUFBcEE0QUNOd09BQWlBQklBQXBBNGdDTndPSUFpQUJJQUFwQTVBQ053T1FBaUFCSUFBcEE1Z0NOd09ZQWdzaEFDQUJRY0FCYWhDT0FTQUFRZUFBYWlBQlFlQUFhaENQQVNBQUlBRVFqd0VMSEFFQmZ5QUFJQUVRbVFFZ0FFSGdBR29nQVVIZ0FHb1FtUUZ4RHd1TEFRRUJmeUFBUWNBQmFpRUNJQUFRb3dFRVFDQUJFS0lCRHdzZ0FSQ2lBUVJBUVFBUEN5QUNFSXdCQkVBZ0FDQUJFS2tCRHdzZ0FrSG84d0FRa2dFZ0FVSG84d0JCeVBRQUVKQUJJQUpCNlBNQVFhajFBQkNRQVNBQlFlQUFha0dvOVFCQmlQWUFFSkFCSUFCQnlQUUFFSmtCQkVBZ0FFSGdBR3BCaVBZQUVKa0JCRUJCQVE4TEMwRUFEd3ZaQVFJQmZ3Ri9JQUJCd0FGcUlRSWdBVUhBQVdvaEF5QUFFS01CQkVBZ0FSQ2pBUThMSUFFUW93RUVRRUVBRHdzZ0FoQ01BUVJBSUFFZ0FCQ3FBUThMSUFNUWpBRUVRQ0FBSUFFUXFnRVBDeUFDUWVqMkFCQ1NBU0FEUWNqM0FCQ1NBU0FBUWNqM0FFR28rQUFRa0FFZ0FVSG85Z0JCaVBrQUVKQUJJQUpCNlBZQVFlajVBQkNRQVNBRFFjajNBRUhJK2dBUWtBRWdBRUhnQUdwQnlQb0FRYWo3QUJDUUFTQUJRZUFBYWtIbytRQkJpUHdBRUpBQlFhajRBRUdJK1FBUW1RRUVRRUdvK3dCQmlQd0FFSmtCQkVCQkFROExDMEVBRHd1c0FnQWdBQkNpQVFSQUlBQWdBUkNvQVE4TElBQkI2UHdBRUpJQklBQkI0QUJxUWNqOUFCQ1NBVUhJL1FCQnFQNEFFSklCSUFCQnlQMEFRWWovQUJDVEFVR0kvd0JCaVA4QUVKSUJRWWovQUVIby9BQkJpUDhBRUpRQlFZai9BRUdvL2dCQmlQOEFFSlFCUVlqL0FFR0kvd0JCaVA4QUVKTUJRZWo4QUVIby9BQkI2UDhBRUpNQlFlai9BRUhvL0FCQjZQOEFFSk1CSUFCQjRBQnFJQUJCNEFCcUlBRkJ3QUZxRUpNQlFlai9BQ0FCRUpJQklBRkJpUDhBSUFFUWxBRWdBVUdJL3dBZ0FSQ1VBVUdvL2dCQnFQNEFRY2lBQVJDVEFVSElnQUZCeUlBQlFjaUFBUkNUQVVISWdBRkJ5SUFCUWNpQUFSQ1RBVUdJL3dBZ0FTQUJRZUFBYWhDVUFTQUJRZUFBYWtIby93QWdBVUhnQUdvUWtBRWdBVUhnQUdwQnlJQUJJQUZCNEFCcUVKUUJDOVFDQUNBQUVLTUJCRUFnQUNBQkVLY0JEd3NnQUVIQUFXb1FqQUVFUUNBQUlBRVFyQUVQRHdzZ0FFR29nUUVRa2dFZ0FFSGdBR3BCaUlJQkVKSUJRWWlDQVVIb2dnRVFrZ0VnQUVHSWdnRkJ5SU1CRUpNQlFjaURBVUhJZ3dFUWtnRkJ5SU1CUWFpQkFVSElnd0VRbEFGQnlJTUJRZWlDQVVISWd3RVFsQUZCeUlNQlFjaURBVUhJZ3dFUWt3RkJxSUVCUWFpQkFVR29oQUVRa3dGQnFJUUJRYWlCQVVHb2hBRVFrd0ZCcUlRQlFZaUZBUkNTQVNBQVFlQUFhaUFBUWNBQmFrSG9oUUVRa0FGQnlJTUJRY2lEQVNBQkVKTUJRWWlGQVNBQklBRVFsQUZCNklJQlFlaUNBVUhJaGdFUWt3RkJ5SVlCUWNpR0FVSEloZ0VRa3dGQnlJWUJRY2lHQVVISWhnRVFrd0ZCeUlNQklBRWdBVUhnQUdvUWxBRWdBVUhnQUdwQnFJUUJJQUZCNEFCcUVKQUJJQUZCNEFCcVFjaUdBU0FCUWVBQWFoQ1VBVUhvaFFGQjZJVUJJQUZCd0FGcUVKTUJDK3dDQVFGL0lBQkJ3QUZxSVFNZ0FCQ2lBUVJBSUFFZ0FoQ21BU0FDUWNBQmFoQ09BUThMSUFFUW9nRUVRQ0FBSUFJUXBnRWdBa0hBQVdvUWpnRVBDeUFBSUFFUW1RRUVRQ0FBUWVBQWFpQUJRZUFBYWhDWkFRUkFJQUVnQWhDc0FROExDeUFCSUFCQnFJY0JFSlFCSUFGQjRBQnFJQUJCNEFCcVFlaUlBUkNVQVVHb2h3RkJpSWdCRUpJQlFZaUlBVUdJaUFGQnlJa0JFSk1CUWNpSkFVSElpUUZCeUlrQkVKTUJRYWlIQVVISWlRRkJxSW9CRUpBQlFlaUlBVUhvaUFGQmlJc0JFSk1CSUFCQnlJa0JRY2lNQVJDUUFVR0lpd0ZCNklzQkVKSUJRY2lNQVVISWpBRkJxSTBCRUpNQlFlaUxBVUdvaWdFZ0FoQ1VBU0FDUWFpTkFTQUNFSlFCSUFCQjRBQnFRYWlLQVVHSWpnRVFrQUZCaUk0QlFZaU9BVUdJamdFUWt3RkJ5SXdCSUFJZ0FrSGdBR29RbEFFZ0FrSGdBR3BCaUlzQklBSkI0QUJxRUpBQklBSkI0QUJxUVlpT0FTQUNRZUFBYWhDVUFVR29od0ZCcUljQklBSkJ3QUZxRUpNQkM5d0RBUUYvSUFCQndBRnFJUU1nQUJDakFRUkFJQUVnQWhDbUFTQUNRY0FCYWhDT0FROExJQUVRb2dFRVFDQUFJQUlRcHdFUEN5QURFSXdCQkVBZ0FDQUJJQUlRcmdFUEN5QURRZWlPQVJDU0FTQUJRZWlPQVVISWp3RVFrQUVnQTBIb2pnRkJxSkFCRUpBQklBRkI0QUJxUWFpUUFVR0lrUUVRa0FFZ0FFSElqd0VRbVFFRVFDQUFRZUFBYWtHSWtRRVFtUUVFUUNBQklBSVFyQUVQQ3d0QnlJOEJJQUJCNkpFQkVKUUJRWWlSQVNBQVFlQUFha0dva3dFUWxBRkI2SkVCUWNpU0FSQ1NBVUhJa2dGQnlKSUJRWWlVQVJDVEFVR0lsQUZCaUpRQlFZaVVBUkNUQVVIb2tRRkJpSlFCUWVpVUFSQ1FBVUdva3dGQnFKTUJRY2lWQVJDVEFTQUFRWWlVQVVHSWx3RVFrQUZCeUpVQlFhaVdBUkNTQVVHSWx3RkJpSmNCUWVpWEFSQ1RBVUdvbGdGQjZKUUJJQUlRbEFFZ0FrSG9sd0VnQWhDVUFTQUFRZUFBYWtIb2xBRkJ5SmdCRUpBQlFjaVlBVUhJbUFGQnlKZ0JFSk1CUVlpWEFTQUNJQUpCNEFCcUVKUUJJQUpCNEFCcVFjaVZBU0FDUWVBQWFoQ1FBU0FDUWVBQWFrSEltQUVnQWtIZ0FHb1FsQUVnQTBIb2tRRWdBa0hBQVdvUWt3RWdBa0hBQVdvZ0FrSEFBV29Ra2dFZ0FrSEFBV3BCNkk0QklBSkJ3QUZxRUpRQklBSkJ3QUZxUWNpU0FTQUNRY0FCYWhDVUFRdWxCQUlCZndGL0lBQkJ3QUZxSVFNZ0FVSEFBV29oQkNBQUVLTUJCRUFnQVNBQ0VLY0JEd3NnQVJDakFRUkFJQUFnQWhDbkFROExJQU1RakFFRVFDQUJJQUFnQWhDdkFROExJQVFRakFFRVFDQUFJQUVnQWhDdkFROExJQU5CcUprQkVKSUJJQVJCaUpvQkVKSUJJQUJCaUpvQlFlaWFBUkNRQVNBQlFhaVpBVUhJbXdFUWtBRWdBMEdvbVFGQnFKd0JFSkFCSUFSQmlKb0JRWWlkQVJDUUFTQUFRZUFBYWtHSW5RRkI2SjBCRUpBQklBRkI0QUJxUWFpY0FVSEluZ0VRa0FGQjZKb0JRY2liQVJDWkFRUkFRZWlkQVVISW5nRVFtUUVFUUNBQUlBSVFyUUVQQ3d0QnlKc0JRZWlhQVVHb253RVFsQUZCeUo0QlFlaWRBVUdJb0FFUWxBRkJxSjhCUWFpZkFVSG9vQUVRa3dGQjZLQUJRZWlnQVJDU0FVR29ud0ZCNktBQlFjaWhBUkNRQVVHSW9BRkJpS0FCUWFpaUFSQ1RBVUhvbWdGQjZLQUJRZWlqQVJDUUFVR29vZ0ZCaUtNQkVKSUJRZWlqQVVIb293RkJ5S1FCRUpNQlFZaWpBVUhJb1FFZ0FoQ1VBU0FDUWNpa0FTQUNFSlFCUWVpZEFVSElvUUZCcUtVQkVKQUJRYWlsQVVHb3BRRkJxS1VCRUpNQlFlaWpBU0FDSUFKQjRBQnFFSlFCSUFKQjRBQnFRYWlpQVNBQ1FlQUFhaENRQVNBQ1FlQUFha0dvcFFFZ0FrSGdBR29RbEFFZ0F5QUVJQUpCd0FGcUVKTUJJQUpCd0FGcUlBSkJ3QUZxRUpJQklBSkJ3QUZxUWFpWkFTQUNRY0FCYWhDVUFTQUNRY0FCYWtHSW1nRWdBa0hBQVdvUWxBRWdBa0hBQVdwQnFKOEJJQUpCd0FGcUVKQUJDeGdBSUFBZ0FSQ1BBU0FBUWVBQWFpQUJRZUFBYWhDVkFRc25BQ0FBSUFFUWp3RWdBRUhnQUdvZ0FVSGdBR29RbFFFZ0FFSEFBV29nQVVIQUFXb1Fqd0VMRmdBZ0FVR0lwZ0VRc1FFZ0FFR0lwZ0VnQWhDdUFRc1dBQ0FCUWFpb0FSQ3hBU0FBUWFpb0FTQUNFSzhCQ3hZQUlBRkJ5S29CRUxJQklBQkJ5S29CSUFJUXNBRUxHQUFnQUNBQkVKZ0JJQUJCNEFCcUlBRkI0QUJxRUpnQkN5Y0FJQUFnQVJDWUFTQUFRZUFBYWlBQlFlQUFhaENZQVNBQVFjQUJhaUFCUWNBQmFoQ1lBUXNZQUNBQUlBRVFsd0VnQUVIZ0FHb2dBVUhnQUdvUWx3RUxKd0FnQUNBQkVKY0JJQUJCNEFCcUlBRkI0QUJxRUpjQklBQkJ3QUZxSUFGQndBRnFFSmNCQzE0QUlBQVFvd0VFUUNBQkVJMEJJQUZCNEFCcUVJMEJCU0FBUWNBQmFrSG9yQUVRbWdGQjZLd0JRY2l0QVJDU0FVSG9yQUZCeUswQlFhaXVBUkNRQVNBQVFjaXRBU0FCRUpBQklBQkI0QUJxUWFpdUFTQUJRZUFBYWhDUUFRc0x2Z0VGQVg4QmZ3Ri9BWDhCZjBFQUtBSUFJUU5CQUNBRElBRkI0QUJzYWpZQ0FDQUFRY0FCYWtHZ0FpQUJJQU5CNEFBUW5nRWdBQ0VFSUFNaEJTQUNJUVpCQUNFSEFrQURRQ0FISUFGR0RRRWdCUkNMQVFSQUlBWVFqUUVnQmtIZ0FHb1FqUUVGSUFVZ0JFSGdBR3BCaUs4QkVKQUJJQVVnQlJDU0FTQUZJQVFnQmhDUUFTQUZRWWl2QVNBR1FlQUFhaENRQVFzZ0JFR2dBbW9oQkNBR1FjQUJhaUVHSUFWQjRBQnFJUVVnQjBFQmFpRUhEQUFMQzBFQUlBTTJBZ0FMWGdBZ0FCQ2pBUVJBSUFFUXBRRUZJQUJCd0FGcVFlaXZBUkNhQVVIb3J3RkJ5TEFCRUpJQlFlaXZBVUhJc0FGQnFMRUJFSkFCSUFCQnlMQUJJQUVRa0FFZ0FFSGdBR3BCcUxFQklBRkI0QUJxRUpBQklBRkJ3QUZxRUk0QkN3czdBZ0YvQVg4Z0FpQUJha0VCYXlFRElBQWhCQUpBQTBBZ0F5QUNTQTBCSUFNZ0JDMEFBRG9BQUNBRFFRRnJJUU1nQkVFQmFpRUVEQUFMQ3dzOUFDQUFFS0lCQkVBZ0FSQ2tBU0FCUWNBQU9nQUFEd3NnQUVHSXNnRVF0Z0ZCaUxJQlFlQUFJQUVRdlFGQjZMSUJRZUFBSUFGQjRBQnFFTDBCQzBvQUlBQVFvd0VFUUNBQkVJMEJJQUZCd0FBNkFBQVBDeUFBUWNpekFSQ1lBVUhJc3dGQjRBQWdBUkM5QVNBQVFlQUFhaENjQVVGL1JnUkFJQUVnQVMwQUFFR0FBWEk2QUFBTEN6a0FJQUF0QUFCQndBQnhCRUFnQVJDa0FROExJQUJCNEFCQnFMUUJFTDBCSUFCQjRBQnFRZUFBUVlpMUFSQzlBVUdvdEFFZ0FSQzRBUXZaQVFJQmZ3Ri9JQUF0QUFBaEFpQUNRY0FBY1FSQUlBRVFwQUVQQ3lBQ1FZQUJjU0VESUFCQnlMWUJFSThCUWNpMkFTQUNRVDl4T2dBQVFjaTJBVUhnQUVIb3RRRVF2UUZCNkxVQklBRVFsd0VnQVVISXRnRVFrZ0VnQVVISXRnRkJ5TFlCRUpBQlFjaTJBVUdJOHdCQnlMWUJFSk1CUWNpMkFVSEl0Z0VRb0FGQnlMWUJRZWkxQVJDVkFVSEl0Z0VRbkFGQmYwWUVRQ0FEQkVCQnlMWUJJQUZCNEFCcUVJOEJCVUhJdGdFZ0FVSGdBR29RbFFFTEJTQURCRUJCeUxZQklBRkI0QUJxRUpVQkJVSEl0Z0VnQVVIZ0FHb1Fqd0VMQ3d0QkF3Ri9BWDhCZnlBQUlRUWdBaUVGUVFBaEF3SkFBMEFnQXlBQlJnMEJJQVFnQlJDK0FTQUVRY0FCYWlFRUlBVkJ3QUZxSVFVZ0EwRUJhaUVEREFBTEN3dEJBd0YvQVg4QmZ5QUFJUVFnQWlFRlFRQWhBd0pBQTBBZ0F5QUJSZzBCSUFRZ0JSQy9BU0FFUWNBQmFpRUVJQVZCNEFCcUlRVWdBMEVCYWlFRERBQUxDd3RCQXdGL0FYOEJmeUFBSVFRZ0FpRUZRUUFoQXdKQUEwQWdBeUFCUmcwQklBUWdCUkRBQVNBRVFjQUJhaUVFSUFWQndBRnFJUVVnQTBFQmFpRUREQUFMQ3d0VkF3Ri9BWDhCZnlBQUlBRkJBV3RCNEFCc2FpRUVJQUlnQVVFQmEwSEFBV3hxSVFWQkFDRURBa0FEUUNBRElBRkdEUUVnQkNBRkVNRUJJQVJCNEFCcklRUWdCVUhBQVdzaEJTQURRUUZxSVFNTUFBc0xDMVVEQVg4QmZ3Ri9JQUFnQVVFQmEwSEFBV3hxSVFRZ0FpQUJRUUZyUWFBQ2JHb2hCVUVBSVFNQ1FBTkFJQU1nQVVZTkFTQUVJQVVRcUFFZ0JFSEFBV3NoQkNBRlFhQUNheUVGSUFOQkFXb2hBd3dBQ3dzTFFRSUJmd0YvSUFGQkNHd2dBbXNoQkNBRElBUktCRUJCQVNBRWRFRUJheUVGQlVFQklBTjBRUUZySVFVTElBQWdBa0VEZG1vb0FBQWdBa0VIY1hZZ0JYRUxtZ0VFQVg4QmZ3Ri9BWDhnQVVFQlJnUkFEd3RCQVNBQlFRRnJkQ0VDSUFBaEF5QUFJQUpCb0FKc2FpRUVJQVJCb0FKcklRVUNRQU5BSUFNZ0JVWU5BU0FESUFRZ0F4Q3dBU0FGSUFRZ0JSQ3dBU0FEUWFBQ2FpRURJQVJCb0FKcUlRUU1BQXNMSUFBZ0FVRUJheERJQVNBQlFRRnJJUUVDUUFOQUlBRkZEUUVnQlNBRkVLMEJJQUZCQVdzaEFRd0FDd3NnQUNBRklBQVFzQUVMMGdFS0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOGdBMFVFUUNBR0VLVUJEd3RCQVNBRmRDRU5RUUFvQWdBaERrRUFJQTRnRFVHZ0FteHFOZ0lBUVFBaERBSkFBMEFnRENBTlJnMEJJQTRnREVHZ0FteHFFS1VCSUF4QkFXb2hEQXdBQ3dzZ0FDRUtJQUVoQ0NBQklBTWdBbXhxSVFrQ1FBTkFJQWdnQ1VZTkFTQUlJQUlnQkNBRkVNY0JJUThnRHdSQUlBNGdEMEVCYTBHZ0FteHFJUkFnRUNBS0lCQVFzQUVMSUFnZ0Ftb2hDQ0FLUWFBQ2FpRUtEQUFMQ3lBT0lBVVF5QUVnRGlBR0VLY0JRUUFnRGpZQ0FBdW9BUXdCZndGL0FYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL0FYOGdCQkNsQVNBRFJRUkFEd3NnQTJjdEFNaTVBU0VGSUFKQkEzUkJBV3NnQlc1QkFXb2hCaUFHUVFGcklBVnNJUW9DUUFOQUlBcEJBRWdOQVNBRUVLTUJSUVJBUVFBaERBSkFBMEFnRENBRlJnMEJJQVFnQkJDdEFTQU1RUUZxSVF3TUFBc0xDeUFBSUFFZ0FpQURJQW9nQlVHb3R3RVF5UUVnQkVHb3R3RWdCQkN3QVNBS0lBVnJJUW9NQUFzTEMwRUNBWDhCZnlBQlFRaHNJQUpySVFRZ0F5QUVTZ1JBUVFFZ0JIUkJBV3NoQlFWQkFTQURkRUVCYXlFRkN5QUFJQUpCQTNacUtBQUFJQUpCQjNGMklBVnhDNW9CQkFGL0FYOEJmd0YvSUFGQkFVWUVRQThMUVFFZ0FVRUJhM1FoQWlBQUlRTWdBQ0FDUWFBQ2JHb2hCQ0FFUWFBQ2F5RUZBa0FEUUNBRElBVkdEUUVnQXlBRUlBTVFzQUVnQlNBRUlBVVFzQUVnQTBHZ0Ftb2hBeUFFUWFBQ2FpRUVEQUFMQ3lBQUlBRkJBV3NRekFFZ0FVRUJheUVCQWtBRFFDQUJSUTBCSUFVZ0JSQ3RBU0FCUVFGcklRRU1BQXNMSUFBZ0JTQUFFTEFCQzlJQkNnRi9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQU5GQkVBZ0JoQ2xBUThMUVFFZ0JYUWhEVUVBS0FJQUlRNUJBQ0FPSUExQm9BSnNhallDQUVFQUlRd0NRQU5BSUF3Z0RVWU5BU0FPSUF4Qm9BSnNhaENsQVNBTVFRRnFJUXdNQUFzTElBQWhDaUFCSVFnZ0FTQURJQUpzYWlFSkFrQURRQ0FJSUFsR0RRRWdDQ0FDSUFRZ0JSRExBU0VQSUE4RVFDQU9JQTlCQVd0Qm9BSnNhaUVRSUJBZ0NpQVFFSzhCQ3lBSUlBSnFJUWdnQ2tIQUFXb2hDZ3dBQ3dzZ0RpQUZFTXdCSUE0Z0JoQ25BVUVBSUE0MkFnQUxxQUVNQVg4QmZ3Ri9BWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9JQVFRcFFFZ0EwVUVRQThMSUFObkxRQ0l2QUVoQlNBQ1FRTjBRUUZySUFWdVFRRnFJUVlnQmtFQmF5QUZiQ0VLQWtBRFFDQUtRUUJJRFFFZ0JCQ2pBVVVFUUVFQUlRd0NRQU5BSUF3Z0JVWU5BU0FFSUFRUXJRRWdERUVCYWlFTURBQUxDd3NnQUNBQklBSWdBeUFLSUFWQjZMa0JFTTBCSUFSQjZMa0JJQVFRc0FFZ0NpQUZheUVLREFBTEN3dTBCQWNCZndGL0FYOEJmd0YvQVg4QmZ5QUNSUVJBSUFNUXBRRVBDeUFDUVFOMElRVkJBQ2dDQUNFRUlBUWhDa0VBSUFSQklHb2dCV3BCZUhFMkFnQkJBU0VHSUFGQkFFRURka0Y4Y1dvb0FnQkJBRUVmY1haQkFYRWhCMEVBSVFrQ1FBTkFJQVlnQlVZTkFTQUJJQVpCQTNaQmZIRnFLQUlBSUFaQkgzRjJRUUZ4SVFnZ0J3UkFJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUU2QUFBZ0NrRUJhaUVLQlVFQUlRZEJBU0VKSUFwQi93RTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRQWhCMEVCSVFrZ0NrSC9BVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUFJUWtnQ2tFQk9nQUFJQXBCQVdvaENnc0xCU0FJQkVBZ0NRUkFRUUFoQjBFQklRa2dDa0VBT2dBQUlBcEJBV29oQ2dWQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtDd1VnQ1FSQVFRRWhCMEVBSVFrZ0NrRUFPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFBNkFBQWdDa0VCYWlFS0N3c0xJQVpCQVdvaEJnd0FDd3NnQndSQUlBa0VRQ0FLUWY4Qk9nQUFJQXBCQVdvaENpQUtRUUE2QUFBZ0NrRUJhaUVLSUFwQkFUb0FBQ0FLUVFGcUlRb0ZJQXBCQVRvQUFDQUtRUUZxSVFvTEJTQUpCRUFnQ2tFQU9nQUFJQXBCQVdvaENpQUtRUUU2QUFBZ0NrRUJhaUVLQ3dzZ0NrRUJheUVLSUFCQnFMd0JFS2NCSUFNUXBRRUNRQU5BSUFNZ0F4Q3RBU0FLTFFBQUlRZ2dDQVJBSUFoQkFVWUVRQ0FEUWFpOEFTQURFTEFCQlNBRFFhaThBU0FERUxVQkN3c2dCQ0FLUmcwQklBcEJBV3NoQ2d3QUN3dEJBQ0FFTmdJQUM3UUVCd0YvQVg4QmZ3Ri9BWDhCZndGL0lBSkZCRUFnQXhDbEFROExJQUpCQTNRaEJVRUFLQUlBSVFRZ0JDRUtRUUFnQkVFZ2FpQUZha0Y0Y1RZQ0FFRUJJUVlnQVVFQVFRTjJRWHh4YWlnQ0FFRUFRUjl4ZGtFQmNTRUhRUUFoQ1FKQUEwQWdCaUFGUmcwQklBRWdCa0VEZGtGOGNXb29BZ0FnQmtFZmNYWkJBWEVoQ0NBSEJFQWdDQVJBSUFrRVFFRUFJUWRCQVNFSklBcEJBVG9BQUNBS1FRRnFJUW9GUVFBaEIwRUJJUWtnQ2tIL0FUb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFDRUhRUUVoQ1NBS1FmOEJPZ0FBSUFwQkFXb2hDZ1ZCQUNFSFFRQWhDU0FLUVFFNkFBQWdDa0VCYWlFS0N3c0ZJQWdFUUNBSkJFQkJBQ0VIUVFFaENTQUtRUUE2QUFBZ0NrRUJhaUVLQlVFQklRZEJBQ0VKSUFwQkFEb0FBQ0FLUVFGcUlRb0xCU0FKQkVCQkFTRUhRUUFoQ1NBS1FRQTZBQUFnQ2tFQmFpRUtCVUVBSVFkQkFDRUpJQXBCQURvQUFDQUtRUUZxSVFvTEN3c2dCa0VCYWlFR0RBQUxDeUFIQkVBZ0NRUkFJQXBCL3dFNkFBQWdDa0VCYWlFS0lBcEJBRG9BQUNBS1FRRnFJUW9nQ2tFQk9nQUFJQXBCQVdvaENnVWdDa0VCT2dBQUlBcEJBV29oQ2dzRklBa0VRQ0FLUVFBNkFBQWdDa0VCYWlFS0lBcEJBVG9BQUNBS1FRRnFJUW9MQ3lBS1FRRnJJUW9nQUVISXZnRVFwZ0VnQXhDbEFRSkFBMEFnQXlBREVLMEJJQW90QUFBaENDQUlCRUFnQ0VFQlJnUkFJQU5CeUw0QklBTVFyd0VGSUFOQnlMNEJJQU1RdEFFTEN5QUVJQXBHRFFFZ0NrRUJheUVLREFBTEMwRUFJQVEyQWdBTEZnQWdBVUdJd0FFUVBTQUFRWWpBQVVFZ0lBSVFld3RHQUNBQVFmOEJjUzBBNk5BQlFSaDBJQUJCQ0haQi93RnhMUURvMEFGQkVIUnFJQUJCRUhaQi93RnhMUURvMEFGQkNIUWdBRUVZZGtIL0FYRXRBT2pRQVdwcUlBRjNDMm9GQVg4QmZ3Ri9BWDhCZjBFQklBRjBJUUpCQUNFREFrQURRQ0FESUFKR0RRRWdBQ0FEUVpBQmJHb2hCU0FESUFFUTBnRWhCQ0FBSUFSQmtBRnNhaUVHSUFNZ0JFa0VRQ0FGUWVqU0FSQlRJQVlnQlJCVFFlalNBU0FHRUZNTElBTkJBV29oQXd3QUN3c0w0d0VIQVg4QmZ3Ri9BWDhCZndGL0FYOGdBa1VnQXhBMGNRUkFEd3RCQVNBQmRDRUVJQVJCQVdzaENFRUJJUWNnQkVFQmRpRUZBa0FEUUNBSElBVkdEUUVnQUNBSFFaQUJiR29oQ1NBQUlBUWdCMnRCa0FGc2FpRUtJQUlFUUNBREVEUUVRQ0FKUWZqVEFSQlRJQW9nQ1JCVFFmalRBU0FLRUZNRklBbEIrTk1CRUZNZ0NpQURJQWtRMFFGQitOTUJJQU1nQ2hEUkFRc0ZJQU1RTkFSQUJTQUpJQU1nQ1JEUkFTQUtJQU1nQ2hEUkFRc0xJQWRCQVdvaEJ3d0FDd3NnQXhBMEJFQUZJQUFnQXlBQUVORUJJQUFnQlVHUUFXeHFJUW9nQ2lBRElBb1EwUUVMQyswQkNRRi9BWDhCZndGL0FYOEJmd0YvQVg4QmZ5QUFJQUVRMHdGQkFTQUJkQ0VKUVFFaEJBSkFBMEFnQkNBQlN3MEJRUUVnQkhRaEIwR293QUVnQkVFZ2JHb2hDa0VBSVFVQ1FBTkFJQVVnQ1U4TkFVR0kxUUVRUVNBSFFRRjJJUWhCQUNFR0FrQURRQ0FHSUFoUERRRWdBQ0FGSUFacVFaQUJiR29oQ3lBTElBaEJrQUZzYWlFTUlBeEJpTlVCUWFqVkFSRFJBU0FMUWJqV0FSQlRRYmpXQVVHbzFRRWdDeEJjUWJqV0FVR28xUUVnREJCaFFZalZBU0FLUVlqVkFSQTVJQVpCQVdvaEJnd0FDd3NnQlNBSGFpRUZEQUFMQ3lBRVFRRnFJUVFNQUFzTElBQWdBU0FDSUFNUTFBRUxRd0lCZndGL0lBQkJBWFloQWtFQUlRRUNRQU5BSUFKRkRRRWdBa0VCZGlFQ0lBRkJBV29oQVF3QUN3c2dBRUVCSUFGMFJ3UkFBQXNnQVVFZ1N3UkFBQXNnQVFzZUFRRi9JQUVRMWdFaEFrSEkxd0VRUVNBQUlBSkJBRUhJMXdFUTFRRUxKQUlCZndGL0lBRVExZ0VoQWtISXlBRWdBa0VnYkdvaEF5QUFJQUpCQVNBREVOVUJDM2tEQVg4QmZ3Ri9JQU5CNk5jQkVDVkJBQ0VIQWtBRFFDQUhJQUpHRFFFZ0FDQUhRWkFCYkdvaEJTQUJJQWRCa0FGc2FpRUdJQVpCNk5jQlFZallBUkRSQVNBRlFaalpBUkJUUVpqWkFVR0kyQUVnQlJCY1FaalpBVUdJMkFFZ0JoQmhRZWpYQVNBRVFlalhBUkE1SUFkQkFXb2hCd3dBQ3dzTHlBRUpBWDhCZndGL0FYOEJmd0YvQVg4QmZ3Ri9RUUVnQW5RaEJDQUVRUUYySVFVZ0FTQUNkaUVESUFWQmtBRnNJUVpCcU1BQklBSkJJR3hxSVF0QkFDRUpBa0FEUUNBSklBTkdEUUZCcU5vQkVFRkJBQ0VLQWtBRFFDQUtJQVZHRFFFZ0FDQUpJQVJzSUFwcVFaQUJiR29oQnlBSElBWnFJUWdnQ0VHbzJnRkJ5Tm9CRU5FQklBZEIyTnNCRUZOQjJOc0JRY2phQVNBSEVGeEIyTnNCUWNqYUFTQUlFR0ZCcU5vQklBdEJxTm9CRURrZ0NrRUJhaUVLREFBTEN5QUpRUUZxSVFrTUFBc0xDNElCQkFGL0FYOEJmd0YvSUFGQkFYWWhCaUFCUVFGR0JFQWdBQ0FHUVpBQmJHb2dBaUFBSUFaQmtBRnNhaERSQVF0QkFDRUZBa0FEUUNBRklBWkdEUUVnQUNBRlFaQUJiR29oQXlBQUlBRkJBV3NnQld0QmtBRnNhaUVFSUFRZ0FrSG8zQUVRMFFFZ0F5QUNJQVFRMFFGQjZOd0JJQU1RVXlBRlFRRnFJUVVNQUFzTEN4Y0FJQUZCK04wQkVEMGdBRUg0M1FGQklDQUNFTThCQzBZQUlBQkIvd0Z4TFFEWTdnRkJHSFFnQUVFSWRrSC9BWEV0QU5qdUFVRVFkR29nQUVFUWRrSC9BWEV0QU5qdUFVRUlkQ0FBUVJoMlFmOEJjUzBBMk80QmFtb2dBWGNMYlFVQmZ3Ri9BWDhCZndGL1FRRWdBWFFoQWtFQUlRTUNRQU5BSUFNZ0FrWU5BU0FBSUFOQm9BSnNhaUVGSUFNZ0FSRGRBU0VFSUFBZ0JFR2dBbXhxSVFZZ0F5QUVTUVJBSUFWQjJQQUJFS2NCSUFZZ0JSQ25BVUhZOEFFZ0JoQ25BUXNnQTBFQmFpRUREQUFMQ3d2bkFRY0Jmd0YvQVg4QmZ3Ri9BWDhCZnlBQ1JTQURFRFJ4QkVBUEMwRUJJQUYwSVFRZ0JFRUJheUVJUVFFaEJ5QUVRUUYySVFVQ1FBTkFJQWNnQlVZTkFTQUFJQWRCb0FKc2FpRUpJQUFnQkNBSGEwR2dBbXhxSVFvZ0FnUkFJQU1RTkFSQUlBbEIrUElCRUtjQklBb2dDUkNuQVVINDhnRWdDaENuQVFVZ0NVSDQ4Z0VRcHdFZ0NpQURJQWtRM0FGQitQSUJJQU1nQ2hEY0FRc0ZJQU1RTkFSQUJTQUpJQU1nQ1JEY0FTQUtJQU1nQ2hEY0FRc0xJQWRCQVdvaEJ3d0FDd3NnQXhBMEJFQUZJQUFnQXlBQUVOd0JJQUFnQlVHZ0FteHFJUW9nQ2lBRElBb1EzQUVMQy9BQkNRRi9BWDhCZndGL0FYOEJmd0YvQVg4QmZ5QUFJQUVRM2dGQkFTQUJkQ0VKUVFFaEJBSkFBMEFnQkNBQlN3MEJRUUVnQkhRaEIwR1kzZ0VnQkVFZ2JHb2hDa0VBSVFVQ1FBTkFJQVVnQ1U4TkFVR1k5UUVRUVNBSFFRRjJJUWhCQUNFR0FrQURRQ0FHSUFoUERRRWdBQ0FGSUFacVFhQUNiR29oQ3lBTElBaEJvQUpzYWlFTUlBeEJtUFVCUWJqMUFSRGNBU0FMUWRqM0FSQ25BVUhZOXdGQnVQVUJJQXNRc0FGQjJQY0JRYmoxQVNBTUVMVUJRWmoxQVNBS1FaajFBUkE1SUFaQkFXb2hCZ3dBQ3dzZ0JTQUhhaUVGREFBTEN5QUVRUUZxSVFRTUFBc0xJQUFnQVNBQ0lBTVEzd0VMUXdJQmZ3Ri9JQUJCQVhZaEFrRUFJUUVDUUFOQUlBSkZEUUVnQWtFQmRpRUNJQUZCQVdvaEFRd0FDd3NnQUVFQklBRjBSd1JBQUFzZ0FVRWdTd1JBQUFzZ0FRc2VBUUYvSUFFUTRRRWhBa0g0K1FFUVFTQUFJQUpCQUVINCtRRVE0QUVMSkFJQmZ3Ri9JQUVRNFFFaEFrRzQ1Z0VnQWtFZ2JHb2hBeUFBSUFKQkFTQURFT0FCQzN3REFYOEJmd0YvSUFOQm1Qb0JFQ1ZCQUNFSEFrQURRQ0FISUFKR0RRRWdBQ0FIUWFBQ2JHb2hCU0FCSUFkQm9BSnNhaUVHSUFaQm1Qb0JRYmo2QVJEY0FTQUZRZGo4QVJDbkFVSFkvQUZCdVBvQklBVVFzQUZCMlB3QlFiajZBU0FHRUxVQlFaajZBU0FFUVpqNkFSQTVJQWRCQVdvaEJ3d0FDd3NMeXdFSkFYOEJmd0YvQVg4QmZ3Ri9BWDhCZndGL1FRRWdBblFoQkNBRVFRRjJJUVVnQVNBQ2RpRURJQVZCb0FKc0lRWkJtTjRCSUFKQklHeHFJUXRCQUNFSkFrQURRQ0FKSUFOR0RRRkIrUDRCRUVGQkFDRUtBa0FEUUNBS0lBVkdEUUVnQUNBSklBUnNJQXBxUWFBQ2JHb2hCeUFISUFacUlRZ2dDRUg0L2dGQm1QOEJFTndCSUFkQnVJRUNFS2NCUWJpQkFrR1kvd0VnQnhDd0FVRzRnUUpCbVA4QklBZ1F0UUZCK1A0QklBdEIrUDRCRURrZ0NrRUJhaUVLREFBTEN5QUpRUUZxSVFrTUFBc0xDNE1CQkFGL0FYOEJmd0YvSUFGQkFYWWhCaUFCUVFGR0JFQWdBQ0FHUWFBQ2JHb2dBaUFBSUFaQm9BSnNhaERjQVF0QkFDRUZBa0FEUUNBRklBWkdEUUVnQUNBRlFhQUNiR29oQXlBQUlBRkJBV3NnQld0Qm9BSnNhaUVFSUFRZ0FrSFlnd0lRM0FFZ0F5QUNJQVFRM0FGQjJJTUNJQU1RcHdFZ0JVRUJhaUVGREFBTEN3c1dBQ0FCUWZpRkFoQTlJQUJCK0lVQ1FTQWdBaEI4Q3hjQUlBRkJtSVlDRUQwZ0FFR1loZ0pCSUNBQ0VOQUJDMWdFQVg4QmZ3Ri9BWDhnQUNFSElBUWhDQ0FDUWJpR0FoQWxRUUFoQmdKQUEwQWdCaUFCUmcwQklBZEJ1SVlDSUFnUU9TQUhRU0JxSVFjZ0NFRWdhaUVJUWJpR0FpQURRYmlHQWhBNUlBWkJBV29oQmd3QUN3c0xXd1FCZndGL0FYOEJmeUFBSVFjZ0JDRUlJQUpCMklZQ0VDVkJBQ0VHQWtBRFFDQUdJQUZHRFFFZ0IwSFloZ0lnQ0JEUkFTQUhRWkFCYWlFSElBaEJrQUZxSVFoQjJJWUNJQU5CMklZQ0VEa2dCa0VCYWlFR0RBQUxDd3RiQkFGL0FYOEJmd0YvSUFBaEJ5QUVJUWdnQWtINGhnSVFKVUVBSVFZQ1FBTkFJQVlnQVVZTkFTQUhRZmlHQWlBSUVPY0JJQWRCNEFCcUlRY2dDRUdRQVdvaENFSDRoZ0lnQTBINGhnSVFPU0FHUVFGcUlRWU1BQXNMQzFzRUFYOEJmd0YvQVg4Z0FDRUhJQVFoQ0NBQ1FaaUhBaEFsUVFBaEJnSkFBMEFnQmlBQlJnMEJJQWRCbUljQ0lBZ1EzQUVnQjBHZ0Ftb2hCeUFJUWFBQ2FpRUlRWmlIQWlBRFFaaUhBaEE1SUFaQkFXb2hCZ3dBQ3dzTFd3UUJmd0YvQVg4QmZ5QUFJUWNnQkNFSUlBSkJ1SWNDRUNWQkFDRUdBa0FEUUNBR0lBRkdEUUVnQjBHNGh3SWdDQkRvQVNBSFFjQUJhaUVISUFoQm9BSnFJUWhCdUljQ0lBTkJ1SWNDRURrZ0JrRUJhaUVHREFBTEN3c2xBQ0FBUVppVkFoQUFJQUFnQUVFd2FpQUJFQkZCbUpVQ0lBQkJNR29nQVVFd2FoQVFDeHNBSUFBUWl3RWdBRUhnQUdvUWl3RnhJQUJCd0FGcUVJc0JjUXNjQUNBQUVJd0JJQUJCNEFCcUVJc0JjU0FBUWNBQmFoQ0xBWEVQQ3hrQUlBQVFqUUVnQUVIZ0FHb1FqUUVnQUVIQUFXb1FqUUVMR1FBZ0FCQ09BU0FBUWVBQWFoQ05BU0FBUWNBQmFoQ05BUXNuQUNBQUlBRVFqd0VnQUVIZ0FHb2dBVUhnQUdvUWp3RWdBRUhBQVdvZ0FVSEFBV29RandFTDVRSUFJQUFnQVVISWxRSVFrQUVnQUVIZ0FHb2dBVUhnQUdwQnFKWUNFSkFCSUFCQndBRnFJQUZCd0FGcVFZaVhBaENRQVNBQUlBQkI0QUJxUWVpWEFoQ1RBU0FCSUFGQjRBQnFRY2lZQWhDVEFTQUFJQUJCd0FGcVFhaVpBaENUQVNBQklBRkJ3QUZxUVlpYUFoQ1RBU0FBUWVBQWFpQUFRY0FCYWtIb21nSVFrd0VnQVVIZ0FHb2dBVUhBQVdwQnlKc0NFSk1CUWNpVkFrR29sZ0pCcUp3Q0VKTUJRY2lWQWtHSWx3SkJpSjBDRUpNQlFhaVdBa0dJbHdKQjZKMENFSk1CUWVpYUFrSEltd0lnQWhDUUFTQUNRZWlkQWlBQ0VKUUJJQUlnQWhEdUFVSElsUUlnQWlBQ0VKTUJRZWlYQWtISW1BSWdBa0hnQUdvUWtBRWdBa0hnQUdwQnFKd0NJQUpCNEFCcUVKUUJRWWlYQWtISW5nSVE3Z0VnQWtIZ0FHcEJ5SjRDSUFKQjRBQnFFSk1CUWFpWkFrR0ltZ0lnQWtIQUFXb1FrQUVnQWtIQUFXcEJpSjBDSUFKQndBRnFFSlFCSUFKQndBRnFRYWlXQWlBQ1FjQUJhaENUQVF1QkFnQWdBRUdvbndJUWtnRWdBQ0FBUWVBQWFrR0lvQUlRa0FGQmlLQUNRWWlnQWtIb29BSVFrd0VnQUNBQVFlQUFha0hJb1FJUWxBRkJ5S0VDSUFCQndBRnFRY2loQWhDVEFVSElvUUpCeUtFQ0VKSUJJQUJCNEFCcUlBQkJ3QUZxUWFpaUFoQ1FBVUdvb2dKQnFLSUNRWWlqQWhDVEFTQUFRY0FCYWtIb293SVFrZ0ZCaUtNQ0lBRVE3Z0ZCcUo4Q0lBRWdBUkNUQVVIb293SWdBVUhnQUdvUTdnRkI2S0FDSUFGQjRBQnFJQUZCNEFCcUVKTUJRYWlmQWtIb293SWdBVUhBQVdvUWt3RkJpS01DSUFGQndBRnFJQUZCd0FGcUVKUUJRY2loQWlBQlFjQUJhaUFCUWNBQmFoQ1RBVUhvb0FJZ0FVSEFBV29nQVVIQUFXb1Frd0VMTlFBZ0FDQUJJQUlRa3dFZ0FFSGdBR29nQVVIZ0FHb2dBa0hnQUdvUWt3RWdBRUhBQVdvZ0FVSEFBV29nQWtIQUFXb1Frd0VMTlFBZ0FDQUJJQUlRbEFFZ0FFSGdBR29nQVVIZ0FHb2dBa0hnQUdvUWxBRWdBRUhBQVdvZ0FVSEFBV29nQWtIQUFXb1FsQUVMSndBZ0FDQUJFSlVCSUFCQjRBQnFJQUZCNEFCcUVKVUJJQUJCd0FGcUlBRkJ3QUZxRUpVQkN6QUJBWDhnQUVIQUFXb1FuQUVoQVNBQkJFQWdBUThMSUFCQjRBQnFFSndCSVFFZ0FRUkFJQUVQQ3lBQUVKd0JEd3NuQUNBQUlBRVFsd0VnQUVIZ0FHb2dBVUhnQUdvUWx3RWdBRUhBQVdvZ0FVSEFBV29RbHdFTEp3QWdBQ0FCRUpnQklBQkI0QUJxSUFGQjRBQnFFSmdCSUFCQndBRnFJQUZCd0FGcUVKZ0JDeWtBSUFBZ0FSQ1pBU0FBUWVBQWFpQUJRZUFBYWhDWkFYRWdBRUhBQVdvZ0FVSEFBV29RbVFGeEM2c0NBQ0FBUWNpa0FoQ1NBU0FBUWVBQWFrR29wUUlRa2dFZ0FFSEFBV3BCaUtZQ0VKSUJJQUFnQUVIZ0FHcEI2S1lDRUpBQklBQWdBRUhBQVdwQnlLY0NFSkFCSUFCQjRBQnFJQUJCd0FGcVFhaW9BaENRQVVHb3FBSkJpS2tDRU80QlFjaWtBa0dJcVFKQmlLa0NFSlFCUVlpbUFrSG9xUUlRN2dGQjZLa0NRZWltQWtIb3FRSVFsQUZCcUtVQ1FjaW5Ba0hJcWdJUWxBRWdBRUhBQVdwQjZLa0NRYWlyQWhDUUFTQUFRZUFBYWtISXFnSkJpS3dDRUpBQlFhaXJBa0dJckFKQnFLc0NFSk1CUWFpckFrR29xd0lRN2dFZ0FFR0lxUUpCaUt3Q0VKQUJRWWlzQWtHb3F3SkJxS3NDRUpNQlFhaXJBa0dvcXdJUW1nRkJxS3NDUVlpcEFpQUJFSkFCUWFpckFrSG9xUUlnQVVIZ0FHb1FrQUZCcUtzQ1FjaXFBaUFCUWNBQmFoQ1FBUXN6QUNBQUlBRWdBaUFERUpzQklBQkI0QUJxSUFFZ0FpQURRZUFBYWhDYkFTQUFRY0FCYWlBQklBSWdBMEhBQVdvUW13RUxOUUFnQUVIQUFXb1Fpd0VFUUNBQVFlQUFhaENMQVFSQUlBQVFuUUVQQlNBQVFlQUFhaENkQVE4TEN5QUFRY0FCYWhDZEFROExqd0lFQVg4QmZ3Ri9BWDlCQUNnQ0FDRUZRUUFnQlNBQ1FRRnFRYUFDYkdvMkFnQWdCUkR5QVNBQUlRWWdCVUdnQW1vaEJVRUFJUWdDUUFOQUlBZ2dBa1lOQVNBR0VPOEJCRUFnQlVHZ0Ftc2dCUkR6QVFVZ0JpQUZRYUFDYXlBRkVQUUJDeUFHSUFGcUlRWWdCVUdnQW1vaEJTQUlRUUZxSVFnTUFBc0xJQVlnQVdzaEJpQUZRYUFDYXlFRklBTWdBa0VCYXlBRWJHb2hCeUFGSUFVUS9RRUNRQU5BSUFoRkRRRWdCaER2QVFSQUlBVWdCVUdnQW1zUTh3RWdCeER4QVFVZ0JVR2dBbXRCNkt3Q0VQTUJJQVVnQmlBRlFhQUNheEQwQVNBRlFlaXNBaUFIRVBRQkN5QUdJQUZySVFZZ0J5QUVheUVISUFWQm9BSnJJUVVnQ0VFQmF5RUlEQUFMQzBFQUlBVTJBZ0FMemdJQ0FYOEJmeUFDUlFSQUlBTVE4Z0VQQ3lBQVFZaXZBaER6QVNBREVQSUJJQUloQkFKQUEwQWdCRUVCYXlFRUlBRWdCR290QUFBaEJTQURJQU1ROVFFZ0JVR0FBVThFUUNBRlFZQUJheUVGSUFOQmlLOENJQU1ROUFFTElBTWdBeEQxQVNBRlFjQUFUd1JBSUFWQndBQnJJUVVnQTBHSXJ3SWdBeEQwQVFzZ0F5QURFUFVCSUFWQklFOEVRQ0FGUVNCcklRVWdBMEdJcndJZ0F4RDBBUXNnQXlBREVQVUJJQVZCRUU4RVFDQUZRUkJySVFVZ0EwR0lyd0lnQXhEMEFRc2dBeUFERVBVQklBVkJDRThFUUNBRlFRaHJJUVVnQTBHSXJ3SWdBeEQwQVFzZ0F5QURFUFVCSUFWQkJFOEVRQ0FGUVFScklRVWdBMEdJcndJZ0F4RDBBUXNnQXlBREVQVUJJQVZCQWs4RVFDQUZRUUpySVFVZ0EwR0lyd0lnQXhEMEFRc2dBeUFERVBVQklBVkJBVThFUUNBRlFRRnJJUVVnQTBHSXJ3SWdBeEQwQVFzZ0JFVU5BUXdBQ3dzTE1nQWdBRUdvc1FJUWp3RWdBRUhBQVdvZ0FSRHVBU0FBUWVBQWFpQUJRY0FCYWhDUEFVR29zUUlnQVVIZ0FHb1Fqd0VMRVFBZ0FCRHZBU0FBUWFBQ2FoRHZBWEVMRWdBZ0FCRHdBU0FBUWFBQ2FoRHZBWEVQQ3hBQUlBQVE4UUVnQUVHZ0Ftb1E4UUVMRUFBZ0FCRHlBU0FBUWFBQ2FoRHhBUXNZQUNBQUlBRVE4d0VnQUVHZ0Ftb2dBVUdnQW1vUTh3RUxoUUVBSUFBZ0FVR0lzZ0lROUFFZ0FFR2dBbW9nQVVHZ0FtcEJxTFFDRVBRQklBQWdBRUdnQW1wQnlMWUNFUFlCSUFFZ0FVR2dBbXBCNkxnQ0VQWUJRY2kyQWtIb3VBSkJ5TFlDRVBRQlFhaTBBaUFDRUlJQ1FZaXlBaUFDSUFJUTlnRkJpTElDUWFpMEFpQUNRYUFDYWhEMkFVSEl0Z0lnQWtHZ0Ftb2dBa0dnQW1vUTl3RUxIQUFnQUNBQklBSVE5QUVnQUVHZ0Ftb2dBU0FDUWFBQ2FoRDBBUXQ5QUNBQUlBQkJvQUpxUVlpN0FoRDBBU0FBSUFCQm9BSnFRYWk5QWhEMkFTQUFRYUFDYWtISXZ3SVFnZ0lnQUVISXZ3SkJ5TDhDRVBZQlFZaTdBa0hvd1FJUWdnSkI2TUVDUVlpN0FrSG93UUlROWdGQnFMMENRY2kvQWlBQkVQUUJJQUZCNk1FQ0lBRVE5d0ZCaUxzQ1FZaTdBaUFCUWFBQ2FoRDJBUXNnQUNBQUlBRWdBaEQyQVNBQVFhQUNhaUFCUWFBQ2FpQUNRYUFDYWhEMkFRc2dBQ0FBSUFFZ0FoRDNBU0FBUWFBQ2FpQUJRYUFDYWlBQ1FhQUNhaEQzQVFzWUFDQUFJQUVRK0FFZ0FFR2dBbW9nQVVHZ0Ftb1ErQUVMR0FBZ0FDQUJFUE1CSUFCQm9BSnFJQUZCb0FKcUVQZ0JDeGdBSUFBZ0FSRDZBU0FBUWFBQ2FpQUJRYUFDYWhENkFRc1lBQ0FBSUFFUSt3RWdBRUdnQW1vZ0FVR2dBbW9RK3dFTEdRQWdBQ0FCRVB3QklBQkJvQUpxSUFGQm9BSnFFUHdCY1F0cUFDQUFRWWpFQWhEMUFTQUFRYUFDYWtHb3hnSVE5UUZCcU1ZQ1FjaklBaENDQWtHSXhBSkJ5TWdDUWNqSUFoRDNBVUhJeUFKQjZNb0NFUDBCSUFCQjZNb0NJQUVROUFFZ0FFR2dBbXBCNk1vQ0lBRkJvQUpxRVBRQklBRkJvQUpxSUFGQm9BSnFFUGdCQ3lBQUlBQWdBU0FDSUFNUS9nRWdBRUdnQW1vZ0FTQUNJQU5Cb0FKcUVQNEJDeDBCQVg4Z0FFR2dBbW9RK1FFaEFTQUJCRUFnQVE4TElBQVErUUVQQ3g0QUlBQkJvQUpxRU84QkJFQWdBQkQvQVE4TElBQkJvQUpxRVA4QkR3dVBBZ1FCZndGL0FYOEJmMEVBS0FJQUlRVkJBQ0FGSUFKQkFXcEJ3QVJzYWpZQ0FDQUZFSVlDSUFBaEJpQUZRY0FFYWlFRlFRQWhDQUpBQTBBZ0NDQUNSZzBCSUFZUWd3SUVRQ0FGUWNBRWF5QUZFSWNDQlNBR0lBVkJ3QVJySUFVUWlBSUxJQVlnQVdvaEJpQUZRY0FFYWlFRklBaEJBV29oQ0F3QUN3c2dCaUFCYXlFR0lBVkJ3QVJySVFVZ0F5QUNRUUZySUFSc2FpRUhJQVVnQlJDU0FnSkFBMEFnQ0VVTkFTQUdFSU1DQkVBZ0JTQUZRY0FFYXhDSEFpQUhFSVVDQlNBRlFjQUVhMEdJelFJUWh3SWdCU0FHSUFWQndBUnJFSWdDSUFWQmlNMENJQWNRaUFJTElBWWdBV3NoQmlBSElBUnJJUWNnQlVIQUJHc2hCU0FJUVFGcklRZ01BQXNMUVFBZ0JUWUNBQXZPQWdJQmZ3Ri9JQUpGQkVBZ0F4Q0dBZzhMSUFCQnlORUNFSWNDSUFNUWhnSWdBaUVFQWtBRFFDQUVRUUZySVFRZ0FTQUVhaTBBQUNFRklBTWdBeENLQWlBRlFZQUJUd1JBSUFWQmdBRnJJUVVnQTBISTBRSWdBeENJQWdzZ0F5QURFSW9DSUFWQndBQlBCRUFnQlVIQUFHc2hCU0FEUWNqUkFpQURFSWdDQ3lBRElBTVFpZ0lnQlVFZ1R3UkFJQVZCSUdzaEJTQURRY2pSQWlBREVJZ0NDeUFESUFNUWlnSWdCVUVRVHdSQUlBVkJFR3NoQlNBRFFjalJBaUFERUlnQ0N5QURJQU1RaWdJZ0JVRUlUd1JBSUFWQkNHc2hCU0FEUWNqUkFpQURFSWdDQ3lBRElBTVFpZ0lnQlVFRVR3UkFJQVZCQkdzaEJTQURRY2pSQWlBREVJZ0NDeUFESUFNUWlnSWdCVUVDVHdSQUlBVkJBbXNoQlNBRFFjalJBaUFERUlnQ0N5QURJQU1RaWdJZ0JVRUJUd1JBSUFWQkFXc2hCU0FEUWNqUkFpQURFSWdDQ3lBRVJRMEJEQUFMQ3d2UkFRQkJpT2dDRUlZQ1FZam9Ba0dJNkFJUWpRSWdBRUdJMWdKQm9BSkJ5Tm9DRUpjQ1FjamFBa0dJM3dJUWlnSWdBRUdJM3dKQmlOOENFSWdDUVlqZkFrSEk0d0lRamdKQnlPTUNRWWpmQWtISTR3SVFpQUpCeU9NQ1FZam9BaENSQWdSQUFBdEJ5Tm9DSUFCQnlPd0NFSWdDUVlqZkFrR0k2QUlRa1FJRVFFR0k2QUlROFFGQnFPb0NFUElCUVlqb0FrSEk3QUlnQVJDSUFnVkJpUEVDRUlZQ1FZanhBa0dJM3dKQmlQRUNFSXNDUVlqeEFrR28yQUpCb0FKQmlQRUNFSmNDUVlqeEFrSEk3QUlnQVJDSUFnc0xhZ0JCcUlVREVJWUNRYWlGQTBHb2hRTVFqUUlnQUVISTlRSkJvQUpCNlBjQ0VKY0NRZWozQWtHby9BSVFpZ0lnQUVHby9BSkJxUHdDRUlnQ1FhajhBa0hvZ0FNUWpnSkI2SUFEUWFqOEFrSG9nQU1RaUFKQjZJQURRYWlGQXhDUkFnUkFRUUFQQzBFQkR3dDRBQ0FBSUFCQjRBQnFRYWlLQXhDVEFTQUFRZUFBYWlBQVFjQUJha0dJaXdNUWt3RWdBRUhnQUdvZ0FTQUNRY0FCYWhDUUFVR0lpd01nQVNBQ0VKQUJJQUlnQWtIQUFXb2dBaENVQVNBQ0lBSVE3Z0ZCcUlvRElBRWdBa0hnQUdvUWtBRWdBa0hnQUdvZ0FrSEFBV29nQWtIZ0FHb1FsQUVMN0FFQUlBQWdBVUhvaXdNUWtBRWdBRUhnQUdvZ0FrSElqQU1Ra0FFZ0FDQUFRZUFBYWtHb2pRTVFrd0VnQUNBQVFjQUJha0dJamdNUWt3RWdBRUhnQUdvZ0FFSEFBV29nQXhDVEFTQURJQUlnQXhDUUFTQURRY2lNQXlBREVKUUJJQU1nQXhEdUFTQURRZWlMQXlBREVKTUJJQUVnQWlBRFFlQUFhaENUQVNBRFFlQUFha0dvalFNZ0EwSGdBR29Ra0FFZ0EwSGdBR3BCNklzRElBTkI0QUJxRUpRQklBTkI0QUJxUWNpTUF5QURRZUFBYWhDVUFVR0lqZ01nQVNBRFFjQUJhaENRQVNBRFFjQUJha0hvaXdNZ0EwSEFBV29RbEFFZ0EwSEFBV3BCeUl3RElBTkJ3QUZxRUpNQkM1QUJBQ0FBSUFFZ0FrSG9qZ01RbXdJZ0FFR2dBbW9nQTBHSWtRTVFtZ0lnQWlBRFFhaVRBeENUQVNBQVFhQUNhaUFBSUFSQm9BSnFFUFlCSUFSQm9BSnFJQUZCcUpNRElBUkJvQUpxRUpzQ0lBUkJvQUpxUWVpT0F5QUVRYUFDYWhEM0FTQUVRYUFDYWtHSWtRTWdCRUdnQW1vUTl3RkJpSkVESUFRUTh3RWdCQ0FFRUlJQ0lBUkI2STRESUFRUTlnRUxVQUFnQVNBQVFUQnFRWWlVQXhBVUlBRkJNR29nQUVFd2FrRzRsQU1RRkNBQlFlQUFhaUFBUWVpVUF4QVVJQUZCa0FGcUlBQkJtSlVERUJRZ0FpQUJRY0FCYWtIb2xBTkJpSlFESUFJUW5BSUxiQUFnQUVISXR3UWdBUkNRQVNBQVFlQUFha0dvdUFRZ0FVSGdBR29Ra0FFZ0FFSEFBV3BCaUxrRUlBRkJ3QUZxRUpBQklBQkJvQUpxUWVpNUJDQUJRYUFDYWhDUUFTQUFRWUFEYWtISXVnUWdBVUdBQTJvUWtBRWdBRUhnQTJwQnFMc0VJQUZCNEFOcUVKQUJDNG9DQUNBQUlBRVFBQ0FBUVRCcUlBRkJNR29RRWlBQlFZaThCQ0FCRUpBQklBQkI0QUJxSUFGQjRBQnFFQUFnQUVHUUFXb2dBVUdRQVdvUUVpQUJRZUFBYWtIb3ZBUWdBVUhnQUdvUWtBRWdBRUhBQVdvZ0FVSEFBV29RQUNBQVFmQUJhaUFCUWZBQmFoQVNJQUZCd0FGcVFjaTlCQ0FCUWNBQmFoQ1FBU0FBUWFBQ2FpQUJRYUFDYWhBQUlBQkIwQUpxSUFGQjBBSnFFQklnQVVHZ0FtcEJxTDRFSUFGQm9BSnFFSkFCSUFCQmdBTnFJQUZCZ0FOcUVBQWdBRUd3QTJvZ0FVR3dBMm9RRWlBQlFZQURha0dJdndRZ0FVR0FBMm9Ra0FFZ0FFSGdBMm9nQVVIZ0Eyb1FBQ0FBUVpBRWFpQUJRWkFFYWhBU0lBRkI0QU5xUWVpL0JDQUJRZUFEYWhDUUFRdHNBQ0FBUWNqQUJDQUJFSkFCSUFCQjRBQnFRYWpCQkNBQlFlQUFhaENRQVNBQVFjQUJha0dJd2dRZ0FVSEFBV29Ra0FFZ0FFR2dBbXBCNk1JRUlBRkJvQUpxRUpBQklBQkJnQU5xUWNqREJDQUJRWUFEYWhDUUFTQUFRZUFEYWtHb3hBUWdBVUhnQTJvUWtBRUxpZ0lBSUFBZ0FSQUFJQUJCTUdvZ0FVRXdhaEFTSUFGQmlNVUVJQUVRa0FFZ0FFSGdBR29nQVVIZ0FHb1FBQ0FBUVpBQmFpQUJRWkFCYWhBU0lBRkI0QUJxUWVqRkJDQUJRZUFBYWhDUUFTQUFRY0FCYWlBQlFjQUJhaEFBSUFCQjhBRnFJQUZCOEFGcUVCSWdBVUhBQVdwQnlNWUVJQUZCd0FGcUVKQUJJQUJCb0FKcUlBRkJvQUpxRUFBZ0FFSFFBbW9nQVVIUUFtb1FFaUFCUWFBQ2FrR294d1FnQVVHZ0Ftb1FrQUVnQUVHQUEyb2dBVUdBQTJvUUFDQUFRYkFEYWlBQlFiQURhaEFTSUFGQmdBTnFRWWpJQkNBQlFZQURhaENRQVNBQVFlQURhaUFCUWVBRGFoQUFJQUJCa0FScUlBRkJrQVJxRUJJZ0FVSGdBMnBCNk1nRUlBRkI0QU5xRUpBQkMyd0FJQUJCeU1rRUlBRVFrQUVnQUVIZ0FHcEJxTW9FSUFGQjRBQnFFSkFCSUFCQndBRnFRWWpMQkNBQlFjQUJhaENRQVNBQVFhQUNha0hveXdRZ0FVR2dBbW9Ra0FFZ0FFR0FBMnBCeU13RUlBRkJnQU5xRUpBQklBQkI0QU5xUWFqTkJDQUJRZUFEYWhDUUFRdUtBZ0FnQUNBQkVBQWdBRUV3YWlBQlFUQnFFQklnQVVHSXpnUWdBUkNRQVNBQVFlQUFhaUFCUWVBQWFoQUFJQUJCa0FGcUlBRkJrQUZxRUJJZ0FVSGdBR3BCNk00RUlBRkI0QUJxRUpBQklBQkJ3QUZxSUFGQndBRnFFQUFnQUVId0FXb2dBVUh3QVdvUUVpQUJRY0FCYWtISXp3UWdBVUhBQVdvUWtBRWdBRUdnQW1vZ0FVR2dBbW9RQUNBQVFkQUNhaUFCUWRBQ2FoQVNJQUZCb0FKcVFhalFCQ0FCUWFBQ2FoQ1FBU0FBUVlBRGFpQUJRWUFEYWhBQUlBQkJzQU5xSUFGQnNBTnFFQklnQVVHQUEycEJpTkVFSUFGQmdBTnFFSkFCSUFCQjRBTnFJQUZCNEFOcUVBQWdBRUdRQkdvZ0FVR1FCR29RRWlBQlFlQURha0hvMFFRZ0FVSGdBMm9Ra0FFTGJBQWdBRUhJMGdRZ0FSQ1FBU0FBUWVBQWFrR28wd1FnQVVIZ0FHb1FrQUVnQUVIQUFXcEJpTlFFSUFGQndBRnFFSkFCSUFCQm9BSnFRZWpVQkNBQlFhQUNhaENRQVNBQVFZQURha0hJMVFRZ0FVR0FBMm9Ra0FFZ0FFSGdBMnBCcU5ZRUlBRkI0QU5xRUpBQkM0b0NBQ0FBSUFFUUFDQUFRVEJxSUFGQk1Hb1FFaUFCUVlqWEJDQUJFSkFCSUFCQjRBQnFJQUZCNEFCcUVBQWdBRUdRQVdvZ0FVR1FBV29RRWlBQlFlQUFha0hvMXdRZ0FVSGdBR29Ra0FFZ0FFSEFBV29nQVVIQUFXb1FBQ0FBUWZBQmFpQUJRZkFCYWhBU0lBRkJ3QUZxUWNqWUJDQUJRY0FCYWhDUUFTQUFRYUFDYWlBQlFhQUNhaEFBSUFCQjBBSnFJQUZCMEFKcUVCSWdBVUdnQW1wQnFOa0VJQUZCb0FKcUVKQUJJQUJCZ0FOcUlBRkJnQU5xRUFBZ0FFR3dBMm9nQVVHd0Eyb1FFaUFCUVlBRGFrR0kyZ1FnQVVHQUEyb1FrQUVnQUVIZ0Eyb2dBVUhnQTJvUUFDQUFRWkFFYWlBQlFaQUVhaEFTSUFGQjRBTnFRZWphQkNBQlFlQURhaENRQVF0c0FDQUFRY2piQkNBQkVKQUJJQUJCNEFCcVFhamNCQ0FCUWVBQWFoQ1FBU0FBUWNBQmFrR0kzUVFnQVVIQUFXb1FrQUVnQUVHZ0FtcEI2TjBFSUFGQm9BSnFFSkFCSUFCQmdBTnFRY2plQkNBQlFZQURhaENRQVNBQVFlQURha0dvM3dRZ0FVSGdBMm9Ra0FFTGlnSUFJQUFnQVJBQUlBQkJNR29nQVVFd2FoQVNJQUZCaU9BRUlBRVFrQUVnQUVIZ0FHb2dBVUhnQUdvUUFDQUFRWkFCYWlBQlFaQUJhaEFTSUFGQjRBQnFRZWpnQkNBQlFlQUFhaENRQVNBQVFjQUJhaUFCUWNBQmFoQUFJQUJCOEFGcUlBRkI4QUZxRUJJZ0FVSEFBV3BCeU9FRUlBRkJ3QUZxRUpBQklBQkJvQUpxSUFGQm9BSnFFQUFnQUVIUUFtb2dBVUhRQW1vUUVpQUJRYUFDYWtHbzRnUWdBVUdnQW1vUWtBRWdBRUdBQTJvZ0FVR0FBMm9RQUNBQVFiQURhaUFCUWJBRGFoQVNJQUZCZ0FOcVFZampCQ0FCUVlBRGFoQ1FBU0FBUWVBRGFpQUJRZUFEYWhBQUlBQkJrQVJxSUFGQmtBUnFFQklnQVVIZ0EycEI2T01FSUFGQjRBTnFFSkFCQzlnRUFDQUFRY0FCYWtISTVBUVFrZ0VnQVVIZ0FHcEJxT1VFRUpJQlFjamtCQ0FCUWVqbUJCQ1FBU0FCUWVBQWFpQUFRY0FCYWlBQ1FlQUFhaENUQVNBQ1FlQUFhaUFDUWVBQWFoQ1NBU0FDUWVBQWFrR281UVFnQWtIZ0FHb1FsQUVnQWtIZ0FHcEJ5T1FFSUFKQjRBQnFFSlFCSUFKQjRBQnFRY2prQkNBQ1FlQUFhaENRQVVIbzVnUWdBRUhJNXdRUWxBRkJ5T2NFUWFqb0JCQ1NBVUdvNkFSQnFPZ0VRWWpwQkJDVEFVR0k2UVJCaU9rRVFZanBCQkNUQVVHSTZRUkJ5T2NFUWVqcEJCQ1FBU0FDUWVBQWFpQUFRZUFBYWtISTZnUVFsQUZCeU9vRUlBQkI0QUJxUWNqcUJCQ1VBVUhJNmdRZ0FTQUNRY0FCYWhDUUFVR0k2UVFnQUVHbzZ3UVFrQUZCeU9vRUlBQVFrZ0VnQUVIbzZRUWdBQkNVQVNBQVFhanJCQ0FBRUpRQklBQkJxT3NFSUFBUWxBRWdBRUhBQVdwQnlPY0VJQUJCd0FGcUVKTUJJQUJCd0FGcUlBQkJ3QUZxRUpJQklBQkJ3QUZxUWNqa0JDQUFRY0FCYWhDVUFTQUFRY0FCYWtHbzZBUWdBRUhBQVdvUWxBRWdBVUhnQUdvZ0FFSEFBV29nQWhDVEFVR282d1FnQUVHSTdBUVFsQUZCaU93RVFjanFCRUdJN0FRUWtBRWdBRUhnQUdwQjZPa0VRZWptQkJDUUFVSG81Z1JCNk9ZRVFlam1CQkNUQVVHSTdBUkI2T1lFSUFCQjRBQnFFSlFCSUFJZ0FoQ1NBU0FDUWFqbEJDQUNFSlFCSUFCQndBRnFRWWptQkJDU0FTQUNRWWptQkNBQ0VKUUJJQUpCd0FGcUlBSkJ3QUZxSUFKQndBRnFFSk1CSUFKQndBRnFJQUlnQWtIQUFXb1FsQUVnQUVIQUFXb2dBRUhBQVdvZ0FoQ1RBVUhJNmdSQnlPb0VFSlVCUWNqcUJFSEk2Z1FnQWtIZ0FHb1Frd0VMc2dRQUlBQWdBUkNTQVNBQVFlQUFha0hJN1FRUWtnRkJ5TzBFUWFqdUJCQ1NBVUhJN1FRZ0FDQUJRZUFBYWhDVEFTQUJRZUFBYWlBQlFlQUFhaENTQVNBQlFlQUFhaUFCSUFGQjRBQnFFSlFCSUFGQjRBQnFRYWp1QkNBQlFlQUFhaENVQVNBQlFlQUFhaUFCUWVBQWFpQUJRZUFBYWhDVEFTQUJJQUZCaU84RUVKTUJRWWp2QkNBQlFZanZCQkNUQVNBQVFZanZCQ0FCUWNBQmFoQ1RBVUdJN3dSQjZPOEVFSklCSUFCQndBRnFRZWpzQkJDU0FVSG83d1FnQVVIZ0FHb2dBQkNVQVNBQUlBRkI0QUJxSUFBUWxBRWdBRUhBQVdvZ0FFSGdBR29nQUVIQUFXb1Frd0VnQUVIQUFXb2dBRUhBQVdvUWtnRWdBRUhBQVdwQnlPMEVJQUJCd0FGcUVKUUJJQUJCd0FGcVFlanNCQ0FBUWNBQmFoQ1VBU0FCUWVBQWFpQUFJQUJCNEFCcUVKUUJJQUJCNEFCcVFZanZCQ0FBUWVBQWFoQ1FBVUdvN2dSQnFPNEVRYWp1QkJDVEFVR283Z1JCcU80RVFhanVCQkNUQVVHbzdnUkJxTzRFUWFqdUJCQ1RBU0FBUWVBQWFrR283Z1FnQUVIZ0FHb1FsQUZCaU84RVFlanNCQ0FCUWVBQWFoQ1FBU0FCUWVBQWFpQUJRZUFBYWlBQlFlQUFhaENUQVNBQlFlQUFhaUFCUWVBQWFoQ1ZBU0FCUWNBQmFpQUJRY0FCYWhDU0FTQUJRY0FCYWlBQklBRkJ3QUZxRUpRQklBRkJ3QUZxUWVqdkJDQUJRY0FCYWhDVUFVSEk3UVJCeU8wRVFjanRCQkNUQVVISTdRUkJ5TzBFUWNqdEJCQ1RBU0FCUWNBQmFrSEk3UVFnQVVIQUFXb1FsQUVnQUVIQUFXcEI2T3dFSUFFUWtBRWdBU0FCSUFFUWt3RUxDQUFnQUNBQkVHZ0xiUUlCZndGL0lBQWdBUkM4QVNBQkVLTUJCRUFQQ3lBQlFjandCQkNuQVNBQlFhQUNhaUVDUVQ0aEF3SkFBMEJCeVBBRUlBSVFxUUlnQWtHZ0Ftb2hBaUFETEFEb2lRTUVRRUhJOEFRZ0FTQUNFS2dDSUFKQm9BSnFJUUlMSUFORkRRRWdBMEVCYXlFRERBQUxDd3VBQVFJQmZ3Ri9JQUlRaGdJZ0FCQlBCRUFQQ3lBQkVFOEVRQThMSUFGQm9BSnFJUU5CUGlFRUFrQURRQ0FBSUFNZ0FoQ2RBaUFEUWFBQ2FpRURJQVFzQU9pSkF3UkFJQUFnQXlBQ0VKMENJQU5Cb0FKcUlRTUxJQUlnQWhDS0FpQUVRUUZHRFFFZ0JFRUJheUVFREFBTEN5QUFJQU1nQWhDZEFpQUNJQUlRamdJTEVBQWdBRUhvOGdSQm9BUWdBUkNYQWd2c0JRQWdBQ0FBUVlBRGFrSEkrd1FRa0FFZ0FFR0FBMnBCaVBjRUVPNEJJQUJCaVBjRVFZajNCQkNUQVNBQUlBQkJnQU5xUWFqOEJCQ1RBVUdvL0FSQmlQY0VRWWozQkJDUUFVSEkrd1JCcVB3RUVPNEJRY2o3QkVHby9BUkJxUHdFRUpNQlFZajNCRUdvL0FSQmlQY0VFSlFCUWNqN0JFSEkrd1JCNlBjRUVKTUJJQUJCb0FKcUlBQkJ3QUZxUWNqN0JCQ1FBU0FBUWNBQmFrSEkrQVFRN2dFZ0FFR2dBbXBCeVBnRVFjajRCQkNUQVNBQVFhQUNhaUFBUWNBQmFrR28vQVFRa3dGQnFQd0VRY2o0QkVISStBUVFrQUZCeVBzRVFhajhCQkR1QVVISSt3UkJxUHdFUWFqOEJCQ1RBVUhJK0FSQnFQd0VRY2o0QkJDVUFVSEkrd1JCeVBzRVFhajVCQkNUQVNBQVFlQUFhaUFBUWVBRGFrSEkrd1FRa0FFZ0FFSGdBMnBCaVBvRUVPNEJJQUJCNEFCcVFZajZCRUdJK2dRUWt3RWdBRUhnQUdvZ0FFSGdBMnBCcVB3RUVKTUJRYWo4QkVHSStnUkJpUG9FRUpBQlFjajdCRUdvL0FRUTdnRkJ5UHNFUWFqOEJFR28vQVFRa3dGQmlQb0VRYWo4QkVHSStnUVFsQUZCeVBzRVFjajdCRUhvK2dRUWt3RkJpUGNFSUFBZ0FSQ1VBU0FCSUFFZ0FSQ1RBVUdJOXdRZ0FTQUJFSk1CUWVqM0JDQUFRWUFEYWlBQlFZQURhaENUQVNBQlFZQURhaUFCUVlBRGFpQUJRWUFEYWhDVEFVSG85d1FnQVVHQUEyb2dBVUdBQTJvUWt3RkI2UG9FUWRpVEFrR28vQVFRa0FGQnFQd0VJQUJCb0FKcUlBRkJvQUpxRUpNQklBRkJvQUpxSUFGQm9BSnFJQUZCb0FKcUVKTUJRYWo4QkNBQlFhQUNhaUFCUWFBQ2FoQ1RBVUdJK2dRZ0FFSEFBV29nQVVIQUFXb1FsQUVnQVVIQUFXb2dBVUhBQVdvZ0FVSEFBV29Ra3dGQmlQb0VJQUZCd0FGcUlBRkJ3QUZxRUpNQlFjajRCQ0FBUWVBQWFpQUJRZUFBYWhDVUFTQUJRZUFBYWlBQlFlQUFhaUFCUWVBQWFoQ1RBVUhJK0FRZ0FVSGdBR29nQVVIZ0FHb1Frd0ZCcVBrRUlBQkI0QU5xSUFGQjRBTnFFSk1CSUFGQjRBTnFJQUZCNEFOcUlBRkI0QU5xRUpNQlFhajVCQ0FCUWVBRGFpQUJRZUFEYWhDVEFRdU5BUUlCZndGL0lBQkIwUDBFRUk0Q0lBRVFoZ0pCd0FBc0FJajlCQ0lDQkVBZ0FrRUJSZ1JBSUFFZ0FDQUJFSWdDQlNBQlFkRDlCQ0FCRUlnQ0N3dEJQeUVEQWtBRFFDQUJJQUVRcmdJZ0F5d0FpUDBFSWdJRVFDQUNRUUZHQkVBZ0FTQUFJQUVRaUFJRklBRkIwUDBFSUFFUWlBSUxDeUFEUlEwQklBTkJBV3NoQXd3QUN3c2dBU0FCRUk0Q0Mrc0NBQ0FBUVpDQ0JSQ2tBaUFBUWRDR0JSQ1NBa0dRZ2dWQjBJWUZRWkNMQlJDSUFrR1Fpd1ZCMElZRkVJY0NRWkNMQlVHUWl3VVFvQUpCa0lzRlFkQ0dCVUdRaXdVUWlBSkJrSXNGUWRDR0JSQ3VBa0hRaGdWQjBJWUZFSTRDUVpDTEJVSFFqd1VRcndKQjBJOEZRWkNVQlJDdUFrSFFoZ1ZCMEk4RlFkQ1lCUkNJQWtIUW1BVkIwSVlGRUs4Q1FkQ0dCVUdRZ2dVUXJ3SkJrSUlGUVpDZEJSQ3ZBa0dRblFWQmtKUUZRWkNkQlJDSUFrR1FuUVZCa0pRRkVLOENRZENZQlVIUW1BVVFqZ0pCa0pRRlFkQ1lCVUdRbEFVUWlBSkJrSlFGUVpDTEJVR1FsQVVRaUFKQmtJc0ZRZENZQlJDT0FrSFFoZ1ZCa0lzRlFkQ0dCUkNJQWtIUWhnVkIwSVlGRUtFQ1FaQ2RCVUhRbUFWQmtKMEZFSWdDUVpDZEJVR1FuUVVRbndKQjBJOEZRWkNDQlVIUWp3VVFpQUpCMEk4RlFkQ1BCUkNnQWtIUWp3VkIwSVlGUWRDUEJSQ0lBa0hRandWQmtKMEZRZENQQlJDSUFrSFFqd1ZCa0pRRklBRVFpQUlMVFFCQjBLRUZFSVlDSUFCQnlKVURFS29DSUFGQjZKY0RFS3NDUWNpVkEwSG9sd05Ca0tZRkVLd0NRZENoQlVHUXBnVkIwS0VGRUlnQ1FkQ2hCVUhRb1FVUXNBSkIwS0VGSUFJUWtRSUxmUUJCMEtvRkVJWUNJQUJCeUpVREVLb0NJQUZCNkpjREVLc0NRY2lWQTBIb2x3TkJrSzhGRUt3Q1FkQ3FCVUdRcndWQjBLb0ZFSWdDSUFKQnlKVURFS29DSUFOQjZKY0RFS3NDUWNpVkEwSG9sd05Ca0s4RkVLd0NRZENxQlVHUXJ3VkIwS29GRUlnQ1FkQ3FCVUhRcWdVUXNBSkIwS29GSUFRUWtRSUxyUUVBUWRDekJSQ0dBaUFBUWNpVkF4Q3FBaUFCUWVpWEF4Q3JBa0hJbFFOQjZKY0RRWkM0QlJDc0FrSFFzd1ZCa0xnRlFkQ3pCUkNJQWlBQ1FjaVZBeENxQWlBRFFlaVhBeENyQWtISWxRTkI2SmNEUVpDNEJSQ3NBa0hRc3dWQmtMZ0ZRZEN6QlJDSUFpQUVRY2lWQXhDcUFpQUZRZWlYQXhDckFrSElsUU5CNkpjRFFaQzRCUkNzQWtIUXN3VkJrTGdGUWRDekJSQ0lBa0hRc3dWQjBMTUZFTEFDUWRDekJTQUdFSkVDQzkwQkFFSFF2QVVRaGdJZ0FFSElsUU1RcWdJZ0FVSG9sd01RcXdKQnlKVURRZWlYQTBHUXdRVVFyQUpCMEx3RlFaREJCVUhRdkFVUWlBSWdBa0hJbFFNUXFnSWdBMEhvbHdNUXF3SkJ5SlVEUWVpWEEwR1F3UVVRckFKQjBMd0ZRWkRCQlVIUXZBVVFpQUlnQkVISWxRTVFxZ0lnQlVIb2x3TVFxd0pCeUpVRFFlaVhBMEdRd1FVUXJBSkIwTHdGUVpEQkJVSFF2QVVRaUFJZ0JrSElsUU1RcWdJZ0IwSG9sd01RcXdKQnlKVURRZWlYQTBHUXdRVVFyQUpCMEx3RlFaREJCVUhRdkFVUWlBSkIwTHdGUWRDOEJSQ3dBa0hRdkFVZ0NCQ1JBZ3VOQWdCQjBNVUZFSVlDSUFCQnlKVURFS29DSUFGQjZKY0RFS3NDUWNpVkEwSG9sd05Ca01vRkVLd0NRZERGQlVHUXlnVkIwTVVGRUlnQ0lBSkJ5SlVERUtvQ0lBTkI2SmNERUtzQ1FjaVZBMEhvbHdOQmtNb0ZFS3dDUWRERkJVR1F5Z1ZCME1VRkVJZ0NJQVJCeUpVREVLb0NJQVZCNkpjREVLc0NRY2lWQTBIb2x3TkJrTW9GRUt3Q1FkREZCVUdReWdWQjBNVUZFSWdDSUFaQnlKVURFS29DSUFkQjZKY0RFS3NDUWNpVkEwSG9sd05Ca01vRkVLd0NRZERGQlVHUXlnVkIwTVVGRUlnQ0lBaEJ5SlVERUtvQ0lBbEI2SmNERUtzQ1FjaVZBMEhvbHdOQmtNb0ZFS3dDUWRERkJVR1F5Z1ZCME1VRkVJZ0NRZERGQlVIUXhRVVFzQUpCME1VRklBb1FrUUlMTEFBZ0FFSElsUU1RcWdJZ0FVSG9sd01RcXdKQnlKVURRZWlYQTBIUXpnVVFyQUpCME00RklBSVFzQUlMQzdTUEFYWUFRUUFMQkpCcEFRQUFRUWdMSUFFQUFBRC8vLy8vL2x2Ky93S2t2Vk1GMktFSkNOZzVNMGg5blNsVHArMXpBRUVvQ3pBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRZmdGQ3pDcnF2Ly8vLy8rdWYvL1U3SCsvNnNlSlBhdzlxRFNNR2UvRW9YemhFdDNaTmVzUzBPMnB4dExtdVovT2VvUkFSb0FRYWdHQ3pEOS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFRZGdHQ3pCR0Z6UWNOQi9mOVBFRTBRbW01bllLMWJhVlRHeEg1WTNBZzUyVHFZanJaeTJWR2JXRlBubWFxdVBLa3VXUG1CRUFRWWdIQ3pEOS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFRYmdIQ3pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRZWdIQ3pCVjFmLy8vMy8vM1AvL3FWai8vMVVQRW50WWUxQnBtTE5maWNKNXdxVTdzbXZXcFNIYjA0MGxUZk8vSFBXSUFBMEFRWmdJQ3pCVzFmLy8vMy8vM1AvL3FWai8vMVVQRW50WWUxQnBtTE5maWNKNXdxVTdzbXZXcFNIYjA0MGxUZk8vSFBXSUFBMEFRY2dJQ3pCUFZRWUFBQUFUTWdVQXhOWVlBRHk1VWJ2ZHNBMWVZRmZMbXgvdElXVWxpd01zWWdGNWpmSnNqT0tCdTUycjZ4RUFRZmdJQ3pCVjFmLy8vMy8vM1AvL3FWai8vMVVQRW50WWUxQnBtTE5maWNKNXdxVTdzbXZXcFNIYjA0MGxUZk8vSFBXSUFBMEFRYWdKQ3pDdXF2ei8vLy8xUS8zL1IrM3kvN2N5YVozcG9razY2QWQ2dXpLRE1mT283R25BOUtBZWpSVHZCZ0wvUGlhekNnUUFRZGdKQ3pDcjZ2Ly8vNzkvN3YvL1ZLei8vNm9IaVQyc1BhZzB6Tm12Uk9FODRkSWQyVFhyMHBEdDZjYVNwdmxmam5wRWdBWUFRZGdZQ3lBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCdUJ3TElBRUFBQUQvLy8vLy9sdisvd0trdlZNRjJLRUpDTmc1TTBoOW5TbFRwKzF6QUVIWUhBc2cvdi8vL3dFQUFBQUNTQU1BK3JlRVdQVlB2T3p2VDR5WmJ3WEZyRm14SkJnQVFmZ2NDeUJ0blBMemtPbVp5U05ja29mTDdXd3JqemxVY3BZVTB3VVIvMW1mMmRsSUJ3QkJtQjBMSVA3Ly8vOEJBQUFBQWtnREFQcTNoRmoxVDd6czcwK01tVzhGeGF4WnNTUVlBRUc0SFFzZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUWRnZEN5QUFBQUNBLy8vL2YvOHQvMzhCMHQ2cEF1elFCQVRzbkJta3ZzNlVxZFAyT1FCQitCMExJQUVBQUlELy8vOS8veTMvZndIUzNxa0M3TkFFQk95Y0dhUyt6cFNwMC9ZNUFFR1lIZ3NnOWYvLy93b0FBQUFMREJJQTMvUFpac1czQzVhbnQ0UE01WjA3Tm0zUHlRUUFRYmdlQ3lELy8vLy8vbHYrL3dLa3ZWTUYyS0VKQ05nNU0waDluU2xUcCsxekFBQUFBQUJCMkI0TElIejBGd3hjYmF1YzVYRkwvVDNwNFJ3RjFSMUhNTEp0RFdvN09uU1E2UTQvQUVINEhnc2dBQUFBZ1A4dC8zOEIwdDZwQXV6UUJBVHNuQm1rdnM2VXFkUDJPUUFBQUFBQVFaZ25DekR6L3d3QUFBQW5xZ29BTlB3eUFNeFRmNEFLYTNycGowZlhKTHJtdm43VHNTK3JlTDg3YzhtT2Z0NkRQVkZGMWdrQVFiaktBQXNnRVJFUkVSRVJFUkVSRVJBUUR3NE5EUXdMQ2drSUJ3Y0dCUVFEQWdFQkFRRUFRZWpMQUFzZ0VSRVJFUkVSRVJFUkVSQVFEdzRORFF3TENna0lCd2NHQlFRREFnRUJBUUVBUWZqTkFBdWdDUDcvLy84QkFBQUFBa2dEQVBxM2hGajFUN3pzNzArTW1XOEZ4YXhac1NRWUF3QUFBUDMvLy8vOEUvdi9DT3c0K3crSTVSd1lpSzJaMkhmWWZQbjF5RnV4ejRtcWRGYXc4LzY1Qm1CQUFTOEhKbnBtSmI4Tm1zNTBnMWt0QmVRc1RRa1F2ZE5wdGpDUnAyR2dzbitwKytTb0prdXp6d2hFOHl4Ni93YnNwRFVmaVJJS0N3S2d3aVdJSVFoOWYzRWNsOWpGR3RqSzNEbEh3VUhqN3FsN1lFODAwUndqbzJCa3hlNWY4aytwRk1TVmJwdFVnRkEySFozZEJrV2ZDWFJTSE14QUozV3dsWnNkZk12b1VpWmFzTWhkQTVsRFhPSUJEeEFYUFdkZm04WmpVNjBtODd4aFk4TmVtb0hjOE0rWmwyTWMyYXZ3Qkw2VkVDTHk1c2tnOWttc1FsTVJUY2pCeW5JbGNSYk9oV0w4M0laSFYrelZaSGtWbGhkSW1zQkNWelQ0VTNjek5icVVkMUN1RmxETStFazhHaVVYdHZMYkJlRTQwTjgyRy9OcjV6WTkzWUM0VlB3YlNjcmFpSEx5OXNWYk5lS2EzUVM3SERpWnlRbW0waVJsRnMyY2tpMzE0ejlHQkt1eGMvcTlEbmo5OWhjbTVqSTdkNXhRRGtodlY4Zmg5NWZyc2J3UVgrbHgyaXRuTTZvbllDd3U3azZCVWtUekZ4SnZyK1U1TERNZm1wL2NtR1h5cU5CTzBzZXl3M0FXWm9FU0VRWWU0aUs2aC9EZFBBSTRCa3lsTC95WFgwTnJxNVRUVzUwSWg1WjdBYTRVaGZUdnNBQ2RZRm80T1pTcEVPVUlyaXJTOC9BMXc3QzRtbTU3WU12NXJHUXR0dFlHcWVJSzlkVmpkQWx1VCtkVUZaQmZLMERYQ29WUis0SFBMNjM2NEN6Wjk5bFZqODlabkEzVllIVUJ2V08zOW1RenErZWV3UzhhditWVWRxdkQzSkV2SkZsMGZlM09KeWg1NUJ3UGZOd0tlTDU2NUNUWGtnMU1BVHZHWjVRdXdXTGtHa052MW5GRlhWOVIrdjNwWUZQTzl3M2t6QlZoanRNTm5nWDZ3b0J6WTl1NTRtRXRXZzBRMnQzMnBrK25zWGFETE5Sclc4TTdXaEVVaXR3SDlzYWNyWGpKREFpc1ZuK3l4ejdEZ3llT2ovUDVYUUtFcW1CZHlkTzFJYVp2QkFrUFQ3c3VwNXdONW9GczVhVDg0Z1A0eHd0RUxBQjc5UVpNK1dtNFNLOUVRbGltWUlLbEN5RkJhTWkvRCtqQjVzdFBUNFkwVHVwa0g0OVJMYitTajZtaEZtVHBxaUtIU2R4RTI2Z1JCdENCUi9sL2RRZ0J1NEY5SUpIS3M1NGtOM3hSVmF4WE1RZERVdlVhTGh4VTNpdnN3d05nMFhtV3B0UUU2UEEycFZWQzZMd01OZDZUYjNGYWVaNWJjdWk3TVRaRnFDdENicUM3akdaVDRQWlhTQ2dQbkhuTmx3TkVDL3hXZWFiZUp6S3ZHSzlKTnZ2eHNrelI4Nnh5dXFhbUNVMW4vYU96ZWVJZVMvSnRLVXkxRTl5bUo5alNsVVI1UlJEV05HcUVscldqdUVCZlp6eUl1aTdXMEhQZ2Y1bGRmaUtLamY4WjZNTzhRZUJQa3F5TExCa2hHaHZxOUNkRk80NjZaRGdBTFUrZTJSams5TDhHY2QvcE9KV2UrMGR2STBUdDZmM2ZUaThGdkZFbTBLbzJmY0NEYzdEVThJZG5IMDl2Q0lrc2RHRDFGMk8vYUNtbldHTjg5QmNNWEcycm5PVnhTLzA5NmVFY0JkVWRSekN5YlExcU96cDBrT2tPUHdCQm1OWUFDNkFJL3YvLy93RUFBQUFDU0FNQStyZUVXUFZQdk96dlQ0eVpid1hGckZteEpCai8vLy8vQUFBQUFBR2tBUUQ5VzBLcytpZGU5dmNueHN5M2dtTFdyRmdTREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFFRzQzZ0FMZ0FJQWdFREFJS0JnNEJDUVVOQXdzSER3Q0loSXlDaW9hT2dZbUZqWU9MaDQrQVNFUk1Ra3BHVGtGSlJVMURTMGRQUU1qRXpNTEt4czdCeWNYTnc4dkh6OEFvSkN3aUtpWXVJU2tsTFNNckp5OGdxS1Nzb3FxbXJxR3BwYTJqcTZldm9HaGtiR0pxWm01aGFXVnRZMnRuYjJEbzVPemk2dWJ1NGVubDdlUHI1Ky9nR0JRY0Vob1dIaEVaRlIwVEd4Y2ZFSmlVbkpLYWxwNlJtWldkazV1WG41QllWRnhTV2xaZVVWbFZYVk5iVjE5UTJOVGMwdHJXM3RIWjFkM1QyOWZmMERnMFBESTZOajR4T1RVOU16czNQekM0dEx5eXVyYStzYm0xdmJPN3Q3K3dlSFI4Y25wMmZuRjVkWDF6ZTNkL2NQajAvUEw2OXY3eCtmWDk4L3YzLy9BRUc0NmdBTE1LcnEvLy8vdjMvdS8vOVVyUC8vcWdlSlBhdzlxRFRNMmE5RTRUemgwaDNaTmV2U2tPM3B4cEttK1YrT2VrU0FCZ0JCNk9vQUN6QlYxZi8vLzMvLzNQLy9xVmovLzFVUEVudFllMUJwbUxOZmljSjV3cVU3c212V3BTSGIwNDBsVGZPL0hQV0lBQTBBUWRqdkFBc3dxdXIvLy8rL2YrNy8vMVNzLy8rcUI0azlyRDJvTk16WnIwVGhQT0hTSGRrMTY5S1E3ZW5Ha3FiNVg0NTZSSUFHQUVHSTh3QUxZUFAvREFBQUFDZXFDZ0EwL0RJQXpGTi9nQXByZXVtUFI5Y2t1dWErZnRPeEw2dDR2enR6eVk1KzNvTTlVVVhXQ2ZQL0RBQUFBQ2VxQ2dBMC9ESUF6Rk4vZ0FwcmV1bVBSOWNrdXVhK2Z0T3hMNnQ0dnp0enlZNSszb005VVVYV0NRQkJ5TGtCQ3lBUkVSRVJFUkVSRVJFUkVCQVBEZzBOREFzS0NRZ0hCd1lGQkFNQ0FRRUJBUUJCaUx3QkN5QVJFUkVSRVJFUkVSRVJFQkFQRGcwTkRBc0tDUWdIQndZRkJBTUNBUUVCQVFCQnFNQUJDNkFJL3YvLy93RUFBQUFDU0FNQStyZUVXUFZQdk96dlQ0eVpid1hGckZteEpCZ0RBQUFBL2YvLy8vd1QrLzhJN0RqN0Q0amxIQmlJclpuWWQ5aDgrZlhJVzdIUGlhcDBWckR6L3JrR1lFQUJMd2NtZW1ZbHZ3MmF6blNEV1MwRjVDeE5DUkM5MDJtMk1KR25ZYUN5ZjZuNzVLZ21TN1BQQ0VUekxIci9CdXlrTlIrSkVnb0xBcURDSllnaENIMS9jUnlYMk1VYTJNcmNPVWZCUWVQdXFYdGdUelRSSENPallHVEY3bC95VDZrVXhKVnVtMVNBVURZZG5kMEdSWjhKZEZJY3pFQW5kYkNWbXgxOHkraFNKbHF3eUYwRG1VTmM0Z0VQRUJjOVoxK2J4bU5UclNienZHRmp3MTZhZ2R6d3o1bVhZeHpacS9BRXZwVVFJdkxteVNEMlNheENVeEZOeU1IS2NpVnhGczZGWXZ6Y2hrZFg3TlZrZVJXV0YwaWF3RUpYTlBoVGR6TTF1cFIzVUs0V1VNejRTVHdhSlJlMjh0c0Y0VGpRM3pZYjgydm5OajNkZ0xoVS9CdEp5dHFJY3ZMMnhWczE0cHJkQkxzY09KbkpDYWJTSkdVV3paeVNMZlhqUDBZRXE3RnorcjBPZVAzMkZ5Ym1NanQzbkZBT1NHOVh4K0gzbCt1eHZCQmY2WEhhSzJjenFpZGdMQzd1VG9GU1JQTVhFbSt2NVRrc014K2FuOXlZWmZLbzBFN1N4N0xEY0JabWdSSVJCaDdpSXJxSDhOMDhBamdHVEtVdi9KZGZRMnVybE5OYm5RaUhsbnNCcmhTRjlPK3dBSjFnV2pnNWxLa1E1UWl1S3RMejhEWERzTGlhYm50Z3kvbXNaQzIyMWdhcDRncjExV04wQ1c1UDUxUVZrRjhyUU5jS2hWSDdnYzh2cmZyZ0xObjMyVldQejFtY0RkVmdkUUc5WTdmMlpET3I1NTdCTHhxLzVWUjJxOFBja1M4a1dYUjk3YzRuS0hua0hBOTgzQXA0dm5ya0pOZVNEVXdCTzhabmxDN0JZdVFhUTIvV2NVVmRYMUg2L2VsZ1U4NzNEZVRNRldHTzB3MmVCZnJDZ0hOajI3bmlZUzFhRFJEYTNmYW1UNmV4ZG9NczFHdGJ3enRhRVJTSzNBZjJ4cHl0ZU1rTUNLeFdmN0xIUHNPREo0NlA4L2xkQW9TcVlGM0owN1VocG04RUNROVB1eTZubkEzbWdXemxwUHppQS9qSEMwUXNBSHYxQmt6NWFiaElyMFJDV0taZ2dxVUxJVUZveUw4UDZNSG15MDlQaGpSTzZtUWZqMUV0djVLUHFhRVdaT21xSW9kSjNFVGJxQkVHMElGSCtYOTFDQUc3Z1gwZ2tjcXpuaVEzZkZGVnJGY3hCME5TOVJvdUhGVGVLK3pEQTJEUmVaYW0xQVRvOERhbFZVTG92QXcxM3BOdmNWcDVubHR5NkxzeE5rV29LMEp1b0x1TVpsUGc5bGRJS0ErY2VjMlhBMFFML0ZaNXB0NG5NcThZcjBrMisvR3lUTkh6ckhLNnBxWUpUV2Y5bzdONTRoNUw4bTBwVExVVDNLWW4yTktWUkhsRkVOWTBhb1NXdGFPNFFGOW5QSWk2THRiUWMrQi9tVjErSW9xTi94bm93N3hCNEUrU3JJc3NHU0VhRytyMEowVTdqcnBrT0FBdFQ1N1pHT1QwdndaeDMrazRsWjc3UjI4alJPM3AvZDlPTHdXOFVTYlFxalo5d0lOenNOVHdoMmNmVDI4SWlTeDBZUFVYWTc5b0thZFlZM3owRnd4Y2JhdWM1WEZML1QzcDRSd0YxUjFITUxKdERXbzdPblNRNlE0L0FFSEl5QUVMb0FqKy8vLy9BUUFBQUFKSUF3RDZ0NFJZOVUrODdPOVBqSmx2QmNXc1diRWtHUC8vLy84QUFBQUFBYVFCQVAxYlFxejZKMTcyOXlmR3pMZUNZdGFzV0JJTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFRZWpRQVF1QUFnQ0FRTUFnb0dEZ0VKQlEwREN3Y1BBSWlFaklLS2hvNkJpWVdOZzR1SGo0QklSRXhDU2taT1FVbEZUVU5MUjA5QXlNVE13c3JHenNISnhjM0R5OGZQd0Nna0xDSXFKaTRoS1NVdEl5c25MeUNvcEt5aXFxYXVvYW1scmFPcnA2K2dhR1JzWW1wbWJtRnBaVzFqYTJkdllPams3T0xxNXU3aDZlWHQ0K3ZuNytBWUZCd1NHaFllRVJrVkhSTWJGeDhRbUpTY2twcVducEdabFoyVG01ZWZrRmhVWEZKYVZsNVJXVlZkVTF0WFgxRFkxTnpTMnRiZTBkblYzZFBiMTkvUU9EUThNam8yUGpFNU5UMHpPemMvTUxpMHZMSzZ0cjZ4dWJXOXM3dTN2N0I0ZEh4eWVuWitjWGwxZlhON2QzOXcrUFQ4OHZyMi92SDU5ZjN6Ky9mLzhBUVpqZUFRdWdDUDcvLy84QkFBQUFBa2dEQVBxM2hGajFUN3pzNzArTW1XOEZ4YXhac1NRWUF3QUFBUDMvLy8vOEUvdi9DT3c0K3crSTVSd1lpSzJaMkhmWWZQbjF5RnV4ejRtcWRGYXc4LzY1Qm1CQUFTOEhKbnBtSmI4Tm1zNTBnMWt0QmVRc1RRa1F2ZE5wdGpDUnAyR2dzbitwKytTb0prdXp6d2hFOHl4Ni93YnNwRFVmaVJJS0N3S2d3aVdJSVFoOWYzRWNsOWpGR3RqSzNEbEh3VUhqN3FsN1lFODAwUndqbzJCa3hlNWY4aytwRk1TVmJwdFVnRkEySFozZEJrV2ZDWFJTSE14QUozV3dsWnNkZk12b1VpWmFzTWhkQTVsRFhPSUJEeEFYUFdkZm04WmpVNjBtODd4aFk4TmVtb0hjOE0rWmwyTWMyYXZ3Qkw2VkVDTHk1c2tnOWttc1FsTVJUY2pCeW5JbGNSYk9oV0w4M0laSFYrelZaSGtWbGhkSW1zQkNWelQ0VTNjek5icVVkMUN1RmxETStFazhHaVVYdHZMYkJlRTQwTjgyRy9OcjV6WTkzWUM0VlB3YlNjcmFpSEx5OXNWYk5lS2EzUVM3SERpWnlRbW0waVJsRnMyY2tpMzE0ejlHQkt1eGMvcTlEbmo5OWhjbTVqSTdkNXhRRGtodlY4Zmg5NWZyc2J3UVgrbHgyaXRuTTZvbllDd3U3azZCVWtUekZ4SnZyK1U1TERNZm1wL2NtR1h5cU5CTzBzZXl3M0FXWm9FU0VRWWU0aUs2aC9EZFBBSTRCa3lsTC95WFgwTnJxNVRUVzUwSWg1WjdBYTRVaGZUdnNBQ2RZRm80T1pTcEVPVUlyaXJTOC9BMXc3QzRtbTU3WU12NXJHUXR0dFlHcWVJSzlkVmpkQWx1VCtkVUZaQmZLMERYQ29WUis0SFBMNjM2NEN6Wjk5bFZqODlabkEzVllIVUJ2V08zOW1RenErZWV3UzhhditWVWRxdkQzSkV2SkZsMGZlM09KeWg1NUJ3UGZOd0tlTDU2NUNUWGtnMU1BVHZHWjVRdXdXTGtHa052MW5GRlhWOVIrdjNwWUZQTzl3M2t6QlZoanRNTm5nWDZ3b0J6WTl1NTRtRXRXZzBRMnQzMnBrK25zWGFETE5Sclc4TTdXaEVVaXR3SDlzYWNyWGpKREFpc1ZuK3l4ejdEZ3llT2ovUDVYUUtFcW1CZHlkTzFJYVp2QkFrUFQ3c3VwNXdONW9GczVhVDg0Z1A0eHd0RUxBQjc5UVpNK1dtNFNLOUVRbGltWUlLbEN5RkJhTWkvRCtqQjVzdFBUNFkwVHVwa0g0OVJMYitTajZtaEZtVHBxaUtIU2R4RTI2Z1JCdENCUi9sL2RRZ0J1NEY5SUpIS3M1NGtOM3hSVmF4WE1RZERVdlVhTGh4VTNpdnN3d05nMFhtV3B0UUU2UEEycFZWQzZMd01OZDZUYjNGYWVaNWJjdWk3TVRaRnFDdENicUM3akdaVDRQWlhTQ2dQbkhuTmx3TkVDL3hXZWFiZUp6S3ZHSzlKTnZ2eHNrelI4Nnh5dXFhbUNVMW4vYU96ZWVJZVMvSnRLVXkxRTl5bUo5alNsVVI1UlJEV05HcUVscldqdUVCZlp6eUl1aTdXMEhQZ2Y1bGRmaUtLamY4WjZNTzhRZUJQa3F5TExCa2hHaHZxOUNkRk80NjZaRGdBTFUrZTJSams5TDhHY2QvcE9KV2UrMGR2STBUdDZmM2ZUaThGdkZFbTBLbzJmY0NEYzdEVThJZG5IMDl2Q0lrc2RHRDFGMk8vYUNtbldHTjg5QmNNWEcycm5PVnhTLzA5NmVFY0JkVWRSekN5YlExcU96cDBrT2tPUHdCQnVPWUJDNkFJL3YvLy93RUFBQUFDU0FNQStyZUVXUFZQdk96dlQ0eVpid1hGckZteEpCai8vLy8vQUFBQUFBR2tBUUQ5VzBLcytpZGU5dmNueHN5M2dtTFdyRmdTREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFFSFk3Z0VMZ0FJQWdFREFJS0JnNEJDUVVOQXdzSER3Q0loSXlDaW9hT2dZbUZqWU9MaDQrQVNFUk1Ra3BHVGtGSlJVMURTMGRQUU1qRXpNTEt4czdCeWNYTnc4dkh6OEFvSkN3aUtpWXVJU2tsTFNNckp5OGdxS1Nzb3FxbXJxR3BwYTJqcTZldm9HaGtiR0pxWm01aGFXVnRZMnRuYjJEbzVPemk2dWJ1NGVubDdlUHI1Ky9nR0JRY0Vob1dIaEVaRlIwVEd4Y2ZFSmlVbkpLYWxwNlJtWldkazV1WG41QllWRnhTV2xaZVVWbFZYVk5iVjE5UTJOVGMwdHJXM3RIWjFkM1QyOWZmMERnMFBESTZOajR4T1RVOU16czNQekM0dEx5eXVyYStzYm0xdmJPN3Q3K3dlSFI4Y25wMmZuRjVkWDF6ZTNkL2NQajAvUEw2OXY3eCtmWDk4L3YzLy9BRUhZaHdJTGtBRVdERlA5a0llelhQWC9kcGxuL0JkNHdhRTdGTWVWVHhWSDU5RHp6V3F1OEVEMDJ5SE1iczd0ZGZzTG5rRjNBUkp4SXVjTTFaT3N1bzc5R0hrYVl5S016aVVIVnhOZldkMlVVVUJRS1Zpc1VjQlpBSzAvakJ3T2FxSUlVUHcrdkF2OS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFRZWlJQWd1UUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDMvQWdBQUFBbDJBZ0FNeEFzQTlPdTZXTWRUVjVoSVgwVlhVbkJUV001M2JleFdvcGNhQjF5VDVJRDZ3MTcyRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkIrSWtDQzZBQ0VBcVVBcUtQOHZVYWxyU0hKdnYxczREbEtqNjFrNmloNmE0OEdwMlpsSmhyTm1NWVk3ZG5iOWU4VUVPU2tZRUZCdllqbm5YQXFhWERZTTI4bmNXZ3FnWjRodUlZZnJFN1o3TkJoY3kyR2h0SGhSWHlEdTIyd3ZQdFlITUpLcElSU2t4SllQZ0tjMHhhbkRaZUgvcDhXVnBqQ3Fwc2hlYm5YMGtOYnVtMTc3dWlKZS93ZGFuVEIrWGFnSDZPL1lNQVhiQmszNUw4d0szY1lSUXJDaWVxR0tEcjVEdHFySzJHT3FNOXlVNWNTWG50eWp5a1VGZ1g1L0liM21PaHdpc0wvZjhDQUFBQUNYWUNBQXpFQ3dEMDY3cFl4MU5YbUVoZlJWZFNjRk5Zem5kdDdGYWlseG9IWEpQa2dQckRYdllWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1lqQUlMb0FJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5L3dJQUFBQUpkZ0lBRE1RTEFQVHJ1bGpIVTFlWVNGOUZWMUp3VTFqT2QyM3NWcUtYR2dkY2srU0Erc05lOWhVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFiaU9BZ3ZBQlAzL0FnQUFBQWwyQWdBTXhBc0E5T3U2V01kVFY1aElYMFZYVW5CVFdNNTNiZXhXb3BjYUIxeVQ1SUQ2dzE3MkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQitKSUNDMkJVVlFFQUFBQUVHQUVBc0RvRkFGQ0ZieWM4Slh5MVBHTUN0ZXN4N05FaWJxSk0wZkltWVpIVGxtVUFHbGU0K3hjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRZGlUQWd0Zy9mOENBQUFBQ1hZQ0FBekVDd0QwNjdwWXgxTlhtRWhmUlZkU2NGTll6bmR0N0ZhaWx4b0hYSlBrZ1ByRFh2WVYvZjhDQUFBQUNYWUNBQXpFQ3dEMDY3cFl4MU5YbUVoZlJWZFNjRk5Zem5kdDdGYWlseG9IWEpQa2dQckRYdllWQUVHNGxBSUxZUFAvREFBQUFDZXFDZ0EwL0RJQXpGTi9nQXByZXVtUFI5Y2t1dWErZnRPeEw2dDR2enR6eVk1KzNvTTlVVVhXQ2ZQL0RBQUFBQ2VxQ2dBMC9ESUF6Rk4vZ0FwcmV1bVBSOWNrdXVhK2Z0T3hMNnQ0dnp0enlZNSszb005VVVYV0NRQkJpTllDQzZBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR28yQUlMb0FJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFjajFBZ3VnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQjZJa0RDMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQkFBQUJBQUVCQUVISXR3UUxZUDMvQWdBQUFBbDJBZ0FNeEFzQTlPdTZXTWRUVjVoSVgwVlhVbkJUV001M2JleFdvcGNhQjF5VDVJRDZ3MTcyRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJxTGdFQzJEOS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVlpNUJBdGcvZjhDQUFBQUNYWUNBQXpFQ3dEMDY3cFl4MU5YbUVoZlJWZFNjRk5Zem5kdDdGYWlseG9IWEpQa2dQckRYdllWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFSG91UVFMWVAzL0FnQUFBQWwyQWdBTXhBc0E5T3U2V01kVFY1aElYMFZYVW5CVFdNNTNiZXhXb3BjYUIxeVQ1SUQ2dzE3MkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCeUxvRUMyRDkvd0lBQUFBSmRnSUFETVFMQVBUcnVsakhVMWVZU0Y5RlYxSndVMWpPZDIzc1ZxS1hHZ2RjaytTQStzTmU5aFVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFhaTdCQXRnL2Y4Q0FBQUFDWFlDQUF6RUN3RDA2N3BZeDFOWG1FaGZSVmRTY0ZOWXpuZHQ3RmFpbHhvSFhKUGtnUHJEWHZZVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdJdkFRTFlQMy9BZ0FBQUFsMkFnQU14QXNBOU91NldNZFRWNWhJWDBWWFVuQlRXTTUzYmV4V29wY2FCMXlUNUlENncxNzJGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQjZMd0VDMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCeDhIR0c1TWtEemRLbHpSOUdJcXRkbFJ1RjA2OUNjRmlleTdvQnZnNjJqdEpRMElOdWZma0RRWWRqVkdVZzhCZ0FRY2k5QkF0Z3cwVjFodVRKRFluVnBZVXlVeUx6S2l4K216Qm1DSWhRSkJDSWZvd2JEYUpva052aVQvRGtGRHFGWkJVL2JlVVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHb3ZnUUxZR1hVR2JOU2xRZ0hFNE1LdFpKZmFjYVBJaGZSekR6b2wrNHAzTExLcmx1alRjNnFYZXFUNHh6clp2dXdEeUx5Q0ViVzVVeXRhdmF5N0h4Si9HdWdRbGlVMDVrbDFKVkl6OURvcUVDNm5CdkJpZDZnNWNzVE9DNnZmNFNJMnU4T0VRQkJpTDhFQzJEYUQ2TmFvcWZQZTN4K2tpckIzaGZjOGI1T2E5aU5DQytuMUhUYWh5REswUjI4enBabVdhSXQwb2Y5dSsxK0t3N2FENk5hb3FmUGUzeCtraXJCM2hmYzhiNU9hOWlOQ0MrbjFIVGFoeURLMFIyOHpwWm1XYUl0MG9mOXUrMStLdzRBUWVpL0JBdGdQK1M4RGZVODJJS1BBWjNmVXo2Qm9vSGhaVHlseXZER2xmNVFqVkxQSlhWcmlubjBVTzJGU3IzdStHejlvQjBYYk1aQzhnckRKamR3L3JiUnFzRXFmS0lVUzdyN0IwQ2dLUlEwWmpKOFVlOXJJdEpPWmJxVkFOMzNoc3pzY09NQ0FFSEl3QVFMWVAzL0FnQUFBQWwyQWdBTXhBc0E5T3U2V01kVFY1aElYMFZYVW5CVFdNNTNiZXhXb3BjYUIxeVQ1SUQ2dzE3MkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCcU1FRUMyRG9aSXA1R3pieE1DcGF6bjZyM2JqejkzY1Z4anJLcUJhYkF2MTArQzlxd200Y2NHQm10elkyWUdFYkpLdWtHd1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFZakNCQXRnY2ZCeGh1VEpBODNTcGMwZlJpS3JYWlViaGRPdlFuQlluc3U2QWI0T3RvN1NVTkNEYm4zNUEwR0hZMVJsSVBBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUhvd2dRTFlEcTZqWGtiTnZ2c0xGcUdrYmpkQU1HTzJpc2o4WS9BRGlGSHl2SEdQTUhWQkZ4N3YwY3FJa2RaWHh6bGhQRVFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQnlNTUVDMkN1cXZ6Ly8vLzFRLzMvUiszeS83Y3lhWjNwb2trNjZBZDZ1ektETWZPbzdHbkE5S0FlalJUdkJnTC9QaWF6Q2dRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRYWpFQkF0Z3cwVjFodVRKRFluVnBZVXlVeUx6S2l4K216Qm1DSWhRSkJDSWZvd2JEYUpva052aVQvRGtGRHFGWkJVL2JlVVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHSXhRUUxZUDMvQWdBQUFBbDJBZ0FNeEFzQTlPdTZXTWRUVjVoSVgwVlhVbkJUV001M2JleFdvcGNhQjF5VDVJRDZ3MTcyRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkI2TVVFQzJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDkvd0lBQUFBSmRnSUFETVFMQVBUcnVsakhVMWVZU0Y5RlYxSndVMWpPZDIzc1ZxS1hHZ2RjaytTQStzTmU5aFVBUWNqR0JBdGdycXI4Ly8vLzlVUDkvMGZ0OHYrM01tbWQ2YUpKT3VnSGVyc3lnekh6cU94cHdQU2dIbzBVN3dZQy96NG1zd29FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR294d1FMWU5HYVhLVmRXQzgrZzRIQmhqMGhsRUl5TjJLTHlFUW9PQmcrRUJuOUtxMlN1ZkI4ckU5T2VSM0lYb0o5L0pMVkM5b1BvMXFpcDg5N2ZINlNLc0hlRjl6eHZrNXIySTBJTDZmVWROcUhJTXJSSGJ6T2xtWlpvaTNTaC8yNzdYNHJEZ0JCaU1nRUMyRFJtbHlsWFZndlBvT0J3WVk5SVpSQ01qZGlpOGhFS0RnWVBoQVovU3F0a3Jud2ZLeFBUbmtkeUY2Q2ZmeVMxUXZSbWx5bFhWZ3ZQb09Cd1lZOUlaUkNNamRpaThoRUtEZ1lQaEFaL1NxdGtybndmS3hQVG5rZHlGNkNmZnlTMVFzQVFlaklCQXRnMmcraldxS256M3Q4ZnBJcXdkNFgzUEcrVG12WWpRZ3ZwOVIwMm9jZ3l0RWR2TTZXWmxtaUxkS0gvYnZ0ZmlzTzBacGNwVjFZTHo2RGdjR0dQU0dVUWpJM1lvdklSQ2c0R0Q0UUdmMHFyWks1OEh5c1QwNTVIY2hlZ24zOGt0VUxBRUhJeVFRTFlQMy9BZ0FBQUFsMkFnQU14QXNBOU91NldNZFRWNWhJWDBWWFVuQlRXTTUzYmV4V29wY2FCMXlUNUlENncxNzJGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQnFNb0VDMkJ4OEhHRzVNa0R6ZEtselI5R0lxdGRsUnVGMDY5Q2NGaWV5N29Cdmc2Mmp0SlEwSU51ZmZrRFFZZGpWR1VnOEJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWWpMQkF0ZzZHU0tlUnMyOFRBcVdzNStxOTI0OC9kM0ZjWTZ5cWdXbXdMOWRQZ3Zhc0p1SEhCZ1pyYzJObUJoR3lTcnBCc0ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVIb3l3UUxZT2hraW5rYk52RXdLbHJPZnF2ZHVQUDNkeFhHT3Nxb0Zwc0MvWFQ0TDJyQ2JoeHdZR2EzTmpaZ1lSc2txNlFiQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJ5TXdFQzJEOS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUWFqTkJBdGdjZkJ4aHVUSkE4M1NwYzBmUmlLclhaVWJoZE92UW5CWW5zdTZBYjRPdG83U1VOQ0RibjM1QTBHSFkxUmxJUEFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR0l6Z1FMWVAzL0FnQUFBQWwyQWdBTXhBc0E5T3U2V01kVFY1aElYMFZYVW5CVFdNNTNiZXhXb3BjYUIxeVQ1SUQ2dzE3MkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCNk00RUMyQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURvWklwNUd6YnhNQ3Bhem42cjNiano5M2NWeGpyS3FCYWJBdjEwK0M5cXdtNGNjR0JtdHpZMllHRWJKS3VrR3dVQVFjalBCQXRnT3JxTmVSczIrK3dzV29hUnVOMEF3WTdhS3lQeGo4QU9JVWZLOGNZOHdkVUVYSHUvUnlvaVIxbGZIT1dFOFJBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdvMEFRTFlHekdRdklLd3lZM2NQNjIwYXJCS255aUZFdTYrd2RBb0NrVU5HWXlmRkh2YXlMU1RtVzZsUURkOTRiTTdIRGpBai9rdkEzMVBOaUNqd0dkMzFNK2dhS0I0V1U4cGNyd3hwWCtVSTFTenlWMWE0cDU5RkR0aFVxOTd2aHMvYUFkRndCQmlORUVDMkRhRDZOYW9xZlBlM3gra2lyQjNoZmM4YjVPYTlpTkNDK24xSFRhaHlESzBSMjh6cFptV2FJdDBvZjl1KzErS3c3YUQ2TmFvcWZQZTN4K2tpckIzaGZjOGI1T2E5aU5DQytuMUhUYWh5REswUjI4enBabVdhSXQwb2Y5dSsxK0t3NEFRZWpSQkF0Z1J0YmxUSzFxOXJMc2ZFbjhhNkJDV0pUVG1TWFVsVWpQME9pb1FMcWNHOEdKM3FEbHl4TTRMcTkvaElqYTd3NFJaZFFaczFLVkNBY1Rnd3Exa2w5cHhvOGlGOUhNUE9pWDdpbmNzc3F1VzZOTnpxcGQ2cFBqSE90bSs3QVBJdklJQUVISTBnUUxZUDMvQWdBQUFBbDJBZ0FNeEFzQTlPdTZXTWRUVjVoSVgwVlhVbkJUV001M2JleFdvcGNhQjF5VDVJRDZ3MTcyRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJxTk1FQzJEOS93SUFBQUFKZGdJQURNUUxBUFRydWxqSFUxZVlTRjlGVjFKd1Uxak9kMjNzVnFLWEdnZGNrK1NBK3NOZTloVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVlqVUJBdGcvZjhDQUFBQUNYWUNBQXpFQ3dEMDY3cFl4MU5YbUVoZlJWZFNjRk5Zem5kdDdGYWlseG9IWEpQa2dQckRYdllWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFSG8xQVFMWUs2cS9QLy8vL1ZEL2Y5SDdmTC90ekpwbmVtaVNUcm9CM3E3TW9NeDg2anNhY0Qwb0I2TkZPOEdBdjgrSnJNS0JBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCeU5VRUMyQ3VxdnovLy8vMVEvMy9SKzN5LzdjeWFaM3Bva2s2NkFkNnV6S0RNZk9vN0duQTlLQWVqUlR2QmdML1BpYXpDZ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFhaldCQXRncnFyOC8vLy85VVA5LzBmdDh2KzNNbW1kNmFKSk91Z0hlcnN5Z3pIenFPeHB3UFNnSG8wVTd3WUMvejRtc3dvRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdJMXdRTFlQMy9BZ0FBQUFsMkFnQU14QXNBOU91NldNZFRWNWhJWDBWWFVuQlRXTTUzYmV4V29wY2FCMXlUNUlENncxNzJGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQjZOY0VDMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCeDhIR0c1TWtEemRLbHpSOUdJcXRkbFJ1RjA2OUNjRmlleTdvQnZnNjJqdEpRMElOdWZma0RRWWRqVkdVZzhCZ0FRY2pZQkF0Z3cwVjFodVRKRFluVnBZVXlVeUx6S2l4K216Qm1DSWhRSkJDSWZvd2JEYUpva052aVQvRGtGRHFGWkJVL2JlVVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHbzJRUUxZRWJXNVV5dGF2YXk3SHhKL0d1Z1FsaVUwNWtsMUpWSXo5RG9xRUM2bkJ2QmlkNmc1Y3NUT0M2dmY0U0kydThPRVdYVUdiTlNsUWdIRTRNS3RaSmZhY2FQSWhmUnpEem9sKzRwM0xMS3JsdWpUYzZxWGVxVDR4enJadnV3RHlMeUNBQkJpTm9FQzJEUm1seWxYVmd2UG9PQndZWTlJWlJDTWpkaWk4aEVLRGdZUGhBWi9TcXRrcm53Zkt4UFRua2R5RjZDZmZ5UzFRdlJtbHlsWFZndlBvT0J3WVk5SVpSQ01qZGlpOGhFS0RnWVBoQVovU3F0a3Jud2ZLeFBUbmtkeUY2Q2ZmeVMxUXNBUWVqYUJBdGdiTVpDOGdyREpqZHcvcmJScXNFcWZLSVVTN3I3QjBDZ0tSUTBaako4VWU5ckl0Sk9aYnFWQU4zM2hzenNjT01DUCtTOERmVTgySUtQQVozZlV6NkJvb0hoWlR5bHl2REdsZjVRalZMUEpYVnJpbm4wVU8yRlNyM3UrR3o5b0IwWEFFSEkyd1FMWVAzL0FnQUFBQWwyQWdBTXhBc0E5T3U2V01kVFY1aElYMFZYVW5CVFdNNTNiZXhXb3BjYUIxeVQ1SUQ2dzE3MkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCcU53RUMyRG9aSXA1R3pieE1DcGF6bjZyM2JqejkzY1Z4anJLcUJhYkF2MTArQzlxd200Y2NHQm10elkyWUdFYkpLdWtHd1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFZamRCQXRnY2ZCeGh1VEpBODNTcGMwZlJpS3JYWlViaGRPdlFuQlluc3U2QWI0T3RvN1NVTkNEYm4zNUEwR0hZMVJsSVBBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUhvM1FRTFlISHdjWWJreVFQTjBxWE5IMFlpcTEyVkc0WFRyMEp3V0o3THVnRytEcmFPMGxEUWcyNTkrUU5CaDJOVVpTRHdHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQnlONEVDMkQ5L3dJQUFBQUpkZ0lBRE1RTEFQVHJ1bGpIVTFlWVNGOUZWMUp3VTFqT2QyM3NWcUtYR2dkY2srU0Erc05lOWhVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRYWpmQkF0ZzZHU0tlUnMyOFRBcVdzNStxOTI0OC9kM0ZjWTZ5cWdXbXdMOWRQZ3Zhc0p1SEhCZ1pyYzJObUJoR3lTcnBCc0ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHSTRBUUxZUDMvQWdBQUFBbDJBZ0FNeEFzQTlPdTZXTWRUVjVoSVgwVlhVbkJUV001M2JleFdvcGNhQjF5VDVJRDZ3MTcyRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkI2T0FFQzJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDkvd0lBQUFBSmRnSUFETVFMQVBUcnVsakhVMWVZU0Y5RlYxSndVMWpPZDIzc1ZxS1hHZ2RjaytTQStzTmU5aFVBUWNqaEJBdGdycXI4Ly8vLzlVUDkvMGZ0OHYrM01tbWQ2YUpKT3VnSGVyc3lnekh6cU94cHdQU2dIbzBVN3dZQy96NG1zd29FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR280Z1FMWU5vUG8xcWlwODk3Zkg2U0tzSGVGOXp4dms1cjJJMElMNmZVZE5xSElNclJIYnpPbG1aWm9pM1NoLzI3N1g0ckR0R2FYS1ZkV0M4K2c0SEJoajBobEVJeU4yS0x5RVFvT0JnK0VCbjlLcTJTdWZCOHJFOU9lUjNJWG9KOS9KTFZDd0JCaU9NRUMyRGFENk5hb3FmUGUzeCtraXJCM2hmYzhiNU9hOWlOQ0MrbjFIVGFoeURLMFIyOHpwWm1XYUl0MG9mOXUrMStLdzdhRDZOYW9xZlBlM3gra2lyQjNoZmM4YjVPYTlpTkNDK24xSFRhaHlESzBSMjh6cFptV2FJdDBvZjl1KzErS3c0QVFlampCQXRnMFpwY3BWMVlMejZEZ2NHR1BTR1VRakkzWW92SVJDZzRHRDRRR2YwcXJaSzU4SHlzVDA1NUhjaGVnbjM4a3RVTDJnK2pXcUtuejN0OGZwSXF3ZDRYM1BHK1RtdllqUWd2cDlSMDJvY2d5dEVkdk02V1psbWlMZEtIL2J2dGZpc09BRUhvOGdRTG9BUVFkZlZkdGJtOHdDVDdpK1l3aHZrbGlmVFYrOGo3QmtTZ2tTSFJrWVF2am1tQWJ3cGxjWjArZ0t0TUhRRXZiQ0laa1VnWFIzejJaOWVTaGRnYmlEK3ZIUmJTN3A3a1p4b1lzcTVwZUl5MzVieDdQd1FVazFQMnJocHc4amNsOW5NcUxXTHBFTW54cjlTcHlwSTBNWU5pR1Qyb3ZzSStMeTV6cWkrd24rZkhwT0VibHRkL1kwbHNSWGVCNk55SzZBZ1htVGsyZWovZU5UYWNkVEY4bngyY3NDQ29Uc0lUbnZwOVZ3T2tSMm5GUDdmT1hQemN0c0drcHJ4bWNEYUJ2UnQxSjhZTDc2TVlCQkRnK2FseG03OUpGd3UyZlFtUkVsRWNqekRseGtXRFNjTFhyWjJ4STRodExKVlcxZTFNQUpLVjhUN0FQdXhyVEszbVRBUWdyUjhLalpRVnpRa3hYY1hRQ3o4c3dFWlBNemxYd0RUcllsbzdwWFlXSFVFNFJYSTBORWJRV2h0NkVpa0JXOGpGZEtSaFhwYnZoaWlPL0kxREVwOUY3eTlUbGhJRXdjMXBjZTVBS3JKTHQ0Nm1RSndMVFdqMGtJY1JKUi9BMU1pVHdtdFpFaEpoSjMrRFpCRGszU1MvRVB0L0IvTUJLODBMVjUvRWswWTNUUEpiREJxMk9zZWJOYVVOTmQyczErU1REV2ZTVnJZYWJyaVprTk1OSzQ2WFNJRXlHWWdPYXpnVTlCT3hwSm9OWStMY29BY1lNM1dUdStjbnFXOUdTYTFvcWtmajlPcHZFTmJRQ2h3UER6ci9nKzV5eUZ5RFlLYTVRMDRIbXU3UDZmWGZxc0NwcmQ3SGpJNXBNQ3cvTmF0Mk53ZlJRenJjdWhlRmhCZXBGSTAvb2JwamM5QUhSWDAvZTVmVWt3SHVpUW9jYWtuQXFiM2h0eVhJM0xVZDdnSUFBQUFBQUVHSS9RUUxRUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFFQUFBRUEvd0FCXCI7XG4gICAgICAgICAgICBleHBvcnRzLnBxID0gNzYwO1xuICAgICAgICAgICAgZXhwb3J0cy5wciA9IDM2NDA7XG4gICAgICAgICAgICBleHBvcnRzLnBHMWdlbiA9IDMzNzUyO1xuICAgICAgICAgICAgZXhwb3J0cy5wRzF6ZXJvID0gMzM4OTY7XG4gICAgICAgICAgICBleHBvcnRzLnBHMWIgPSA1MDE2O1xuICAgICAgICAgICAgZXhwb3J0cy5wRzJnZW4gPSAzNDA0MDtcbiAgICAgICAgICAgIGV4cG9ydHMucEcyemVybyA9IDM0MzI4O1xuICAgICAgICAgICAgZXhwb3J0cy5wRzJiID0gMTQ3Mjg7XG4gICAgICAgICAgICBleHBvcnRzLnBPbmVUID0gMzQ2MTY7XG4gICAgICAgICAgICBleHBvcnRzLnByZVBTaXplID0gMjg4O1xuICAgICAgICAgICAgZXhwb3J0cy5wcmVRU2l6ZSA9IDIwNDQ4O1xuICAgICAgICAgICAgZXhwb3J0cy5uOHEgPSA0ODtcbiAgICAgICAgICAgIGV4cG9ydHMubjhyID0gMzI7XG4gICAgICAgICAgICBleHBvcnRzLnEgPSBcIjQwMDI0MDk1NTUyMjE2NjczOTM0MTc3ODk4MjU3MzU5MDQxNTY1NTY4ODI4MTk5MzkwMDc4ODUzMzIwNTgxMzYxMjQwMzE2NTA0OTA4Mzc4NjQ0NDI2ODc2MjkxMjkwMTU2NjQwMzc4OTQyNzI1NTk3ODdcIjtcbiAgICAgICAgICAgIGV4cG9ydHMuciA9IFwiNTI0MzU4NzUxNzUxMjYxOTA0Nzk0NDc3NDA1MDgxODU5NjU4Mzc2OTA1NTI1MDA1Mjc2Mzc4MjI2MDM2NTg2OTk5Mzg1ODExODQ1MTNcIjtcbiAgICAgICAgIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBtb2R1bGUuZXhwb3J0cy5idWlsZEYxID0gcmVxdWlyZShcIi4vc3JjL2YxLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMuYnVpbGRCbjEyOCA9IHJlcXVpcmUoXCIuL3NyYy9ibjEyOC5qc1wiKTtcbi8vIG1vZHVsZS5leHBvcnRzLmJ1aWxkTW50Njc1MyA9IHJlcXVpcmUoXCIuL3NyYy9tbnQ2NzUzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cy5ibjEyOF93YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvYm4xMjhfd2FzbS5qc1wiKTtcbm1vZHVsZS5leHBvcnRzLmJsczEyMzgxX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibHMxMjM4MV93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMubW50Njc1M193YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvbW50Njc1M193YXNtLmpzXCIpO1xuIiwiLyogZ2xvYmFsIEJpZ0ludCAqL1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKCh0eXBlb2YobykgPT0gXCJiaWdpbnRcIikgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSAge1xuICAgICAgICByZXR1cm4gby50b1N0cmluZygxMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5QmlnSW50cyhvW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAoKHR5cGVvZihvKSA9PSBcInN0cmluZ1wiKSAmJiAoL15bMC05XSskLy50ZXN0KG8pICkpICB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobz09PW51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSAwbjtcbiAgICBsZXQgaSA9IGJ1ZmYubGVuZ3RoO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICB3aGlsZSAoaT4wKSB7XG4gICAgICAgIGlmIChpID49IDQpIHtcbiAgICAgICAgICAgIGkgLT0gNDtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGkpKSA8PCBCaWdJbnQob2Zmc2V0KjgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCo4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50OChpKSkgPDwgQmlnSW50KG9mZnNldCo4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvLTQgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSA0O1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIE51bWJlcihyICYgMHhGRkZGRkZGRm4pKTtcbiAgICAgICAgICAgIHIgPSByID4+IDMybjtcbiAgICAgICAgfSBlbHNlIGlmIChvLTIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgMHhGRkZGbikpO1xuICAgICAgICAgICAgciA9IHIgPj4gMTZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbyAtPSAxO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDgobywgTnVtYmVyKHIgJiAweEZGbikpO1xuICAgICAgICAgICAgciA9IHIgPj4gOG47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSAwbjtcbiAgICBsZXQgaSA9IDA7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIHdoaWxlIChpPGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpICsgNCA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MzIoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgNCA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGVuID0gTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChuKSAtIDEpIC8gOCkgKzE7XG4gICAgICAgIGlmIChsZW49PTApIGxlbiA9IDE7XG4gICAgfVxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICBsZXQgbyA9IDA7XG4gICAgd2hpbGUgKG8gPCBsZW4pIHtcbiAgICAgICAgaWYgKG8rNCA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIDB4RkZGRkZGRkZuKSwgdHJ1ZSApO1xuICAgICAgICAgICAgbyArPSA0O1xuICAgICAgICAgICAgciA9IHIgPj4gMzJuO1xuICAgICAgICB9IGVsc2UgaWYgKG8rMiA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmYuc2V0VWludDE2KE51bWJlcihvLCByICYgMHhGRkZGbiksIHRydWUgKTtcbiAgICAgICAgICAgIG8gKz0gMjtcbiAgICAgICAgICAgIHIgPSByID4+IDE2bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmYuc2V0VWludDgoTnVtYmVyKG8sIHIgJiAweEZGbiksIHRydWUgKTtcbiAgICAgICAgICAgIG8gKz0gMTtcbiAgICAgICAgICAgIHIgPSByID4+IDhuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuIiwiaW1wb3J0IGJpZ0ludCBmcm9tIFwiYmlnLWludGVnZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUJpZ0ludHMobykge1xuICAgIGlmICgodHlwZW9mKG8pID09IFwiYmlnaW50XCIpIHx8IG8uZXEgIT09IHVuZGVmaW5lZCkgIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAoc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKCh0eXBlb2YobykgPT0gXCJzdHJpbmdcIikgJiYgKC9eWzAtOV0rJC8udGVzdChvKSApKSAge1xuICAgICAgICByZXR1cm4gYmlnSW50KG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAodW5zdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gYmlnSW50Lnplcm87XG4gICAgZm9yIChsZXQgaT0wOyBpPGJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbiA9IGJpZ0ludChidWZmW2J1ZmYubGVuZ3RoIC0gaSAtIDFdKTtcbiAgICAgICAgcmVzID0gcmVzLmFkZChuLnNoaWZ0TGVmdChpKjgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGxldCBvID1sZW4tMTtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB3aGlsZSAoKHIuZ3QoYmlnSW50Lnplcm8pKSYmKG8+PTApKSB7XG4gICAgICAgIGxldCBjID0gTnVtYmVyKHIuYW5kKGJpZ0ludChcIjI1NVwiKSkpO1xuICAgICAgICBidWZmW29dID0gYztcbiAgICAgICAgby0tO1xuICAgICAgICByID0gci5zaGlmdFJpZ2h0KDgpO1xuICAgIH1cbiAgICBpZiAoIXIuZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBsZUJ1ZmYyaW50IChidWZmKSB7XG4gICAgbGV0IHJlcyA9IGJpZ0ludC56ZXJvO1xuICAgIGZvciAobGV0IGk9MDsgaTxidWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSBiaWdJbnQoYnVmZltpXSk7XG4gICAgICAgIHJlcyA9IHJlcy5hZGQobi5zaGlmdExlZnQoaSo4KSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBsZXQgbyA9MDtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB3aGlsZSAoKHIuZ3QoYmlnSW50Lnplcm8pKSYmKG88YnVmZi5sZW5ndGgpKSB7XG4gICAgICAgIGxldCBjID0gTnVtYmVyKHIuYW5kKGJpZ0ludCgyNTUpKSk7XG4gICAgICAgIGJ1ZmZbb10gPSBjO1xuICAgICAgICBvKys7XG4gICAgICAgIHIgPSByLnNoaWZ0UmlnaHQoOCk7XG4gICAgfVxuICAgIGlmICghci5lcShiaWdJbnQuemVybykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG4iLCJpbXBvcnQgKiBhcyB1dGlsc19uYXRpdmUgZnJvbSBcIi4vdXRpbHNfbmF0aXZlLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsc19iaWdpbnQgZnJvbSBcIi4vdXRpbHNfYmlnaW50LmpzXCI7XG5cbmxldCB1dGlscyA9IHt9O1xuXG5jb25zdCBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcbmlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgIE9iamVjdC5hc3NpZ24odXRpbHMsIHV0aWxzX25hdGl2ZSk7XG59IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24odXRpbHMsIHV0aWxzX2JpZ2ludCk7XG59XG5cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGVbaV0gPSBfcmV2U2xvdyhpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3coaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbnV0aWxzLmJpdFJldmVyc2UgPSBmdW5jdGlvbiBiaXRSZXZlcnNlKGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIF9yZXZUYWJsZVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gMTYpICYgMHhGRl0gPDwgOCkgfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDgpICYgMHhGRl0gPDwgMTYpIHxcbiAgICAgICAgKF9yZXZUYWJsZVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59O1xuXG5cbnV0aWxzLmxvZzIgPSBmdW5jdGlvbiBsb2cyKCBWIClcbntcbiAgICByZXR1cm4oICggKCBWICYgMHhGRkZGMDAwMCApICE9PSAwID8gKCBWICY9IDB4RkZGRjAwMDAsIDE2ICkgOiAwICkgfCAoICggViAmIDB4RkYwMEZGMDAgKSAhPT0gMCA/ICggViAmPSAweEZGMDBGRjAwLCA4ICkgOiAwICkgfCAoICggViAmIDB4RjBGMEYwRjAgKSAhPT0gMCA/ICggViAmPSAweEYwRjBGMEYwLCA0ICkgOiAwICkgfCAoICggViAmIDB4Q0NDQ0NDQ0MgKSAhPT0gMCA/ICggViAmPSAweENDQ0NDQ0NDLCAyICkgOiAwICkgfCAoICggViAmIDB4QUFBQUFBQUEgKSAhPT0gMCApICk7XG59O1xuXG51dGlscy5idWZmUmV2ZXJzZUJpdHMgPSBmdW5jdGlvbiBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgZVNpemUpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC9lU2l6ZTtcbiAgICBjb25zdCBiaXRzID0gdXRpbHMubG9nMihuKTtcbiAgICBpZiAobiAhPSAoMSA8PCBiaXRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICBjb25zdCByID0gdXRpbHMuYml0UmV2ZXJzZShpLGJpdHMpO1xuICAgICAgICBpZiAoaT5yKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBidWZmLnNsaWNlKGkqZVNpemUsIChpKzEpKmVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KCBidWZmLnNsaWNlKHIqZVNpemUsIChyKzEpKmVTaXplKSwgaSplU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldCh0bXAsIHIqZVNpemUpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGxldCB7XG4gICAgYml0UmV2ZXJzZSxcbiAgICBsb2cyLFxuICAgIGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50cyxcbiAgICBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmYsXG4gICAgbGVCdWZmMmludCxcbiAgICBsZUludDJCdWZmLFxufSA9IHV0aWxzO1xuXG4iLCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBmbk5hbWUsIHNJbiwgc091dCkge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiBiYXRjaENvbnZlcnQoYnVmZkluKSB7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZJbi5ieXRlTGVuZ3RoIC8gc0luKTtcbiAgICAgICAgaWYgKCBuUG9pbnRzICogc0luICE9PSBidWZmSW4uYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZkluLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0luLCBpKnBvaW50c1BlckNodW5rKnNJbiArIG4qc0luKTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6YnVmZkNodW5rfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuIiwiXG5cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRUaHJlYWRSbmcgfSBmcm9tIFwiLi9yYW5kb20uanNcIjtcbmltcG9ydCBidWlsZEJhdGNoQ29udmVydCBmcm9tIFwiLi9lbmdpbmVfYmF0Y2hjb252ZXJ0LmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2FzbUZpZWxkMSB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0bSwgcHJlZml4LCBuOCwgcCkge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMucCA9IHA7XG4gICAgICAgIHRoaXMubjggPSBuODtcbiAgICAgICAgdGhpcy50eXBlID0gXCJGMVwiO1xuICAgICAgICB0aGlzLm0gPSAxO1xuXG4gICAgICAgIHRoaXMuaGFsZiA9IFNjYWxhci5zaGlmdFJpZ2h0KHAsIFNjYWxhci5vbmUpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IFNjYWxhci5iaXRMZW5ndGgocCk7XG4gICAgICAgIHRoaXMubWFzayA9IFNjYWxhci5zdWIoU2NhbGFyLnNoaWZ0TGVmdChTY2FsYXIub25lLCB0aGlzLmJpdExlbmd0aCksIFNjYWxhci5vbmUpO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IobjgvOCk7XG4gICAgICAgIHRoaXMubjMyID0gTWF0aC5mbG9vcihuOC80KTtcblxuICAgICAgICBpZih0aGlzLm42NCo4ICE9IHRoaXMubjgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm44IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYWxmID0gU2NhbGFyLnNoaWZ0UmlnaHQodGhpcy5wLCBTY2FsYXIub25lKTtcbiAgICAgICAgdGhpcy5ucXIgPSB0aGlzLnR3bztcbiAgICAgICAgbGV0IHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLmFkZCh0aGlzLm5xciwgdGhpcy5vbmUpO1xuICAgICAgICAgICAgciA9IHRoaXMuZXhwKHRoaXMubnFyLCB0aGlzLmhhbGYpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICBsZXQgdCA9IFNjYWxhci5zdWIodGhpcy5wLCBTY2FsYXIub25lKTtcblxuICAgICAgICB3aGlsZSAoICFTY2FsYXIuaXNPZGQodCkgKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdCA9IFNjYWxhci5zaGlmdFJpZ2h0KHQsIFNjYWxhci5vbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53ID0gW107XG4gICAgICAgIHRoaXMud1t0aGlzLnNdID0gdGhpcy5leHAodGhpcy5ucXIsIHQpO1xuXG4gICAgICAgIGZvciAobGV0IGk9IHRoaXMucy0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHRoaXMud1tpXSA9IHRoaXMuc3F1YXJlKHRoaXMud1tpKzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5lcSh0aGlzLndbMF0sIHRoaXMub25lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgY2FsY3VsYXRpbmcgcm9vdHMgb2YgdW5pdHlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJhdGNoVG9Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIsIHRoaXMubjgsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLmJhdGNoRnJvbU1vbnRnb21lcnkgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICB9XG5cblxuICAgIG9wMihvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AyQm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyKTtcbiAgICB9XG5cbiAgICBvcDEob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gU2NhbGFyLnRvTEVCdWZmKFNjYWxhci5lKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgaXNOZWdhdGl2ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNOZWdhdGl2ZVwiLCBhKTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgbGV0IHJhID0gU2NhbGFyLmUoYSwgYik7XG4gICAgICAgIGlmIChTY2FsYXIuaXNOZWdhdGl2ZShyYSkpIHtcbiAgICAgICAgICAgIHJhID0gU2NhbGFyLm5lZyhyYSk7XG4gICAgICAgICAgICBpZiAoU2NhbGFyLmd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBTY2FsYXIubW9kKHJhLCB0aGlzLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmEgPSBTY2FsYXIuc3ViKHRoaXMucCwgcmEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFNjYWxhci5ndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gU2NhbGFyLm1vZChyYSwgdGhpcy5wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidWZmID0gdXRpbHMubGVJbnQyQnVmZihyYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIGNvbnN0IHMgPSBTY2FsYXIuZnJvbVJwckxFKGFuLCAwKTtcbiAgICAgICAgcmV0dXJuIFNjYWxhci50b1N0cmluZyhzLCByYWRpeCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IFNjYWxhci56ZXJvO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjY0OyBpKyspIHtcbiAgICAgICAgICAgICAgICB2ID0gU2NhbGFyLmFkZCh2LCAgU2NhbGFyLnNoaWZ0TGVmdChybmcubmV4dFU2NCgpLCA2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gU2NhbGFyLmJhbmQodiwgdGhpcy5tYXNrKTtcbiAgICAgICAgfSB3aGlsZSAoU2NhbGFyLmdlcSh2LCB0aGlzLnApKTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgdiwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIHJldHVybiBTY2FsYXIuZnJvbVJwckxFKGFuLCAwKTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMubjgpO1xuICAgICAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvUnByTEUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGJ1ZmYuc2V0KHRoaXMuZnJvbU1vbnRnb21lcnkoYSksIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBjb25zdCByZXMgPSBidWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShyZXMpO1xuICAgIH1cblxuXG59XG5cblxuIiwiaW1wb3J0IHsgZ2V0VGhyZWFkUm5nIH0gZnJvbSBcIi4vcmFuZG9tLmpzXCI7XG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2FzbUZpZWxkMiB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0bSwgcHJlZml4LCBGKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG5cbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy50eXBlID0gXCJGMlwiO1xuICAgICAgICB0aGlzLm0gPSBGLm0gKiAyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5GLm44KjI7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5GLm4zMioyO1xuICAgICAgICB0aGlzLm42NCA9IHRoaXMuRi5uNjQqMjtcblxuICAgICAgICB0aGlzLnBPcDEgPSB0bS5hbGxvYyhGLm44KjIpO1xuICAgICAgICB0aGlzLnBPcDIgPSB0bS5hbGxvYyhGLm44KjIpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhGLm44KjIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfemVyb1wiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLnplcm8gPSB0bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl9vbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgIH1cblxuICAgIG9wMihvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AyQm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyKTtcbiAgICB9XG5cbiAgICBvcDEob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNOZWdhdGl2ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNOZWdhdGl2ZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gU2NhbGFyLnRvTEVCdWZmKFNjYWxhci5lKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDIpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbn1cblxuIiwiXG5cbmltcG9ydCB7IGdldFRocmVhZFJuZyB9IGZyb20gXCIuL3JhbmRvbS5qc1wiO1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhc21GaWVsZDMge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjNcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMztcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCozO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMztcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjM7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNOZWdhdGl2ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNOZWdhdGl2ZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gU2NhbGFyLnRvTEVCdWZmKFNjYWxhci5lKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDMpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLmUoYVsyXSwgYik7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXMuc2V0KGMzLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBGM1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMzID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44KjIpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfSwgJHtzM31dYDtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXMuc2V0KGMzLCB0aGlzLkYubjgqMik7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUm5nKGdldFRocmVhZFJuZygpKTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMikpO1xuICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCoyLCB0aGlzLkYubjgqMykpO1xuICAgICAgICByZXR1cm4gW2MxLCBjMiwgYzNdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBjb25zdCBiMyA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMl0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICBidWZmLnNldChiMywgdGhpcy5GLm44KjIpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbn1cblxuXG4iLCJcblxuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuaW1wb3J0IGJ1aWxkQmF0Y2hDb252ZXJ0IGZyb20gXCIuL2VuZ2luZV9iYXRjaGNvbnZlcnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2FzbUN1cnZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYsIHBHZW4sIHBHYiwgY29mYWN0b3IpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgdGhpcy5GID0gRjtcblxuICAgICAgICB0aGlzLnBPcDEgPSB0bS5hbGxvYyhGLm44KjMpO1xuICAgICAgICB0aGlzLnBPcDIgPSB0bS5hbGxvYyhGLm44KjMpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhGLm44KjMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfemVyb1wiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLnplcm8gPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCBGLm44KjMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfemVyb0FmZmluZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLnplcm9BZmZpbmUgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCBGLm44KjIpO1xuICAgICAgICB0aGlzLm9uZSA9IHRoaXMudG0uZ2V0QnVmZihwR2VuLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmcgPSB0aGlzLm9uZTtcbiAgICAgICAgdGhpcy5vbmVBZmZpbmUgPSB0aGlzLnRtLmdldEJ1ZmYocEdlbiwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5nQWZmaW5lID0gdGhpcy5vbmVBZmZpbmU7XG4gICAgICAgIHRoaXMuYiA9IHRoaXMudG0uZ2V0QnVmZihwR2IsIEYubjgpO1xuXG4gICAgICAgIGlmIChjb2ZhY3Rvcikge1xuICAgICAgICAgICAgdGhpcy5jb2ZhY3RvciA9IFNjYWxhci50b0xFQnVmZihjb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b0MgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgRi5uOCoyLCBGLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaExFTXRvVSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hDdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIiwgRi5uOCwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5iYXRjaFV0b0xFTSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0phY29iaWFuID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBGLm44KjIsIEYubjgqMyk7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0FmZmluZSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIsIEYubjgqMywgRi5uOCoyKTtcbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBvcDJib29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AxQWZmaW5lKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZEFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQWZmaW5lKFwiX25lZ0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9kb3VibGVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlQWZmaW5lXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGEsIHMpIHtcbiAgICAgICAgaWYgKCEocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBzID0gU2NhbGFyLnRvTEVCdWZmKFNjYWxhci5lKHMpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIHMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbZm5OYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgcy5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIHRpbWVzRnIoYSwgcykge1xuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzRnJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNGckFmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBzKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW2ZuTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvQWZmaW5lKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQWZmaW5lKFwiX3RvQWZmaW5lXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0phY29iaWFuKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9KYWNvYmlhblwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvUnByVW5jb21wcmVzc2VkKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoICE9IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfTEVNdG9VXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KjIpO1xuICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBmcm9tUnByVW5jb21wcmVzc2VkKGFyciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLkYubjgqMik7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGJ1ZmYpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9VdG9MRU1cIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfdG9BZmZpbmVcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCAhPSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0xFTXRvQ1wiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCk7XG4gICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJDb21wcmVzc2VkKGFyciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLkYubjgpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBidWZmKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfQ3RvTEVNXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDIsIHRoaXMuRi5uOCoyKTtcbiAgICB9XG5cbiAgICB0b1VuY29tcHJlc3NlZChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHRoaXMudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgYSk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGFyci5zZXQoYSwgb2Zmc2V0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfdG9BZmZpbmVcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGFyciwgb2Zmc2V0KSB7XG4gICAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuICAgICAgICByZXR1cm4gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0K3RoaXMuRi5uOCoyKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB6ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44KjIpLCByYWRpeCk7XG4gICAgICAgICAgICByZXR1cm4gYFsgJHt4fSwgJHt5fSwgJHt6fSBdYDtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICAgICAgcmV0dXJuIGBbICR7eH0sICR7eX0gXWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgbGV0IHgzYjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgfSB3aGlsZSAoIUYuaXNTcXVhcmUoeDNiKSk7XG5cbiAgICAgICAgUFsxXSA9IEYuc3FydCh4M2IpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBGLmlzTmVnYXRpdmUoUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcblxuICAgICAgICBsZXQgUGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIFBidWZmLnNldChQWzBdKTtcbiAgICAgICAgUGJ1ZmYuc2V0KFBbMV0sIHRoaXMuRi5uOCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29mYWN0b3IpIHtcbiAgICAgICAgICAgIFBidWZmID0gdGhpcy50aW1lc1NjYWxhcihQYnVmZiwgdGhpcy5jb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUGJ1ZmY7XG4gICAgfVxuXG5cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICAgICAgdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgbGV0IHo7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QodGhpcy5GLm9uZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB6XTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5sZW5ndGg9PTMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYub25lO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHosIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvQWZmaW5lO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuRi5lcSh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHosIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZShhKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21PYmplY3QoYSk7XG4gICAgfVxuXG59XG5cblxuIiwiLyogZ2xvYmFsIFdlYkFzc2VtYmx5ICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtZW1vcnk7XG4gICAgbGV0IHUzMjtcbiAgICBsZXQgdTg7XG5cbiAgICBpZiAoc2VsZikge1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgICAgICBpbml0KGRhdGFbMF0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWzBdLmNtZCA9PSBcIlRFUk1JTkFURVwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHJ1blRhc2soZGF0YSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGluaXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb2RlID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5jb2RlKTtcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG4gICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6ZGF0YS5pbml0fSk7XG4gICAgICAgIHUzMiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyKTtcbiAgICAgICAgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcblxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgIFwibWVtb3J5XCI6IG1lbW9yeVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYWxsb2MobGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gJiAzKSB1MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gPiBtZW1vcnkuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KDEwMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhbGxvY0J1ZmZlcihidWZmZXIpIHtcbiAgICAgICAgY29uc3QgcCA9IGFsbG9jKGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgc2V0QnVmZmVyKHAsIGJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEJ1ZmZlcihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHU4LmJ1ZmZlciwgdTguYnl0ZU9mZnNldCArIHBvaW50ZXIsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0QnVmZmVyKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB1OC5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSwgcG9pbnRlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuVGFzayh0YXNrKSB7XG4gICAgICAgIGlmICh0YXNrWzBdLmNtZCA9PSBcIklOSVRcIikge1xuICAgICAgICAgICAgcmV0dXJuIGluaXQodGFza1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICAgICAgdmFyczogW10sXG4gICAgICAgICAgICBvdXQ6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9sZEFsbG9jID0gdTMyWzBdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DU0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1wiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTRVRcIjpcbiAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNBTExcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGFza1tpXS5wYXJhbXNbal07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGN0eC52YXJzW3AudmFyXSArIChwLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHAudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBvcnRzW3Rhc2tbaV0uZm5OYW1lXSguLi5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkdFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY21kXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHUzMlswXSA9IG9sZEFsbG9jO1xuICAgICAgICByZXR1cm4gY3R4Lm91dDtcbiAgICB9XG5cblxuICAgIHJldHVybiBydW5UYXNrO1xufVxuIiwiLyogZ2xvYmFsIHdpbmRvdywgbmF2aWdhdG9yLCBCbG9iLCBXb3JrZXIsIFdlYkFzc2VtYmx5ICovXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IE1FTV9TSVpFID0gODE5MjsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoNTEyTWIpXG5cblxuaW1wb3J0IHRocmVhZCBmcm9tIFwiLi90aHJlYWRtYW5fdGhyZWFkLmpzXCI7XG5pbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG5cbmltcG9ydCBOb2RlV29ya2VyX21vZCBmcm9tIFwid29ya2VyX3RocmVhZHNcIjtcbmNvbnN0IGluQnJvd3NlciA9ICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKTtcbmxldCBOb2RlV29ya2VyO1xuaWYgKCFpbkJyb3dzZXIpIHtcbiAgICBOb2RlV29ya2VyID0gTm9kZVdvcmtlcl9tb2QuV29ya2VyO1xufVxuXG5jbGFzcyBEZWZlcnJlZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCkge1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICAgICAgdmFyIGJpbmFyeV9zdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xuICAgICAgICB2YXIgbGVuID0gYmluYXJ5X3N0cmluZy5sZW5ndGg7XG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGJ5dGVzW2ldID0gYmluYXJ5X3N0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oYmFzZTY0LCBcImJhc2U2NFwiKSk7XG4gICAgfVxufVxuXG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBidWlsZFRocmVhZE1hbmFnZXIod2FzbSwgc2luZ2xlVGhyZWFkKSB7XG4gICAgY29uc3QgdG0gPSBuZXcgVGhyZWFkTWFuYWdlcigpO1xuXG4gICAgdG0ubWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpNRU1fU0laRX0pO1xuICAgIHRtLnU4ID0gbmV3IFVpbnQ4QXJyYXkodG0ubWVtb3J5LmJ1ZmZlcik7XG4gICAgdG0udTMyID0gbmV3IFVpbnQzMkFycmF5KHRtLm1lbW9yeS5idWZmZXIpO1xuXG4gICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYmFzZTY0VG9BcnJheUJ1ZmZlcih3YXNtLmNvZGUpKTtcblxuICAgIHRtLmluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xuICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIFwibWVtb3J5XCI6IHRtLm1lbW9yeVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB0bS5zaW5nbGVUaHJlYWQgPSBzaW5nbGVUaHJlYWQ7XG4gICAgdG0uaW5pdGFsUEZyZWUgPSB0bS51MzJbMF07ICAgLy8gU2F2ZSB0aGUgUG9pbnRlciB0byBmcmVlIHNwYWNlLlxuICAgIHRtLnBxID0gd2FzbS5wcTtcbiAgICB0bS5wciA9IHdhc20ucHI7XG4gICAgdG0ucEcxZ2VuID0gd2FzbS5wRzFnZW47XG4gICAgdG0ucEcxemVybyA9IHdhc20ucEcxemVybztcbiAgICB0bS5wRzJnZW4gPSB3YXNtLnBHMmdlbjtcbiAgICB0bS5wRzJ6ZXJvID0gd2FzbS5wRzJ6ZXJvO1xuICAgIHRtLnBPbmVUID0gd2FzbS5wT25lVDtcblxuICAgIC8vICAgIHRtLnBUbXAwID0gdG0uYWxsb2MoY3VydmUuRzIuRi5uOCozKTtcbiAgICAvLyAgICB0bS5wVG1wMSA9IHRtLmFsbG9jKGN1cnZlLkcyLkYubjgqMyk7XG5cblxuICAgIGlmIChzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgdG0uY29kZSA9IGJhc2U2NFRvQXJyYXlCdWZmZXIod2FzbS5jb2RlKTtcbiAgICAgICAgdG0udGFza01hbmFnZXIgPSB0aHJlYWQoKTtcbiAgICAgICAgYXdhaXQgdG0udGFza01hbmFnZXIoW3tcbiAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgIGNvZGU6IHRtLmNvZGUuc2xpY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ICA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG0ud29ya2VycyA9IFtdO1xuICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzID0gW107XG4gICAgICAgIHRtLndvcmtpbmcgPSBbXTtcblxuICAgICAgICBsZXQgY29uY3VycmVuY3k7XG5cbiAgICAgICAgaWYgKCh0eXBlb2YobmF2aWdhdG9yKSA9PT0gXCJvYmplY3RcIikgJiYgbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3kpIHtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25jdXJyZW5jeSA9IG9zLmNwdXMoKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdG0uY29uY3VycmVuY3kgPSBjb25jdXJyZW5jeTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG5cbiAgICAgICAgICAgIGlmIChpbkJyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW1wiKFwiLCB0aHJlYWQudG9TdHJpbmcoKSwgXCIpKHNlbGYpO1wiXSwgeyB0eXBlOiBcInRleHQvamF2YXNjcmlwdFwiIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgICAgICAgICB0bS53b3JrZXJzW2ldID0gbmV3IFdvcmtlcih1cmwpO1xuXG4gICAgICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5vbm1lc3NhZ2UgPSBnZXRPbk1zZyhpKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bS53b3JrZXJzW2ldID0gbmV3IE5vZGVXb3JrZXIoXCIoXCIgKyB0aHJlYWQudG9TdHJpbmcoKSsgXCIpKHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykucGFyZW50UG9ydCk7XCIsIHtldmFsOiB0cnVlfSk7XG5cbiAgICAgICAgICAgICAgICB0bS53b3JrZXJzW2ldLm9uKFwibWVzc2FnZVwiLCBnZXRPbk1zZyhpKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbml0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLndvcmtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgY29uc3QgY29weUNvZGUgPSBiYXNlNjRUb0FycmF5QnVmZmVyKHdhc20uY29kZSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKHRtLnBvc3RBY3Rpb24oaSwgW3tcbiAgICAgICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgICAgIGNvZGU6IGNvcHlDb2RlXG4gICAgICAgICAgICB9XSwgW2NvcHlDb2RlLmJ1ZmZlcl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGluaXRQcm9taXNlcyk7XG5cbiAgICB9XG4gICAgcmV0dXJuIHRtO1xuXG4gICAgZnVuY3Rpb24gZ2V0T25Nc2coaSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoKGUpJiYoZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkc1tpXS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgdG0ucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmNsYXNzIFRocmVhZE1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHN0YXJ0U3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSAhPSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IHRoaXMudTMyWzBdO1xuICAgIH1cblxuICAgIGVuZFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5vbGRQRnJlZTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgcG9zdEFjdGlvbih3b3JrZXJJZCwgZSwgdHJhbnNmZXJzLCBfZGVmZXJyZWQpIHtcbiAgICAgICAgaWYgKHRoaXMud29ya2luZ1t3b3JrZXJJZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvc3RpbmcgYSBqb2IgdCBhIHdvcmtpbmcgd29ya2VyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2luZ1t3b3JrZXJJZF0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0gPSBfZGVmZXJyZWQgPyBfZGVmZXJyZWQgOiBuZXcgRGVmZXJyZWQoKTtcbiAgICAgICAgdGhpcy53b3JrZXJzW3dvcmtlcklkXS5wb3N0TWVzc2FnZShlLCB0cmFuc2ZlcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdLnByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1dvcmtzKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IChpPHRoaXMud29ya2Vycy5sZW5ndGgpJiYodGhpcy5hY3Rpb25RdWV1ZS5sZW5ndGggPiAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53b3JraW5nW2ldID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29yayA9IHRoaXMuYWN0aW9uUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3Rpb24oaSwgd29yay5kYXRhLCB3b3JrLnRyYW5zZmVycywgd29yay5kZWZlcnJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZUFjdGlvbihhY3Rpb25EYXRhLCB0cmFuc2ZlcnMpIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVRocmVhZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50YXNrTWFuYWdlcihhY3Rpb25EYXRhKTtcbiAgICAgICAgICAgIGQucmVzb2x2ZShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyczogdHJhbnNmZXJzLFxuICAgICAgICAgICAgICAgIGRlZmVycmVkOiBkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQucHJvbWlzZTtcbiAgICB9XG5cbiAgICByZXNldE1lbW9yeSgpIHtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLmluaXRhbFBGcmVlO1xuICAgIH1cblxuICAgIGFsbG9jQnVmZihidWZmKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSB0aGlzLmFsbG9jKGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2V0QnVmZihwb2ludGVyLCBidWZmKTtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXI7XG4gICAgfVxuXG4gICAgZ2V0QnVmZihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudTguc2xpY2UocG9pbnRlciwgcG9pbnRlcisgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzZXRCdWZmKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB0aGlzLnU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBhbGxvYyhsZW5ndGgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMudTMyWzBdICYgMykgdGhpcy51MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnUzMlswXTtcbiAgICAgICAgdGhpcy51MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMud29ya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzW2ldLnBvc3RNZXNzYWdlKFt7Y21kOiBcIlRFUk1JTkFURVwifV0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMCk7XG4gICAgfVxuXG59XG5cbiIsIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gY3VydmUudG07XG5cbiAgICBjdXJ2ZVtncm91cE5hbWVdLmJhdGNoQXBwbHlLZXkgPSBhc3luYyBmdW5jdGlvbihidWZmLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuQWZmaW5lO1xuICAgICAgICBsZXQgc0dpbiwgc0dtaWQsIHNHb3V0O1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbkFmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIHNHaW4gPSBHLm44O1xuICAgICAgICAgICAgc0dtaWQgPSBHLm44O1xuICAgICAgICAgICAgc0dvdXQgPSBHLm44O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cDogXCIgKyBncm91cE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHaW4pO1xuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgaW5jID0gRnIuZShpbmMpO1xuICAgICAgICBsZXQgdCA9IEZyLmUoZmlyc3QpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dG0uY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgdG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkFMTE9DU0VUXCIsXG4gICAgICAgICAgICAgICAgdmFyOiAwLFxuICAgICAgICAgICAgICAgIGJ1ZmY6IGJ1ZmYuc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzR2luLCBpKnBvaW50c1BlckNodW5rKnNHaW4gKyBuKnNHaW4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogdH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKk1hdGgubWF4KHNHbWlkLCBzR291dCl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IGZuTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6M31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbkFmZmluZSkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgICAgIGZuTmFtZTogZm5BZmZpbmUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDMsIGxlbjogbipzR291dH0pO1xuXG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgdCA9IEZyLm11bCh0LCBGci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBjb25zdCBvdXRCdWZmID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIGxldCBwPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG91dEJ1ZmYuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dEJ1ZmY7XG4gICAgfTtcbn1cbiIsIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRQYWlyaW5nKGN1cnZlKSB7XG4gICAgY29uc3QgdG0gPSBjdXJ2ZS50bTtcbiAgICBjdXJ2ZS5wYWlyaW5nID0gZnVuY3Rpb24gcGFpcmluZyhhLCBiKSB7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzEudG9KYWNvYmlhbihhKSk7XG4gICAgICAgIGNvbnN0IHBCID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcyLnRvSmFjb2JpYW4oYikpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9wYWlyaW5nXCJdKHBBLCBwQiwgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gdG0uZ2V0QnVmZihwUmVzLCBjdXJ2ZS5HdC5uOCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnBhaXJpbmdFcSA9IGFzeW5jIGZ1bmN0aW9uIHBhaXJpbmdFcSgpIHtcbiAgICAgICAgbGV0ICBidWZmQ3Q7XG4gICAgICAgIGxldCBuRXFzO1xuICAgICAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggJSAyKSA9PSAxKSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIG5FcXMgPSAoYXJndW1lbnRzLmxlbmd0aCAtMSkgLzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBjdXJ2ZS5HdC5vbmU7XG4gICAgICAgICAgICBuRXFzID0gYXJndW1lbnRzLmxlbmd0aCAvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5FcXM7IGkrKykge1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGcxQnVmZiA9IGN1cnZlLkcxLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMl0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBnMUJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBjdXJ2ZS5wcmVQU2l6ZX0pO1xuXG4gICAgICAgICAgICBjb25zdCBnMkJ1ZmYgPSBjdXJ2ZS5HMi50b0phY29iaWFuKGFyZ3VtZW50c1tpKjIgKzFdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZzJCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogY3VydmUucHJlUVNpemV9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcxXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcyXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfbWlsbGVyTG9vcFwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9vbmUocFJlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcE1SID0gdG0uYWxsb2NCdWZmKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9tdWwocFJlcywgcE1SLCBwUmVzKTtcbiAgICAgICAgfVxuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBSZXMsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHBDdCA9IHRtLmFsbG9jQnVmZihidWZmQ3QpO1xuXG4gICAgICAgIGNvbnN0IHIgPSAhIXRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX2VxKHBSZXMsIHBDdCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUCA9IHRoaXMudG0uYWxsb2NCdWZmKHApO1xuICAgICAgICBjb25zdCBwUHJlcFAgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcxXCJdKHBQLCBwUHJlcFApO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBQLCB0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcyID0gZnVuY3Rpb24ocSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBRID0gdGhpcy50bS5hbGxvY0J1ZmYocSk7XG4gICAgICAgIGNvbnN0IHBQcmVwUSA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzJcIl0ocFEsIHBQcmVwUSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFEsIHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5taWxsZXJMb29wID0gZnVuY3Rpb24ocHJlUCwgcHJlUSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQcmVQID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUCk7XG4gICAgICAgIGNvbnN0IHBQcmVRID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfbWlsbGVyTG9vcFwiXShwUHJlUCwgcFByZVEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLmZpbmFsRXhwb25lbnRpYXRpb24gPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0aGlzLnRtLmFsbG9jQnVmZihhKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBBLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbn1cbiIsImltcG9ydCB7IGxvZzIgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG5jb25zdCBwVFNpemVzID0gW1xuICAgIDEgLCAgMSwgIDEsICAxLCAgICAyLCAgMywgIDQsICA1LFxuICAgIDYgLCAgNywgIDcsICA4LCAgICA5LCAxMCwgMTEsIDEyLFxuICAgIDEzLCAxMywgMTQsIDE1LCAgIDE2LCAxNiwgMTcsIDE3LFxuICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3XG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZE11bHRpZXhwKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBhc3luYyBmdW5jdGlvbiBfbXVsdGlFeHAoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgaW5UeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuXG4gICAgICAgIGxldCBzR0luO1xuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fbXVsdGlleHBBZmZpbmVfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkJhc2VzLmJ5dGVMZW5ndGggLyBzR0luKTtcblxuICAgICAgICBpZiAoblBvaW50cyA9PSAwKSByZXR1cm4gRy56ZXJvO1xuICAgICAgICBjb25zdCBzU2NhbGFyID0gTWF0aC5mbG9vcihidWZmU2NhbGFycy5ieXRlTGVuZ3RoIC8gblBvaW50cyk7XG4gICAgICAgIGlmKCBzU2NhbGFyICogblBvaW50cyAhPSBidWZmU2NhbGFycy5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2FsYXIgc2l6ZSBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJpdENodW5rU2l6ZSA9IHBUU2l6ZXNbbG9nMihuUG9pbnRzKV07XG4gICAgICAgIGNvbnN0IG5DaHVua3MgPSBNYXRoLmZsb29yKChzU2NhbGFyKjggLSAxKSAvIGJpdENodW5rU2l6ZSkgKzE7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQmFzZXN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmU2NhbGFyc30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc1NjYWxhcn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBpKmJpdENodW5rU2l6ZX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IE1hdGgubWluKHNTY2FsYXIqOCAtIGkqYml0Q2h1bmtTaXplLCBiaXRDaHVua1NpemUpfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn1cbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBHLkYubjgqM31cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgRy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCByZXMgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRy5pc1plcm8ocmVzKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxiaXRDaHVua1NpemU7IGorKykgcmVzID0gRy5kb3VibGUocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IEcuYWRkKHJlcywgcmVzdWx0W2ldWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgRy5tdWx0aUV4cCA9IGFzeW5jIGZ1bmN0aW9uIG11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImphY29iaWFuXCIpO1xuICAgIH07XG4gICAgRy5tdWx0aUV4cEFmZmluZSA9IGFzeW5jIGZ1bmN0aW9uIG11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImFmZmluZVwiKTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHtsb2cyLCBidWZmUmV2ZXJzZUJpdHN9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkRkZUKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gRy50bTtcbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0KGJ1ZmYsIGludmVyc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGNvbnN0IE1BWF9CSVRTX1RIUkVBRCA9IDEyO1xuXG4gICAgICAgIGxldCBzSW4sIHNNaWQsIHNPdXQsIGZuSW4yTWlkLCBmbk1pZDJPdXQsIGZuTmFtZSwgZm5GRlRNaXgsIGZuRkZUSm9pbiwgZm5GRlRGaW5hbDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuSW4yTWlkID0gXCJnMW1fYmF0Y2hUb0phY29iaWFuXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9pZmZ0XCI7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMW1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcxbV9mZnRNaXhcIjtcblxuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuSW4yTWlkID0gXCJnMm1fYmF0Y2hUb0phY29iaWFuXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9pZmZ0XCI7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRy5uODtcbiAgICAgICAgICAgIHNNaWQgPSBHLm44O1xuICAgICAgICAgICAgc091dCA9IEcubjg7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2lmZnRcIjtcbiAgICAgICAgICAgICAgICBmbkZGVEZpbmFsID0gXCJmcm1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJmcm1fZmZ0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZikpIHtcbiAgICAgICAgICAgIGJ1ZmYgPSBjdXJ2ZS5hcnJheTJidWZmZXIoYnVmZiwgc0luKTtcbiAgICAgICAgICAgIHJldHVybkFycmF5ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmLmJ5dGVMZW5ndGggLyBzSW47XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGlmICAoKDEgPDwgYml0cykgIT0gblBvaW50cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmZ0IG11c3QgYmUgbXVsdGlwbGUgb2YgMlwiICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW52O1xuICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgaW52ID0gRnIuaW52KEZyLmUoblBvaW50cykpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAoblBvaW50cyA8PSAoMSA8PCBNQVhfQklUU19USFJFQUQpKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDAsIGxlbjogc01pZCpuUG9pbnRzfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmfSk7XG4gICAgICAgICAgICBpZiAoZm5JbjJNaWQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogblBvaW50c30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5OYW1lLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBuUG9pbnRzfV19KTtcbiAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG5Qb2ludHN9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBzT3V0Km5Qb2ludHN9KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdG0ucXVldWVBY3Rpb24odGFzayk7XG4gICAgICAgICAgICBidWZmT3V0ID0gcmVzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgc0luKTtcblxuICAgICAgICAgICAgbGV0IGNodW5rcztcbiAgICAgICAgICAgIGNvbnN0IHBvaW50c0luQ2h1bmsgPSAxIDw8IE1BWF9CSVRTX1RIUkVBRDtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmYuc2xpY2UoIChwb2ludHNJbkNodW5rICogaSkqc0luLCAocG9pbnRzSW5DaHVuayAqIChpKzEpKSpzSW4pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZDaHVua30pO1xuICAgICAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PU1BWF9CSVRTX1RIUkVBRDtqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDowLCB2YXI6IDAsIGxlbjogc01pZCpwb2ludHNJbkNodW5rfSk7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYGZmdDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2h1bmtzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykgY2h1bmtzW2ldID0gY2h1bmtzW2ldWzBdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gTUFYX0JJVFNfVEhSRUFEKzE7ICAgaTw9Yml0czsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBmZnQgam9pbiAke2l9LyR7Yml0c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBGci5leHAoIEZyLndbaV0sIGsqcG9pbnRzSW5DaHVuayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNodW5rc1tvMV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbkZGVEZpbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogNCwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogNH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5NaWQyT3V0LCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzSW5DaHVuaypzT3V0fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzSW5DaHVuaypzTWlkfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzFdID0gcmVzQ2h1bmtbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzICogc091dCk7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICAgICAgbGV0IHA9IHNPdXQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT1uQ2h1bmtzLTE7IGk+MDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gcG9pbnRzSW5DaHVuaypzT3V0O1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldOyAgLy8gTGliZXJhdGUgbWVtXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgwLCAocG9pbnRzSW5DaHVuay0xKSpzT3V0KSwgcCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBidWZmT3V0LnNldChjaHVua3NbaV0sIHBvaW50c0luQ2h1bmsqc091dCppKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmV0dXJuQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJ2ZS5idWZmZXIyYXJyYXkoYnVmZk91dCwgc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEcuZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9mZnQoYnVmZiwgZmFsc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyKTtcbiAgICB9O1xuXG4gICAgRy5pZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9mZnQoYnVmZiwgdHJ1ZSwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIpO1xuICAgIH07XG5cbiAgICBHLmZmdE1peCA9IGFzeW5jIGZ1bmN0aW9uIGZmdE1peChidWZmKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuRkZUSm9pbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMW1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgY29uc3QgcG93ZXIgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGxldCBuQ2h1bmtzID0gMSA8PCBsb2cyKHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cbiAgICAgICAgY29uc3QgcG93ZXJDaHVuayA9IGxvZzIocG9pbnRzUGVyQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYiA9IGJ1ZmYuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBifSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PXBvd2VyQ2h1bms7IGorKykge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBqfVxuICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIGNodW5rc1tpXSA9IHJlc3VsdFtpXVswXTtcblxuXG4gICAgICAgIGZvciAobGV0IGkgPSBwb3dlckNodW5rKzE7IGk8PXBvd2VyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5Hcm91cHMgPSAxIDw8IChwb3dlciAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c1BlckNodW5rKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5jID0gRnIud1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNodW5rc1tvMV19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBjaHVua3NbbzJdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3R9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZUSm9pbiwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzQ2h1bmsgPSByZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28xXSA9IHJlc0NodW5rWzBdO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0cpO1xuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICBwKz1jaHVua3NbaV0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRKb2luID0gYXN5bmMgZnVuY3Rpb24gZmZ0Sm9pbihidWZmMSwgYnVmZjIsIGZpcnN0LCBpbmMpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1ZmYxLmJ5dGVMZW5ndGggIT0gYnVmZjIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmMS5ieXRlTGVuZ3RoIC8gc0cpO1xuICAgICAgICBpZiAoblBvaW50cyAhPSAxIDw8IGxvZzIoblBvaW50cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50c1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuQ2h1bmtzID0gMSA8PCBsb2cyKHRtLmNvbmN1cnJlbmN5KTtcbiAgICAgICAgaWYgKG5Qb2ludHMgPD0gbkNodW5rcyoyKSBuQ2h1bmtzID0gMTtcblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IG5Qb2ludHMgLyBuQ2h1bmtzO1xuXG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Q2h1bmsgPSBGci5tdWwoZmlyc3QsIEZyLmV4cChpbmMsIGkqcG9pbnRzUGVyQ2h1bmspKTtcbiAgICAgICAgICAgIGNvbnN0IGIxID0gYnVmZjEuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgY29uc3QgYjIgPSBidWZmMi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGIxfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGIyfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0Q2h1bmt9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNQZXJDaHVua30sXG4gICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQxID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIGNvbnN0IGZ1bGxCdWZmT3V0MiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0cpO1xuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQyLnNldChyZXN1bHRbaV1bMV0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2Z1bGxCdWZmT3V0MSwgZnVsbEJ1ZmZPdXQyXTtcbiAgICB9O1xuXG4gICAgRy5mZnRGaW5hbCA9ICBhc3luYyBmdW5jdGlvbiBmZnRGaW5hbChidWZmLCBmYWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5Ub0FmZmluZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cyAvIHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoaSpwb2ludHNQZXJDaHVuaytuKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogZmFjdG9yfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNHb3V0fSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG59XG4iLCJpbXBvcnQgV2FzbUZpZWxkMSBmcm9tIFwiLi93YXNtX2ZpZWxkMS5qc1wiO1xuaW1wb3J0IFdhc21GaWVsZDIgZnJvbSBcIi4vd2FzbV9maWVsZDIuanNcIjtcbmltcG9ydCBXYXNtRmllbGQzIGZyb20gXCIuL3dhc21fZmllbGQzLmpzXCI7XG5pbXBvcnQgV2FzbUN1cnZlIGZyb20gXCIuL3dhc21fY3VydmUuanNcIjtcbmltcG9ydCBidWlsZFRocmVhZE1hbmFnZXIgZnJvbSBcIi4vdGhyZWFkbWFuLmpzXCI7XG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5pbXBvcnQgYnVpbGRCYXRjaEFwcGx5S2V5IGZyb20gXCIuL2VuZ2luZV9hcHBseWtleS5qc1wiO1xuaW1wb3J0IGJ1aWxkUGFpcmluZyBmcm9tIFwiLi9lbmdpbmVfcGFpcmluZy5qc1wiO1xuaW1wb3J0IGJ1aWxkTXVsdGlFeHAgZnJvbSBcIi4vZW5naW5lX211bHRpZXhwLmpzXCI7XG5pbXBvcnQgYnVpbGRGRlQgZnJvbSBcIi4vZW5naW5lX2ZmdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBidWlsZEVuZ2luZShwYXJhbXMpIHtcblxuICAgIGNvbnN0IHRtID0gYXdhaXQgYnVpbGRUaHJlYWRNYW5hZ2VyKHBhcmFtcy53YXNtLCBwYXJhbXMuc2luZ2xlVGhyZWFkKTtcblxuXG4gICAgY29uc3QgY3VydmUgPSB7fTtcblxuICAgIGN1cnZlLnEgPSBTY2FsYXIuZShwYXJhbXMud2FzbS5xKTtcbiAgICBjdXJ2ZS5yID0gU2NhbGFyLmUocGFyYW1zLndhc20ucik7XG4gICAgY3VydmUubmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgIGN1cnZlLnRtID0gdG07XG4gICAgY3VydmUucHJlUFNpemUgPSBwYXJhbXMud2FzbS5wcmVQU2l6ZTtcbiAgICBjdXJ2ZS5wcmVRU2l6ZSA9IHBhcmFtcy53YXNtLnByZVFTaXplO1xuICAgIGN1cnZlLkZyID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZnJtXCIsIHBhcmFtcy5uOHIsIHBhcmFtcy5yKTtcbiAgICBjdXJ2ZS5GMSA9IG5ldyBXYXNtRmllbGQxKHRtLCBcImYxbVwiLCBwYXJhbXMubjhxLCBwYXJhbXMucSk7XG4gICAgY3VydmUuRjIgPSBuZXcgV2FzbUZpZWxkMih0bSwgXCJmMm1cIiwgY3VydmUuRjEpO1xuICAgIGN1cnZlLkcxID0gbmV3IFdhc21DdXJ2ZSh0bSwgXCJnMW1cIiwgY3VydmUuRjEsIHBhcmFtcy53YXNtLnBHMWdlbiwgcGFyYW1zLndhc20ucEcxYiwgcGFyYW1zLmNvZmFjdG9yRzEpO1xuICAgIGN1cnZlLkcyID0gbmV3IFdhc21DdXJ2ZSh0bSwgXCJnMm1cIiwgY3VydmUuRjIsIHBhcmFtcy53YXNtLnBHMmdlbiwgcGFyYW1zLndhc20ucEcyYiwgcGFyYW1zLmNvZmFjdG9yRzIpO1xuICAgIGN1cnZlLkY2ID0gbmV3IFdhc21GaWVsZDModG0sIFwiZjZtXCIsIGN1cnZlLkYyKTtcbiAgICBjdXJ2ZS5GMTIgPSBuZXcgV2FzbUZpZWxkMih0bSwgXCJmdG1cIiwgY3VydmUuRjYpO1xuXG4gICAgY3VydmUuR3QgPSBjdXJ2ZS5GMTI7XG5cbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkcyXCIpO1xuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJGclwiKTtcblxuICAgIGJ1aWxkTXVsdGlFeHAoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRNdWx0aUV4cChjdXJ2ZSwgXCJHMlwiKTtcblxuICAgIGJ1aWxkRkZUKGN1cnZlLCBcIkcxXCIpO1xuICAgIGJ1aWxkRkZUKGN1cnZlLCBcIkcyXCIpO1xuICAgIGJ1aWxkRkZUKGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRQYWlyaW5nKGN1cnZlKTtcblxuICAgIGN1cnZlLmFycmF5MmJ1ZmZlciA9IGZ1bmN0aW9uKGFyciwgc0cpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHKmFyci5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KGFycltpXSwgaSpzRyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9O1xuXG4gICAgY3VydmUuYnVmZmVyMmFycmF5ID0gZnVuY3Rpb24oYnVmZiAsIHNHKSB7XG4gICAgICAgIGNvbnN0IG49IGJ1ZmYubGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnVmZi5zbGljZShpKnNHLCBpKnNHK3NHKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cblxuIiwiaW1wb3J0IHdhc21jdXJ2ZXMgZnJvbSBcIndhc21jdXJ2ZXNcIjtcbmltcG9ydCBidWlsZEVuZ2luZSBmcm9tIFwiLi9lbmdpbmUuanNcIjtcbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxubGV0IGN1cnZlO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBidWlsZEJuMTI4KCkge1xuXG4gICAgaWYgKGN1cnZlKSByZXR1cm4gY3VydmU7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJuMTI4XCIsXG4gICAgICAgIHdhc206IHdhc21jdXJ2ZXMuYm4xMjhfd2FzbSxcbiAgICAgICAgcTogU2NhbGFyLmUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKSxcbiAgICAgICAgcjogU2NhbGFyLmUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN1wiKSxcbiAgICAgICAgbjhxOiAzMixcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMjogU2NhbGFyLmUoXCIzMDY0NGU3MmUxMzFhMDI5Yjg1MDQ1YjY4MTgxNTg1ZTA2Y2VlY2RhNTcyYTI0ODkzNDVmMjI5OWMwZjlmYThkXCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBmYWxzZVxuICAgIH07XG5cbiAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG4gICAgY3VydmUudGVybWluYXRlID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgIGN1cnZlID0gbnVsbDtcbiAgICAgICAgYXdhaXQgdGhpcy50bS50ZXJtaW5hdGUoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG4iLCJpbXBvcnQgd2FzbWN1cnZlcyBmcm9tIFwid2FzbWN1cnZlc1wiO1xuaW1wb3J0IGJ1aWxkRW5naW5lIGZyb20gXCIuL2VuZ2luZS5qc1wiO1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5sZXQgY3VydmU7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQmxzMTIzODEoKSB7XG5cbiAgICBpZiAoY3VydmUpIHJldHVybiBjdXJ2ZTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYmxzMTIzODFcIixcbiAgICAgICAgd2FzbTogd2FzbWN1cnZlcy5ibHMxMjM4MV93YXNtLFxuICAgICAgICBxOiBTY2FsYXIuZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNiksXG4gICAgICAgIHI6IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNiksXG4gICAgICAgIG44cTogNDgsXG4gICAgICAgIG44cjogMzIsXG4gICAgICAgIGNvZmFjdG9yRzE6IFNjYWxhci5lKFwiMHgzOTZjOGMwMDU1NTVlMTU2OGMwMGFhYWIwMDAwYWFhYlwiLCAxNiksXG4gICAgICAgIGNvZmFjdG9yRzI6IFNjYWxhci5lKFwiMHg1ZDU0M2E5NTQxNGU3ZjEwOTFkNTA3OTI4NzZhMjAyY2Q5MWRlNDU0NzA4NWFiYWE2OGEyMDViMmU1YTdkZGZhNjI4ZjFjYjRkOWU4MmVmMjE1MzdlMjkzYTY2OTFhZTE2MTZlYzZlNzg2ZjBjNzBjZjFjMzhlMzFjNzIzOGU1XCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBmYWxzZVxuICAgIH07XG5cbiAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG5cbiAgICBjdXJ2ZS50ZXJtaW5hdGUgPSBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgICAgY3VydmUgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLnRtLnRlcm1pbmF0ZSgpO1xuICAgIH07XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG4iLCJcbmltcG9ydCAqIGFzIF9TY2FsYXIgIGZyb20gXCIuL3NyYy9zY2FsYXIuanNcIjtcbmV4cG9ydCBjb25zdCBTY2FsYXI9X1NjYWxhcjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFBvbEZpZWxkfSBmcm9tIFwiLi9zcmMvcG9sZmllbGQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGMUZpZWxkfSBmcm9tIFwiLi9zcmMvZjFmaWVsZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEYyRmllbGR9IGZyb20gXCIuL3NyYy9mMmZpZWxkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgRjNGaWVsZH0gZnJvbSBcIi4vc3JjL2YzZmllbGQuanNcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFpxRmllbGR9IGZyb20gXCIuL3NyYy9mMWZpZWxkLmpzXCI7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBFQ30gZnJvbSBcIi4vc3JjL2VjLmpzXCI7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBidWlsZEJuMTI4fSBmcm9tIFwiLi9zcmMvYm4xMjguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBidWlsZEJsczEyMzgxfSBmcm9tIFwiLi9zcmMvYmxzMTIzODEuanNcIjtcblxuaW1wb3J0ICogYXMgX3V0aWxzIGZyb20gXCIuL3NyYy91dGlscy5qc1wiO1xuZXhwb3J0IGNvbnN0IHV0aWxzID0gX3V0aWxzO1xuZXhwb3J0IHtkZWZhdWx0IGFzIENoYUNoYX0gZnJvbSBcIi4vc3JjL2NoYWNoYS5qc1wiO1xuXG4iLCJcbmltcG9ydCBmcyBmcm9tXCJmc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbihmaWxlTmFtZSwgb3BlbkZsYWdzLCBjYWNoZVNpemUpIHtcbiAgICBjYWNoZVNpemUgPSBjYWNoZVNpemUgfHwgNDA5Nio2NDtcbiAgICBpZiAoW1widytcIiwgXCJ3eCtcIiwgXCJyXCIsIFwiYXgrXCIsIFwiYStcIl0uaW5kZXhPZihvcGVuRmxhZ3MpIDwwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9wZW4gb3B0aW9uXCIpO1xuICAgIGNvbnN0IGZkID1hd2FpdCBmcy5wcm9taXNlcy5vcGVuKGZpbGVOYW1lLCBvcGVuRmxhZ3MpO1xuXG4gICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmZC5zdGF0KCk7XG5cbiAgICByZXR1cm4gIG5ldyBGYXN0RmlsZShmZCwgc3RhdHMsIGNhY2hlU2l6ZSwgZmlsZU5hbWUpO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIEZhc3RGaWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGZkLCBzdGF0cywgY2FjaGVTaXplLCBmaWxlTmFtZSkge1xuICAgICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHRoaXMuZmQgPSBmZDtcbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgICAgICB0aGlzLnBhZ2VCaXRzID0gODtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9ICgxIDw8IHRoaXMucGFnZUJpdHMpO1xuICAgICAgICB3aGlsZSAodGhpcy5wYWdlU2l6ZSA8IHN0YXRzLmJsa3NpemUqNCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlQml0cyArKztcbiAgICAgICAgICAgIHRoaXMucGFnZVNpemUgKj0gMjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHN0YXRzLnNpemU7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguZmxvb3IoKHN0YXRzLnNpemUgLTEpIC8gdGhpcy5wYWdlU2l6ZSkrMTtcbiAgICAgICAgdGhpcy5tYXhQYWdlc0xvYWRlZCA9IE1hdGguZmxvb3IoIGNhY2hlU2l6ZSAvIHRoaXMucGFnZVNpemUpKzE7XG4gICAgICAgIHRoaXMucGFnZXMgPSB7fTtcbiAgICAgICAgdGhpcy5wZW5kaW5nTG9hZHMgPSBbXTtcbiAgICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIF9sb2FkUGFnZShwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PiB7XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdMb2Fkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYWdlOiBwLFxuICAgICAgICAgICAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIF90cmlnZ2VyTG9hZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHByb2Nlc3NQZW5kaW5nTG9hZHMoKTtcbiAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKS5sZW5ndGggPj0gc2VsZi5tYXhQYWdlc0xvYWRlZCkge1xuICAgICAgICAgICAgY29uc3QgZHAgPSBnZXREZWxldGFibGVQYWdlKCk7XG4gICAgICAgICAgICBpZiAoZHA8MCkgeyAgLy8gLy8gTm8gc2l6ZXMgYXZhaWxhYmxlXG4vLyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZiksIDEwMDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgc2VsZi5wYWdlc1tkcF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9hZCA9IHNlbGYucGVuZGluZ0xvYWRzLnNoaWZ0KCk7XG4gICAgICAgIGlmIChsb2FkLnBhZ2U+PXNlbGYudG90YWxQYWdlcykge1xuICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdID0ge1xuICAgICAgICAgICAgICAgIGRpcnR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBidWZmOiBuZXcgVWludDhBcnJheShzZWxmLnBhZ2VTaXplKSxcbiAgICAgICAgICAgICAgICBwZW5kaW5nT3BzOiAxLFxuICAgICAgICAgICAgICAgIHNpemU6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZi5yZWFkaW5nKSB7XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdMb2Fkcy51bnNoaWZ0KGxvYWQpO1xuICAgICAgICAgICAgcmV0dXJuOyAgLy8gT25seSBvbmUgcmVhZCBhdCBhIHRpbWUuXG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLnJlYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBwYWdlID0ge1xuICAgICAgICAgICAgZGlydHk6IGZhbHNlLFxuICAgICAgICAgICAgYnVmZjogbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlU2l6ZSksXG4gICAgICAgICAgICBwZW5kaW5nT3BzOiAxLFxuICAgICAgICAgICAgc2l6ZTogMFxuICAgICAgICB9O1xuICAgICAgICBzZWxmLmZkLnJlYWQocGFnZS5idWZmLCAwLCBzZWxmLnBhZ2VTaXplLCBsb2FkLnBhZ2Uqc2VsZi5wYWdlU2l6ZSkudGhlbigocmVzKT0+IHtcbiAgICAgICAgICAgIHBhZ2Uuc2l6ZSA9IHJlcy5ieXRlc1JlYWQ7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0gPSBwYWdlO1xuICAgICAgICAgICAgc2VsZi5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgbG9hZC5yZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1BlbmRpbmdMb2FkcygpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BlbmRpbmdMb2FkcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9hZCA9IHNlbGYucGVuZGluZ0xvYWRzW2ldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZi5wYWdlc1tsb2FkLnBhZ2VdICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnBlbmRpbmdPcHMgKys7XG4gICAgICAgICAgICAgICAgICAgIGxvYWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BlbmRpbmdMb2Fkcy5wdXNoKGxvYWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0xvYWRzID0gbmV3UGVuZGluZ0xvYWRzO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RGVsZXRhYmxlUGFnZSgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHAgaW4gc2VsZi5wYWdlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BdO1xuICAgICAgICAgICAgICAgIGlmICgocGFnZS5kaXJ0eSA9PSBmYWxzZSkmJihwYWdlLnBlbmRpbmdPcHM9PTApKSByZXR1cm4gcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF90cmlnZ2VyV3JpdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHAgPSBzZWxmLl9nZXREaXJ0eVBhZ2UoKTtcbiAgICAgICAgaWYgKHA8MCkge1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0Nsb3NlKSBzZWxmLnBlbmRpbmdDbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYud3JpdGluZz10cnVlO1xuICAgICAgICBzZWxmLnBhZ2VzW3BdLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgIHNlbGYuZmQud3JpdGUoc2VsZi5wYWdlc1twXS5idWZmLCAwLCBzZWxmLnBhZ2VzW3BdLnNpemUsIHAqc2VsZi5wYWdlU2l6ZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZWxmLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyV3JpdGUuYmluZChzZWxmKSk7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgV3JpdGluZzogXCIrZXJyKTtcbiAgICAgICAgICAgIHNlbGYuZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIF9nZXREaXJ0eVBhZ2UoKSB7XG4gICAgICAgIGZvciAobGV0IHAgaW4gdGhpcy5wYWdlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnZXNbcF0uZGlydHkpIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuLypcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4qL1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi50b3RhbFNpemUgPCBwb3MgKyBidWZmLmJ5dGVMZW5ndGgpIHNlbGYudG90YWxTaXplID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIC8vIGZvciAobGV0IGk9Zmlyc3RQYWdlOyBpPD1sYXN0UGFnZTsgaSsrKSBhd2FpdCBzZWxmLl9sb2FkUGFnZShpKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgYXdhaXQgc2VsZi5fbG9hZFBhZ2UocCk7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IHNlbGYucGFnZVNpemUpID8gKHNlbGYucGFnZVNpemUgLW8pIDogcjtcbiAgICAgICAgICAgIGNvbnN0IHNyY1ZpZXcgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlTGVuZ3RoIC0gciwgbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlc1twXS5idWZmLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBkc3RWaWV3LnNldChzcmNWaWV3KTtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbcF0uZGlydHkgPSB0cnVlO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5zaXplID0gTWF0aC5tYXgobytsLCBzZWxmLnBhZ2VzW3BdLnNpemUpO1xuICAgICAgICAgICAgaWYgKHA+PXNlbGYudG90YWxQYWdlcykge1xuICAgICAgICAgICAgICAgIHNlbGYudG90YWxQYWdlcyA9IHArMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBpZiAobGVuID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGxlbiA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IobGVuICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBzZWxmLnBvcyA9IHBvcytsZW47XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gc2VsZi5wYWdlU2l6ZSk7XG5cbiAgICAgICAgbGV0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IHBvcyArIGxlbiA+IHNlbGYudG90YWxTaXplID8gbGVuIC0gKHBvcyArIGxlbiAtIHNlbGYudG90YWxTaXplKTogbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBhd2FpdCBzZWxmLl9sb2FkUGFnZShwKTtcbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIG8sIGwpO1xuICAgICAgICAgICAgYnVmZi5zZXQoc3JjVmlldywgbGVuLXIpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBfdHJ5Q2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoIXNlbGYucGVuZGluZ0Nsb3NlKSByZXR1cm47XG4gICAgICAgIGlmIChzZWxmLmVycm9yKSB7XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdDbG9zZVJlamVjdChzZWxmLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwID0gc2VsZi5fZ2V0RGlydHlQYWdlKCk7XG4gICAgICAgIGlmICgocD49MCkgfHwgKHNlbGYud3JpdGluZykgfHwgKHNlbGYucmVhZGluZykgfHwgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSkgcmV0dXJuO1xuICAgICAgICBzZWxmLnBlbmRpbmdDbG9zZSgpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHNlbGYucGVuZGluZ0Nsb3NlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2xvc2luZyB0aGUgZmlsZSB0d2ljZVwiKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlID0gcmVzb2x2ZTtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlUmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgfSkudGhlbigoKT0+IHtcbiAgICAgICAgICAgIHNlbGYuZmQuY2xvc2UoKTtcbiAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgc2VsZi5mZC5jbG9zZSgpO1xuICAgICAgICAgICAgdGhyb3cgKGVycik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGRpc2NhcmQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBhd2FpdCBzZWxmLmNsb3NlKCk7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayh0aGlzLmZpbGVOYW1lKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3KG8pIHtcbiAgICBjb25zdCBpbml0aWFsU2l6ZSA9IG8uaW5pdGlhbFNpemUgfHwgMTw8MjA7XG4gICAgY29uc3QgZmQgPSBuZXcgTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLm8uZGF0YSA9IG5ldyBVaW50OEFycmF5KGluaXRpYWxTaXplKTtcbiAgICBmZC5hbGxvY1NpemUgPSBpbml0aWFsU2l6ZTtcbiAgICBmZC50b3RhbFNpemUgPSAwO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5hbGxvY1NpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC50b3RhbFNpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IHRydWU7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZyhvKSB7XG4gICAgY29uc3QgZmQgPSBuZXcgTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLmFsbG9jU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnRvdGFsU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcbmNvbnN0IHRtcEJ1ZmY2NCA9IG5ldyBVaW50OEFycmF5KDgpO1xuY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuY2xhc3MgTWVtRmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEgPDwgMTQ7ICAvLyBmb3IgY29tcGF0aWJpbGl0eVxuICAgIH1cblxuICAgIF9yZXNpemVJZk5lZWRlZChuZXdMZW4pIHtcbiAgICAgICAgaWYgKG5ld0xlbiA+IHRoaXMuYWxsb2NTaXplKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdBbGxvY1NpemUgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSArICgxIDw8IDIwKSxcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKHRoaXMuYWxsb2NTaXplICogMS4xKSxcbiAgICAgICAgICAgICAgICBuZXdMZW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IFVpbnQ4QXJyYXkobmV3QWxsb2NTaXplKTtcbiAgICAgICAgICAgIG5ld0RhdGEuc2V0KHRoaXMuby5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gbmV3RGF0YTtcbiAgICAgICAgICAgIHRoaXMuYWxsb2NTaXplID0gbmV3QWxsb2NTaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGUoYnVmZiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPXRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkgdGhyb3cgbmV3IEVycm9yKFwiV3JpdGluZyBhIHJlYWQgb25seSBmaWxlXCIpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5vLmRhdGEuc2V0KGJ1ZmYsIHBvcyk7XG5cbiAgICAgICAgaWYgKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCA+IHRoaXMudG90YWxTaXplKSB0aGlzLnRvdGFsU2l6ZSA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkKGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChwb3MgKyBsZW4gPiB0aGlzLnRvdGFsU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGxlbik7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IHRoaXMuby5kYXRhLnNsaWNlKHBvcywgcG9zK2xlbik7XG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgbGVuO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuby5kYXRhLmJ5dGVMZW5ndGggIT0gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gdGhpcy5vLmRhdGEuc2xpY2UoMCwgdGhpcy50b3RhbFNpemUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyByZWFkVUxFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVCRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMigwLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTY0KHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg4LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzFdICogMHgxMDAwMDAwMDAgKyB2aWV3WzBdO1xuICAgIH1cblxufVxuIiwiY29uc3QgUEFHRV9TSVpFID0gMTw8MjI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXcobykge1xuICAgIGNvbnN0IGluaXRpYWxTaXplID0gby5pbml0aWFsU2l6ZSB8fCAwO1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBjb25zdCBuUGFnZXMgPSBpbml0aWFsU2l6ZSA/IE1hdGguZmxvb3IoKGluaXRpYWxTaXplIC0gMSkgLyBQQUdFX1NJWkUpKzEgOiAwO1xuICAgIGZkLm8uZGF0YSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuUGFnZXMtMTsgaSsrKSB7XG4gICAgICAgIGZkLm8uZGF0YS5wdXNoKCBuZXcgVWludDhBcnJheShQQUdFX1NJWkUpKTtcbiAgICB9XG4gICAgaWYgKG5QYWdlcykgZmQuby5kYXRhLnB1c2goIG5ldyBVaW50OEFycmF5KGluaXRpYWxTaXplIC0gUEFHRV9TSVpFKihuUGFnZXMtMSkpKTtcbiAgICBmZC50b3RhbFNpemUgPSAwO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC50b3RhbFNpemUgPSAoby5kYXRhLmxlbmd0aC0xKSogUEFHRV9TSVpFICsgby5kYXRhW28uZGF0YS5sZW5ndGgtMV0uYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IHRydWU7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZyhvKSB7XG4gICAgY29uc3QgZmQgPSBuZXcgQmlnTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLnRvdGFsU2l6ZSA9IChvLmRhdGEubGVuZ3RoLTEpKiBQQUdFX1NJWkUgKyBvLmRhdGFbby5kYXRhLmxlbmd0aC0xXS5ieXRlTGVuZ3RoO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcbmNvbnN0IHRtcEJ1ZmY2NCA9IG5ldyBVaW50OEFycmF5KDgpO1xuY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuY2xhc3MgQmlnTWVtRmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEgPDwgMTQ7ICAvLyBmb3IgY29tcGF0aWJpbGl0eVxuICAgIH1cblxuICAgIF9yZXNpemVJZk5lZWRlZChuZXdMZW4pIHtcblxuICAgICAgICBpZiAobmV3TGVuIDw9IHRoaXMudG90YWxTaXplKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGZpbGUgYm91bmRzXCIpO1xuXG4gICAgICAgIGNvbnN0IG5QYWdlcyA9IE1hdGguZmxvb3IoKG5ld0xlbiAtIDEpIC8gUEFHRV9TSVpFKSsxO1xuICAgICAgICBmb3IgKGxldCBpPSBNYXRoLm1heCh0aGlzLm8uZGF0YS5sZW5ndGgtMSwgMCk7IGk8blBhZ2VzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NpemUgPSBpPG5QYWdlcy0xID8gUEFHRV9TSVpFIDogbmV3TGVuIC0gKG5QYWdlcy0xKSpQQUdFX1NJWkU7XG4gICAgICAgICAgICBjb25zdCBwID0gbmV3IFVpbnQ4QXJyYXkobmV3U2l6ZSk7XG4gICAgICAgICAgICBpZiAoaSA9PSB0aGlzLm8uZGF0YS5sZW5ndGgtMSkgcC5zZXQodGhpcy5vLmRhdGFbaV0pO1xuICAgICAgICAgICAgdGhpcy5vLmRhdGFbaV0gPSBwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG90YWxTaXplID0gbmV3TGVuO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID10aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSByZWFkIG9ubHkgZmlsZVwiKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIsIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW3BdLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBkc3RWaWV3LnNldChzcmNWaWV3KTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkKGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChwb3MgKyBsZW4gPiB0aGlzLnRvdGFsU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGxlbik7XG5cbiAgICAgICAgY29uc3QgZmlyc3RQYWdlID0gTWF0aC5mbG9vcihwb3MgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGxldCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gcG9zICUgUEFHRV9TSVpFO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW3BdLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBidWZmLnNldChzcmNWaWV3LCBsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgIH1cblxuICAgIGFzeW5jIGRpc2NhcmQoKSB7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbn1cbiIsIi8qIGdsb2JhbCBmZXRjaCAqL1xuaW1wb3J0IHsgb3BlbiB9IGZyb20gXCIuL29zZmlsZS5qc1wiO1xuaW1wb3J0ICogYXMgbWVtRmlsZSBmcm9tIFwiLi9tZW1maWxlLmpzXCI7XG5pbXBvcnQgKiBhcyBiaWdNZW1GaWxlIGZyb20gXCIuL2JpZ21lbWZpbGUuanNcIjtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3ZlcnJpZGUobywgYikge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYlxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIFwidytcIiwgby5jYWNoZVNpemUpO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwibWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIG1lbUZpbGUuY3JlYXRlTmV3KG8pO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwiYmlnTWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIGJpZ01lbUZpbGUuY3JlYXRlTmV3KG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb092ZXJyaWRlKG8sIGIpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBcInd4K1wiLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRFeGlzdGluZyhvLCBiKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgZGF0YTogb1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZldGNoKG8pLnRoZW4oIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGFiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJ1ZmZcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG8gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICAgICAgY2FjaGVTaXplOiBiXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wZW4oby5maWxlTmFtZSwgXCJyXCIsIG8uY2FjaGVTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBtZW1GaWxlLnJlYWRFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3RpbmcobywgYikge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYlxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIFwiYStcIiwgby5jYWNoZVNpemUpO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwibWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIG1lbUZpbGUucmVhZFdyaXRlRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3RpbmdPckNyZWF0ZShvLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wZW4oby5maWxlTmFtZSwgXCJheCtcIiwgby5jYWNoZVNpemUpO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwibWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIG1lbUZpbGUucmVhZFdyaXRlRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuIiwiXG5pbXBvcnQgIHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQmluRmlsZShmaWxlTmFtZSwgdHlwZSwgbWF4VmVyc2lvbikge1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoZmlsZU5hbWUpO1xuXG4gICAgY29uc3QgYiA9IGF3YWl0IGZkLnJlYWQoNCk7XG4gICAgbGV0IHJlYWRlZFR5cGUgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIHJlYWRlZFR5cGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiW2ldKTtcblxuICAgIGlmIChyZWFkZWRUeXBlICE9IHR5cGUpIHRocm93IG5ldyBFcnJvcihmaWxlTmFtZSArIFwiOiBJbnZhbGlkIEZpbGUgZm9ybWF0XCIpO1xuXG4gICAgbGV0IHYgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGlmICh2Pm1heFZlcnNpb24pIHRocm93IG5ldyBFcnJvcihcIlZlcnNpb24gbm90IHN1cHBvcnRlZFwiKTtcblxuICAgIGNvbnN0IG5TZWN0aW9ucyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgLy8gU2NhbiBzZWN0aW9uc1xuICAgIGxldCBzZWN0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuU2VjdGlvbnM7IGkrKykge1xuICAgICAgICBsZXQgaHQgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgbGV0IGhsID0gYXdhaXQgZmQucmVhZFVMRTY0KCk7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjdGlvbnNbaHRdID09IFwidW5kZWZpbmVkXCIpIHNlY3Rpb25zW2h0XSA9IFtdO1xuICAgICAgICBzZWN0aW9uc1todF0ucHVzaCh7XG4gICAgICAgICAgICBwOiBmZC5wb3MsXG4gICAgICAgICAgICBzaXplOiBobFxuICAgICAgICB9KTtcbiAgICAgICAgZmQucG9zICs9IGhsO1xuICAgIH1cblxuICAgIHJldHVybiB7ZmQsIHNlY3Rpb25zfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIHZlcnNpb24sIG5TZWN0aW9ucykge1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShmaWxlTmFtZSk7XG5cbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPDQ7IGkrKykgYnVmZltpXSA9IHR5cGUuY2hhckNvZGVBdChpKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmLCAwKTsgLy8gTWFnaWMgXCJyMWNzXCJcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIodmVyc2lvbik7IC8vIFZlcnNpb25cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG5TZWN0aW9ucyk7IC8vIE51bWJlciBvZiBTZWN0aW9uc1xuXG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRXcml0ZVNlY3Rpb24oZmQsIGlkU2VjdGlvbikge1xuICAgIGlmICh0eXBlb2YgZmQud3JpdGluZ1NlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgd3JpdGluZyBhIHNlY3Rpb25cIik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihpZFNlY3Rpb24pOyAvLyBIZWFkZXIgdHlwZVxuICAgIGZkLndyaXRpbmdTZWN0aW9uID0ge1xuICAgICAgICBwU2VjdGlvblNpemU6IGZkLnBvc1xuICAgIH07XG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NCgwKTsgLy8gVGVtcG9yYWxseSBzZXQgdG8gMCBsZW5ndGhcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuZFdyaXRlU2VjdGlvbihmZCkge1xuICAgIGlmICh0eXBlb2YgZmQud3JpdGluZ1NlY3Rpb24gPT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIk5vdCB3cml0aW5nIGEgc2VjdGlvblwiKTtcblxuICAgIGNvbnN0IHNlY3Rpb25TaXplID0gZmQucG9zIC0gZmQud3JpdGluZ1NlY3Rpb24ucFNlY3Rpb25TaXplIC0gODtcbiAgICBjb25zdCBvbGRQb3MgPSBmZC5wb3M7XG4gICAgZmQucG9zID0gZmQud3JpdGluZ1NlY3Rpb24ucFNlY3Rpb25TaXplO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoc2VjdGlvblNpemUpO1xuICAgIGZkLnBvcyA9IG9sZFBvcztcbiAgICBkZWxldGUgZmQud3JpdGluZ1NlY3Rpb247XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBmZC5yZWFkaW5nU2VjdGlvbiAhPT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKFwiQWxyZWFkeSByZWFkaW5nIGEgc2VjdGlvblwiKTtcbiAgICBpZiAoIXNlY3Rpb25zW2lkU2VjdGlvbl0pICB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgKyBcIjogTWlzc2luZyBzZWN0aW9uIFwiKyBpZFNlY3Rpb24gKTtcbiAgICBpZiAoc2VjdGlvbnNbaWRTZWN0aW9uXS5sZW5ndGg+MSkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogU2VjdGlvbiBEdXBsaWNhdGVkIFwiICtpZFNlY3Rpb24pO1xuXG4gICAgZmQucG9zID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5wO1xuXG4gICAgZmQucmVhZGluZ1NlY3Rpb24gPSBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5kUmVhZFNlY3Rpb24oZmQsIG5vQ2hlY2spIHtcbiAgICBpZiAodHlwZW9mIGZkLnJlYWRpbmdTZWN0aW9uID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFub0NoZWNrKSB7XG4gICAgICAgIGlmIChmZC5wb3MtZmQucmVhZGluZ1NlY3Rpb24ucCAhPSAgZmQucmVhZGluZ1NlY3Rpb24uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzZWN0aW9uIHNpemUgcmVhZGluZ1wiKTtcbiAgICB9XG4gICAgZGVsZXRlIGZkLnJlYWRpbmdTZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVCaWdJbnQoZmQsIG4sIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobjgpO1xuICAgIFNjYWxhci50b1JwckxFKGJ1ZmYsIDAsIG4sIG44KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmLCBwb3MpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEJpZ0ludChmZCwgbjgsIHBvcykge1xuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKG44LCBwb3MpO1xuICAgIHJldHVybiBTY2FsYXIuZnJvbVJwckxFKGJ1ZmYsIDAsIG44KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlTZWN0aW9uKGZkRnJvbSwgc2VjdGlvbnMsIGZkVG8sIHNlY3Rpb25JZCkge1xuICAgIGNvbnN0IGNodW5rU2l6ZSA9IGZkRnJvbS5wYWdlU2l6ZTtcbiAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkRnJvbSwgc2VjdGlvbnMsIHNlY3Rpb25JZCk7XG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRUbywgc2VjdGlvbklkKTtcbiAgICBmb3IgKGxldCBwPTA7IHA8c2VjdGlvbnNbc2VjdGlvbklkXVswXS5zaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgY29uc3QgbCA9IE1hdGgubWluKHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0uc2l6ZSAtcCwgY2h1bmtTaXplKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkRnJvbS5yZWFkKGwpO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRUbyk7XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmRGcm9tKTtcblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZ1bGxTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKSB7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbik7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmQucmVhZChmZC5yZWFkaW5nU2VjdGlvbi5zaXplKTtcbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZCk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlY3Rpb25Jc0VxdWFsKGZkMSwgc2VjdGlvbnMxLCBmZDIsIHNlY3Rpb25zMiwgaWRTZWN0aW9uKSB7XG4gICAgY29uc3QgTUFYX0JVRkZfU0laRSA9IGZkMS5wYWdlU2l6ZSAqIDE2O1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQxLCBzZWN0aW9uczEsIGlkU2VjdGlvbik7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDIsIHNlY3Rpb25zMiwgaWRTZWN0aW9uKTtcbiAgICBpZiAoc2VjdGlvbnMxW2lkU2VjdGlvbl1bMF0uc2l6ZSAhPSBzZWN0aW9uczJbaWRTZWN0aW9uXVswXS5zaXplKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdG90YWxCeXRlcz1zZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplO1xuICAgIGZvciAobGV0IGk9MDsgaTx0b3RhbEJ5dGVzOyBpKz0gTUFYX0JVRkZfU0laRSkge1xuICAgICAgICBjb25zdCBuID0gTWF0aC5taW4odG90YWxCeXRlcy1pLCBNQVhfQlVGRl9TSVpFKTtcbiAgICAgICAgY29uc3QgYnVmZjEgPSBhd2FpdCBmZDEucmVhZChuKTtcbiAgICAgICAgY29uc3QgYnVmZjIgPSBhd2FpdCBmZDIucmVhZChuKTtcbiAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykgaWYgKGJ1ZmYxW2pdICE9IGJ1ZmYyW2pdKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IGVuZFJlYWRTZWN0aW9uKGZkMSk7XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQyKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbiIsImltcG9ydCB7IFNjYWxhciwgYnVpbGRCbjEyOCwgYnVpbGRCbHMxMjM4MX0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5jb25zdCBibHMxMjM4MXIgPSBTY2FsYXIuZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gU2NhbGFyLmUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN1wiKTtcblxuY29uc3QgYmxzMTIzODFxID0gU2NhbGFyLmUoXCIxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhYWJcIiwgMTYpO1xuY29uc3QgYm4xMjhxID0gU2NhbGFyLmUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbVIocikge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoU2NhbGFyLmVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KCk7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEociwgYmxzMTIzODFyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7U2NhbGFyLnRvU3RyaW5nKHIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUShxKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGlmIChTY2FsYXIuZXEocSwgYm4xMjhxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoKTtcbiAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShxLCBibHMxMjM4MXEpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtTY2FsYXIudG9TdHJpbmcocSl9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgY29uc3Qgbm9ybU5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuICAgIGlmIChbXCJCTjEyOFwiLCBcIkJOMjU0XCIsIFwiQUxUQk4xMjhcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoKTtcbiAgICB9IGVsc2UgaWYgKFtcIkJMUzEyMzgxXCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke25hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobikge1xuICAgICAgICByZXR1cm4gbi50b1VwcGVyQ2FzZSgpLm1hdGNoKC9bQS1aYS16MC05XSsvZykuam9pbihcIlwiKTtcbiAgICB9XG5cbn07XG5cbiIsImFzc2VydC5ub3RFcXVhbCA9IG5vdEVxdWFsXG5hc3NlcnQubm90T2sgPSBub3RPa1xuYXNzZXJ0LmVxdWFsID0gZXF1YWxcbmFzc2VydC5vayA9IGFzc2VydFxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2VydFxuXG5mdW5jdGlvbiBlcXVhbCAoYSwgYiwgbSkge1xuICBhc3NlcnQoYSA9PSBiLCBtKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxufVxuXG5mdW5jdGlvbiBub3RFcXVhbCAoYSwgYiwgbSkge1xuICBhc3NlcnQoYSAhPSBiLCBtKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxufVxuXG5mdW5jdGlvbiBub3RPayAodCwgbSkge1xuICBhc3NlcnQoIXQsIG0pXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAodCwgbSkge1xuICBpZiAoIXQpIHRocm93IG5ldyBFcnJvcihtIHx8ICdBc3NlcnRpb25FcnJvcicpXG59XG4iLCJcbm1vZHVsZS5leHBvcnRzID0gbG9hZFdlYkFzc2VtYmx5XG5cbmxvYWRXZWJBc3NlbWJseS5zdXBwb3J0ZWQgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnXG5cbmZ1bmN0aW9uIGxvYWRXZWJBc3NlbWJseSAob3B0cykge1xuICBpZiAoIWxvYWRXZWJBc3NlbWJseS5zdXBwb3J0ZWQpIHJldHVybiBudWxsXG5cbiAgdmFyIGltcCA9IG9wdHMgJiYgb3B0cy5pbXBvcnRzXG4gIHZhciB3YXNtID0gdG9VaW50OEFycmF5KCdBR0Z6YlFFQUFBQUJFQU5nQW45L0FHQURmMzkvQUdBQmZ3QURCUVFBQVFJQ0JRVUJBUXJvQndkTkJRWnRaVzF2Y25rQ0FBeGliR0ZyWlRKaVgybHVhWFFBQUE1aWJHRnJaVEppWDNWd1pHRjBaUUFCRFdKc1lXdGxNbUpmWm1sdVlXd0FBaEJpYkdGclpUSmlYMk52YlhCeVpYTnpBQU1Ldno4RXdBSUFJQUJDQURjREFDQUFRZ0EzQXdnZ0FFSUFOd01RSUFCQ0FEY0RHQ0FBUWdBM0F5QWdBRUlBTndNb0lBQkNBRGNETUNBQVFnQTNBemdnQUVJQU53TkFJQUJDQURjRFNDQUFRZ0EzQTFBZ0FFSUFOd05ZSUFCQ0FEY0RZQ0FBUWdBM0EyZ2dBRUlBTndOd0lBQkNBRGNEZUNBQVFvaVM4NTMvelBtRTZnQkJBQ2tEQUlVM0E0QUJJQUJDdTg2cXB0alE2N083ZjBFSUtRTUFoVGNEaUFFZ0FFS3I4TlAwcis2OHR6eEJFQ2tEQUlVM0E1QUJJQUJDOGUzMCtLV24vYWVsZjBFWUtRTUFoVGNEbUFFZ0FFTFJoWnJ2K3MrVWg5RUFRU0FwQXdDRk53T2dBU0FBUXAvWStkbkNrZHFDbTM5QktDa0RBSVUzQTZnQklBQkM2L3FHMnIrMTlzRWZRVEFwQXdDRk53T3dBU0FBUXZuQytKdVJvN1B3MndCQk9Da0RBSVUzQTdnQklBQkNBRGNEd0FFZ0FFSUFOd1BJQVNBQVFnQTNBOUFCQzIwQkEzOGdBRUhBQVdvaEF5QUFRY2dCYWlFRUlBUXBBd0NuSVFVQ1FBTkFJQUVnQWtZTkFTQUZRWUFCUmdSQUlBTWdBeWtEQUNBRnJYdzNBd0JCQUNFRklBQVFBd3NnQUNBRmFpQUJMUUFBT2dBQUlBVkJBV29oQlNBQlFRRnFJUUVNQUFzTElBUWdCYTAzQXdBTFlRRURmeUFBUWNBQmFpRUJJQUJCeUFGcUlRSWdBU0FCS1FNQUlBSXBBd0I4TndNQUlBQkNmemNEMEFFZ0Fpa0RBS2NoQXdKQUEwQWdBMEdBQVVZTkFTQUFJQU5xUVFBNkFBQWdBMEVCYWlFRERBQUxDeUFDSUFPdE53TUFJQUFRQXd1cU93SWdmZ2wvSUFCQmdBRnFJU0VnQUVHSUFXb2hJaUFBUVpBQmFpRWpJQUJCbUFGcUlTUWdBRUdnQVdvaEpTQUFRYWdCYWlFbUlBQkJzQUZxSVNjZ0FFRzRBV29oS0NBaEtRTUFJUUVnSWlrREFDRUNJQ01wQXdBaEF5QWtLUU1BSVFRZ0pTa0RBQ0VGSUNZcEF3QWhCaUFuS1FNQUlRY2dLQ2tEQUNFSVFvaVM4NTMvelBtRTZnQWhDVUs3enFxbTJORHJzN3QvSVFwQ3EvRFQ5Sy91dkxjOElRdEM4ZTMwK0tXbi9hZWxmeUVNUXRHRm11LzZ6NVNIMFFBaERVS2YyUG5ad3BIYWdwdC9JUTVDNi9xRzJyKzE5c0VmSVE5QytjTDRtNUdqcy9EYkFDRVFJQUFwQXdBaEVTQUFLUU1JSVJJZ0FDa0RFQ0VUSUFBcEF4Z2hGQ0FBS1FNZ0lSVWdBQ2tES0NFV0lBQXBBekFoRnlBQUtRTTRJUmdnQUNrRFFDRVpJQUFwQTBnaEdpQUFLUU5RSVJzZ0FDa0RXQ0VjSUFBcEEyQWhIU0FBS1FOb0lSNGdBQ2tEY0NFZklBQXBBM2doSUNBTklBQXBBOEFCaFNFTklBOGdBQ2tEMEFHRklROGdBU0FGSUJGOGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBU2ZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0UzeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCUjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVZmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGbng4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQmQ4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FZZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnR1h4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJwOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYmZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCMThmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWVmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIM3g4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQ0I4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FmZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRzN4OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJWOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBWmZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0dueDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElDQjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQWVmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dGM3g4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQko4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFkZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRVh4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJOOGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBY2ZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0dIeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCWjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQVVmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQmw4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFkZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnRVh4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJaOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVGZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0lIeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCNThmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWJmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIM3g4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQlI4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFYZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnR0h4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJKOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBYWZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZYeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCaDhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQWFmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdGSHg4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQko4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFlZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnSFh4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJ4OGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBZmZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0UzeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCZDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QVdmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dHM3g4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQlY4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FSZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSUh4OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJsOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBYWZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0VYeDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCWjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVlmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dFM3g4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQlY4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FiZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnSUh4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUI5OGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBU2ZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCMThmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQVhmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dHWHg4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQlI4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FlZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnRTN4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUIxOGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBWGZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0czeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCRjhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QWNmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dHWHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQlI4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFWZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSG54OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJoOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBV2ZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0lIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCOThmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVNmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdHbng4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQjE4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FXZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnRW54OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUNCOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBZmZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0hueDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCVjhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQWJmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdFWHg4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQmg4ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFYZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnRkh4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJwOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBVGZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0dYeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCeDhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWVmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQmg4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFmZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnSFh4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJKOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBVWZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0dueDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCWjhmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQVJmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dJSHg4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQlY4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FaZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnRjN4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUJOOGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBYmZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0YzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklDQjhmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQWZmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHbng4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQng4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFVZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnRVh4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJsOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBZGZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0UzeDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCNThmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVlmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dFbng4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQlY4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FiZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnRm54OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUJ0OGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBVGZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0dYeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCVjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVlmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGM3g4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQko4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FXZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnSUh4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJ4OGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYWZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0gzeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCUjhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWRmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIbng4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQkY4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FSZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRW54OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJOOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBVWZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0ZYeDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCWjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQVhmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dHSHg4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQmw4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFhZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRzN4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJ4OGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBZGZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0hueDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCOThmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQWdmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdIM3g4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQnQ4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFWZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR1h4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJwOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBZ2ZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0hueDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCZDhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQVNmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIWHg4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQkY4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFUZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnSEh4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJoOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBV2ZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZIeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnSVNBaEtRTUFJQUVnQ1lXRk53TUFJQ0lnSWlrREFDQUNJQXFGaFRjREFDQWpJQ01wQXdBZ0F5QUxoWVUzQXdBZ0pDQWtLUU1BSUFRZ0RJV0ZOd01BSUNVZ0pTa0RBQ0FGSUEyRmhUY0RBQ0FtSUNZcEF3QWdCaUFPaFlVM0F3QWdKeUFuS1FNQUlBY2dENFdGTndNQUlDZ2dLQ2tEQUNBSUlCQ0ZoVGNEQUFzPScpXG4gIHZhciByZWFkeSA9IG51bGxcblxuICB2YXIgbW9kID0ge1xuICAgIGJ1ZmZlcjogd2FzbSxcbiAgICBtZW1vcnk6IG51bGwsXG4gICAgZXhwb3J0czogbnVsbCxcbiAgICByZWFsbG9jOiByZWFsbG9jLFxuICAgIG9ubG9hZDogb25sb2FkXG4gIH1cblxuICBvbmxvYWQoZnVuY3Rpb24gKCkge30pXG5cbiAgcmV0dXJuIG1vZFxuXG4gIGZ1bmN0aW9uIHJlYWxsb2MgKHNpemUpIHtcbiAgICBtb2QuZXhwb3J0cy5tZW1vcnkuZ3JvdyhNYXRoLm1heCgwLCBNYXRoLmNlaWwoTWF0aC5hYnMoc2l6ZSAtIG1vZC5tZW1vcnkubGVuZ3RoKSAvIDY1NTM2KSkpXG4gICAgbW9kLm1lbW9yeSA9IG5ldyBVaW50OEFycmF5KG1vZC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG4gIH1cblxuICBmdW5jdGlvbiBvbmxvYWQgKGNiKSB7XG4gICAgaWYgKG1vZC5leHBvcnRzKSByZXR1cm4gY2IoKVxuXG4gICAgaWYgKHJlYWR5KSB7XG4gICAgICByZWFkeS50aGVuKGNiLmJpbmQobnVsbCwgbnVsbCkpLmNhdGNoKGNiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChvcHRzICYmIG9wdHMuYXN5bmMpIHRocm93IG5ldyBFcnJvcignYXN5bmMnKVxuICAgICAgc2V0dXAoe2luc3RhbmNlOiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh3YXNtKSwgaW1wKX0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWFkeSA9IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc20sIGltcCkudGhlbihzZXR1cClcbiAgICB9XG5cbiAgICBvbmxvYWQoY2IpXG4gIH1cblxuICBmdW5jdGlvbiBzZXR1cCAodykge1xuICAgIG1vZC5leHBvcnRzID0gdy5pbnN0YW5jZS5leHBvcnRzXG4gICAgbW9kLm1lbW9yeSA9IG1vZC5leHBvcnRzLm1lbW9yeSAmJiBtb2QuZXhwb3J0cy5tZW1vcnkuYnVmZmVyICYmIG5ldyBVaW50OEFycmF5KG1vZC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gdG9VaW50OEFycmF5IChzKSB7XG4gIGlmICh0eXBlb2YgYXRvYiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG5ldyBVaW50OEFycmF5KGF0b2Iocykuc3BsaXQoJycpLm1hcChjaGFyQ29kZUF0KSlcbiAgcmV0dXJuIChyZXF1aXJlKCdidWYnICsgJ2ZlcicpLkJ1ZmZlcikuZnJvbShzLCAnYmFzZTY0Jylcbn1cblxuZnVuY3Rpb24gY2hhckNvZGVBdCAoYykge1xuICByZXR1cm4gYy5jaGFyQ29kZUF0KDApXG59XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbmFub2Fzc2VydCcpXG52YXIgd2FzbSA9IHJlcXVpcmUoJy4vYmxha2UyYicpKClcblxudmFyIGhlYWQgPSA2NFxudmFyIGZyZWVMaXN0ID0gW11cblxubW9kdWxlLmV4cG9ydHMgPSBCbGFrZTJiXG52YXIgQllURVNfTUlOID0gbW9kdWxlLmV4cG9ydHMuQllURVNfTUlOID0gMTZcbnZhciBCWVRFU19NQVggPSBtb2R1bGUuZXhwb3J0cy5CWVRFU19NQVggPSA2NFxudmFyIEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuQllURVMgPSAzMlxudmFyIEtFWUJZVEVTX01JTiA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTX01JTiA9IDE2XG52YXIgS0VZQllURVNfTUFYID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVNfTUFYID0gNjRcbnZhciBLRVlCWVRFUyA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTID0gMzJcbnZhciBTQUxUQllURVMgPSBtb2R1bGUuZXhwb3J0cy5TQUxUQllURVMgPSAxNlxudmFyIFBFUlNPTkFMQllURVMgPSBtb2R1bGUuZXhwb3J0cy5QRVJTT05BTEJZVEVTID0gMTZcblxuZnVuY3Rpb24gQmxha2UyYiAoZGlnZXN0TGVuZ3RoLCBrZXksIHNhbHQsIHBlcnNvbmFsLCBub0Fzc2VydCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQmxha2UyYikpIHJldHVybiBuZXcgQmxha2UyYihkaWdlc3RMZW5ndGgsIGtleSwgc2FsdCwgcGVyc29uYWwsIG5vQXNzZXJ0KVxuICBpZiAoISh3YXNtICYmIHdhc20uZXhwb3J0cykpIHRocm93IG5ldyBFcnJvcignV0FTTSBub3QgbG9hZGVkLiBXYWl0IGZvciBCbGFrZTJiLnJlYWR5KGNiKScpXG4gIGlmICghZGlnZXN0TGVuZ3RoKSBkaWdlc3RMZW5ndGggPSAzMlxuXG4gIGlmIChub0Fzc2VydCAhPT0gdHJ1ZSkge1xuICAgIGFzc2VydChkaWdlc3RMZW5ndGggPj0gQllURVNfTUlOLCAnZGlnZXN0TGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJyArIEJZVEVTX01JTiArICcsIHdhcyBnaXZlbiAnICsgZGlnZXN0TGVuZ3RoKVxuICAgIGFzc2VydChkaWdlc3RMZW5ndGggPD0gQllURVNfTUFYLCAnZGlnZXN0TGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAnICsgQllURVNfTUFYICsgJywgd2FzIGdpdmVuICcgKyBkaWdlc3RMZW5ndGgpXG4gICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICBhc3NlcnQoa2V5IGluc3RhbmNlb2YgVWludDhBcnJheSwgJ2tleSBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcbiAgICAgIGFzc2VydChrZXkubGVuZ3RoID49IEtFWUJZVEVTX01JTiwgJ2tleSBtdXN0IGJlIGF0IGxlYXN0ICcgKyBLRVlCWVRFU19NSU4gKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgICBhc3NlcnQoa2V5Lmxlbmd0aCA8PSBLRVlCWVRFU19NQVgsICdrZXkgbXVzdCBiZSBhdCBsZWFzdCAnICsgS0VZQllURVNfTUFYICsgJywgd2FzIGdpdmVuICcgKyBrZXkubGVuZ3RoKVxuICAgIH1cbiAgICBpZiAoc2FsdCAhPSBudWxsKSB7XG4gICAgICBhc3NlcnQoc2FsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdzYWx0IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICAgICAgYXNzZXJ0KHNhbHQubGVuZ3RoID09PSBTQUxUQllURVMsICdzYWx0IG11c3QgYmUgZXhhY3RseSAnICsgU0FMVEJZVEVTICsgJywgd2FzIGdpdmVuICcgKyBzYWx0Lmxlbmd0aClcbiAgICB9XG4gICAgaWYgKHBlcnNvbmFsICE9IG51bGwpIHtcbiAgICAgIGFzc2VydChwZXJzb25hbCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdwZXJzb25hbCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcbiAgICAgIGFzc2VydChwZXJzb25hbC5sZW5ndGggPT09IFBFUlNPTkFMQllURVMsICdwZXJzb25hbCBtdXN0IGJlIGV4YWN0bHkgJyArIFBFUlNPTkFMQllURVMgKyAnLCB3YXMgZ2l2ZW4gJyArIHBlcnNvbmFsLmxlbmd0aClcbiAgICB9XG4gIH1cblxuICBpZiAoIWZyZWVMaXN0Lmxlbmd0aCkge1xuICAgIGZyZWVMaXN0LnB1c2goaGVhZClcbiAgICBoZWFkICs9IDIxNlxuICB9XG5cbiAgdGhpcy5kaWdlc3RMZW5ndGggPSBkaWdlc3RMZW5ndGhcbiAgdGhpcy5maW5hbGl6ZWQgPSBmYWxzZVxuICB0aGlzLnBvaW50ZXIgPSBmcmVlTGlzdC5wb3AoKVxuXG4gIHdhc20ubWVtb3J5LmZpbGwoMCwgMCwgNjQpXG4gIHdhc20ubWVtb3J5WzBdID0gdGhpcy5kaWdlc3RMZW5ndGhcbiAgd2FzbS5tZW1vcnlbMV0gPSBrZXkgPyBrZXkubGVuZ3RoIDogMFxuICB3YXNtLm1lbW9yeVsyXSA9IDEgLy8gZmFub3V0XG4gIHdhc20ubWVtb3J5WzNdID0gMSAvLyBkZXB0aFxuXG4gIGlmIChzYWx0KSB3YXNtLm1lbW9yeS5zZXQoc2FsdCwgMzIpXG4gIGlmIChwZXJzb25hbCkgd2FzbS5tZW1vcnkuc2V0KHBlcnNvbmFsLCA0OClcblxuICBpZiAodGhpcy5wb2ludGVyICsgMjE2ID4gd2FzbS5tZW1vcnkubGVuZ3RoKSB3YXNtLnJlYWxsb2ModGhpcy5wb2ludGVyICsgMjE2KSAvLyB3ZSBuZWVkIDIxNiBieXRlcyBmb3IgdGhlIHN0YXRlXG4gIHdhc20uZXhwb3J0cy5ibGFrZTJiX2luaXQodGhpcy5wb2ludGVyLCB0aGlzLmRpZ2VzdExlbmd0aClcblxuICBpZiAoa2V5KSB7XG4gICAgdGhpcy51cGRhdGUoa2V5KVxuICAgIHdhc20ubWVtb3J5LmZpbGwoMCwgaGVhZCwgaGVhZCArIGtleS5sZW5ndGgpIC8vIHdoaXRlb3V0IGtleVxuICAgIHdhc20ubWVtb3J5W3RoaXMucG9pbnRlciArIDIwMF0gPSAxMjhcbiAgfVxufVxuXG5cbkJsYWtlMmIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBhc3NlcnQodGhpcy5maW5hbGl6ZWQgPT09IGZhbHNlLCAnSGFzaCBpbnN0YW5jZSBmaW5hbGl6ZWQnKVxuICBhc3NlcnQoaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnaW5wdXQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG5cbiAgaWYgKGhlYWQgKyBpbnB1dC5sZW5ndGggPiB3YXNtLm1lbW9yeS5sZW5ndGgpIHdhc20ucmVhbGxvYyhoZWFkICsgaW5wdXQubGVuZ3RoKVxuICB3YXNtLm1lbW9yeS5zZXQoaW5wdXQsIGhlYWQpXG4gIHdhc20uZXhwb3J0cy5ibGFrZTJiX3VwZGF0ZSh0aGlzLnBvaW50ZXIsIGhlYWQsIGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHJldHVybiB0aGlzXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLmdldFBhcnRpYWxIYXNoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gd2FzbS5tZW1vcnkuc2xpY2UodGhpcy5wb2ludGVyLCB0aGlzLnBvaW50ZXIrMjE2KTtcbn1cblxuQmxha2UyYi5wcm90b3R5cGUuc2V0UGFydGlhbEhhc2ggPSBmdW5jdGlvbiAocGgpIHtcbiAgd2FzbS5tZW1vcnkuc2V0KHBoLCB0aGlzLnBvaW50ZXIpO1xufVxuXG5cbkJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuZmluYWxpemVkID09PSBmYWxzZSwgJ0hhc2ggaW5zdGFuY2UgZmluYWxpemVkJylcbiAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlXG5cbiAgZnJlZUxpc3QucHVzaCh0aGlzLnBvaW50ZXIpXG4gIHdhc20uZXhwb3J0cy5ibGFrZTJiX2ZpbmFsKHRoaXMucG9pbnRlcilcblxuICBpZiAoIWVuYyB8fCBlbmMgPT09ICdiaW5hcnknKSB7XG4gICAgcmV0dXJuIHdhc20ubWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIHJldHVybiBoZXhTbGljZSh3YXNtLm1lbW9yeSwgdGhpcy5wb2ludGVyICsgMTI4LCB0aGlzLmRpZ2VzdExlbmd0aClcbiAgfVxuXG4gIGFzc2VydChlbmMgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIGVuYy5sZW5ndGggPj0gdGhpcy5kaWdlc3RMZW5ndGgsICdpbnB1dCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpZ2VzdExlbmd0aDsgaSsrKSB7XG4gICAgZW5jW2ldID0gd2FzbS5tZW1vcnlbdGhpcy5wb2ludGVyICsgMTI4ICsgaV1cbiAgfVxuXG4gIHJldHVybiBlbmNcbn1cblxuLy8gbGlic29kaXVtIGNvbXBhdFxuQmxha2UyYi5wcm90b3R5cGUuZmluYWwgPSBCbGFrZTJiLnByb3RvdHlwZS5kaWdlc3RcblxuQmxha2UyYi5XQVNNID0gd2FzbSAmJiB3YXNtLmJ1ZmZlclxuQmxha2UyYi5TVVBQT1JURUQgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnXG5cbkJsYWtlMmIucmVhZHkgPSBmdW5jdGlvbiAoY2IpIHtcbiAgaWYgKCFjYikgY2IgPSBub29wXG4gIGlmICghd2FzbSkgcmV0dXJuIGNiKG5ldyBFcnJvcignV2ViQXNzZW1ibHkgbm90IHN1cHBvcnRlZCcpKVxuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXQsIGNhbiBiZSByZW1vdmVkIGluIGEgbmV3IG1ham9yXG4gIHZhciBwID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlamVjdCwgcmVzb2x2ZSkge1xuICAgIHdhc20ub25sb2FkKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJlc29sdmUoKVxuICAgICAgZWxzZSByZWplY3QoKVxuICAgICAgY2IoZXJyKVxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIHBcbn1cblxuQmxha2UyYi5wcm90b3R5cGUucmVhZHkgPSBCbGFrZTJiLnJlYWR5XG5cbmZ1bmN0aW9uIG5vb3AgKCkge31cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGxlbikge1xuICB2YXIgc3RyID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgc3RyICs9IHRvSGV4KGJ1ZltzdGFydCArIGldKVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCByZWFkbGluZSBmcm9tIFwicmVhZGxpbmVcIjtcbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZVtpXSA9IF9yZXZTbG93KGksIDgpO1xufVxuXG5mdW5jdGlvbiBfcmV2U2xvdyhpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdFJldmVyc2UoaWR4LCBiaXRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweEZGXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9nMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRIYXNoKGIsIHRpdGxlKSB7XG4gICAgY29uc3QgYSA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpO1xuICAgIGxldCBTID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSB7XG4gICAgICAgIGlmIChpPjApIFMgKz0gXCJcXG5cIjtcbiAgICAgICAgUyArPSBcIlxcdFxcdFwiO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8NDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoaj4wKSBTICs9IFwiIFwiO1xuICAgICAgICAgICAgUyArPSBhLmdldFVpbnQzMihpKjE2K2oqNCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGl0bGUpIFMgPSB0aXRsZSArIFwiXFxuXCIgKyBTO1xuICAgIHJldHVybiBTO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaElzRXF1YWwoaDEsIGgyKSB7XG4gICAgaWYgKGgxLmJ5dGVMZW5ndGggIT0gaDIuYnl0ZUxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBkdjEgPSBuZXcgSW50OEFycmF5KGgxKTtcbiAgICB2YXIgZHYyID0gbmV3IEludDhBcnJheShoMik7XG4gICAgZm9yICh2YXIgaSA9IDAgOyBpICE9IGgxLmJ5dGVMZW5ndGggOyBpKyspXG4gICAge1xuICAgICAgICBpZiAoZHYxW2ldICE9IGR2MltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lSGFzaGVyKGgpIHtcbiAgICBjb25zdCBwaCA9IGguZ2V0UGFydGlhbEhhc2goKTtcbiAgICBjb25zdCByZXMgPSBCbGFrZTJiKDY0KTtcbiAgICByZXMuc2V0UGFydGlhbEhhc2gocGgpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYW1lUmF0aW8oY3VydmUsIGcxcywgZzFzeCwgZzJzLCBnMnN4KSB7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXMpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXN4KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzeCkpIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gY3VydmUuRjEyLmVxKGN1cnZlLnBhaXJpbmcoZzFzLCBnMnN4KSwgY3VydmUucGFpcmluZyhnMXN4LCBnMnMpKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoZzFzLCBnMnN4LCBjdXJ2ZS5HMS5uZWcoZzFzeCksIGcycyk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYXNrRW50cm9weSgpIHtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cucHJvbXB0KFwiRW50ZXIgYSByYW5kb20gdGV4dC4gKEVudHJvcHkpOiBcIiwgXCJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgICAgICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgcmwucXVlc3Rpb24oXCJFbnRlciBhIHJhbmRvbSB0ZXh0LiAoRW50cm9weSk6IFwiLCAoaW5wdXQpID0+IHJlc29sdmUoaW5wdXQpICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJhbmRvbVJuZyhlbnRyb3B5KSB7XG4gICAgLy8gR2VuZXJhdGUgYSByYW5kb20gUm5nXG4gICAgd2hpbGUgKCFlbnRyb3B5KSB7XG4gICAgICAgIGVudHJvcHkgPSBhd2FpdCBhc2tFbnRyb3B5KCk7XG4gICAgfVxuICAgIGNvbnN0IGhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hlci51cGRhdGUoY3J5cHRvLnJhbmRvbUJ5dGVzKDY0KSk7XG4gICAgY29uc3QgZW5jID0gbmV3IFRleHRFbmNvZGVyKCk7IC8vIGFsd2F5cyB1dGYtOFxuICAgIGhhc2hlci51cGRhdGUoZW5jLmVuY29kZShlbnRyb3B5KSk7XG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5mcm9tKGhhc2hlci5kaWdlc3QoKSk7XG5cbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wO2k8ODtpKyspIHtcbiAgICAgICAgc2VlZFtpXSA9IGhhc2gucmVhZFVJbnQzMkJFKGkqNCk7XG4gICAgfVxuICAgIGNvbnN0IHJuZyA9IG5ldyBDaGFDaGEoc2VlZCk7XG4gICAgcmV0dXJuIHJuZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJuZ0Zyb21CZWFjb25QYXJhbXMoYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCkge1xuICAgIGxldCBuSXRlcmF0aW9uc0lubmVyO1xuICAgIGxldCBuSXRlcmF0aW9uc091dGVyO1xuICAgIGlmIChudW1JdGVyYXRpb25zRXhwPDMyKSB7XG4gICAgICAgIG5JdGVyYXRpb25zSW5uZXIgPSAoMSA8PCBudW1JdGVyYXRpb25zRXhwKSA+Pj4gMDtcbiAgICAgICAgbkl0ZXJhdGlvbnNPdXRlciA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbkl0ZXJhdGlvbnNJbm5lciA9IDB4MTAwMDAwMDAwO1xuICAgICAgICBuSXRlcmF0aW9uc091dGVyID0gKDEgPDwgKG51bUl0ZXJhdGlvbnNFeHAtMzIpKSA+Pj4gMDtcbiAgICB9XG5cbiAgICBsZXQgY3VySGFzaCA9IGJlYWNvbkhhc2g7XG4gICAgZm9yIChsZXQgaT0wOyBpPG5JdGVyYXRpb25zT3V0ZXI7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkl0ZXJhdGlvbnNJbm5lcjsgaisrKSB7XG4gICAgICAgICAgICBjdXJIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGN1ckhhc2gpLmRpZ2VzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY3VySGFzaFYgPSBuZXcgRGF0YVZpZXcoY3VySGFzaC5idWZmZXIsIGN1ckhhc2guYnl0ZU9mZnNldCwgY3VySGFzaC5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkW2ldID0gY3VySGFzaFYuZ2V0VWludDMyKGkqNCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHJuZyA9IG5ldyBDaGFDaGEoc2VlZCk7XG5cbiAgICByZXR1cm4gcm5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGV4MkJ5dGVBcnJheShzKSB7XG4gICAgaWYgKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gcztcbiAgICBpZiAocy5zbGljZSgwLDIpID09IFwiMHhcIikgcz0gcy5zbGljZSgyKTtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocy5tYXRjaCgvW1xcZGEtZl17Mn0vZ2kpLm1hcChmdW5jdGlvbiAoaCkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoaCwgMTYpO1xuICAgIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ5dGVBcnJheTJoZXgoYnl0ZUFycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChieXRlQXJyYXksIGZ1bmN0aW9uKGJ5dGUpIHtcbiAgICAgICAgcmV0dXJuIChcIjBcIiArIChieXRlICYgMHhGRikudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG4gICAgfSkuam9pbihcIlwiKTtcbn1cblxuIiwiXG4vLyBGb3JtYXRcbi8vID09PT09PVxuLy8gSGVhZGVyKDEpXG4vLyAgICAgIFByb3ZlciBUeXBlIDEgR3JvdGhcbi8vIEhlYWRlckdyb3RoKDIpXG4vLyAgICAgIG44cVxuLy8gICAgICBxXG4vLyAgICAgIG44clxuLy8gICAgICByXG4vLyAgICAgIE5WYXJzXG4vLyAgICAgIE5QdWJcbi8vICAgICAgRG9tYWluU2l6ZSAgKG11bHRpcGxlIG9mIDJcbi8vICAgICAgYWxwaGExXG4vLyAgICAgIGJldGExXG4vLyAgICAgIGRlbHRhMVxuLy8gICAgICBiZXRhMlxuLy8gICAgICBnYW1tYTJcbi8vICAgICAgZGVsdGEyXG4vLyBJQygzKVxuLy8gQ29lZnMoNClcbi8vIFBvaW50c0EoNSlcbi8vIFBvaW50c0IxKDYpXG4vLyBQb2ludHNCMig3KVxuLy8gUG9pbnRzQyg4KVxuLy8gUG9pbnRzSCg5KVxuLy8gQ29udHJpYnV0aW9ucygxMClcblxuaW1wb3J0IHsgU2NhbGFyLCBGMUZpZWxkIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBsb2cyIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVIZWFkZXIoZmQsIHprZXkpIHtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMigxKTsgLy8gR3JvdGhcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIHRoZSBHcm90aCBoZWFkZXIgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgY29uc3QgbjhxID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjhxKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lUSwgbjhxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44cik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZVIsIG44cik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5Lm5WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkublB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoemtleS5kb21haW5TaXplKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYWxwaGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKGZkLCBjdXJ2ZSwgemtleS52a19iZXRhXzIpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2dhbW1hXzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVaS2V5KGZpbGVOYW1lLCB6a2V5KSB7XG5cbiAgICBsZXQgY3VydmUgPSBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShmaWxlTmFtZSxcInprZXlcIiwgMSwgOSk7XG5cbiAgICBhd2FpdCB3cml0ZUhlYWRlcihmZCwgemtleSk7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHprZXkucikgLSAxKSAvIDY0KSArMSkqODtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCBuOHIqOCksIHprZXkucik7XG4gICAgY29uc3QgUjJyID0gU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgemtleS5yKTtcblxuICAgIC8vIFdyaXRlIFBvbHMgKEEgYW5kIEIgKEMgY2FuIGJlIG9tbWl0ZWQpKVxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICB6a2V5LmNjb2VmcyA9IHprZXkuY2NvZWZzLmZpbHRlcihjID0+IGMubWF0cml4PDIpO1xuICAgIHprZXkuY2NvZWZzLnNvcnQoIChhLGIpID0+IGEuY29uc3RyYWludCAtIGIuY29uc3RyYWludCApO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5LmNjb2Vmcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmNjb2Vmcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjb2VmID0gemtleS5jY29lZnNbaV07XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5tYXRyaXgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvZWYuY29uc3RyYWludCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5zaWduYWwpO1xuICAgICAgICBhd2FpdCB3cml0ZUZyMihjb2VmLnZhbHVlKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIElDIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuSUNbaV0gKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIEFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS5BW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkIxW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LkIyW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBDXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDgpO1xuICAgIGZvciAobGV0IGk9emtleS5uUHVibGljKzE7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkNbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgSCBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgOSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LmhFeHBzW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVGcjIobikge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIG1vbnRnb21lcnlcbiAgICAgICAgbiA9IFNjYWxhci5tb2QoIFNjYWxhci5tdWwobiwgUjJyKSwgemtleS5yKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIG4sIG44cik7XG4gICAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRHMShmZCwgY3VydmUpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIHJldHVybiBjdXJ2ZS5HMS5mcm9tUnByTEVNKGJ1ZmYsIDApO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRzIoZmQsIGN1cnZlKSB7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwckxFTShidWZmLCAwKTtcbn1cblxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucywgcHJvdG9jb2wpIHtcbiAgICBpZiAocHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHRocm93IG5ldyBFcnJvcihcIlByb3RvY29sIG5vdCBzdXBwb3J0ZWQ6IFwiK3Byb3RvY29sKTtcblxuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIC8vIFJlYWQgSGVhZGVyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBwcm90b2NvbElkID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgaWYgKHByb3RvY29sSWQgIT0gMSkgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBub3QgZ3JvdGhcIik7XG4gICAgemtleS5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICAvLyBSZWFkIEdyb3RoIEhlYWRlclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMik7XG4gICAgY29uc3QgbjhxID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHEgPSBuOHE7XG4gICAgemtleS5xID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cSk7XG5cbiAgICBjb25zdCBuOHIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44ciA9IG44cjtcbiAgICB6a2V5LnIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhyKTtcblxuICAgIGxldCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICB6a2V5Lm5WYXJzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uUHVibGljID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5kb21haW5TaXplID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5wb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcbiAgICB6a2V5LnZrX2FscGhhXzEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlKTtcbiAgICB6a2V5LnZrX2JldGFfMSA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUpO1xuICAgIHprZXkudmtfYmV0YV8yID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSk7XG4gICAgemtleS52a19nYW1tYV8yID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSk7XG4gICAgemtleS52a19kZWx0YV8xID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSk7XG4gICAgemtleS52a19kZWx0YV8yID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB6a2V5O1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkWktleShmaWxlTmFtZSkge1xuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGZpbGVOYW1lLCBcInprZXlcIiwgMSk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIFwiZ3JvdGgxNlwiKTtcblxuICAgIGNvbnN0IEZyID0gbmV3IEYxRmllbGQoemtleS5yKTtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCB6a2V5Lm44cio4KSwgemtleS5yKTtcbiAgICBjb25zdCBScmkgPSBGci5pbnYoUnIpO1xuICAgIGNvbnN0IFJyaTIgPSBGci5tdWwoUnJpLCBScmkpO1xuXG4gICAgbGV0IGN1cnZlID0gZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB6a2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgUCA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUpO1xuICAgICAgICB6a2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQ29lZnNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNCk7XG4gICAgY29uc3QgbkNDb2VmcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuY2NvZWZzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5DQ29lZnM7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgY29uc3QgcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgcmVhZEZyMigpO1xuICAgICAgICB6a2V5LmNjb2Vmcy5wdXNoKHtcbiAgICAgICAgICAgIG1hdHJpeDogbSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnQ6IGMsXG4gICAgICAgICAgICBzaWduYWw6IHMsXG4gICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIC8vIFJlYWQgQSBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNSk7XG4gICAgemtleS5BID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBBID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSk7XG4gICAgICAgIHprZXkuQVtpXSA9IEE7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQjFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNik7XG4gICAgemtleS5CMSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgY29uc3QgQjEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlKTtcblxuICAgICAgICB6a2V5LkIxW2ldID0gQjE7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQjIgcG9pbnRzXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDcpO1xuICAgIHprZXkuQjIgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEIyID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSk7XG4gICAgICAgIHprZXkuQjJbaV0gPSBCMjtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBDIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA4KTtcbiAgICB6a2V5LkMgPSBbXTtcbiAgICBmb3IgKGxldCBpPXprZXkublB1YmxpYysxOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBDID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSk7XG5cbiAgICAgICAgemtleS5DW2ldID0gQztcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBIIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA5KTtcbiAgICB6a2V5LmhFeHBzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEggPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlKTtcbiAgICAgICAgemtleS5oRXhwcy5wdXNoKEgpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiB6a2V5O1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEZyMigpIHtcbiAgICAgICAgY29uc3QgbiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCB6a2V5Lm44cik7XG4gICAgICAgIHJldHVybiBGci5tdWwobiwgUnJpMik7XG4gICAgfVxuXG59XG5cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUpIHtcbiAgICBjb25zdCBjID0ge2RlbHRhOnt9fTtcbiAgICBjLmRlbHRhQWZ0ZXIgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlKTtcbiAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlKTtcbiAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSk7XG4gICAgYy5kZWx0YS5nMl9zcHggPSBhd2FpdCByZWFkRzIoZmQsIGN1cnZlKTtcbiAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjLnR5cGUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGNvbnN0IHBhcmFtTGVuZ3RoID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY3VyUG9zID0gZmQucG9zO1xuICAgIGxldCBsYXN0VHlwZSA9MDtcbiAgICB3aGlsZSAoZmQucG9zLWN1clBvcyA8IHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZUeXBlID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPD0gbGFzdFR5cGUpIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgaW4gdGhlIGNvbnRyaWJ1dGlvbiBtdXN0IGJlIHNvcnRlZFwiKTtcbiAgICAgICAgbGFzdFR5cGUgPSBidWZmVHlwZVswXTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPT0xKSB7ICAgICAvLyBOYW1lXG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCBmZC5yZWFkKGJ1ZmZMZW5bMF0pO1xuICAgICAgICAgICAgYy5uYW1lID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ1ZmZTdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0yKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmRXhwID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGMubnVtSXRlcmF0aW9uc0V4cCA9IGJ1ZmZFeHBbMF07XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgZmQucmVhZChidWZmTGVuWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlciBub3QgcmVjb2duaXplZFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmQucG9zICE9IGN1clBvcyArIHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNUENQYXJhbXMoZmQsIGN1cnZlLCBzZWN0aW9ucykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMTApO1xuICAgIGNvbnN0IHJlcyA9IHsgY29udHJpYnV0aW9uczogW119O1xuICAgIHJlcy5jc0hhc2ggPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjb25zdCBuID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUpO1xuICAgICAgICByZXMuY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjKSB7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGFBZnRlcik7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfcyk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGMudHlwZSB8fCAwKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgIGlmIChjLm5hbWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMSk7ICAgICAgLy8gUGFyYW0gTmFtZVxuICAgICAgICBjb25zdCBuYW1lRGF0YSA9IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLmVuY29kZShjLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDIpOyAgICAgIC8vIFBhcmFtIG51bUl0ZXJhdGlvbnNFeHBcbiAgICAgICAgcGFyYW1zLnB1c2goYy5udW1JdGVyYXRpb25zRXhwKTtcblxuICAgICAgICBwYXJhbXMucHVzaCgzKTsgICAgICAvLyBCZWFjb24gSGFzaFxuICAgICAgICBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aDsgaSsrKSBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2hbaV0pO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aD4wKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc0J1ZmYgPSBuZXcgVWludDhBcnJheShwYXJhbXMpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHBhcmFtc0J1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKHBhcmFtc0J1ZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZU1QQ1BhcmFtcyhmZCwgY3VydmUsIG1wY1BhcmFtcykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMTApO1xuICAgIGF3YWl0IGZkLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgcCkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIHApO1xuICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzIoaGFzaGVyLGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgcCk7XG4gICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hQdWJLZXkoaGFzaGVyLCBjdXJ2ZSwgYykge1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhQWZ0ZXIpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcbiAgICBoYXNoRzIoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMl9zcHgpO1xuICAgIGhhc2hlci51cGRhdGUoYy50cmFuc2NyaXB0KTtcbn1cblxuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlKGZkLCB3aXRuZXNzLCBwcmltZSkge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBjb25zdCBuOCA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZSkgLSAxKSAvIDY0KSArMSkqODtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih3aXRuZXNzLmxlbmd0aCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGZvciAobGV0IGk9MDsgaTx3aXRuZXNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgd2l0bmVzc1tpXSwgbjgpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkLCAyKTtcblxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUJpbihmZCwgd2l0bmVzc0JpbiwgcHJpbWUpIHtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgY29uc3QgbjggPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWUpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuOCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZSwgbjgpO1xuICAgIGlmICh3aXRuZXNzQmluLmJ5dGVMZW5ndGggJSBuOCAhPSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgd2l0bmVzcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIod2l0bmVzc0Jpbi5ieXRlTGVuZ3RoIC8gbjgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGF3YWl0IGZkLndyaXRlKHdpdG5lc3NCaW4pO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucykge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBuOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGNvbnN0IHEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjgpO1xuICAgIGNvbnN0IG5XaXRuZXNzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB7bjgsIHEsIG5XaXRuZXNzfTtcblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChmaWxlTmFtZSkge1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwid3Ruc1wiLCAyKTtcblxuICAgIGNvbnN0IHtuOCwgbldpdG5lc3N9ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bldpdG5lc3M7IGkrKykge1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44KTtcbiAgICAgICAgcmVzLnB1c2godik7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuIiwiaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBsb2cyIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2UHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlcikge1xuICAgIGNvbnN0IHtmZDogZmRXdG5zLCBzZWN0aW9uczogc2VjdGlvbnNXdG5zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyKTtcblxuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHNlY3Rpb25zV3Rucyk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkWktleSwgc2VjdGlvbnM6IHNlY3Rpb25zWktleX0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleUZpbGVOYW1lLCBcInprZXlcIiwgMik7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5LCBzZWN0aW9uc1pLZXksIFwiZ3JvdGgxNlwiKTtcblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgIHd0bnMucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBpZiAod3Rucy5uV2l0bmVzcyAhPSB6a2V5Lm5WYXJzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRuZXNzIGxlbmd0aC4gQ2lyY3VpdDogJHt6a2V5Lm5WYXJzfSwgd2l0bmVzczogJHt3dG5zLm5XaXRuZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcblxuICAgIGNvbnN0IHBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuXG4gICAgY29uc3QgYnVmZldpdG5lc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEZ1bGxTZWN0aW9uKGZkV3Rucywgc2VjdGlvbnNXdG5zLCAyKTtcbiAgICBjb25zdCBidWZmQ29lZmZzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRGdWxsU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNCk7XG4gICAgY29uc3QgYnVmZkJhc2VzQSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkRnVsbFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDUpO1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0IxID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRGdWxsU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNik7XG4gICAgY29uc3QgYnVmZkJhc2VzQjIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEZ1bGxTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA3KTtcbiAgICBjb25zdCBidWZmQmFzZXNDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRGdWxsU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgOCk7XG4gICAgY29uc3QgYnVmZkJhc2VzSCA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkRnVsbFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDkpO1xuXG4gICAgY29uc3QgW2J1ZmZBX1QsIGJ1ZmZCX1QsIGJ1ZmZDX1RdID0gYXdhaXQgYnVsZEFCQyhjdXJ2ZSwgemtleSwgYnVmZldpdG5lc3MsIGJ1ZmZDb2VmZnMpO1xuXG4gICAgY29uc3QgYnVmZkEgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZBX1QpO1xuICAgIGNvbnN0IGJ1ZmZBb2RkID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmQSwgRnIuZSgxKSwgY3VydmUuRnIud1twb3dlcisxXSk7XG4gICAgY29uc3QgYnVmZkFvZGRfVCA9IGF3YWl0IEZyLmZmdChidWZmQW9kZCk7XG5cbiAgICBjb25zdCBidWZmQiA9IGF3YWl0IEZyLmlmZnQoYnVmZkJfVCk7XG4gICAgY29uc3QgYnVmZkJvZGQgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZCLCBGci5lKDEpLCBjdXJ2ZS5Gci53W3Bvd2VyKzFdKTtcbiAgICBjb25zdCBidWZmQm9kZF9UID0gYXdhaXQgRnIuZmZ0KGJ1ZmZCb2RkKTtcblxuICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgRnIuaWZmdChidWZmQ19UKTtcbiAgICBjb25zdCBidWZmQ29kZCA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZkMsIEZyLmUoMSksIGN1cnZlLkZyLndbcG93ZXIrMV0pO1xuICAgIGNvbnN0IGJ1ZmZDb2RkX1QgPSBhd2FpdCBGci5mZnQoYnVmZkNvZGQpO1xuXG4gICAgY29uc3QgYnVmZlBvZGRfVCA9IGF3YWl0IGpvaW5BQkMoY3VydmUsIHprZXksIGJ1ZmZBb2RkX1QsIGJ1ZmZCb2RkX1QsIGJ1ZmZDb2RkX1QpO1xuXG4gICAgbGV0IHByb29mID0ge307XG5cbiAgICBwcm9vZi5waV9hID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQSwgYnVmZldpdG5lc3MpO1xuICAgIGxldCBwaWIxID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjEsIGJ1ZmZXaXRuZXNzKTtcbiAgICBwcm9vZi5waV9iID0gYXdhaXQgY3VydmUuRzIubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjIsIGJ1ZmZXaXRuZXNzKTtcbiAgICBwcm9vZi5waV9jID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQywgYnVmZldpdG5lc3Muc2xpY2UoKHprZXkublB1YmxpYysxKSpjdXJ2ZS5Gci5uOCkpO1xuICAgIGNvbnN0IHJlc0ggPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShidWZmQmFzZXNILCBidWZmUG9kZF9UKTtcblxuICAgIGNvbnN0IHIgPSBjdXJ2ZS5Gci5yYW5kb20oKTtcbiAgICBjb25zdCBzID0gY3VydmUuRnIucmFuZG9tKCk7XG5cbiAgICBwcm9vZi5waV9hICA9IEcxLmFkZCggcHJvb2YucGlfYSwgemtleS52a19hbHBoYV8xICk7XG4gICAgcHJvb2YucGlfYSAgPSBHMS5hZGQoIHByb29mLnBpX2EsIEcxLnRpbWVzRnIoIHprZXkudmtfZGVsdGFfMSwgciApKTtcblxuICAgIHByb29mLnBpX2IgID0gRzIuYWRkKCBwcm9vZi5waV9iLCB6a2V5LnZrX2JldGFfMiApO1xuICAgIHByb29mLnBpX2IgID0gRzIuYWRkKCBwcm9vZi5waV9iLCBHMi50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzIsIHMgKSk7XG5cbiAgICBwaWIxID0gRzEuYWRkKCBwaWIxLCB6a2V5LnZrX2JldGFfMSApO1xuICAgIHBpYjEgPSBHMS5hZGQoIHBpYjEsIEcxLnRpbWVzRnIoIHprZXkudmtfZGVsdGFfMSwgcyApKTtcblxuICAgIHByb29mLnBpX2MgPSBHMS5hZGQocHJvb2YucGlfYywgcmVzSCk7XG5cblxuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCBwcm9vZi5waV9hLCBzICkpO1xuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCBwaWIxLCByICkpO1xuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIEZyLm5lZyhGci5tdWwocixzKSApKSk7XG5cblxuICAgIGxldCBwdWJsaWNTaWduYWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBiID0gYnVmZldpdG5lc3Muc2xpY2UoaSpGci5uOCwgaSpGci5uOCtGci5uOCk7XG4gICAgICAgIHB1YmxpY1NpZ25hbHMucHVzaChTY2FsYXIuZnJvbVJwckxFKGIpKTtcbiAgICB9XG5cbiAgICBwcm9vZi5waV9hID0gRzEudG9PYmplY3QoRzEudG9BZmZpbmUocHJvb2YucGlfYSkpO1xuICAgIHByb29mLnBpX2IgPSBHMi50b09iamVjdChHMi50b0FmZmluZShwcm9vZi5waV9iKSk7XG4gICAgcHJvb2YucGlfYyA9IEcxLnRvT2JqZWN0KEcxLnRvQWZmaW5lKHByb29mLnBpX2MpKTtcblxuICAgIHByb29mLnByb3RvY29sID0gXCJncm90aDE2XCI7XG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcblxuICAgIHByb29mID0gc3RyaW5naWZ5QmlnSW50cyhwcm9vZik7XG4gICAgcHVibGljU2lnbmFscyA9IHN0cmluZ2lmeUJpZ0ludHMocHVibGljU2lnbmFscyk7XG5cbiAgICByZXR1cm4ge3Byb29mLCBwdWJsaWNTaWduYWxzfTtcbn1cblxuXG5hc3luYyBmdW5jdGlvbiBidWxkQUJDKGN1cnZlLCB6a2V5LCB3aXRuZXNzLCBjb2VmZnMpIHtcbiAgICBjb25zdCBjb25jdXJyZW5jeSA9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG5cbiAgICBjb25zdCBlbGVtZW50c1BlckNodW5rID0gTWF0aC5mbG9vcih6a2V5LmRvbWFpblNpemUvY29uY3VycmVuY3kpO1xuICAgIGNvbnN0IGNvZWZmc0RWID0gbmV3IERhdGFWaWV3KGNvZWZmcy5idWZmZXIsIGNvZWZmcy5ieXRlT2Zmc2V0LCBjb2VmZnMuYnl0ZUxlbmd0aCk7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgIGNvbnN0IGN1dFBvaW50cyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgIGN1dFBvaW50cy5wdXNoKCBnZXRDdXRQb2ludCggTWF0aC5mbG9vcihpKnprZXkuZG9tYWluU2l6ZSAvY29uY3VycmVuY3kpICkpO1xuICAgIH1cbiAgICBjdXRQb2ludHMucHVzaChjb2VmZnMuYnl0ZUxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICBsZXQgbjtcbiAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgIG4gPSBlbGVtZW50c1BlckNodW5rO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbiA9IHprZXkuZG9tYWluU2l6ZSAtIGkqZWxlbWVudHNQZXJDaHVuaztcbiAgICAgICAgfVxuICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY29lZmZzLnNsaWNlKGN1dFBvaW50c1tpXSwgY3V0UG9pbnRzW2krMV0pfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogd2l0bmVzcy5zbGljZSgpfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogNCwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9idWlsZEFCQ1wiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICB7dmFsOiAoY3V0UG9pbnRzW2krMV0gLSBjdXRQb2ludHNbaV0pL3NDb2VmfSxcbiAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAge3ZhbDogaSplbGVtZW50c1BlckNodW5rfSxcbiAgICAgICAgICAgIHt2YWw6IG59XG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAzLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMiwgdmFyOiA0LCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3Qgb3V0QnVmZkEgPSBuZXcgVWludDhBcnJheSh6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgY29uc3Qgb3V0QnVmZkIgPSBuZXcgVWludDhBcnJheSh6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgY29uc3Qgb3V0QnVmZkMgPSBuZXcgVWludDhBcnJheSh6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgbGV0IHA9MDtcbiAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dEJ1ZmZBLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICBvdXRCdWZmQi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KHJlc3VsdFtpXVsyXSwgcCk7XG4gICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtvdXRCdWZmQSwgb3V0QnVmZkIsIG91dEJ1ZmZDXTtcblxuICAgIGZ1bmN0aW9uIGdldEN1dFBvaW50KHYpIHtcbiAgICAgICAgbGV0IG0gPSAwO1xuICAgICAgICBsZXQgbiA9IGNvZWZmc0RWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICAgICAgd2hpbGUgKG0gPCBuKSB7XG4gICAgICAgICAgICB2YXIgayA9IChuICsgbSkgPj4gMTtcbiAgICAgICAgICAgIGNvbnN0IHZhID0gY29lZmZzRFYuZ2V0VWludDMyKDQgKyBrKnNDb2VmICsgNCwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAodmEgPiB2KSB7XG4gICAgICAgICAgICAgICAgbiA9IGsgLSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YSA8IHYpIHtcbiAgICAgICAgICAgICAgICBtID0gayArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiA0ICsgbSpzQ29lZjtcbiAgICB9XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gam9pbkFCQyhjdXJ2ZSwgemtleSwgYSwgYiwgYykge1xuICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gY3VydmUudG0uY29uY3VycmVuY3k7XG5cbiAgICBjb25zdCBuOCA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IG5FbGVtZW50cyA9IE1hdGguZmxvb3IoYS5ieXRlTGVuZ3RoIC8gY3VydmUuRnIubjgpO1xuICAgIGNvbnN0IGVsZW1lbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5FbGVtZW50cy9jb25jdXJyZW5jeSk7XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgbGV0IG47XG4gICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICBuID0gZWxlbWVudHNQZXJDaHVuaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG4gPSBuRWxlbWVudHMgLSBpKmVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICBjb25zdCBhQ2h1bmsgPSBhLnNsaWNlKGkqZWxlbWVudHNQZXJDaHVuaypuOCwgKGkqZWxlbWVudHNQZXJDaHVuayArIG4pKm44ICk7XG4gICAgICAgIGNvbnN0IGJDaHVuayA9IGIuc2xpY2UoaSplbGVtZW50c1BlckNodW5rKm44LCAoaSplbGVtZW50c1BlckNodW5rICsgbikqbjggKTtcbiAgICAgICAgY29uc3QgY0NodW5rID0gYy5zbGljZShpKmVsZW1lbnRzUGVyQ2h1bmsqbjgsIChpKmVsZW1lbnRzUGVyQ2h1bmsgKyBuKSpuOCApO1xuXG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYUNodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYkNodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogY0NodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKm44fSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9qb2luQUJDXCIsIHBhcmFtczpbXG4gICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImZybV9iYXRjaEZyb21Nb250Z29tZXJ5XCIsIHBhcmFtczpbXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDMsIGxlbjogbipuOH0pO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCBvdXRCdWZmID0gbmV3IFVpbnQ4QXJyYXkoYS5ieXRlTGVuZ3RoKTtcbiAgICBsZXQgcD0wO1xuICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0QnVmZjtcbn1cblxuIiwiLyoqXG4gKiBGTlYtMWEgSGFzaCBpbXBsZW1lbnRhdGlvbiAoMzIsIDY0LCAxMjgsIDI1NiwgNTEyLCBhbmQgMTAyNCBiaXQpXG4gKiBAYXV0aG9yIFRyYXZpcyBXZWJiIDxtZUB0cmF2aXN3ZWJiLmNvbT5cbiAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtZWFzdGxha2UtZm52LTA2XG4gKi9cbnZhciBmbnZwbHVzID0gKGZ1bmN0aW9uKCl7XG5cdHZhciBpLCBobCA9IFtdLCBobDE2ID0gWycwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5JywnYScsJ2InLCdjJywnZCcsJ2UnLCdmJ10sXG5cdFx0dmVyc2lvbiA9ICcxYScsXG5cdFx0dXNlVVRGOCA9IGZhbHNlLFxuXHRcdF9oYXNoMzIsIF9oYXNoNTIsIF9oYXNoNjQsIF9oYXNoMTI4LCBfaGFzaDI1NiwgX2hhc2g1MTIsIF9oYXNoMTAyNCxcblx0XHRyZWZlcmVuY2VTZWVkID0gJ2Nob25nbyA8TGFuZG9uIEN1cnQgTm9sbD4gL1xcXFwuLi9cXFxcJyxcblx0XHRkZWZhdWx0S2V5c3BhY2UgPSA1Mixcblx0XHRmbnZDb25zdGFudHMgPSB7XG5cdFx0XHQzMjoge29mZnNldDogMH0sXG5cdFx0XHQ2NDoge29mZnNldDogWzAsMCwwLDBdfSxcblx0XHRcdDEyODoge29mZnNldDogWzAsMCwwLDAsMCwwLDAsMF19LFxuXHRcdFx0MjU2OiB7b2Zmc2V0OiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19LFxuXHRcdFx0NTEyOiB7b2Zmc2V0OiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXX0sXG5cdFx0XHQxMDI0OiB7b2Zmc2V0OiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19fTtcblxuXHRmb3IoaT0wOyBpIDwgMjU2OyBpKyspe1xuXHRcdGhsW2ldID0gKChpID4+IDQpICYgMTUpLnRvU3RyaW5nKDE2KSArIChpICYgMTUpLnRvU3RyaW5nKDE2KTtcblx0fVxuXG5cdGZ1bmN0aW9uIGhleFRvQmFzZShoZXgsIGJhc2Upe1xuXHRcdHZhciBhbHBoYWJldCA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonLFxuXHRcdFx0ZGlnaXRzID0gWzBdLCBjYXJyeSwgaSwgaiwgc3RyaW5nID0gJyc7XG5cblx0XHRmb3IoaSA9IDA7IGkgPCBoZXgubGVuZ3RoOyBpKz0yKXtcblx0XHRcdGNhcnJ5ID0gcGFyc2VJbnQoaGV4LnN1YnN0cihpLDIpLDE2KTtcblx0XHRcdGZvcihqID0gMDsgaiA8IGRpZ2l0cy5sZW5ndGg7IGorKyl7XG5cdFx0XHRcdGNhcnJ5ICs9IGRpZ2l0c1tqXSA8PCA4O1xuXHRcdFx0XHRkaWdpdHNbal0gPSBjYXJyeSAlIGJhc2U7XG5cdFx0XHRcdGNhcnJ5ID0gKGNhcnJ5IC8gYmFzZSkgfCAwO1xuXHRcdFx0fVxuXHRcdFx0d2hpbGUgKGNhcnJ5ID4gMCkge1xuXHRcdFx0XHRkaWdpdHMucHVzaChjYXJyeSAlIGJhc2UpO1xuXHRcdFx0XHRjYXJyeSA9IChjYXJyeSAvIGJhc2UpIHwgMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgPSBkaWdpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpe1xuXHRcdFx0c3RyaW5nICs9IGFscGhhYmV0W2RpZ2l0c1tpXV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHN0cmluZztcblx0fVxuXG5cdGZ1bmN0aW9uIGhhc2hWYWxIZXgodmFsdWUsIGtleXNwYWNlKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGJpdHM6IGtleXNwYWNlLFxuXHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0ZGVjOiBmdW5jdGlvbigpe3JldHVybiBoZXhUb0Jhc2UodmFsdWUsIDEwKTt9LFxuXHRcdFx0aGV4OiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZTt9LFxuXHRcdFx0c3RyOiBmdW5jdGlvbigpe3JldHVybiBoZXhUb0Jhc2UodmFsdWUsIDM2KTt9XG5cdFx0fTtcblx0fVxuXG5cdGZ1bmN0aW9uIGhhc2hWYWxJbnQzMih2YWx1ZSwga2V5c3BhY2UpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Yml0czoga2V5c3BhY2UsXG5cdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRkZWM6IGZ1bmN0aW9uKCl7cmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7fSxcblx0XHRcdGhleDogZnVuY3Rpb24oKXtyZXR1cm4gaGxbdmFsdWU+Pj4yNF0rIGhsWyh2YWx1ZT4+PjE2KSYyNTVdK2hsWyh2YWx1ZT4+PjgpJjI1NV0raGxbdmFsdWUmMjU1XTt9LFxuXHRcdFx0c3RyOiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZS50b1N0cmluZygzNik7fVxuXHRcdH07XG5cdH1cblxuXHRmdW5jdGlvbiBoYXNoVmFsSW50NTIodmFsdWUsIGtleXNwYWNlKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGJpdHM6IGtleXNwYWNlLFxuXHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0ZGVjOiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZS50b1N0cmluZygpO30sXG5cdFx0XHRoZXg6IGZ1bmN0aW9uKCl7cmV0dXJuICgnMDAwMDAwMDAwMDAwMDAwMCcrdmFsdWUudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTEzKTt9LFxuXHRcdFx0c3RyOiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZS50b1N0cmluZygzNik7fVxuXHRcdH07XG5cdH1cblxuXHRmdW5jdGlvbiBoYXNoKG1lc3NhZ2UsIGtleXNwYWNlKSB7XG5cdFx0dmFyIHN0ciA9ICh0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcpID8gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgOiBtZXNzYWdlO1xuXG5cdFx0c3dpdGNoKGtleXNwYWNlIHx8IGRlZmF1bHRLZXlzcGFjZSl7XG5cdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRyZXR1cm4gX2hhc2gzMihzdHIpO1xuXHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0cmV0dXJuIF9oYXNoNjQoc3RyKTtcblx0XHRcdGNhc2UgMTI4OlxuXHRcdFx0XHRyZXR1cm4gX2hhc2gxMjgoc3RyKTtcblx0XHRcdGNhc2UgMjU2OlxuXHRcdFx0XHRyZXR1cm4gX2hhc2gyNTYoc3RyKTtcblx0XHRcdGNhc2UgNTEyOlxuXHRcdFx0XHRyZXR1cm4gX2hhc2g1MTIoc3RyKTtcblx0XHRcdGNhc2UgMTAyNDpcblx0XHRcdFx0cmV0dXJuIF9oYXNoMTAyNChzdHIpO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIF9oYXNoNTIoc3RyKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBzZXRLZXlzcGFjZShrZXlzcGFjZSkge1xuXHRcdGlmIChrZXlzcGFjZSA9PT0gNTIgfHwgZm52Q29uc3RhbnRzW2tleXNwYWNlXSkge1xuXHRcdFx0ZGVmYXVsdEtleXNwYWNlID0ga2V5c3BhY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignU3VwcG9ydGVkIEZOViBrZXlzcGFjczogMzIsIDUyLCA2NCwgMTI4LCAyNTYsIDUxMiwgYW5kIDEwMjQgYml0Jyk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gc2V0VmVyc2lvbihfdmVyc2lvbikge1xuXHRcdGlmIChfdmVyc2lvbiA9PT0gJzFhJyApIHtcblx0XHRcdHZlcnNpb24gPSBfdmVyc2lvbjtcblx0XHRcdF9oYXNoMzIgICA9IHVzZVVURjggPyBfaGFzaDMyXzFhX3V0ZiAgIDogX2hhc2gzMl8xYTtcblx0XHRcdF9oYXNoNTIgICA9IHVzZVVURjggPyBfaGFzaDUyXzFhX3V0ZiAgIDogX2hhc2g1Ml8xYTtcblx0XHRcdF9oYXNoNjQgICA9IHVzZVVURjggPyBfaGFzaDY0XzFhX3V0ZiAgIDogX2hhc2g2NF8xYTtcblx0XHRcdF9oYXNoMTI4ICA9IHVzZVVURjggPyBfaGFzaDEyOF8xYV91dGYgIDogX2hhc2gxMjhfMWE7XG5cdFx0XHRfaGFzaDI1NiAgPSB1c2VVVEY4ID8gX2hhc2gyNTZfMWFfdXRmICA6IF9oYXNoMjU2XzFhO1xuXHRcdFx0X2hhc2g1MTIgID0gdXNlVVRGOCA/IF9oYXNoNTEyXzFhX3V0ZiAgOiBfaGFzaDUxMl8xYTtcblx0XHRcdF9oYXNoMTAyNCA9IHVzZVVURjggPyBfaGFzaDEwMjRfMWFfdXRmIDogX2hhc2gxMDI0XzFhO1xuXHRcdH0gZWxzZSBpZiAoX3ZlcnNpb24gPT09ICcxJykge1xuXHRcdFx0dmVyc2lvbiA9IF92ZXJzaW9uO1xuXHRcdFx0X2hhc2gzMiAgID0gdXNlVVRGOCA/IF9oYXNoMzJfMV91dGYgICA6IF9oYXNoMzJfMTtcblx0XHRcdF9oYXNoNTIgICA9IHVzZVVURjggPyBfaGFzaDUyXzFfdXRmICAgOiBfaGFzaDUyXzE7XG5cdFx0XHRfaGFzaDY0ICAgPSB1c2VVVEY4ID8gX2hhc2g2NF8xX3V0ZiAgIDogX2hhc2g2NF8xO1xuXHRcdFx0X2hhc2gxMjggID0gdXNlVVRGOCA/IF9oYXNoMTI4XzFfdXRmICA6IF9oYXNoMTI4XzE7XG5cdFx0XHRfaGFzaDI1NiAgPSB1c2VVVEY4ID8gX2hhc2gyNTZfMV91dGYgIDogX2hhc2gyNTZfMTtcblx0XHRcdF9oYXNoNTEyICA9IHVzZVVURjggPyBfaGFzaDUxMl8xX3V0ZiAgOiBfaGFzaDUxMl8xO1xuXHRcdFx0X2hhc2gxMDI0ID0gdXNlVVRGOCA/IF9oYXNoMTAyNF8xX3V0ZiA6IF9oYXNoMTAyNF8xO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1N1cHBvcnRlZCBGTlYgdmVyc2lvbnM6IDEsIDFhJyk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gc2V0VVRGOCh1dGY4KSB7XG5cdFx0aWYgKHV0ZjgpIHtcblx0XHRcdHVzZVVURjggPSB0cnVlO1xuXHRcdFx0X2hhc2gzMiAgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gzMl8xYV91dGYgICA6IF9oYXNoMzJfMV91dGY7XG5cdFx0XHRfaGFzaDUyICAgPSB2ZXJzaW9uID09ICcxYScgPyBfaGFzaDUyXzFhX3V0ZiAgIDogX2hhc2g1Ml8xX3V0Zjtcblx0XHRcdF9oYXNoNjQgICA9IHZlcnNpb24gPT0gJzFhJyA/IF9oYXNoNjRfMWFfdXRmICAgOiBfaGFzaDY0XzFfdXRmO1xuXHRcdFx0X2hhc2gxMjggID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gxMjhfMWFfdXRmICA6IF9oYXNoMTI4XzFfdXRmO1xuXHRcdFx0X2hhc2gyNTYgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gyNTZfMWFfdXRmICA6IF9oYXNoMjU2XzFfdXRmO1xuXHRcdFx0X2hhc2g1MTIgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2g1MTJfMWFfdXRmICA6IF9oYXNoNTEyXzFfdXRmO1xuXHRcdFx0X2hhc2gxMDI0ID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gxMDI0XzFhX3V0ZiA6IF9oYXNoMTAyNF8xX3V0Zjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXNlVVRGOCA9IGZhbHNlO1xuXHRcdFx0X2hhc2gzMiAgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gzMl8xYSAgIDogX2hhc2gzMl8xO1xuXHRcdFx0X2hhc2g1MiAgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2g1Ml8xYSAgIDogX2hhc2g1Ml8xO1xuXHRcdFx0X2hhc2g2NCAgID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2g2NF8xYSAgIDogX2hhc2g2NF8xO1xuXHRcdFx0X2hhc2gxMjggID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gxMjhfMWEgIDogX2hhc2gxMjhfMTtcblx0XHRcdF9oYXNoMjU2ICA9IHZlcnNpb24gPT0gJzFhJyA/IF9oYXNoMjU2XzFhICA6IF9oYXNoMjU2XzE7XG5cdFx0XHRfaGFzaDUxMiAgPSB2ZXJzaW9uID09ICcxYScgPyBfaGFzaDUxMl8xYSAgOiBfaGFzaDUxMl8xO1xuXHRcdFx0X2hhc2gxMDI0ID0gdmVyc2lvbiA9PSAnMWEnID8gX2hhc2gxMDI0XzFhIDogX2hhc2gxMDI0XzE7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gc2VlZChzZWVkKSB7XG5cdFx0dmFyIG9sZFZlcnNpb24gPSB2ZXJzaW9uLCByZXMsIGk7XG5cblx0XHRzZWVkID0gKHNlZWQgfHwgc2VlZCA9PT0gMCkgPyBzZWVkIDogcmVmZXJlbmNlU2VlZDtcblxuXHRcdGlmIChzZWVkID09PSByZWZlcmVuY2VTZWVkKSBzZXRWZXJzaW9uKCcxJyk7XG5cblx0XHRmb3IgKHZhciBrZXlzaXplIGluIGZudkNvbnN0YW50cykge1xuXHRcdFx0Zm52Q29uc3RhbnRzW2tleXNpemVdLm9mZnNldCA9IFtdO1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwga2V5c2l6ZSAvIDE2OyBpKyspe1xuXHRcdFx0XHRmbnZDb25zdGFudHNba2V5c2l6ZV0ub2Zmc2V0W2ldXHQ9IDA7XG5cdFx0XHR9XG5cdFx0XHRyZXMgPSBoYXNoKHNlZWQsIHBhcnNlSW50KGtleXNpemUsIDEwKSkuaGV4KCk7XG5cdFx0XHRmb3IoaSA9IDA7IGkgPCBrZXlzaXplIC8gMTY7IGkrKyl7XG5cdFx0XHRcdGZudkNvbnN0YW50c1trZXlzaXplXS5vZmZzZXRbaV1cdD0gcGFyc2VJbnQocmVzLnN1YnN0cihpKjQsNCksIDE2KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRzZXRWZXJzaW9uKG9sZFZlcnNpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGlicmFyeSBvdmVyaGVhZC5cblx0ICovXG5cblx0ZnVuY3Rpb24gX2hhc2gzMl8xYV9mYXN0KHN0cikge1xuXHRcdHZhciBpLCBsID0gc3RyLmxlbmd0aC0zLCB0MD0wLHYwPTB4OWRjNSx0MT0wLHYxPTB4ODExYztcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdHQxKz12MDw8ODtcblx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cblx0XHRyZXR1cm4gKCh2MTw8MTYpPj4+MCkrdjA7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDMyXzFhX2Zhc3RfaGV4KHN0cikge1xuXHRcdHZhciBpLCBsID0gc3RyLmxlbmd0aC0zLCB0MD0wLHYwPTB4OWRjNSx0MT0wLHYxPTB4ODExYztcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdHQxKz12MDw8ODtcblx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cblx0XHRyZXR1cm4gaGxbKHYxPj4+OCkmMjU1XStobFt2MSYyNTVdK2hsWyh2MD4+PjgpJjI1NV0raGxbdjAmMjU1XTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoNTJfMWFfZmFzdChzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHQwPTAsdjA9MHgyMzI1LHQxPTAsdjE9MHg4NDIyLHQyPTAsdjI9MHg5Y2U0LHQzPTAsdjM9MHhjYmYyO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKHYzJjE1KSAqIDI4MTQ3NDk3NjcxMDY1NiArIHYyICogNDI5NDk2NzI5NiArIHYxICogNjU1MzYgKyAodjBeKHYzPj40KSk7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDUyXzFhX2Zhc3RfaGV4KHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMsdDA9MCx2MD0weDIzMjUsdDE9MCx2MT0weDg0MjIsdDI9MCx2Mj0weDljZTQsdDM9MCx2Mz0weGNiZjI7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDspIHtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdH1cblxuXHRcdHJldHVybiBobDE2W3YzJjE1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFsodjA+PjgpXih2Mz4+MTIpXStobFsodjBeKHYzPj40KSkmMjU1XTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoNjRfMWFfZmFzdChzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHQwPTAsdjA9MHgyMzI1LHQxPTAsdjE9MHg4NDIyLHQyPTAsdjI9MHg5Y2U0LHQzPTAsdjM9MHhjYmYyO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV07XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDMyXzFhX2Zhc3RfdXRmKHN0cikge1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHQwPTAsdjA9MHg5ZGM1LHQxPTAsdjE9MHg4MTFjO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICgodjE8PDE2KT4+PjApK3YwO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2gzMl8xYV9mYXN0X2hleF91dGYoc3RyKSB7XG5cdFx0dmFyIGMsaSxsPXN0ci5sZW5ndGgsdDA9MCx2MD0weDlkYzUsdDE9MCx2MT0weDgxMWM7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHR9XG5cblxuXHRcdHJldHVybiBobFsodjE+Pj44KSYyNTVdK2hsW3YxJjI1NV0raGxbKHYwPj4+OCkmMjU1XStobFt2MCYyNTVdO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g1Ml8xYV9mYXN0X3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHQwPTAsdjA9MHgyMzI1LHQxPTAsdjE9MHg4NDIyLHQyPTAsdjI9MHg5Y2U0LHQzPTAsdjM9MHhjYmYyO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICh2MyYxNSkgKiAyODE0NzQ5NzY3MTA2NTYgKyB2MiAqIDQyOTQ5NjcyOTYgKyB2MSAqIDY1NTM2ICsgKHYwXih2Mz4+NCkpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g1Ml8xYV9mYXN0X2hleF91dGYgKHN0cil7XG5cdFx0dmFyIGMsaSxsPXN0ci5sZW5ndGgsdDA9MCx2MD0weDIzMjUsdDE9MCx2MT0weDg0MjIsdDI9MCx2Mj0weDljZTQsdDM9MCx2Mz0weGNiZjI7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGwxNlt2MyYxNV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbKHYwPj44KV4odjM+PjEyKV0raGxbKHYwXih2Mz4+NCkpJjI1NV07XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDY0XzFhX2Zhc3RfdXRmKHN0cil7XG5cdFx0dmFyIGMsaSxsPXN0ci5sZW5ndGgsdDA9MCx2MD0weDIzMjUsdDE9MCx2MT0weDg0MjIsdDI9MCx2Mj0weDljZTQsdDM9MCx2Mz0weGNiZjI7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV07XG5cdH1cblx0LyoqXG5cdCAqIFJlZ3VsYXIgZnVuY3Rpb25zLiBUaGlzIHZlcnNpb25zIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggQVBJXG5cdCAqL1xuXG5cdGZ1bmN0aW9uIF9oYXNoMzJfMWEoc3RyKXtcblx0XHR2YXIgaSxsPXN0ci5sZW5ndGgtMyxzPWZudkNvbnN0YW50c1szMl0ub2Zmc2V0LHQwPTAsdjA9c1sxXXwwLHQxPTAsdjE9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdHQxKz12MDw8ODtcblx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEludDMyKCgodjE8PDE2KT4+PjApK3YwLDMyKTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMzJfMShzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHM9Zm52Q29uc3RhbnRzWzMyXS5vZmZzZXQsdDA9MCx2MD1zWzFdfDAsdDE9MCx2MT1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDspIHtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdHQxKz12MDw8ODtcblx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSW50MzIoKCh2MTw8MTYpPj4+MCkrdjAsMzIpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2gzMl8xYV91dGYoc3RyKXtcblx0XHR2YXIgYyxpLGw9c3RyLmxlbmd0aCxzPWZudkNvbnN0YW50c1szMl0ub2Zmc2V0LHQwPTAsdjA9c1sxXXwwLHQxPTAsdjE9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDAzO3QxPXYxKjQwMztcblx0XHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0dDErPXYwPDw4O1xuXHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxJbnQzMigoKHYxPDwxNik+Pj4wKSt2MCwzMik7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDMyXzFfdXRmKHN0cil7XG5cdFx0dmFyIGMsaSxsPXN0ci5sZW5ndGgscz1mbnZDb25zdGFudHNbMzJdLm9mZnNldCx0MD0wLHYwPXNbMV18MCx0MT0wLHYxPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0XHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHR0MSs9djA8PDg7XG5cdFx0XHR2MT0odDErKHQwPj4+MTYpKSY2NTUzNTt2MD10MCY2NTUzNTtcblx0XHRcdGlmKGMgPCAxMjgpe1xuXHRcdFx0XHR2MF49Yztcblx0XHRcdH1lbHNlIGlmKGMgPCAyMDQ4KXtcblx0XHRcdFx0djBePShjPj42KXwxOTI7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2UgaWYoKChjJjY0NTEyKT09NTUyOTYpJiYoaSsxKTxsJiYoKHN0ci5jaGFyQ29kZUF0KGkrMSkmNjQ1MTIpPT01NjMyMCkpe1xuXHRcdFx0XHRjPTY1NTM2KygoYyYxMDIzKTw8MTApKyhzdHIuY2hhckNvZGVBdCgrK2kpJjEwMjMpO1xuXHRcdFx0XHR2MF49KGM+PjE4KXwyNDA7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjEyKSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MDM7dDE9djEqNDAzO1xuXHRcdFx0XHR0MSs9djA8PDg7XG5cdFx0XHRcdHYxPSh0MSsodDA+Pj4xNikpJjY1NTM1O3YwPXQwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR2MF49KGM+PjEyKXwyMjQ7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQwMzt0MT12MSo0MDM7XG5cdFx0XHRcdHQxKz12MDw8ODtcblx0XHRcdFx0djE9KHQxKyh0MD4+PjE2KSkmNjU1MzU7djA9dDAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSW50MzIoKCh2MTw8MTYpPj4+MCkrdjAsMzIpO1xuXHR9XG5cblx0X2hhc2gzMiA9IF9oYXNoMzJfMWE7XG5cblx0ZnVuY3Rpb24gX2hhc2g1Ml8xYShzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHM9Zm52Q29uc3RhbnRzWzY0XS5vZmZzZXQsdDA9MCx2MD1zWzNdfDAsdDE9MCx2MT1zWzJdfDAsdDI9MCx2Mj1zWzFdfDAsdDM9MCx2Mz1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDspIHtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSW50NTIoKHYzJjE1KSoyODE0NzQ5NzY3MTA2NTYrdjIqNDI5NDk2NzI5Nit2MSo2NTUzNisodjBeKHYzPj40KSksNTIpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g1Ml8xKHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMscz1mbnZDb25zdGFudHNbNjRdLm9mZnNldCx0MD0wLHYwPXNbM118MCx0MT0wLHYxPXNbMl18MCx0Mj0wLHYyPXNbMV18MCx0Mz0wLHYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxJbnQ1MigodjMmMTUpKjI4MTQ3NDk3NjcxMDY1Nit2Mio0Mjk0OTY3Mjk2K3YxKjY1NTM2Kyh2MF4odjM+PjQpKSw1Mik7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDUyXzFhX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzY0XS5vZmZzZXQsdDA9MCx2MD1zWzNdfDAsdDE9MCx2MT1zWzJdfDAsdDI9MCx2Mj1zWzFdfDAsdDM9MCx2Mz1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEludDUyKCh2MyYxNSkqMjgxNDc0OTc2NzEwNjU2K3YyKjQyOTQ5NjcyOTYrdjEqNjU1MzYrKHYwXih2Mz4+NCkpLDUyKTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoNTJfMV91dGYoc3RyKXtcblx0XHR2YXIgYyxpLGw9c3RyLmxlbmd0aCxzPWZudkNvbnN0YW50c1s2NF0ub2Zmc2V0LHQwPTAsdjA9c1szXXwwLHQxPTAsdjE9c1syXXwwLHQyPTAsdjI9c1sxXXwwLHQzPTAsdjM9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxJbnQ1MigodjMmMTUpKjI4MTQ3NDk3NjcxMDY1Nit2Mio0Mjk0OTY3Mjk2K3YxKjY1NTM2Kyh2MF4odjM+PjQpKSw1Mik7XG5cdH1cblxuXHRfaGFzaDUyID0gX2hhc2g1Ml8xYTtcblxuXHRmdW5jdGlvbiBfaGFzaDY0XzFhKHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMscz1mbnZDb25zdGFudHNbNjRdLm9mZnNldCx0MD0wLHYwPXNbM118MCx0MT0wLHYxPXNbMl18MCx0Mj0wLHYyPXNbMV18MCx0Mz0wLHYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sNjQpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g2NF8xKHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMscz1mbnZDb25zdGFudHNbNjRdLm9mZnNldCx0MD0wLHYwPXNbM118MCx0MT0wLHYxPXNbMl18MCx0Mj0wLHYyPXNbMV18MCx0Mz0wLHYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sNjQpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g2NF8xYV91dGYoc3RyKXtcblx0XHR2YXIgYyxpLGw9c3RyLmxlbmd0aCxzPWZudkNvbnN0YW50c1s2NF0ub2Zmc2V0LHQwPTAsdjA9c1szXXwwLHQxPTAsdjE9c1syXXwwLHQyPTAsdjI9c1sxXXwwLHQzPTAsdjM9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjQzNTt0MT12MSo0MzU7dDI9djIqNDM1O3QzPXYzKjQzNTtcblx0XHRcdFx0dDIrPXYwPDw4O3QzKz12MTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sNjQpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2g2NF8xX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzY0XS5vZmZzZXQsdDA9MCx2MD1zWzNdfDAsdDE9MCx2MT1zWzJdfDAsdDI9MCx2Mj1zWzFdfDAsdDM9MCx2Mz1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7djM9KHQzKyh0Mj4+PjE2KSkmNjU1MzU7djI9dDImNjU1MzU7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqNDM1O3QxPXYxKjQzNTt0Mj12Mio0MzU7dDM9djMqNDM1O1xuXHRcdFx0XHR0Mis9djA8PDg7dDMrPXYxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt2Mz0odDMrKHQyPj4+MTYpKSY2NTUzNTt2Mj10MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCo0MzU7dDE9djEqNDM1O3QyPXYyKjQzNTt0Mz12Myo0MzU7XG5cdFx0XHRcdHQyKz12MDw8ODt0Mys9djE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3YzPSh0MysodDI+Pj4xNikpJjY1NTM1O3YyPXQyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSw2NCk7XG5cdH1cblxuXHRfaGFzaDY0ID0gX2hhc2g2NF8xYTtcblxuXHRmdW5jdGlvbiBfaGFzaDEyOF8xYShzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHM9Zm52Q29uc3RhbnRzWzEyOF0ub2Zmc2V0LHQwPTAsdjA9c1s3XXwwLHQxPTAsdjE9c1s2XXwwLHQyPTAsdjI9c1s1XXwwLHQzPTAsdjM9c1s0XXwwLHQ0PTAsdjQ9c1szXXwwLHQ1PTAsdjU9c1syXXwwLHQ2PTAsdjY9c1sxXXwwLHQ3PTAsdjc9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjMxNTt0MT12MSozMTU7dDI9djIqMzE1O3QzPXYzKjMxNTt0ND12NCozMTU7dDU9djUqMzE1O3Q2PXY2KjMxNTt0Nz12NyozMTU7XG5cdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjMxNTt0MT12MSozMTU7dDI9djIqMzE1O3QzPXYzKjMxNTt0ND12NCozMTU7dDU9djUqMzE1O3Q2PXY2KjMxNTt0Nz12NyozMTU7XG5cdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sMTI4KTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMTI4XzEoc3RyKXtcblx0XHR2YXIgaSxsPXN0ci5sZW5ndGgtMyxzPWZudkNvbnN0YW50c1sxMjhdLm9mZnNldCx0MD0wLHYwPXNbN118MCx0MT0wLHYxPXNbNl18MCx0Mj0wLHYyPXNbNV18MCx0Mz0wLHYzPXNbNF18MCx0ND0wLHY0PXNbM118MCx0NT0wLHY1PXNbMl18MCx0Nj0wLHY2PXNbMV18MCx0Nz0wLHY3PXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjMxNTt0MT12MSozMTU7dDI9djIqMzE1O3QzPXYzKjMxNTt0ND12NCozMTU7dDU9djUqMzE1O3Q2PXY2KjMxNTt0Nz12NyozMTU7XG5cdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSGV4KGhsW3Y3Pj44XStobFt2NyYyNTVdK2hsW3Y2Pj44XStobFt2NiYyNTVdK2hsW3Y1Pj44XStobFt2NSYyNTVdK2hsW3Y0Pj44XStobFt2NCYyNTVdK2hsW3YzPj44XStobFt2MyYyNTVdK2hsW3YyPj44XStobFt2MiYyNTVdK2hsW3YxPj44XStobFt2MSYyNTVdK2hsW3YwPj44XStobFt2MCYyNTVdLDEyOCk7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDEyOF8xYV91dGYoc3RyKXtcblx0XHR2YXIgYyxpLGw9c3RyLmxlbmd0aCxzPWZudkNvbnN0YW50c1sxMjhdLm9mZnNldCx0MD0wLHYwPXNbN118MCx0MT0wLHYxPXNbNl18MCx0Mj0wLHYyPXNbNV18MCx0Mz0wLHYzPXNbNF18MCx0ND0wLHY0PXNbM118MCx0NT0wLHY1PXNbMl18MCx0Nj0wLHY2PXNbMV18MCx0Nz0wLHY3PXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0XHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRcdGlmKGMgPCAxMjgpe1xuXHRcdFx0XHR2MF49Yztcblx0XHRcdH1lbHNlIGlmKGMgPCAyMDQ4KXtcblx0XHRcdFx0djBePShjPj42KXwxOTI7XG5cdFx0XHRcdHQwPXYwKjMxNTt0MT12MSozMTU7dDI9djIqMzE1O3QzPXYzKjMxNTt0ND12NCozMTU7dDU9djUqMzE1O3Q2PXY2KjMxNTt0Nz12NyozMTU7XG5cdFx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fVxuXHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sMTI4KTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMTI4XzFfdXRmKHN0cil7XG5cdFx0dmFyIGMsaSxsPXN0ci5sZW5ndGgscz1mbnZDb25zdGFudHNbMTI4XS5vZmZzZXQsdDA9MCx2MD1zWzddfDAsdDE9MCx2MT1zWzZdfDAsdDI9MCx2Mj1zWzVdfDAsdDM9MCx2Mz1zWzRdfDAsdDQ9MCx2ND1zWzNdfDAsdDU9MCx2NT1zWzJdfDAsdDY9MCx2Nj1zWzFdfDAsdDc9MCx2Nz1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG5cdFx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdGlmKGMgPCAxMjgpe1xuXHRcdFx0XHR2MF49Yztcblx0XHRcdH1lbHNlIGlmKGMgPCAyMDQ4KXtcblx0XHRcdFx0djBePShjPj42KXwxOTI7XG5cdFx0XHRcdHQwPXYwKjMxNTt0MT12MSozMTU7dDI9djIqMzE1O3QzPXYzKjMxNTt0ND12NCozMTU7dDU9djUqMzE1O3Q2PXY2KjMxNTt0Nz12NyozMTU7XG5cdFx0XHRcdHQ1Kz12MDw8ODt0Nis9djE8PDg7dDcrPXYyPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt2Nz0odDcrKHQ2Pj4+MTYpKSY2NTUzNTt2Nj10NiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj4xMikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqMzE1O3QxPXYxKjMxNTt0Mj12MiozMTU7dDM9djMqMzE1O3Q0PXY0KjMxNTt0NT12NSozMTU7dDY9djYqMzE1O3Q3PXY3KjMxNTtcblx0XHRcdFx0dDUrPXYwPDw4O3Q2Kz12MTw8ODt0Nys9djI8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Y3PSh0NysodDY+Pj4xNikpJjY1NTM1O3Y2PXQ2JjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozMTU7dDE9djEqMzE1O3QyPXYyKjMxNTt0Mz12MyozMTU7dDQ9djQqMzE1O3Q1PXY1KjMxNTt0Nj12NiozMTU7dDc9djcqMzE1O1xuXHRcdFx0XHR0NSs9djA8PDg7dDYrPXYxPDw4O3Q3Kz12Mjw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7djc9KHQ3Kyh0Nj4+PjE2KSkmNjU1MzU7djY9dDYmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSGV4KGhsW3Y3Pj44XStobFt2NyYyNTVdK2hsW3Y2Pj44XStobFt2NiYyNTVdK2hsW3Y1Pj44XStobFt2NSYyNTVdK2hsW3Y0Pj44XStobFt2NCYyNTVdK2hsW3YzPj44XStobFt2MyYyNTVdK2hsW3YyPj44XStobFt2MiYyNTVdK2hsW3YxPj44XStobFt2MSYyNTVdK2hsW3YwPj44XStobFt2MCYyNTVdLDEyOCk7XG5cdH1cblxuXHRfaGFzaDEyOCA9IF9oYXNoMTI4XzFhO1xuXG5cdGZ1bmN0aW9uIF9oYXNoMjU2XzFhKHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMscz1mbnZDb25zdGFudHNbMjU2XS5vZmZzZXQsdDA9MCx2MD1zWzE1XXwwLHQxPTAsdjE9c1sxNF18MCx0Mj0wLHYyPXNbMTNdfDAsdDM9MCx2Mz1zWzEyXXwwLHQ0PTAsdjQ9c1sxMV18MCx0NT0wLHY1PXNbMTBdfDAsdDY9MCx2Nj1zWzldfDAsdDc9MCx2Nz1zWzhdfDAsdDg9MCx2OD1zWzddfDAsdDk9MCx2OT1zWzZdfDAsdDEwPTAsdjEwPXNbNV18MCx0MTE9MCx2MTE9c1s0XXwwLHQxMj0wLHYxMj1zWzNdfDAsdDEzPTAsdjEzPXNbMl18MCx0MTQ9MCx2MTQ9c1sxXXwwLHQxNT0wLHYxNT1zWzBdfDA7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbDspIHtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzU1O3QxPXYxKjM1NTt0Mj12MiozNTU7dDM9djMqMzU1O3Q0PXY0KjM1NTt0NT12NSozNTU7dDY9djYqMzU1O3Q3PXY3KjM1NTt0OD12OCozNTU7dDk9djkqMzU1O3QxMD12MTAqMzU1O3QxMT12MTEqMzU1O3QxMj12MTIqMzU1O3QxMz12MTMqMzU1O3QxND12MTQqMzU1O3QxNT12MTUqMzU1O1xuXHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzU1O3QxPXYxKjM1NTt0Mj12MiozNTU7dDM9djMqMzU1O3Q0PXY0KjM1NTt0NT12NSozNTU7dDY9djYqMzU1O3Q3PXY3KjM1NTt0OD12OCozNTU7dDk9djkqMzU1O3QxMD12MTAqMzU1O3QxMT12MTEqMzU1O3QxMj12MTIqMzU1O3QxMz12MTMqMzU1O3QxND12MTQqMzU1O3QxNT12MTUqMzU1O1xuXHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2MTU+PjhdK2hsW3YxNSYyNTVdK2hsW3YxND4+OF0raGxbdjE0JjI1NV0raGxbdjEzPj44XStobFt2MTMmMjU1XStobFt2MTI+PjhdK2hsW3YxMiYyNTVdK2hsW3YxMT4+OF0raGxbdjExJjI1NV0raGxbdjEwPj44XStobFt2MTAmMjU1XStobFt2OT4+OF0raGxbdjkmMjU1XStobFt2OD4+OF0raGxbdjgmMjU1XStobFt2Nz4+OF0raGxbdjcmMjU1XStobFt2Nj4+OF0raGxbdjYmMjU1XStobFt2NT4+OF0raGxbdjUmMjU1XStobFt2ND4+OF0raGxbdjQmMjU1XStobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSwyNTYpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2gyNTZfMShzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHM9Zm52Q29uc3RhbnRzWzI1Nl0ub2Zmc2V0LHQwPTAsdjA9c1sxNV18MCx0MT0wLHYxPXNbMTRdfDAsdDI9MCx2Mj1zWzEzXXwwLHQzPTAsdjM9c1sxMl18MCx0ND0wLHY0PXNbMTFdfDAsdDU9MCx2NT1zWzEwXXwwLHQ2PTAsdjY9c1s5XXwwLHQ3PTAsdjc9c1s4XXwwLHQ4PTAsdjg9c1s3XXwwLHQ5PTAsdjk9c1s2XXwwLHQxMD0wLHYxMD1zWzVdfDAsdDExPTAsdjExPXNbNF18MCx0MTI9MCx2MTI9c1szXXwwLHQxMz0wLHYxMz1zWzJdfDAsdDE0PTAsdjE0PXNbMV18MCx0MTU9MCx2MTU9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzU1O3QxPXYxKjM1NTt0Mj12MiozNTU7dDM9djMqMzU1O3Q0PXY0KjM1NTt0NT12NSozNTU7dDY9djYqMzU1O3Q3PXY3KjM1NTt0OD12OCozNTU7dDk9djkqMzU1O3QxMD12MTAqMzU1O3QxMT12MTEqMzU1O3QxMj12MTIqMzU1O3QxMz12MTMqMzU1O3QxND12MTQqMzU1O3QxNT12MTUqMzU1O1xuXHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjE1Pj44XStobFt2MTUmMjU1XStobFt2MTQ+PjhdK2hsW3YxNCYyNTVdK2hsW3YxMz4+OF0raGxbdjEzJjI1NV0raGxbdjEyPj44XStobFt2MTImMjU1XStobFt2MTE+PjhdK2hsW3YxMSYyNTVdK2hsW3YxMD4+OF0raGxbdjEwJjI1NV0raGxbdjk+PjhdK2hsW3Y5JjI1NV0raGxbdjg+PjhdK2hsW3Y4JjI1NV0raGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sMjU2KTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMjU2XzFhX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzI1Nl0ub2Zmc2V0LHQwPTAsdjA9c1sxNV18MCx0MT0wLHYxPXNbMTRdfDAsdDI9MCx2Mj1zWzEzXXwwLHQzPTAsdjM9c1sxMl18MCx0ND0wLHY0PXNbMTFdfDAsdDU9MCx2NT1zWzEwXXwwLHQ2PTAsdjY9c1s5XXwwLHQ3PTAsdjc9c1s4XXwwLHQ4PTAsdjg9c1s3XXwwLHQ5PTAsdjk9c1s2XXwwLHQxMD0wLHYxMD1zWzVdfDAsdDExPTAsdjExPXNbNF18MCx0MTI9MCx2MTI9c1szXXwwLHQxMz0wLHYxMz1zWzJdfDAsdDE0PTAsdjE0PXNbMV18MCx0MTU9MCx2MTU9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqMzU1O3QxPXYxKjM1NTt0Mj12MiozNTU7dDM9djMqMzU1O3Q0PXY0KjM1NTt0NT12NSozNTU7dDY9djYqMzU1O3Q3PXY3KjM1NTt0OD12OCozNTU7dDk9djkqMzU1O3QxMD12MTAqMzU1O3QxMT12MTEqMzU1O3QxMj12MTIqMzU1O3QxMz12MTMqMzU1O3QxND12MTQqMzU1O3QxNT12MTUqMzU1O1xuXHRcdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjEyKSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2MTU+PjhdK2hsW3YxNSYyNTVdK2hsW3YxND4+OF0raGxbdjE0JjI1NV0raGxbdjEzPj44XStobFt2MTMmMjU1XStobFt2MTI+PjhdK2hsW3YxMiYyNTVdK2hsW3YxMT4+OF0raGxbdjExJjI1NV0raGxbdjEwPj44XStobFt2MTAmMjU1XStobFt2OT4+OF0raGxbdjkmMjU1XStobFt2OD4+OF0raGxbdjgmMjU1XStobFt2Nz4+OF0raGxbdjcmMjU1XStobFt2Nj4+OF0raGxbdjYmMjU1XStobFt2NT4+OF0raGxbdjUmMjU1XStobFt2ND4+OF0raGxbdjQmMjU1XStobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSwyNTYpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2gyNTZfMV91dGYoc3RyKXtcblx0XHR2YXIgYyxpLGw9c3RyLmxlbmd0aCxzPWZudkNvbnN0YW50c1syNTZdLm9mZnNldCx0MD0wLHYwPXNbMTVdfDAsdDE9MCx2MT1zWzE0XXwwLHQyPTAsdjI9c1sxM118MCx0Mz0wLHYzPXNbMTJdfDAsdDQ9MCx2ND1zWzExXXwwLHQ1PTAsdjU9c1sxMF18MCx0Nj0wLHY2PXNbOV18MCx0Nz0wLHY3PXNbOF18MCx0OD0wLHY4PXNbN118MCx0OT0wLHY5PXNbNl18MCx0MTA9MCx2MTA9c1s1XXwwLHQxMT0wLHYxMT1zWzRdfDAsdDEyPTAsdjEyPXNbM118MCx0MTM9MCx2MTM9c1syXXwwLHQxND0wLHYxND1zWzFdfDAsdDE1PTAsdjE1PXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0XHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqMzU1O3QxPXYxKjM1NTt0Mj12MiozNTU7dDM9djMqMzU1O3Q0PXY0KjM1NTt0NT12NSozNTU7dDY9djYqMzU1O3Q3PXY3KjM1NTt0OD12OCozNTU7dDk9djkqMzU1O3QxMD12MTAqMzU1O3QxMT12MTEqMzU1O3QxMj12MTIqMzU1O3QxMz12MTMqMzU1O3QxND12MTQqMzU1O3QxNT12MTUqMzU1O1xuXHRcdFx0XHR0MTArPXYwPDw4O3QxMSs9djE8PDg7dDEyKz12Mjw8ODt0MTMrPXYzPDw4O3QxNCs9djQ8PDg7dDE1Kz12NTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt2MTU9KHQxNSsodDE0Pj4+MTYpKSY2NTUzNTt2MTQ9dDE0JjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjEyKSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCozNTU7dDE9djEqMzU1O3QyPXYyKjM1NTt0Mz12MyozNTU7dDQ9djQqMzU1O3Q1PXY1KjM1NTt0Nj12NiozNTU7dDc9djcqMzU1O3Q4PXY4KjM1NTt0OT12OSozNTU7dDEwPXYxMCozNTU7dDExPXYxMSozNTU7dDEyPXYxMiozNTU7dDEzPXYxMyozNTU7dDE0PXYxNCozNTU7dDE1PXYxNSozNTU7XG5cdFx0XHRcdHQxMCs9djA8PDg7dDExKz12MTw8ODt0MTIrPXYyPDw4O3QxMys9djM8PDg7dDE0Kz12NDw8ODt0MTUrPXY1PDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3YxNT0odDE1Kyh0MTQ+Pj4xNikpJjY1NTM1O3YxND10MTQmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM1NTt0MT12MSozNTU7dDI9djIqMzU1O3QzPXYzKjM1NTt0ND12NCozNTU7dDU9djUqMzU1O3Q2PXY2KjM1NTt0Nz12NyozNTU7dDg9djgqMzU1O3Q5PXY5KjM1NTt0MTA9djEwKjM1NTt0MTE9djExKjM1NTt0MTI9djEyKjM1NTt0MTM9djEzKjM1NTt0MTQ9djE0KjM1NTt0MTU9djE1KjM1NTtcblx0XHRcdFx0dDEwKz12MDw8ODt0MTErPXYxPDw4O3QxMis9djI8PDg7dDEzKz12Mzw8ODt0MTQrPXY0PDw4O3QxNSs9djU8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7djE1PSh0MTUrKHQxND4+PjE2KSkmNjU1MzU7djE0PXQxNCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhc2hWYWxIZXgoaGxbdjE1Pj44XStobFt2MTUmMjU1XStobFt2MTQ+PjhdK2hsW3YxNCYyNTVdK2hsW3YxMz4+OF0raGxbdjEzJjI1NV0raGxbdjEyPj44XStobFt2MTImMjU1XStobFt2MTE+PjhdK2hsW3YxMSYyNTVdK2hsW3YxMD4+OF0raGxbdjEwJjI1NV0raGxbdjk+PjhdK2hsW3Y5JjI1NV0raGxbdjg+PjhdK2hsW3Y4JjI1NV0raGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sMjU2KTtcblx0fVxuXG5cdF9oYXNoMjU2ID0gX2hhc2gyNTZfMWE7XG5cblx0ZnVuY3Rpb24gX2hhc2g1MTJfMWEoc3RyKXtcblx0XHR2YXIgaSxsPXN0ci5sZW5ndGgtMyxzPWZudkNvbnN0YW50c1s1MTJdLm9mZnNldCx0MD0wLHYwPXNbMzFdfDAsdDE9MCx2MT1zWzMwXXwwLHQyPTAsdjI9c1syOV18MCx0Mz0wLHYzPXNbMjhdfDAsdDQ9MCx2ND1zWzI3XXwwLHQ1PTAsdjU9c1syNl18MCx0Nj0wLHY2PXNbMjVdfDAsdDc9MCx2Nz1zWzI0XXwwLHQ4PTAsdjg9c1syM118MCx0OT0wLHY5PXNbMjJdfDAsdDEwPTAsdjEwPXNbMjFdfDAsdDExPTAsdjExPXNbMjBdfDAsdDEyPTAsdjEyPXNbMTldfDAsdDEzPTAsdjEzPXNbMThdfDAsdDE0PTAsdjE0PXNbMTddfDAsdDE1PTAsdjE1PXNbMTZdfDAsdDE2PTAsdjE2PXNbMTVdfDAsdDE3PTAsdjE3PXNbMTRdfDAsdDE4PTAsdjE4PXNbMTNdfDAsdDE5PTAsdjE5PXNbMTJdfDAsdDIwPTAsdjIwPXNbMTFdfDAsdDIxPTAsdjIxPXNbMTBdfDAsdDIyPTAsdjIyPXNbOV18MCx0MjM9MCx2MjM9c1s4XXwwLHQyND0wLHYyND1zWzddfDAsdDI1PTAsdjI1PXNbNl18MCx0MjY9MCx2MjY9c1s1XXwwLHQyNz0wLHYyNz1zWzRdfDAsdDI4PTAsdjI4PXNbM118MCx0Mjk9MCx2Mjk9c1syXXwwLHQzMD0wLHYzMD1zWzFdfDAsdDMxPTAsdjMxPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSGV4KGhsW3YzMT4+OF0raGxbdjMxJjI1NV0raGxbdjMwPj44XStobFt2MzAmMjU1XStobFt2Mjk+PjhdK2hsW3YyOSYyNTVdK2hsW3YyOD4+OF0raGxbdjI4JjI1NV0raGxbdjI3Pj44XStobFt2MjcmMjU1XStobFt2MjY+PjhdK2hsW3YyNiYyNTVdK2hsW3YyNT4+OF0raGxbdjI1JjI1NV0raGxbdjI0Pj44XStobFt2MjQmMjU1XStobFt2MjM+PjhdK2hsW3YyMyYyNTVdK2hsW3YyMj4+OF0raGxbdjIyJjI1NV0raGxbdjIxPj44XStobFt2MjEmMjU1XStobFt2MjA+PjhdK2hsW3YyMCYyNTVdK2hsW3YxOT4+OF0raGxbdjE5JjI1NV0raGxbdjE4Pj44XStobFt2MTgmMjU1XStobFt2MTc+PjhdK2hsW3YxNyYyNTVdK2hsW3YxNj4+OF0raGxbdjE2JjI1NV0raGxbdjE1Pj44XStobFt2MTUmMjU1XStobFt2MTQ+PjhdK2hsW3YxNCYyNTVdK2hsW3YxMz4+OF0raGxbdjEzJjI1NV0raGxbdjEyPj44XStobFt2MTImMjU1XStobFt2MTE+PjhdK2hsW3YxMSYyNTVdK2hsW3YxMD4+OF0raGxbdjEwJjI1NV0raGxbdjk+PjhdK2hsW3Y5JjI1NV0raGxbdjg+PjhdK2hsW3Y4JjI1NV0raGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sNTEyKTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoNTEyXzEoc3RyKXtcblx0XHR2YXIgaSxsPXN0ci5sZW5ndGgtMyxzPWZudkNvbnN0YW50c1s1MTJdLm9mZnNldCx0MD0wLHYwPXNbMzFdfDAsdDE9MCx2MT1zWzMwXXwwLHQyPTAsdjI9c1syOV18MCx0Mz0wLHYzPXNbMjhdfDAsdDQ9MCx2ND1zWzI3XXwwLHQ1PTAsdjU9c1syNl18MCx0Nj0wLHY2PXNbMjVdfDAsdDc9MCx2Nz1zWzI0XXwwLHQ4PTAsdjg9c1syM118MCx0OT0wLHY5PXNbMjJdfDAsdDEwPTAsdjEwPXNbMjFdfDAsdDExPTAsdjExPXNbMjBdfDAsdDEyPTAsdjEyPXNbMTldfDAsdDEzPTAsdjEzPXNbMThdfDAsdDE0PTAsdjE0PXNbMTddfDAsdDE1PTAsdjE1PXNbMTZdfDAsdDE2PTAsdjE2PXNbMTVdfDAsdDE3PTAsdjE3PXNbMTRdfDAsdDE4PTAsdjE4PXNbMTNdfDAsdDE5PTAsdjE5PXNbMTJdfDAsdDIwPTAsdjIwPXNbMTFdfDAsdDIxPTAsdjIxPXNbMTBdfDAsdDIyPTAsdjIyPXNbOV18MCx0MjM9MCx2MjM9c1s4XXwwLHQyND0wLHYyND1zWzddfDAsdDI1PTAsdjI1PXNbNl18MCx0MjY9MCx2MjY9c1s1XXwwLHQyNz0wLHYyNz1zWzRdfDAsdDI4PTAsdjI4PXNbM118MCx0Mjk9MCx2Mjk9c1syXXwwLHQzMD0wLHYzMD1zWzFdfDAsdDMxPTAsdjMxPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHR2MF49c3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHR9XG5cblx0XHR3aGlsZShpPGwrMyl7XG5cdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSGV4KGhsW3YzMT4+OF0raGxbdjMxJjI1NV0raGxbdjMwPj44XStobFt2MzAmMjU1XStobFt2Mjk+PjhdK2hsW3YyOSYyNTVdK2hsW3YyOD4+OF0raGxbdjI4JjI1NV0raGxbdjI3Pj44XStobFt2MjcmMjU1XStobFt2MjY+PjhdK2hsW3YyNiYyNTVdK2hsW3YyNT4+OF0raGxbdjI1JjI1NV0raGxbdjI0Pj44XStobFt2MjQmMjU1XStobFt2MjM+PjhdK2hsW3YyMyYyNTVdK2hsW3YyMj4+OF0raGxbdjIyJjI1NV0raGxbdjIxPj44XStobFt2MjEmMjU1XStobFt2MjA+PjhdK2hsW3YyMCYyNTVdK2hsW3YxOT4+OF0raGxbdjE5JjI1NV0raGxbdjE4Pj44XStobFt2MTgmMjU1XStobFt2MTc+PjhdK2hsW3YxNyYyNTVdK2hsW3YxNj4+OF0raGxbdjE2JjI1NV0raGxbdjE1Pj44XStobFt2MTUmMjU1XStobFt2MTQ+PjhdK2hsW3YxNCYyNTVdK2hsW3YxMz4+OF0raGxbdjEzJjI1NV0raGxbdjEyPj44XStobFt2MTImMjU1XStobFt2MTE+PjhdK2hsW3YxMSYyNTVdK2hsW3YxMD4+OF0raGxbdjEwJjI1NV0raGxbdjk+PjhdK2hsW3Y5JjI1NV0raGxbdjg+PjhdK2hsW3Y4JjI1NV0raGxbdjc+PjhdK2hsW3Y3JjI1NV0raGxbdjY+PjhdK2hsW3Y2JjI1NV0raGxbdjU+PjhdK2hsW3Y1JjI1NV0raGxbdjQ+PjhdK2hsW3Y0JjI1NV0raGxbdjM+PjhdK2hsW3YzJjI1NV0raGxbdjI+PjhdK2hsW3YyJjI1NV0raGxbdjE+PjhdK2hsW3YxJjI1NV0raGxbdjA+PjhdK2hsW3YwJjI1NV0sNTEyKTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoNTEyXzFhX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzUxMl0ub2Zmc2V0LHQwPTAsdjA9c1szMV18MCx0MT0wLHYxPXNbMzBdfDAsdDI9MCx2Mj1zWzI5XXwwLHQzPTAsdjM9c1syOF18MCx0ND0wLHY0PXNbMjddfDAsdDU9MCx2NT1zWzI2XXwwLHQ2PTAsdjY9c1syNV18MCx0Nz0wLHY3PXNbMjRdfDAsdDg9MCx2OD1zWzIzXXwwLHQ5PTAsdjk9c1syMl18MCx0MTA9MCx2MTA9c1syMV18MCx0MTE9MCx2MTE9c1syMF18MCx0MTI9MCx2MTI9c1sxOV18MCx0MTM9MCx2MTM9c1sxOF18MCx0MTQ9MCx2MTQ9c1sxN118MCx0MTU9MCx2MTU9c1sxNl18MCx0MTY9MCx2MTY9c1sxNV18MCx0MTc9MCx2MTc9c1sxNF18MCx0MTg9MCx2MTg9c1sxM118MCx0MTk9MCx2MTk9c1sxMl18MCx0MjA9MCx2MjA9c1sxMV18MCx0MjE9MCx2MjE9c1sxMF18MCx0MjI9MCx2MjI9c1s5XXwwLHQyMz0wLHYyMz1zWzhdfDAsdDI0PTAsdjI0PXNbN118MCx0MjU9MCx2MjU9c1s2XXwwLHQyNj0wLHYyNj1zWzVdfDAsdDI3PTAsdjI3PXNbNF18MCx0Mjg9MCx2Mjg9c1szXXwwLHQyOT0wLHYyOT1zWzJdfDAsdDMwPTAsdjMwPXNbMV18MCx0MzE9MCx2MzE9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aWYoYyA8IDEyOCl7XG5cdFx0XHRcdHYwXj1jO1xuXHRcdFx0fWVsc2UgaWYoYyA8IDIwNDgpe1xuXHRcdFx0XHR2MF49KGM+PjYpfDE5Mjtcblx0XHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjEyKSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9XG5cdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2MzE+PjhdK2hsW3YzMSYyNTVdK2hsW3YzMD4+OF0raGxbdjMwJjI1NV0raGxbdjI5Pj44XStobFt2MjkmMjU1XStobFt2Mjg+PjhdK2hsW3YyOCYyNTVdK2hsW3YyNz4+OF0raGxbdjI3JjI1NV0raGxbdjI2Pj44XStobFt2MjYmMjU1XStobFt2MjU+PjhdK2hsW3YyNSYyNTVdK2hsW3YyND4+OF0raGxbdjI0JjI1NV0raGxbdjIzPj44XStobFt2MjMmMjU1XStobFt2MjI+PjhdK2hsW3YyMiYyNTVdK2hsW3YyMT4+OF0raGxbdjIxJjI1NV0raGxbdjIwPj44XStobFt2MjAmMjU1XStobFt2MTk+PjhdK2hsW3YxOSYyNTVdK2hsW3YxOD4+OF0raGxbdjE4JjI1NV0raGxbdjE3Pj44XStobFt2MTcmMjU1XStobFt2MTY+PjhdK2hsW3YxNiYyNTVdK2hsW3YxNT4+OF0raGxbdjE1JjI1NV0raGxbdjE0Pj44XStobFt2MTQmMjU1XStobFt2MTM+PjhdK2hsW3YxMyYyNTVdK2hsW3YxMj4+OF0raGxbdjEyJjI1NV0raGxbdjExPj44XStobFt2MTEmMjU1XStobFt2MTA+PjhdK2hsW3YxMCYyNTVdK2hsW3Y5Pj44XStobFt2OSYyNTVdK2hsW3Y4Pj44XStobFt2OCYyNTVdK2hsW3Y3Pj44XStobFt2NyYyNTVdK2hsW3Y2Pj44XStobFt2NiYyNTVdK2hsW3Y1Pj44XStobFt2NSYyNTVdK2hsW3Y0Pj44XStobFt2NCYyNTVdK2hsW3YzPj44XStobFt2MyYyNTVdK2hsW3YyPj44XStobFt2MiYyNTVdK2hsW3YxPj44XStobFt2MSYyNTVdK2hsW3YwPj44XStobFt2MCYyNTVdLDUxMik7XG5cdH1cblxuXHRmdW5jdGlvbiBfaGFzaDUxMl8xX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzUxMl0ub2Zmc2V0LHQwPTAsdjA9c1szMV18MCx0MT0wLHYxPXNbMzBdfDAsdDI9MCx2Mj1zWzI5XXwwLHQzPTAsdjM9c1syOF18MCx0ND0wLHY0PXNbMjddfDAsdDU9MCx2NT1zWzI2XXwwLHQ2PTAsdjY9c1syNV18MCx0Nz0wLHY3PXNbMjRdfDAsdDg9MCx2OD1zWzIzXXwwLHQ5PTAsdjk9c1syMl18MCx0MTA9MCx2MTA9c1syMV18MCx0MTE9MCx2MTE9c1syMF18MCx0MTI9MCx2MTI9c1sxOV18MCx0MTM9MCx2MTM9c1sxOF18MCx0MTQ9MCx2MTQ9c1sxN118MCx0MTU9MCx2MTU9c1sxNl18MCx0MTY9MCx2MTY9c1sxNV18MCx0MTc9MCx2MTc9c1sxNF18MCx0MTg9MCx2MTg9c1sxM118MCx0MTk9MCx2MTk9c1sxMl18MCx0MjA9MCx2MjA9c1sxMV18MCx0MjE9MCx2MjE9c1sxMF18MCx0MjI9MCx2MjI9c1s5XXwwLHQyMz0wLHYyMz1zWzhdfDAsdDI0PTAsdjI0PXNbN118MCx0MjU9MCx2MjU9c1s2XXwwLHQyNj0wLHYyNj1zWzVdfDAsdDI3PTAsdjI3PXNbNF18MCx0Mjg9MCx2Mjg9c1szXXwwLHQyOT0wLHYyOT1zWzJdfDAsdDMwPTAsdjMwPXNbMV18MCx0MzE9MCx2MzE9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuXHRcdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCozNDM7dDE9djEqMzQzO3QyPXYyKjM0Mzt0Mz12MyozNDM7dDQ9djQqMzQzO3Q1PXY1KjM0Mzt0Nj12NiozNDM7dDc9djcqMzQzO3Q4PXY4KjM0Mzt0OT12OSozNDM7dDEwPXYxMCozNDM7dDExPXYxMSozNDM7dDEyPXYxMiozNDM7dDEzPXYxMyozNDM7dDE0PXYxNCozNDM7dDE1PXYxNSozNDM7dDE2PXYxNiozNDM7dDE3PXYxNyozNDM7dDE4PXYxOCozNDM7dDE5PXYxOSozNDM7dDIwPXYyMCozNDM7dDIxPXYyMSozNDM7dDIyPXYyMiozNDM7dDIzPXYyMyozNDM7dDI0PXYyNCozNDM7dDI1PXYyNSozNDM7dDI2PXYyNiozNDM7dDI3PXYyNyozNDM7dDI4PXYyOCozNDM7dDI5PXYyOSozNDM7dDMwPXYzMCozNDM7dDMxPXYzMSozNDM7XG5cdFx0XHRcdHQyMSs9djA8PDg7dDIyKz12MTw8ODt0MjMrPXYyPDw4O3QyNCs9djM8PDg7dDI1Kz12NDw8ODt0MjYrPXY1PDw4O3QyNys9djY8PDg7dDI4Kz12Nzw8ODt0MjkrPXY4PDw4O3QzMCs9djk8PDg7dDMxKz12MTA8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3YzMT0odDMxKyh0MzA+Pj4xNikpJjY1NTM1O3YzMD10MzAmNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2UgaWYoKChjJjY0NTEyKT09NTUyOTYpJiYoaSsxKTxsJiYoKHN0ci5jaGFyQ29kZUF0KGkrMSkmNjQ1MTIpPT01NjMyMCkpe1xuXHRcdFx0XHRjPTY1NTM2KygoYyYxMDIzKTw8MTApKyhzdHIuY2hhckNvZGVBdCgrK2kpJjEwMjMpO1xuXHRcdFx0XHR2MF49KGM+PjE4KXwyNDA7XG5cdFx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR2MF49KGM+PjEyKXwyMjQ7XG5cdFx0XHRcdHQwPXYwKjM0Mzt0MT12MSozNDM7dDI9djIqMzQzO3QzPXYzKjM0Mzt0ND12NCozNDM7dDU9djUqMzQzO3Q2PXY2KjM0Mzt0Nz12NyozNDM7dDg9djgqMzQzO3Q5PXY5KjM0Mzt0MTA9djEwKjM0Mzt0MTE9djExKjM0Mzt0MTI9djEyKjM0Mzt0MTM9djEzKjM0Mzt0MTQ9djE0KjM0Mzt0MTU9djE1KjM0Mzt0MTY9djE2KjM0Mzt0MTc9djE3KjM0Mzt0MTg9djE4KjM0Mzt0MTk9djE5KjM0Mzt0MjA9djIwKjM0Mzt0MjE9djIxKjM0Mzt0MjI9djIyKjM0Mzt0MjM9djIzKjM0Mzt0MjQ9djI0KjM0Mzt0MjU9djI1KjM0Mzt0MjY9djI2KjM0Mzt0Mjc9djI3KjM0Mzt0Mjg9djI4KjM0Mzt0Mjk9djI5KjM0Mzt0MzA9djMwKjM0Mzt0MzE9djMxKjM0Mztcblx0XHRcdFx0dDIxKz12MDw8ODt0MjIrPXYxPDw4O3QyMys9djI8PDg7dDI0Kz12Mzw8ODt0MjUrPXY0PDw4O3QyNis9djU8PDg7dDI3Kz12Njw8ODt0MjgrPXY3PDw4O3QyOSs9djg8PDg7dDMwKz12OTw8ODt0MzErPXYxMDw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7djMxPSh0MzErKHQzMD4+PjE2KSkmNjU1MzU7djMwPXQzMCY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzQzO3QxPXYxKjM0Mzt0Mj12MiozNDM7dDM9djMqMzQzO3Q0PXY0KjM0Mzt0NT12NSozNDM7dDY9djYqMzQzO3Q3PXY3KjM0Mzt0OD12OCozNDM7dDk9djkqMzQzO3QxMD12MTAqMzQzO3QxMT12MTEqMzQzO3QxMj12MTIqMzQzO3QxMz12MTMqMzQzO3QxND12MTQqMzQzO3QxNT12MTUqMzQzO3QxNj12MTYqMzQzO3QxNz12MTcqMzQzO3QxOD12MTgqMzQzO3QxOT12MTkqMzQzO3QyMD12MjAqMzQzO3QyMT12MjEqMzQzO3QyMj12MjIqMzQzO3QyMz12MjMqMzQzO3QyND12MjQqMzQzO3QyNT12MjUqMzQzO3QyNj12MjYqMzQzO3QyNz12MjcqMzQzO3QyOD12MjgqMzQzO3QyOT12MjkqMzQzO3QzMD12MzAqMzQzO3QzMT12MzEqMzQzO1xuXHRcdFx0XHR0MjErPXYwPDw4O3QyMis9djE8PDg7dDIzKz12Mjw8ODt0MjQrPXYzPDw4O3QyNSs9djQ8PDg7dDI2Kz12NTw8ODt0MjcrPXY2PDw4O3QyOCs9djc8PDg7dDI5Kz12ODw8ODt0MzArPXY5PDw4O3QzMSs9djEwPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt2MzE9KHQzMSsodDMwPj4+MTYpKSY2NTUzNTt2MzA9dDMwJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2MzE+PjhdK2hsW3YzMSYyNTVdK2hsW3YzMD4+OF0raGxbdjMwJjI1NV0raGxbdjI5Pj44XStobFt2MjkmMjU1XStobFt2Mjg+PjhdK2hsW3YyOCYyNTVdK2hsW3YyNz4+OF0raGxbdjI3JjI1NV0raGxbdjI2Pj44XStobFt2MjYmMjU1XStobFt2MjU+PjhdK2hsW3YyNSYyNTVdK2hsW3YyND4+OF0raGxbdjI0JjI1NV0raGxbdjIzPj44XStobFt2MjMmMjU1XStobFt2MjI+PjhdK2hsW3YyMiYyNTVdK2hsW3YyMT4+OF0raGxbdjIxJjI1NV0raGxbdjIwPj44XStobFt2MjAmMjU1XStobFt2MTk+PjhdK2hsW3YxOSYyNTVdK2hsW3YxOD4+OF0raGxbdjE4JjI1NV0raGxbdjE3Pj44XStobFt2MTcmMjU1XStobFt2MTY+PjhdK2hsW3YxNiYyNTVdK2hsW3YxNT4+OF0raGxbdjE1JjI1NV0raGxbdjE0Pj44XStobFt2MTQmMjU1XStobFt2MTM+PjhdK2hsW3YxMyYyNTVdK2hsW3YxMj4+OF0raGxbdjEyJjI1NV0raGxbdjExPj44XStobFt2MTEmMjU1XStobFt2MTA+PjhdK2hsW3YxMCYyNTVdK2hsW3Y5Pj44XStobFt2OSYyNTVdK2hsW3Y4Pj44XStobFt2OCYyNTVdK2hsW3Y3Pj44XStobFt2NyYyNTVdK2hsW3Y2Pj44XStobFt2NiYyNTVdK2hsW3Y1Pj44XStobFt2NSYyNTVdK2hsW3Y0Pj44XStobFt2NCYyNTVdK2hsW3YzPj44XStobFt2MyYyNTVdK2hsW3YyPj44XStobFt2MiYyNTVdK2hsW3YxPj44XStobFt2MSYyNTVdK2hsW3YwPj44XStobFt2MCYyNTVdLDUxMik7XG5cdH1cblxuXHRfaGFzaDUxMiA9IF9oYXNoNTEyXzFhO1xuXG5cdGZ1bmN0aW9uIF9oYXNoMTAyNF8xYShzdHIpe1xuXHRcdHZhciBpLGw9c3RyLmxlbmd0aC0zLHM9Zm52Q29uc3RhbnRzWzEwMjRdLm9mZnNldCx0MD0wLHYwPXNbNjNdfDAsdDE9MCx2MT1zWzYyXXwwLHQyPTAsdjI9c1s2MV18MCx0Mz0wLHYzPXNbNjBdfDAsdDQ9MCx2ND1zWzU5XXwwLHQ1PTAsdjU9c1s1OF18MCx0Nj0wLHY2PXNbNTddfDAsdDc9MCx2Nz1zWzU2XXwwLHQ4PTAsdjg9c1s1NV18MCx0OT0wLHY5PXNbNTRdfDAsdDEwPTAsdjEwPXNbNTNdfDAsdDExPTAsdjExPXNbNTJdfDAsdDEyPTAsdjEyPXNbNTFdfDAsdDEzPTAsdjEzPXNbNTBdfDAsdDE0PTAsdjE0PXNbNDldfDAsdDE1PTAsdjE1PXNbNDhdfDAsdDE2PTAsdjE2PXNbNDddfDAsdDE3PTAsdjE3PXNbNDZdfDAsdDE4PTAsdjE4PXNbNDVdfDAsdDE5PTAsdjE5PXNbNDRdfDAsdDIwPTAsdjIwPXNbNDNdfDAsdDIxPTAsdjIxPXNbNDJdfDAsdDIyPTAsdjIyPXNbNDFdfDAsdDIzPTAsdjIzPXNbNDBdfDAsdDI0PTAsdjI0PXNbMzldfDAsdDI1PTAsdjI1PXNbMzhdfDAsdDI2PTAsdjI2PXNbMzddfDAsdDI3PTAsdjI3PXNbMzZdfDAsdDI4PTAsdjI4PXNbMzVdfDAsdDI5PTAsdjI5PXNbMzRdfDAsdDMwPTAsdjMwPXNbMzNdfDAsdDMxPTAsdjMxPXNbMzJdfDAsdDMyPTAsdjMyPXNbMzFdfDAsdDMzPTAsdjMzPXNbMzBdfDAsdDM0PTAsdjM0PXNbMjldfDAsdDM1PTAsdjM1PXNbMjhdfDAsdDM2PTAsdjM2PXNbMjddfDAsdDM3PTAsdjM3PXNbMjZdfDAsdDM4PTAsdjM4PXNbMjVdfDAsdDM5PTAsdjM5PXNbMjRdfDAsdDQwPTAsdjQwPXNbMjNdfDAsdDQxPTAsdjQxPXNbMjJdfDAsdDQyPTAsdjQyPXNbMjFdfDAsdDQzPTAsdjQzPXNbMjBdfDAsdDQ0PTAsdjQ0PXNbMTldfDAsdDQ1PTAsdjQ1PXNbMThdfDAsdDQ2PTAsdjQ2PXNbMTddfDAsdDQ3PTAsdjQ3PXNbMTZdfDAsdDQ4PTAsdjQ4PXNbMTVdfDAsdDQ5PTAsdjQ5PXNbMTRdfDAsdDUwPTAsdjUwPXNbMTNdfDAsdDUxPTAsdjUxPXNbMTJdfDAsdDUyPTAsdjUyPXNbMTFdfDAsdDUzPTAsdjUzPXNbMTBdfDAsdDU0PTAsdjU0PXNbOV18MCx0NTU9MCx2NTU9c1s4XXwwLHQ1Nj0wLHY1Nj1zWzddfDAsdDU3PTAsdjU3PXNbNl18MCx0NTg9MCx2NTg9c1s1XXwwLHQ1OT0wLHY1OT1zWzRdfDAsdDYwPTAsdjYwPXNbM118MCx0NjE9MCx2NjE9c1syXXwwLHQ2Mj0wLHY2Mj1zWzFdfDAsdDYzPTAsdjYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOykge1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdH1cblxuXHRcdHdoaWxlKGk8bCszKXtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2NjM+PjhdK2hsW3Y2MyYyNTVdK2hsW3Y2Mj4+OF0raGxbdjYyJjI1NV0raGxbdjYxPj44XStobFt2NjEmMjU1XStobFt2NjA+PjhdK2hsW3Y2MCYyNTVdK2hsW3Y1OT4+OF0raGxbdjU5JjI1NV0raGxbdjU4Pj44XStobFt2NTgmMjU1XStobFt2NTc+PjhdK2hsW3Y1NyYyNTVdK2hsW3Y1Nj4+OF0raGxbdjU2JjI1NV0raGxbdjU1Pj44XStobFt2NTUmMjU1XStobFt2NTQ+PjhdK2hsW3Y1NCYyNTVdK2hsW3Y1Mz4+OF0raGxbdjUzJjI1NV0raGxbdjUyPj44XStobFt2NTImMjU1XStobFt2NTE+PjhdK2hsW3Y1MSYyNTVdK2hsW3Y1MD4+OF0raGxbdjUwJjI1NV0raGxbdjQ5Pj44XStobFt2NDkmMjU1XStobFt2NDg+PjhdK2hsW3Y0OCYyNTVdK2hsW3Y0Nz4+OF0raGxbdjQ3JjI1NV0raGxbdjQ2Pj44XStobFt2NDYmMjU1XStobFt2NDU+PjhdK2hsW3Y0NSYyNTVdK2hsW3Y0ND4+OF0raGxbdjQ0JjI1NV0raGxbdjQzPj44XStobFt2NDMmMjU1XStobFt2NDI+PjhdK2hsW3Y0MiYyNTVdK2hsW3Y0MT4+OF0raGxbdjQxJjI1NV0raGxbdjQwPj44XStobFt2NDAmMjU1XStobFt2Mzk+PjhdK2hsW3YzOSYyNTVdK2hsW3YzOD4+OF0raGxbdjM4JjI1NV0raGxbdjM3Pj44XStobFt2MzcmMjU1XStobFt2MzY+PjhdK2hsW3YzNiYyNTVdK2hsW3YzNT4+OF0raGxbdjM1JjI1NV0raGxbdjM0Pj44XStobFt2MzQmMjU1XStobFt2MzM+PjhdK2hsW3YzMyYyNTVdK2hsW3YzMj4+OF0raGxbdjMyJjI1NV0raGxbdjMxPj44XStobFt2MzEmMjU1XStobFt2MzA+PjhdK2hsW3YzMCYyNTVdK2hsW3YyOT4+OF0raGxbdjI5JjI1NV0raGxbdjI4Pj44XStobFt2MjgmMjU1XStobFt2Mjc+PjhdK2hsW3YyNyYyNTVdK2hsW3YyNj4+OF0raGxbdjI2JjI1NV0raGxbdjI1Pj44XStobFt2MjUmMjU1XStobFt2MjQ+PjhdK2hsW3YyNCYyNTVdK2hsW3YyMz4+OF0raGxbdjIzJjI1NV0raGxbdjIyPj44XStobFt2MjImMjU1XStobFt2MjE+PjhdK2hsW3YyMSYyNTVdK2hsW3YyMD4+OF0raGxbdjIwJjI1NV0raGxbdjE5Pj44XStobFt2MTkmMjU1XStobFt2MTg+PjhdK2hsW3YxOCYyNTVdK2hsW3YxNz4+OF0raGxbdjE3JjI1NV0raGxbdjE2Pj44XStobFt2MTYmMjU1XStobFt2MTU+PjhdK2hsW3YxNSYyNTVdK2hsW3YxND4+OF0raGxbdjE0JjI1NV0raGxbdjEzPj44XStobFt2MTMmMjU1XStobFt2MTI+PjhdK2hsW3YxMiYyNTVdK2hsW3YxMT4+OF0raGxbdjExJjI1NV0raGxbdjEwPj44XStobFt2MTAmMjU1XStobFt2OT4+OF0raGxbdjkmMjU1XStobFt2OD4+OF0raGxbdjgmMjU1XStobFt2Nz4+OF0raGxbdjcmMjU1XStobFt2Nj4+OF0raGxbdjYmMjU1XStobFt2NT4+OF0raGxbdjUmMjU1XStobFt2ND4+OF0raGxbdjQmMjU1XStobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSwxMDI0KTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMTAyNF8xKHN0cil7XG5cdFx0dmFyIGksbD1zdHIubGVuZ3RoLTMscz1mbnZDb25zdGFudHNbMTAyNF0ub2Zmc2V0LHQwPTAsdjA9c1s2M118MCx0MT0wLHYxPXNbNjJdfDAsdDI9MCx2Mj1zWzYxXXwwLHQzPTAsdjM9c1s2MF18MCx0ND0wLHY0PXNbNTldfDAsdDU9MCx2NT1zWzU4XXwwLHQ2PTAsdjY9c1s1N118MCx0Nz0wLHY3PXNbNTZdfDAsdDg9MCx2OD1zWzU1XXwwLHQ5PTAsdjk9c1s1NF18MCx0MTA9MCx2MTA9c1s1M118MCx0MTE9MCx2MTE9c1s1Ml18MCx0MTI9MCx2MTI9c1s1MV18MCx0MTM9MCx2MTM9c1s1MF18MCx0MTQ9MCx2MTQ9c1s0OV18MCx0MTU9MCx2MTU9c1s0OF18MCx0MTY9MCx2MTY9c1s0N118MCx0MTc9MCx2MTc9c1s0Nl18MCx0MTg9MCx2MTg9c1s0NV18MCx0MTk9MCx2MTk9c1s0NF18MCx0MjA9MCx2MjA9c1s0M118MCx0MjE9MCx2MjE9c1s0Ml18MCx0MjI9MCx2MjI9c1s0MV18MCx0MjM9MCx2MjM9c1s0MF18MCx0MjQ9MCx2MjQ9c1szOV18MCx0MjU9MCx2MjU9c1szOF18MCx0MjY9MCx2MjY9c1szN118MCx0Mjc9MCx2Mjc9c1szNl18MCx0Mjg9MCx2Mjg9c1szNV18MCx0Mjk9MCx2Mjk9c1szNF18MCx0MzA9MCx2MzA9c1szM118MCx0MzE9MCx2MzE9c1szMl18MCx0MzI9MCx2MzI9c1szMV18MCx0MzM9MCx2MzM9c1szMF18MCx0MzQ9MCx2MzQ9c1syOV18MCx0MzU9MCx2MzU9c1syOF18MCx0MzY9MCx2MzY9c1syN118MCx0Mzc9MCx2Mzc9c1syNl18MCx0Mzg9MCx2Mzg9c1syNV18MCx0Mzk9MCx2Mzk9c1syNF18MCx0NDA9MCx2NDA9c1syM118MCx0NDE9MCx2NDE9c1syMl18MCx0NDI9MCx2NDI9c1syMV18MCx0NDM9MCx2NDM9c1syMF18MCx0NDQ9MCx2NDQ9c1sxOV18MCx0NDU9MCx2NDU9c1sxOF18MCx0NDY9MCx2NDY9c1sxN118MCx0NDc9MCx2NDc9c1sxNl18MCx0NDg9MCx2NDg9c1sxNV18MCx0NDk9MCx2NDk9c1sxNF18MCx0NTA9MCx2NTA9c1sxM118MCx0NTE9MCx2NTE9c1sxMl18MCx0NTI9MCx2NTI9c1sxMV18MCx0NTM9MCx2NTM9c1sxMF18MCx0NTQ9MCx2NTQ9c1s5XXwwLHQ1NT0wLHY1NT1zWzhdfDAsdDU2PTAsdjU2PXNbN118MCx0NTc9MCx2NTc9c1s2XXwwLHQ1OD0wLHY1OD1zWzVdfDAsdDU5PTAsdjU5PXNbNF18MCx0NjA9MCx2NjA9c1szXXwwLHQ2MT0wLHY2MT1zWzJdfDAsdDYyPTAsdjYyPXNbMV18MCx0NjM9MCx2NjM9c1swXXwwO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGw7KSB7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0djBePXN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0fVxuXG5cdFx0d2hpbGUoaTxsKzMpe1xuXHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdHYwXj1zdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYXNoVmFsSGV4KGhsW3Y2Mz4+OF0raGxbdjYzJjI1NV0raGxbdjYyPj44XStobFt2NjImMjU1XStobFt2NjE+PjhdK2hsW3Y2MSYyNTVdK2hsW3Y2MD4+OF0raGxbdjYwJjI1NV0raGxbdjU5Pj44XStobFt2NTkmMjU1XStobFt2NTg+PjhdK2hsW3Y1OCYyNTVdK2hsW3Y1Nz4+OF0raGxbdjU3JjI1NV0raGxbdjU2Pj44XStobFt2NTYmMjU1XStobFt2NTU+PjhdK2hsW3Y1NSYyNTVdK2hsW3Y1ND4+OF0raGxbdjU0JjI1NV0raGxbdjUzPj44XStobFt2NTMmMjU1XStobFt2NTI+PjhdK2hsW3Y1MiYyNTVdK2hsW3Y1MT4+OF0raGxbdjUxJjI1NV0raGxbdjUwPj44XStobFt2NTAmMjU1XStobFt2NDk+PjhdK2hsW3Y0OSYyNTVdK2hsW3Y0OD4+OF0raGxbdjQ4JjI1NV0raGxbdjQ3Pj44XStobFt2NDcmMjU1XStobFt2NDY+PjhdK2hsW3Y0NiYyNTVdK2hsW3Y0NT4+OF0raGxbdjQ1JjI1NV0raGxbdjQ0Pj44XStobFt2NDQmMjU1XStobFt2NDM+PjhdK2hsW3Y0MyYyNTVdK2hsW3Y0Mj4+OF0raGxbdjQyJjI1NV0raGxbdjQxPj44XStobFt2NDEmMjU1XStobFt2NDA+PjhdK2hsW3Y0MCYyNTVdK2hsW3YzOT4+OF0raGxbdjM5JjI1NV0raGxbdjM4Pj44XStobFt2MzgmMjU1XStobFt2Mzc+PjhdK2hsW3YzNyYyNTVdK2hsW3YzNj4+OF0raGxbdjM2JjI1NV0raGxbdjM1Pj44XStobFt2MzUmMjU1XStobFt2MzQ+PjhdK2hsW3YzNCYyNTVdK2hsW3YzMz4+OF0raGxbdjMzJjI1NV0raGxbdjMyPj44XStobFt2MzImMjU1XStobFt2MzE+PjhdK2hsW3YzMSYyNTVdK2hsW3YzMD4+OF0raGxbdjMwJjI1NV0raGxbdjI5Pj44XStobFt2MjkmMjU1XStobFt2Mjg+PjhdK2hsW3YyOCYyNTVdK2hsW3YyNz4+OF0raGxbdjI3JjI1NV0raGxbdjI2Pj44XStobFt2MjYmMjU1XStobFt2MjU+PjhdK2hsW3YyNSYyNTVdK2hsW3YyND4+OF0raGxbdjI0JjI1NV0raGxbdjIzPj44XStobFt2MjMmMjU1XStobFt2MjI+PjhdK2hsW3YyMiYyNTVdK2hsW3YyMT4+OF0raGxbdjIxJjI1NV0raGxbdjIwPj44XStobFt2MjAmMjU1XStobFt2MTk+PjhdK2hsW3YxOSYyNTVdK2hsW3YxOD4+OF0raGxbdjE4JjI1NV0raGxbdjE3Pj44XStobFt2MTcmMjU1XStobFt2MTY+PjhdK2hsW3YxNiYyNTVdK2hsW3YxNT4+OF0raGxbdjE1JjI1NV0raGxbdjE0Pj44XStobFt2MTQmMjU1XStobFt2MTM+PjhdK2hsW3YxMyYyNTVdK2hsW3YxMj4+OF0raGxbdjEyJjI1NV0raGxbdjExPj44XStobFt2MTEmMjU1XStobFt2MTA+PjhdK2hsW3YxMCYyNTVdK2hsW3Y5Pj44XStobFt2OSYyNTVdK2hsW3Y4Pj44XStobFt2OCYyNTVdK2hsW3Y3Pj44XStobFt2NyYyNTVdK2hsW3Y2Pj44XStobFt2NiYyNTVdK2hsW3Y1Pj44XStobFt2NSYyNTVdK2hsW3Y0Pj44XStobFt2NCYyNTVdK2hsW3YzPj44XStobFt2MyYyNTVdK2hsW3YyPj44XStobFt2MiYyNTVdK2hsW3YxPj44XStobFt2MSYyNTVdK2hsW3YwPj44XStobFt2MCYyNTVdLDEwMjQpO1xuXHR9XG5cblx0ZnVuY3Rpb24gX2hhc2gxMDI0XzFhX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzEwMjRdLm9mZnNldCx0MD0wLHYwPXNbNjNdfDAsdDE9MCx2MT1zWzYyXXwwLHQyPTAsdjI9c1s2MV18MCx0Mz0wLHYzPXNbNjBdfDAsdDQ9MCx2ND1zWzU5XXwwLHQ1PTAsdjU9c1s1OF18MCx0Nj0wLHY2PXNbNTddfDAsdDc9MCx2Nz1zWzU2XXwwLHQ4PTAsdjg9c1s1NV18MCx0OT0wLHY5PXNbNTRdfDAsdDEwPTAsdjEwPXNbNTNdfDAsdDExPTAsdjExPXNbNTJdfDAsdDEyPTAsdjEyPXNbNTFdfDAsdDEzPTAsdjEzPXNbNTBdfDAsdDE0PTAsdjE0PXNbNDldfDAsdDE1PTAsdjE1PXNbNDhdfDAsdDE2PTAsdjE2PXNbNDddfDAsdDE3PTAsdjE3PXNbNDZdfDAsdDE4PTAsdjE4PXNbNDVdfDAsdDE5PTAsdjE5PXNbNDRdfDAsdDIwPTAsdjIwPXNbNDNdfDAsdDIxPTAsdjIxPXNbNDJdfDAsdDIyPTAsdjIyPXNbNDFdfDAsdDIzPTAsdjIzPXNbNDBdfDAsdDI0PTAsdjI0PXNbMzldfDAsdDI1PTAsdjI1PXNbMzhdfDAsdDI2PTAsdjI2PXNbMzddfDAsdDI3PTAsdjI3PXNbMzZdfDAsdDI4PTAsdjI4PXNbMzVdfDAsdDI5PTAsdjI5PXNbMzRdfDAsdDMwPTAsdjMwPXNbMzNdfDAsdDMxPTAsdjMxPXNbMzJdfDAsdDMyPTAsdjMyPXNbMzFdfDAsdDMzPTAsdjMzPXNbMzBdfDAsdDM0PTAsdjM0PXNbMjldfDAsdDM1PTAsdjM1PXNbMjhdfDAsdDM2PTAsdjM2PXNbMjddfDAsdDM3PTAsdjM3PXNbMjZdfDAsdDM4PTAsdjM4PXNbMjVdfDAsdDM5PTAsdjM5PXNbMjRdfDAsdDQwPTAsdjQwPXNbMjNdfDAsdDQxPTAsdjQxPXNbMjJdfDAsdDQyPTAsdjQyPXNbMjFdfDAsdDQzPTAsdjQzPXNbMjBdfDAsdDQ0PTAsdjQ0PXNbMTldfDAsdDQ1PTAsdjQ1PXNbMThdfDAsdDQ2PTAsdjQ2PXNbMTddfDAsdDQ3PTAsdjQ3PXNbMTZdfDAsdDQ4PTAsdjQ4PXNbMTVdfDAsdDQ5PTAsdjQ5PXNbMTRdfDAsdDUwPTAsdjUwPXNbMTNdfDAsdDUxPTAsdjUxPXNbMTJdfDAsdDUyPTAsdjUyPXNbMTFdfDAsdDUzPTAsdjUzPXNbMTBdfDAsdDU0PTAsdjU0PXNbOV18MCx0NTU9MCx2NTU9c1s4XXwwLHQ1Nj0wLHY1Nj1zWzddfDAsdDU3PTAsdjU3PXNbNl18MCx0NTg9MCx2NTg9c1s1XXwwLHQ1OT0wLHY1OT1zWzRdfDAsdDYwPTAsdjYwPXNbM118MCx0NjE9MCx2NjE9c1syXXwwLHQ2Mj0wLHY2Mj1zWzFdfDAsdDYzPTAsdjYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0XHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRcdGlmKGMgPCAxMjgpe1xuXHRcdFx0XHR2MF49Yztcblx0XHRcdH1lbHNlIGlmKGMgPCAyMDQ4KXtcblx0XHRcdFx0djBePShjPj42KXwxOTI7XG5cdFx0XHRcdHQwPXYwKjM5Nzt0MT12MSozOTc7dDI9djIqMzk3O3QzPXYzKjM5Nzt0ND12NCozOTc7dDU9djUqMzk3O3Q2PXY2KjM5Nzt0Nz12NyozOTc7dDg9djgqMzk3O3Q5PXY5KjM5Nzt0MTA9djEwKjM5Nzt0MTE9djExKjM5Nzt0MTI9djEyKjM5Nzt0MTM9djEzKjM5Nzt0MTQ9djE0KjM5Nzt0MTU9djE1KjM5Nzt0MTY9djE2KjM5Nzt0MTc9djE3KjM5Nzt0MTg9djE4KjM5Nzt0MTk9djE5KjM5Nzt0MjA9djIwKjM5Nzt0MjE9djIxKjM5Nzt0MjI9djIyKjM5Nzt0MjM9djIzKjM5Nzt0MjQ9djI0KjM5Nzt0MjU9djI1KjM5Nzt0MjY9djI2KjM5Nzt0Mjc9djI3KjM5Nzt0Mjg9djI4KjM5Nzt0Mjk9djI5KjM5Nzt0MzA9djMwKjM5Nzt0MzE9djMxKjM5Nzt0MzI9djMyKjM5Nzt0MzM9djMzKjM5Nzt0MzQ9djM0KjM5Nzt0MzU9djM1KjM5Nzt0MzY9djM2KjM5Nzt0Mzc9djM3KjM5Nzt0Mzg9djM4KjM5Nzt0Mzk9djM5KjM5Nzt0NDA9djQwKjM5Nzt0NDE9djQxKjM5Nzt0NDI9djQyKjM5Nzt0NDM9djQzKjM5Nzt0NDQ9djQ0KjM5Nzt0NDU9djQ1KjM5Nzt0NDY9djQ2KjM5Nzt0NDc9djQ3KjM5Nzt0NDg9djQ4KjM5Nzt0NDk9djQ5KjM5Nzt0NTA9djUwKjM5Nzt0NTE9djUxKjM5Nzt0NTI9djUyKjM5Nzt0NTM9djUzKjM5Nzt0NTQ9djU0KjM5Nzt0NTU9djU1KjM5Nzt0NTY9djU2KjM5Nzt0NTc9djU3KjM5Nzt0NTg9djU4KjM5Nzt0NTk9djU5KjM5Nzt0NjA9djYwKjM5Nzt0NjE9djYxKjM5Nzt0NjI9djYyKjM5Nzt0NjM9djYzKjM5Nztcblx0XHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1lbHNlIGlmKCgoYyY2NDUxMik9PTU1Mjk2KSYmKGkrMSk8bCYmKChzdHIuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09NTYzMjApKXtcblx0XHRcdFx0Yz02NTUzNisoKGMmMTAyMyk8PDEwKSsoc3RyLmNoYXJDb2RlQXQoKytpKSYxMDIzKTtcblx0XHRcdFx0djBePShjPj4xOCl8MjQwO1xuXHRcdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+MTIpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM5Nzt0MT12MSozOTc7dDI9djIqMzk3O3QzPXYzKjM5Nzt0ND12NCozOTc7dDU9djUqMzk3O3Q2PXY2KjM5Nzt0Nz12NyozOTc7dDg9djgqMzk3O3Q5PXY5KjM5Nzt0MTA9djEwKjM5Nzt0MTE9djExKjM5Nzt0MTI9djEyKjM5Nzt0MTM9djEzKjM5Nzt0MTQ9djE0KjM5Nzt0MTU9djE1KjM5Nzt0MTY9djE2KjM5Nzt0MTc9djE3KjM5Nzt0MTg9djE4KjM5Nzt0MTk9djE5KjM5Nzt0MjA9djIwKjM5Nzt0MjE9djIxKjM5Nzt0MjI9djIyKjM5Nzt0MjM9djIzKjM5Nzt0MjQ9djI0KjM5Nzt0MjU9djI1KjM5Nzt0MjY9djI2KjM5Nzt0Mjc9djI3KjM5Nzt0Mjg9djI4KjM5Nzt0Mjk9djI5KjM5Nzt0MzA9djMwKjM5Nzt0MzE9djMxKjM5Nzt0MzI9djMyKjM5Nzt0MzM9djMzKjM5Nzt0MzQ9djM0KjM5Nzt0MzU9djM1KjM5Nzt0MzY9djM2KjM5Nzt0Mzc9djM3KjM5Nzt0Mzg9djM4KjM5Nzt0Mzk9djM5KjM5Nzt0NDA9djQwKjM5Nzt0NDE9djQxKjM5Nzt0NDI9djQyKjM5Nzt0NDM9djQzKjM5Nzt0NDQ9djQ0KjM5Nzt0NDU9djQ1KjM5Nzt0NDY9djQ2KjM5Nzt0NDc9djQ3KjM5Nzt0NDg9djQ4KjM5Nzt0NDk9djQ5KjM5Nzt0NTA9djUwKjM5Nzt0NTE9djUxKjM5Nzt0NTI9djUyKjM5Nzt0NTM9djUzKjM5Nzt0NTQ9djU0KjM5Nzt0NTU9djU1KjM5Nzt0NTY9djU2KjM5Nzt0NTc9djU3KjM5Nzt0NTg9djU4KjM5Nzt0NTk9djU5KjM5Nzt0NjA9djYwKjM5Nzt0NjE9djYxKjM5Nzt0NjI9djYyKjM5Nzt0NjM9djYzKjM5Nztcblx0XHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0XHR2MF49KChjPj42KSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0djBePShjPj4xMil8MjI0O1xuXHRcdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt0MzErPXQzMD4+PjE2O3YzMD10MzAmNjU1MzU7dDMyKz10MzE+Pj4xNjt2MzE9dDMxJjY1NTM1O3QzMys9dDMyPj4+MTY7djMyPXQzMiY2NTUzNTt0MzQrPXQzMz4+PjE2O3YzMz10MzMmNjU1MzU7dDM1Kz10MzQ+Pj4xNjt2MzQ9dDM0JjY1NTM1O3QzNis9dDM1Pj4+MTY7djM1PXQzNSY2NTUzNTt0MzcrPXQzNj4+PjE2O3YzNj10MzYmNjU1MzU7dDM4Kz10Mzc+Pj4xNjt2Mzc9dDM3JjY1NTM1O3QzOSs9dDM4Pj4+MTY7djM4PXQzOCY2NTUzNTt0NDArPXQzOT4+PjE2O3YzOT10MzkmNjU1MzU7dDQxKz10NDA+Pj4xNjt2NDA9dDQwJjY1NTM1O3Q0Mis9dDQxPj4+MTY7djQxPXQ0MSY2NTUzNTt0NDMrPXQ0Mj4+PjE2O3Y0Mj10NDImNjU1MzU7dDQ0Kz10NDM+Pj4xNjt2NDM9dDQzJjY1NTM1O3Q0NSs9dDQ0Pj4+MTY7djQ0PXQ0NCY2NTUzNTt0NDYrPXQ0NT4+PjE2O3Y0NT10NDUmNjU1MzU7dDQ3Kz10NDY+Pj4xNjt2NDY9dDQ2JjY1NTM1O3Q0OCs9dDQ3Pj4+MTY7djQ3PXQ0NyY2NTUzNTt0NDkrPXQ0OD4+PjE2O3Y0OD10NDgmNjU1MzU7dDUwKz10NDk+Pj4xNjt2NDk9dDQ5JjY1NTM1O3Q1MSs9dDUwPj4+MTY7djUwPXQ1MCY2NTUzNTt0NTIrPXQ1MT4+PjE2O3Y1MT10NTEmNjU1MzU7dDUzKz10NTI+Pj4xNjt2NTI9dDUyJjY1NTM1O3Q1NCs9dDUzPj4+MTY7djUzPXQ1MyY2NTUzNTt0NTUrPXQ1ND4+PjE2O3Y1ND10NTQmNjU1MzU7dDU2Kz10NTU+Pj4xNjt2NTU9dDU1JjY1NTM1O3Q1Nys9dDU2Pj4+MTY7djU2PXQ1NiY2NTUzNTt0NTgrPXQ1Nz4+PjE2O3Y1Nz10NTcmNjU1MzU7dDU5Kz10NTg+Pj4xNjt2NTg9dDU4JjY1NTM1O3Q2MCs9dDU5Pj4+MTY7djU5PXQ1OSY2NTUzNTt0NjErPXQ2MD4+PjE2O3Y2MD10NjAmNjU1MzU7dDYyKz10NjE+Pj4xNjt2NjE9dDYxJjY1NTM1O3Y2Mz0odDYzKyh0NjI+Pj4xNikpJjY1NTM1O3Y2Mj10NjImNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fVxuXHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2NjM+PjhdK2hsW3Y2MyYyNTVdK2hsW3Y2Mj4+OF0raGxbdjYyJjI1NV0raGxbdjYxPj44XStobFt2NjEmMjU1XStobFt2NjA+PjhdK2hsW3Y2MCYyNTVdK2hsW3Y1OT4+OF0raGxbdjU5JjI1NV0raGxbdjU4Pj44XStobFt2NTgmMjU1XStobFt2NTc+PjhdK2hsW3Y1NyYyNTVdK2hsW3Y1Nj4+OF0raGxbdjU2JjI1NV0raGxbdjU1Pj44XStobFt2NTUmMjU1XStobFt2NTQ+PjhdK2hsW3Y1NCYyNTVdK2hsW3Y1Mz4+OF0raGxbdjUzJjI1NV0raGxbdjUyPj44XStobFt2NTImMjU1XStobFt2NTE+PjhdK2hsW3Y1MSYyNTVdK2hsW3Y1MD4+OF0raGxbdjUwJjI1NV0raGxbdjQ5Pj44XStobFt2NDkmMjU1XStobFt2NDg+PjhdK2hsW3Y0OCYyNTVdK2hsW3Y0Nz4+OF0raGxbdjQ3JjI1NV0raGxbdjQ2Pj44XStobFt2NDYmMjU1XStobFt2NDU+PjhdK2hsW3Y0NSYyNTVdK2hsW3Y0ND4+OF0raGxbdjQ0JjI1NV0raGxbdjQzPj44XStobFt2NDMmMjU1XStobFt2NDI+PjhdK2hsW3Y0MiYyNTVdK2hsW3Y0MT4+OF0raGxbdjQxJjI1NV0raGxbdjQwPj44XStobFt2NDAmMjU1XStobFt2Mzk+PjhdK2hsW3YzOSYyNTVdK2hsW3YzOD4+OF0raGxbdjM4JjI1NV0raGxbdjM3Pj44XStobFt2MzcmMjU1XStobFt2MzY+PjhdK2hsW3YzNiYyNTVdK2hsW3YzNT4+OF0raGxbdjM1JjI1NV0raGxbdjM0Pj44XStobFt2MzQmMjU1XStobFt2MzM+PjhdK2hsW3YzMyYyNTVdK2hsW3YzMj4+OF0raGxbdjMyJjI1NV0raGxbdjMxPj44XStobFt2MzEmMjU1XStobFt2MzA+PjhdK2hsW3YzMCYyNTVdK2hsW3YyOT4+OF0raGxbdjI5JjI1NV0raGxbdjI4Pj44XStobFt2MjgmMjU1XStobFt2Mjc+PjhdK2hsW3YyNyYyNTVdK2hsW3YyNj4+OF0raGxbdjI2JjI1NV0raGxbdjI1Pj44XStobFt2MjUmMjU1XStobFt2MjQ+PjhdK2hsW3YyNCYyNTVdK2hsW3YyMz4+OF0raGxbdjIzJjI1NV0raGxbdjIyPj44XStobFt2MjImMjU1XStobFt2MjE+PjhdK2hsW3YyMSYyNTVdK2hsW3YyMD4+OF0raGxbdjIwJjI1NV0raGxbdjE5Pj44XStobFt2MTkmMjU1XStobFt2MTg+PjhdK2hsW3YxOCYyNTVdK2hsW3YxNz4+OF0raGxbdjE3JjI1NV0raGxbdjE2Pj44XStobFt2MTYmMjU1XStobFt2MTU+PjhdK2hsW3YxNSYyNTVdK2hsW3YxND4+OF0raGxbdjE0JjI1NV0raGxbdjEzPj44XStobFt2MTMmMjU1XStobFt2MTI+PjhdK2hsW3YxMiYyNTVdK2hsW3YxMT4+OF0raGxbdjExJjI1NV0raGxbdjEwPj44XStobFt2MTAmMjU1XStobFt2OT4+OF0raGxbdjkmMjU1XStobFt2OD4+OF0raGxbdjgmMjU1XStobFt2Nz4+OF0raGxbdjcmMjU1XStobFt2Nj4+OF0raGxbdjYmMjU1XStobFt2NT4+OF0raGxbdjUmMjU1XStobFt2ND4+OF0raGxbdjQmMjU1XStobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSwxMDI0KTtcblx0fVxuXG5cdGZ1bmN0aW9uIF9oYXNoMTAyNF8xX3V0ZihzdHIpe1xuXHRcdHZhciBjLGksbD1zdHIubGVuZ3RoLHM9Zm52Q29uc3RhbnRzWzEwMjRdLm9mZnNldCx0MD0wLHYwPXNbNjNdfDAsdDE9MCx2MT1zWzYyXXwwLHQyPTAsdjI9c1s2MV18MCx0Mz0wLHYzPXNbNjBdfDAsdDQ9MCx2ND1zWzU5XXwwLHQ1PTAsdjU9c1s1OF18MCx0Nj0wLHY2PXNbNTddfDAsdDc9MCx2Nz1zWzU2XXwwLHQ4PTAsdjg9c1s1NV18MCx0OT0wLHY5PXNbNTRdfDAsdDEwPTAsdjEwPXNbNTNdfDAsdDExPTAsdjExPXNbNTJdfDAsdDEyPTAsdjEyPXNbNTFdfDAsdDEzPTAsdjEzPXNbNTBdfDAsdDE0PTAsdjE0PXNbNDldfDAsdDE1PTAsdjE1PXNbNDhdfDAsdDE2PTAsdjE2PXNbNDddfDAsdDE3PTAsdjE3PXNbNDZdfDAsdDE4PTAsdjE4PXNbNDVdfDAsdDE5PTAsdjE5PXNbNDRdfDAsdDIwPTAsdjIwPXNbNDNdfDAsdDIxPTAsdjIxPXNbNDJdfDAsdDIyPTAsdjIyPXNbNDFdfDAsdDIzPTAsdjIzPXNbNDBdfDAsdDI0PTAsdjI0PXNbMzldfDAsdDI1PTAsdjI1PXNbMzhdfDAsdDI2PTAsdjI2PXNbMzddfDAsdDI3PTAsdjI3PXNbMzZdfDAsdDI4PTAsdjI4PXNbMzVdfDAsdDI5PTAsdjI5PXNbMzRdfDAsdDMwPTAsdjMwPXNbMzNdfDAsdDMxPTAsdjMxPXNbMzJdfDAsdDMyPTAsdjMyPXNbMzFdfDAsdDMzPTAsdjMzPXNbMzBdfDAsdDM0PTAsdjM0PXNbMjldfDAsdDM1PTAsdjM1PXNbMjhdfDAsdDM2PTAsdjM2PXNbMjddfDAsdDM3PTAsdjM3PXNbMjZdfDAsdDM4PTAsdjM4PXNbMjVdfDAsdDM5PTAsdjM5PXNbMjRdfDAsdDQwPTAsdjQwPXNbMjNdfDAsdDQxPTAsdjQxPXNbMjJdfDAsdDQyPTAsdjQyPXNbMjFdfDAsdDQzPTAsdjQzPXNbMjBdfDAsdDQ0PTAsdjQ0PXNbMTldfDAsdDQ1PTAsdjQ1PXNbMThdfDAsdDQ2PTAsdjQ2PXNbMTddfDAsdDQ3PTAsdjQ3PXNbMTZdfDAsdDQ4PTAsdjQ4PXNbMTVdfDAsdDQ5PTAsdjQ5PXNbMTRdfDAsdDUwPTAsdjUwPXNbMTNdfDAsdDUxPTAsdjUxPXNbMTJdfDAsdDUyPTAsdjUyPXNbMTFdfDAsdDUzPTAsdjUzPXNbMTBdfDAsdDU0PTAsdjU0PXNbOV18MCx0NTU9MCx2NTU9c1s4XXwwLHQ1Nj0wLHY1Nj1zWzddfDAsdDU3PTAsdjU3PXNbNl18MCx0NTg9MCx2NTg9c1s1XXwwLHQ1OT0wLHY1OT1zWzRdfDAsdDYwPTAsdjYwPXNbM118MCx0NjE9MCx2NjE9c1syXXwwLHQ2Mj0wLHY2Mj1zWzFdfDAsdDYzPTAsdjYzPXNbMF18MDtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcblx0XHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRcdHQwPXYwKjM5Nzt0MT12MSozOTc7dDI9djIqMzk3O3QzPXYzKjM5Nzt0ND12NCozOTc7dDU9djUqMzk3O3Q2PXY2KjM5Nzt0Nz12NyozOTc7dDg9djgqMzk3O3Q5PXY5KjM5Nzt0MTA9djEwKjM5Nzt0MTE9djExKjM5Nzt0MTI9djEyKjM5Nzt0MTM9djEzKjM5Nzt0MTQ9djE0KjM5Nzt0MTU9djE1KjM5Nzt0MTY9djE2KjM5Nzt0MTc9djE3KjM5Nzt0MTg9djE4KjM5Nzt0MTk9djE5KjM5Nzt0MjA9djIwKjM5Nzt0MjE9djIxKjM5Nzt0MjI9djIyKjM5Nzt0MjM9djIzKjM5Nzt0MjQ9djI0KjM5Nzt0MjU9djI1KjM5Nzt0MjY9djI2KjM5Nzt0Mjc9djI3KjM5Nzt0Mjg9djI4KjM5Nzt0Mjk9djI5KjM5Nzt0MzA9djMwKjM5Nzt0MzE9djMxKjM5Nzt0MzI9djMyKjM5Nzt0MzM9djMzKjM5Nzt0MzQ9djM0KjM5Nzt0MzU9djM1KjM5Nzt0MzY9djM2KjM5Nzt0Mzc9djM3KjM5Nzt0Mzg9djM4KjM5Nzt0Mzk9djM5KjM5Nzt0NDA9djQwKjM5Nzt0NDE9djQxKjM5Nzt0NDI9djQyKjM5Nzt0NDM9djQzKjM5Nzt0NDQ9djQ0KjM5Nzt0NDU9djQ1KjM5Nzt0NDY9djQ2KjM5Nzt0NDc9djQ3KjM5Nzt0NDg9djQ4KjM5Nzt0NDk9djQ5KjM5Nzt0NTA9djUwKjM5Nzt0NTE9djUxKjM5Nzt0NTI9djUyKjM5Nzt0NTM9djUzKjM5Nzt0NTQ9djU0KjM5Nzt0NTU9djU1KjM5Nzt0NTY9djU2KjM5Nzt0NTc9djU3KjM5Nzt0NTg9djU4KjM5Nzt0NTk9djU5KjM5Nzt0NjA9djYwKjM5Nzt0NjE9djYxKjM5Nzt0NjI9djYyKjM5Nzt0NjM9djYzKjM5Nztcblx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt0MzErPXQzMD4+PjE2O3YzMD10MzAmNjU1MzU7dDMyKz10MzE+Pj4xNjt2MzE9dDMxJjY1NTM1O3QzMys9dDMyPj4+MTY7djMyPXQzMiY2NTUzNTt0MzQrPXQzMz4+PjE2O3YzMz10MzMmNjU1MzU7dDM1Kz10MzQ+Pj4xNjt2MzQ9dDM0JjY1NTM1O3QzNis9dDM1Pj4+MTY7djM1PXQzNSY2NTUzNTt0MzcrPXQzNj4+PjE2O3YzNj10MzYmNjU1MzU7dDM4Kz10Mzc+Pj4xNjt2Mzc9dDM3JjY1NTM1O3QzOSs9dDM4Pj4+MTY7djM4PXQzOCY2NTUzNTt0NDArPXQzOT4+PjE2O3YzOT10MzkmNjU1MzU7dDQxKz10NDA+Pj4xNjt2NDA9dDQwJjY1NTM1O3Q0Mis9dDQxPj4+MTY7djQxPXQ0MSY2NTUzNTt0NDMrPXQ0Mj4+PjE2O3Y0Mj10NDImNjU1MzU7dDQ0Kz10NDM+Pj4xNjt2NDM9dDQzJjY1NTM1O3Q0NSs9dDQ0Pj4+MTY7djQ0PXQ0NCY2NTUzNTt0NDYrPXQ0NT4+PjE2O3Y0NT10NDUmNjU1MzU7dDQ3Kz10NDY+Pj4xNjt2NDY9dDQ2JjY1NTM1O3Q0OCs9dDQ3Pj4+MTY7djQ3PXQ0NyY2NTUzNTt0NDkrPXQ0OD4+PjE2O3Y0OD10NDgmNjU1MzU7dDUwKz10NDk+Pj4xNjt2NDk9dDQ5JjY1NTM1O3Q1MSs9dDUwPj4+MTY7djUwPXQ1MCY2NTUzNTt0NTIrPXQ1MT4+PjE2O3Y1MT10NTEmNjU1MzU7dDUzKz10NTI+Pj4xNjt2NTI9dDUyJjY1NTM1O3Q1NCs9dDUzPj4+MTY7djUzPXQ1MyY2NTUzNTt0NTUrPXQ1ND4+PjE2O3Y1ND10NTQmNjU1MzU7dDU2Kz10NTU+Pj4xNjt2NTU9dDU1JjY1NTM1O3Q1Nys9dDU2Pj4+MTY7djU2PXQ1NiY2NTUzNTt0NTgrPXQ1Nz4+PjE2O3Y1Nz10NTcmNjU1MzU7dDU5Kz10NTg+Pj4xNjt2NTg9dDU4JjY1NTM1O3Q2MCs9dDU5Pj4+MTY7djU5PXQ1OSY2NTUzNTt0NjErPXQ2MD4+PjE2O3Y2MD10NjAmNjU1MzU7dDYyKz10NjE+Pj4xNjt2NjE9dDYxJjY1NTM1O3Y2Mz0odDYzKyh0NjI+Pj4xNikpJjY1NTM1O3Y2Mj10NjImNjU1MzU7XG5cdFx0XHRpZihjIDwgMTI4KXtcblx0XHRcdFx0djBePWM7XG5cdFx0XHR9ZWxzZSBpZihjIDwgMjA0OCl7XG5cdFx0XHRcdHYwXj0oYz4+Nil8MTkyO1xuXHRcdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdFx0djBePShjJjYzKXwxMjg7XG5cdFx0XHR9ZWxzZSBpZigoKGMmNjQ1MTIpPT01NTI5NikmJihpKzEpPGwmJigoc3RyLmNoYXJDb2RlQXQoaSsxKSY2NDUxMik9PTU2MzIwKSl7XG5cdFx0XHRcdGM9NjU1MzYrKChjJjEwMjMpPDwxMCkrKHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7XG5cdFx0XHRcdHYwXj0oYz4+MTgpfDI0MDtcblx0XHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt0MzErPXQzMD4+PjE2O3YzMD10MzAmNjU1MzU7dDMyKz10MzE+Pj4xNjt2MzE9dDMxJjY1NTM1O3QzMys9dDMyPj4+MTY7djMyPXQzMiY2NTUzNTt0MzQrPXQzMz4+PjE2O3YzMz10MzMmNjU1MzU7dDM1Kz10MzQ+Pj4xNjt2MzQ9dDM0JjY1NTM1O3QzNis9dDM1Pj4+MTY7djM1PXQzNSY2NTUzNTt0MzcrPXQzNj4+PjE2O3YzNj10MzYmNjU1MzU7dDM4Kz10Mzc+Pj4xNjt2Mzc9dDM3JjY1NTM1O3QzOSs9dDM4Pj4+MTY7djM4PXQzOCY2NTUzNTt0NDArPXQzOT4+PjE2O3YzOT10MzkmNjU1MzU7dDQxKz10NDA+Pj4xNjt2NDA9dDQwJjY1NTM1O3Q0Mis9dDQxPj4+MTY7djQxPXQ0MSY2NTUzNTt0NDMrPXQ0Mj4+PjE2O3Y0Mj10NDImNjU1MzU7dDQ0Kz10NDM+Pj4xNjt2NDM9dDQzJjY1NTM1O3Q0NSs9dDQ0Pj4+MTY7djQ0PXQ0NCY2NTUzNTt0NDYrPXQ0NT4+PjE2O3Y0NT10NDUmNjU1MzU7dDQ3Kz10NDY+Pj4xNjt2NDY9dDQ2JjY1NTM1O3Q0OCs9dDQ3Pj4+MTY7djQ3PXQ0NyY2NTUzNTt0NDkrPXQ0OD4+PjE2O3Y0OD10NDgmNjU1MzU7dDUwKz10NDk+Pj4xNjt2NDk9dDQ5JjY1NTM1O3Q1MSs9dDUwPj4+MTY7djUwPXQ1MCY2NTUzNTt0NTIrPXQ1MT4+PjE2O3Y1MT10NTEmNjU1MzU7dDUzKz10NTI+Pj4xNjt2NTI9dDUyJjY1NTM1O3Q1NCs9dDUzPj4+MTY7djUzPXQ1MyY2NTUzNTt0NTUrPXQ1ND4+PjE2O3Y1ND10NTQmNjU1MzU7dDU2Kz10NTU+Pj4xNjt2NTU9dDU1JjY1NTM1O3Q1Nys9dDU2Pj4+MTY7djU2PXQ1NiY2NTUzNTt0NTgrPXQ1Nz4+PjE2O3Y1Nz10NTcmNjU1MzU7dDU5Kz10NTg+Pj4xNjt2NTg9dDU4JjY1NTM1O3Q2MCs9dDU5Pj4+MTY7djU5PXQ1OSY2NTUzNTt0NjErPXQ2MD4+PjE2O3Y2MD10NjAmNjU1MzU7dDYyKz10NjE+Pj4xNjt2NjE9dDYxJjY1NTM1O3Y2Mz0odDYzKyh0NjI+Pj4xNikpJjY1NTM1O3Y2Mj10NjImNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjEyKSY2Myl8MTI4O1xuXHRcdFx0XHR0MD12MCozOTc7dDE9djEqMzk3O3QyPXYyKjM5Nzt0Mz12MyozOTc7dDQ9djQqMzk3O3Q1PXY1KjM5Nzt0Nj12NiozOTc7dDc9djcqMzk3O3Q4PXY4KjM5Nzt0OT12OSozOTc7dDEwPXYxMCozOTc7dDExPXYxMSozOTc7dDEyPXYxMiozOTc7dDEzPXYxMyozOTc7dDE0PXYxNCozOTc7dDE1PXYxNSozOTc7dDE2PXYxNiozOTc7dDE3PXYxNyozOTc7dDE4PXYxOCozOTc7dDE5PXYxOSozOTc7dDIwPXYyMCozOTc7dDIxPXYyMSozOTc7dDIyPXYyMiozOTc7dDIzPXYyMyozOTc7dDI0PXYyNCozOTc7dDI1PXYyNSozOTc7dDI2PXYyNiozOTc7dDI3PXYyNyozOTc7dDI4PXYyOCozOTc7dDI5PXYyOSozOTc7dDMwPXYzMCozOTc7dDMxPXYzMSozOTc7dDMyPXYzMiozOTc7dDMzPXYzMyozOTc7dDM0PXYzNCozOTc7dDM1PXYzNSozOTc7dDM2PXYzNiozOTc7dDM3PXYzNyozOTc7dDM4PXYzOCozOTc7dDM5PXYzOSozOTc7dDQwPXY0MCozOTc7dDQxPXY0MSozOTc7dDQyPXY0MiozOTc7dDQzPXY0MyozOTc7dDQ0PXY0NCozOTc7dDQ1PXY0NSozOTc7dDQ2PXY0NiozOTc7dDQ3PXY0NyozOTc7dDQ4PXY0OCozOTc7dDQ5PXY0OSozOTc7dDUwPXY1MCozOTc7dDUxPXY1MSozOTc7dDUyPXY1MiozOTc7dDUzPXY1MyozOTc7dDU0PXY1NCozOTc7dDU1PXY1NSozOTc7dDU2PXY1NiozOTc7dDU3PXY1NyozOTc7dDU4PXY1OCozOTc7dDU5PXY1OSozOTc7dDYwPXY2MCozOTc7dDYxPXY2MSozOTc7dDYyPXY2MiozOTc7dDYzPXY2MyozOTc7XG5cdFx0XHRcdHQ0Mis9djA8PDg7dDQzKz12MTw8ODt0NDQrPXYyPDw4O3Q0NSs9djM8PDg7dDQ2Kz12NDw8ODt0NDcrPXY1PDw4O3Q0OCs9djY8PDg7dDQ5Kz12Nzw8ODt0NTArPXY4PDw4O3Q1MSs9djk8PDg7dDUyKz12MTA8PDg7dDUzKz12MTE8PDg7dDU0Kz12MTI8PDg7dDU1Kz12MTM8PDg7dDU2Kz12MTQ8PDg7dDU3Kz12MTU8PDg7dDU4Kz12MTY8PDg7dDU5Kz12MTc8PDg7dDYwKz12MTg8PDg7dDYxKz12MTk8PDg7dDYyKz12MjA8PDg7dDYzKz12MjE8PDg7XG5cdFx0XHRcdHQxKz10MD4+PjE2O3YwPXQwJjY1NTM1O3QyKz10MT4+PjE2O3YxPXQxJjY1NTM1O3QzKz10Mj4+PjE2O3YyPXQyJjY1NTM1O3Q0Kz10Mz4+PjE2O3YzPXQzJjY1NTM1O3Q1Kz10ND4+PjE2O3Y0PXQ0JjY1NTM1O3Q2Kz10NT4+PjE2O3Y1PXQ1JjY1NTM1O3Q3Kz10Nj4+PjE2O3Y2PXQ2JjY1NTM1O3Q4Kz10Nz4+PjE2O3Y3PXQ3JjY1NTM1O3Q5Kz10OD4+PjE2O3Y4PXQ4JjY1NTM1O3QxMCs9dDk+Pj4xNjt2OT10OSY2NTUzNTt0MTErPXQxMD4+PjE2O3YxMD10MTAmNjU1MzU7dDEyKz10MTE+Pj4xNjt2MTE9dDExJjY1NTM1O3QxMys9dDEyPj4+MTY7djEyPXQxMiY2NTUzNTt0MTQrPXQxMz4+PjE2O3YxMz10MTMmNjU1MzU7dDE1Kz10MTQ+Pj4xNjt2MTQ9dDE0JjY1NTM1O3QxNis9dDE1Pj4+MTY7djE1PXQxNSY2NTUzNTt0MTcrPXQxNj4+PjE2O3YxNj10MTYmNjU1MzU7dDE4Kz10MTc+Pj4xNjt2MTc9dDE3JjY1NTM1O3QxOSs9dDE4Pj4+MTY7djE4PXQxOCY2NTUzNTt0MjArPXQxOT4+PjE2O3YxOT10MTkmNjU1MzU7dDIxKz10MjA+Pj4xNjt2MjA9dDIwJjY1NTM1O3QyMis9dDIxPj4+MTY7djIxPXQyMSY2NTUzNTt0MjMrPXQyMj4+PjE2O3YyMj10MjImNjU1MzU7dDI0Kz10MjM+Pj4xNjt2MjM9dDIzJjY1NTM1O3QyNSs9dDI0Pj4+MTY7djI0PXQyNCY2NTUzNTt0MjYrPXQyNT4+PjE2O3YyNT10MjUmNjU1MzU7dDI3Kz10MjY+Pj4xNjt2MjY9dDI2JjY1NTM1O3QyOCs9dDI3Pj4+MTY7djI3PXQyNyY2NTUzNTt0MjkrPXQyOD4+PjE2O3YyOD10MjgmNjU1MzU7dDMwKz10Mjk+Pj4xNjt2Mjk9dDI5JjY1NTM1O3QzMSs9dDMwPj4+MTY7djMwPXQzMCY2NTUzNTt0MzIrPXQzMT4+PjE2O3YzMT10MzEmNjU1MzU7dDMzKz10MzI+Pj4xNjt2MzI9dDMyJjY1NTM1O3QzNCs9dDMzPj4+MTY7djMzPXQzMyY2NTUzNTt0MzUrPXQzND4+PjE2O3YzND10MzQmNjU1MzU7dDM2Kz10MzU+Pj4xNjt2MzU9dDM1JjY1NTM1O3QzNys9dDM2Pj4+MTY7djM2PXQzNiY2NTUzNTt0MzgrPXQzNz4+PjE2O3YzNz10MzcmNjU1MzU7dDM5Kz10Mzg+Pj4xNjt2Mzg9dDM4JjY1NTM1O3Q0MCs9dDM5Pj4+MTY7djM5PXQzOSY2NTUzNTt0NDErPXQ0MD4+PjE2O3Y0MD10NDAmNjU1MzU7dDQyKz10NDE+Pj4xNjt2NDE9dDQxJjY1NTM1O3Q0Mys9dDQyPj4+MTY7djQyPXQ0MiY2NTUzNTt0NDQrPXQ0Mz4+PjE2O3Y0Mz10NDMmNjU1MzU7dDQ1Kz10NDQ+Pj4xNjt2NDQ9dDQ0JjY1NTM1O3Q0Nis9dDQ1Pj4+MTY7djQ1PXQ0NSY2NTUzNTt0NDcrPXQ0Nj4+PjE2O3Y0Nj10NDYmNjU1MzU7dDQ4Kz10NDc+Pj4xNjt2NDc9dDQ3JjY1NTM1O3Q0OSs9dDQ4Pj4+MTY7djQ4PXQ0OCY2NTUzNTt0NTArPXQ0OT4+PjE2O3Y0OT10NDkmNjU1MzU7dDUxKz10NTA+Pj4xNjt2NTA9dDUwJjY1NTM1O3Q1Mis9dDUxPj4+MTY7djUxPXQ1MSY2NTUzNTt0NTMrPXQ1Mj4+PjE2O3Y1Mj10NTImNjU1MzU7dDU0Kz10NTM+Pj4xNjt2NTM9dDUzJjY1NTM1O3Q1NSs9dDU0Pj4+MTY7djU0PXQ1NCY2NTUzNTt0NTYrPXQ1NT4+PjE2O3Y1NT10NTUmNjU1MzU7dDU3Kz10NTY+Pj4xNjt2NTY9dDU2JjY1NTM1O3Q1OCs9dDU3Pj4+MTY7djU3PXQ1NyY2NTUzNTt0NTkrPXQ1OD4+PjE2O3Y1OD10NTgmNjU1MzU7dDYwKz10NTk+Pj4xNjt2NTk9dDU5JjY1NTM1O3Q2MSs9dDYwPj4+MTY7djYwPXQ2MCY2NTUzNTt0NjIrPXQ2MT4+PjE2O3Y2MT10NjEmNjU1MzU7djYzPSh0NjMrKHQ2Mj4+PjE2KSkmNjU1MzU7djYyPXQ2MiY2NTUzNTtcblx0XHRcdFx0djBePSgoYz4+NikmNjMpfDEyODtcblx0XHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt0MzErPXQzMD4+PjE2O3YzMD10MzAmNjU1MzU7dDMyKz10MzE+Pj4xNjt2MzE9dDMxJjY1NTM1O3QzMys9dDMyPj4+MTY7djMyPXQzMiY2NTUzNTt0MzQrPXQzMz4+PjE2O3YzMz10MzMmNjU1MzU7dDM1Kz10MzQ+Pj4xNjt2MzQ9dDM0JjY1NTM1O3QzNis9dDM1Pj4+MTY7djM1PXQzNSY2NTUzNTt0MzcrPXQzNj4+PjE2O3YzNj10MzYmNjU1MzU7dDM4Kz10Mzc+Pj4xNjt2Mzc9dDM3JjY1NTM1O3QzOSs9dDM4Pj4+MTY7djM4PXQzOCY2NTUzNTt0NDArPXQzOT4+PjE2O3YzOT10MzkmNjU1MzU7dDQxKz10NDA+Pj4xNjt2NDA9dDQwJjY1NTM1O3Q0Mis9dDQxPj4+MTY7djQxPXQ0MSY2NTUzNTt0NDMrPXQ0Mj4+PjE2O3Y0Mj10NDImNjU1MzU7dDQ0Kz10NDM+Pj4xNjt2NDM9dDQzJjY1NTM1O3Q0NSs9dDQ0Pj4+MTY7djQ0PXQ0NCY2NTUzNTt0NDYrPXQ0NT4+PjE2O3Y0NT10NDUmNjU1MzU7dDQ3Kz10NDY+Pj4xNjt2NDY9dDQ2JjY1NTM1O3Q0OCs9dDQ3Pj4+MTY7djQ3PXQ0NyY2NTUzNTt0NDkrPXQ0OD4+PjE2O3Y0OD10NDgmNjU1MzU7dDUwKz10NDk+Pj4xNjt2NDk9dDQ5JjY1NTM1O3Q1MSs9dDUwPj4+MTY7djUwPXQ1MCY2NTUzNTt0NTIrPXQ1MT4+PjE2O3Y1MT10NTEmNjU1MzU7dDUzKz10NTI+Pj4xNjt2NTI9dDUyJjY1NTM1O3Q1NCs9dDUzPj4+MTY7djUzPXQ1MyY2NTUzNTt0NTUrPXQ1ND4+PjE2O3Y1ND10NTQmNjU1MzU7dDU2Kz10NTU+Pj4xNjt2NTU9dDU1JjY1NTM1O3Q1Nys9dDU2Pj4+MTY7djU2PXQ1NiY2NTUzNTt0NTgrPXQ1Nz4+PjE2O3Y1Nz10NTcmNjU1MzU7dDU5Kz10NTg+Pj4xNjt2NTg9dDU4JjY1NTM1O3Q2MCs9dDU5Pj4+MTY7djU5PXQ1OSY2NTUzNTt0NjErPXQ2MD4+PjE2O3Y2MD10NjAmNjU1MzU7dDYyKz10NjE+Pj4xNjt2NjE9dDYxJjY1NTM1O3Y2Mz0odDYzKyh0NjI+Pj4xNikpJjY1NTM1O3Y2Mj10NjImNjU1MzU7XG5cdFx0XHRcdHYwXj0oYyY2Myl8MTI4O1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHYwXj0oYz4+MTIpfDIyNDtcblx0XHRcdFx0dDA9djAqMzk3O3QxPXYxKjM5Nzt0Mj12MiozOTc7dDM9djMqMzk3O3Q0PXY0KjM5Nzt0NT12NSozOTc7dDY9djYqMzk3O3Q3PXY3KjM5Nzt0OD12OCozOTc7dDk9djkqMzk3O3QxMD12MTAqMzk3O3QxMT12MTEqMzk3O3QxMj12MTIqMzk3O3QxMz12MTMqMzk3O3QxND12MTQqMzk3O3QxNT12MTUqMzk3O3QxNj12MTYqMzk3O3QxNz12MTcqMzk3O3QxOD12MTgqMzk3O3QxOT12MTkqMzk3O3QyMD12MjAqMzk3O3QyMT12MjEqMzk3O3QyMj12MjIqMzk3O3QyMz12MjMqMzk3O3QyND12MjQqMzk3O3QyNT12MjUqMzk3O3QyNj12MjYqMzk3O3QyNz12MjcqMzk3O3QyOD12MjgqMzk3O3QyOT12MjkqMzk3O3QzMD12MzAqMzk3O3QzMT12MzEqMzk3O3QzMj12MzIqMzk3O3QzMz12MzMqMzk3O3QzND12MzQqMzk3O3QzNT12MzUqMzk3O3QzNj12MzYqMzk3O3QzNz12MzcqMzk3O3QzOD12MzgqMzk3O3QzOT12MzkqMzk3O3Q0MD12NDAqMzk3O3Q0MT12NDEqMzk3O3Q0Mj12NDIqMzk3O3Q0Mz12NDMqMzk3O3Q0ND12NDQqMzk3O3Q0NT12NDUqMzk3O3Q0Nj12NDYqMzk3O3Q0Nz12NDcqMzk3O3Q0OD12NDgqMzk3O3Q0OT12NDkqMzk3O3Q1MD12NTAqMzk3O3Q1MT12NTEqMzk3O3Q1Mj12NTIqMzk3O3Q1Mz12NTMqMzk3O3Q1ND12NTQqMzk3O3Q1NT12NTUqMzk3O3Q1Nj12NTYqMzk3O3Q1Nz12NTcqMzk3O3Q1OD12NTgqMzk3O3Q1OT12NTkqMzk3O3Q2MD12NjAqMzk3O3Q2MT12NjEqMzk3O3Q2Mj12NjIqMzk3O3Q2Mz12NjMqMzk3O1xuXHRcdFx0XHR0NDIrPXYwPDw4O3Q0Mys9djE8PDg7dDQ0Kz12Mjw8ODt0NDUrPXYzPDw4O3Q0Nis9djQ8PDg7dDQ3Kz12NTw8ODt0NDgrPXY2PDw4O3Q0OSs9djc8PDg7dDUwKz12ODw8ODt0NTErPXY5PDw4O3Q1Mis9djEwPDw4O3Q1Mys9djExPDw4O3Q1NCs9djEyPDw4O3Q1NSs9djEzPDw4O3Q1Nis9djE0PDw4O3Q1Nys9djE1PDw4O3Q1OCs9djE2PDw4O3Q1OSs9djE3PDw4O3Q2MCs9djE4PDw4O3Q2MSs9djE5PDw4O3Q2Mis9djIwPDw4O3Q2Mys9djIxPDw4O1xuXHRcdFx0XHR0MSs9dDA+Pj4xNjt2MD10MCY2NTUzNTt0Mis9dDE+Pj4xNjt2MT10MSY2NTUzNTt0Mys9dDI+Pj4xNjt2Mj10MiY2NTUzNTt0NCs9dDM+Pj4xNjt2Mz10MyY2NTUzNTt0NSs9dDQ+Pj4xNjt2ND10NCY2NTUzNTt0Nis9dDU+Pj4xNjt2NT10NSY2NTUzNTt0Nys9dDY+Pj4xNjt2Nj10NiY2NTUzNTt0OCs9dDc+Pj4xNjt2Nz10NyY2NTUzNTt0OSs9dDg+Pj4xNjt2OD10OCY2NTUzNTt0MTArPXQ5Pj4+MTY7djk9dDkmNjU1MzU7dDExKz10MTA+Pj4xNjt2MTA9dDEwJjY1NTM1O3QxMis9dDExPj4+MTY7djExPXQxMSY2NTUzNTt0MTMrPXQxMj4+PjE2O3YxMj10MTImNjU1MzU7dDE0Kz10MTM+Pj4xNjt2MTM9dDEzJjY1NTM1O3QxNSs9dDE0Pj4+MTY7djE0PXQxNCY2NTUzNTt0MTYrPXQxNT4+PjE2O3YxNT10MTUmNjU1MzU7dDE3Kz10MTY+Pj4xNjt2MTY9dDE2JjY1NTM1O3QxOCs9dDE3Pj4+MTY7djE3PXQxNyY2NTUzNTt0MTkrPXQxOD4+PjE2O3YxOD10MTgmNjU1MzU7dDIwKz10MTk+Pj4xNjt2MTk9dDE5JjY1NTM1O3QyMSs9dDIwPj4+MTY7djIwPXQyMCY2NTUzNTt0MjIrPXQyMT4+PjE2O3YyMT10MjEmNjU1MzU7dDIzKz10MjI+Pj4xNjt2MjI9dDIyJjY1NTM1O3QyNCs9dDIzPj4+MTY7djIzPXQyMyY2NTUzNTt0MjUrPXQyND4+PjE2O3YyND10MjQmNjU1MzU7dDI2Kz10MjU+Pj4xNjt2MjU9dDI1JjY1NTM1O3QyNys9dDI2Pj4+MTY7djI2PXQyNiY2NTUzNTt0MjgrPXQyNz4+PjE2O3YyNz10MjcmNjU1MzU7dDI5Kz10Mjg+Pj4xNjt2Mjg9dDI4JjY1NTM1O3QzMCs9dDI5Pj4+MTY7djI5PXQyOSY2NTUzNTt0MzErPXQzMD4+PjE2O3YzMD10MzAmNjU1MzU7dDMyKz10MzE+Pj4xNjt2MzE9dDMxJjY1NTM1O3QzMys9dDMyPj4+MTY7djMyPXQzMiY2NTUzNTt0MzQrPXQzMz4+PjE2O3YzMz10MzMmNjU1MzU7dDM1Kz10MzQ+Pj4xNjt2MzQ9dDM0JjY1NTM1O3QzNis9dDM1Pj4+MTY7djM1PXQzNSY2NTUzNTt0MzcrPXQzNj4+PjE2O3YzNj10MzYmNjU1MzU7dDM4Kz10Mzc+Pj4xNjt2Mzc9dDM3JjY1NTM1O3QzOSs9dDM4Pj4+MTY7djM4PXQzOCY2NTUzNTt0NDArPXQzOT4+PjE2O3YzOT10MzkmNjU1MzU7dDQxKz10NDA+Pj4xNjt2NDA9dDQwJjY1NTM1O3Q0Mis9dDQxPj4+MTY7djQxPXQ0MSY2NTUzNTt0NDMrPXQ0Mj4+PjE2O3Y0Mj10NDImNjU1MzU7dDQ0Kz10NDM+Pj4xNjt2NDM9dDQzJjY1NTM1O3Q0NSs9dDQ0Pj4+MTY7djQ0PXQ0NCY2NTUzNTt0NDYrPXQ0NT4+PjE2O3Y0NT10NDUmNjU1MzU7dDQ3Kz10NDY+Pj4xNjt2NDY9dDQ2JjY1NTM1O3Q0OCs9dDQ3Pj4+MTY7djQ3PXQ0NyY2NTUzNTt0NDkrPXQ0OD4+PjE2O3Y0OD10NDgmNjU1MzU7dDUwKz10NDk+Pj4xNjt2NDk9dDQ5JjY1NTM1O3Q1MSs9dDUwPj4+MTY7djUwPXQ1MCY2NTUzNTt0NTIrPXQ1MT4+PjE2O3Y1MT10NTEmNjU1MzU7dDUzKz10NTI+Pj4xNjt2NTI9dDUyJjY1NTM1O3Q1NCs9dDUzPj4+MTY7djUzPXQ1MyY2NTUzNTt0NTUrPXQ1ND4+PjE2O3Y1ND10NTQmNjU1MzU7dDU2Kz10NTU+Pj4xNjt2NTU9dDU1JjY1NTM1O3Q1Nys9dDU2Pj4+MTY7djU2PXQ1NiY2NTUzNTt0NTgrPXQ1Nz4+PjE2O3Y1Nz10NTcmNjU1MzU7dDU5Kz10NTg+Pj4xNjt2NTg9dDU4JjY1NTM1O3Q2MCs9dDU5Pj4+MTY7djU5PXQ1OSY2NTUzNTt0NjErPXQ2MD4+PjE2O3Y2MD10NjAmNjU1MzU7dDYyKz10NjE+Pj4xNjt2NjE9dDYxJjY1NTM1O3Y2Mz0odDYzKyh0NjI+Pj4xNikpJjY1NTM1O3Y2Mj10NjImNjU1MzU7XG5cdFx0XHRcdHYwXj0oKGM+PjYpJjYzKXwxMjg7XG5cdFx0XHRcdHQwPXYwKjM5Nzt0MT12MSozOTc7dDI9djIqMzk3O3QzPXYzKjM5Nzt0ND12NCozOTc7dDU9djUqMzk3O3Q2PXY2KjM5Nzt0Nz12NyozOTc7dDg9djgqMzk3O3Q5PXY5KjM5Nzt0MTA9djEwKjM5Nzt0MTE9djExKjM5Nzt0MTI9djEyKjM5Nzt0MTM9djEzKjM5Nzt0MTQ9djE0KjM5Nzt0MTU9djE1KjM5Nzt0MTY9djE2KjM5Nzt0MTc9djE3KjM5Nzt0MTg9djE4KjM5Nzt0MTk9djE5KjM5Nzt0MjA9djIwKjM5Nzt0MjE9djIxKjM5Nzt0MjI9djIyKjM5Nzt0MjM9djIzKjM5Nzt0MjQ9djI0KjM5Nzt0MjU9djI1KjM5Nzt0MjY9djI2KjM5Nzt0Mjc9djI3KjM5Nzt0Mjg9djI4KjM5Nzt0Mjk9djI5KjM5Nzt0MzA9djMwKjM5Nzt0MzE9djMxKjM5Nzt0MzI9djMyKjM5Nzt0MzM9djMzKjM5Nzt0MzQ9djM0KjM5Nzt0MzU9djM1KjM5Nzt0MzY9djM2KjM5Nzt0Mzc9djM3KjM5Nzt0Mzg9djM4KjM5Nzt0Mzk9djM5KjM5Nzt0NDA9djQwKjM5Nzt0NDE9djQxKjM5Nzt0NDI9djQyKjM5Nzt0NDM9djQzKjM5Nzt0NDQ9djQ0KjM5Nzt0NDU9djQ1KjM5Nzt0NDY9djQ2KjM5Nzt0NDc9djQ3KjM5Nzt0NDg9djQ4KjM5Nzt0NDk9djQ5KjM5Nzt0NTA9djUwKjM5Nzt0NTE9djUxKjM5Nzt0NTI9djUyKjM5Nzt0NTM9djUzKjM5Nzt0NTQ9djU0KjM5Nzt0NTU9djU1KjM5Nzt0NTY9djU2KjM5Nzt0NTc9djU3KjM5Nzt0NTg9djU4KjM5Nzt0NTk9djU5KjM5Nzt0NjA9djYwKjM5Nzt0NjE9djYxKjM5Nzt0NjI9djYyKjM5Nzt0NjM9djYzKjM5Nztcblx0XHRcdFx0dDQyKz12MDw8ODt0NDMrPXYxPDw4O3Q0NCs9djI8PDg7dDQ1Kz12Mzw8ODt0NDYrPXY0PDw4O3Q0Nys9djU8PDg7dDQ4Kz12Njw8ODt0NDkrPXY3PDw4O3Q1MCs9djg8PDg7dDUxKz12OTw8ODt0NTIrPXYxMDw8ODt0NTMrPXYxMTw8ODt0NTQrPXYxMjw8ODt0NTUrPXYxMzw8ODt0NTYrPXYxNDw8ODt0NTcrPXYxNTw8ODt0NTgrPXYxNjw8ODt0NTkrPXYxNzw8ODt0NjArPXYxODw8ODt0NjErPXYxOTw8ODt0NjIrPXYyMDw8ODt0NjMrPXYyMTw8ODtcblx0XHRcdFx0dDErPXQwPj4+MTY7djA9dDAmNjU1MzU7dDIrPXQxPj4+MTY7djE9dDEmNjU1MzU7dDMrPXQyPj4+MTY7djI9dDImNjU1MzU7dDQrPXQzPj4+MTY7djM9dDMmNjU1MzU7dDUrPXQ0Pj4+MTY7djQ9dDQmNjU1MzU7dDYrPXQ1Pj4+MTY7djU9dDUmNjU1MzU7dDcrPXQ2Pj4+MTY7djY9dDYmNjU1MzU7dDgrPXQ3Pj4+MTY7djc9dDcmNjU1MzU7dDkrPXQ4Pj4+MTY7djg9dDgmNjU1MzU7dDEwKz10OT4+PjE2O3Y5PXQ5JjY1NTM1O3QxMSs9dDEwPj4+MTY7djEwPXQxMCY2NTUzNTt0MTIrPXQxMT4+PjE2O3YxMT10MTEmNjU1MzU7dDEzKz10MTI+Pj4xNjt2MTI9dDEyJjY1NTM1O3QxNCs9dDEzPj4+MTY7djEzPXQxMyY2NTUzNTt0MTUrPXQxND4+PjE2O3YxND10MTQmNjU1MzU7dDE2Kz10MTU+Pj4xNjt2MTU9dDE1JjY1NTM1O3QxNys9dDE2Pj4+MTY7djE2PXQxNiY2NTUzNTt0MTgrPXQxNz4+PjE2O3YxNz10MTcmNjU1MzU7dDE5Kz10MTg+Pj4xNjt2MTg9dDE4JjY1NTM1O3QyMCs9dDE5Pj4+MTY7djE5PXQxOSY2NTUzNTt0MjErPXQyMD4+PjE2O3YyMD10MjAmNjU1MzU7dDIyKz10MjE+Pj4xNjt2MjE9dDIxJjY1NTM1O3QyMys9dDIyPj4+MTY7djIyPXQyMiY2NTUzNTt0MjQrPXQyMz4+PjE2O3YyMz10MjMmNjU1MzU7dDI1Kz10MjQ+Pj4xNjt2MjQ9dDI0JjY1NTM1O3QyNis9dDI1Pj4+MTY7djI1PXQyNSY2NTUzNTt0MjcrPXQyNj4+PjE2O3YyNj10MjYmNjU1MzU7dDI4Kz10Mjc+Pj4xNjt2Mjc9dDI3JjY1NTM1O3QyOSs9dDI4Pj4+MTY7djI4PXQyOCY2NTUzNTt0MzArPXQyOT4+PjE2O3YyOT10MjkmNjU1MzU7dDMxKz10MzA+Pj4xNjt2MzA9dDMwJjY1NTM1O3QzMis9dDMxPj4+MTY7djMxPXQzMSY2NTUzNTt0MzMrPXQzMj4+PjE2O3YzMj10MzImNjU1MzU7dDM0Kz10MzM+Pj4xNjt2MzM9dDMzJjY1NTM1O3QzNSs9dDM0Pj4+MTY7djM0PXQzNCY2NTUzNTt0MzYrPXQzNT4+PjE2O3YzNT10MzUmNjU1MzU7dDM3Kz10MzY+Pj4xNjt2MzY9dDM2JjY1NTM1O3QzOCs9dDM3Pj4+MTY7djM3PXQzNyY2NTUzNTt0MzkrPXQzOD4+PjE2O3YzOD10MzgmNjU1MzU7dDQwKz10Mzk+Pj4xNjt2Mzk9dDM5JjY1NTM1O3Q0MSs9dDQwPj4+MTY7djQwPXQ0MCY2NTUzNTt0NDIrPXQ0MT4+PjE2O3Y0MT10NDEmNjU1MzU7dDQzKz10NDI+Pj4xNjt2NDI9dDQyJjY1NTM1O3Q0NCs9dDQzPj4+MTY7djQzPXQ0MyY2NTUzNTt0NDUrPXQ0ND4+PjE2O3Y0ND10NDQmNjU1MzU7dDQ2Kz10NDU+Pj4xNjt2NDU9dDQ1JjY1NTM1O3Q0Nys9dDQ2Pj4+MTY7djQ2PXQ0NiY2NTUzNTt0NDgrPXQ0Nz4+PjE2O3Y0Nz10NDcmNjU1MzU7dDQ5Kz10NDg+Pj4xNjt2NDg9dDQ4JjY1NTM1O3Q1MCs9dDQ5Pj4+MTY7djQ5PXQ0OSY2NTUzNTt0NTErPXQ1MD4+PjE2O3Y1MD10NTAmNjU1MzU7dDUyKz10NTE+Pj4xNjt2NTE9dDUxJjY1NTM1O3Q1Mys9dDUyPj4+MTY7djUyPXQ1MiY2NTUzNTt0NTQrPXQ1Mz4+PjE2O3Y1Mz10NTMmNjU1MzU7dDU1Kz10NTQ+Pj4xNjt2NTQ9dDU0JjY1NTM1O3Q1Nis9dDU1Pj4+MTY7djU1PXQ1NSY2NTUzNTt0NTcrPXQ1Nj4+PjE2O3Y1Nj10NTYmNjU1MzU7dDU4Kz10NTc+Pj4xNjt2NTc9dDU3JjY1NTM1O3Q1OSs9dDU4Pj4+MTY7djU4PXQ1OCY2NTUzNTt0NjArPXQ1OT4+PjE2O3Y1OT10NTkmNjU1MzU7dDYxKz10NjA+Pj4xNjt2NjA9dDYwJjY1NTM1O3Q2Mis9dDYxPj4+MTY7djYxPXQ2MSY2NTUzNTt2NjM9KHQ2MysodDYyPj4+MTYpKSY2NTUzNTt2NjI9dDYyJjY1NTM1O1xuXHRcdFx0XHR2MF49KGMmNjMpfDEyODtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaGFzaFZhbEhleChobFt2NjM+PjhdK2hsW3Y2MyYyNTVdK2hsW3Y2Mj4+OF0raGxbdjYyJjI1NV0raGxbdjYxPj44XStobFt2NjEmMjU1XStobFt2NjA+PjhdK2hsW3Y2MCYyNTVdK2hsW3Y1OT4+OF0raGxbdjU5JjI1NV0raGxbdjU4Pj44XStobFt2NTgmMjU1XStobFt2NTc+PjhdK2hsW3Y1NyYyNTVdK2hsW3Y1Nj4+OF0raGxbdjU2JjI1NV0raGxbdjU1Pj44XStobFt2NTUmMjU1XStobFt2NTQ+PjhdK2hsW3Y1NCYyNTVdK2hsW3Y1Mz4+OF0raGxbdjUzJjI1NV0raGxbdjUyPj44XStobFt2NTImMjU1XStobFt2NTE+PjhdK2hsW3Y1MSYyNTVdK2hsW3Y1MD4+OF0raGxbdjUwJjI1NV0raGxbdjQ5Pj44XStobFt2NDkmMjU1XStobFt2NDg+PjhdK2hsW3Y0OCYyNTVdK2hsW3Y0Nz4+OF0raGxbdjQ3JjI1NV0raGxbdjQ2Pj44XStobFt2NDYmMjU1XStobFt2NDU+PjhdK2hsW3Y0NSYyNTVdK2hsW3Y0ND4+OF0raGxbdjQ0JjI1NV0raGxbdjQzPj44XStobFt2NDMmMjU1XStobFt2NDI+PjhdK2hsW3Y0MiYyNTVdK2hsW3Y0MT4+OF0raGxbdjQxJjI1NV0raGxbdjQwPj44XStobFt2NDAmMjU1XStobFt2Mzk+PjhdK2hsW3YzOSYyNTVdK2hsW3YzOD4+OF0raGxbdjM4JjI1NV0raGxbdjM3Pj44XStobFt2MzcmMjU1XStobFt2MzY+PjhdK2hsW3YzNiYyNTVdK2hsW3YzNT4+OF0raGxbdjM1JjI1NV0raGxbdjM0Pj44XStobFt2MzQmMjU1XStobFt2MzM+PjhdK2hsW3YzMyYyNTVdK2hsW3YzMj4+OF0raGxbdjMyJjI1NV0raGxbdjMxPj44XStobFt2MzEmMjU1XStobFt2MzA+PjhdK2hsW3YzMCYyNTVdK2hsW3YyOT4+OF0raGxbdjI5JjI1NV0raGxbdjI4Pj44XStobFt2MjgmMjU1XStobFt2Mjc+PjhdK2hsW3YyNyYyNTVdK2hsW3YyNj4+OF0raGxbdjI2JjI1NV0raGxbdjI1Pj44XStobFt2MjUmMjU1XStobFt2MjQ+PjhdK2hsW3YyNCYyNTVdK2hsW3YyMz4+OF0raGxbdjIzJjI1NV0raGxbdjIyPj44XStobFt2MjImMjU1XStobFt2MjE+PjhdK2hsW3YyMSYyNTVdK2hsW3YyMD4+OF0raGxbdjIwJjI1NV0raGxbdjE5Pj44XStobFt2MTkmMjU1XStobFt2MTg+PjhdK2hsW3YxOCYyNTVdK2hsW3YxNz4+OF0raGxbdjE3JjI1NV0raGxbdjE2Pj44XStobFt2MTYmMjU1XStobFt2MTU+PjhdK2hsW3YxNSYyNTVdK2hsW3YxND4+OF0raGxbdjE0JjI1NV0raGxbdjEzPj44XStobFt2MTMmMjU1XStobFt2MTI+PjhdK2hsW3YxMiYyNTVdK2hsW3YxMT4+OF0raGxbdjExJjI1NV0raGxbdjEwPj44XStobFt2MTAmMjU1XStobFt2OT4+OF0raGxbdjkmMjU1XStobFt2OD4+OF0raGxbdjgmMjU1XStobFt2Nz4+OF0raGxbdjcmMjU1XStobFt2Nj4+OF0raGxbdjYmMjU1XStobFt2NT4+OF0raGxbdjUmMjU1XStobFt2ND4+OF0raGxbdjQmMjU1XStobFt2Mz4+OF0raGxbdjMmMjU1XStobFt2Mj4+OF0raGxbdjImMjU1XStobFt2MT4+OF0raGxbdjEmMjU1XStobFt2MD4+OF0raGxbdjAmMjU1XSwxMDI0KTtcblx0fVxuXG5cdF9oYXNoMTAyNCA9IF9oYXNoMTAyNF8xYTtcblxuXHQvLyBJbml0IGxpYnJhcnkuXG5cdHNldFZlcnNpb24oJzFhJyk7XG5cdHNldFVURjgoZmFsc2UpO1xuXHRzZWVkKCk7XG5cblx0cmV0dXJuIHtcblx0XHRoYXNoOiBoYXNoLFxuXHRcdHNldEtleXNwYWNlOiBzZXRLZXlzcGFjZSxcblx0XHR2ZXJzaW9uOiBzZXRWZXJzaW9uLFxuXHRcdHVzZVVURjg6IHNldFVURjgsXG5cdFx0c2VlZDogc2VlZCxcblx0XHRmYXN0MWEzMjogX2hhc2gzMl8xYV9mYXN0LFxuXHRcdGZhc3QxYTMyaGV4Ol9oYXNoMzJfMWFfZmFzdF9oZXgsXG5cdFx0ZmFzdDFhNTI6IF9oYXNoNTJfMWFfZmFzdCxcblx0XHRmYXN0MWE1MmhleDogX2hhc2g1Ml8xYV9mYXN0X2hleCxcblx0XHRmYXN0MWE2NDogX2hhc2g2NF8xYV9mYXN0LFxuXHRcdGZhc3QxYTMydXRmOiBfaGFzaDMyXzFhX2Zhc3RfdXRmLFxuXHRcdGZhc3QxYTMyaGV4dXRmOl9oYXNoMzJfMWFfZmFzdF9oZXhfdXRmLFxuXHRcdGZhc3QxYTUydXRmOiBfaGFzaDUyXzFhX2Zhc3RfdXRmLFxuXHRcdGZhc3QxYTUyaGV4dXRmOiBfaGFzaDUyXzFhX2Zhc3RfaGV4X3V0Zixcblx0XHRmYXN0MWE2NHV0ZjogX2hhc2g2NF8xYV9mYXN0X3V0ZlxuXHR9O1xufSkoKTtcblxuaWYgKHR5cGVvZiBtb2R1bGUgIT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgIT0gXCJ1bmRlZmluZWRcIikgbW9kdWxlLmV4cG9ydHMgPSBmbnZwbHVzO1xuIiwiLypcblxuQ29weXJpZ2h0IDIwMjAgMEtJTVMgYXNzb2NpYXRpb24uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4qL1xuXG5jb25zdCBmbnYgPSByZXF1aXJlKFwiZm52LXBsdXNcIik7XG5cbm1vZHVsZS5leHBvcnRzLmZudkhhc2ggPSBmbnZIYXNoO1xubW9kdWxlLmV4cG9ydHMuZmxhdEFycmF5ID0gZmxhdEFycmF5O1xuXG5mdW5jdGlvbiBmbGF0QXJyYXkoYSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmaWxsQXJyYXkocmVzLCBhKTtcbiAgICByZXR1cm4gcmVzO1xuXG4gICAgZnVuY3Rpb24gZmlsbEFycmF5KHJlcywgYSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmaWxsQXJyYXkocmVzLCBhW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGEpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmbnZIYXNoKHN0cikge1xuICAgIHJldHVybiBmbnYuaGFzaChzdHIsIDY0KS5oZXgoKTtcbn1cbiIsIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmNvbnN0IGhleExlbiA9IFsgMCwgMSwgMiwgMiwgMywgMywgMywgMywgNCAsNCAsNCAsNCAsNCAsNCAsNCAsNF07XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBlID0gZnJvbVN0cmluZztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21BcnJheShhLCByYWRpeCkge1xuICAgIGxldCBhY2MgPTBuO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8YS5sZW5ndGg7IGkrKykge1xuICAgICAgICBhY2MgPSBhY2MqcmFkaXggKyBCaWdJbnQoYVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRMZW5ndGgoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05lZ2F0aXZlKGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgMG47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1plcm8oYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWZ0TGVmdChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8PCBCaWdJbnQobik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdFJpZ2h0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4+IEJpZ0ludChuKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmV4cG9ydCBjb25zdCBzaHIgPSBzaGlmdFJpZ2h0O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPZGQoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgMW4pID09IDFuO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBuYWYobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgMW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IDFuO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIDFuKSB7XG4gICAgICAgICAgICByZXMucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcihzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0FycmF5KHMsIHJhZGl4KSB7XG4gICAgY29uc3QgcmVzID0gW107XG4gICAgbGV0IHJlbSA9IEJpZ0ludChzKTtcbiAgICByYWRpeCA9IEJpZ0ludChyYWRpeCk7XG4gICAgd2hpbGUgKHJlbSkge1xuICAgICAgICByZXMudW5zaGlmdCggTnVtYmVyKHJlbSAlIHJhZGl4KSk7XG4gICAgICAgIHJlbSA9IHJlbSAvIHJhZGl4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKyBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWcoYSkge1xuICAgIHJldHVybiAtQmlnSW50KGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbXVsKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlKGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG93KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYnMoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXYoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLyBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2QoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgIT0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbHQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPCBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8PSBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvcihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSB8IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ4b3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgXiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvcihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSB8fCBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsbm90KGEpIHtcbiAgICByZXR1cm4gIUJpZ0ludChhKTtcbn1cblxuIiwiaW1wb3J0IGJpZ0ludCBmcm9tIFwiYmlnLWludGVnZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21TdHJpbmcocywgcmFkaXgpIHtcbiAgICBpZiAodHlwZW9mIHMgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAocy5zbGljZSgwLDIpID09IFwiMHhcIikge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludChzLnNsaWNlKDIpLCAxNik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYmlnSW50KHMscmFkaXgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJpZ0ludChzLCByYWRpeCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgZSA9IGZyb21TdHJpbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICByZXR1cm4gYmlnSW50LmZyb21BcnJheShhLCByYWRpeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaXRMZW5ndGgoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuYml0TGVuZ3RoKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05lZ2F0aXZlKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmlzTmVnYXRpdmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzWmVybyhhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5pc1plcm8oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWZ0TGVmdChhLCBuKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5zaGlmdExlZnQobik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdFJpZ2h0KGEsIG4pIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnNoaWZ0UmlnaHQobik7XG59XG5cbmV4cG9ydCBjb25zdCBzaGwgPSBzaGlmdExlZnQ7XG5leHBvcnQgY29uc3Qgc2hyID0gc2hpZnRSaWdodDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2RkKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmlzT2RkKCk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIG5hZihuKSB7XG4gICAgbGV0IEUgPSBiaWdJbnQobik7XG4gICAgY29uc3QgcmVzID0gW107XG4gICAgd2hpbGUgKEUuZ3QoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIGlmIChFLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gRS5tb2QoNCkudG9KU051bWJlcigpO1xuICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgIEUgPSBFLm1pbnVzKHopO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgfVxuICAgICAgICBFID0gRS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgbGV0IEUgPSBiaWdJbnQobik7XG4gICAgY29uc3QgcmVzID0gW107XG4gICAgd2hpbGUgKEUuZ3QoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIGlmIChFLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgfVxuICAgICAgICBFID0gRS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIocykge1xuICAgIGlmICghcy5sdChiaWdJbnQoXCI5MDA3MTk5MjU0NzQwOTkyXCIsIDEwKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBzLnRvSlNOdW1iZXIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXkocywgcmFkaXgpIHtcbiAgICByZXR1cm4gYmlnSW50KHMpLnRvQXJyYXkocmFkaXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmFkZChiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3ViKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLm1pbnVzKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWcoYSkge1xuICAgIHJldHVybiBiaWdJbnQuemVyby5taW51cyhiaWdJbnQoYSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbXVsKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnRpbWVzKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmUoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuc3F1YXJlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3coYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkucG93KGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHAoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkucG93KGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYnMoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuYWJzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXYoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuZGl2aWRlKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2QoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkubW9kKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5lcShiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVxKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLm5lcShiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbHQoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkubHQoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGd0KGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmd0KGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZXEoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkubGVxKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXEoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuZ2VxKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmFuZChiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9yKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLm9yKGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnhvcihiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFuZChhLCBiKSB7XG4gICAgcmV0dXJuICghYmlnSW50KGEpLmlzWmVybygpKSAmJiAoIWJpZ0ludChiKS5pc1plcm8oKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb3IoYSwgYikge1xuICAgIHJldHVybiAoIWJpZ0ludChhKS5pc1plcm8oKSkgfHwgKCFiaWdJbnQoYikuaXNaZXJvKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5pc1plcm8oKTtcbn1cblxuXG4iLCJcbmltcG9ydCAqIGFzIFNjYWxhcl9uYXRpdmUgZnJvbSBcIi4vc2NhbGFyX25hdGl2ZS5qc1wiO1xuaW1wb3J0ICogYXMgU2NhbGFyX2JpZ2ludCBmcm9tIFwiLi9zY2FsYXJfYmlnaW50LmpzXCI7XG5cbmNvbnN0IHN1cHBvcnRzTmF0aXZlQmlnSW50ID0gdHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiO1xuXG5sZXQgU2NhbGFyID0ge307XG5pZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICBPYmplY3QuYXNzaWduKFNjYWxhciwgU2NhbGFyX25hdGl2ZSk7XG59IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24oU2NhbGFyLCBTY2FsYXJfYmlnaW50KTtcbn1cblxuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuU2NhbGFyLnRvUnByTEUgPSBmdW5jdGlvbiBycHJCRShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoYnVmZi5idWZmZXIsIG8sIG44LzQpO1xuICAgIGNvbnN0IGwgPSAoKChzLmxlbmd0aC03KSo0IC0gMSkgPj4gNSkrMTsgICAgLy8gTnVtYmVyIG9mIDMyYml0IHdvcmRzO1xuICAgIGZvciAobGV0IGk9MDsgaTxsOyBpKyspIHZbaV0gPSBwYXJzZUludChzLnN1YnN0cmluZyhzLmxlbmd0aC04KmktOCwgcy5sZW5ndGgtOCppKSwgMTYpO1xuICAgIGZvciAobGV0IGk9bDsgaTx2Lmxlbmd0aDsgaSsrKSB2W2ldID0gMDtcbiAgICBmb3IgKGxldCBpPXYubGVuZ3RoKjQ7IGk8bjg7IGkrKykgYnVmZltpXSA9IFNjYWxhci50b051bWJlcihTY2FsYXIuYmFuZChTY2FsYXIuc2hpZnRSaWdodChlLCBpKjgpLCAweEZGKSk7XG59O1xuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuU2NhbGFyLnRvUnByQkUgPSBmdW5jdGlvbiBycHJMRU0oYnVmZiwgbywgZSwgbjgpIHtcbiAgICBjb25zdCBzID0gXCIwMDAwMDAwXCIgKyBlLnRvU3RyaW5nKDE2KTtcbiAgICBjb25zdCB2ID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBvLCBuOCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdi5zZXRVaW50MzIobjgtaSo0IC00LCBwYXJzZUludChzLnN1YnN0cmluZyhzLmxlbmd0aC04KmktOCwgcy5sZW5ndGgtOCppKSwgMTYpLCBmYWxzZSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG44LzQtbDsgaSsrKSB2W2ldID0gMDtcbn07XG5cbi8vIFBhc2VzIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuU2NhbGFyLmZyb21ScHJMRSA9IGZ1bmN0aW9uIHJwckxFTShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoYnVmZi5idWZmZXIsIG8sIG44LzQpO1xuICAgIGNvbnN0IGEgPSBuZXcgQXJyYXkobjgvNCk7XG4gICAgdi5mb3JFYWNoKCAoY2gsaSkgPT4gYVthLmxlbmd0aC1pLTFdID0gY2gudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsXCIwXCIpICk7XG4gICAgcmV0dXJuIFNjYWxhci5mcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufTtcblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5TY2FsYXIuZnJvbVJwckJFID0gZnVuY3Rpb24gcnByTEVNKGJ1ZmYsIG8sIG44KSB7XG4gICAgbjggPSBuOCB8fCBidWZmLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgbywgbjgpO1xuICAgIGNvbnN0IGEgPSBuZXcgQXJyYXkobjgvNCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG44LzQ7IGkrKykge1xuICAgICAgICBhW2ldID0gdi5nZXRVaW50MzIoaSo0LCBmYWxzZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIFNjYWxhci5mcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufTtcblxuU2NhbGFyLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICByZXR1cm4gYS50b1N0cmluZyhyYWRpeCk7XG59O1xuXG5TY2FsYXIudG9MRUJ1ZmYgPSBmdW5jdGlvbiB0b0xFQnVmZihhKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKFNjYWxhci5iaXRMZW5ndGgoYSkgLSAxKSAvIDgpICsxKTtcbiAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBhLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiBidWZmO1xufTtcblxuXG5TY2FsYXIuemVybyA9IFNjYWxhci5lKDApO1xuU2NhbGFyLm9uZSA9IFNjYWxhci5lKDEpO1xuXG5leHBvcnQgbGV0IHtcbiAgICB0b1JwckxFLFxuICAgIHRvUnByQkUsXG4gICAgZnJvbVJwckxFLFxuICAgIGZyb21ScHJCRSxcbiAgICB0b1N0cmluZyxcbiAgICB0b0xFQnVmZixcbiAgICB6ZXJvLFxuICAgIG9uZSxcbiAgICBmcm9tU3RyaW5nLFxuICAgIGUsXG4gICAgZnJvbUFycmF5LFxuICAgIGJpdExlbmd0aCxcbiAgICBpc05lZ2F0aXZlLFxuICAgIGlzWmVybyxcbiAgICBzaGlmdExlZnQsXG4gICAgc2hpZnRSaWdodCxcbiAgICBzaGwsXG4gICAgc2hyLFxuICAgIGlzT2RkLFxuICAgIG5hZixcbiAgICBiaXRzLFxuICAgIHRvTnVtYmVyLFxuICAgIHRvQXJyYXksXG4gICAgYWRkLFxuICAgIHN1YixcbiAgICBuZWcsXG4gICAgbXVsLFxuICAgIHNxdWFyZSxcbiAgICBwb3csXG4gICAgZXhwLFxuICAgIGFicyxcbiAgICBkaXYsXG4gICAgbW9kLFxuICAgIGVxLFxuICAgIG5lcSxcbiAgICBsdCxcbiAgICBndCxcbiAgICBsZXEsXG4gICAgZ2VxLFxuICAgIGJhbmQsXG4gICAgYm9yLFxuICAgIGJ4b3IsXG4gICAgbGFuZCxcbiAgICBsb3IsXG4gICAgbG5vdCxcbn0gPSBTY2FsYXI7XG5cblxuXG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9sRmllbGQge1xuICAgIGNvbnN0cnVjdG9yIChGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90O1xuICAgICAgICBsZXQgcyA9IEYuc3FydF9zO1xuXG4gICAgICAgIGNvbnN0IGZpdmUgPSB0aGlzLkYuYWRkKHRoaXMuRi5hZGQodGhpcy5GLnR3bywgdGhpcy5GLnR3byksIHRoaXMuRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3coZml2ZSwgcmVtKTtcbiAgICAgICAgdGhpcy53aVtzXSA9IHRoaXMuRi5pbnYodGhpcy53W3NdKTtcblxuICAgICAgICBsZXQgbj1zLTE7XG4gICAgICAgIHdoaWxlIChuPj0wKSB7XG4gICAgICAgICAgICB0aGlzLndbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud1tuKzFdKTtcbiAgICAgICAgICAgIHRoaXMud2lbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud2lbbisxXSk7XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcbi8qICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoMTUpO1xuICAgIH1cblxuICAgIF9zZXRSb290cyhuKSB7XG4gICAgICAgIGZvciAobGV0IGk9bjsgKGk+PTApICYmICghdGhpcy5yb290c1tpXSk7IGktLSkge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgY29uc3QgbnJvb3RzID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG5yb290cyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bnJvb3RzOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJvb3RzW2ldID0gcm9vdHNpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkKGEsIGIpIHtcbiAgICAgICAgY29uc3QgbSA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZChhW2ldIHx8IHRoaXMuRi56ZXJvLCBiW2ldIHx8IHRoaXMuRi56ZXJvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzKTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuc3ViKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihwLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZXEoYiwgdGhpcy5GLnplcm8pKSByZXR1cm4gW107XG4gICAgICAgIGlmICh0aGlzLkYuZXEoYiwgdGhpcy5GLm9uZSkpIHJldHVybiBwO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkocC5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLm11bChwW2ldLCBiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBpZiAoYS5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoYi5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoYS5sZW5ndGggPT0gMSkgcmV0dXJuIHRoaXMubXVsU2NhbGFyKGIsIGFbMF0pO1xuICAgICAgICBpZiAoYi5sZW5ndGggPT0gMSkgcmV0dXJuIHRoaXMubXVsU2NhbGFyKGEsIGJbMF0pO1xuXG4gICAgICAgIGlmIChiLmxlbmd0aCA+IGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBbYiwgYV0gPSBbYSwgYl07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGIubGVuZ3RoIDw9IDIpIHx8IChiLmxlbmd0aCA8IGxvZzIoYS5sZW5ndGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsTm9ybWFsKGEsYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWxGRlQoYSxiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG11bE5vcm1hbChhLCBiKSB7XG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuYWRkKHJlcywgdGhpcy5zY2FsZVgodGhpcy5tdWxTY2FsYXIoYSwgYltpXSksIGkpICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBtdWxGRlQoYSxiKSB7XG4gICAgICAgIGNvbnN0IGxvbmdlc3ROID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgYml0c1Jlc3VsdCA9IGxvZzIobG9uZ2VzdE4tMSkrMjtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0c1Jlc3VsdCk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0c1Jlc3VsdDtcbiAgICAgICAgY29uc3QgZWEgPSB0aGlzLmV4dGVuZChhLG0pO1xuICAgICAgICBjb25zdCBlYiA9IHRoaXMuZXh0ZW5kKGIsbSk7XG5cbiAgICAgICAgY29uc3QgdGEgPSBfX2ZmdCh0aGlzLCBlYSwgYml0c1Jlc3VsdCwgMCwgMSwgZmFsc2UpO1xuICAgICAgICBjb25zdCB0YiA9IF9fZmZ0KHRoaXMsIGViLCBiaXRzUmVzdWx0LCAwLCAxLCBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgdHJlcyA9IG5ldyBBcnJheShtKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICB0cmVzW2ldID0gdGhpcy5GLm11bCh0YVtpXSwgdGJbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgdHJlcywgYml0c1Jlc3VsdCwgMCwgMSwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXNuKTtcbiAgICB9XG5cblxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsYSk7XG4gICAgfVxuXG4gICAgc2NhbGVYKHAsIG4pIHtcbiAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9IGVsc2UgaWYgKG4+MCkge1xuICAgICAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShuKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgICAgIHJldHVybiB6LmNvbmNhdChwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICgtbiA+PSBwLmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIHAuc2xpY2UoLW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZhbDIocCwgeCkge1xuICAgICAgICBsZXQgdiA9IHRoaXMuRi56ZXJvO1xuICAgICAgICBsZXQgaXggPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdiA9IHRoaXMuRi5hZGQodiwgdGhpcy5GLm11bChwW2ldLCBpeCkpO1xuICAgICAgICAgICAgaXggPSB0aGlzLkYubXVsKGl4LCB4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBldmFsKHAseCkge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBpZiAocC5sZW5ndGggPT0gMCkgcmV0dXJuIEYuemVybztcbiAgICAgICAgY29uc3QgbSA9IHRoaXMuX25leHQyUG93ZXIocC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuXG4gICAgICAgIHJldHVybiBfZXZhbChlcCwgeCwgMCwgMSwgbSk7XG5cbiAgICAgICAgZnVuY3Rpb24gX2V2YWwocCwgeCwgb2Zmc2V0LCBzdGVwLCBuKSB7XG4gICAgICAgICAgICBpZiAobj09MSkgcmV0dXJuIHBbb2Zmc2V0XTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ggPSBGLnNxdWFyZSh4KTtcbiAgICAgICAgICAgIGNvbnN0IHJlcz0gRi5hZGQoXG4gICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0LCBzdGVwIDw8IDEsIG4gPj4gMSksXG4gICAgICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIF9ldmFsKHAsIG5ld1gsIG9mZnNldCtzdGVwICwgc3RlcCA8PCAxLCBuID4+IDEpKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFncmFuZ2UocG9pbnRzKSB7XG4gICAgICAgIGxldCByb290cyA9IFt0aGlzLkYub25lXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcm9vdHMgPSB0aGlzLm11bChyb290cywgW3RoaXMuRi5uZWcocG9pbnRzW2ldWzBdKSwgdGhpcy5GLm9uZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN1bSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbXBvbCA9IHRoaXMucnVmZmluaShyb290cywgcG9pbnRzW2ldWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvciA9XG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmludih0aGlzLmV2YWwobXBvbCwgcG9pbnRzW2ldWzBdKSksXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICBtcG9sID0gdGhpcy5tdWxTY2FsYXIobXBvbCwgZmFjdG9yKTtcbiAgICAgICAgICAgIHN1bSA9IHRoaXMuYWRkKHN1bSwgbXBvbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZmdDIocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSAgX19mZnQodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuXG4gICAgaWZmdDIocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdDIodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuICAgIF9mZnQocGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICAgICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKG49PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgICAgIGNvbnN0IHAxID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgICAgICBjb25zdCBwMiA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgICAgICBsZXQgbT0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IHRoaXMuRi5hZGQocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG91dFtpK25kaXYyXSA9IHRoaXMuRi5zdWIocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG0gPSB0aGlzLkYubXVsKG0sIHRoaXMud1tiaXRzXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGV4dGVuZChwLCBlKSB7XG4gICAgICAgIGlmIChlID09IHAubGVuZ3RoKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShlLXAubGVuZ3RoKS5maWxsKHRoaXMuRi56ZXJvKTtcblxuICAgICAgICByZXR1cm4gcC5jb25jYXQoeik7XG4gICAgfVxuXG4gICAgcmVkdWNlKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBwO1xuICAgICAgICBpZiAoISB0aGlzLkYuZXEocFtwLmxlbmd0aC0xXSwgdGhpcy5GLnplcm8pICkgcmV0dXJuIHA7XG4gICAgICAgIGxldCBpPXAubGVuZ3RoLTE7XG4gICAgICAgIHdoaWxlKCBpPjAgJiYgdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSApIGktLTtcbiAgICAgICAgcmV0dXJuIHAuc2xpY2UoMCwgaSsxKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IHBhID0gdGhpcy5yZWR1Y2UoYSk7XG4gICAgICAgIGNvbnN0IHBiID0gdGhpcy5yZWR1Y2UoYik7XG5cbiAgICAgICAgaWYgKHBhLmxlbmd0aCAhPSBwYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwYVtpXSwgcGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBydWZmaW5pKHAsIHIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoLTEpO1xuICAgICAgICByZXNbcmVzLmxlbmd0aC0xXSA9IHBbcC5sZW5ndGgtMV07XG4gICAgICAgIGZvciAobGV0IGkgPSByZXMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZCh0aGlzLkYubXVsKHJlc1tpKzFdLCByKSwgcFtpKzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIF9uZXh0MlBvd2VyKHYpIHtcbiAgICAgICAgdi0tO1xuICAgICAgICB2IHw9IHYgPj4gMTtcbiAgICAgICAgdiB8PSB2ID4+IDI7XG4gICAgICAgIHYgfD0gdiA+PiA0O1xuICAgICAgICB2IHw9IHYgPj4gODtcbiAgICAgICAgdiB8PSB2ID4+IDE2O1xuICAgICAgICB2Kys7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgYXAgPSB0aGlzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpPWFwLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGlmIChTIT1cIlwiKSBTICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgUyA9IFMgKyBwW2ldLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJ4XCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJeXCIgK2k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFM7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHApIHtcbiAgICAgICAgY29uc3QgcmVzICA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubm9ybWFsaXplKHBbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBfcmVjaXByb2NhbChwLCBiaXRzKSB7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChrPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyB0aGlzLkYuaW52KHBbMF0pIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnAgPSB0aGlzLnNjYWxlWChwLCAtay8yKTtcbiAgICAgICAgY29uc3QgcSA9IHRoaXMuX3JlY2lwcm9jYWwobnAsIGJpdHMtMSk7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnNjYWxlWCh0aGlzLmRvdWJsZShxKSwgMyprLzItMik7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLm11bCggdGhpcy5zcXVhcmUocSksIHApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlWCh0aGlzLnN1YihhLGIpLCAgIC0oay0yKSk7XG4gICAgfVxuXG4gICAgLy8gZGl2aWRlcyB4Xm0gLyB2XG4gICAgX2RpdjIobSwgdikge1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIodi5sZW5ndGgtMSkrMTtcbiAgICAgICAgY29uc3QgayA9IDEgPDwga2JpdHM7XG5cbiAgICAgICAgY29uc3Qgc2NhbGVWID0gayAtIHYubGVuZ3RoO1xuXG4gICAgICAgIC8vIHJlYyA9IHheKGsgLSAyKSAvIHYqIHhec2NhbGVWID0+XG4gICAgICAgIC8vIHJlYyA9IHheKGstMi1zY2FsZVYpLyB2XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJlcyA9IHhebS92ID0geF4obSArICgyKmstMiAtIHNjYWxlVikgLSAoMiprLTIgLSBzY2FsZVYpKSAvdiA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gKDIqay0yIC0gc2NhbGVWKSkgPT5cbiAgICAgICAgLy8gcmVzID0gcmVjICogeF4obSAtIDIqayArIDIgKyBzY2FsZVYpXG5cbiAgICAgICAgY29uc3QgcmVjID0gdGhpcy5fcmVjaXByb2NhbCh0aGlzLnNjYWxlWCh2LCBzY2FsZVYpLCBrYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuc2NhbGVYKHJlYywgbSAtIDIqayArIDIgKyBzY2FsZVYpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZGl2KF91LCBfdikge1xuICAgICAgICBpZiAoX3UubGVuZ3RoIDwgX3YubGVuZ3RoKSByZXR1cm4gW107XG4gICAgICAgIGNvbnN0IGtiaXRzID0gbG9nMihfdi5sZW5ndGgtMSkrMTtcbiAgICAgICAgY29uc3QgayA9IDEgPDwga2JpdHM7XG5cbiAgICAgICAgY29uc3QgdSA9IHRoaXMuc2NhbGVYKF91LCBrLV92Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnNjYWxlWChfdiwgay1fdi5sZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IG4gPSB2Lmxlbmd0aC0xO1xuICAgICAgICBsZXQgbSA9IHUubGVuZ3RoLTE7XG5cbiAgICAgICAgY29uc3QgcyA9IHRoaXMuX3JlY2lwcm9jYWwodiwga2JpdHMpO1xuICAgICAgICBsZXQgdDtcbiAgICAgICAgaWYgKG0+MipuKSB7XG4gICAgICAgICAgICB0ID0gdGhpcy5zdWIodGhpcy5zY2FsZVgoW3RoaXMuRi5vbmVdLCAyKm4pLCB0aGlzLm11bChzLCB2KSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcSA9IFtdO1xuICAgICAgICBsZXQgcmVtID0gdTtcbiAgICAgICAgbGV0IHVzLCB1dDtcbiAgICAgICAgbGV0IGZpbmlzaCA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghZmluaXNoKSB7XG4gICAgICAgICAgICB1cyA9IHRoaXMubXVsKHJlbSwgcyk7XG4gICAgICAgICAgICBxID0gdGhpcy5hZGQocSwgdGhpcy5zY2FsZVgodXMsIC0yKm4pKTtcblxuICAgICAgICAgICAgaWYgKCBtID4gMipuICkge1xuICAgICAgICAgICAgICAgIHV0ID0gdGhpcy5tdWwocmVtLCB0KTtcbiAgICAgICAgICAgICAgICByZW0gPSB0aGlzLnNjYWxlWCh1dCwgLTIqbik7XG4gICAgICAgICAgICAgICAgbSA9IHJlbS5sZW5ndGgtMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluaXNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxO1xuICAgIH1cblxuXG4gICAgLy8gcmV0dXJucyB0aGUgaXRoIG50aC1yb290IG9mIG9uZVxuICAgIG9uZVJvb3QobiwgaSkge1xuICAgICAgICBsZXQgbmJpdHMgPSBsb2cyKG4tMSkrMTtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGxldCByID0gaTtcblxuICAgICAgICBpZihpPj1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXZlbiAnaScgc2hvdWxkIGJlIGxvd2VyIHRoYW4gJ24nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKDE8PG5iaXRzICE9PSBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycmxyOiAke259IHNob3VsZCBlcXVhbCAkezE8PG5iaXRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgaWYgKHIgJiAxID09IDEpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0aGlzLkYubXVsKHJlcywgdGhpcy53W25iaXRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gciA+PiAxO1xuICAgICAgICAgICAgbmJpdHMgLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFuaXNoaW5nUG9saW5vbWlhbChiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIHJldHVybiB0aGlzLkYuc3ViKHRoaXMuRi5wb3codCwgbSksIHRoaXMuRi5vbmUpO1xuICAgIH1cblxuICAgIGV2YWx1YXRlTGFncmFuZ2VQb2x5bm9taWFscyhiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG09IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgdG0gPSB0aGlzLkYucG93KHQsIG0pO1xuICAgICAgICBjb25zdCB1PSBuZXcgQXJyYXkobSkuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBvbWVnYSA9IHRoaXMud1tiaXRzXTtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHRtLCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5GLmVxKHRoaXMucm9vdHNbYml0c11bMF0sdCkpIHsgLy8gaS5lLiwgdCBlcXVhbHMgb21lZ2FeaVxuICAgICAgICAgICAgICAgICAgICB1W2ldID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5zdWIodG0sIHRoaXMuRi5vbmUpO1xuICAgICAgICAvLyAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYucG93KHRoaXMuRi50d29pbnYsIG0pKTtcbiAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYuaW52KHRoaXMuRi5lKG0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB1W2ldID0gdGhpcy5GLm11bChsLCB0aGlzLkYuaW52KHRoaXMuRi5zdWIodCx0aGlzLnJvb3RzW2JpdHNdW2ldKSkpO1xuICAgICAgICAgICAgbCA9IHRoaXMuRi5tdWwobCwgb21lZ2EpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHU7XG4gICAgfVxuXG4gICAgbG9nMihWKSB7XG4gICAgICAgIHJldHVybiBsb2cyKFYpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9nMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0KFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5GLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRi5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgY29uc3QgcDIgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cblxuZnVuY3Rpb24gX19mZnQyKFBGLCBwYWxsLCBiaXRzKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbMF0gXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0MihQRiwgcGFsbC5zbGljZSgwLCBuZGl2MiksIGJpdHMtMSk7XG4gICAgY29uc3QgcDIgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UobmRpdjIpLCBiaXRzLTEpO1xuXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgb3V0W2ldID0gUEYuRi5hZGQocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5GLnN1YihwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGVbaV0gPSBfcmV2U2xvdyhpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3coaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHJldihpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhGRl0gPDwgMjQpXG4gICAgKSA+Pj4gKDMyLWJpdHMpO1xufVxuXG5mdW5jdGlvbiBfX2JpdFJldmVyc2UocCwgYml0cykge1xuICAgIGZvciAobGV0IGs9MDsgazxwLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGNvbnN0IHIgPSByZXYoaywgYml0cyk7XG4gICAgICAgIGlmIChyPmspIHtcbiAgICAgICAgICAgIGNvbnN0IHRtcD0gcFtrXTtcbiAgICAgICAgICAgIHBba10gPSBwW3JdO1xuICAgICAgICAgICAgcFtyXSA9IHRtcDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxuXG5leHBvcnQgZnVuY3Rpb24gbXVsU2NhbGFyKEYsIGJhc2UsIGUpIHtcbiAgICBsZXQgcmVzO1xuXG4gICAgaWYgKFNjYWxhci5pc1plcm8oZSkpIHJldHVybiBGLnplcm87XG5cbiAgICBjb25zdCBuID0gU2NhbGFyLm5hZihlKTtcblxuICAgIGlmIChuW24ubGVuZ3RoLTFdID09IDEpIHtcbiAgICAgICAgcmVzID0gYmFzZTtcbiAgICB9IGVsc2UgaWYgKG5bbi5sZW5ndGgtMV0gPT0gLTEpIHtcbiAgICAgICAgcmVzID0gRi5uZWcoYmFzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52bGF1ZCBOQUZcIik7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT1uLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcblxuICAgICAgICByZXMgPSBGLmRvdWJsZShyZXMpO1xuXG4gICAgICAgIGlmIChuW2ldID09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9IEYuYWRkKHJlcywgYmFzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAobltpXSA9PSAtMSkge1xuICAgICAgICAgICAgcmVzID0gRi5zdWIocmVzLCBiYXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cblxuLypcbmV4cG9ydHMubXVsU2NhbGFyID0gKEYsIGJhc2UsIGUpID0+e1xuICAgIGxldCByZXMgPSBGLnplcm87XG4gICAgbGV0IHJlbSA9IGJpZ0ludChlKTtcbiAgICBsZXQgZXhwID0gYmFzZTtcblxuICAgIHdoaWxlICghIHJlbS5lcShiaWdJbnQuemVybykpIHtcbiAgICAgICAgaWYgKHJlbS5hbmQoYmlnSW50Lm9uZSkuZXEoYmlnSW50Lm9uZSkpIHtcbiAgICAgICAgICAgIHJlcyA9IEYuYWRkKHJlcywgZXhwKTtcbiAgICAgICAgfVxuICAgICAgICBleHAgPSBGLmRvdWJsZShleHApO1xuICAgICAgICByZW0gPSByZW0uc2hpZnRSaWdodCgxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufTtcbiovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cChGLCBiYXNlLCBlKSB7XG5cbiAgICBpZiAoU2NhbGFyLmlzWmVybyhlKSkgcmV0dXJuIEYub25lO1xuXG4gICAgY29uc3QgbiA9IFNjYWxhci5iaXRzKGUpO1xuXG4gICAgaWYgKG4ubGVndGg9PTApIHJldHVybiBGLm9uZTtcblxuICAgIGxldCByZXMgPSBiYXNlO1xuXG4gICAgZm9yIChsZXQgaT1uLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcblxuICAgICAgICByZXMgPSBGLnNxdWFyZShyZXMpO1xuXG4gICAgICAgIGlmIChuW2ldKSB7XG4gICAgICAgICAgICByZXMgPSBGLm11bChyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4iLCJpbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG4vLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRTcXJ0IChGKSB7XG4gICAgaWYgKChGLm0gJSAyKSA9PSAxKSB7XG4gICAgICAgIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDQpLCAxICkpIHtcbiAgICAgICAgICAgIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDgpLCAxICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCAxNiksIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGc3X211bGxlcihGKTtcbiAgICAgICAgICAgICAgICAgICAgYWxnNV90b25lbGxpU2hhbmtzKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCAxNiksIDkgKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGc0X2tvbmcoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDgpLCA1ICkpIHtcbiAgICAgICAgICAgICAgICBhbGczX2F0a2luKEYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWVsZCB3aXRob3Qgc3FydFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoU2NhbGFyLm1vZChGLnAsIDQpLCAzICkpIHtcbiAgICAgICAgICAgIGFsZzJfc2hhbmtzKEYpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcG0ybW9kNCA9IFNjYWxhci5tb2QoU2NhbGFyLnBvdyhGLnAsIEYubS8yKSwgNCk7XG4gICAgICAgIGlmIChwbTJtb2Q0ID09IDEpIHtcbiAgICAgICAgICAgIGFsZzEwX2FkaihGKTtcbiAgICAgICAgfSBlbHNlIGlmIChwbTJtb2Q0ID09IDMpIHtcbiAgICAgICAgICAgIGFsZzlfYWRqKEYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxnOF9jb21wbGV4KEYpO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cblxuZnVuY3Rpb24gYWxnNV90b25lbGxpU2hhbmtzKEYpIHtcbiAgICBGLnNxcnRfcSA9IFNjYWxhci5wb3coRi5wLCBGLm0pO1xuXG4gICAgRi5zcXJ0X3MgPSAwO1xuICAgIEYuc3FydF90ID0gU2NhbGFyLnN1YihGLnNxcnRfcSwgMSk7XG5cbiAgICB3aGlsZSAoIVNjYWxhci5pc09kZChGLnNxcnRfdCkpIHtcbiAgICAgICAgRi5zcXJ0X3MgPSBGLnNxcnRfcyArIDE7XG4gICAgICAgIEYuc3FydF90ID0gU2NhbGFyLmRpdihGLnNxcnRfdCwgMik7XG4gICAgfVxuXG4gICAgbGV0IGMwID0gRi5vbmU7XG5cbiAgICB3aGlsZSAoRi5lcShjMCwgRi5vbmUpKSB7XG4gICAgICAgIGNvbnN0IGMgPSBGLnJhbmRvbSgpO1xuICAgICAgICBGLnNxcnRfeiA9IEYucG93KGMsIEYuc3FydF90KTtcbiAgICAgICAgYzAgPSBGLnBvdyhGLnNxcnRfeiwgMSA8PCAoRi5zcXJ0X3MtMSkgKTtcbiAgICB9XG5cbiAgICBGLnNxcnRfdG0xZDIgPSBTY2FsYXIuZGl2KFNjYWxhci5zdWIoRi5zcXJ0X3QsIDEpLDIpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGPXRoaXM7XG4gICAgICAgIGlmIChGLmlzWmVybyhhKSkgcmV0dXJuIEYuemVybztcbiAgICAgICAgbGV0IHcgPSBGLnBvdyhhLCBGLnNxcnRfdG0xZDIpO1xuICAgICAgICBjb25zdCBhMCA9IEYucG93KCBGLm11bChGLnNxdWFyZSh3KSwgYSksIDEgPDwgKEYuc3FydF9zLTEpICk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2ID0gRi5zcXJ0X3M7XG4gICAgICAgIGxldCB4ID0gRi5tdWwoYSwgdyk7XG4gICAgICAgIGxldCBiID0gRi5tdWwoeCwgdyk7XG4gICAgICAgIGxldCB6ID0gRi5zcXJ0X3o7XG4gICAgICAgIHdoaWxlICghRi5lcShiLCBGLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBiMmsgPSBGLnNxdWFyZShiKTtcbiAgICAgICAgICAgIGxldCBrPTE7XG4gICAgICAgICAgICB3aGlsZSAoIUYuZXEoYjJrLCBGLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBiMmsgPSBGLnNxdWFyZShiMmspO1xuICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IHo7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8di1rLTE7IGkrKykge1xuICAgICAgICAgICAgICAgIHcgPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHogPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGIgPSBGLm11bChiLCB6KTtcbiAgICAgICAgICAgIHggPSBGLm11bCh4LCB3KTtcbiAgICAgICAgICAgIHYgPSBrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzRfa29uZyhGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDQgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzNfYXRraW4oRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcyX3NoYW5rcyhGKSB7XG5cbiAgICBGLnNxcnRfcSA9IFNjYWxhci5wb3coRi5wLCBGLm0pO1xuICAgIEYuc3FydF9lMSA9IFNjYWxhci5kaXYoIFNjYWxhci5zdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCBhMSA9IHRoaXMucG93KGEsIHRoaXMuc3FydF9lMSk7XG5cbiAgICAgICAgY29uc3QgYTAgPSB0aGlzLm11bCh0aGlzLnNxdWFyZShhMSksIGEpO1xuXG4gICAgICAgIGlmICggdGhpcy5lcShhMCwgdGhpcy5uZWdvbmUpICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMubXVsKGExLCBhKTtcblxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcxMF9hZGooRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAxMCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnOV9hZGooRikge1xuICAgIEYuc3FydF9xID0gU2NhbGFyLnBvdyhGLnAsIEYubS8yKTtcbiAgICBGLnNxcnRfZTM0ID0gU2NhbGFyLmRpdiggU2NhbGFyLnN1YihGLnNxcnRfcSwgMykgLCA0KTtcbiAgICBGLnNxcnRfZTEyID0gU2NhbGFyLmRpdiggU2NhbGFyLnN1YihGLnNxcnRfcSwgMSkgLCAyKTtcblxuICAgIEYuZnJvYmVuaXVzID0gZnVuY3Rpb24obiwgeCkge1xuICAgICAgICBpZiAoKG4lMikgPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIEYuY29uanVnYXRlKHgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGID0gdGhpcztcbiAgICAgICAgY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgY29uc3QgYWxmYSA9IEYubXVsKEYuc3F1YXJlKGExKSwgYSk7XG4gICAgICAgIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgeDAgPSBGLm11bChhMSwgYSk7XG4gICAgICAgIGxldCB4O1xuICAgICAgICBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHggPSBGLm11bCh4MCwgW0YuRi56ZXJvLCBGLkYub25lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgIHggPSBGLm11bChiLCB4MCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuXG5mdW5jdGlvbiBhbGc4X2NvbXBsZXgoRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyA4IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuIiwiXG5cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxuXG5mdW5jdGlvbiBxdWFydGVyUm91bmQoc3QsIGEsIGIsIGMsIGQpIHtcblxuICAgIHN0W2FdID0gKHN0W2FdICsgc3RbYl0pID4+PiAwO1xuICAgIHN0W2RdID0gKHN0W2RdIF4gc3RbYV0pID4+PiAwO1xuICAgIHN0W2RdID0gKChzdFtkXSA8PCAxNikgfCAoKHN0W2RdPj4+MTYpICYgMHhGRkZGKSkgPj4+IDA7XG5cbiAgICBzdFtjXSA9IChzdFtjXSArIHN0W2RdKSA+Pj4gMDtcbiAgICBzdFtiXSA9IChzdFtiXSBeIHN0W2NdKSA+Pj4gMDtcbiAgICBzdFtiXSA9ICgoc3RbYl0gPDwgMTIpIHwgKChzdFtiXT4+PjIwKSAmIDB4RkZGKSkgPj4+IDA7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgOCkgfCAoKHN0W2RdPj4+MjQpICYgMHhGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDcpIHwgKChzdFtiXT4+PjI1KSAmIDB4N0YpKSA+Pj4gMDtcbn1cblxuZnVuY3Rpb24gZG91YmxlUm91bmQoc3QpIHtcbiAgICBxdWFydGVyUm91bmQoc3QsIDAsIDQsIDgsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMSwgNSwgOSwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAyLCA2LDEwLDE0KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDMsIDcsMTEsMTUpO1xuXG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA1LDEwLDE1KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDYsMTEsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNywgOCwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA0LCA5LDE0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhQ2hhIHtcblxuICAgIGNvbnN0cnVjdG9yKHNlZWQpIHtcbiAgICAgICAgc2VlZCA9IHNlZWQgfHwgWzAsMCwwLDAsMCwwLDAsMF07XG4gICAgICAgIHRoaXMuc3RhdGUgPSBbXG4gICAgICAgICAgICAweDYxNzA3ODY1LFxuICAgICAgICAgICAgMHgzMzIwNjQ2RSxcbiAgICAgICAgICAgIDB4Nzk2MjJEMzIsXG4gICAgICAgICAgICAweDZCMjA2NTc0LFxuICAgICAgICAgICAgc2VlZFswXSxcbiAgICAgICAgICAgIHNlZWRbMV0sXG4gICAgICAgICAgICBzZWVkWzJdLFxuICAgICAgICAgICAgc2VlZFszXSxcbiAgICAgICAgICAgIHNlZWRbNF0sXG4gICAgICAgICAgICBzZWVkWzVdLFxuICAgICAgICAgICAgc2VlZFs2XSxcbiAgICAgICAgICAgIHNlZWRbN10sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaWR4ID0gMTY7XG4gICAgICAgIHRoaXMuYnVmZiA9IG5ldyBBcnJheSgxNik7XG4gICAgfVxuXG4gICAgbmV4dFUzMigpIHtcbiAgICAgICAgaWYgKHRoaXMuaWR4ID09IDE2KSB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmW3RoaXMuaWR4KytdO1xuICAgIH1cblxuICAgIG5leHRVNjQoKSB7XG4gICAgICAgIHJldHVybiBTY2FsYXIuYWRkKFNjYWxhci5tdWwodGhpcy5uZXh0VTMyKCksIDB4MTAwMDAwMDAwKSwgdGhpcy5uZXh0VTMyKCkpO1xuICAgIH1cblxuICAgIG5leHRCb29sKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubmV4dFUzMigpICYgMSkgPT0gMTtcbiAgICB9XG5cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIC8vIENvcHkgdGhlIHN0YXRlXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB0aGlzLmJ1ZmZbaV0gPSB0aGlzLnN0YXRlW2ldO1xuXG4gICAgICAgIC8vIEFwcGx5IHRoZSByb3VuZHNcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIGRvdWJsZVJvdW5kKHRoaXMuYnVmZik7XG5cbiAgICAgICAgLy8gQWRkIHRvIHRoZSBpbml0aWFsXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB0aGlzLmJ1ZmZbaV0gPSAodGhpcy5idWZmW2ldICsgdGhpcy5zdGF0ZVtpXSkgPj4+IDA7XG5cbiAgICAgICAgdGhpcy5pZHggPSAwO1xuXG4gICAgICAgIHRoaXMuc3RhdGVbMTJdID0gKHRoaXMuc3RhdGVbMTJdICsgMSkgPj4+IDA7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlWzEyXSAhPSAwKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3RhdGVbMTNdID0gKHRoaXMuc3RhdGVbMTNdICsgMSkgPj4+IDA7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlWzEzXSAhPSAwKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3RhdGVbMTRdID0gKHRoaXMuc3RhdGVbMTRdICsgMSkgPj4+IDA7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlWzE0XSAhPSAwKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3RhdGVbMTVdID0gKHRoaXMuc3RhdGVbMTVdICsgMSkgPj4+IDA7XG4gICAgfVxufVxuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IENoYUNoYSBmcm9tIFwiLi9jaGFjaGEuanNcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tQnl0ZXMobikge1xuICAgIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7IC8vIEJyb3dzZXJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKSB7IC8vIFN1cHBvcnRlZFxuICAgICAgICAgICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgICAgICB9IGVsc2UgeyAvLyBmYWxsYmFja1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gKE1hdGgucmFuZG9tKCkqNDI5NDk2NzI5Nik+Pj4wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgeyAvLyBOb2RlSlNcbiAgICAgICAgY3J5cHRvLnJhbmRvbUZpbGxTeW5jKGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tU2VlZCgpIHtcbiAgICBjb25zdCBhcnIgPSBnZXRSYW5kb21CeXRlcygzMik7XG4gICAgY29uc3QgYXJyViA9IG5ldyBVaW50MzJBcnJheShhcnIuYnVmZmVyKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkLnB1c2goYXJyVltpXSk7XG4gICAgfVxuICAgIHJldHVybiBzZWVkO1xufVxuXG5sZXQgdGhyZWFkUm5nID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRocmVhZFJuZygpIHtcbiAgICBpZiAodGhyZWFkUm5nKSByZXR1cm4gdGhyZWFkUm5nO1xuICAgIHRocmVhZFJuZyA9IG5ldyBDaGFDaGEoZ2V0UmFuZG9tU2VlZCgpKTtcbiAgICByZXR1cm4gdGhyZWFkUm5nO1xufVxuIiwiLyogZ2xvYmFsIEJpZ0ludCAqL1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuaW1wb3J0ICogYXMgZnV0aWxzIGZyb20gXCIuL2Z1dGlscy5qc1wiO1xuaW1wb3J0IGJ1aWxkU3FydCBmcm9tIFwiLi9mc3FydC5qc1wiO1xuaW1wb3J0IHtnZXRSYW5kb21CeXRlc30gZnJvbSBcIi4vcmFuZG9tLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpxRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHApIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjFcIjtcbiAgICAgICAgdGhpcy5vbmUgPSAxbjtcbiAgICAgICAgdGhpcy56ZXJvID0gMG47XG4gICAgICAgIHRoaXMucCA9IEJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAtMW47XG4gICAgICAgIHRoaXMudHdvID0gMm47XG4gICAgICAgIHRoaXMuaGFsZiA9IHRoaXMucCA+PiAxbjtcbiAgICAgICAgdGhpcy5iaXRMZW5ndGggPSBTY2FsYXIuYml0TGVuZ3RoKHRoaXMucCk7XG4gICAgICAgIHRoaXMubWFzayA9ICgxbiA8PCBCaWdJbnQodGhpcy5iaXRMZW5ndGgpKSAtIDFuO1xuXG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcigodGhpcy5iaXRMZW5ndGggLSAxKSAvIDY0KSsxO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuICAgICAgICB0aGlzLlIgPSB0aGlzLmUoMW4gPDwgQmlnSW50KHRoaXMubjY0KjY0KSk7XG4gICAgICAgIHRoaXMuUmkgPSB0aGlzLmludih0aGlzLlIpO1xuXG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLm5lZ29uZSA+PiAxbjtcbiAgICAgICAgdGhpcy5ucXIgPSB0aGlzLnR3bztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyh0aGlzLm5xciwgZSk7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5ucXIgKyAxbjtcbiAgICAgICAgICAgIHIgPSB0aGlzLnBvdyh0aGlzLm5xciwgZSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucyA9IDA7XG4gICAgICAgIHRoaXMudCA9IHRoaXMubmVnb25lO1xuXG4gICAgICAgIHdoaWxlICgodGhpcy50ICYgMW4pID09IDBuKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50ID4+IDFuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcbiAgICB9XG5cbiAgICBlKGEsYikge1xuICAgICAgICBsZXQgcmVzO1xuICAgICAgICBpZiAoIWIpIHtcbiAgICAgICAgICAgIHJlcyA9IEJpZ0ludChhKTtcbiAgICAgICAgfSBlbHNlIGlmIChiPT0xNikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KFwiMHhcIithKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzIDwgMCkge1xuICAgICAgICAgICAgbGV0IG5yZXMgPSAtcmVzO1xuICAgICAgICAgICAgaWYgKG5yZXMgPj0gdGhpcy5wKSBucmVzID0gbnJlcyAlIHRoaXMucDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAgLSBucmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChyZXM+PSB0aGlzLnApID8gcmVzJXRoaXMucCA6IHJlcztcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYWRkKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYSArIGI7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgPj0gYikgPyBhLWIgOiB0aGlzLnAtYithO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiBhID8gdGhpcy5wLWEgOiBhO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSpiKSV0aGlzLnA7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIHMpIHtcbiAgICAgICAgcmV0dXJuIChiYXNlICogdGhpcy5lKHMpKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gKGEqYSkgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gYT09YjtcbiAgICB9XG5cbiAgICBuZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gYSE9YjtcbiAgICB9XG5cbiAgICBsdChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA8IGJiO1xuICAgIH1cblxuICAgIGd0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID4gYmI7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDw9IGJiO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA+PSBiYjtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwoYSwgdGhpcy5pbnYoYikpO1xuICAgIH1cblxuICAgIGlkaXYoYSwgYikge1xuICAgICAgICBpZiAoIWIpIHRocm93IG5ldyBFcnJvcihcIkRpdmlzaW9uIGJ5IHplcm9cIik7XG4gICAgICAgIHJldHVybiBhIC8gYjtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBpZiAoIWEpIHRocm93IG5ldyBFcnJvcihcIkRpdmlzaW9uIGJ5IHplcm9cIik7XG5cbiAgICAgICAgbGV0IHQgPSAwbjtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnA7XG4gICAgICAgIGxldCBuZXd0ID0gMW47XG4gICAgICAgIGxldCBuZXdyID0gYSAlIHRoaXMucDtcbiAgICAgICAgd2hpbGUgKG5ld3IpIHtcbiAgICAgICAgICAgIGxldCBxID0gci9uZXdyO1xuICAgICAgICAgICAgW3QsIG5ld3RdID0gW25ld3QsIHQtcSpuZXd0XTtcbiAgICAgICAgICAgIFtyLCBuZXdyXSA9IFtuZXdyLCByLXEqbmV3cl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQ8MG4pIHQgKz0gdGhpcy5wO1xuICAgICAgICByZXR1cm4gdDtcbiAgICB9XG5cbiAgICBtb2QoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAlIGI7XG4gICAgfVxuXG4gICAgcG93KGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1dGlscy5leHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1dGlscy5leHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgYmFuZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgJiBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBib3IoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhIHwgYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYnhvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgXiBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBibm90KGEpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYSBeIHRoaXMubWFzaztcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHNobChhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gKGEgPDwgYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuYiA9IHRoaXMucCAtIGI7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKG5iKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPj4gbmI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBuYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgJiYgYikgPyAxbiA6IDBuO1xuICAgIH1cblxuICAgIGxvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSB8fCBiKSA/IDFuIDogMG47XG4gICAgfVxuXG4gICAgbG5vdChhKSB7XG4gICAgICAgIHJldHVybiAoYSkgPyAwbiA6IDFuO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobiA9PSAwbikgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnBvdyhuLCB0aGlzLm5lZ29uZSA+PiB0aGlzLm9uZSk7XG4gICAgICAgIGlmICggcmVzICE9IDFuICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IG0gPSB0aGlzLnM7XG4gICAgICAgIGxldCBjID0gdGhpcy5ucXJfdG9fdDtcbiAgICAgICAgbGV0IHQgPSB0aGlzLnBvdyhuLCB0aGlzLnQpO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KG4sIHRoaXMuYWRkKHRoaXMudCwgdGhpcy5vbmUpID4+IDFuICk7XG5cbiAgICAgICAgd2hpbGUgKCB0ICE9IDFuICkge1xuICAgICAgICAgICAgbGV0IHNxID0gdGhpcy5zcXVhcmUodCk7XG4gICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICB3aGlsZSAoc3EgIT0gMW4gKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHNxID0gdGhpcy5zcXVhcmUoc3EpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiID0gYyBeIG0taS0xXG4gICAgICAgICAgICBsZXQgYiA9IGM7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8IG0taS0xOyBqICsrKSBiID0gdGhpcy5zcXVhcmUoYik7XG5cbiAgICAgICAgICAgIG0gPSBpO1xuICAgICAgICAgICAgYyA9IHRoaXMuc3F1YXJlKGIpO1xuICAgICAgICAgICAgdCA9IHRoaXMubXVsKHQsIGMpO1xuICAgICAgICAgICAgciA9IHRoaXMubXVsKHIsIGIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIgPiAodGhpcy5wID4+IDFuKSkge1xuICAgICAgICAgICAgciA9IHRoaXMubmVnKHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKGEsIGIpIHtcbiAgICAgICAgYSA9IEJpZ0ludChhLGIpO1xuICAgICAgICBpZiAoYSA8IDApIHtcbiAgICAgICAgICAgIGxldCBuYSA9IC1hO1xuICAgICAgICAgICAgaWYgKG5hID49IHRoaXMucCkgbmEgPSBuYSAlIHRoaXMucDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAgLSBuYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoYT49IHRoaXMucCkgPyBhJXRoaXMucCA6IGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIGNvbnN0IG5CeXRlcyA9ICh0aGlzLmJpdExlbmd0aCoyIC8gOCk7XG4gICAgICAgIGxldCByZXMgPTBuO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJ5dGVzOyBpKyspIHtcbiAgICAgICAgICAgIHJlcyA9IChyZXMgPDwgOG4pICsgQmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgbGV0IHZzO1xuICAgICAgICBpZiAoYSA+IHRoaXMuaGFsZikge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMucC1hO1xuICAgICAgICAgICAgdnMgPSBcIi1cIit2LnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdnMgPSBhLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2cztcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gYSA9PSAwbjtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdj0wbjtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiArPSBybmcubmV4dFU2NCgpIDw8IEJpZ0ludCg2NCAqaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ICY9IHRoaXMubWFzaztcbiAgICAgICAgfSB3aGlsZSAodiA+PSB0aGlzLnApO1xuICAgICAgICB2ID0gKHYgKiB0aGlzLlJpKSAlIHRoaXMucDsgICAvLyBDb252ZXJ0IGZyb20gbW9udGdvbWVyeVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbn1cblxuIiwiaW1wb3J0IGJpZ0ludCBmcm9tIFwiYmlnLWludGVnZXJcIjtcbmltcG9ydCBidWlsZFNxcnQgZnJvbSBcIi4vZnNxcnQuanNcIjtcbmltcG9ydCB7Z2V0UmFuZG9tQnl0ZXN9IGZyb20gXCIuL3JhbmRvbS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gYmlnSW50Lm9uZTtcbiAgICAgICAgdGhpcy56ZXJvID0gYmlnSW50Lnplcm87XG4gICAgICAgIHRoaXMucCA9IGJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAubWludXMoYmlnSW50Lm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gYmlnSW50KDIpO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAuc2hpZnRSaWdodCgxKTtcbiAgICAgICAgdGhpcy5iaXRMZW5ndGggPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgICAgIHRoaXMubWFzayA9IGJpZ0ludC5vbmUuc2hpZnRMZWZ0KHRoaXMuYml0TGVuZ3RoKS5taW51cyhiaWdJbnQub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IoKHRoaXMuYml0TGVuZ3RoIC0gMSkgLyA2NCkrMTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICAgICAgdGhpcy5SID0gYmlnSW50Lm9uZS5zaGlmdExlZnQodGhpcy5uNjQqNjQpO1xuICAgICAgICB0aGlzLlJpID0gdGhpcy5pbnYodGhpcy5SKTtcblxuICAgICAgICBjb25zdCBlID0gdGhpcy5uZWdvbmUuc2hpZnRSaWdodCh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB3aGlsZSAoIXIuZXF1YWxzKHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xci5hZGQodGhpcy5vbmUpO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucyA9IHRoaXMuemVybztcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCF0aGlzLnQuaXNPZGQoKSkge1xuICAgICAgICAgICAgdGhpcy5zID0gdGhpcy5zLmFkZCh0aGlzLm9uZSk7XG4gICAgICAgICAgICB0aGlzLnQgPSB0aGlzLnQuc2hpZnRSaWdodCh0aGlzLm9uZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5xcl90b190ID0gdGhpcy5wb3codGhpcy5ucXIsIHRoaXMudCk7XG5cbiAgICAgICAgYnVpbGRTcXJ0KHRoaXMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYmlnSW50KGEsYik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplKHJlcyk7XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gYS5hZGQoYik7XG4gICAgICAgIGlmIChyZXMuZ2VxKHRoaXMucCkpIHtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5taW51cyh0aGlzLnApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgaWYgKGEuZ2VxKGIpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5taW51cyhiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAubWludXMoYi5taW51cyhhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGE7XG4gICAgICAgIHJldHVybiB0aGlzLnAubWludXMoYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEudGltZXMoYikubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIHMpIHtcbiAgICAgICAgcmV0dXJuIGJhc2UudGltZXMoYmlnSW50KHMpKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gYS5zcXVhcmUoKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLmVxKGIpO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm5lcShiKTtcbiAgICB9XG5cbiAgICBsdChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gYS5ndCh0aGlzLmhhbGYpID8gYS5taW51cyh0aGlzLnApIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSBiLmd0KHRoaXMuaGFsZikgPyBiLm1pbnVzKHRoaXMucCkgOiBiO1xuICAgICAgICByZXR1cm4gYWEubHQoYmIpO1xuICAgIH1cblxuICAgIGd0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSBhLmd0KHRoaXMuaGFsZikgPyBhLm1pbnVzKHRoaXMucCkgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IGIuZ3QodGhpcy5oYWxmKSA/IGIubWludXModGhpcy5wKSA6IGI7XG4gICAgICAgIHJldHVybiBhYS5ndChiYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSBhLmd0KHRoaXMuaGFsZikgPyBhLm1pbnVzKHRoaXMucCkgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IGIuZ3QodGhpcy5oYWxmKSA/IGIubWludXModGhpcy5wKSA6IGI7XG4gICAgICAgIHJldHVybiBhYS5sZXEoYmIpO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gYS5ndCh0aGlzLmhhbGYpID8gYS5taW51cyh0aGlzLnApIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSBiLmd0KHRoaXMuaGFsZikgPyBiLm1pbnVzKHRoaXMucCkgOiBiO1xuICAgICAgICByZXR1cm4gYWEuZ2VxKGJiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICBpZiAoYi5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEudGltZXMoYi5tb2RJbnYodGhpcy5wKSkubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmIChiLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYS5kaXZpZGUoYik7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgaWYgKGEuaXNaZXJvKCkpIHRocm93IG5ldyBFcnJvcihcIkRpdmlzaW9uIGJ5IHplcm9cIik7XG4gICAgICAgIHJldHVybiBhLm1vZEludih0aGlzLnApO1xuICAgIH1cblxuICAgIG1vZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm1vZChiKTtcbiAgICB9XG5cbiAgICBwb3coYSwgYikge1xuICAgICAgICByZXR1cm4gYS5tb2RQb3coYiwgdGhpcy5wKTtcbiAgICB9XG5cbiAgICBleHAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5tb2RQb3coYiwgdGhpcy5wKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEuYW5kKGIpLmFuZCh0aGlzLm1hc2spLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm9yKGIpLmFuZCh0aGlzLm1hc2spLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIGJ4b3IoYSwgYikge1xuICAgICAgICByZXR1cm4gYS54b3IoYikuYW5kKHRoaXMubWFzaykubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgYm5vdChhKSB7XG4gICAgICAgIHJldHVybiBhLnhvcih0aGlzLm1hc2spLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIHNobChhLCBiKSB7XG4gICAgICAgIGlmIChiLmx0KHRoaXMuYml0TGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEuc2hpZnRMZWZ0KGIpLmFuZCh0aGlzLm1hc2spLm1vZCh0aGlzLnApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAubWludXMoYik7XG4gICAgICAgICAgICBpZiAobmIubHQodGhpcy5iaXRMZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hyKGEsIG5iKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC56ZXJvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hyKGEsIGIpIHtcbiAgICAgICAgaWYgKGIubHQodGhpcy5iaXRMZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5zaGlmdFJpZ2h0KGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAubWludXMoYik7XG4gICAgICAgICAgICBpZiAobmIubHQodGhpcy5iaXRMZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hsKGEsIG5iKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC56ZXJvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFuZChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSA/IGJpZ0ludC56ZXJvIDogYmlnSW50Lm9uZTtcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEuaXNaZXJvKCkgJiYgYi5pc1plcm8oKSkgPyBiaWdJbnQuemVybyA6IGJpZ0ludC5vbmU7XG4gICAgfVxuXG4gICAgbG5vdChhKSB7XG4gICAgICAgIHJldHVybiBhLmlzWmVybygpID8gYmlnSW50Lm9uZSA6IGJpZ0ludC56ZXJvO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobi5lcXVhbHModGhpcy56ZXJvKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnBvdyhuLCB0aGlzLm5lZ29uZS5zaGlmdFJpZ2h0KHRoaXMub25lKSk7XG4gICAgICAgIGlmICghcmVzLmVxdWFscyh0aGlzLm9uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gcGFyc2VJbnQodGhpcy5zKTtcbiAgICAgICAgbGV0IGMgPSB0aGlzLm5xcl90b190O1xuICAgICAgICBsZXQgdCA9IHRoaXMucG93KG4sIHRoaXMudCk7XG4gICAgICAgIGxldCByID0gdGhpcy5wb3cobiwgdGhpcy5hZGQodGhpcy50LCB0aGlzLm9uZSkuc2hpZnRSaWdodCh0aGlzLm9uZSkgKTtcblxuICAgICAgICB3aGlsZSAoIXQuZXF1YWxzKHRoaXMub25lKSkge1xuICAgICAgICAgICAgbGV0IHNxID0gdGhpcy5zcXVhcmUodCk7XG4gICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIXNxLmVxdWFscyh0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgc3EgPSB0aGlzLnNxdWFyZShzcSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGIgPSBjIF4gbS1pLTFcbiAgICAgICAgICAgIGxldCBiID0gYztcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajwgbS1pLTE7IGogKyspIGIgPSB0aGlzLnNxdWFyZShiKTtcblxuICAgICAgICAgICAgbSA9IGk7XG4gICAgICAgICAgICBjID0gdGhpcy5zcXVhcmUoYik7XG4gICAgICAgICAgICB0ID0gdGhpcy5tdWwodCwgYyk7XG4gICAgICAgICAgICByID0gdGhpcy5tdWwociwgYik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoci5ncmVhdGVyKHRoaXMucC5zaGlmdFJpZ2h0KHRoaXMub25lKSkpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhKSB7XG4gICAgICAgIGEgPSBiaWdJbnQoYSk7XG4gICAgICAgIGlmIChhLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucC5taW51cyhhLmFicygpLm1vZCh0aGlzLnApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1vZCh0aGlzLnApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBsZXQgcmVzID0gYmlnSW50KDApO1xuICAgICAgICBsZXQgbiA9IGJpZ0ludCh0aGlzLnAuc3F1YXJlKCkpO1xuICAgICAgICB3aGlsZSAoIW4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5zaGlmdExlZnQoOCkuYWRkKGJpZ0ludChnZXRSYW5kb21CeXRlcygxKVswXSkpO1xuICAgICAgICAgICAgbiA9IG4uc2hpZnRSaWdodCg4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgbGV0IHZzO1xuICAgICAgICBpZiAoIWEubGVzc2VyT3JFcXVhbHModGhpcy5wLnNoaWZ0UmlnaHQoYmlnSW50KDEpKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLnAubWludXMoYSk7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdnM7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuaXNaZXJvKCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHYgPSBiaWdJbnQoMCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgPSB2LmFkZCh2LCBybmcubmV4dFU2NCgpLnNoaWZ0TGVmdCg2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gdi5hbmQodGhpcy5tYXNrKTtcbiAgICAgICAgfSB3aGlsZSAodi5nZXEodGhpcy5wKSk7XG4gICAgICAgIHYgPSB2LnRpbWVzKHRoaXMuUmkpLm1vZCh0aGlzLnEpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cblxufVxuXG4iLCJpbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5cbmltcG9ydCBGMUZpZWxkX25hdGl2ZSBmcm9tIFwiLi9mMWZpZWxkX25hdGl2ZS5qc1wiO1xuaW1wb3J0IEYxRmllbGRfYmlnaW50IGZyb20gXCIuL2YxZmllbGRfYmlnaW50LmpzXCI7XG5cbmNvbnN0IHN1cHBvcnRzTmF0aXZlQmlnSW50ID0gdHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiO1xubGV0IF9GMUZpZWxkO1xuaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgX0YxRmllbGQgPSBGMUZpZWxkX25hdGl2ZTtcbn0gZWxzZSB7XG4gICAgX0YxRmllbGQgPSBGMUZpZWxkX2JpZ2ludDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgIGNsYXNzIEYxRmllbGQgZXh0ZW5kcyBfRjFGaWVsZCB7XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICBTY2FsYXIudG9ScHJMRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICBTY2FsYXIudG9ScHJCRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBNb250Z29tZXJ5IFJlcHJlc2VudGF0aW9uXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckJFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9ScHJMRShidWZmLCBvLCB0aGlzLm11bCh0aGlzLlIsIGUpKTtcbiAgICB9XG5cblxuICAgIC8vIFBhc2VzIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIGZyb21ScHJMRShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiBTY2FsYXIuZnJvbVJwckxFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIC8vIFBhc2VzIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiBTY2FsYXIuZnJvbVJwckJFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByTEUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByQkUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBmVXRpbHMgZnJvbSBcIi4vZnV0aWxzLmpzXCI7XG5pbXBvcnQgYnVpbGRTcXJ0IGZyb20gXCIuL2ZzcXJ0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEYyRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjJcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSoyO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBjb25qdWdhdGUoYSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYVswXSxcbiAgICAgICAgICAgIHRoaXMuRi5uZWcoYVsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKCBhQSAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShiQikpLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpXTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDEpKTtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYuaW52KHQyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgdDMpLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyh0aGlzLkYubXVsKCBhWzFdLCB0MykpIF07XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSAsIGFbMV0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFtcbiAgICAgICAgICAgIChhICsgYikgKiAoYSArIG5vbl9yZXNpZHVlICogYikgLSBhYiAtIG5vbl9yZXNpZHVlICogYWIsXG4gICAgICAgICAgICBhYiArIGFiXG4gICAgICAgIF07XG4gICAgICAgICovXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhWzFdKSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGFiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoYWIpKSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFiLCBhYilcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGZVdGlscy5tdWxTY2FsYXIodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgcG93KGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGZVdGlscy5leHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGZVdGlscy5leHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZVdGlscyBmcm9tIFwiLi9mdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRjNGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoRiwgbm9uUmVzaWR1ZSkge1xuICAgICAgICB0aGlzLnR5cGU9XCJGM1wiO1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLm5vblJlc2lkdWUgPSBub25SZXNpZHVlO1xuICAgICAgICB0aGlzLm0gPSBGLm0qMztcbiAgICAgICAgdGhpcy5wID0gRi5wO1xuICAgICAgICB0aGlzLm42NCA9IEYubjY0KjM7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pLCB0aGlzLkYuY29weShhWzJdKV07XG4gICAgfVxuXG4gICAgYWRkKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYlswXSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMV0sIGJbMV0pLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzJdLCBiWzJdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzFdLCBiWzFdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsyXSwgYlsyXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuXG4gICAgICAgIGNvbnN0IGFBID0gdGhpcy5GLm11bChhWzBdICwgYlswXSk7XG4gICAgICAgIGNvbnN0IGJCID0gdGhpcy5GLm11bChhWzFdICwgYlsxXSk7XG4gICAgICAgIGNvbnN0IGNDID0gdGhpcy5GLm11bChhWzJdICwgYlsyXSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgYUEsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMV0sIGFbMl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlsxXSwgYlsyXSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiQiwgY0MpKSkpLCAgICAvLyBhQSArIG5vbl9yZXNpZHVlKigoYitjKSooQitDKS1iQi1jQyksXG5cbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYVsxXSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhQSwgYkIpKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoIGNDKSksICAgLy8gKGErYikqKEErQiktYUEtYkIrbm9uX3Jlc2lkdWUqY0NcblxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzJdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsyXSkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBjQykpLFxuICAgICAgICAgICAgICAgIGJCKV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGErYykqKEErQyktYUErYkItY0MpXG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgY29uc3QgdDAgPSB0aGlzLkYuc3F1YXJlKGFbMF0pOyAgICAgICAgICAgICAvLyB0MCA9IGFeMiA7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTsgICAgICAgICAgICAgLy8gdDEgPSBiXjIgO1xuICAgICAgICBjb25zdCB0MiA9IHRoaXMuRi5zcXVhcmUoYVsyXSk7ICAgICAgICAgICAgIC8vIHQyID0gY14yO1xuICAgICAgICBjb25zdCB0MyA9IHRoaXMuRi5tdWwoYVswXSxhWzFdKTsgICAgICAgICAgIC8vIHQzID0gYWJcbiAgICAgICAgY29uc3QgdDQgPSB0aGlzLkYubXVsKGFbMF0sYVsyXSk7ICAgICAgICAgICAvLyB0NCA9IGFjXG4gICAgICAgIGNvbnN0IHQ1ID0gdGhpcy5GLm11bChhWzFdLGFbMl0pOyAgICAgICAgICAgLy8gdDUgPSBiYztcbiAgICAgICAgLy8gYzAgPSB0MCAtIG5vbl9yZXNpZHVlICogdDU7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLnN1Yih0MCwgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHQ1KSk7XG4gICAgICAgIC8vIGMxID0gbm9uX3Jlc2lkdWUgKiB0MiAtIHQzO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5zdWIodGhpcy5fbXVsQnlOb25SZXNpZHVlKHQyKSwgdDMpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5zdWIodDEsIHQ0KTsgICAgICAgICAgICAgIC8vIGMyID0gdDEtdDRcblxuICAgICAgICAvLyB0NiA9IChhICogYzAgKyBub25fcmVzaWR1ZSAqIChjICogYzEgKyBiICogYzIpKS5pbnYoKTtcbiAgICAgICAgY29uc3QgdDYgPVxuICAgICAgICAgICAgdGhpcy5GLmludihcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKGFbMF0sIGMwKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKGFbMl0sIGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKGFbMV0sIGMyKSkpKSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMwKSwgICAgICAgICAvLyB0NipjMFxuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzEpLCAgICAgICAgIC8vIHQ2KmMxXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMildOyAgICAgICAgLy8gdDYqYzJcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwoYSwgdGhpcy5pbnYoYikpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIGNvbnN0IHMwID0gdGhpcy5GLnNxdWFyZShhWzBdKTsgICAgICAgICAgICAgICAgICAgLy8gczAgPSBhXjJcbiAgICAgICAgY29uc3QgYWIgPSB0aGlzLkYubXVsKGFbMF0sIGFbMV0pOyAgICAgICAgICAgICAgICAvLyBhYiA9IGEqYlxuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi5hZGQoYWIsIGFiKTsgICAgICAgICAgICAgICAgICAgIC8vIHMxID0gMmFiO1xuICAgICAgICBjb25zdCBzMiA9IHRoaXMuRi5zcXVhcmUoXG4gICAgICAgICAgICB0aGlzLkYuYWRkKHRoaXMuRi5zdWIoYVswXSxhWzFdKSwgYVsyXSkpOyAgICAgLy8gczIgPSAoYSAtIGIgKyBjKV4yO1xuICAgICAgICBjb25zdCBiYyA9IHRoaXMuRi5tdWwoYVsxXSxhWzJdKTsgICAgICAgICAgICAgICAgIC8vIGJjID0gYipjXG4gICAgICAgIGNvbnN0IHMzID0gdGhpcy5GLmFkZChiYywgYmMpOyAgICAgICAgICAgICAgICAgICAgLy8gczMgPSAyKmJjXG4gICAgICAgIGNvbnN0IHM0ID0gdGhpcy5GLnNxdWFyZShhWzJdKTsgICAgICAgICAgICAgICAgICAgLy8gczQgPSBjXjJcblxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHMwLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShzMykpLCAgICAgICAgICAgLy8gczAgKyBub25fcmVzaWR1ZSAqIHMzLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBzMSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoczQpKSwgICAgICAgICAgIC8vIHMxICsgbm9uX3Jlc2lkdWUgKiBzNCxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZCggdGhpcy5GLmFkZChzMSwgczIpICwgczMgKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKHMwLCBzNCkpXTsgICAgICAgICAgICAgICAgICAgICAgLy8gczEgKyBzMiArIHMzIC0gczAgLSBzNFxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKGFbMF0pICYmIHRoaXMuRi5pc1plcm8oYVsxXSkgJiYgdGhpcy5GLmlzWmVybyhhWzJdKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuZXEoYVswXSwgYlswXSkgJiYgdGhpcy5GLmVxKGFbMV0sIGJbMV0pICYmIHRoaXMuRi5lcShhWzJdLCBiWzJdKTtcbiAgICB9XG5cbiAgICBhZmZpbmUoYSkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5hZmZpbmUoYVswXSksIHRoaXMuRi5hZmZpbmUoYVsxXSksIHRoaXMuRi5hZmZpbmUoYVsyXSldO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBmVXRpbHMubXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHBvdyhiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBmVXRpbHMuZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBmVXRpbHMuZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEpIHtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGFbMF0pfSAsICR7dGhpcy5GLnRvU3RyaW5nKGFbMV0pfSwgJHt0aGlzLkYudG9TdHJpbmcoYVsyXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzFdLCBhWzFdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMl0sIGJbMl0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3QoYSwgYikgfHwgdGhpcy5lcShhLCBiKTtcbiAgICB9XG5cbiAgICBsdChhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nZXEoYSxiKTtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ3QoYSxiKTtcbiAgICB9XG5cbiAgICBuZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXEoYSxiKTtcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLnJhbmRvbSgpLCB0aGlzLkYucmFuZG9tKCksIHRoaXMuRi5yYW5kb20oKV07XG4gICAgfVxuXG5cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgqMiwgZVsyXSk7XG4gICAgfVxuXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIGVbMl0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgqMiwgZVsyXSk7XG4gICAgfVxuXG5cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvLCBlWzJdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMF0pO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5pbXBvcnQgKiBhcyBmVXRpbHMgZnJvbSBcIi4vZnV0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5cblxuZnVuY3Rpb24gaXNHcmVhdGVzdChGLCBhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgZm9yIChsZXQgaT1hLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRi5GLmlzWmVybyhhW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0dyZWF0ZXN0KEYuRiwgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmEgPSBGLm5lZyhhKTtcbiAgICAgICAgcmV0dXJuIFNjYWxhci5ndChhLCBuYSk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVDIHtcblxuICAgIGNvbnN0cnVjdG9yKEYsIGcpIHtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy5nID0gZztcbiAgICAgICAgaWYgKHRoaXMuZy5sZW5ndGggPT0gMikgdGhpcy5nWzJdID0gdGhpcy5GLm9uZTtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYub25lLCB0aGlzLkYuemVyb107XG4gICAgfVxuXG4gICAgYWRkKHAxLCBwMikge1xuXG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG5cbiAgICAgICAgaWYgKHRoaXMuZXEocDEsIHRoaXMuemVybykpIHJldHVybiBwMjtcbiAgICAgICAgaWYgKHRoaXMuZXEocDIsIHRoaXMuemVybykpIHJldHVybiBwMTtcblxuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkoMyk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7ICAgICAvLyBVMSA9IFgxICAqIFoyWjJcbiAgICAgICAgY29uc3QgVTIgPSBGLm11bCggcDJbMF0gLCBaMVoxICk7ICAgICAvLyBVMiA9IFgyICAqIFoxWjFcblxuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IEYubXVsKCBwMVsyXSAsIFoxWjEpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IEYubXVsKCBwMlsyXSAsIFoyWjIpO1xuXG4gICAgICAgIGNvbnN0IFMxID0gRi5tdWwoIHAxWzFdICwgWjJfY3ViZWQpOyAgLy8gUzEgPSBZMSAqIFoyICogWjJaMlxuICAgICAgICBjb25zdCBTMiA9IEYubXVsKCBwMlsxXSAsIFoxX2N1YmVkKTsgIC8vIFMyID0gWTIgKiBaMSAqIFoxWjFcblxuICAgICAgICBpZiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvdWJsZShwMSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBIID0gRi5zdWIoIFUyICwgVTEgKTsgICAgICAgICAgICAgICAgICAgIC8vIEggPSBVMi1VMVxuXG4gICAgICAgIGNvbnN0IFMyX21pbnVzX1MxID0gRi5zdWIoIFMyICwgUzEgKTtcblxuICAgICAgICBjb25zdCBJID0gRi5zcXVhcmUoIEYuYWRkKEgsSCkgKTsgICAgICAgICAvLyBJID0gKDIgKiBIKV4yXG4gICAgICAgIGNvbnN0IEogPSBGLm11bCggSCAsIEkgKTsgICAgICAgICAgICAgICAgICAgICAgLy8gSiA9IEggKiBJXG5cbiAgICAgICAgY29uc3QgciA9IEYuYWRkKCBTMl9taW51c19TMSAsIFMyX21pbnVzX1MxICk7ICAvLyByID0gMiAqIChTMi1TMSlcbiAgICAgICAgY29uc3QgViA9IEYubXVsKCBVMSAsIEkgKTsgICAgICAgICAgICAgICAgICAgICAvLyBWID0gVTEgKiBJXG5cbiAgICAgICAgcmVzWzBdID1cbiAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgIEYuc3ViKCBGLnNxdWFyZShyKSAsIEogKSxcbiAgICAgICAgICAgICAgICBGLmFkZCggViAsIFYgKSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBYMyA9IHJeMiAtIEogLSAyICogVlxuXG4gICAgICAgIGNvbnN0IFMxX0ogPSBGLm11bCggUzEgLCBKICk7XG5cbiAgICAgICAgcmVzWzFdID1cbiAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgIEYubXVsKCByICwgRi5zdWIoVixyZXNbMF0pKSxcbiAgICAgICAgICAgICAgICBGLmFkZCggUzFfSixTMV9KICkpOyAgICAgICAgICAgICAgICAgICAvLyBZMyA9IHIgKiAoVi1YMyktMiBTMSBKXG5cbiAgICAgICAgcmVzWzJdID1cbiAgICAgICAgICAgIEYubXVsKFxuICAgICAgICAgICAgICAgIEgsXG4gICAgICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIEYuc3F1YXJlKCBGLmFkZChwMVsyXSxwMlsyXSkgKSxcbiAgICAgICAgICAgICAgICAgICAgRi5hZGQoIFoxWjEgLCBaMloyICkpKTsgICAgICAgICAgICAvLyBaMyA9ICgoWjErWjIpXjItWjFaMS1aMloyKSAqIEhcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIG5lZyhwKSB7XG4gICAgICAgIHJldHVybiBbcFswXSwgdGhpcy5GLm5lZyhwWzFdKSwgcFsyXV07XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsIHRoaXMubmVnKGIpKTtcbiAgICB9XG5cbiAgICBkb3VibGUocCkge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBpZiAodGhpcy5lcShwLCB0aGlzLnplcm8pKSByZXR1cm4gcDtcblxuICAgICAgICBjb25zdCBBID0gRi5zcXVhcmUoIHBbMF0gKTsgICAgICAgICAgICAgICAgICAgIC8vIEEgPSBYMV4yXG4gICAgICAgIGNvbnN0IEIgPSBGLnNxdWFyZSggcFsxXSApOyAgICAgICAgICAgICAgICAgICAgLy8gQiA9IFkxXjJcbiAgICAgICAgY29uc3QgQyA9IEYuc3F1YXJlKCBCICk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBDID0gQl4yXG5cbiAgICAgICAgbGV0IEQgPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5zcXVhcmUoIEYuYWRkKHBbMF0gLCBCICkpLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBBICwgQykpO1xuICAgICAgICBEID0gRi5hZGQoRCxEKTsgICAgICAgICAgICAgICAgICAgIC8vIEQgPSAyICogKChYMSArIEIpXjIgLSBBIC0gQylcblxuICAgICAgICBjb25zdCBFID0gRi5hZGQoIEYuYWRkKEEsQSksIEEpOyAgICAgICAgICAvLyBFID0gMyAqIEFcbiAgICAgICAgY29uc3QgRkYgPUYuc3F1YXJlKCBFICk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBGID0gRV4yXG5cbiAgICAgICAgcmVzWzBdID0gRi5zdWIoIEZGICwgRi5hZGQoRCxEKSApOyAgICAgICAgIC8vIFgzID0gRiAtIDIgRFxuXG4gICAgICAgIGxldCBlaWdodEMgPSBGLmFkZCggQyAsIEMgKTtcbiAgICAgICAgZWlnaHRDID0gRi5hZGQoIGVpZ2h0QyAsIGVpZ2h0QyApO1xuICAgICAgICBlaWdodEMgPSBGLmFkZCggZWlnaHRDICwgZWlnaHRDICk7XG5cbiAgICAgICAgcmVzWzFdID1cbiAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgIEYubXVsKFxuICAgICAgICAgICAgICAgICAgICBFLFxuICAgICAgICAgICAgICAgICAgICBGLnN1YiggRCwgcmVzWzBdICkpLFxuICAgICAgICAgICAgICAgIGVpZ2h0Qyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWTMgPSBFICogKEQgLSBYMykgLSA4ICogQ1xuXG4gICAgICAgIGNvbnN0IFkxWjEgPSBGLm11bCggcFsxXSAsIHBbMl0gKTtcbiAgICAgICAgcmVzWzJdID0gRi5hZGQoIFkxWjEgLCBZMVoxICk7ICAgICAgICAgICAgICAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBmVXRpbHMubXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBmVXRpbHMubXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGFmZmluZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfSBlbHNlIGlmIChGLmVxKHBbMl0sIEYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBaX2ludiA9IEYuaW52KHBbMl0pO1xuICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgY29uc3QgWjNfaW52ID0gRi5tdWwoWjJfaW52LCBaX2ludik7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcbiAgICAgICAgICAgIHJlc1swXSA9IEYubXVsKHBbMF0sWjJfaW52KTtcbiAgICAgICAgICAgIHJlc1sxXSA9IEYubXVsKHBbMV0sWjNfaW52KTtcbiAgICAgICAgICAgIHJlc1syXSA9IEYub25lO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlBZmZpbmUoYXJyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhY2NNdWwgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgrMSk7XG4gICAgICAgIGFjY011bFswXSA9IEYub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBhY2NNdWxbaV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY011bFtpKzFdID0gRi5tdWwoYWNjTXVsW2ldLCBhcnJba2V5c1tpXV1bMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWNjTXVsW2tleXMubGVuZ3RoXSA9IEYuaW52KGFjY011bFtrZXlzLmxlbmd0aF0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBrZXlzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChGLmVxKGFycltrZXlzW2ldXVsyXSwgRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IGFjY011bFtpKzFdO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXSA9IHRoaXMuemVybztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWl9pbnYgPSBGLm11bChhY2NNdWxbaV0sIGFjY011bFtpKzFdKTtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaV0gPSBGLm11bChhcnJba2V5c1tpXV1bMl0sIGFjY011bFtpKzFdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IFoyX2ludiA9IEYuc3F1YXJlKFpfaW52KTtcbiAgICAgICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVswXSA9IEYubXVsKGFycltrZXlzW2ldXVswXSxaMl9pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsxXSA9IEYubXVsKGFycltrZXlzW2ldXVsxXSxaM19pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsyXSA9IEYub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBlcShwMSwgcDIpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHAxWzJdLCB0aGlzLkYuemVybykpIHJldHVybiB0aGlzLkYuZXEocDJbMl0sIHRoaXMuRi56ZXJvKTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7XG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApO1xuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7XG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpO1xuXG4gICAgICAgIHJldHVybiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpO1xuICAgIH1cblxuICAgIGlzWmVybyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKHBbMl0pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGNwWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhjcFsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcbiAgICAgICAgfSB3aGlsZSAoKFBbMV0gPT0gbnVsbCl8fChGLmlzWmVyb1tQXSkpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBpc0dyZWF0ZXN0KEYsIFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG4gICAgICAgIFBbMl0gPSBGLm9uZTtcblxuICAgICAgICBpZiAodGhpcy5jb2ZhY3Rvcikge1xuICAgICAgICAgICAgUCA9IHRoaXMubXVsU2NhbGFyKFAsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgUCA9IHRoaXMuYWZmaW5lKFApO1xuXG4gICAgICAgIHJldHVybiBQO1xuXG4gICAgfVxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBjb25zdCBCdWZmViA9IG5ldyBVaW50OEFycmF5KGJ1ZmYsIG8sIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIEJ1ZmZWLmZpbGwoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRUpNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvKzIqdGhpcy5GLm44LCBwWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFSk0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyKTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgbywgRi5uOCk7XG4gICAgICAgIGlmICh2WzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBncmVhdGVzdCA9ICgodlswXSAmIDB4ODApICE9IDApO1xuICAgICAgICB2WzBdID0gdlswXSAmIDB4N0Y7XG4gICAgICAgIFBbMF0gPSBGLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0KSB2WzBdID0gdlswXSB8IDB4ODA7ICAvLyBzZXQgYmFjayBhZ2FpbiB0aGUgb2xkIHZhbHVlXG5cbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICBQWzFdID0gRi5zcXJ0KHgzYik7XG5cbiAgICAgICAgaWYgKFBbMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUG9pbnQhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCB0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIHYuZmlsbCgwKTtcbiAgICAgICAgICAgIHZbMF0gPSAweDQwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuXG4gICAgICAgIGlmIChpc0dyZWF0ZXN0KHRoaXMuRiwgcFsxXSkpIHtcbiAgICAgICAgICAgIHZbMF0gPSB2WzBdIHwgMHg4MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGlmIChidWZmWzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgbywgcCkge1xuICAgICAgICB0aGlzLnRvUnByQkUoYnVmZiwgbywgcCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBidWZmW29dID0gYnVmZltvXSB8IDB4NDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuXG5cbiIsIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUJpZ0ludHMobykge1xuICAgIGlmICgodHlwZW9mKG8pID09IFwiYmlnaW50XCIpIHx8IG8uZXEgIT09IHVuZGVmaW5lZCkgIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAoc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKCh0eXBlb2YobykgPT0gXCJzdHJpbmdcIikgJiYgKC9eWzAtOV0rJC8udGVzdChvKSApKSAge1xuICAgICAgICByZXR1cm4gQmlnSW50KG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAodW5zdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKG89PT1udWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gMG47XG4gICAgbGV0IGkgPSBidWZmLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgd2hpbGUgKGk+MCkge1xuICAgICAgICBpZiAoaSA+PSA0KSB7XG4gICAgICAgICAgICBpIC09IDQ7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpKSkgPDwgQmlnSW50KG9mZnNldCo4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICB9IGVsc2UgaWYgKGkgPj0gMikge1xuICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSkpIDw8IEJpZ0ludChvZmZzZXQqOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSkpIDw8IEJpZ0ludChvZmZzZXQqOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIGxldCBvID0gbGVuO1xuICAgIHdoaWxlIChvID4gMCkge1xuICAgICAgICBpZiAoby00ID49IDApIHtcbiAgICAgICAgICAgIG8gLT0gNDtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIDB4RkZGRkZGRkZuKSk7XG4gICAgICAgICAgICByID0gciA+PiAzMm47XG4gICAgICAgIH0gZWxzZSBpZiAoby0yID49IDApIHtcbiAgICAgICAgICAgIG8gLT0gMjtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQxNihvLCBOdW1iZXIociAmIDB4RkZGRm4pKTtcbiAgICAgICAgICAgIHIgPSByID4+IDE2bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG8gLT0gMTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgMHhGRm4pKTtcbiAgICAgICAgICAgIHIgPSByID4+IDhuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBsZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gMG47XG4gICAgbGV0IGkgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICB3aGlsZSAoaTxidWZmLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSArIDQgPD0gYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGksIHRydWUpKSA8PCBCaWdJbnQoIGkqOCk7XG4gICAgICAgICAgICBpICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDQgPD0gYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDE2KGksIHRydWUpKSA8PCBCaWdJbnQoIGkqOCk7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGksIHRydWUpKSA8PCBCaWdJbnQoIGkqOCk7XG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKFNjYWxhci5iaXRMZW5ndGgobikgLSAxKSAvIDgpICsxO1xuICAgICAgICBpZiAobGVuPT0wKSBsZW4gPSAxO1xuICAgIH1cbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSAwO1xuICAgIHdoaWxlIChvIDwgbGVuKSB7XG4gICAgICAgIGlmIChvKzQgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiAweEZGRkZGRkZGbiksIHRydWUgKTtcbiAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgIHIgPSByID4+IDMybjtcbiAgICAgICAgfSBlbHNlIGlmIChvKzIgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmLnNldFVpbnQxNihOdW1iZXIobywgciAmIDB4RkZGRm4pLCB0cnVlICk7XG4gICAgICAgICAgICBvICs9IDI7XG4gICAgICAgICAgICByID0gciA+PiAxNm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmLnNldFVpbnQ4KE51bWJlcihvLCByICYgMHhGRm4pLCB0cnVlICk7XG4gICAgICAgICAgICBvICs9IDE7XG4gICAgICAgICAgICByID0gciA+PiA4bjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgZG9lcyBub3QgZml0IGluIHRoaXMgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZjtcbn1cbiIsImltcG9ydCBiaWdJbnQgZnJvbSBcImJpZy1pbnRlZ2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAoKHR5cGVvZihvKSA9PSBcImJpZ2ludFwiKSB8fCBvLmVxICE9PSB1bmRlZmluZWQpICB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0cmluZ2lmeUJpZ0ludHMobykge1xuICAgIGlmICgodHlwZW9mKG8pID09IFwic3RyaW5nXCIpICYmICgvXlswLTldKyQvLnRlc3QobykgKSkgIHtcbiAgICAgICAgcmV0dXJuIGJpZ0ludChvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHVuc3RyaW5naWZ5QmlnSW50cyhvW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmVCdWZmMmludChidWZmKSB7XG4gICAgbGV0IHJlcyA9IGJpZ0ludC56ZXJvO1xuICAgIGZvciAobGV0IGk9MDsgaTxidWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSBiaWdJbnQoYnVmZltidWZmLmxlbmd0aCAtIGkgLSAxXSk7XG4gICAgICAgIHJlcyA9IHJlcy5hZGQobi5zaGlmdExlZnQoaSo4KSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBsZXQgbyA9bGVuLTE7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgd2hpbGUgKChyLmd0KGJpZ0ludC56ZXJvKSkmJihvPj0wKSkge1xuICAgICAgICBsZXQgYyA9IE51bWJlcihyLmFuZChiaWdJbnQoXCIyNTVcIikpKTtcbiAgICAgICAgYnVmZltvXSA9IGM7XG4gICAgICAgIG8tLTtcbiAgICAgICAgciA9IHIuc2hpZnRSaWdodCg4KTtcbiAgICB9XG4gICAgaWYgKCFyLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgZG9lcyBub3QgZml0IGluIHRoaXMgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbGVCdWZmMmludCAoYnVmZikge1xuICAgIGxldCByZXMgPSBiaWdJbnQuemVybztcbiAgICBmb3IgKGxldCBpPTA7IGk8YnVmZi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBuID0gYmlnSW50KGJ1ZmZbaV0pO1xuICAgICAgICByZXMgPSByZXMuYWRkKG4uc2hpZnRMZWZ0KGkqOCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgbGV0IG8gPTA7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgd2hpbGUgKChyLmd0KGJpZ0ludC56ZXJvKSkmJihvPGJ1ZmYubGVuZ3RoKSkge1xuICAgICAgICBsZXQgYyA9IE51bWJlcihyLmFuZChiaWdJbnQoMjU1KSkpO1xuICAgICAgICBidWZmW29dID0gYztcbiAgICAgICAgbysrO1xuICAgICAgICByID0gci5zaGlmdFJpZ2h0KDgpO1xuICAgIH1cbiAgICBpZiAoIXIuZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuIiwiaW1wb3J0ICogYXMgdXRpbHNfbmF0aXZlIGZyb20gXCIuL3V0aWxzX25hdGl2ZS5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbHNfYmlnaW50IGZyb20gXCIuL3V0aWxzX2JpZ2ludC5qc1wiO1xuXG5sZXQgdXRpbHMgPSB7fTtcblxuY29uc3Qgc3VwcG9ydHNOYXRpdmVCaWdJbnQgPSB0eXBlb2YgQmlnSW50ID09PSBcImZ1bmN0aW9uXCI7XG5pZiAoc3VwcG9ydHNOYXRpdmVCaWdJbnQpIHtcbiAgICBPYmplY3QuYXNzaWduKHV0aWxzLCB1dGlsc19uYXRpdmUpO1xufSBlbHNlIHtcbiAgICBPYmplY3QuYXNzaWduKHV0aWxzLCB1dGlsc19iaWdpbnQpO1xufVxuXG5cbmNvbnN0IF9yZXZUYWJsZSA9IFtdO1xuZm9yIChsZXQgaT0wOyBpPDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPTA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaT0wOyBpPGJpdHM7IGkrKykge1xuICAgICAgICByZXMgPDw9IDE7XG4gICAgICAgIHJlcyA9IHJlcyB8IChhICYxKTtcbiAgICAgICAgYSA+Pj0xO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG51dGlscy5iaXRSZXZlcnNlID0gZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhGRl0gPDwgMjQpXG4gICAgKSA+Pj4gKDMyLWJpdHMpO1xufTtcblxuXG51dGlscy5sb2cyID0gZnVuY3Rpb24gbG9nMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufTtcblxudXRpbHMuYnVmZlJldmVyc2VCaXRzID0gZnVuY3Rpb24gYnVmZlJldmVyc2VCaXRzKGJ1ZmYsIGVTaXplKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvZVNpemU7XG4gICAgY29uc3QgYml0cyA9IHV0aWxzLmxvZzIobik7XG4gICAgaWYgKG4gIT0gKDEgPDwgYml0cykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRlcnNcIik7XG4gICAgfVxuICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgY29uc3QgciA9IHV0aWxzLmJpdFJldmVyc2UoaSxiaXRzKTtcbiAgICAgICAgaWYgKGk+cikge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gYnVmZi5zbGljZShpKmVTaXplLCAoaSsxKSplU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldCggYnVmZi5zbGljZShyKmVTaXplLCAocisxKSplU2l6ZSksIGkqZVNpemUpO1xuICAgICAgICAgICAgYnVmZi5zZXQodG1wLCByKmVTaXplKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBsZXQge1xuICAgIGJpdFJldmVyc2UsXG4gICAgbG9nMixcbiAgICBidWZmUmV2ZXJzZUJpdHMsXG4gICAgc3RyaW5naWZ5QmlnSW50cyxcbiAgICB1bnN0cmluZ2lmeUJpZ0ludHMsXG4gICAgYmVCdWZmMmludCxcbiAgICBiZUludDJCdWZmLFxuICAgIGxlQnVmZjJpbnQsXG4gICAgbGVJbnQyQnVmZixcbn0gPSB1dGlscztcblxuIiwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydCh0bSwgZm5OYW1lLCBzSW4sIHNPdXQpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0KGJ1ZmZJbikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcbn1cbiIsIlxuXG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0VGhyZWFkUm5nIH0gZnJvbSBcIi4vcmFuZG9tLmpzXCI7XG5pbXBvcnQgYnVpbGRCYXRjaENvbnZlcnQgZnJvbSBcIi4vZW5naW5lX2JhdGNoY29udmVydC5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhc21GaWVsZDEge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgbjgsIHApIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLnAgPSBwO1xuICAgICAgICB0aGlzLm44ID0gbjg7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjFcIjtcbiAgICAgICAgdGhpcy5tID0gMTtcblxuICAgICAgICB0aGlzLmhhbGYgPSBTY2FsYXIuc2hpZnRSaWdodChwLCBTY2FsYXIub25lKTtcbiAgICAgICAgdGhpcy5iaXRMZW5ndGggPSBTY2FsYXIuYml0TGVuZ3RoKHApO1xuICAgICAgICB0aGlzLm1hc2sgPSBTY2FsYXIuc3ViKFNjYWxhci5zaGlmdExlZnQoU2NhbGFyLm9uZSwgdGhpcy5iaXRMZW5ndGgpLCBTY2FsYXIub25lKTtcblxuICAgICAgICB0aGlzLnBPcDEgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfemVyb1wiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLnplcm8gPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKG44LzgpO1xuICAgICAgICB0aGlzLm4zMiA9IE1hdGguZmxvb3IobjgvNCk7XG5cbiAgICAgICAgaWYodGhpcy5uNjQqOCAhPSB0aGlzLm44KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJuOCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFsZiA9IFNjYWxhci5zaGlmdFJpZ2h0KHRoaXMucCwgU2NhbGFyLm9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5leHAodGhpcy5ucXIsIHRoaXMuaGFsZik7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5hZGQodGhpcy5ucXIsIHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgbGV0IHQgPSBTY2FsYXIuc3ViKHRoaXMucCwgU2NhbGFyLm9uZSk7XG5cbiAgICAgICAgd2hpbGUgKCAhU2NhbGFyLmlzT2RkKHQpICkge1xuICAgICAgICAgICAgdGhpcy5zID0gdGhpcy5zICsgMTtcbiAgICAgICAgICAgIHQgPSBTY2FsYXIuc2hpZnRSaWdodCh0LCBTY2FsYXIub25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudyA9IFtdO1xuICAgICAgICB0aGlzLndbdGhpcy5zXSA9IHRoaXMuZXhwKHRoaXMubnFyLCB0KTtcblxuICAgICAgICBmb3IgKGxldCBpPSB0aGlzLnMtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLndbaV0gPSB0aGlzLnNxdWFyZSh0aGlzLndbaSsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXEodGhpcy53WzBdLCB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNhbGN1bGF0aW5nIHJvb3RzIG9mIHVuaXR5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXRjaFRvTW9udGdvbWVyeSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaEZyb21Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoRnJvbU1vbnRnb21lcnlcIiwgdGhpcy5uOCwgdGhpcy5uOCk7XG4gICAgfVxuXG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IFNjYWxhci50b0xFQnVmZihTY2FsYXIuZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGxldCByYSA9IFNjYWxhci5lKGEsIGIpO1xuICAgICAgICBpZiAoU2NhbGFyLmlzTmVnYXRpdmUocmEpKSB7XG4gICAgICAgICAgICByYSA9IFNjYWxhci5uZWcocmEpO1xuICAgICAgICAgICAgaWYgKFNjYWxhci5ndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gU2NhbGFyLm1vZChyYSwgdGhpcy5wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJhID0gU2NhbGFyLnN1Yih0aGlzLnAsIHJhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChTY2FsYXIuZ3QocmEsIHRoaXMucCkpIHtcbiAgICAgICAgICAgICAgICByYSA9IFNjYWxhci5tb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnVmZiA9IHV0aWxzLmxlSW50MkJ1ZmYocmEsIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkoYnVmZik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgYW4gPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICBjb25zdCBzID0gU2NhbGFyLmZyb21ScHJMRShhbiwgMCk7XG4gICAgICAgIHJldHVybiBTY2FsYXIudG9TdHJpbmcocywgcmFkaXgpO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGxldCB2O1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5uOCk7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHYgPSBTY2FsYXIuemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiA9IFNjYWxhci5hZGQodiwgIFNjYWxhci5zaGlmdExlZnQocm5nLm5leHRVNjQoKSwgNjQqaSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiA9IFNjYWxhci5iYW5kKHYsIHRoaXMubWFzayk7XG4gICAgICAgIH0gd2hpbGUgKFNjYWxhci5nZXEodiwgdGhpcy5wKSk7XG4gICAgICAgIFNjYWxhci50b1JwckxFKGJ1ZmYsIDAsIHYsIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYW4gPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShhbiwgMCk7XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG9mZnNldCwgYSkge1xuICAgICAgICBidWZmLnNldCh0aGlzLmZyb21Nb250Z29tZXJ5KGEpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkocmVzKTtcbiAgICB9XG5cblxufVxuXG5cbiIsImltcG9ydCB7IGdldFRocmVhZFJuZyB9IGZyb20gXCIuL3JhbmRvbS5qc1wiO1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhc21GaWVsZDIge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjJcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCoyO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMjtcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjI7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDJCb29sKFwiX2VxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IFNjYWxhci50b0xFQnVmZihTY2FsYXIuZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkpICYmIChhLmxlbmd0aCA9PSAyKSkge1xuICAgICAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZShhWzBdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmUoYVsxXSwgYik7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIEYyXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICByZXR1cm4gYFske3MxfSwgJHtzMn1dYDtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIHJldHVybiBbYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgY29uc3QgYjEgPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgYjIgPSB0aGlzLkYuZnJvbU9iamVjdChhWzFdKTtcbiAgICAgICAgYnVmZi5zZXQoYjEpO1xuICAgICAgICBidWZmLnNldChiMiwgdGhpcy5GLm44KTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG59XG5cbiIsIlxuXG5pbXBvcnQgeyBnZXRUaHJlYWRSbmcgfSBmcm9tIFwiLi9yYW5kb20uanNcIjtcbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYXNtRmllbGQzIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYzXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDM7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjM7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCozO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IFNjYWxhci50b0xFQnVmZihTY2FsYXIuZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkpICYmIChhLmxlbmd0aCA9PSAzKSkge1xuICAgICAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZShhWzBdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmUoYVsxXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5lKGFbMl0sIGIpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMyA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICByZXR1cm4gYFske3MxfSwgJHtzMn0sICR7czN9XWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzIsIGMzXTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgY29uc3QgYjEgPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgYjIgPSB0aGlzLkYuZnJvbU9iamVjdChhWzFdKTtcbiAgICAgICAgY29uc3QgYjMgPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgYnVmZi5zZXQoYjEpO1xuICAgICAgICBidWZmLnNldChiMiwgdGhpcy5GLm44KTtcbiAgICAgICAgYnVmZi5zZXQoYjMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG59XG5cblxuIiwiXG5cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcbmltcG9ydCBidWlsZEJhdGNoQ29udmVydCBmcm9tIFwiLi9lbmdpbmVfYmF0Y2hjb252ZXJ0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhc21DdXJ2ZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0bSwgcHJlZml4LCBGLCBwR2VuLCBwR2IsIGNvZmFjdG9yKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9BZmZpbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0aGlzLnRtLmdldEJ1ZmYocEdlbiwgRi5uOCozKTtcbiAgICAgICAgdGhpcy5nID0gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMub25lQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMik7XG4gICAgICAgIHRoaXMuZ0FmZmluZSA9IHRoaXMub25lQWZmaW5lO1xuICAgICAgICB0aGlzLmIgPSB0aGlzLnRtLmdldEJ1ZmYocEdiLCBGLm44KTtcblxuICAgICAgICBpZiAoY29mYWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuY29mYWN0b3IgPSBTY2FsYXIudG9MRUJ1ZmYoY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLmJhdGNoTEVNdG9DID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIsIEYubjgqMiwgRi5uOCk7XG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b1UgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoQ3RvTEVNID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIEYubjgsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hVdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoVG9KYWNvYmlhbiA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIiwgRi5uOCoyLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmJhdGNoVG9BZmZpbmUgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiLCBGLm44KjMsIEYubjgqMik7XG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AyYm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIG9wMUFmZmluZShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YkFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl9uZWdBZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2RvdWJsZUFmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihhLCBzKSB7XG4gICAgICAgIGlmICghKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgcyA9IFNjYWxhci50b0xFQnVmZihTY2FsYXIuZShzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBzKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW2ZuTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHMuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICB0aW1lc0ZyKGEsIHMpIHtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzRnJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0FmZmluZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl90b0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9KYWNvYmlhbihhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvSmFjb2JpYW5cIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1JwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfdG9BZmZpbmVcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCAhPSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0xFTXRvVVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBidWZmKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfVXRvTEVNXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICB9XG5cbiAgICB0b1JwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b0NcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgpO1xuICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0N0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AyLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9VbmNvbXByZXNzZWQoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIGEpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICB0b1JwckxFTShhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBhcnIuc2V0KGEsIG9mZnNldCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShhcnIsIG9mZnNldCkge1xuICAgICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcbiAgICAgICAgcmV0dXJuIGFyci5zbGljZShvZmZzZXQsIG9mZnNldCt0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgcmV0dXJuIGBbICR7eH0sICR7eX0sICR7en0gXWA7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9IF1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBsZXQgUCA9IFtdO1xuICAgICAgICBsZXQgZ3JlYXRlc3Q7XG4gICAgICAgIGxldCB4M2I7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIFBbMF0gPSBGLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGdyZWF0ZXN0ID0gcm5nLm5leHRCb29sKCk7XG4gICAgICAgICAgICB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIH0gd2hpbGUgKCFGLmlzU3F1YXJlKHgzYikpO1xuXG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBjb25zdCBzID0gRi5pc05lZ2F0aXZlKFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG5cbiAgICAgICAgbGV0IFBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBQYnVmZi5zZXQoUFswXSk7XG4gICAgICAgIFBidWZmLnNldChQWzFdLCB0aGlzLkYubjgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQYnVmZiA9IHRoaXMudGltZXNTY2FsYXIoUGJ1ZmYsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBidWZmO1xuICAgIH1cblxuXG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYub25lKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBsZXQgejtcbiAgICAgICAgaWYgKGEubGVuZ3RoPT0zKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVyb0FmZmluZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkYuZXEoeiwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICBidWZmLnNldCh6LCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGUoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KGEpO1xuICAgIH1cblxufVxuXG5cbiIsIi8qIGdsb2JhbCBXZWJBc3NlbWJseSAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aHJlYWQoc2VsZikge1xuICAgIGxldCBpbnN0YW5jZTtcbiAgICBsZXQgbWVtb3J5O1xuICAgIGxldCB1MzI7XG4gICAgbGV0IHU4O1xuXG4gICAgaWYgKHNlbGYpIHtcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICAgIGlmIChlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGFbMF0uY21kID09IFwiSU5JVFwiKSB7XG4gICAgICAgICAgICAgICAgaW5pdChkYXRhWzBdKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKGRhdGEucmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVswXS5jbWQgPT0gXCJURVJNSU5BVEVcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XG4gICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGNvZGUpO1xuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdH0pO1xuICAgICAgICB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICB3aGlsZSAodTMyWzBdICYgMykgdTMyWzBdKys7ICAvLyBSZXR1cm4gYWx3YXlzIGFsaWduZWQgcG9pbnRlcnNcbiAgICAgICAgY29uc3QgcmVzID0gdTMyWzBdO1xuICAgICAgICB1MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICB3aGlsZSAodTMyWzBdID4gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICBtZW1vcnkuZ3JvdygxMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHAgPSBhbGxvYyhidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHNldEJ1ZmZlcihwLCBidWZmZXIpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh1OC5idWZmZXIsIHU4LmJ5dGVPZmZzZXQgKyBwb2ludGVyLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEJ1ZmZlcihwb2ludGVyLCBidWZmZXIpIHtcbiAgICAgICAgdTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2sodGFzaykge1xuICAgICAgICBpZiAodGFza1swXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBpbml0KHRhc2tbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIHZhcnM6IFtdLFxuICAgICAgICAgICAgb3V0OiBbXVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvbGRBbGxvYyA9IHUzMlswXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRhc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGFza1tpXS5jbWQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1NFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jQnVmZmVyKHRhc2tbaV0uYnVmZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiQUxMT0NcIjpcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvYyh0YXNrW2ldLmxlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiU0VUXCI6XG4gICAgICAgICAgICAgICAgc2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJDQUxMXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGFza1tpXS5wYXJhbXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IHRhc2tbaV0ucGFyYW1zW2pdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHAudmFyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChjdHgudmFyc1twLnZhcl0gKyAocC5vZmZzZXQgfHwgMCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwLnZhbCAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwLnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3J0c1t0YXNrW2ldLmZuTmFtZV0oLi4ucGFyYW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJHRVRcIjpcbiAgICAgICAgICAgICAgICBjdHgub3V0W3Rhc2tbaV0ub3V0XSA9IGdldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0ubGVuKS5zbGljZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNtZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1MzJbMF0gPSBvbGRBbGxvYztcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gcnVuVGFzaztcbn1cbiIsIi8qIGdsb2JhbCB3aW5kb3csIG5hdmlnYXRvciwgQmxvYiwgV29ya2VyLCBXZWJBc3NlbWJseSAqL1xuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBNRU1fU0laRSA9IDQwOTY7ICAvLyBNZW1vcnkgc2l6ZSBpbiA2NEsgUGFrZXMgKDI1Nk1iKVxuXG5cbmltcG9ydCB0aHJlYWQgZnJvbSBcIi4vdGhyZWFkbWFuX3RocmVhZC5qc1wiO1xuaW1wb3J0IG9zIGZyb20gXCJvc1wiO1xuXG5pbXBvcnQgTm9kZVdvcmtlcl9tb2QgZnJvbSBcIndvcmtlcl90aHJlYWRzXCI7XG5jb25zdCBpbkJyb3dzZXIgPSAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIik7XG5sZXQgTm9kZVdvcmtlcjtcbmlmICghaW5Ccm93c2VyKSB7XG4gICAgTm9kZVdvcmtlciA9IE5vZGVXb3JrZXJfbW9kLldvcmtlcjtcbn1cblxuY2xhc3MgRGVmZXJyZWQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+IHtcbiAgICAgICAgICAgIHRoaXMucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzbGVlcChtcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpIHtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIHZhciBiaW5hcnlfc3RyaW5nID0gd2luZG93LmF0b2IoYmFzZTY0KTtcbiAgICAgICAgdmFyIGxlbiA9IGJpbmFyeV9zdHJpbmcubGVuZ3RoO1xuICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBieXRlc1tpXSA9IGJpbmFyeV9zdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGJhc2U2NCwgXCJiYXNlNjRcIikpO1xuICAgIH1cbn1cblxuXG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYnVpbGRUaHJlYWRNYW5hZ2VyKHdhc20sIHNpbmdsZVRocmVhZCkge1xuICAgIGNvbnN0IHRtID0gbmV3IFRocmVhZE1hbmFnZXIoKTtcblxuICAgIHRtLm1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6TUVNX1NJWkV9KTtcbiAgICB0bS51OCA9IG5ldyBVaW50OEFycmF5KHRtLm1lbW9yeS5idWZmZXIpO1xuICAgIHRtLnUzMiA9IG5ldyBVaW50MzJBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcblxuICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGJhc2U2NFRvQXJyYXlCdWZmZXIod2FzbS5jb2RlKSk7XG5cbiAgICB0bS5pbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBcIm1lbW9yeVwiOiB0bS5tZW1vcnlcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgdG0uc2luZ2xlVGhyZWFkID0gc2luZ2xlVGhyZWFkO1xuICAgIHRtLmluaXRhbFBGcmVlID0gdG0udTMyWzBdOyAgIC8vIFNhdmUgdGhlIFBvaW50ZXIgdG8gZnJlZSBzcGFjZS5cbiAgICB0bS5wcSA9IHdhc20ucHE7XG4gICAgdG0ucHIgPSB3YXNtLnByO1xuICAgIHRtLnBHMWdlbiA9IHdhc20ucEcxZ2VuO1xuICAgIHRtLnBHMXplcm8gPSB3YXNtLnBHMXplcm87XG4gICAgdG0ucEcyZ2VuID0gd2FzbS5wRzJnZW47XG4gICAgdG0ucEcyemVybyA9IHdhc20ucEcyemVybztcbiAgICB0bS5wT25lVCA9IHdhc20ucE9uZVQ7XG5cbiAgICAvLyAgICB0bS5wVG1wMCA9IHRtLmFsbG9jKGN1cnZlLkcyLkYubjgqMyk7XG4gICAgLy8gICAgdG0ucFRtcDEgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuXG5cbiAgICBpZiAoc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgIHRtLmNvZGUgPSBiYXNlNjRUb0FycmF5QnVmZmVyKHdhc20uY29kZSk7XG4gICAgICAgIHRtLnRhc2tNYW5hZ2VyID0gdGhyZWFkKCk7XG4gICAgICAgIGF3YWl0IHRtLnRhc2tNYW5hZ2VyKFt7XG4gICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgaW5pdDogTUVNX1NJWkUsXG4gICAgICAgICAgICBjb2RlOiB0bS5jb2RlLnNsaWNlKClcbiAgICAgICAgfV0pO1xuICAgICAgICB0bS5jb25jdXJyZW5jeSAgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRtLndvcmtlcnMgPSBbXTtcbiAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkcyA9IFtdO1xuICAgICAgICB0bS53b3JraW5nID0gW107XG5cbiAgICAgICAgbGV0IGNvbmN1cnJlbmN5O1xuXG4gICAgICAgIGlmICgodHlwZW9mKG5hdmlnYXRvcikgPT09IFwib2JqZWN0XCIpICYmIG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICBjb25jdXJyZW5jeSA9IG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uY3VycmVuY3kgPSBvcy5jcHVzKCkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ID0gY29uY3VycmVuY3k7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuXG4gICAgICAgICAgICBpZiAoaW5Ccm93c2VyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtcIihcIiwgdGhyZWFkLnRvU3RyaW5nKCksIFwiKShzZWxmKTtcIl0sIHsgdHlwZTogXCJ0ZXh0L2phdmFzY3JpcHRcIiB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIodXJsKTtcblxuICAgICAgICAgICAgICAgIHRtLndvcmtlcnNbaV0ub25tZXNzYWdlID0gZ2V0T25Nc2coaSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBOb2RlV29ya2VyKFwiKFwiICsgdGhyZWFkLnRvU3RyaW5nKCkrIFwiKShyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQpO1wiLCB7ZXZhbDogdHJ1ZX0pO1xuXG4gICAgICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5vbihcIm1lc3NhZ2VcIiwgZ2V0T25Nc2coaSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5pdFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS53b3JrZXJzLmxlbmd0aDtpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlDb2RlID0gYmFzZTY0VG9BcnJheUJ1ZmZlcih3YXNtLmNvZGUpLnNsaWNlKCk7XG4gICAgICAgICAgICBpbml0UHJvbWlzZXMucHVzaCh0bS5wb3N0QWN0aW9uKGksIFt7XG4gICAgICAgICAgICAgICAgY21kOiBcIklOSVRcIixcbiAgICAgICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgICAgICBjb2RlOiBjb3B5Q29kZVxuICAgICAgICAgICAgfV0sIFtjb3B5Q29kZS5idWZmZXJdKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChpbml0UHJvbWlzZXMpO1xuXG4gICAgfVxuICAgIHJldHVybiB0bTtcblxuICAgIGZ1bmN0aW9uIGdldE9uTXNnKGkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKChlKSYmKGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG0ud29ya2luZ1tpXT1mYWxzZTtcbiAgICAgICAgICAgIHRtLnBlbmRpbmdEZWZlcnJlZHNbaV0ucmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIHRtLnByb2Nlc3NXb3JrcygpO1xuICAgICAgICB9O1xuICAgIH1cblxufVxuXG5jbGFzcyBUaHJlYWRNYW5hZ2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLm9sZFBGcmVlID0gMDtcbiAgICB9XG5cbiAgICBzdGFydFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgIT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiU3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSB0aGlzLnUzMlswXTtcbiAgICB9XG5cbiAgICBlbmRTeW5jT3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm9sZFBGcmVlID09IDApIHRocm93IG5ldyBFcnJvcihcIk5vIHN5bmMgb3BlcmF0aW9uIGluIHByb2dyZXNzXCIpO1xuICAgICAgICB0aGlzLnUzMlswXSA9IHRoaXMub2xkUEZyZWU7XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHBvc3RBY3Rpb24od29ya2VySWQsIGUsIHRyYW5zZmVycywgX2RlZmVycmVkKSB7XG4gICAgICAgIGlmICh0aGlzLndvcmtpbmdbd29ya2VySWRdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3N0aW5nIGEgam9iIHQgYSB3b3JraW5nIHdvcmtlclwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndvcmtpbmdbd29ya2VySWRdID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdID0gX2RlZmVycmVkID8gX2RlZmVycmVkIDogbmV3IERlZmVycmVkKCk7XG4gICAgICAgIHRoaXMud29ya2Vyc1t3b3JrZXJJZF0ucG9zdE1lc3NhZ2UoZSwgdHJhbnNmZXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRGVmZXJyZWRzW3dvcmtlcklkXS5wcm9taXNlO1xuICAgIH1cblxuICAgIHByb2Nlc3NXb3JrcygpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyAoaTx0aGlzLndvcmtlcnMubGVuZ3RoKSYmKHRoaXMuYWN0aW9uUXVldWUubGVuZ3RoID4gMCk7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMud29ya2luZ1tpXSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmsgPSB0aGlzLmFjdGlvblF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0QWN0aW9uKGksIHdvcmsuZGF0YSwgd29yay50cmFuc2ZlcnMsIHdvcmsuZGVmZXJyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcXVldWVBY3Rpb24oYWN0aW9uRGF0YSwgdHJhbnNmZXJzKSB7XG4gICAgICAgIGNvbnN0IGQgPSBuZXcgRGVmZXJyZWQoKTtcblxuICAgICAgICBpZiAodGhpcy5zaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudGFza01hbmFnZXIoYWN0aW9uRGF0YSk7XG4gICAgICAgICAgICBkLnJlc29sdmUocmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uRGF0YSxcbiAgICAgICAgICAgICAgICB0cmFuc2ZlcnM6IHRyYW5zZmVycyxcbiAgICAgICAgICAgICAgICBkZWZlcnJlZDogZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NXb3JrcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkLnByb21pc2U7XG4gICAgfVxuXG4gICAgcmVzZXRNZW1vcnkoKSB7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5pbml0YWxQRnJlZTtcbiAgICB9XG5cbiAgICBhbGxvY0J1ZmYoYnVmZikge1xuICAgICAgICBjb25zdCBwb2ludGVyID0gdGhpcy5hbGxvYyhidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB0aGlzLnNldEJ1ZmYocG9pbnRlciwgYnVmZik7XG4gICAgICAgIHJldHVybiBwb2ludGVyO1xuICAgIH1cblxuICAgIGdldEJ1ZmYocG9pbnRlciwgbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnU4LnNsaWNlKHBvaW50ZXIsIHBvaW50ZXIrIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgc2V0QnVmZihwb2ludGVyLCBidWZmZXIpIHtcbiAgICAgICAgdGhpcy51OC5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSwgcG9pbnRlcik7XG4gICAgfVxuXG4gICAgYWxsb2MobGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnUzMlswXSAmIDMpIHRoaXMudTMyWzBdKys7ICAvLyBSZXR1cm4gYWx3YXlzIGFsaWduZWQgcG9pbnRlcnNcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy51MzJbMF07XG4gICAgICAgIHRoaXMudTMyWzBdICs9IGxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBhc3luYyB0ZXJtaW5hdGUoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLndvcmtlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMud29ya2Vyc1tpXS5wb3N0TWVzc2FnZShbe2NtZDogXCJURVJNSU5BVEVcIn1dKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzbGVlcCgyMDApO1xuICAgIH1cblxufVxuXG4iLCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuXG4gICAgY3VydmVbZ3JvdXBOYW1lXS5iYXRjaEFwcGx5S2V5ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgZmlyc3QsIGluYywgaW5UeXBlLCBvdXRUeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBvdXRUeXBlID0gb3V0VHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkFmZmluZTtcbiAgICAgICAgbGV0IHNHaW4sIHNHbWlkLCBzR291dDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICBzR2luID0gRy5uODtcbiAgICAgICAgICAgIHNHbWlkID0gRy5uODtcbiAgICAgICAgICAgIHNHb3V0ID0gRy5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXA6IFwiICsgZ3JvdXBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzR2luKTtcbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGluYyA9IEZyLmUoaW5jKTtcbiAgICAgICAgbGV0IHQgPSBGci5lKGZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJBTExPQ1NFVFwiLFxuICAgICAgICAgICAgICAgIHZhcjogMCxcbiAgICAgICAgICAgICAgICBidWZmOiBidWZmLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0dpbiwgaSpwb2ludHNQZXJDaHVuaypzR2luICsgbipzR2luKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IHR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipNYXRoLm1heChzR21pZCwgc0dvdXQpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBmbk5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOjN9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZm5BZmZpbmUpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWU6IGZuQWZmaW5lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qc0dvdXR9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgIHQgPSBGci5tdWwodCwgRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3Qgb3V0QnVmZiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICBsZXQgcD0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvdXRCdWZmLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRCdWZmO1xuICAgIH07XG59XG4iLCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkUGFpcmluZyhjdXJ2ZSkge1xuICAgIGNvbnN0IHRtID0gY3VydmUudG07XG4gICAgY3VydmUucGFpcmluZyA9IGZ1bmN0aW9uIHBhaXJpbmcoYSwgYikge1xuXG4gICAgICAgIHRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBBID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcxLnRvSmFjb2JpYW4oYSkpO1xuICAgICAgICBjb25zdCBwQiA9IHRtLmFsbG9jQnVmZihjdXJ2ZS5HMi50b0phY29iaWFuKGIpKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRtLmFsbG9jKGN1cnZlLkd0Lm44KTtcbiAgICAgICAgdG0uaW5zdGFuY2UuZXhwb3J0c1tjdXJ2ZS5uYW1lICsgXCJfcGFpcmluZ1wiXShwQSwgcEIsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IHRtLmdldEJ1ZmYocFJlcywgY3VydmUuR3QubjgpO1xuXG4gICAgICAgIHRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5wYWlyaW5nRXEgPSBhc3luYyBmdW5jdGlvbiBwYWlyaW5nRXEoKSB7XG4gICAgICAgIGxldCAgYnVmZkN0O1xuICAgICAgICBsZXQgbkVxcztcbiAgICAgICAgaWYgKChhcmd1bWVudHMubGVuZ3RoICUgMikgPT0gMSkge1xuICAgICAgICAgICAgYnVmZkN0ID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV07XG4gICAgICAgICAgICBuRXFzID0gKGFyZ3VtZW50cy5sZW5ndGggLTEpIC8yO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZkN0ID0gY3VydmUuR3Qub25lO1xuICAgICAgICAgICAgbkVxcyA9IGFyZ3VtZW50cy5sZW5ndGggLzI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuRXFzOyBpKyspIHtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBnMUJ1ZmYgPSBjdXJ2ZS5HMS50b0phY29iaWFuKGFyZ3VtZW50c1tpKjJdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogZzFCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjogY3VydmUucHJlUFNpemV9KTtcblxuICAgICAgICAgICAgY29uc3QgZzJCdWZmID0gY3VydmUuRzIudG9KYWNvYmlhbihhcmd1bWVudHNbaSoyICsxXSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGcyQnVmZn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAzLCBsZW46IGN1cnZlLnByZVFTaXplfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogNCwgbGVuOiBjdXJ2ZS5HdC5uOH0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogY3VydmUubmFtZSArIFwiX3ByZXBhcmVHMVwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogY3VydmUubmFtZSArIFwiX3ByZXBhcmVHMlwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogY3VydmUubmFtZSArIFwiX21pbGxlckxvb3BcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICAgICAge3ZhcjogNH1cbiAgICAgICAgICAgIF19KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRtLmFsbG9jKGN1cnZlLkd0Lm44KTtcbiAgICAgICAgdG0uaW5zdGFuY2UuZXhwb3J0cy5mdG1fb25lKHBSZXMpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBNUiA9IHRtLmFsbG9jQnVmZihyZXN1bHRbaV1bMF0pO1xuICAgICAgICAgICAgdG0uaW5zdGFuY2UuZXhwb3J0cy5mdG1fbXVsKHBSZXMsIHBNUiwgcFJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdG0uaW5zdGFuY2UuZXhwb3J0c1tjdXJ2ZS5uYW1lICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiXShwUmVzLCBwUmVzKTtcblxuICAgICAgICBjb25zdCBwQ3QgPSB0bS5hbGxvY0J1ZmYoYnVmZkN0KTtcblxuICAgICAgICBjb25zdCByID0gISF0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9lcShwUmVzLCBwQ3QpO1xuXG4gICAgICAgIHRtLmVuZFN5bmNPcCgpO1xuXG4gICAgICAgIHJldHVybiByO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5wcmVwYXJlRzEgPSBmdW5jdGlvbihwKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFAgPSB0aGlzLnRtLmFsbG9jQnVmZihwKTtcbiAgICAgICAgY29uc3QgcFByZXBQID0gdGhpcy50bS5hbGxvYyh0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX3ByZXBhcmVHMVwiXShwUCwgcFByZXBQKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBQcmVwUCwgdGhpcy5wcmVQU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMiA9IGZ1bmN0aW9uKHEpIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUSA9IHRoaXMudG0uYWxsb2NCdWZmKHEpO1xuICAgICAgICBjb25zdCBwUHJlcFEgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcyXCJdKHBRLCBwUHJlcFEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBRLCB0aGlzLnByZVFTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUubWlsbGVyTG9vcCA9IGZ1bmN0aW9uKHByZVAsIHByZVEpIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUHJlUCA9IHRoaXMudG0uYWxsb2NCdWZmKHByZVApO1xuICAgICAgICBjb25zdCBwUHJlUSA9IHRoaXMudG0uYWxsb2NCdWZmKHByZVEpO1xuICAgICAgICBjb25zdCBwUmVzID0gdGhpcy50bS5hbGxvYyh0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX21pbGxlckxvb3BcIl0ocFByZVAsIHBQcmVRLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5maW5hbEV4cG9uZW50aWF0aW9uID0gZnVuY3Rpb24oYSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBBID0gdGhpcy50bS5hbGxvY0J1ZmYoYSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiXShwQSwgcFJlcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUmVzLCB0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG59XG4iLCJpbXBvcnQgeyBsb2cyIH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuY29uc3QgcFRTaXplcyA9IFtcbiAgICAxICwgIDEsICAxLCAgMSwgICAgMiwgIDMsICA0LCAgNSxcbiAgICA2ICwgIDcsICA3LCAgOCwgICAgOSwgMTAsIDExLCAxMixcbiAgICAxMywgMTMsIDE0LCAxNSwgICAxNiwgMTYsIDE3LCAxNyxcbiAgICAxNywgMTcsIDE3LCAxNywgICAxNywgMTcsIDE3LCAxN1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgYXN5bmMgZnVuY3Rpb24gX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSkge1xuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0dJbjtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cEFmZmluZV9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fbXVsdGlleHBfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG4gICAgICAgIGNvbnN0IHNTY2FsYXIgPSBNYXRoLmZsb29yKGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGggLyBuUG9pbnRzKTtcbiAgICAgICAgaWYoIHNTY2FsYXIgKiBuUG9pbnRzICE9IGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjYWxhciBzaXplIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYml0Q2h1bmtTaXplID0gcFRTaXplc1tsb2cyKG5Qb2ludHMpXTtcbiAgICAgICAgY29uc3QgbkNodW5rcyA9IE1hdGguZmxvb3IoKHNTY2FsYXIqOCAtIDEpIC8gYml0Q2h1bmtTaXplKSArMTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZCYXNlc30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJ1ZmZTY2FsYXJzfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBHLkYubjgqM30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzU2NhbGFyfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogblBvaW50c30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IGkqYml0Q2h1bmtTaXplfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogTWF0aC5taW4oc1NjYWxhcio4IC0gaSpiaXRDaHVua1NpemUsIGJpdENodW5rU2l6ZSl9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IEcuRi5uOCozfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICBHLnRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IHJlcyA9IEcuemVybztcbiAgICAgICAgZm9yIChsZXQgaT1yZXN1bHQubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCFHLmlzWmVybyhyZXMpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGJpdENodW5rU2l6ZTsgaisrKSByZXMgPSBHLmRvdWJsZShyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzID0gRy5hZGQocmVzLCByZXN1bHRbaV1bMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBHLm11bHRpRXhwID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycykge1xuICAgICAgICByZXR1cm4gYXdhaXQgX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIFwiamFjb2JpYW5cIik7XG4gICAgfTtcbiAgICBHLm11bHRpRXhwQWZmaW5lID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycykge1xuICAgICAgICByZXR1cm4gYXdhaXQgX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIFwiYWZmaW5lXCIpO1xuICAgIH07XG59XG4iLCJpbXBvcnQge2xvZzIsIGJ1ZmZSZXZlcnNlQml0c30gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRGRlQoY3VydmUsIGdyb3VwTmFtZSkge1xuICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgdG0gPSBHLnRtO1xuICAgIGFzeW5jIGZ1bmN0aW9uIF9mZnQoYnVmZiwgaW52ZXJzZSwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIpIHtcblxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgb3V0VHlwZSA9IG91dFR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgY29uc3QgTUFYX0JJVFNfVEhSRUFEID0gMTI7XG5cbiAgICAgICAgbGV0IHNJbiwgc01pZCwgc091dCwgZm5JbjJNaWQsIGZuTWlkMk91dCwgZm5OYW1lLCBmbkZGVE1peCwgZm5GRlRKb2luLCBmbkZGVEZpbmFsO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcxbV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2lmZnRcIjtcbiAgICAgICAgICAgICAgICBmbkZGVEZpbmFsID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzFtX2ZmdE1peFwiO1xuXG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2lmZnRcIjtcbiAgICAgICAgICAgICAgICBmbkZGVEZpbmFsID0gXCJnMm1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBHLm44O1xuICAgICAgICAgICAgc01pZCA9IEcubjg7XG4gICAgICAgICAgICBzT3V0ID0gRy5uODtcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJmcm1faWZmdFwiO1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImZybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImZybV9mZnRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZuRkZUTWl4ID0gXCJmcm1fZmZ0TWl4XCI7XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImZybV9mZnRKb2luXCI7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCByZXR1cm5BcnJheSA9IGZhbHNlO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmKSkge1xuICAgICAgICAgICAgYnVmZiA9IGN1cnZlLmFycmF5MmJ1ZmZlcihidWZmLCBzSW4pO1xuICAgICAgICAgICAgcmV0dXJuQXJyYXkgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNJbjtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgaWYgICgoMSA8PCBiaXRzKSAhPSBuUG9pbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZnQgbXVzdCBiZSBtdWx0aXBsZSBvZiAyXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnY7XG4gICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICBpbnYgPSBGci5pbnYoRnIuZShuUG9pbnRzKSk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChuUG9pbnRzIDw9ICgxIDw8IE1BWF9CSVRTX1RIUkVBRCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMCwgbGVuOiBzTWlkKm5Qb2ludHN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZ9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBuUG9pbnRzfSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk5hbWUsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG5Qb2ludHN9XX0pO1xuICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogblBvaW50c30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHNPdXQqblBvaW50c30pO1xuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0bS5xdWV1ZUFjdGlvbih0YXNrKTtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSByZXNbMF07XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGJ1ZmZSZXZlcnNlQml0cyhidWZmLCBzSW4pO1xuXG4gICAgICAgICAgICBsZXQgY2h1bmtzO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzSW5DaHVuayA9IDEgPDwgTUFYX0JJVFNfVEhSRUFEO1xuICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gcG9pbnRzSW5DaHVuayAqIHNJbjtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmYuc2xpY2UoIChwb2ludHNJbkNodW5rICogaSkqc0luLCAocG9pbnRzSW5DaHVuayAqIChpKzEpKSpzSW4pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZDaHVua30pO1xuICAgICAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PU1BWF9CSVRTX1RIUkVBRDtqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDowLCB2YXI6IDAsIGxlbjogc01pZCpwb2ludHNJbkNodW5rfSk7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYGZmdDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2h1bmtzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykgY2h1bmtzW2ldID0gY2h1bmtzW2ldWzBdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gTUFYX0JJVFNfVEhSRUFEKzE7ICAgaTw9Yml0czsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBmZnQgam9pbiAke2l9LyR7Yml0c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBGci5leHAoIEZyLndbaV0sIGsqcG9pbnRzSW5DaHVuayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNodW5rc1tvMV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbkZGVEZpbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogNCwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogNH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5NaWQyT3V0LCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzSW5DaHVuaypzT3V0fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzSW5DaHVuaypzTWlkfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzFdID0gcmVzQ2h1bmtbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzICogc091dCk7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICAgICAgbGV0IHA9IHNPdXQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT1uQ2h1bmtzLTE7IGk+MDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldOyAgLy8gTGliZXJhdGUgbWVtXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgwLCAocG9pbnRzSW5DaHVuay0xKSpzT3V0KSwgcCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tuQ2h1bmtzLTFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcG9pbnRzSW5DaHVuaypzT3V0KmkpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnZlLmJ1ZmZlcjJhcnJheShidWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgRy5mZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlcikge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCBmYWxzZSwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIpO1xuICAgIH07XG5cbiAgICBHLmlmZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlcikge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCB0cnVlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlcik7XG4gICAgfTtcblxuICAgIEcuZmZ0TWl4ID0gYXN5bmMgZnVuY3Rpb24gZmZ0TWl4KGJ1ZmYpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5GRlRKb2luO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0TWl4XCI7XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0TWl4XCI7XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJmcm1fZmZ0TWl4XCI7XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImZybV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoIC8gc0cpO1xuICAgICAgICBjb25zdCBwb3dlciA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuXG4gICAgICAgIGlmIChuUG9pbnRzIDw9IG5DaHVua3MqMikgbkNodW5rcyA9IDE7XG5cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBuUG9pbnRzIC8gbkNodW5rcztcblxuICAgICAgICBjb25zdCBwb3dlckNodW5rID0gbG9nMihwb2ludHNQZXJDaHVuayk7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MTsgajw9cG93ZXJDaHVuazsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNQZXJDaHVua30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IGp9XG4gICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykgY2h1bmtzW2ldID0gcmVzdWx0W2ldWzBdO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHBvd2VyQ2h1bmsrMTsgaTw9cG93ZXI7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbkdyb3VwcyA9IDEgPDwgKHBvd2VyIC0gaSk7XG4gICAgICAgICAgICBjb25zdCBuQ2h1bmtzUGVyR3JvdXAgPSBuQ2h1bmtzIC8gbkdyb3VwcztcbiAgICAgICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBGci5leHAoIEZyLndbaV0sIGsqcG9pbnRzUGVyQ2h1bmspO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY2h1bmtzW28xXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGNodW5rc1tvMl19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRKb2luLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNQZXJDaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNDaHVuayA9IHJlcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzFdID0gcmVzQ2h1bmtbMF07XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMl0gPSByZXNDaHVua1sxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwKTtcbiAgICAgICAgICAgIHArPWNodW5rc1tpXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG5cbiAgICBHLmZmdEpvaW4gPSBhc3luYyBmdW5jdGlvbiBmZnRKb2luKGJ1ZmYxLCBidWZmMiwgZmlyc3QsIGluYykge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnVmZjEuYnl0ZUxlbmd0aCAhPSBidWZmMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IEZyLm11bChmaXJzdCwgRnIuZXhwKGluYywgaSpwb2ludHNQZXJDaHVuaykpO1xuICAgICAgICAgICAgY29uc3QgYjEgPSBidWZmMS5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBjb25zdCBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQyID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH07XG5cbiAgICBHLmZmdEZpbmFsID0gIGFzeW5jIGZ1bmN0aW9uIGZmdEZpbmFsKGJ1ZmYsIGZhY3Rvcikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBjb25zdCBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICBsZXQgZm5OYW1lLCBmblRvQWZmaW5lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoIC8gc0cpO1xuICAgICAgICBpZiAoblBvaW50cyAhPSAxIDw8IGxvZzIoblBvaW50cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50c1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gdG0uY29uY3VycmVuY3kpO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csIChpKnBvaW50c1BlckNodW5rK24pKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBmYWN0b3J9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuVG9BZmZpbmUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IG4qc0dvdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcbn1cbiIsImltcG9ydCBXYXNtRmllbGQxIGZyb20gXCIuL3dhc21fZmllbGQxLmpzXCI7XG5pbXBvcnQgV2FzbUZpZWxkMiBmcm9tIFwiLi93YXNtX2ZpZWxkMi5qc1wiO1xuaW1wb3J0IFdhc21GaWVsZDMgZnJvbSBcIi4vd2FzbV9maWVsZDMuanNcIjtcbmltcG9ydCBXYXNtQ3VydmUgZnJvbSBcIi4vd2FzbV9jdXJ2ZS5qc1wiO1xuaW1wb3J0IGJ1aWxkVGhyZWFkTWFuYWdlciBmcm9tIFwiLi90aHJlYWRtYW4uanNcIjtcbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcbmltcG9ydCBidWlsZEJhdGNoQXBwbHlLZXkgZnJvbSBcIi4vZW5naW5lX2FwcGx5a2V5LmpzXCI7XG5pbXBvcnQgYnVpbGRQYWlyaW5nIGZyb20gXCIuL2VuZ2luZV9wYWlyaW5nLmpzXCI7XG5pbXBvcnQgYnVpbGRNdWx0aUV4cCBmcm9tIFwiLi9lbmdpbmVfbXVsdGlleHAuanNcIjtcbmltcG9ydCBidWlsZEZGVCBmcm9tIFwiLi9lbmdpbmVfZmZ0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkRW5naW5lKHBhcmFtcykge1xuXG4gICAgY29uc3QgdG0gPSBhd2FpdCBidWlsZFRocmVhZE1hbmFnZXIocGFyYW1zLndhc20sIHBhcmFtcy5zaW5nbGVUaHJlYWQpO1xuXG5cbiAgICBjb25zdCBjdXJ2ZSA9IHt9O1xuXG4gICAgY3VydmUucSA9IFNjYWxhci5lKHBhcmFtcy53YXNtLnEpO1xuICAgIGN1cnZlLnIgPSBTY2FsYXIuZShwYXJhbXMud2FzbS5yKTtcbiAgICBjdXJ2ZS5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgY3VydmUudG0gPSB0bTtcbiAgICBjdXJ2ZS5wcmVQU2l6ZSA9IHBhcmFtcy53YXNtLnByZVBTaXplO1xuICAgIGN1cnZlLnByZVFTaXplID0gcGFyYW1zLndhc20ucHJlUVNpemU7XG4gICAgY3VydmUuRnIgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmcm1cIiwgcGFyYW1zLm44ciwgcGFyYW1zLnIpO1xuICAgIGN1cnZlLkYxID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZjFtXCIsIHBhcmFtcy5uOHEsIHBhcmFtcy5xKTtcbiAgICBjdXJ2ZS5GMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImYybVwiLCBjdXJ2ZS5GMSk7XG4gICAgY3VydmUuRzEgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcxbVwiLCBjdXJ2ZS5GMSwgcGFyYW1zLndhc20ucEcxZ2VuLCBwYXJhbXMud2FzbS5wRzFiLCBwYXJhbXMuY29mYWN0b3JHMSk7XG4gICAgY3VydmUuRzIgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcybVwiLCBjdXJ2ZS5GMiwgcGFyYW1zLndhc20ucEcyZ2VuLCBwYXJhbXMud2FzbS5wRzJiLCBwYXJhbXMuY29mYWN0b3JHMik7XG4gICAgY3VydmUuRjYgPSBuZXcgV2FzbUZpZWxkMyh0bSwgXCJmNm1cIiwgY3VydmUuRjIpO1xuICAgIGN1cnZlLkYxMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImZ0bVwiLCBjdXJ2ZS5GNik7XG5cbiAgICBjdXJ2ZS5HdCA9IGN1cnZlLkYxMjtcblxuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRNdWx0aUV4cChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZE11bHRpRXhwKGN1cnZlLCBcIkcyXCIpO1xuXG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZFBhaXJpbmcoY3VydmUpO1xuXG4gICAgY3VydmUuYXJyYXkyYnVmZmVyID0gZnVuY3Rpb24oYXJyLCBzRykge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cqYXJyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5idWZmZXIyYXJyYXkgPSBmdW5jdGlvbihidWZmICwgc0cpIHtcbiAgICAgICAgY29uc3Qgbj0gYnVmZi5sZW5ndGggLyBzRztcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkqc0csIGkqc0crc0cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuXG4iLCJpbXBvcnQgd2FzbWN1cnZlcyBmcm9tIFwid2FzbWN1cnZlc1wiO1xuaW1wb3J0IGJ1aWxkRW5naW5lIGZyb20gXCIuL2VuZ2luZS5qc1wiO1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5sZXQgY3VydmU7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQm4xMjgoKSB7XG5cbiAgICBpZiAoY3VydmUpIHJldHVybiBjdXJ2ZTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYm4xMjhcIixcbiAgICAgICAgd2FzbTogd2FzbWN1cnZlcy5ibjEyOF93YXNtLFxuICAgICAgICBxOiBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpLFxuICAgICAgICByOiBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpLFxuICAgICAgICBuOHE6IDMyLFxuICAgICAgICBuOHI6IDMyLFxuICAgICAgICBjb2ZhY3RvckcyOiBTY2FsYXIuZShcIjMwNjQ0ZTcyZTEzMWEwMjliODUwNDViNjgxODE1ODVlMDZjZWVjZGE1NzJhMjQ4OTM0NWYyMjk5YzBmOWZhOGRcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGN1cnZlID0gYXdhaXQgYnVpbGRFbmdpbmUocGFyYW1zKTtcbiAgICBjdXJ2ZS50ZXJtaW5hdGUgPSBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgICAgY3VydmUgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLnRtLnRlcm1pbmF0ZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbiIsImltcG9ydCB3YXNtY3VydmVzIGZyb20gXCJ3YXNtY3VydmVzXCI7XG5pbXBvcnQgYnVpbGRFbmdpbmUgZnJvbSBcIi4vZW5naW5lLmpzXCI7XG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5cbmxldCBjdXJ2ZTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYnVpbGRCbHMxMjM4MSgpIHtcblxuICAgIGlmIChjdXJ2ZSkgcmV0dXJuIGN1cnZlO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgbmFtZTogXCJibHMxMjM4MVwiLFxuICAgICAgICB3YXNtOiB3YXNtY3VydmVzLmJsczEyMzgxX3dhc20sXG4gICAgICAgIHE6IFNjYWxhci5lKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KSxcbiAgICAgICAgcjogU2NhbGFyLmUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KSxcbiAgICAgICAgbjhxOiA0OCxcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMTogU2NhbGFyLmUoXCIweDM5NmM4YzAwNTU1NWUxNTY4YzAwYWFhYjAwMDBhYWFiXCIsIDE2KSxcbiAgICAgICAgY29mYWN0b3JHMjogU2NhbGFyLmUoXCIweDVkNTQzYTk1NDE0ZTdmMTA5MWQ1MDc5Mjg3NmEyMDJjZDkxZGU0NTQ3MDg1YWJhYTY4YTIwNWIyZTVhN2RkZmE2MjhmMWNiNGQ5ZTgyZWYyMTUzN2UyOTNhNjY5MWFlMTYxNmVjNmU3ODZmMGM3MGNmMWMzOGUzMWM3MjM4ZTVcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGN1cnZlID0gYXdhaXQgYnVpbGRFbmdpbmUocGFyYW1zKTtcblxuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgICAgICBjdXJ2ZSA9IG51bGw7XG4gICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgfTtcbiAgICByZXR1cm4gY3VydmU7XG59XG5cbiIsIlxuaW1wb3J0ICogYXMgX1NjYWxhciAgZnJvbSBcIi4vc3JjL3NjYWxhci5qc1wiO1xuZXhwb3J0IGNvbnN0IFNjYWxhcj1fU2NhbGFyO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgUG9sRmllbGR9IGZyb20gXCIuL3NyYy9wb2xmaWVsZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEYxRmllbGR9IGZyb20gXCIuL3NyYy9mMWZpZWxkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgRjJGaWVsZH0gZnJvbSBcIi4vc3JjL2YyZmllbGQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGM0ZpZWxkfSBmcm9tIFwiLi9zcmMvZjNmaWVsZC5qc1wiO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgWnFGaWVsZH0gZnJvbSBcIi4vc3JjL2YxZmllbGQuanNcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIEVDfSBmcm9tIFwiLi9zcmMvZWMuanNcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIGJ1aWxkQm4xMjh9IGZyb20gXCIuL3NyYy9ibjEyOC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJ1aWxkQmxzMTIzODF9IGZyb20gXCIuL3NyYy9ibHMxMjM4MS5qc1wiO1xuXG5pbXBvcnQgKiBhcyBfdXRpbHMgZnJvbSBcIi4vc3JjL3V0aWxzLmpzXCI7XG5leHBvcnQgY29uc3QgdXRpbHMgPSBfdXRpbHM7XG5leHBvcnQge2RlZmF1bHQgYXMgQ2hhQ2hhfSBmcm9tIFwiLi9zcmMvY2hhY2hhLmpzXCI7XG5cbiIsIi8qIGdsb2JhbHMgV2ViQXNzZW1ibHkgKi9cbi8qXG5cbkNvcHlyaWdodCAyMDIwIDBLSU1TIGFzc29jaWF0aW9uLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuKi9cblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmNvbnN0IFNjYWxhciA9IHJlcXVpcmUoXCJmZmphdmFzY3JpcHRcIikuU2NhbGFyO1xuY29uc3QgRjFGaWVsZCA9IHJlcXVpcmUoXCJmZmphdmFzY3JpcHRcIikuRjFGaWVsZDtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkZXIoY29kZSwgb3B0aW9ucykge1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjMyNzY3fSk7XG4gICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG5cbiAgICBsZXQgd2M7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgfSxcbiAgICAgICAgcnVudGltZToge1xuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGNvZGUsIHBzdHIsIGEsYixjLGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZXJyU3RyO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09IDcpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyU3RyPXAyc3RyKHBzdHIpICsgXCIgXCIgKyB3Yy5nZXRGcihiKS50b1N0cmluZygpICsgXCIgIT0gXCIgKyB3Yy5nZXRGcihjKS50b1N0cmluZygpICsgXCIgXCIgK3Ayc3RyKGQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0cj1wMnN0cihwc3RyKSsgXCIgXCIgKyBhICsgXCIgXCIgKyBiICsgXCIgXCIgKyBjICsgXCIgXCIgKyBkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyU3RyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2c6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh3Yy5nZXRGcihhKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dHZXRTaWduYWw6IGZ1bmN0aW9uKHNpZ25hbCwgcFZhbCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0dldFNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ0dldFNpZ25hbChzaWduYWwsIHdjLmdldEZyKHBWYWwpICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ1NldFNpZ25hbDogZnVuY3Rpb24oc2lnbmFsLCBwVmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nU2V0U2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU2V0U2lnbmFsKHNpZ25hbCwgd2MuZ2V0RnIocFZhbCkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nU3RhcnRDb21wb25lbnQ6IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dTdGFydENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ1N0YXJ0Q29tcG9uZW50KGNJZHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dGaW5pc2hDb21wb25lbnQ6IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dGaW5pc2hDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dGaW5pc2hDb21wb25lbnQoY0lkeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzYW5pdHlDaGVjayA9XG4gICAgICAgIG9wdGlvbnMgJiZcbiAgICAgICAgKFxuICAgICAgICAgICAgb3B0aW9ucy5zYW5pdHlDaGVjayB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dHZXRTaWduYWwgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nU2V0U2lnbmFsIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ1N0YXJ0Q29tcG9uZW50IHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ0ZpbmlzaENvbXBvbmVudFxuICAgICAgICApO1xuXG4gICAgd2MgPSBuZXcgV2l0bmVzc0NhbGN1bGF0b3IobWVtb3J5LCBpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIHJldHVybiB3YztcblxuICAgIGZ1bmN0aW9uIHAyc3RyKHApIHtcbiAgICAgICAgY29uc3QgaTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcblxuICAgICAgICBjb25zdCBieXRlcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaThbcCtpXT4wOyBpKyspICBieXRlcy5wdXNoKGk4W3AraV0pO1xuXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzKTtcbiAgICB9XG59O1xuXG5jbGFzcyBXaXRuZXNzQ2FsY3VsYXRvciB7XG4gICAgY29uc3RydWN0b3IobWVtb3J5LCBpbnN0YW5jZSwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSBtZW1vcnk7XG4gICAgICAgIHRoaXMuaTMyID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIpO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy5uMzIgPSAodGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldEZyTGVuKCkgPj4gMikgLSAyO1xuICAgICAgICBjb25zdCBwUmF3UHJpbWUgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0UFJhd1ByaW1lKCk7XG5cbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KHRoaXMubjMyKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMi0xLWldID0gdGhpcy5pMzJbKHBSYXdQcmltZSA+PiAyKSArIGldO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmltZSA9IFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCk7XG5cbiAgICAgICAgdGhpcy5GciA9IG5ldyBGMUZpZWxkKHRoaXMucHJpbWUpO1xuXG4gICAgICAgIHRoaXMubWFzazMyID0gU2NhbGFyLmZyb21TdHJpbmcoXCJGRkZGRkZGRlwiLCAxNik7XG4gICAgICAgIHRoaXMuTlZhcnMgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0TlZhcnMoKTtcbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLkZyLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuRnIuZSggU2NhbGFyLnNoaWZ0TGVmdCgxICwgdGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SSW52ID0gdGhpcy5Gci5pbnYodGhpcy5SKTtcbiAgICAgICAgdGhpcy5zYW5pdHlDaGVjayA9IHNhbml0eUNoZWNrO1xuICAgIH1cblxuICAgIGFzeW5jIF9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5pbml0KCh0aGlzLnNhbml0eUNoZWNrIHx8IHNhbml0eUNoZWNrKSA/IDEgOiAwKTtcbiAgICAgICAgY29uc3QgcFNpZ09mZnNldCA9IHRoaXMuYWxsb2NJbnQoKTtcbiAgICAgICAgY29uc3QgcEZyID0gdGhpcy5hbGxvY0ZyKCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnB1dCk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGggPSB1dGlscy5mbnZIYXNoKGspO1xuICAgICAgICAgICAgY29uc3QgaE1TQiA9IHBhcnNlSW50KGguc2xpY2UoMCw4KSwgMTYpO1xuICAgICAgICAgICAgY29uc3QgaExTQiA9IHBhcnNlSW50KGguc2xpY2UoOCwxNiksIDE2KTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFNpZ25hbE9mZnNldDMyKHBTaWdPZmZzZXQsIDAsIGhNU0IsIGhMU0IpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaWduYWwgJHtrfSBpcyBub3QgYW4gaW5wdXQgb2YgdGhlIGNpcmN1aXQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzaWdPZmZzZXQgPSB0aGlzLmdldEludChwU2lnT2Zmc2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGZBcnIgPSB1dGlscy5mbGF0QXJyYXkoaW5wdXRba10pO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZyKHBGciwgZkFycltpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLnNldFNpZ25hbCgwLCAwLCBzaWdPZmZzZXQgKyBpLCBwRnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG4gICAgICAgIGNvbnN0IHcgPSBbXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8c2VsZi5OVmFyczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwV2l0bmVzcyA9IHNlbGYuaW5zdGFuY2UuZXhwb3J0cy5nZXRQV2l0bmVzcyhpKTtcbiAgICAgICAgICAgIHcucHVzaChzZWxmLmdldEZyKHBXaXRuZXNzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmkzMlswXSA9IG9sZDA7XG4gICAgICAgIHJldHVybiB3O1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IG9sZDAgPSBzZWxmLmkzMlswXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBjb25zdCBwV2l0bmVzc0J1ZmZlciA9IHNlbGYuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzQnVmZmVyKCk7XG5cbiAgICAgICAgc2VsZi5pMzJbMF0gPSBvbGQwO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBzZWxmLm1lbW9yeS5idWZmZXIuc2xpY2UocFdpdG5lc3NCdWZmZXIsIHBXaXRuZXNzQnVmZmVyICsgKHNlbGYuTlZhcnMgKiBzZWxmLm42NCAqIDgpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ1ZmYpO1xuICAgIH1cblxuICAgIGFsbG9jSW50KCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCs4O1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY0ZyKCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCt0aGlzLm4zMio0ICsgODtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZ2V0SW50KHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaTMyW3A+PjJdO1xuICAgIH1cblxuICAgIHNldEludChwLCB2KSB7XG4gICAgICAgIHRoaXMuaTMyW3A+PjJdID0gdjtcbiAgICB9XG5cbiAgICBnZXRGcihwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBpZHggPSAocD4+Mik7XG5cbiAgICAgICAgaWYgKHNlbGYuaTMyW2lkeCArIDFdICYgMHg4MDAwMDAwMCkge1xuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KHNlbGYubjMyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLm4zMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyW3NlbGYubjMyLTEtaV0gPSBzZWxmLmkzMltpZHgrMitpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHNlbGYuRnIuZShTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmkzMltpZHggKyAxXSAmIDB4NDAwMDAwMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbU1vbnRnb21lcnkocmVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGYuaTMyW2lkeF0gJiAweDgwMDAwMDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZSggc2VsZi5pMzJbaWR4XSAtIDB4MTAwMDAwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZShzZWxmLmkzMltpZHhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZyb21Nb250Z29tZXJ5KG4pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLm11bChzZWxmLlJJbnYsIG4pO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIHNldEZyKHAsIHYpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdiA9IHNlbGYuRnIuZSh2KTtcblxuICAgICAgICBjb25zdCBtaW5TaG9ydCA9IHNlbGYuRnIubmVnKHNlbGYuRnIuZShcIjgwMDAwMDAwXCIsIDE2KSk7XG4gICAgICAgIGNvbnN0IG1heFNob3J0ID0gc2VsZi5Gci5lKFwiN0ZGRkZGRkZcIiwgMTYpO1xuXG4gICAgICAgIGlmICggIChzZWxmLkZyLmdlcSh2LCBtaW5TaG9ydCkpXG4gICAgICAgICAgICAmJihzZWxmLkZyLmxlcSh2LCBtYXhTaG9ydCkpKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgYTtcbiAgICAgICAgICAgIGlmIChzZWxmLkZyLmdlcSh2LCBzZWxmLkZyLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYSA9IFNjYWxhci50b051bWJlcih2KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYSA9IFNjYWxhci50b051bWJlciggc2VsZi5Gci5zdWIodiwgbWluU2hvcnQpKTtcbiAgICAgICAgICAgICAgICBhID0gYSAtIDB4ODAwMDAwMDA7XG4gICAgICAgICAgICAgICAgYSA9IDB4MTAwMDAwMDAwICsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaTMyWyhwID4+IDIpXSA9IGE7XG4gICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDFdID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuaTMyWyhwID4+IDIpXSA9IDA7XG4gICAgICAgIHNlbGYuaTMyWyhwID4+IDIpICsgMV0gPSAweDgwMDAwMDAwO1xuICAgICAgICBjb25zdCBhcnIgPSBTY2FsYXIudG9BcnJheSh2LCAweDEwMDAwMDAwMCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLm4zMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBhcnIubGVuZ3RoLTEtaTtcblxuICAgICAgICAgICAgaWYgKCBpZHggPj0wKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSBhcnJbaWR4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuIiwibW9kdWxlLmV4cG9ydHMuV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyID0gcmVxdWlyZShcIi4vanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzXCIpO1xuIiwiaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgY2lyY29tUnVudGltZSBmcm9tIFwiY2lyY29tX3J1bnRpbWVcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5cbmNvbnN0IHsgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIH0gPSBjaXJjb21SdW50aW1lO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zQ2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZU5hbWUsIHd0bnNGaWxlTmFtZSwgb3B0aW9ucykge1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG4gICAgY29uc3Qgd2MgPSBhd2FpdCBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIod2FzbSk7XG4gICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXdG5zID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUod3Ruc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMik7XG5cbiAgICBhd2FpdCB3dG5zVXRpbHMud3JpdGVCaW4oZmRXdG5zLCB3LCB3Yy5wcmltZSk7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbn1cbiIsImltcG9ydCBncm90aDE2X3Byb3ZlIGZyb20gXCIuL2dyb3RoMTZfcHJvdmUuanNcIjtcbmltcG9ydCB3dG5zX2NhbGN1bGF0ZSBmcm9tIFwiLi93dG5zX2NhbGN1bGF0ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2RnVsbFByb3ZlKGlucHV0LCB3YXNtRmlsZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCB3dG5zPSB7XG4gICAgICAgIHR5cGU6IFwibWVtXCJcbiAgICB9O1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZSwgd3Rucyk7XG4gICAgcmV0dXJuIGF3YWl0IGdyb3RoMTZfcHJvdmUoemtleUZpbGVOYW1lLCB3dG5zLCBsb2dnZXIpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogSW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXBlcjogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxNi8yNjAucGRmICovXG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBjdXJ2ZXMgZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZWZXJpZnkodmtfdmVyaWZpZXIsIHB1YmxpY1NpZ25hbHMsIHByb29mLCBsb2dnZXIpIHtcbi8qXG4gICAgbGV0IGNwdWIgPSB2a192ZXJpZmllci5JQ1swXTtcbiAgICBmb3IgKGxldCBzPSAwOyBzPCB2a192ZXJpZmllci5uUHVibGljOyBzKyspIHtcbiAgICAgICAgY3B1YiAgPSBHMS5hZGQoIGNwdWIsIEcxLnRpbWVzU2NhbGFyKCB2a192ZXJpZmllci5JQ1tzKzFdLCBwdWJsaWNTaWduYWxzW3NdKSk7XG4gICAgfVxuKi9cblxuICAgIHZrX3ZlcmlmaWVyID0gdW5zdHJpbmdpZnlCaWdJbnRzKHZrX3ZlcmlmaWVyKTtcbiAgICBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhwcm9vZik7XG4gICAgcHVibGljU2lnbmFscyA9IHVuc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbU5hbWUodmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgSUMwID0gY3VydmUuRzEuZnJvbU9iamVjdCh2a192ZXJpZmllci5JQ1swXSk7XG4gICAgY29uc3QgSUMgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIgKiBwdWJsaWNTaWduYWxzLmxlbmd0aCk7XG4gICAgY29uc3QgdyA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkZyLm44ICogcHVibGljU2lnbmFscy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZlAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDW2krMV0pO1xuICAgICAgICBJQy5zZXQoYnVmZlAsIGkqY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUodywgY3VydmUuRnIubjgqaSwgcHVibGljU2lnbmFsc1tpXSwgY3VydmUuRnIubjgpO1xuICAgIH1cblxuICAgIGxldCBjcHViID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoSUMsIHcpO1xuICAgIGNwdWIgPSBjdXJ2ZS5HMS5hZGQoY3B1YiwgSUMwKTtcblxuICAgIGNvbnN0IHBpX2EgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2EpO1xuICAgIGNvbnN0IHBpX2IgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHByb29mLnBpX2IpO1xuICAgIGNvbnN0IHBpX2MgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2MpO1xuXG4gICAgY29uc3QgdmtfZ2FtbWFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZ2FtbWFfMik7XG4gICAgY29uc3QgdmtfZGVsdGFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZGVsdGFfMik7XG4gICAgY29uc3QgdmtfYWxwaGFfMSA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfYWxwaGFfMSk7XG4gICAgY29uc3QgdmtfYmV0YV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19iZXRhXzIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUucGFpcmluZ0VxKFxuICAgICAgICBjdXJ2ZS5HMS5uZWcocGlfYSkgLCBwaV9iLFxuICAgICAgICBjcHViICwgdmtfZ2FtbWFfMixcbiAgICAgICAgcGlfYyAsIHZrX2RlbHRhXzIsXG5cbiAgICAgICAgdmtfYWxwaGFfMSwgdmtfYmV0YV8yXG4gICAgKTtcblxuICAgIGlmICghIHJlcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIHByb29mXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIiwiXG5pbXBvcnQgYmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5cbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hUb0cyKGN1cnZlLCBoYXNoKSB7XG4gICAgY29uc3QgaGFzaFYgPSBuZXcgRGF0YVZpZXcoaGFzaC5idWZmZXIsIGhhc2guYnl0ZU9mZnNldCwgaGFzaC5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkW2ldID0gaGFzaFYuZ2V0VWludDMyKGkqNCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIGNvbnN0IGcyX3NwID0gY3VydmUuRzIuZnJvbVJuZyhybmcpO1xuXG4gICAgcmV0dXJuIGcyX3NwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RzJzcChjdXJ2ZSwgcGVyc2luYWxpemF0aW9uLCBjaGFsbGVuZ2UsIGcxcywgZzFzeCkge1xuXG4gICAgY29uc3QgaCA9IGJsYWtlMmIoNjQpO1xuICAgIGNvbnN0IGIxID0gbmV3IFVpbnQ4QXJyYXkoW3BlcnNpbmFsaXphdGlvbl0pO1xuICAgIGgudXBkYXRlKGIxKTtcbiAgICBoLnVwZGF0ZShjaGFsbGVuZ2UpO1xuICAgIGNvbnN0IGIzID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzKTtcbiAgICBoLnVwZGF0ZSggYjMpO1xuICAgIGNvbnN0IGI0ID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzeCk7XG4gICAgaC51cGRhdGUoIGI0KTtcbiAgICBjb25zdCBoYXNoID1oLmRpZ2VzdCgpO1xuXG4gICAgcmV0dXJuIGhhc2hUb0cyKGN1cnZlLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUHViS2V5KGssIGN1cnZlLCBwZXJzb25hbGl6YXRpb24sIGNoYWxsZW5nZUhhc2gsIHJuZyApIHtcbiAgICBrLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGsuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGsuZzFfcywgay5wcnZLZXkpKTtcbiAgICBrLmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoZ2V0RzJzcChjdXJ2ZSwgcGVyc29uYWxpemF0aW9uLCBjaGFsbGVuZ2VIYXNoLCBrLmcxX3MsIGsuZzFfc3gpKTtcbiAgICBrLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoay5nMl9zcCwgay5wcnZLZXkpKTtcbiAgICByZXR1cm4gaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBUYXVLZXkoY3VydmUsIGNoYWxsZW5nZUhhc2gsIHJuZykge1xuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG4gICAga2V5LnRhdS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAga2V5LmFscGhhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBrZXkuYmV0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS50YXUsIGN1cnZlLCAwLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYWxwaGEsIGN1cnZlLCAxLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYmV0YSwgY3VydmUsIDIsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgcmV0dXJuIGtleTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbHRhS2V5KGN1cnZlLCB0cmFuc2NyaXB0LCBybmcpIHtcbiAgICBjb25zdCBkZWx0YSA9IHt9O1xuICAgIGRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBkZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBkZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzU2NhbGFyKGRlbHRhLmcxX3MsIGRlbHRhLnBydktleSkpO1xuICAgIGRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIHRyYW5zY3JpcHQpO1xuICAgIGRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzU2NhbGFyKGRlbHRhLmcyX3NwLCBkZWx0YS5wcnZLZXkpKTtcbiAgICByZXR1cm4gZGVsdGE7XG59XG4iLCJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXIpIHtcbiAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGlmICghIGNlcmVtb255UG93ZXIpIGNlcmVtb255UG93ZXIgPSBwb3dlcjtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBIZWFkZXJTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGN1cnZlLkYxLm42NCo4KTtcblxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCk7XG4gICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgY3VydmUucSwgY3VydmUuRjEubjgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmYpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIocG93ZXIpOyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNlcmVtb255UG93ZXIpOyAgICAgICAgICAgICAgIC8vIHBvd2VyXG5cbiAgICBjb25zdCBoZWFkZXJTaXplID0gZmQucG9zIC0gcEhlYWRlclNpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChoZWFkZXJTaXplLCBwSGVhZGVyU2l6ZSk7XG5cbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUFRhdUhlYWRlcihmZCwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzFdKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBoZWFkZXJcIik7XG4gICAgaWYgKHNlY3Rpb25zWzFdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGhlYWRlclwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzFdWzBdLnA7XG4gICAgY29uc3QgbjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCk7XG4gICAgY29uc3QgcSA9IFNjYWxhci5mcm9tUnByTEUoYnVmZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbVEocSk7XG5cbiAgICBpZiAoY3VydmUuRjEubjY0KjggIT0gbjgpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IEludmFsaWQgc2l6ZVwiKTtcblxuICAgIGNvbnN0IHBvd2VyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY2VyZW1vbnlQb3dlciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgaWYgKGZkLnBvcy1zZWN0aW9uc1sxXVswXS5wICE9IHNlY3Rpb25zWzFdWzBdLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUFRhdSBoZWFkZXIgc2l6ZVwiKTtcblxuICAgIHJldHVybiB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfTtcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFB0YXVQdWJLZXkoZmQsIGN1cnZlLCBtb250Z29tZXJ5KSB7XG5cbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5GMS5uOCoyKjYgKyBjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgcmV0dXJuIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIDAsIGN1cnZlLCBtb250Z29tZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIG1vbnRnb21lcnkpIHtcblxuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG5cbiAgICBrZXkudGF1LmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcxX3N4ID0gcmVhZEcxKCk7XG4gICAga2V5LmFscGhhLmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkuYWxwaGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkuYmV0YS5nMV9zID0gcmVhZEcxKCk7XG4gICAga2V5LmJldGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcyX3NweCA9IHJlYWRHMigpO1xuICAgIGtleS5hbHBoYS5nMl9zcHggPSByZWFkRzIoKTtcbiAgICBrZXkuYmV0YS5nMl9zcHggPSByZWFkRzIoKTtcblxuICAgIHJldHVybiBrZXk7XG5cbiAgICBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGxldCBwO1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJMRU0oIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgbGV0IHA7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwckxFTSggYnVmZiwgcG9zICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZCggYnVmZiwgcG9zICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkcyLkYubjgqMjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIGtleSwgbW9udGdvbWVyeSkge1xuXG4gICAgd3JpdGVHMShrZXkudGF1LmcxX3MpO1xuICAgIHdyaXRlRzEoa2V5LnRhdS5nMV9zeCk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfc3gpO1xuICAgIHdyaXRlRzEoa2V5LmJldGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYmV0YS5nMV9zeCk7XG4gICAgd3JpdGVHMihrZXkudGF1LmcyX3NweCk7XG4gICAgd3JpdGVHMihrZXkuYWxwaGEuZzJfc3B4KTtcbiAgICB3cml0ZUcyKGtleS5iZXRhLmcyX3NweCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgaWYgKG1vbnRnb21lcnkpIHtcbiAgICAgICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCBwb3MsIHApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5GMS5uOCoyO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIocCkge1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkYyLm44KjI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBrZXksIG1vbnRnb21lcnkpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2ICsgY3VydmUuRjIubjgqMiozKTtcbiAgICB0b1B0YXVQdWJLZXlScHIoYnVmZiwgMCwgY3VydmUsIGtleSwgbW9udGdvbWVyeSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKSB7XG4gICAgY29uc3QgYyA9IHt9O1xuXG4gICAgYy50YXVHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMudGF1RzIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjLmFscGhhRzEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjLmJldGFHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMuYmV0YUcyID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgYy5rZXkgPSBhd2FpdCByZWFkUHRhdVB1YktleShmZCwgY3VydmUsIHRydWUpO1xuICAgIGMucGFydGlhbEhhc2ggPSBhd2FpdCBmZC5yZWFkKDIxNik7XG4gICAgYy5uZXh0Q2hhbGxlbmdlID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgYy50eXBlID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBjb25zdCBidWZmViAgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIqNitjdXJ2ZS5HMi5GLm44KjIqMyk7XG4gICAgdG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgYy5rZXksIGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goYy5wYXJ0aWFsSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZWKTtcbiAgICBjLnJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgIGlmIChidWZmVHlwZVswXTw9IGxhc3RUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIGluIHRoZSBjb250cmlidXRpb24gbXVzdCBiZSBzb3J0ZWRcIik7XG4gICAgICAgIGxhc3RUeXBlID0gYnVmZlR5cGVbMF07XG4gICAgICAgIGlmIChidWZmVHlwZVswXT09MSkgeyAgICAgLy8gTmFtZVxuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCByZWFkRFYoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBidWZmRXhwWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0zKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgcmVhZERWKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgcmVhZERWKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYztcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMSgpIHtcbiAgICAgICAgY29uc3QgcEJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcxLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMS5mcm9tUnByTEVNKCBwQnVmZiApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgY29uc3QgcEJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcyLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMi5mcm9tUnByTEVNKCBwQnVmZiApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWREVihuKSB7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKG4pO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucykge1xuICAgIGlmICghc2VjdGlvbnNbN10pICB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgKyBcIjogRmlsZSBoYXMgbm8gIGNvbnRyaWJ1dGlvbnNcIik7XG4gICAgaWYgKHNlY3Rpb25zWzddWzBdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGNvbnRyaWJ1dGlvbnMgc2VjdGlvblwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzddWzBdLnA7XG4gICAgY29uc3QgbkNvbnRyaWJ1dGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjb250cmlidXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5Db250cmlidXRpb25zOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKTtcbiAgICAgICAgYy5pZCA9IGkrMTtcbiAgICAgICAgY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cblxuICAgIGlmIChmZC5wb3Mtc2VjdGlvbnNbN11bMF0ucCAhPSBzZWN0aW9uc1s3XVswXS5zaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbnRyaWJ1dGlvbiBzZWN0aW9uIHNpemVcIik7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjb250cmlidXRpb24pIHtcblxuICAgIGNvbnN0IGJ1ZmZHMSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIpO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYyLm44KjIpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLnRhdUcxKTtcbiAgICBhd2FpdCB3cml0ZUcyKGNvbnRyaWJ1dGlvbi50YXVHMik7XG4gICAgYXdhaXQgd3JpdGVHMShjb250cmlidXRpb24uYWxwaGFHMSk7XG4gICAgYXdhaXQgd3JpdGVHMShjb250cmlidXRpb24uYmV0YUcxKTtcbiAgICBhd2FpdCB3cml0ZUcyKGNvbnRyaWJ1dGlvbi5iZXRhRzIpO1xuICAgIGF3YWl0IHdyaXRlUHRhdVB1YktleShmZCwgY3VydmUsIGNvbnRyaWJ1dGlvbi5rZXksIHRydWUpO1xuICAgIGF3YWl0IGZkLndyaXRlKGNvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCk7XG4gICAgYXdhaXQgZmQud3JpdGUoY29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29udHJpYnV0aW9uLnR5cGUgfHwgMCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoY29udHJpYnV0aW9uLm5hbWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMSk7ICAgICAgLy8gUGFyYW0gTmFtZVxuICAgICAgICBjb25zdCBuYW1lRGF0YSA9IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLmVuY29kZShjb250cmlidXRpb24ubmFtZS5zdWJzdHJpbmcoMCw2NCkpO1xuICAgICAgICBwYXJhbXMucHVzaChuYW1lRGF0YS5ieXRlTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5hbWVEYXRhLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2gobmFtZURhdGFbaV0pO1xuICAgIH1cbiAgICBpZiAoY29udHJpYnV0aW9uLnR5cGUgPT0gMSkge1xuICAgICAgICBwYXJhbXMucHVzaCgyKTsgICAgICAvLyBQYXJhbSBudW1JdGVyYXRpb25zRXhwXG4gICAgICAgIHBhcmFtcy5wdXNoKGNvbnRyaWJ1dGlvbi5udW1JdGVyYXRpb25zRXhwKTtcblxuICAgICAgICBwYXJhbXMucHVzaCgzKTsgICAgICAvLyBCZWFjb24gSGFzaFxuICAgICAgICBwYXJhbXMucHVzaChjb250cmlidXRpb24uYmVhY29uSGFzaC5ieXRlTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2goY29udHJpYnV0aW9uLmJlYWNvbkhhc2hbaV0pO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aD4wKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc0J1ZmYgPSBuZXcgVWludDhBcnJheShwYXJhbXMpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHBhcmFtc0J1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKHBhcmFtc0J1ZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZkcxLCAwLCBwKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcxKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcyKHApIHtcbiAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZkcyLCAwLCBwKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9ucyhmZCwgY3VydmUsIGNvbnRyaWJ1dGlvbnMpIHtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoNyk7IC8vIEhlYWRlciB0eXBlXG4gICAgY29uc3QgcENvbnRyaWJ1dGlvbnNTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IGNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjb250cmlidXRpb25zW2ldKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9uc1NpemUgPSBmZC5wb3MgLSBwQ29udHJpYnV0aW9uc1NpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChjb250cmlidXRpb25zU2l6ZSwgcENvbnRyaWJ1dGlvbnNTaXplKTtcbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGluZyBGaXJzdCBDaGFsbGVuZ2UgSGFzaFwiKTtcblxuICAgIGNvbnN0IGhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcblxuICAgIGNvbnN0IHZHMSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMik7XG4gICAgY29uc3QgdkcyID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZCh2RzEsIDAsIGN1cnZlLkcxLmcpO1xuICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKHZHMiwgMCwgY3VydmUuRzIuZyk7XG5cbiAgICBoYXNoZXIudXBkYXRlKEJsYWtlMmIoNjQpLmRpZ2VzdCgpKTtcblxuICAgIGxldCBuO1xuXG4gICAgbj0oMSA8PCBwb3dlcikqMiAtMTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiB0YXVHMVwiKTtcbiAgICBoYXNoQmxvY2sodkcxLCBuKTtcbiAgICBuPSAxIDw8IHBvd2VyO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IHRhdUcyXCIpO1xuICAgIGhhc2hCbG9jayh2RzIsIG4pO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IGFscGhhVGF1RzFcIik7XG4gICAgaGFzaEJsb2NrKHZHMSwgbik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRlIEluaXRpYWwgSGFzaDogYmV0YVRhdUcxXCIpO1xuICAgIGhhc2hCbG9jayh2RzEsIG4pO1xuICAgIGhhc2hlci51cGRhdGUodkcyKTtcblxuICAgIHJldHVybiBoYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBmdW5jdGlvbiBoYXNoQmxvY2soYnVmZiwgbikge1xuICAgICAgICBjb25zdCBibG9ja1NpemUgPSA1MDAwMDA7XG4gICAgICAgIGNvbnN0IG5CbG9ja3MgPSBNYXRoLmZsb29yKG4gLyBibG9ja1NpemUpO1xuICAgICAgICBjb25zdCByZW0gPSBuICUgYmxvY2tTaXplO1xuICAgICAgICBjb25zdCBiaWdCdWZmID0gbmV3IFVpbnQ4QXJyYXkoYmxvY2tTaXplICogYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGJsb2NrU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBiaWdCdWZmLnNldChidWZmLCBpKmJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5CbG9ja3M7IGkrKykge1xuICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShiaWdCdWZmKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkluaXRpYWwgaGFzaDogXCIgK2kqYmxvY2tTaXplKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVtOyBpKyspIHtcbiAgICAgICAgICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGtleUZyb21CZWFjb24oY3VydmUsIGNoYWxsZW5nZUhhc2gsIGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApIHtcblxuICAgIGNvbnN0IHJuZyA9IG1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyhiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKTtcblxuICAgIGNvbnN0IGtleSA9IGtleVBhaXIuY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuICAgIHJldHVybiBrZXk7XG59XG5cbiIsIi8qXG5IZWFkZXIoMSlcbiAgICBuOFxuICAgIHByaW1lXG4gICAgcG93ZXJcbnRhdUcxKDIpXG4gICAgeygxPDxwb3dlcikqMi0xfSBbXG4gICAgICAgIEcxLCB0YXUqRzEsIHRhdV4yICogRzEsIC4uLi5cbiAgICBdXG50YXVHMigzKVxuICAgIHsxPDxwb3dlcn1bXG4gICAgICAgIEcyLCB0YXUqRzIsIHRhdV4yICogRzIsIC4uLlxuICAgIF1cbmFscGhhVGF1RzEoNClcbiAgICB7MTw8cG93ZXJ9W1xuICAgICAgICBhbHBoYSpHMSwgYWxwaGEqdGF1KkcxLCBhbHBoYSp0YXVeMipHMSwuLi4uXG4gICAgXVxuYmV0YVRhdUcxKDUpXG4gICAgezE8PHBvd2VyfSBbXVxuICAgICAgICBiZXRhKkcxLCBiZXRhKnRhdSpHMSwgYmV0YSp0YXVeMipHMSwgLi4uLlxuICAgIF1cbmJldGFHMig2KVxuICAgIHsxfVtcbiAgICAgICAgYmV0YSpHMlxuICAgIF1cbmNvbnRyaWJ1dGlvbnMoNylcbiAgICBOQ29udHJpYnV0aW9uc1xuICAgIHtOQ29udHJpYnV0aW9uc31bXG4gICAgICAgIHRhdSpHMVxuICAgICAgICB0YXUqRzJcbiAgICAgICAgYWxwaGEqRzFcbiAgICAgICAgYmV0YSpHMVxuICAgICAgICBiZXRhKkcyXG4gICAgICAgIHB1YktleVxuICAgICAgICAgICAgdGF1X2cxc1xuICAgICAgICAgICAgdGF1X2cxc3hcbiAgICAgICAgICAgIHRhdV9nMnNweFxuICAgICAgICAgICAgYWxwaGFfZzFzXG4gICAgICAgICAgICBhbHBoYV9nMXN4XG4gICAgICAgICAgICBhbHBoYV9nMXNweFxuICAgICAgICAgICAgYmV0YV9nMXNcbiAgICAgICAgICAgIGJldGFfZzFzeFxuICAgICAgICAgICAgYmV0YV9nMXNweFxuICAgICAgICBwYXJ0aWFsSGFzaCAoMjE2IGJ5dGVzKSBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9ibGFrZTJiLXdhc20vYmxvYi8yM2JlZTA2OTQ1ODA2MzA5OTc3YWY4MDJiYzM3NDcyNzU0MjYxN2M3L2JsYWtlMmIud2F0I0w5XG4gICAgICAgIGhhc2hOZXdDaGFsbGVuZ2VcbiAgICBdXG4gKi9cblxuaW1wb3J0ICogYXMgcHRhdVV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbmV3QWNjdW11bGF0b3IoY3VydmUsIHBvd2VyLCBmaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInB0YXVcIiwgMSwgNyk7XG5cbiAgICBhd2FpdCBwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIDApO1xuXG4gICAgY29uc3QgYnVmZkcxID0gY3VydmUuRzEub25lQWZmaW5lO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IGN1cnZlLkcyLm9uZUFmZmluZTtcblxuICAgIC8vIFdyaXRlIHRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IG5UYXVHMSA9ICgxIDw8IHBvd2VyKSAqIDIgLTE7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIuaW5mbyhcInRhdUcxOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIHRhdUcyXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDMpO1xuICAgIGNvbnN0IG5UYXVHMiA9ICgxIDw8IHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5UYXVHMjsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMik7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKChpJTEwMDAwMCkgPT0gMCkmJmkpIGxvZ2dlci5sb2coXCJ0YXVHMjogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBhbHBoYVRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDQpO1xuICAgIGNvbnN0IG5BbGZhVGF1RzEgPSAoMSA8PCBwb3dlcik7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuQWxmYVRhdUcxOyBpKyspIHtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcxKTtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoKGklMTAwMDAwKSA9PSAwKSYmaSkgbG9nZ2VyLmxvZyhcImFscGhhVGF1RzE6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgYmV0YVRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDUpO1xuICAgIGNvbnN0IG5CZXRhVGF1RzEgPSAoMSA8PCBwb3dlcik7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuQmV0YVRhdUcxOyBpKyspIHtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcxKTtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoKGklMTAwMDAwKSA9PSAwKSYmaSkgbG9nZ2VyLmxvZyhcImJldGFUYXVHMTogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBiZXRhRzJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNik7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIENvbnRyaWJ1dGlvbnNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMigwKTsgLy8gMCBDb250cmlidXRpb25zXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgY29uc3QgZmlyc3RDaGFsbGVuZ2VIYXNoID0gcHRhdVV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIsIGxvZ2dlcik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcobWlzYy5mb3JtYXRIYXNoKEJsYWtlMmIoNjQpLmRpZ2VzdCgpLCBcIkJsYW5rIENvbnRyaWJ1dGlvbiBIYXNoOlwiKSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goZmlyc3RDaGFsbGVuZ2VIYXNoLCBcIkZpcnN0IENvbnRyaWJ1dGlvbiBIYXNoOlwiKSk7XG5cbiAgICByZXR1cm4gZmlyc3RDaGFsbGVuZ2VIYXNoO1xuXG59XG4iLCIvLyBGb3JtYXQgb2YgdGhlIG91dHB1XG4vLyAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0Qnl0ZXNcbi8vICAgICAyXk4gKiAyIC0xICBUYXVHMSBwb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAyXk4gIFRhdUcyIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgQWxwaGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAyXk4gIEJldGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICBCZXRhRzIgKHVuY29tcHJlc3NlZClcblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydENoYWxsZW5nZShwVGF1RmlsZW5hbWUsIGNoYWxsZW5nZUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG4gICAgY29uc3Qge2ZkOiBmZEZyb20sIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcblxuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRGcm9tLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmRGcm9tLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGxldCBsYXN0UmVzcG9uc2VIYXNoLCBjdXJDaGFsbGVuZ2VIYXNoO1xuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGxhc3RSZXNwb25zZUhhc2ggPSBCbGFrZTJiKDY0KS5kaWdlc3QoKTtcbiAgICAgICAgY3VyQ2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RSZXNwb25zZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLnJlc3BvbnNlSGFzaDtcbiAgICAgICAgY3VyQ2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobGFzdFJlc3BvbnNlSGFzaCwgXCJMYXN0IFJlc3BvbnNlIEhhc2g6IFwiKSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ2hhbGxlbmdlSGFzaCwgXCJOZXcgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cblxuICAgIGNvbnN0IGZkVG8gPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShjaGFsbGVuZ2VGaWxlbmFtZSk7XG5cbiAgICBjb25zdCB0b0hhc2ggPSBCbGFrZTJiKDY0KTtcbiAgICBhd2FpdCBmZFRvLndyaXRlKGxhc3RSZXNwb25zZUhhc2gpO1xuICAgIHRvSGFzaC51cGRhdGUobGFzdFJlc3BvbnNlSGFzaCk7XG5cbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDIsIFwiRzFcIiwgKDEgPDwgcG93ZXIpICogMiAtMSwgXCJ0YXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDEgPDwgcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDQsIFwiRzFcIiwgKDEgPDwgcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIpO1xuICAgIGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMSA8PCBwb3dlcikgICAgICAgLCBcImJldGFUYXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDYsIFwiRzJcIiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcbiAgICBhd2FpdCBmZFRvLmNsb3NlKCk7XG5cbiAgICBjb25zdCBjYWxjQ3VyQ2hhbGxlbmdlSGFzaCA9IHRvSGFzaC5kaWdlc3QoKTtcblxuICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbCAoY3VyQ2hhbGxlbmdlSGFzaCwgY2FsY0N1ckNoYWxsZW5nZUhhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjYWxjQ3VyQ2hhbGxlbmdlSGFzaCwgXCJDYWxjIEN1cnJldCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQVGF1IGZpbGUgaXMgY29ycnVwdGVkLiBDYWxjdWxhdGVkIG5ldyBjaGFsbGVuZ2UgaGFzaCBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBlY2xhcmVkIG9uZVwiKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUFRhdSBmaWxlIGlzIGNvcnJ1cHRlZC4gQ2FsY3VsYXRlZCBuZXcgY2hhbGxlbmdlIGhhc2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgZWNsYXJlZCBvbmVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1ckNoYWxsZW5nZUhhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBleHBvcnRTZWN0aW9uKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgblBvaW50c0NodW5rID0gTWF0aC5mbG9vcigoMTw8MjQpL3NHKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkrPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgRXhwb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG4gICAgICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChuKnNHKTtcbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmYpO1xuICAgICAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICAgICAgICAgIHRvSGFzaC51cGRhdGUoYnVmZik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkRnJvbSk7XG4gICAgfVxuXG5cbn1cblxuIiwiaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc3BvbnNlKG9sZFB0YXVGaWxlbmFtZSwgY29udHJpYnV0aW9uRmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgaW1wb3J0UG9pbnRzLCBsb2dnZXIpIHtcblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1cnJlbnRDb250cmlidXRpb24gPSB7fTtcblxuICAgIGlmIChuYW1lKSBjdXJyZW50Q29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjgqMjtcbiAgICBjb25zdCBzY0cxID0gY3VydmUuRjEubjg7IC8vIENvbXByZXNlZCBzaXplXG4gICAgY29uc3Qgc0cyID0gY3VydmUuRjIubjgqMjtcbiAgICBjb25zdCBzY0cyID0gY3VydmUuRjIubjg7IC8vIENvbXByZXNlZCBzaXplXG5cbiAgICBjb25zdCBmZFJlc3BvbnNlID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGNvbnRyaWJ1dGlvbkZpbGVuYW1lKTtcblxuICAgIGlmICAoZmRSZXNwb25zZS50b3RhbFNpemUgIT1cbiAgICAgICAgNjQgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbGQgSGFzaFxuICAgICAgICAoKDE8PHBvd2VyKSoyLTEpKnNjRzEgK1xuICAgICAgICAoMTw8cG93ZXIpKnNjRzIgK1xuICAgICAgICAoMTw8cG93ZXIpKnNjRzEgK1xuICAgICAgICAoMTw8cG93ZXIpKnNjRzEgK1xuICAgICAgICBzY0cyICtcbiAgICAgICAgc0cxKjYgKyBzRzIqMylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBvZiB0aGUgY29udHJpYnV0aW9uIGlzIGludmFsaWRcIik7XG5cbiAgICBsZXQgbGFzdENoYWxsZW5nZUhhc2g7XG5cbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGg+MCkge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCA3KTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25QcmV2aW91c0hhc2ggPSBhd2FpdCBmZFJlc3BvbnNlLnJlYWQoNjQpO1xuXG4gICAgaWYoIW1pc2MuaGFzaElzRXF1YWwoY29udHJpYnV0aW9uUHJldmlvdXNIYXNoLGxhc3RDaGFsbGVuZ2VIYXNoKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgY29udHJpYnV0aW9uLiB0aGlzIGNvbnRyaWJ1dGlvbiBpcyBub3QgYmFzZWQgb24gdGhlIHByZXZpdXMgaGFzaFwiKTtcblxuICAgIGNvbnN0IGhhc2hlclJlc3BvbnNlID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hlclJlc3BvbnNlLnVwZGF0ZShjb250cmlidXRpb25QcmV2aW91c0hhc2gpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuICAgIGxldCByZXM7XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzFcIiwgMiwgKDEgPDwgcG93ZXIpICogMiAtMSwgWzFdLCBcInRhdUcxXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24udGF1RzEgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzJcIiwgMywgKDEgPDwgcG93ZXIpICAgICAgICwgWzFdLCBcInRhdUcyXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24udGF1RzIgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzFcIiwgNCwgKDEgPDwgcG93ZXIpICAgICAgICwgWzBdLCBcImFscGhhRzFcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5hbHBoYUcxID0gcmVzWzBdO1xuICAgIHJlcyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKGZkUmVzcG9uc2UsIGZkTmV3LCBcIkcxXCIsIDUsICgxIDw8IHBvd2VyKSAgICAgICAsIFswXSwgXCJiZXRhRzFcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5iZXRhRzEgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgWzBdLCBcImJldGFHMlwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmJldGFHMiA9IHJlc1swXTtcblxuICAgIGN1cnJlbnRDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSBoYXNoZXJSZXNwb25zZS5nZXRQYXJ0aWFsSGFzaCgpO1xuXG5cbiAgICBjb25zdCBidWZmS2V5ID0gYXdhaXQgZmRSZXNwb25zZS5yZWFkKGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5rZXkgPSB1dGlscy5mcm9tUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwgZmFsc2UpO1xuXG4gICAgaGFzaGVyUmVzcG9uc2UudXBkYXRlKG5ldyBVaW50OEFycmF5KGJ1ZmZLZXkpKTtcbiAgICBjb25zdCBoYXNoUmVzcG9uc2UgPSBoYXNoZXJSZXNwb25zZS5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChoYXNoUmVzcG9uc2UsIFwiQ29udHJpYnV0aW9uIFJlc3BvbnNlIEhhc2ggaW1wb3J0ZWQ6IFwiKSk7XG5cbiAgICBjb25zdCBuZXh0Q2hhbGxlbmdlSGFzaGVyID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGhhc2hSZXNwb25zZSk7XG5cbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCAyLCAoMSA8PCBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDEgPDwgcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDQsICgxIDw8IHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDUsICgxIDw8IHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIiwgbG9nZ2VyKTtcblxuICAgIGN1cnJlbnRDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cbiAgICBjb250cmlidXRpb25zLnB1c2goY3VycmVudENvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMoZmROZXcsIGN1cnZlLCBjb250cmlidXRpb25zKTtcblxuICAgIGF3YWl0IGZkUmVzcG9uc2UuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkVG8ucG9zO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgRy5iYXRjaEN0b0xFTShidWZmQyk7XG5cbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZkxFTSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYnVmZkxFTSwgKHNwLWkpKnNHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuXG4gICAgICAgIHJldHVybiBzaW5ndWxhclBvaW50cztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hTZWN0aW9uKGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG59XG5cbiIsImltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0IHsgQ2hhQ2hhIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXIsIHByZXYsIGxvZ2dlcikge1xuICAgIGxldCBzcjtcbiAgICBpZiAoY3VyLnR5cGUgPT0gMSkgeyAgICAvLyBWZXJpZnkgdGhlIGJlYWNvbi5cbiAgICAgICAgY29uc3QgYmVhY29uS2V5ID0gdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIuYmVhY29uSGFzaCwgY3VyLm51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS50YXUuZzFfcywgYmVhY29uS2V5LnRhdS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zKSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkudGF1LmcxX3N4LCBiZWFjb25LZXkudGF1LmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zeCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXIua2V5LnRhdS5nMl9zcHgsIGJlYWNvbktleS50YXUuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMl9zcHgpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmFscGhhLmcxX3MsIGJlYWNvbktleS5hbHBoYS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3MpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS5hbHBoYS5nMV9zeCwgYmVhY29uS2V5LmFscGhhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3N4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ci5rZXkuYWxwaGEuZzJfc3B4LCBiZWFjb25LZXkuYWxwaGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcyX3NweCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYmV0YS5nMV9zLCBiZWFjb25LZXkuYmV0YS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfcykgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmJldGEuZzFfc3gsIGJlYWNvbktleS5iZXRhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfc3gpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoY3VyLmtleS5iZXRhLmcyX3NweCwgYmVhY29uS2V5LmJldGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzJfc3B4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGN1ci5rZXkudGF1LmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoa2V5UGFpci5nZXRHMnNwKGN1cnZlLCAwLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4KSk7XG4gICAgY3VyLmtleS5hbHBoYS5nMl9zcCA9IGN1cnZlLkcyLnRvQWZmaW5lKGtleVBhaXIuZ2V0RzJzcChjdXJ2ZSwgMSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIua2V5LmFscGhhLmcxX3MsIGN1ci5rZXkuYWxwaGEuZzFfc3gpKTtcbiAgICBjdXIua2V5LmJldGEuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShrZXlQYWlyLmdldEcyc3AoY3VydmUsIDIsIHByZXYubmV4dENoYWxsZW5nZSwgY3VyLmtleS5iZXRhLmcxX3MsIGN1ci5rZXkuYmV0YS5nMV9zeCkpO1xuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4LCBjdXIua2V5LnRhdS5nMl9zcCwgY3VyLmtleS50YXUuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBrZXkgKHRhdSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkuYWxwaGEuZzFfcywgY3VyLmtleS5hbHBoYS5nMV9zeCwgY3VyLmtleS5hbHBoYS5nMl9zcCwgY3VyLmtleS5hbHBoYS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYWxwaGEpIGluIGNoYWxsZW5nZSAjXCIrY3VyLmlkKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYmV0YSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYudGF1RzEsIGN1ci50YXVHMSwgY3VyLmtleS50YXUuZzJfc3AsIGN1ci5rZXkudGF1LmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcxLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCAgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gsIHByZXYudGF1RzIsIGN1ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcyLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBwcmV2LmFscGhhRzEsIGN1ci5hbHBoYUcxLCBjdXIua2V5LmFscGhhLmcyX3NwLCBjdXIua2V5LmFscGhhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYWxwaGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYuYmV0YUcxLCBjdXIuYmV0YUcxLCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGJldGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsICBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBwcmV2LmJldGFHMiwgY3VyLmJldGFHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYmV0YSpHMi4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCJJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUG93ZXJzIE9mIHRhdSBmaWxlIE9LIVwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5KHRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBsZXQgc3I7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUodGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJzID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJwb3dlcjogMioqXCIgKyBwb3dlcik7XG4gICAgLy8gVmVyaWZ5IExhc3QgY29udHJpYnV0aW9uXG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDb21wdXRpbmcgaW5pdGlhbCBjb250cmlidXRpb24gaGFzaFwiKTtcbiAgICBjb25zdCBpbml0aWFsQ29udHJpYnV0aW9uID0ge1xuICAgICAgICB0YXVHMTogY3VydmUuRzEuZyxcbiAgICAgICAgdGF1RzI6IGN1cnZlLkcyLmcsXG4gICAgICAgIGFscGhhRzE6IGN1cnZlLkcxLmcsXG4gICAgICAgIGJldGFHMTogY3VydmUuRzEuZyxcbiAgICAgICAgYmV0YUcyOiBjdXJ2ZS5HMi5nLFxuICAgICAgICBuZXh0Q2hhbGxlbmdlOiB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIGNlcmVtb255UG93ZXIsIGxvZ2dlciksXG4gICAgICAgIHJlc3BvbnNlSGFzaDogQmxha2UyYig2NCkuZGlnZXN0KClcbiAgICB9O1xuXG4gICAgaWYgKGNvbnRycy5sZW5ndGggPT0gMCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIG5vIGNvbnRyaWJ1dGlvbiEgSXQgY2Fubm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwcmV2Q29udHI7XG4gICAgaWYgKGNvbnRycy5sZW5ndGg+MSkge1xuICAgICAgICBwcmV2Q29udHIgPSBjb250cnNbY29udHJzLmxlbmd0aC0yXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q29udHIgPSBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgIH1cbiAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tjb250cnMubGVuZ3RoLTFdO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZhbGlkYXRpbmcgY29udHJpYnV0aW9uICNcIitjb250cnNbY29udHJzLmxlbmd0aC0xXS5pZCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG5cblxuICAgIGNvbnN0IG5leHRDb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShjdXJDb250ci5yZXNwb25zZUhhc2gpO1xuXG4gICAgLy8gVmVyaWZ5IHBvd2VycyBhbmQgY29tcHV0ZSBuZXh0Q2hhbGxlbmdlSGFzaFxuXG4gICAgLy8gYXdhaXQgdGVzdCgpO1xuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiB0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByVGF1MSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIFwiRzFcIiwgXCJ0YXVHMVwiLCAoMSA8PCBwb3dlcikqMi0xLCBbMCwgMV0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJUYXUxLlIxLCByVGF1MS5SMiwgY3VydmUuRzIuZywgY3VyQ29udHIudGF1RzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJ0YXVHMSBzZWN0aW9uLiBQb3dlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VydmUuRzEuZywgclRhdTEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgdGF1KkcxIHNlY3Rpb24gbXVzdCBiZSB0aGUgZ2VuZXJhdG9yXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VyQ29udHIudGF1RzEsIHJUYXUxLnNpbmd1bGFyUG9pbnRzWzFdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJTZWNvbmQgZWxlbWVudCBvZiB0YXUqRzEgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGF3YWl0IHRlc3QoKTtcblxuICAgIC8vIFZlcmlmeSBTZWN0aW9uIHRhdSpHMlxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gdGF1KkcyIHNlY3Rpb25cIik7XG4gICAgY29uc3QgclRhdTIgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCBcIkcyXCIsIFwidGF1RzJcIiwgMSA8PCBwb3dlciwgWzAsIDFdLCAgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VydmUuRzEuZywgY3VyQ29udHIudGF1RzEsIHJUYXUyLlIxLCByVGF1Mi5SMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInRhdUcyIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJ2ZS5HMi5nLCByVGF1Mi5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiB0YXUqRzIgc2VjdGlvbiBtdXN0IGJlIHRoZSBnZW5lcmF0b3JcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJDb250ci50YXVHMiwgclRhdTIuc2luZ3VsYXJQb2ludHNbMV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlNlY29uZCBlbGVtZW50IG9mIHRhdSpHMiBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gYWxwaGEqdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiBhbHBoYSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQWxwaGFUYXVHMSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIFwiRzFcIiwgXCJhbHBoYXRhdUcxXCIsIDEgPDwgcG93ZXIsIFswXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgckFscGhhVGF1RzEuUjEsIHJBbHBoYVRhdUcxLlIyLCBjdXJ2ZS5HMi5nLCBjdXJDb250ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImFscGhhVGF1RzEgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ckNvbnRyLmFscGhhRzEsIHJBbHBoYVRhdUcxLnNpbmd1bGFyUG9pbnRzWzBdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJGaXJzdCBlbGVtZW50IG9mIGFscGhhKnRhdSpHMSBzZWN0aW9uIChhbHBoYSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiBiZXRhKnRhdSpHMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gYmV0YSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQmV0YVRhdUcxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgXCJHMVwiLCBcImJldGF0YXVHMVwiLCAxIDw8IHBvd2VyLCBbMF0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJCZXRhVGF1RzEuUjEsIHJCZXRhVGF1RzEuUjIsIGN1cnZlLkcyLmcsIGN1ckNvbnRyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiYmV0YVRhdUcxIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJDb250ci5iZXRhRzEsIHJCZXRhVGF1RzEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgYmV0YSp0YXUqRzEgc2VjdGlvbiAoYmV0YSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL1ZlcmlmeSBCZXRhIEcyXG4gICAgY29uc3QgYmV0YUcyID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKTtcbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ckNvbnRyLmJldGFHMiwgYmV0YUcyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJiZXRhRzIgZWxlbWVudCBpbiBiZXRhRzIgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3QgbmV4dENvbnRyaWJ1dGlvbkhhc2ggPSBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgLy8gQ2hlY2sgdGhlIG5leHRDaGFsbGVuZ2VIYXNoXG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5leHRDb250cmlidXRpb25IYXNoLGN1ckNvbnRyLm5leHRDaGFsbGVuZ2UpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkhhc2ggb2YgdGhlIHZhbHVlcyBkb2VzIG5vdCBtYXRjaCB0aGUgbmV4dCBjaGFsbGVuZ2Ugb2YgdGhlIGxhc3QgY29udHJpYnV0b3IgaW4gdGhlIGNvbnRyaWJ1dGlvbnMgc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChuZXh0Q29udHJpYnV0aW9uSGFzaCwgXCJOZXh0IGNoYWxsZW5nZSBoYXNoOiBcIikpO1xuXG4gICAgLy8gVmVyaWZ5IFByZXZpb3VzIGNvbnRyaWJ1dGlvbnNcblxuICAgIHByaW50Q29udHJpYnV0aW9uKGN1ckNvbnRyLCBwcmV2Q29udHIpO1xuICAgIGZvciAobGV0IGkgPSBjb250cnMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tpXTtcbiAgICAgICAgY29uc3QgcHJldkNvbnRyID0gIChpPjApID8gY29udHJzW2ktMV0gOiBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlDb250cmlidXRpb24oY3VydmUsIGN1ckNvbnRyLCBwcmV2Q29udHIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHByaW50Q29udHJpYnV0aW9uKGN1ckNvbnRyLCBwcmV2Q29udHIsIGxvZ2dlcik7XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG5cbiAgICBpZiAoKCFzZWN0aW9uc1sxMl0pIHx8ICghc2VjdGlvbnNbMTNdKSB8fCAoIXNlY3Rpb25zWzE0XSkgfHwgKCFzZWN0aW9uc1sxNV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgXCJ0aGlzIGZpbGUgZG9lcyBub3QgY29udGFpbiBwaGFzZTIgcHJlY2FsY3VsYXRlZCB2YWx1ZXMuIFBsZWFzZSBydW46IFxcblwiICtcbiAgICAgICAgICAgIFwiICAgc25hcmtqcyBcXFwicG93ZXJzb2Z0YXUgcHJlcGFyZXBoYXNlMlxcXCIgdG8gcHJlcGFyZSB0aGlzIGZpbGUgdG8gYmUgdXNlZCBpbiB0aGUgcGhhc2UyIGNlcmVtb255LlwiXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDIsIDEyLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJlcyA9IGF3YWl0IHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoXCJHMlwiLCAzLCAxMywgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzFcIiwgNCwgMTQsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzFcIiwgNSwgMTUsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgZnVuY3Rpb24gcHJpbnRDb250cmlidXRpb24oY3VyQ29udHIsIHByZXZDb250cikge1xuICAgICAgICBpZiAoIWxvZ2dlcikgcmV0dXJuO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgQ29udHJpYnV0aW9uICMke2N1ckNvbnRyLmlkfTogJHtjdXJDb250ci5uYW1lIHx8XCJcIn1gKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHIubmV4dENoYWxsZW5nZSwgXCJOZXh0IENoYWxsZW5nZTogXCIpKTtcblxuICAgICAgICBjb25zdCBidWZmViAgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIqNitjdXJ2ZS5HMi5GLm44KjIqMyk7XG4gICAgICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmViwgMCwgY3VydmUsIGN1ckNvbnRyLmtleSwgZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgICAgIHJlc3BvbnNlSGFzaGVyLnNldFBhcnRpYWxIYXNoKGN1ckNvbnRyLnBhcnRpYWxIYXNoKTtcbiAgICAgICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZWKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYXNoID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICAgICAgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKHJlc3BvbnNlSGFzaCwgXCJSZXNwb25zZSBIYXNoOlwiKSk7XG5cbiAgICAgICAgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKHByZXZDb250ci5uZXh0Q2hhbGxlbmdlLCBcIlJlc3BvbnNlIEhhc2g6XCIpKTtcblxuICAgICAgICBpZiAoY3VyQ29udHIudHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgQmVhY29uIGdlbmVyYXRvcjogJHttaXNjLmJ5dGVBcnJheTJoZXgoY3VyQ29udHIuYmVhY29uSGFzaCl9YCk7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgQmVhY29uIGl0ZXJhdGlvbnMgRXhwOiAke2N1ckNvbnRyLm51bUl0ZXJhdGlvbnNFeHB9YCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uQmV0YUcyKGxvZ2dlcikge1xuICAgICAgICBjb25zdCBHID0gY3VydmUuRzI7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IGJ1ZmZVdiA9IG5ldyBVaW50OEFycmF5KHNHKTtcblxuICAgICAgICBpZiAoIXNlY3Rpb25zWzZdKSAge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmlsZSBoYXMgbm8gQmV0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGhhcyBubyBCZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VjdGlvbnNbNl0ubGVuZ3RoPjEpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZpbGUgaGFzIG5vIEJldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBoYXMgbW9yZSB0aGFuIG9uZSBHZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBmZC5wb3MgPSBzZWN0aW9uc1s2XVswXS5wO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKTtcbiAgICAgICAgY29uc3QgUCA9IEcuZnJvbVJwckxFTShidWZmKTtcblxuICAgICAgICBHLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmZVdiwgMCwgUCk7XG4gICAgICAgIG5leHRDb250cmlidXRpb25IYXNoZXIudXBkYXRlKGJ1ZmZVdik7XG5cbiAgICAgICAgcmV0dXJuIFA7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oaWRTZWN0aW9uLCBncm91cE5hbWUsIHNlY3Rpb25OYW1lLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgbG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MTY7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbik7XG5cbiAgICAgICAgY29uc3Qgc2luZ3VsYXJQb2ludHMgPSBbXTtcblxuICAgICAgICBsZXQgUjEgPSBHLnplcm87XG4gICAgICAgIGxldCBSMiA9IEcuemVybztcblxuICAgICAgICBsZXQgbGFzdEJhc2UgPSBHLnplcm87XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgcG9pbnRzIHJlbGF0aW9uczogJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfSBgKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuICAgICAgICAgICAgY29uc3QgYmFzZXMgPSBhd2FpdCBmZC5yZWFkKG4qc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBiYXNlc1UgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJhc2VzKTtcbiAgICAgICAgICAgIG5leHRDb250cmlidXRpb25IYXNoZXIudXBkYXRlKGJhc2VzVSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjYWxhcnMgPSBuZXcgVWludDhBcnJheSg0KihuLTEpKTtcbiAgICAgICAgICAgIGNyeXB0by5yYW5kb21GaWxsU3luYyhzY2FsYXJzKTtcblxuXG4gICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RCYXNlID0gRy5mcm9tUnByTEVNKGJhc2VzLCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnJlYWRVSW50MzJCRSgwLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIEcudGltZXNTY2FsYXIobGFzdEJhc2UsIHIpKTtcbiAgICAgICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCBHLnRpbWVzU2NhbGFyKGZpcnN0QmFzZSwgcikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMuc2xpY2UoMCwgKG4tMSkqc0cpLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlcy5zbGljZShzRyksIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG5cbiAgICAgICAgICAgIGxhc3RCYXNlID0gRy5mcm9tUnByTEVNKCBiYXNlcywgKG4tMSkqc0cpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYmFzZXMsIChzcC1pKSpzRyk7XG4gICAgICAgICAgICAgICAgICAgIHNpbmd1bGFyUG9pbnRzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgUjE6IFIxLFxuICAgICAgICAgICAgUjI6IFIyLFxuICAgICAgICAgICAgc2luZ3VsYXJQb2ludHM6IHNpbmd1bGFyUG9pbnRzXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKGdOYW1lLCB0YXVTZWN0aW9uLCBsYWdyYW5nZVNlY3Rpb24sIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFZlcmlmeWluZyBwaGFzZTIgY2FsY3VsYXRlZCB2YWx1ZXMgJHtzZWN0aW9uTmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkucmVhZFVJbnQzMkJFKDAsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9IHBvd2VyOyBwICsrKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQb3dlcihwKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFBvd2VyICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDE8PHA7XG4gICAgICAgICAgICBsZXQgYnVmZl9yID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cyAqIG44cik7XG4gICAgICAgICAgICBsZXQgYnVmZkc7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYnVmZl9yLCBpKm44ciwgZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgdGF1U2VjdGlvbik7XG4gICAgICAgICAgICBidWZmRyA9IGF3YWl0IGZkLnJlYWQoblBvaW50cypzRyk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNUYXUgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IpO1xuXG4gICAgICAgICAgICBidWZmX3IgPSBhd2FpdCBjdXJ2ZS5Gci5iYXRjaFRvTW9udGdvbWVyeShidWZmX3IpO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuZmZ0KGJ1ZmZfcik7XG4gICAgICAgICAgICBidWZmX3IgPSBhd2FpdCBjdXJ2ZS5Gci5iYXRjaEZyb21Nb250Z29tZXJ5KGJ1ZmZfcik7XG5cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgbGFncmFuZ2VTZWN0aW9uKTtcbiAgICAgICAgICAgIGZkLnBvcyArPSBzRyooKDEgPDwgcCktMSk7XG4gICAgICAgICAgICBidWZmRyA9IGF3YWl0IGZkLnJlYWQoblBvaW50cypzRyk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNMYWdyYW5nZSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZkcsIGJ1ZmZfcik7XG5cbiAgICAgICAgICAgIGlmICghRy5lcShyZXNUYXUsIHJlc0xhZ3JhbmdlKSkge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBoYXNlMiBjYWNsdXRhdGlvbiBkb2VzIG5vdCBtYXRjaCB3aXRoIHBvd2VycyBvZiB0YXVcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIlxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuXG4vKlxuICAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBzZWN0aW9uIGluIHRoZSBmZFRvIGZpbGUgd2l0aCBpZCBpZFNlY3Rpb24uXG4gICAgSXQgbXVsdGlwbGllcyB0aGUgcG9vaW50cyBpbiBmZEZyb20gYnkgZmlyc3QsIGZpcnN0KmluYywgZmlyc3QqaW5jXjIsIC4uLi5cbiAgICBuUG9pbnQgVGltZXMuXG4gICAgSXQgYWxzbyB1cGRhdGVzIHRoZSBuZXdDaGFsbGVuZ2VIYXNoZXIgd2l0aCB0aGUgbmV3IHBvaW50c1xuKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIGlkU2VjdGlvbiwgY3VydmUsIGdyb3VwTmFtZSwgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAxNjtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgIGNvbnN0IG5Qb2ludHMgPSBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnNpemUgLyBzRztcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucyxpZFNlY3Rpb24gKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIGlkU2VjdGlvbik7XG5cbiAgICBsZXQgdCA9IGZpcnN0O1xuICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQXBwbHlpbmcga2V5OiAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgIGxldCBidWZmO1xuICAgICAgICBidWZmID0gYXdhaXQgZmRPbGQucmVhZChuKnNHKTtcbiAgICAgICAgYnVmZiA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmLCB0LCBpbmMpO1xuICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkT2xkKTtcbn1cblxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZE9sZCwgZmROZXcsIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBmaXJzdCwgaW5jLCBmb3JtYXRPdXQsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKDE8PDIwKSAvIHNHKTsgICAvLyAxMjhNYiBjaHVua3NcbiAgICBsZXQgdCA9IGZpcnN0O1xuICAgIGZvciAobGV0IGk9MCA7IGk8blBvaW50cyA7IGkrPSBjaHVua1NpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBBcHBseWluZyBrZXkgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihuUG9pbnRzLWksIGNodW5rU2l6ZSApO1xuICAgICAgICBjb25zdCBidWZmSW5VID0gYXdhaXQgZmRPbGQucmVhZChuICogc0cpO1xuICAgICAgICBjb25zdCBidWZmSW5MRU0gPSBhd2FpdCBHLmJhdGNoVXRvTEVNKGJ1ZmZJblUpO1xuICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbkxFTSwgdCwgaW5jKTtcbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChmb3JtYXRPdXQgPT0gXCJDT01QUkVTU0VEXCIpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBhd2FpdCBHLmJhdGNoTEVNdG9DKGJ1ZmZPdXRMRU0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZk91dExFTSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2VIYXNoZXIpIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0KTtcbiAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZk91dCk7XG4gICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgIH1cbn1cblxuIiwiLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICBQdWJsaWMgS2V5XG4vLyAgICAgICAgICBCZXRhRzIgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1KmJldGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMipzcCp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip0cCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnVwKmJldGEgKGNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjaGFsbGVuZ2VDb250cmlidXRlKGN1cnZlLCBjaGFsbGVuZ2VGaWxlbmFtZSwgcmVzcG9uZXNGaWxlTmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3QgZmRGcm9tID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGNoYWxsZW5nZUZpbGVuYW1lKTtcblxuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjY0KjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5GMi5uNjQqOCoyO1xuICAgIGNvbnN0IGRvbWFpblNpemUgPSAoZmRGcm9tLnRvdGFsU2l6ZSArIHNHMSAtIDY0IC0gc0cyKSAvICg0KnNHMSArIHNHMik7XG4gICAgbGV0IGUgPSBkb21haW5TaXplO1xuICAgIGxldCBwb3dlciA9IDA7XG4gICAgd2hpbGUgKGU+MSkge1xuICAgICAgICBlID0gZSAvMjtcbiAgICAgICAgcG93ZXIgKz0gMTtcbiAgICB9XG5cbiAgICBpZiAoMTw8cG93ZXIgIT0gZG9tYWluU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmaWxlIHNpemVcIik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUG93ZXIgdG8gdGF1IHNpemU6IFwiK3Bvd2VyKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbmVzRmlsZU5hbWUpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBoYXNoXG4gICAgY29uc3QgY2hhbGxlbmdlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGZkRnJvbS50b3RhbFNpemU7IGkrPSBmZEZyb20ucGFnZVNpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nIGNoYWxsZW5nZSAke2l9LyR7ZmRGcm9tLnRvdGFsU2l6ZX1gKTtcbiAgICAgICAgY29uc3QgcyA9IE1hdGgubWluKGZkRnJvbS50b3RhbFNpemUgLSBpLCBmZEZyb20ucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQocyk7XG4gICAgICAgIGNoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZik7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1lZEhhc2ggPSBhd2FpdCBmZEZyb20ucmVhZCg2NCwgMCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNsYWltZWRIYXNoLCBcIkNsYWltZWQgUHJldmlvdXMgUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZUhhc2ggPSBjaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNoYWxsZW5nZUhhc2gsIFwiQ3VycmVudCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGtleSA9IGtleVBhaXIuY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgW1widGF1XCIsIFwiYWxwaGFcIiwgXCJiZXRhXCJdLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3M6IFwiICsgY3VydmUuRzEudG9TdHJpbmcoa2V5W2tdLmcxX3MsIDE2KSk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3N4OiBcIiArIGN1cnZlLkcxLnRvU3RyaW5nKGtleVtrXS5nMV9zeCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzJfc3A6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NwLCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGsgKyBcIi5nMl9zcHg6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NweCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGF3YWl0IGZkVG8ud3JpdGUoY2hhbGxlbmdlSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGNoYWxsZW5nZUhhc2gpO1xuXG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDE8PHBvd2VyKSoyLTEsIGN1cnZlLkZyLm9uZSAgICAsIGtleS50YXUucHJ2S2V5LCBcIkNPTVBSRVNTRURcIiwgXCJ0YXVHMVwiICAgICAsIGxvZ2dlciApO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uKGZkRnJvbSwgZmRUbywgcmVzcG9uc2VIYXNoZXIsIGN1cnZlLCBcIkcyXCIsICgxPDxwb3dlcikgICAgLCBjdXJ2ZS5Gci5vbmUgICAgLCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwidGF1RzJcIiAgICAgLCBsb2dnZXIgKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMVwiLCAoMTw8cG93ZXIpICAgICwga2V5LmFscGhhLnBydktleSwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDE8PHBvd2VyKSAgICAsIGtleS5iZXRhLnBydktleSAsIGtleS50YXUucHJ2S2V5LCBcIkNPTVBSRVNTRURcIiwgXCJiZXRhVGF1RzFcIiAsIGxvZ2dlciApO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uKGZkRnJvbSwgZmRUbywgcmVzcG9uc2VIYXNoZXIsIGN1cnZlLCBcIkcyXCIsIDEgICAgICAgICAgICAgLCBrZXkuYmV0YS5wcnZLZXkgLCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwiYmV0YVRhdUcyXCIgLCBsb2dnZXIgKTtcblxuICAgIC8vIFdyaXRlIGFuZCBoYXNoIGtleVxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKjYrY3VydmUuRjIubjgqMiozKTtcbiAgICB1dGlscy50b1B0YXVQdWJLZXlScHIoYnVmZktleSwgMCwgY3VydmUsIGtleSwgZmFsc2UpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZktleSk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZLZXkpO1xuICAgIGNvbnN0IHJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChyZXNwb25zZUhhc2gsIFwiQ29udHJpYnV0aW9uIFJlc3BvbnNlIEhhc2g6IFwiKSk7XG5cbiAgICBhd2FpdCBmZFRvLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRGcm9tLmNsb3NlKCk7XG59XG5cbiIsImltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlYWNvbihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgIGJlYWNvbkhhc2hTdHIsbnVtSXRlcmF0aW9uc0V4cCwgbG9nZ2VyKSB7XG4gICAgY29uc3QgYmVhY29uSGFzaCA9IG1pc2MuaGV4MkJ5dGVBcnJheShiZWFjb25IYXNoU3RyKTtcbiAgICBpZiAoICAgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCA9PSAwKVxuICAgICAgICB8fCAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoKjIgIT1iZWFjb25IYXNoU3RyLmxlbmd0aCkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIEJlYWNvbiBIYXNoLiAoSXQgbXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIHNlcXVlbmNlKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYmVhY29uSGFzaC5sZW5ndGg+PTI1Nikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJNYXhpbXVtIGxlbmdodCBvZiBiZWFjb24gaGFzaCBpcyAyNTUgYnl0ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBudW1JdGVyYXRpb25zRXhwID0gcGFyc2VJbnQobnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgaWYgKChudW1JdGVyYXRpb25zRXhwPDEwKXx8KG51bUl0ZXJhdGlvbnNFeHA+NjMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtSXRlcmF0aW9uc0V4cC4gKE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNjMpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNlY3Rpb25zWzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcIkNvbnRyaWJ1dGluZyBpbnRvIGEgZmlsZSB0aGF0IGhhcyBwaGFzZTIgY2FsY3VsYXRlZC4gWW91IHdpbGwgaGF2ZSB0byBwcmVwYXJlIHBoYXNlMiBhZ2Fpbi5cIik7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IDEsIC8vIEJlYWNvblxuICAgICAgICBudW1JdGVyYXRpb25zRXhwOiBudW1JdGVyYXRpb25zRXhwLFxuICAgICAgICBiZWFjb25IYXNoOiBiZWFjb25IYXNoXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aD4wKSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5uZXh0Q2hhbGxlbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gdXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0gdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgbGFzdENoYWxsZW5nZUhhc2gsIGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDE8PHBvd2VyKSAqIDIgLTEsIGN1cnZlLkZyLmUoMSksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJ0YXVHMVwiLCBsb2dnZXIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzEgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgICgxPDxwb3dlcikgLCBjdXJ2ZS5Gci5lKDEpLCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwidGF1RzJcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcyID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCBcIkcxXCIsICAoMTw8cG93ZXIpICwgY3VyQ29udHJpYnV0aW9uLmtleS5hbHBoYS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMTw8cG93ZXIpICwgY3VyQ29udHJpYnV0aW9uLmtleS5iZXRhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImJldGFUYXVHMVwiLCBsb2dnZXIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig2LCBcIkcyXCIsICAxLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcyXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzIgPSBmaXJzdFBvaW50c1swXTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmdldFBhcnRpYWxIYXNoKCk7XG5cbiAgICBjb25zdCBidWZmS2V5ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG5cbiAgICB1dGlscy50b1B0YXVQdWJLZXlScHIoYnVmZktleSwgMCwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5rZXksIGZhbHNlKTtcblxuICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShuZXcgVWludDhBcnJheShidWZmS2V5KSk7XG4gICAgY29uc3QgaGFzaFJlc3BvbnNlID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goaGFzaFJlc3BvbnNlLCBcIkNvbnRyaWJ1dGlvbiBSZXNwb25zZSBIYXNoIGltcG9ydGVkOiBcIikpO1xuXG4gICAgY29uc3QgbmV4dENoYWxsZW5nZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShoYXNoUmVzcG9uc2UpO1xuXG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgMiwgKDEgPDwgcG93ZXIpICogMiAtMSwgXCJ0YXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcyXCIsIDMsICgxIDw8IHBvd2VyKSAgICAgICAsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA0LCAoMSA8PCBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA1LCAoMSA8PCBwb3dlcikgICAgICAgLCBcImJldGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcyXCIsIDYsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIsIGxvZ2dlcik7XG5cbiAgICBjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gaGFzaFJlc3BvbnNlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oc2VjdGlvbklkLCBncm91cE5hbWUsIE5Qb2ludHMsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGZkT2xkLnBvcyA9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0ucDtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIHNlY3Rpb25JZCk7XG5cbiAgICAgICAgc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdID0gZmROZXcucG9zO1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKCgxPDwyMCkgLyBzRyk7ICAgLy8gMTI4TWIgY2h1bmtzXG4gICAgICAgIGxldCB0ID0gZmlyc3Q7XG4gICAgICAgIGZvciAobGV0IGk9MCA7IGk8TlBvaW50cyA7IGkrPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgYXBwbHlpbmcga2V5JHtzZWN0aW9uTmFtZX06ICR7aX0vJHtOUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oTlBvaW50cy1pLCBjaHVua1NpemUgKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZJbiA9IGF3YWl0IGZkT2xkLnJlYWQobiAqIHNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZPdXRMRU0gPSBhd2FpdCBHLmJhdGNoQXBwbHlLZXkoYnVmZkluLCB0LCBpbmMpO1xuXG4gICAgICAgICAgICAvKiBDb2RlIHRvIHRlc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSB0aGUgMl5tLTIgY29tcG9uZW50XG4gICAgICAgICAgICBpZiAoc2VjdGlvbk5hbWU9PSBcInRhdUcxXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieiA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICAgICAgICAgICAgICBidWZmT3V0TEVNLnNldChieiwgNjQqKCgxIDw8IHBvd2VyKSAtIDEgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlV3JpdGUgPSBmZE5ldy53cml0ZShidWZmT3V0TEVNKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZPdXRDID0gYXdhaXQgRy5iYXRjaExFTXRvQyhidWZmT3V0TEVNKTtcblxuICAgICAgICAgICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZPdXRDKTtcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2VXcml0ZTtcbiAgICAgICAgICAgIGlmIChpPT0wKSAgIC8vIFJldHVybiB0aGUgMiBmaXJzdCBwb2ludHMuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPE1hdGgubWluKDIsIE5Qb2ludHMpOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKEcuZnJvbVJwckxFTShidWZmT3V0TEVNLCBqKnNHKSk7XG4gICAgICAgICAgICB0ID0gY3VydmUuRnIubXVsKHQsIGN1cnZlLkZyLmV4cChpbmMsIG4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoU2VjdGlvbihmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIGNvbnN0IG9sZFBvcyA9IGZkVG8ucG9zO1xuICAgICAgICBmZFRvLnBvcyA9IHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkgKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkxFTSA9IGF3YWl0IGZkVG8ucmVhZChuICogc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZkxFTSk7XG5cbiAgICAgICAgICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGJ1ZmZVKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZkVG8ucG9zID0gb2xkUG9zO1xuICAgIH1cbn1cblxuIiwiLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBUYXVHMiBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEFscGhhVGF1RzEgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzICh1bmNvbXByZXNzZWQpXG5cbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb250cmlidXRlKG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBuYW1lLCBlbnRyb3B5LCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgfVxuICAgIGlmIChzZWN0aW9uc1sxMl0pIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLndhcm4oXCJXQVJOSU5HOiBDb250cmlidXRpbmcgaW50byBhIGZpbGUgdGhhdCBoYXMgcGhhc2UyIGNhbGN1bGF0ZWQuIFlvdSB3aWxsIGhhdmUgdG8gcHJlcGFyZSBwaGFzZTIgYWdhaW4uXCIpO1xuICAgIH1cbiAgICBjb25zdCBjb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmRPbGQsIGN1cnZlLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB0eXBlOiAwLCAvLyBCZWFjb25cbiAgICB9O1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGg+MCkge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgYSByYW5kb20ga2V5XG5cblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5rZXkgPSBrZXlQYWlyLmNyZWF0ZVBUYXVLZXkoY3VydmUsIGxhc3RDaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG5cbiAgICBjb25zdCByZXNwb25zZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobGFzdENoYWxsZW5nZUhhc2gpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCA3KTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG5cbiAgICBsZXQgZmlyc3RQb2ludHM7XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCBcIkcxXCIsICAoMTw8cG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzEgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgICgxPDxwb3dlcikgLCBjdXJ2ZS5Gci5lKDEpLCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwidGF1RzJcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMiA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNCwgXCJHMVwiLCAgKDE8PHBvd2VyKSAsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYWxwaGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYWxwaGFUYXVHMVwiICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmFscGhhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIFwiRzFcIiwgICgxPDxwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig2LCBcIkcyXCIsICAxLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcyXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcyID0gZmlyc3RQb2ludHNbMF07XG5cbiAgICBjdXJDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSByZXNwb25zZUhhc2hlci5nZXRQYXJ0aWFsSGFzaCgpO1xuXG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBjdXJDb250cmlidXRpb24ua2V5LCBmYWxzZSk7XG5cbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGNvbnN0IG5leHRDaGFsbGVuZ2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDIsICgxIDw8IHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDEgPDwgcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA0LCAoMSA8PCBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNSwgKDEgPDwgcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gaGFzaFJlc3BvbnNlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oc2VjdGlvbklkLCBncm91cE5hbWUsIE5Qb2ludHMsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmZE9sZC5wb3MgPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnA7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBzZWN0aW9uSWQpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkTmV3LnBvcztcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcigoMTw8MjApIC8gc0cpOyAgIC8vIDEyOE1iIGNodW5rc1xuICAgICAgICBsZXQgdCA9IGZpcnN0O1xuICAgICAgICBmb3IgKGxldCBpPTAgOyBpPE5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHByb2Nlc3Npbmc6ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7TlBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKE5Qb2ludHMtaSwgY2h1bmtTaXplICk7XG4gICAgICAgICAgICBjb25zdCBidWZmSW4gPSBhd2FpdCBmZE9sZC5yZWFkKG4gKiBzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbiwgdCwgaW5jKTtcblxuICAgICAgICAgICAgLyogQ29kZSB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgdGhlIDJebS0yIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHNlY3Rpb25OYW1lPT0gXCJ0YXVHMVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnogPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICAgICAgICAgICAgYnVmZk91dExFTS5zZXQoYnosIDY0KigoMSA8PCBwb3dlcikgLSAxICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZVdyaXRlID0gZmROZXcud3JpdGUoYnVmZk91dExFTSk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0QyA9IGF3YWl0IEcuYmF0Y2hMRU10b0MoYnVmZk91dExFTSk7XG5cbiAgICAgICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0Qyk7XG4gICAgICAgICAgICBhd2FpdCBwcm9taXNlV3JpdGU7XG4gICAgICAgICAgICBpZiAoaT09MCkgICAvLyBSZXR1cm4gdGhlIDIgZmlyc3QgcG9pbnRzLlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxNYXRoLm1pbigyLCBOUG9pbnRzKTsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChHLmZyb21ScHJMRU0oYnVmZk91dExFTSwgaipzRykpO1xuICAgICAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaFNlY3Rpb24oZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmaSkgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nICR7c2VjdGlvbk5hbWV9OiBgICsgaSk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG5cbn1cblxuIiwiaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgYml0UmV2ZXJzZSB9IGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVBoYXNlMihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCAxMSk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgLy8gY29uc3QgZmRUbXAgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcbiAgICBjb25zdCBmZFRtcCA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHt0eXBlOiBcImJpZ01lbVwifSk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDYpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTtcblxuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIDEyLCBcIkcxXCIsIFwidGF1RzFcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIDEzLCBcIkcyXCIsIFwidGF1RzJcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIDE0LCBcIkcxXCIsIFwiYWxwaGFUYXVHMVwiICk7XG4gICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgMTUsIFwiRzFcIiwgXCJiZXRhVGF1RzFcIiApO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkVG1wLmNsb3NlKCk7XG5cbiAgICAvLyBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsobmV3UFRhdUZpbGVuYW1lKyBcIi50bXBcIik7XG5cbiAgICByZXR1cm47XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihvbGRTZWN0aW9uSWQsIG5ld1NlY3Rpb25JZCwgR3N0ciwgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgQ0hVTktQT1cgPSAxNjtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiU3RhcnRpbmcgc2VjdGlvbjogXCIrc2VjdGlvbk5hbWUpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZE5ldywgbmV3U2VjdGlvbklkKTtcblxuICAgICAgICBmb3IgKGxldCBwPTA7IHA8PXBvd2VyOyBwKyspIHtcbiAgICAgICAgICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uUG93ZXIocCk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvblBvd2VyKHApIHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rUG93ZXIgPSBwID4gQ0hVTktQT1cgPyBDSFVOS1BPVyA6IHA7XG4gICAgICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IDE8PGNodW5rUG93ZXI7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMSA8PCBwO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rcyA9IG5Qb2ludHMgLyBwb2ludHNQZXJDaHVuaztcblxuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG5cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgb2xkU2VjdGlvbklkKTtcbiAgICAgICAgICAgIC8vIEJ1aWxkIHRoZSBpbml0aWFsIHRtcCBCdWZmXG4gICAgICAgICAgICBmZFRtcC5wb3MgPTA7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke3NlY3Rpb25OYW1lfSBQcmVwYXJlICR7aSsxfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQocG9pbnRzUGVyQ2h1bmsqc0dpbik7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuYmF0Y2hUb0phY29iaWFuKGJ1ZmYpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxwb2ludHNQZXJDaHVuazsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZkVG1wLnBvcyA9IGJpdFJldmVyc2UoaSpwb2ludHNQZXJDaHVuaytqLCBwKSpzR21pZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmRUbXAud3JpdGUoYnVmZi5zbGljZShqKnNHbWlkLCAoaisxKSpzR21pZCApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQsIHRydWUpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkNodW5rczsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke3NlY3Rpb25OYW1lfSAke3B9IEZGVE1peCAke2orMX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgICAgIGxldCBidWZmO1xuICAgICAgICAgICAgICAgIGZkVG1wLnBvcyA9IChqKnBvaW50c1BlckNodW5rKSpzR21pZDtcbiAgICAgICAgICAgICAgICBidWZmID0gYXdhaXQgZmRUbXAucmVhZChwb2ludHNQZXJDaHVuaypzR21pZCk7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuZmZ0TWl4KGJ1ZmYpO1xuICAgICAgICAgICAgICAgIGZkVG1wLnBvcyA9IChqKnBvaW50c1BlckNodW5rKSpzR21pZDtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZFRtcC53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGk9Y2h1bmtQb3dlcisxOyBpPD0gcDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbkdyb3VwcyA9IDEgPDwgKHAgLSBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuQ2h1bmtzUGVyR3JvdXAgPSBuQ2h1bmtzIC8gbkdyb3VwcztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke3NlY3Rpb25OYW1lfSAke2l9LyR7cH0gRkZUSm9pbiAke2orMX0vJHtuR3JvdXBzfSAke2t9LyR7bkNodW5rc1Blckdyb3VwLzJ9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IEZyLmV4cCggRnIud1tpXSwgaypwb2ludHNQZXJDaHVuayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnVmZjEsIGJ1ZmYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmRUbXAucG9zID0gbzEqcG9pbnRzUGVyQ2h1bmsqc0dtaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmMSA9IGF3YWl0IGZkVG1wLnJlYWQocG9pbnRzUGVyQ2h1bmsgKiBzR21pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZFRtcC5wb3MgPSBvMipwb2ludHNQZXJDaHVuaypzR21pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmYyID0gYXdhaXQgZmRUbXAucmVhZChwb2ludHNQZXJDaHVuayAqIHNHbWlkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgW2J1ZmYxLCBidWZmMl0gPSBhd2FpdCBHLmZmdEpvaW4oYnVmZjEsIGJ1ZmYyLCBmaXJzdCwgaW5jKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUbXAucG9zID0gbzEqcG9pbnRzUGVyQ2h1bmsqc0dtaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZFRtcC53cml0ZShidWZmMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZFRtcC5wb3MgPSBvMipwb2ludHNQZXJDaHVuaypzR21pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGZkVG1wLndyaXRlKGJ1ZmYyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGZpbmFsSW52ZXJzZShwKTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyBmdW5jdGlvbiBmaW5hbEludmVyc2UocCkge1xuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBjb25zdCBzR291dCA9IEcuRi5uOCoyO1xuXG4gICAgICAgICAgICBjb25zdCBjaHVua1Bvd2VyID0gcCA+IENIVU5LUE9XID8gQ0hVTktQT1cgOiBwO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSAxPDxjaHVua1Bvd2VyO1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDEgPDwgcDtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzUGVyQ2h1bms7XG5cbiAgICAgICAgICAgIGNvbnN0IG8gPSBmZE5ldy5wb3M7XG4gICAgICAgICAgICBmZFRtcC5wb3MgPSAwO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID0gRnIuaW52KCBGci5lKCAxPDwgcCkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtzZWN0aW9uTmFtZX0gJHtwfSBGRlRGaW5hbCAke2krMX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgICAgIGxldCBidWZmO1xuICAgICAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBmZFRtcC5yZWFkKHBvaW50c1BlckNodW5rICogc0dtaWQpO1xuICAgICAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmZmdEZpbmFsKGJ1ZmYsIGZhY3Rvcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoIGkgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmZE5ldy5wb3MgPSBvO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmLnNsaWNlKChwb2ludHNQZXJDaHVuay0xKSpzR291dCkpO1xuICAgICAgICAgICAgICAgICAgICBmZE5ldy5wb3MgPSBvICsgKChuQ2h1bmtzIC0gMSkqcG9pbnRzUGVyQ2h1bmsgKyAxKSAqIHNHb3V0O1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmLnNsaWNlKDAsIChwb2ludHNQZXJDaHVuay0xKSpzR291dCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZkTmV3LnBvcyA9IG8gKyAoKG5DaHVua3MgLSAxIC0gaSkqcG9pbnRzUGVyQ2h1bmsgKyAxKSAqIHNHb3V0O1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZE5ldy5wb3MgPSBvICsgbkNodW5rcyAqIHBvaW50c1BlckNodW5rICogc0dvdXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsImltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydEpzb24ocFRhdUZpbGVuYW1lLCB2ZXJib3NlKSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBwVGF1ID0ge307XG4gICAgcFRhdS5xID0gY3VydmUucTtcbiAgICBwVGF1LnBvd2VyID0gcG93ZXI7XG4gICAgcFRhdS5jb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBwVGF1LnRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgxIDw8IHBvd2VyKSoyIC0xLCBcInRhdUcxXCIpO1xuICAgIHBUYXUudGF1RzIgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDEgPDwgcG93ZXIpLCBcInRhdUcyXCIpO1xuICAgIHBUYXUuYWxwaGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNCwgXCJHMVwiLCAoMSA8PCBwb3dlciksIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBwVGF1LmJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMSA8PCBwb3dlciksIFwiYmV0YVRhdUcxXCIpO1xuICAgIHBUYXUuYmV0YUcyID0gYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEsIFwiYmV0YUcyXCIpO1xuXG4gICAgcFRhdS5sVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxMiwgXCJHMVwiLCBcImxUYXVHMVwiKTtcbiAgICBwVGF1LmxUYXVHMiA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDEzLCBcIkcyXCIsIFwibFRhdUcyXCIpO1xuICAgIHBUYXUubEFscGhhVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxNCwgXCJHMVwiLCBcImxBbHBoYVRhdUcyXCIpO1xuICAgIHBUYXUubEJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDE1LCBcIkcxXCIsIFwibEJldGFUYXVHMlwiKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gcFRhdTtcblxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBleHBvcnRTZWN0aW9uKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKCh2ZXJib3NlKSYmaSYmKGklMTAwMDAgPT0gMCkpIGNvbnNvbGUubG9nKGAke3NlY3Rpb25OYW1lfTogYCArIGkpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cpO1xuICAgICAgICAgICAgcmVzLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0TGFncmFuZ2Uoc2VjdGlvbklkLCBncm91cE5hbWUsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIHNlY3Rpb25JZCk7XG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9cG93ZXI7IHArKykge1xuICAgICAgICAgICAgaWYgKHZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3NlY3Rpb25OYW1lfTogUG93ZXI6ICR7cH1gKTtcbiAgICAgICAgICAgIHJlc1twXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9ICgxPDxwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHZlcmJvc2UpJiZpJiYoaSUxMDAwMCA9PSAwKSkgY29uc29sZS5sb2coYCR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRyk7XG4gICAgICAgICAgICAgICAgcmVzW3BdLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG59XG5cblxuIiwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByMWNzUHJpbnQocjFjcywgc3ltcywgbG9nZ2VyKSB7XG4gICAgZm9yIChsZXQgaT0wOyBpPHIxY3MuY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcHJpbnRDb3N0cmFpbnQocjFjcy5jb25zdHJhaW50c1tpXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50Q29zdHJhaW50KGMpIHtcbiAgICAgICAgY29uc3QgbGMyc3RyID0gKGxjKSA9PiB7XG4gICAgICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobGMpO1xuICAgICAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gc3ltcy52YXJJZHgyTmFtZVtrXTtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSBcIm9uZVwiKSBuYW1lID0gXCJcIjtcblxuICAgICAgICAgICAgICAgIGxldCB2cyA9IHIxY3MuRnIudG9TdHJpbmcobGNba10pO1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIjFcIikgdnMgPSBcIlwiOyAgLy8gRG8gbm90IHNob3cgb25lc1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIi0xXCIpIHZzID0gXCItXCI7ICAvLyBEbyBub3Qgc2hvdyBvbmVzXG4gICAgICAgICAgICAgICAgaWYgKChTIT1cIlwiKSYmKHZzWzBdIT1cIi1cIikpIHZzID0gXCIrXCIrdnM7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIHZzID0gXCIgXCIrdnM7XG4gICAgICAgICAgICAgICAgUz0gUyArIHZzICAgKyBuYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgUyA9IGBbICR7bGMyc3RyKGNbMF0pfSBdICogWyAke2xjMnN0cihjWzFdKX0gXSAtIFsgJHtsYzJzdHIoY1syXSl9IF0gPSAwYDtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oUyk7XG4gICAgfVxuXG59XG4iLCIvKiBnbG9iYWwgQmlnSW50ICovXG5jb25zdCBoZXhMZW4gPSBbIDAsIDEsIDIsIDIsIDMsIDMsIDMsIDMsIDQgLDQgLDQgLDQgLDQgLDQgLDQgLDRdO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVN0cmluZyhzLCByYWRpeCkge1xuICAgIGlmICgoIXJhZGl4KXx8KHJhZGl4PT0xMCkpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChzKTtcbiAgICB9IGVsc2UgaWYgKHJhZGl4PT0xNikge1xuICAgICAgICBpZiAocy5zbGljZSgwLDIpID09IFwiMHhcIikge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBCaWdJbnQoXCIweFwiK3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgZSA9IGZyb21TdHJpbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICBsZXQgYWNjID0wbjtcbiAgICByYWRpeCA9IEJpZ0ludChyYWRpeCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYWNjID0gYWNjKnJhZGl4ICsgQmlnSW50KGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0TGVuZ3RoKGEpIHtcbiAgICBjb25zdCBhUyA9YS50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChhUy5sZW5ndGgtMSkqNCAraGV4TGVuW3BhcnNlSW50KGFTWzBdLCAxNildO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOZWdhdGl2ZShhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8IDBuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNaZXJvKGEpIHtcbiAgICByZXR1cm4gIWE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdExlZnQoYSwgbikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPDwgQmlnSW50KG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PiBCaWdJbnQobik7XG59XG5cbmV4cG9ydCBjb25zdCBzaGwgPSBzaGlmdExlZnQ7XG5leHBvcnQgY29uc3Qgc2hyID0gc2hpZnRSaWdodDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2RkKGEpIHtcbiAgICByZXR1cm4gKEJpZ0ludChhKSAmIDFuKSA9PSAxbjtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIDFuKSB7XG4gICAgICAgICAgICBjb25zdCB6ID0gMiAtIE51bWJlcihFICUgNG4pO1xuICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgfVxuICAgICAgICBFID0gRSA+PiAxbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgbGV0IEUgPSBCaWdJbnQobik7XG4gICAgY29uc3QgcmVzID0gW107XG4gICAgd2hpbGUgKEUpIHtcbiAgICAgICAgaWYgKEUgJiAxbikge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IDFuO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIocykge1xuICAgIGlmIChzPkJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiApKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIH1cbiAgICByZXR1cm4gTnVtYmVyKHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheShzLCByYWRpeCkge1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGxldCByZW0gPSBCaWdJbnQocyk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIHdoaWxlIChyZW0pIHtcbiAgICAgICAgcmVzLnVuc2hpZnQoIE51bWJlcihyZW0gJSByYWRpeCkpO1xuICAgICAgICByZW0gPSByZW0gLyByYWRpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICsgQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3ViKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIC0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnKGEpIHtcbiAgICByZXR1cm4gLUJpZ0ludChhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyZShhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHAoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiogQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJzKGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IDAgPyBCaWdJbnQoYSkgOiAtQmlnSW50KGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGl2KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIC8gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICUgQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPT0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICE9IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3QoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPD0gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IEJpZ0ludChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhbmQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfCBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIF4gQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmJiBCaWdJbnQoYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfHwgQmlnSW50KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuICFCaWdJbnQoYSk7XG59XG5cbiIsImltcG9ydCBiaWdJbnQgZnJvbSBcImJpZy1pbnRlZ2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKHR5cGVvZiBzID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHMuc2xpY2UoMCwyKSA9PSBcIjB4XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBiaWdJbnQocy5zbGljZSgyKSwgMTYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJpZ0ludChzLHJhZGl4KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBiaWdJbnQocywgcmFkaXgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IGUgPSBmcm9tU3RyaW5nO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUFycmF5KGEsIHJhZGl4KSB7XG4gICAgcmV0dXJuIGJpZ0ludC5mcm9tQXJyYXkoYSwgcmFkaXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0TGVuZ3RoKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmJpdExlbmd0aCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOZWdhdGl2ZShhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5pc05lZ2F0aXZlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1plcm8oYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuaXNaZXJvKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlmdExlZnQoYSwgbikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuc2hpZnRMZWZ0KG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5zaGlmdFJpZ2h0KG4pO1xufVxuXG5leHBvcnQgY29uc3Qgc2hsID0gc2hpZnRMZWZ0O1xuZXhwb3J0IGNvbnN0IHNociA9IHNoaWZ0UmlnaHQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09kZChhKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5pc09kZCgpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBuYWYobikge1xuICAgIGxldCBFID0gYmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFLmd0KGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAoRS5pc09kZCgpKSB7XG4gICAgICAgICAgICBjb25zdCB6ID0gMiAtIEUubW9kKDQpLnRvSlNOdW1iZXIoKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKCB6ICk7XG4gICAgICAgICAgICBFID0gRS5taW51cyh6KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUuc2hpZnRSaWdodCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdHMobikge1xuICAgIGxldCBFID0gYmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFLmd0KGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAoRS5pc09kZCgpKSB7XG4gICAgICAgICAgICByZXMucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUuc2hpZnRSaWdodCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtYmVyKHMpIHtcbiAgICBpZiAoIXMubHQoYmlnSW50KFwiOTAwNzE5OTI1NDc0MDk5MlwiLCAxMCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcy50b0pTTnVtYmVyKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0FycmF5KHMsIHJhZGl4KSB7XG4gICAgcmV0dXJuIGJpZ0ludChzKS50b0FycmF5KHJhZGl4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5hZGQoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YihhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5taW51cyhiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnKGEpIHtcbiAgICByZXR1cm4gYmlnSW50Lnplcm8ubWludXMoYmlnSW50KGEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS50aW1lcyhiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnNxdWFyZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG93KGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnBvdyhiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLnBvdyhiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJzKGEpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmFicygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGl2KGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmRpdmlkZShiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLm1vZChiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXEoYSwgYikge1xuICAgIHJldHVybiBiaWdJbnQoYSkuZXEoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lcShhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5uZXEoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmx0KGJpZ0ludChiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5ndChiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVxKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmxlcShiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gYmlnSW50KGEpLmdlcShiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5hbmQoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvcihhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS5vcihiaWdJbnQoYikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnhvcihhLCBiKSB7XG4gICAgcmV0dXJuIGJpZ0ludChhKS54b3IoYmlnSW50KGIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhbmQoYSwgYikge1xuICAgIHJldHVybiAoIWJpZ0ludChhKS5pc1plcm8oKSkgJiYgKCFiaWdJbnQoYikuaXNaZXJvKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9yKGEsIGIpIHtcbiAgICByZXR1cm4gKCFiaWdJbnQoYSkuaXNaZXJvKCkpIHx8ICghYmlnSW50KGIpLmlzWmVybygpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxub3QoYSkge1xuICAgIHJldHVybiBiaWdJbnQoYSkuaXNaZXJvKCk7XG59XG5cblxuIiwiXG5pbXBvcnQgKiBhcyBTY2FsYXJfbmF0aXZlIGZyb20gXCIuL3NjYWxhcl9uYXRpdmUuanNcIjtcbmltcG9ydCAqIGFzIFNjYWxhcl9iaWdpbnQgZnJvbSBcIi4vc2NhbGFyX2JpZ2ludC5qc1wiO1xuXG5jb25zdCBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcblxubGV0IFNjYWxhciA9IHt9O1xuaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XG4gICAgT2JqZWN0LmFzc2lnbihTY2FsYXIsIFNjYWxhcl9uYXRpdmUpO1xufSBlbHNlIHtcbiAgICBPYmplY3QuYXNzaWduKFNjYWxhciwgU2NhbGFyX2JpZ2ludCk7XG59XG5cblxuLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cblNjYWxhci50b1JwckxFID0gZnVuY3Rpb24gcnByQkUoYnVmZiwgbywgZSwgbjgpIHtcbiAgICBjb25zdCBzID0gXCIwMDAwMDAwXCIgKyBlLnRvU3RyaW5nKDE2KTtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBvLCBuOC80KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2W2ldID0gcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KTtcbiAgICBmb3IgKGxldCBpPWw7IGk8di5sZW5ndGg7IGkrKykgdltpXSA9IDA7XG4gICAgZm9yIChsZXQgaT12Lmxlbmd0aCo0OyBpPG44OyBpKyspIGJ1ZmZbaV0gPSBTY2FsYXIudG9OdW1iZXIoU2NhbGFyLmJhbmQoU2NhbGFyLnNoaWZ0UmlnaHQoZSwgaSo4KSwgMHhGRikpO1xufTtcblxuLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cblNjYWxhci50b1JwckJFID0gZnVuY3Rpb24gcnByTEVNKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgbywgbjgpO1xuICAgIGNvbnN0IGwgPSAoKChzLmxlbmd0aC03KSo0IC0gMSkgPj4gNSkrMTsgICAgLy8gTnVtYmVyIG9mIDMyYml0IHdvcmRzO1xuICAgIGZvciAobGV0IGk9MDsgaTxsOyBpKyspIHYuc2V0VWludDMyKG44LWkqNCAtNCwgcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KSwgZmFsc2UpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80LWw7IGkrKykgdltpXSA9IDA7XG59O1xuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cblNjYWxhci5mcm9tUnByTEUgPSBmdW5jdGlvbiBycHJMRU0oYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBvLCBuOC80KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIHYuZm9yRWFjaCggKGNoLGkpID0+IGFbYS5sZW5ndGgtaS0xXSA9IGNoLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LFwiMFwiKSApO1xuICAgIHJldHVybiBTY2FsYXIuZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn07XG5cbi8vIFBhc2VzIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuU2NhbGFyLmZyb21ScHJCRSA9IGZ1bmN0aW9uIHJwckxFTShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIG8sIG44KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80OyBpKyspIHtcbiAgICAgICAgYVtpXSA9IHYuZ2V0VWludDMyKGkqNCwgZmFsc2UpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgfVxuICAgIHJldHVybiBTY2FsYXIuZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn07XG5cblNjYWxhci50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgcmV0dXJuIGEudG9TdHJpbmcocmFkaXgpO1xufTtcblxuU2NhbGFyLnRvTEVCdWZmID0gZnVuY3Rpb24gdG9MRUJ1ZmYoYSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChTY2FsYXIuYml0TGVuZ3RoKGEpIC0gMSkgLyA4KSArMSk7XG4gICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgYSwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gYnVmZjtcbn07XG5cblxuU2NhbGFyLnplcm8gPSBTY2FsYXIuZSgwKTtcblNjYWxhci5vbmUgPSBTY2FsYXIuZSgxKTtcblxuZXhwb3J0IGxldCB7XG4gICAgdG9ScHJMRSxcbiAgICB0b1JwckJFLFxuICAgIGZyb21ScHJMRSxcbiAgICBmcm9tUnByQkUsXG4gICAgdG9TdHJpbmcsXG4gICAgdG9MRUJ1ZmYsXG4gICAgemVybyxcbiAgICBvbmUsXG4gICAgZnJvbVN0cmluZyxcbiAgICBlLFxuICAgIGZyb21BcnJheSxcbiAgICBiaXRMZW5ndGgsXG4gICAgaXNOZWdhdGl2ZSxcbiAgICBpc1plcm8sXG4gICAgc2hpZnRMZWZ0LFxuICAgIHNoaWZ0UmlnaHQsXG4gICAgc2hsLFxuICAgIHNocixcbiAgICBpc09kZCxcbiAgICBuYWYsXG4gICAgYml0cyxcbiAgICB0b051bWJlcixcbiAgICB0b0FycmF5LFxuICAgIGFkZCxcbiAgICBzdWIsXG4gICAgbmVnLFxuICAgIG11bCxcbiAgICBzcXVhcmUsXG4gICAgcG93LFxuICAgIGV4cCxcbiAgICBhYnMsXG4gICAgZGl2LFxuICAgIG1vZCxcbiAgICBlcSxcbiAgICBuZXEsXG4gICAgbHQsXG4gICAgZ3QsXG4gICAgbGVxLFxuICAgIGdlcSxcbiAgICBiYW5kLFxuICAgIGJvcixcbiAgICBieG9yLFxuICAgIGxhbmQsXG4gICAgbG9yLFxuICAgIGxub3QsXG59ID0gU2NhbGFyO1xuXG5cblxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qXG4gICAgVGhpcyBsaWJyYXJ5IGRvZXMgb3BlcmF0aW9ucyBvbiBwb2x5bm9taWFscyB3aXRoIGNvZWZmaWNpZW50cyBpbiBhIGZpZWxkIEYuXG5cbiAgICBBIHBvbHlub21pYWwgUCh4KSA9IHAwICsgcDEgKiB4ICsgcDIgKiB4XjIgKyAuLi4gKyBwbiAqIHhebiAgaXMgcmVwcmVzZW50ZWRcbiAgICBieSB0aGUgYXJyYXkgWyBwMCwgcDEsIHAyLCAuLi4gLCBwbiBdLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbEZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvciAoRikge1xuICAgICAgICB0aGlzLkYgPSBGO1xuXG4gICAgICAgIGxldCByZW0gPSBGLnNxcnRfdDtcbiAgICAgICAgbGV0IHMgPSBGLnNxcnRfcztcblxuICAgICAgICBjb25zdCBmaXZlID0gdGhpcy5GLmFkZCh0aGlzLkYuYWRkKHRoaXMuRi50d28sIHRoaXMuRi50d28pLCB0aGlzLkYub25lKTtcblxuICAgICAgICB0aGlzLncgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53aSA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndbc10gPSB0aGlzLkYucG93KGZpdmUsIHJlbSk7XG4gICAgICAgIHRoaXMud2lbc10gPSB0aGlzLkYuaW52KHRoaXMud1tzXSk7XG5cbiAgICAgICAgbGV0IG49cy0xO1xuICAgICAgICB3aGlsZSAobj49MCkge1xuICAgICAgICAgICAgdGhpcy53W25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndbbisxXSk7XG4gICAgICAgICAgICB0aGlzLndpW25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndpW24rMV0pO1xuICAgICAgICAgICAgbi0tO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnJvb3RzID0gW107XG4vKiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIG4gPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJvb3RzLnB1c2gocm9vdHNpKTtcbiAgICAgICAgfVxuICAgICovXG4gICAgICAgIHRoaXMuX3NldFJvb3RzKDE1KTtcbiAgICB9XG5cbiAgICBfc2V0Um9vdHMobikge1xuICAgICAgICBmb3IgKGxldCBpPW47IChpPj0wKSAmJiAoIXRoaXMucm9vdHNbaV0pOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IG5yb290cyA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShucm9vdHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5yb290czsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5hZGQoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgY29uc3QgbSA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLnN1YihhW2ldIHx8IHRoaXMuRi56ZXJvLCBiW2ldIHx8IHRoaXMuRi56ZXJvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIocCwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi56ZXJvKSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi5vbmUpKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5tdWwocFtpXSwgYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihiLCBhWzBdKTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihhLCBiWzBdKTtcblxuICAgICAgICBpZiAoYi5sZW5ndGggPiBhLmxlbmd0aCkge1xuICAgICAgICAgICAgW2IsIGFdID0gW2EsIGJdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChiLmxlbmd0aCA8PSAyKSB8fCAoYi5sZW5ndGggPCBsb2cyKGEubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bE5vcm1hbChhLGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsRkZUKGEsYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxOb3JtYWwoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmFkZChyZXMsIHRoaXMuc2NhbGVYKHRoaXMubXVsU2NhbGFyKGEsIGJbaV0pLCBpKSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbXVsRkZUKGEsYikge1xuICAgICAgICBjb25zdCBsb25nZXN0TiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJpdHNSZXN1bHQgPSBsb2cyKGxvbmdlc3ROLTEpKzI7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHNSZXN1bHQpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHNSZXN1bHQ7XG4gICAgICAgIGNvbnN0IGVhID0gdGhpcy5leHRlbmQoYSxtKTtcbiAgICAgICAgY29uc3QgZWIgPSB0aGlzLmV4dGVuZChiLG0pO1xuXG4gICAgICAgIGNvbnN0IHRhID0gX19mZnQodGhpcywgZWEsIGJpdHNSZXN1bHQsIDAsIDEsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgdGIgPSBfX2ZmdCh0aGlzLCBlYiwgYml0c1Jlc3VsdCwgMCwgMSwgZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHRyZXMgPSBuZXcgQXJyYXkobSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgdHJlc1tpXSA9IHRoaXMuRi5tdWwodGFbaV0sIHRiW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0KHRoaXMsIHRyZXMsIGJpdHNSZXN1bHQsIDAsIDEsIHRydWUpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzbik7XG4gICAgfVxuXG5cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLGEpO1xuICAgIH1cblxuICAgIHNjYWxlWChwLCBuKSB7XG4gICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIGlmIChuPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkobikuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgICAgICByZXR1cm4gei5jb25jYXQocCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoLW4gPj0gcC5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiBwLnNsaWNlKC1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2YWwyKHAsIHgpIHtcbiAgICAgICAgbGV0IHYgPSB0aGlzLkYuemVybztcbiAgICAgICAgbGV0IGl4ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLkYuYWRkKHYsIHRoaXMuRi5tdWwocFtpXSwgaXgpKTtcbiAgICAgICAgICAgIGl4ID0gdGhpcy5GLm11bChpeCwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZXZhbChwLHgpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBGLnplcm87XG4gICAgICAgIGNvbnN0IG0gPSB0aGlzLl9uZXh0MlBvd2VyKHAubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcblxuICAgICAgICByZXR1cm4gX2V2YWwoZXAsIHgsIDAsIDEsIG0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9ldmFsKHAsIHgsIG9mZnNldCwgc3RlcCwgbikge1xuICAgICAgICAgICAgaWYgKG49PTEpIHJldHVybiBwW29mZnNldF07XG4gICAgICAgICAgICBjb25zdCBuZXdYID0gRi5zcXVhcmUoeCk7XG4gICAgICAgICAgICBjb25zdCByZXM9IEYuYWRkKFxuICAgICAgICAgICAgICAgIF9ldmFsKHAsIG5ld1gsIG9mZnNldCwgc3RlcCA8PCAxLCBuID4+IDEpLFxuICAgICAgICAgICAgICAgIEYubXVsKFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQrc3RlcCAsIHN0ZXAgPDwgMSwgbiA+PiAxKSkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhZ3JhbmdlKHBvaW50cykge1xuICAgICAgICBsZXQgcm9vdHMgPSBbdGhpcy5GLm9uZV07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzID0gdGhpcy5tdWwocm9vdHMsIFt0aGlzLkYubmVnKHBvaW50c1tpXVswXSksIHRoaXMuRi5vbmVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdW0gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1wb2wgPSB0aGlzLnJ1ZmZpbmkocm9vdHMsIHBvaW50c1tpXVswXSk7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IgPVxuICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5pbnYodGhpcy5ldmFsKG1wb2wsIHBvaW50c1tpXVswXSkpLFxuICAgICAgICAgICAgICAgICAgICBwb2ludHNbaV1bMV0pO1xuICAgICAgICAgICAgbXBvbCA9IHRoaXMubXVsU2NhbGFyKG1wb2wsIGZhY3Rvcik7XG4gICAgICAgICAgICBzdW0gPSB0aGlzLmFkZChzdW0sIG1wb2wpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgfVxuXG5cbiAgICBmZnQocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0KHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmZnQyKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBfX2JpdFJldmVyc2UoZXAsIGJpdHMpO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdDIodGhpcywgZXAsIGJpdHMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgaWZmdChwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0KHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cblxuICAgIGlmZnQyKHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBfX2JpdFJldmVyc2UoZXAsIGJpdHMpO1xuICAgICAgICBjb25zdCByZXMgPSAgX19mZnQyKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cbiAgICBfZmZ0KHBhbGwsIGJpdHMsIG9mZnNldCwgc3RlcCkge1xuXG4gICAgICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChuPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyBwYWxsW29mZnNldF0gXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgICAgICBjb25zdCBwMSA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICAgICAgY29uc3QgcDIgPSB0aGlzLl9mZnQocGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgICAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICAgICAgbGV0IG09IHRoaXMuRi5vbmU7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSB0aGlzLkYuYWRkKHAxW2ldLCB0aGlzLkYubXVsKG0sIHAyW2ldKSk7XG4gICAgICAgICAgICBvdXRbaStuZGl2Ml0gPSB0aGlzLkYuc3ViKHAxW2ldLCB0aGlzLkYubXVsKG0sIHAyW2ldKSk7XG4gICAgICAgICAgICBtID0gdGhpcy5GLm11bChtLCB0aGlzLndbYml0c10pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBleHRlbmQocCwgZSkge1xuICAgICAgICBpZiAoZSA9PSBwLmxlbmd0aCkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkoZS1wLmxlbmd0aCkuZmlsbCh0aGlzLkYuemVybyk7XG5cbiAgICAgICAgcmV0dXJuIHAuY29uY2F0KHopO1xuICAgIH1cblxuICAgIHJlZHVjZShwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gcDtcbiAgICAgICAgaWYgKCEgdGhpcy5GLmVxKHBbcC5sZW5ndGgtMV0sIHRoaXMuRi56ZXJvKSApIHJldHVybiBwO1xuICAgICAgICBsZXQgaT1wLmxlbmd0aC0xO1xuICAgICAgICB3aGlsZSggaT4wICYmIHRoaXMuRi5lcShwW2ldLCB0aGlzLkYuemVybykgKSBpLS07XG4gICAgICAgIHJldHVybiBwLnNsaWNlKDAsIGkrMSk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICBjb25zdCBwYSA9IHRoaXMucmVkdWNlKGEpO1xuICAgICAgICBjb25zdCBwYiA9IHRoaXMucmVkdWNlKGIpO1xuXG4gICAgICAgIGlmIChwYS5sZW5ndGggIT0gcGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwYi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkYuZXEocGFbaV0sIHBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcnVmZmluaShwLCByKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aC0xKTtcbiAgICAgICAgcmVzW3Jlcy5sZW5ndGgtMV0gPSBwW3AubGVuZ3RoLTFdO1xuICAgICAgICBmb3IgKGxldCBpID0gcmVzLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5hZGQodGhpcy5GLm11bChyZXNbaSsxXSwgciksIHBbaSsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBfbmV4dDJQb3dlcih2KSB7XG4gICAgICAgIHYtLTtcbiAgICAgICAgdiB8PSB2ID4+IDE7XG4gICAgICAgIHYgfD0gdiA+PiAyO1xuICAgICAgICB2IHw9IHYgPj4gNDtcbiAgICAgICAgdiB8PSB2ID4+IDg7XG4gICAgICAgIHYgfD0gdiA+PiAxNjtcbiAgICAgICAgdisrO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhwKSB7XG4gICAgICAgIGNvbnN0IGFwID0gdGhpcy5ub3JtYWxpemUocCk7XG4gICAgICAgIGxldCBTID0gXCJcIjtcbiAgICAgICAgZm9yIChsZXQgaT1hcC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwW2ldLCB0aGlzLkYuemVybykpIHtcbiAgICAgICAgICAgICAgICBpZiAoUyE9XCJcIikgUyArPSBcIiArIFwiO1xuICAgICAgICAgICAgICAgIFMgPSBTICsgcFtpXS50b1N0cmluZygxMCk7XG4gICAgICAgICAgICAgICAgaWYgKGk+MCkge1xuICAgICAgICAgICAgICAgICAgICBTID0gUyArIFwieFwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaT4xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBTID0gUyArIFwiXlwiICtpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShwKSB7XG4gICAgICAgIGNvbnN0IHJlcyAgPSBuZXcgQXJyYXkocC5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLm5vcm1hbGl6ZShwW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgX3JlY2lwcm9jYWwocCwgYml0cykge1xuICAgICAgICBjb25zdCBrID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAoaz09MSkge1xuICAgICAgICAgICAgcmV0dXJuIFsgdGhpcy5GLmludihwWzBdKSBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5wID0gdGhpcy5zY2FsZVgocCwgLWsvMik7XG4gICAgICAgIGNvbnN0IHEgPSB0aGlzLl9yZWNpcHJvY2FsKG5wLCBiaXRzLTEpO1xuICAgICAgICBjb25zdCBhID0gdGhpcy5zY2FsZVgodGhpcy5kb3VibGUocSksIDMqay8yLTIpO1xuICAgICAgICBjb25zdCBiID0gdGhpcy5tdWwoIHRoaXMuc3F1YXJlKHEpLCBwKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZVgodGhpcy5zdWIoYSxiKSwgICAtKGstMikpO1xuICAgIH1cblxuICAgIC8vIGRpdmlkZXMgeF5tIC8gdlxuICAgIF9kaXYyKG0sIHYpIHtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyKHYubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHNjYWxlViA9IGsgLSB2Lmxlbmd0aDtcblxuICAgICAgICAvLyByZWMgPSB4XihrIC0gMikgLyB2KiB4XnNjYWxlViA9PlxuICAgICAgICAvLyByZWMgPSB4XihrLTItc2NhbGVWKS8gdlxuICAgICAgICAvL1xuICAgICAgICAvLyByZXMgPSB4Xm0vdiA9IHheKG0gKyAoMiprLTIgLSBzY2FsZVYpIC0gKDIqay0yIC0gc2NhbGVWKSkgL3YgPT5cbiAgICAgICAgLy8gcmVzID0gcmVjICogeF4obSAtICgyKmstMiAtIHNjYWxlVikpID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAyKmsgKyAyICsgc2NhbGVWKVxuXG4gICAgICAgIGNvbnN0IHJlYyA9IHRoaXMuX3JlY2lwcm9jYWwodGhpcy5zY2FsZVgodiwgc2NhbGVWKSwga2JpdHMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnNjYWxlWChyZWMsIG0gLSAyKmsgKyAyICsgc2NhbGVWKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGRpdihfdSwgX3YpIHtcbiAgICAgICAgaWYgKF91Lmxlbmd0aCA8IF92Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIoX3YubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLnNjYWxlWChfdSwgay1fdi5sZW5ndGgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5zY2FsZVgoX3YsIGstX3YubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBuID0gdi5sZW5ndGgtMTtcbiAgICAgICAgbGV0IG0gPSB1Lmxlbmd0aC0xO1xuXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLl9yZWNpcHJvY2FsKHYsIGtiaXRzKTtcbiAgICAgICAgbGV0IHQ7XG4gICAgICAgIGlmIChtPjIqbikge1xuICAgICAgICAgICAgdCA9IHRoaXMuc3ViKHRoaXMuc2NhbGVYKFt0aGlzLkYub25lXSwgMipuKSwgdGhpcy5tdWwocywgdikpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHEgPSBbXTtcbiAgICAgICAgbGV0IHJlbSA9IHU7XG4gICAgICAgIGxldCB1cywgdXQ7XG4gICAgICAgIGxldCBmaW5pc2ggPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWZpbmlzaCkge1xuICAgICAgICAgICAgdXMgPSB0aGlzLm11bChyZW0sIHMpO1xuICAgICAgICAgICAgcSA9IHRoaXMuYWRkKHEsIHRoaXMuc2NhbGVYKHVzLCAtMipuKSk7XG5cbiAgICAgICAgICAgIGlmICggbSA+IDIqbiApIHtcbiAgICAgICAgICAgICAgICB1dCA9IHRoaXMubXVsKHJlbSwgdCk7XG4gICAgICAgICAgICAgICAgcmVtID0gdGhpcy5zY2FsZVgodXQsIC0yKm4pO1xuICAgICAgICAgICAgICAgIG0gPSByZW0ubGVuZ3RoLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmlzaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcTtcbiAgICB9XG5cblxuICAgIC8vIHJldHVybnMgdGhlIGl0aCBudGgtcm9vdCBvZiBvbmVcbiAgICBvbmVSb290KG4sIGkpIHtcbiAgICAgICAgbGV0IG5iaXRzID0gbG9nMihuLTEpKzE7XG4gICAgICAgIGxldCByZXMgPSB0aGlzLkYub25lO1xuICAgICAgICBsZXQgciA9IGk7XG5cbiAgICAgICAgaWYoaT49bikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2l2ZW4gJ2knIHNob3VsZCBiZSBsb3dlciB0aGFuICduJ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgxPDxuYml0cyAhPT0gbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnRlcm5hbCBlcnJscjogJHtufSBzaG91bGQgZXF1YWwgJHsxPDxuYml0c31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGlmIChyICYgMSA9PSAxKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gdGhpcy5GLm11bChyZXMsIHRoaXMud1tuYml0c10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHIgPj4gMTtcbiAgICAgICAgICAgIG5iaXRzIC0tO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgY29tcHV0ZVZhbmlzaGluZ1BvbGlub21pYWwoYml0cywgdCkge1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICByZXR1cm4gdGhpcy5GLnN1Yih0aGlzLkYucG93KHQsIG0pLCB0aGlzLkYub25lKTtcbiAgICB9XG5cbiAgICBldmFsdWF0ZUxhZ3JhbmdlUG9seW5vbWlhbHMoYml0cywgdCkge1xuICAgICAgICBjb25zdCBtPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IHRtID0gdGhpcy5GLnBvdyh0LCBtKTtcbiAgICAgICAgY29uc3QgdT0gbmV3IEFycmF5KG0pLmZpbGwodGhpcy5GLnplcm8pO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3Qgb21lZ2EgPSB0aGlzLndbYml0c107XG5cbiAgICAgICAgaWYgKHRoaXMuRi5lcSh0bSwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuRi5lcSh0aGlzLnJvb3RzW2JpdHNdWzBdLHQpKSB7IC8vIGkuZS4sIHQgZXF1YWxzIG9tZWdhXmlcbiAgICAgICAgICAgICAgICAgICAgdVtpXSA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuc3ViKHRtLCB0aGlzLkYub25lKTtcbiAgICAgICAgLy8gICAgICAgIGxldCBsID0gdGhpcy5GLm11bCh6LCAgdGhpcy5GLnBvdyh0aGlzLkYudHdvaW52LCBtKSk7XG4gICAgICAgIGxldCBsID0gdGhpcy5GLm11bCh6LCAgdGhpcy5GLmludih0aGlzLkYuZShtKSkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgdVtpXSA9IHRoaXMuRi5tdWwobCwgdGhpcy5GLmludih0aGlzLkYuc3ViKHQsdGhpcy5yb290c1tiaXRzXVtpXSkpKTtcbiAgICAgICAgICAgIGwgPSB0aGlzLkYubXVsKGwsIG9tZWdhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1O1xuICAgIH1cblxuICAgIGxvZzIoVikge1xuICAgICAgICByZXR1cm4gbG9nMihWKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvZzIoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdChQRiwgcGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgIH0gZWxzZSBpZiAobj09Mikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgUEYuRi5hZGQocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKSxcbiAgICAgICAgICAgIFBGLkYuc3ViKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSldO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0MihQRiwgcGFsbCwgYml0cykge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsWzBdIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UoMCwgbmRpdjIpLCBiaXRzLTEpO1xuICAgIGNvbnN0IHAyID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKG5kaXYyKSwgYml0cy0xKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IF9yZXZUYWJsZSA9IFtdO1xuZm9yIChsZXQgaT0wOyBpPDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPTA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaT0wOyBpPGJpdHM7IGkrKykge1xuICAgICAgICByZXMgPDw9IDE7XG4gICAgICAgIHJlcyA9IHJlcyB8IChhICYxKTtcbiAgICAgICAgYSA+Pj0xO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiByZXYoaWR4LCBiaXRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweEZGXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuZnVuY3Rpb24gX19iaXRSZXZlcnNlKHAsIGJpdHMpIHtcbiAgICBmb3IgKGxldCBrPTA7IGs8cC5sZW5ndGg7IGsrKykge1xuICAgICAgICBjb25zdCByID0gcmV2KGssIGJpdHMpO1xuICAgICAgICBpZiAocj5rKSB7XG4gICAgICAgICAgICBjb25zdCB0bXA9IHBba107XG4gICAgICAgICAgICBwW2tdID0gcFtyXTtcbiAgICAgICAgICAgIHBbcl0gPSB0bXA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBTY2FsYXIgZnJvbSBcIi4vc2NhbGFyLmpzXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIG11bFNjYWxhcihGLCBiYXNlLCBlKSB7XG4gICAgbGV0IHJlcztcblxuICAgIGlmIChTY2FsYXIuaXNaZXJvKGUpKSByZXR1cm4gRi56ZXJvO1xuXG4gICAgY29uc3QgbiA9IFNjYWxhci5uYWYoZSk7XG5cbiAgICBpZiAobltuLmxlbmd0aC0xXSA9PSAxKSB7XG4gICAgICAgIHJlcyA9IGJhc2U7XG4gICAgfSBlbHNlIGlmIChuW24ubGVuZ3RoLTFdID09IC0xKSB7XG4gICAgICAgIHJlcyA9IEYubmVnKGJhc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmxhdWQgTkFGXCIpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5kb3VibGUocmVzKTtcblxuICAgICAgICBpZiAobltpXSA9PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGJhc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKG5baV0gPT0gLTEpIHtcbiAgICAgICAgICAgIHJlcyA9IEYuc3ViKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbi8qXG5leHBvcnRzLm11bFNjYWxhciA9IChGLCBiYXNlLCBlKSA9PntcbiAgICBsZXQgcmVzID0gRi56ZXJvO1xuICAgIGxldCByZW0gPSBiaWdJbnQoZSk7XG4gICAgbGV0IGV4cCA9IGJhc2U7XG5cbiAgICB3aGlsZSAoISByZW0uZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIGlmIChyZW0uYW5kKGJpZ0ludC5vbmUpLmVxKGJpZ0ludC5vbmUpKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGV4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwID0gRi5kb3VibGUoZXhwKTtcbiAgICAgICAgcmVtID0gcmVtLnNoaWZ0UmlnaHQoMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn07XG4qL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBleHAoRiwgYmFzZSwgZSkge1xuXG4gICAgaWYgKFNjYWxhci5pc1plcm8oZSkpIHJldHVybiBGLm9uZTtcblxuICAgIGNvbnN0IG4gPSBTY2FsYXIuYml0cyhlKTtcblxuICAgIGlmIChuLmxlZ3RoPT0wKSByZXR1cm4gRi5vbmU7XG5cbiAgICBsZXQgcmVzID0gYmFzZTtcblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5zcXVhcmUocmVzKTtcblxuICAgICAgICBpZiAobltpXSkge1xuICAgICAgICAgICAgcmVzID0gRi5tdWwocmVzLCBiYXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cblxuIiwiaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuLy8gQ2hlY2sgaGVyZTogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxMi82ODUucGRmXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkU3FydCAoRikge1xuICAgIGlmICgoRi5tICUgMikgPT0gMSkge1xuICAgICAgICBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCA0KSwgMSApKSB7XG4gICAgICAgICAgICBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCA4KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgMTYpLCAxICkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxnN19tdWxsZXIoRik7XG4gICAgICAgICAgICAgICAgICAgIGFsZzVfdG9uZWxsaVNoYW5rcyhGKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShTY2FsYXIubW9kKEYucCwgMTYpLCA5ICkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxnNF9rb25nKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCA4KSwgNSApKSB7XG4gICAgICAgICAgICAgICAgYWxnM19hdGtpbihGKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKFNjYWxhci5tb2QoRi5wLCA0KSwgMyApKSB7XG4gICAgICAgICAgICBhbGcyX3NoYW5rcyhGKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBtMm1vZDQgPSBTY2FsYXIubW9kKFNjYWxhci5wb3coRi5wLCBGLm0vMiksIDQpO1xuICAgICAgICBpZiAocG0ybW9kNCA9PSAxKSB7XG4gICAgICAgICAgICBhbGcxMF9hZGooRik7XG4gICAgICAgIH0gZWxzZSBpZiAocG0ybW9kNCA9PSAzKSB7XG4gICAgICAgICAgICBhbGc5X2FkaihGKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsZzhfY29tcGxleChGKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGFsZzVfdG9uZWxsaVNoYW5rcyhGKSB7XG4gICAgRi5zcXJ0X3EgPSBTY2FsYXIucG93KEYucCwgRi5tKTtcblxuICAgIEYuc3FydF9zID0gMDtcbiAgICBGLnNxcnRfdCA9IFNjYWxhci5zdWIoRi5zcXJ0X3EsIDEpO1xuXG4gICAgd2hpbGUgKCFTY2FsYXIuaXNPZGQoRi5zcXJ0X3QpKSB7XG4gICAgICAgIEYuc3FydF9zID0gRi5zcXJ0X3MgKyAxO1xuICAgICAgICBGLnNxcnRfdCA9IFNjYWxhci5kaXYoRi5zcXJ0X3QsIDIpO1xuICAgIH1cblxuICAgIGxldCBjMCA9IEYub25lO1xuXG4gICAgd2hpbGUgKEYuZXEoYzAsIEYub25lKSkge1xuICAgICAgICBjb25zdCBjID0gRi5yYW5kb20oKTtcbiAgICAgICAgRi5zcXJ0X3ogPSBGLnBvdyhjLCBGLnNxcnRfdCk7XG4gICAgICAgIGMwID0gRi5wb3coRi5zcXJ0X3osIDEgPDwgKEYuc3FydF9zLTEpICk7XG4gICAgfVxuXG4gICAgRi5zcXJ0X3RtMWQyID0gU2NhbGFyLmRpdihTY2FsYXIuc3ViKEYuc3FydF90LCAxKSwyKTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRj10aGlzO1xuICAgICAgICBpZiAoRi5pc1plcm8oYSkpIHJldHVybiBGLnplcm87XG4gICAgICAgIGxldCB3ID0gRi5wb3coYSwgRi5zcXJ0X3RtMWQyKTtcbiAgICAgICAgY29uc3QgYTAgPSBGLnBvdyggRi5tdWwoRi5zcXVhcmUodyksIGEpLCAxIDw8IChGLnNxcnRfcy0xKSApO1xuICAgICAgICBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBsZXQgdiA9IEYuc3FydF9zO1xuICAgICAgICBsZXQgeCA9IEYubXVsKGEsIHcpO1xuICAgICAgICBsZXQgYiA9IEYubXVsKHgsIHcpO1xuICAgICAgICBsZXQgeiA9IEYuc3FydF96O1xuICAgICAgICB3aGlsZSAoIUYuZXEoYiwgRi5vbmUpKSB7XG4gICAgICAgICAgICBsZXQgYjJrID0gRi5zcXVhcmUoYik7XG4gICAgICAgICAgICBsZXQgaz0xO1xuICAgICAgICAgICAgd2hpbGUgKCFGLmVxKGIyaywgRi5vbmUpKSB7XG4gICAgICAgICAgICAgICAgYjJrID0gRi5zcXVhcmUoYjJrKTtcbiAgICAgICAgICAgICAgICBrKys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHcgPSB6O1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHYtay0xOyBpKyspIHtcbiAgICAgICAgICAgICAgICB3ID0gRi5zcXVhcmUodyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB6ID0gRi5zcXVhcmUodyk7XG4gICAgICAgICAgICBiID0gRi5tdWwoYiwgeik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeCwgdyk7XG4gICAgICAgICAgICB2ID0gaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGc0X2tvbmcoRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyA0IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGczX2F0a2luKEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgMyBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnMl9zaGFua3MoRikge1xuXG4gICAgRi5zcXJ0X3EgPSBTY2FsYXIucG93KEYucCwgRi5tKTtcbiAgICBGLnNxcnRfZTEgPSBTY2FsYXIuZGl2KCBTY2FsYXIuc3ViKEYuc3FydF9xLCAzKSAsIDQpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBpZiAodGhpcy5pc1plcm8oYSkpIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgYTEgPSB0aGlzLnBvdyhhLCB0aGlzLnNxcnRfZTEpO1xuXG4gICAgICAgIGNvbnN0IGEwID0gdGhpcy5tdWwodGhpcy5zcXVhcmUoYTEpLCBhKTtcblxuICAgICAgICBpZiAoIHRoaXMuZXEoYTAsIHRoaXMubmVnb25lKSApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IHggPSB0aGlzLm11bChhMSwgYSk7XG5cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnMTBfYWRqKEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgMTAgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzlfYWRqKEYpIHtcbiAgICBGLnNxcnRfcSA9IFNjYWxhci5wb3coRi5wLCBGLm0vMik7XG4gICAgRi5zcXJ0X2UzNCA9IFNjYWxhci5kaXYoIFNjYWxhci5zdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG4gICAgRi5zcXJ0X2UxMiA9IFNjYWxhci5kaXYoIFNjYWxhci5zdWIoRi5zcXJ0X3EsIDEpICwgMik7XG5cbiAgICBGLmZyb2Jlbml1cyA9IGZ1bmN0aW9uKG4sIHgpIHtcbiAgICAgICAgaWYgKChuJTIpID09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBGLmNvbmp1Z2F0ZSh4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgIGNvbnN0IGFsZmEgPSBGLm11bChGLnNxdWFyZShhMSksIGEpO1xuICAgICAgICBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICBsZXQgeDtcbiAgICAgICAgaWYgKEYuZXEoYWxmYSwgRi5uZWdvbmUpKSB7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYiA9IEYucG93KEYuYWRkKEYub25lLCBhbGZhKSwgRi5zcXJ0X2UxMik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cblxuZnVuY3Rpb24gYWxnOF9jb21wbGV4KEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgOCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cbmltcG9ydCBDaGFDaGEgZnJvbSBcIi4vY2hhY2hhLmpzXCI7XG5pbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBCcm93c2VyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93LmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gZmFsbGJhY2tcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IChNYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTYpPj4+MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHsgLy8gTm9kZUpTXG4gICAgICAgIGNyeXB0by5yYW5kb21GaWxsU3luYyhhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbVNlZWQoKSB7XG4gICAgY29uc3QgYXJyID0gZ2V0UmFuZG9tQnl0ZXMoMzIpO1xuICAgIGNvbnN0IGFyclYgPSBuZXcgVWludDMyQXJyYXkoYXJyLmJ1ZmZlcik7XG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgc2VlZC5wdXNoKGFyclZbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VlZDtcbn1cblxubGV0IHRocmVhZFJuZyA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaHJlYWRSbmcoKSB7XG4gICAgaWYgKHRocmVhZFJuZykgcmV0dXJuIHRocmVhZFJuZztcbiAgICB0aHJlYWRSbmcgPSBuZXcgQ2hhQ2hhKGdldFJhbmRvbVNlZWQoKSk7XG4gICAgcmV0dXJuIHRocmVhZFJuZztcbn1cbiIsIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmltcG9ydCAqIGFzIFNjYWxhciBmcm9tIFwiLi9zY2FsYXIuanNcIjtcbmltcG9ydCAqIGFzIGZ1dGlscyBmcm9tIFwiLi9mdXRpbHMuanNcIjtcbmltcG9ydCBidWlsZFNxcnQgZnJvbSBcIi4vZnNxcnQuanNcIjtcbmltcG9ydCB7Z2V0UmFuZG9tQnl0ZXN9IGZyb20gXCIuL3JhbmRvbS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gMW47XG4gICAgICAgIHRoaXMuemVybyA9IDBuO1xuICAgICAgICB0aGlzLnAgPSBCaWdJbnQocCk7XG4gICAgICAgIHRoaXMubSA9IDE7XG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5wLTFuO1xuICAgICAgICB0aGlzLnR3byA9IDJuO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAgPj4gMW47XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gU2NhbGFyLmJpdExlbmd0aCh0aGlzLnApO1xuICAgICAgICB0aGlzLm1hc2sgPSAoMW4gPDwgQmlnSW50KHRoaXMuYml0TGVuZ3RoKSkgLSAxbjtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IoKHRoaXMuYml0TGVuZ3RoIC0gMSkgLyA2NCkrMTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICAgICAgdGhpcy5SID0gdGhpcy5lKDFuIDw8IEJpZ0ludCh0aGlzLm42NCo2NCkpO1xuICAgICAgICB0aGlzLlJpID0gdGhpcy5pbnYodGhpcy5SKTtcblxuICAgICAgICBjb25zdCBlID0gdGhpcy5uZWdvbmUgPj4gMW47XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB3aGlsZSAoIXRoaXMuZXEociwgdGhpcy5uZWdvbmUpKSB7XG4gICAgICAgICAgICB0aGlzLm5xciA9IHRoaXMubnFyICsgMW47XG4gICAgICAgICAgICByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICB0aGlzLnQgPSB0aGlzLm5lZ29uZTtcblxuICAgICAgICB3aGlsZSAoKHRoaXMudCAmIDFuKSA9PSAwbikge1xuICAgICAgICAgICAgdGhpcy5zID0gdGhpcy5zICsgMTtcbiAgICAgICAgICAgIHRoaXMudCA9IHRoaXMudCA+PiAxbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubnFyX3RvX3QgPSB0aGlzLnBvdyh0aGlzLm5xciwgdGhpcy50KTtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgZShhLGIpIHtcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgaWYgKCFiKSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYj09MTYpIHtcbiAgICAgICAgICAgIHJlcyA9IEJpZ0ludChcIjB4XCIrYSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA8IDApIHtcbiAgICAgICAgICAgIGxldCBucmVzID0gLXJlcztcbiAgICAgICAgICAgIGlmIChucmVzID49IHRoaXMucCkgbnJlcyA9IG5yZXMgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbnJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAocmVzPj0gdGhpcy5wKSA/IHJlcyV0aGlzLnAgOiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgKyBiO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhID49IGIpID8gYS1iIDogdGhpcy5wLWIrYTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gYSA/IHRoaXMucC1hIDogYTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEqYikldGhpcy5wO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBzKSB7XG4gICAgICAgIHJldHVybiAoYmFzZSAqIHRoaXMuZShzKSkgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIChhKmEpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGE9PWI7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEhPWI7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPCBiYjtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA+IGJiO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA8PSBiYjtcbiAgICB9XG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPj0gYmI7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBpZGl2KGEsIGIpIHtcbiAgICAgICAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYSAvIGI7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgaWYgKCFhKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuXG4gICAgICAgIGxldCB0ID0gMG47XG4gICAgICAgIGxldCByID0gdGhpcy5wO1xuICAgICAgICBsZXQgbmV3dCA9IDFuO1xuICAgICAgICBsZXQgbmV3ciA9IGEgJSB0aGlzLnA7XG4gICAgICAgIHdoaWxlIChuZXdyKSB7XG4gICAgICAgICAgICBsZXQgcSA9IHIvbmV3cjtcbiAgICAgICAgICAgIFt0LCBuZXd0XSA9IFtuZXd0LCB0LXEqbmV3dF07XG4gICAgICAgICAgICBbciwgbmV3cl0gPSBbbmV3ciwgci1xKm5ld3JdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0PDBuKSB0ICs9IHRoaXMucDtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgJSBiO1xuICAgIH1cblxuICAgIHBvdyhiLCBlKSB7XG4gICAgICAgIHJldHVybiBmdXRpbHMuZXhwKHRoaXMsIGIsIGUpO1xuICAgIH1cblxuICAgIGV4cChiLCBlKSB7XG4gICAgICAgIHJldHVybiBmdXRpbHMuZXhwKHRoaXMsIGIsIGUpO1xuICAgIH1cblxuICAgIGJhbmQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhICYgYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSB8IGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJ4b3IoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhIF4gYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm5vdChhKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgXiB0aGlzLm1hc2s7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBzaGwoYSwgYikge1xuICAgICAgICBpZiAoTnVtYmVyKGIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IGIpICYgdGhpcy5tYXNrO1xuICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhID4+IG5iO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMG47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaHIoYSwgYikge1xuICAgICAgICBpZiAoTnVtYmVyKGIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhID4+IGI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuYiA9IHRoaXMucCAtIGI7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKG5iKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gKGEgPDwgbmIpICYgdGhpcy5tYXNrO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYW5kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhICYmIGIpID8gMW4gOiAwbjtcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgfHwgYikgPyAxbiA6IDBuO1xuICAgIH1cblxuICAgIGxub3QoYSkge1xuICAgICAgICByZXR1cm4gKGEpID8gMG4gOiAxbjtcbiAgICB9XG5cbiAgICBzcXJ0X29sZChuKSB7XG5cbiAgICAgICAgaWYgKG4gPT0gMG4pIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmUpO1xuICAgICAgICBpZiAoIHJlcyAhPSAxbiApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gdGhpcy5zO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKSA+PiAxbiApO1xuXG4gICAgICAgIHdoaWxlICggdCAhPSAxbiApIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKHNxICE9IDFuICkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyID4gKHRoaXMucCA+PiAxbikpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhLCBiKSB7XG4gICAgICAgIGEgPSBCaWdJbnQoYSxiKTtcbiAgICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbmEgPSAtYTtcbiAgICAgICAgICAgIGlmIChuYSA+PSB0aGlzLnApIG5hID0gbmEgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbmE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGE+PSB0aGlzLnApID8gYSV0aGlzLnAgOiBhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBjb25zdCBuQnl0ZXMgPSAodGhpcy5iaXRMZW5ndGgqMiAvIDgpO1xuICAgICAgICBsZXQgcmVzID0wbjtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5CeXRlczsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSAocmVzIDw8IDhuKSArIEJpZ0ludChnZXRSYW5kb21CeXRlcygxKVswXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcyAlIHRoaXMucDtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCBiYXNlKSB7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKGEgPiB0aGlzLmhhbGYpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLnAtYTtcbiAgICAgICAgICAgIHZzID0gXCItXCIrdi50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZzID0gYS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdnM7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPT0gMG47XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHY9MG47XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgKz0gcm5nLm5leHRVNjQoKSA8PCBCaWdJbnQoNjQgKmkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiAmPSB0aGlzLm1hc2s7XG4gICAgICAgIH0gd2hpbGUgKHYgPj0gdGhpcy5wKTtcbiAgICAgICAgdiA9ICh2ICogdGhpcy5SaSkgJSB0aGlzLnA7ICAgLy8gQ29udmVydCBmcm9tIG1vbnRnb21lcnlcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG59XG5cbiIsImltcG9ydCBiaWdJbnQgZnJvbSBcImJpZy1pbnRlZ2VyXCI7XG5pbXBvcnQgYnVpbGRTcXJ0IGZyb20gXCIuL2ZzcXJ0LmpzXCI7XG5pbXBvcnQge2dldFJhbmRvbUJ5dGVzfSBmcm9tIFwiLi9yYW5kb20uanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWnFGaWVsZCB7XG4gICAgY29uc3RydWN0b3IocCkge1xuICAgICAgICB0aGlzLnR5cGU9XCJGMVwiO1xuICAgICAgICB0aGlzLm9uZSA9IGJpZ0ludC5vbmU7XG4gICAgICAgIHRoaXMuemVybyA9IGJpZ0ludC56ZXJvO1xuICAgICAgICB0aGlzLnAgPSBiaWdJbnQocCk7XG4gICAgICAgIHRoaXMubSA9IDE7XG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5wLm1pbnVzKGJpZ0ludC5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IGJpZ0ludCgyKTtcbiAgICAgICAgdGhpcy5oYWxmID0gdGhpcy5wLnNoaWZ0UmlnaHQoMSk7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgICAgICB0aGlzLm1hc2sgPSBiaWdJbnQub25lLnNoaWZ0TGVmdCh0aGlzLmJpdExlbmd0aCkubWludXMoYmlnSW50Lm9uZSk7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IGJpZ0ludC5vbmUuc2hpZnRMZWZ0KHRoaXMubjY0KjY0KTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lLnNoaWZ0UmlnaHQodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCFyLmVxdWFscyh0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5ucXIuYWRkKHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLnBvdyh0aGlzLm5xciwgZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnMgPSB0aGlzLnplcm87XG4gICAgICAgIHRoaXMudCA9IHRoaXMubmVnb25lO1xuXG4gICAgICAgIHdoaWxlICghdGhpcy50LmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucy5hZGQodGhpcy5vbmUpO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50LnNoaWZ0UmlnaHQodGhpcy5vbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcbiAgICB9XG5cbiAgICBlKGEsYikge1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGJpZ0ludChhLGIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZShyZXMpO1xuXG4gICAgfVxuXG4gICAgYWRkKGEsIGIpIHtcbiAgICAgICAgbGV0IHJlcyA9IGEuYWRkKGIpO1xuICAgICAgICBpZiAocmVzLmdlcSh0aGlzLnApKSB7XG4gICAgICAgICAgICByZXMgPSByZXMubWludXModGhpcy5wKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGlmIChhLmdlcShiKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEubWludXMoYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wLm1pbnVzKGIubWludXMoYSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5wLm1pbnVzKGEpO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLnRpbWVzKGIpLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBzKSB7XG4gICAgICAgIHJldHVybiBiYXNlLnRpbWVzKGJpZ0ludChzKSkubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc3F1YXJlKCkubW9kKHRoaXMucCk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5lcShiKTtcbiAgICB9XG5cbiAgICBuZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5uZXEoYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IGEuZ3QodGhpcy5oYWxmKSA/IGEubWludXModGhpcy5wKSA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gYi5ndCh0aGlzLmhhbGYpID8gYi5taW51cyh0aGlzLnApIDogYjtcbiAgICAgICAgcmV0dXJuIGFhLmx0KGJiKTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gYS5ndCh0aGlzLmhhbGYpID8gYS5taW51cyh0aGlzLnApIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSBiLmd0KHRoaXMuaGFsZikgPyBiLm1pbnVzKHRoaXMucCkgOiBiO1xuICAgICAgICByZXR1cm4gYWEuZ3QoYmIpO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gYS5ndCh0aGlzLmhhbGYpID8gYS5taW51cyh0aGlzLnApIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSBiLmd0KHRoaXMuaGFsZikgPyBiLm1pbnVzKHRoaXMucCkgOiBiO1xuICAgICAgICByZXR1cm4gYWEubGVxKGJiKTtcbiAgICB9XG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IGEuZ3QodGhpcy5oYWxmKSA/IGEubWludXModGhpcy5wKSA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gYi5ndCh0aGlzLmhhbGYpID8gYi5taW51cyh0aGlzLnApIDogYjtcbiAgICAgICAgcmV0dXJuIGFhLmdlcShiYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgaWYgKGIuaXNaZXJvKCkpIHRocm93IG5ldyBFcnJvcihcIkRpdmlzaW9uIGJ5IHplcm9cIik7XG4gICAgICAgIHJldHVybiBhLnRpbWVzKGIubW9kSW52KHRoaXMucCkpLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIGlkaXYoYSwgYikge1xuICAgICAgICBpZiAoYi5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEuZGl2aWRlKGIpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmIChhLmlzWmVybygpKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYS5tb2RJbnYodGhpcy5wKTtcbiAgICB9XG5cbiAgICBtb2QoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5tb2QoYik7XG4gICAgfVxuXG4gICAgcG93KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubW9kUG93KGIsIHRoaXMucCk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubW9kUG93KGIsIHRoaXMucCk7XG4gICAgfVxuXG4gICAgYmFuZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLmFuZChiKS5hbmQodGhpcy5tYXNrKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBib3IoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5vcihiKS5hbmQodGhpcy5tYXNrKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEueG9yKGIpLmFuZCh0aGlzLm1hc2spLm1vZCh0aGlzLnApO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICByZXR1cm4gYS54b3IodGhpcy5tYXNrKS5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICBzaGwoYSwgYikge1xuICAgICAgICBpZiAoYi5sdCh0aGlzLmJpdExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnNoaWZ0TGVmdChiKS5hbmQodGhpcy5tYXNrKS5tb2QodGhpcy5wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wLm1pbnVzKGIpO1xuICAgICAgICAgICAgaWYgKG5iLmx0KHRoaXMuYml0TGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNocihhLCBuYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBiaWdJbnQuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChiLmx0KHRoaXMuYml0TGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEuc2hpZnRSaWdodChiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wLm1pbnVzKGIpO1xuICAgICAgICAgICAgaWYgKG5iLmx0KHRoaXMuYml0TGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNobChhLCBuYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBiaWdJbnQuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgPyBiaWdJbnQuemVybyA6IGJpZ0ludC5vbmU7XG4gICAgfVxuXG4gICAgbG9yKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhLmlzWmVybygpICYmIGIuaXNaZXJvKCkpID8gYmlnSW50Lnplcm8gOiBiaWdJbnQub25lO1xuICAgIH1cblxuICAgIGxub3QoYSkge1xuICAgICAgICByZXR1cm4gYS5pc1plcm8oKSA/IGJpZ0ludC5vbmUgOiBiaWdJbnQuemVybztcbiAgICB9XG5cbiAgICBzcXJ0X29sZChuKSB7XG5cbiAgICAgICAgaWYgKG4uZXF1YWxzKHRoaXMuemVybykpIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUuc2hpZnRSaWdodCh0aGlzLm9uZSkpO1xuICAgICAgICBpZiAoIXJlcy5lcXVhbHModGhpcy5vbmUpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBsZXQgbSA9IHBhcnNlSW50KHRoaXMucyk7XG4gICAgICAgIGxldCBjID0gdGhpcy5ucXJfdG9fdDtcbiAgICAgICAgbGV0IHQgPSB0aGlzLnBvdyhuLCB0aGlzLnQpO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KG4sIHRoaXMuYWRkKHRoaXMudCwgdGhpcy5vbmUpLnNoaWZ0UmlnaHQodGhpcy5vbmUpICk7XG5cbiAgICAgICAgd2hpbGUgKCF0LmVxdWFscyh0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFzcS5lcXVhbHModGhpcy5vbmUpKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHNxID0gdGhpcy5zcXVhcmUoc3EpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiID0gYyBeIG0taS0xXG4gICAgICAgICAgICBsZXQgYiA9IGM7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8IG0taS0xOyBqICsrKSBiID0gdGhpcy5zcXVhcmUoYik7XG5cbiAgICAgICAgICAgIG0gPSBpO1xuICAgICAgICAgICAgYyA9IHRoaXMuc3F1YXJlKGIpO1xuICAgICAgICAgICAgdCA9IHRoaXMubXVsKHQsIGMpO1xuICAgICAgICAgICAgciA9IHRoaXMubXVsKHIsIGIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIuZ3JlYXRlcih0aGlzLnAuc2hpZnRSaWdodCh0aGlzLm9uZSkpKSB7XG4gICAgICAgICAgICByID0gdGhpcy5uZWcocik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBub3JtYWxpemUoYSkge1xuICAgICAgICBhID0gYmlnSW50KGEpO1xuICAgICAgICBpZiAoYS5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAubWludXMoYS5hYnMoKS5tb2QodGhpcy5wKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5tb2QodGhpcy5wKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgbGV0IHJlcyA9IGJpZ0ludCgwKTtcbiAgICAgICAgbGV0IG4gPSBiaWdJbnQodGhpcy5wLnNxdWFyZSgpKTtcbiAgICAgICAgd2hpbGUgKCFuLmlzWmVybygpKSB7XG4gICAgICAgICAgICByZXMgPSByZXMuc2hpZnRMZWZ0KDgpLmFkZChiaWdJbnQoZ2V0UmFuZG9tQnl0ZXMoMSlbMF0pKTtcbiAgICAgICAgICAgIG4gPSBuLnNoaWZ0UmlnaHQoOCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5tb2QodGhpcy5wKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCBiYXNlKSB7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKCFhLmxlc3Nlck9yRXF1YWxzKHRoaXMucC5zaGlmdFJpZ2h0KGJpZ0ludCgxKSkpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLm1pbnVzKGEpO1xuICAgICAgICAgICAgdnMgPSBcIi1cIit2LnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdnMgPSBhLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhLmlzWmVybygpO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGxldCB2O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2ID0gYmlnSW50KDApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjY0OyBpKyspIHtcbiAgICAgICAgICAgICAgICB2ID0gdi5hZGQodiwgcm5nLm5leHRVNjQoKS5zaGlmdExlZnQoNjQqaSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiA9IHYuYW5kKHRoaXMubWFzayk7XG4gICAgICAgIH0gd2hpbGUgKHYuZ2VxKHRoaXMucCkpO1xuICAgICAgICB2ID0gdi50aW1lcyh0aGlzLlJpKS5tb2QodGhpcy5xKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG5cbn1cblxuIiwiaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5pbXBvcnQgRjFGaWVsZF9uYXRpdmUgZnJvbSBcIi4vZjFmaWVsZF9uYXRpdmUuanNcIjtcbmltcG9ydCBGMUZpZWxkX2JpZ2ludCBmcm9tIFwiLi9mMWZpZWxkX2JpZ2ludC5qc1wiO1xuXG5jb25zdCBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcbmxldCBfRjFGaWVsZDtcbmlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgIF9GMUZpZWxkID0gRjFGaWVsZF9uYXRpdmU7XG59IGVsc2Uge1xuICAgIF9GMUZpZWxkID0gRjFGaWVsZF9iaWdpbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0ICBjbGFzcyBGMUZpZWxkIGV4dGVuZHMgX0YxRmllbGQge1xuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgbywgZSwgdGhpcy5uNjQqOCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgU2NhbGFyLnRvUnByQkUoYnVmZiwgbywgZSwgdGhpcy5uNjQqOCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gTW9udGdvbWVyeSBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9ScHJCRShidWZmLCBvLCB0aGlzLm11bCh0aGlzLlIsIGUpKTtcbiAgICB9XG5cbiAgICB0b1JwckxFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByTEUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJCRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKHRoaXMuZnJvbVJwckxFKGJ1ZmYsIG8pLCB0aGlzLlJpKTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKHRoaXMuZnJvbVJwckJFKGJ1ZmYsIG8pLCB0aGlzLlJpKTtcbiAgICB9XG5cbn1cblxuIiwiLyogZ2xvYmFsIEJpZ0ludCAqL1xuaW1wb3J0ICogYXMgU2NhbGFyIGZyb20gXCIuL3NjYWxhci5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKCh0eXBlb2YobykgPT0gXCJiaWdpbnRcIikgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSAge1xuICAgICAgICByZXR1cm4gby50b1N0cmluZygxMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5QmlnSW50cyhvW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAoKHR5cGVvZihvKSA9PSBcInN0cmluZ1wiKSAmJiAoL15bMC05XSskLy50ZXN0KG8pICkpICB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobz09PW51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSAwbjtcbiAgICBsZXQgaSA9IGJ1ZmYubGVuZ3RoO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICB3aGlsZSAoaT4wKSB7XG4gICAgICAgIGlmIChpID49IDQpIHtcbiAgICAgICAgICAgIGkgLT0gNDtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGkpKSA8PCBCaWdJbnQob2Zmc2V0KjgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCo4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50OChpKSkgPDwgQmlnSW50KG9mZnNldCo4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvLTQgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSA0O1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIE51bWJlcihyICYgMHhGRkZGRkZGRm4pKTtcbiAgICAgICAgICAgIHIgPSByID4+IDMybjtcbiAgICAgICAgfSBlbHNlIGlmIChvLTIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgMHhGRkZGbikpO1xuICAgICAgICAgICAgciA9IHIgPj4gMTZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbyAtPSAxO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDgobywgTnVtYmVyKHIgJiAweEZGbikpO1xuICAgICAgICAgICAgciA9IHIgPj4gOG47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSAwbjtcbiAgICBsZXQgaSA9IDA7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIHdoaWxlIChpPGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgIGlmIChpICsgNCA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MzIoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgNCA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSwgdHJ1ZSkpIDw8IEJpZ0ludCggaSo4KTtcbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGVuID0gTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChuKSAtIDEpIC8gOCkgKzE7XG4gICAgICAgIGlmIChsZW49PTApIGxlbiA9IDE7XG4gICAgfVxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICBsZXQgbyA9IDA7XG4gICAgd2hpbGUgKG8gPCBsZW4pIHtcbiAgICAgICAgaWYgKG8rNCA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIDB4RkZGRkZGRkZuKSwgdHJ1ZSApO1xuICAgICAgICAgICAgbyArPSA0O1xuICAgICAgICAgICAgciA9IHIgPj4gMzJuO1xuICAgICAgICB9IGVsc2UgaWYgKG8rMiA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmYuc2V0VWludDE2KE51bWJlcihvLCByICYgMHhGRkZGbiksIHRydWUgKTtcbiAgICAgICAgICAgIG8gKz0gMjtcbiAgICAgICAgICAgIHIgPSByID4+IDE2bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmYuc2V0VWludDgoTnVtYmVyKG8sIHIgJiAweEZGbiksIHRydWUgKTtcbiAgICAgICAgICAgIG8gKz0gMTtcbiAgICAgICAgICAgIHIgPSByID4+IDhuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuIiwiaW1wb3J0IGJpZ0ludCBmcm9tIFwiYmlnLWludGVnZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUJpZ0ludHMobykge1xuICAgIGlmICgodHlwZW9mKG8pID09IFwiYmlnaW50XCIpIHx8IG8uZXEgIT09IHVuZGVmaW5lZCkgIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAoc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKCh0eXBlb2YobykgPT0gXCJzdHJpbmdcIikgJiYgKC9eWzAtOV0rJC8udGVzdChvKSApKSAge1xuICAgICAgICByZXR1cm4gYmlnSW50KG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAodW5zdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gYmlnSW50Lnplcm87XG4gICAgZm9yIChsZXQgaT0wOyBpPGJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbiA9IGJpZ0ludChidWZmW2J1ZmYubGVuZ3RoIC0gaSAtIDFdKTtcbiAgICAgICAgcmVzID0gcmVzLmFkZChuLnNoaWZ0TGVmdChpKjgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGxldCBvID1sZW4tMTtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB3aGlsZSAoKHIuZ3QoYmlnSW50Lnplcm8pKSYmKG8+PTApKSB7XG4gICAgICAgIGxldCBjID0gTnVtYmVyKHIuYW5kKGJpZ0ludChcIjI1NVwiKSkpO1xuICAgICAgICBidWZmW29dID0gYztcbiAgICAgICAgby0tO1xuICAgICAgICByID0gci5zaGlmdFJpZ2h0KDgpO1xuICAgIH1cbiAgICBpZiAoIXIuZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBsZUJ1ZmYyaW50IChidWZmKSB7XG4gICAgbGV0IHJlcyA9IGJpZ0ludC56ZXJvO1xuICAgIGZvciAobGV0IGk9MDsgaTxidWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSBiaWdJbnQoYnVmZltpXSk7XG4gICAgICAgIHJlcyA9IHJlcy5hZGQobi5zaGlmdExlZnQoaSo4KSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBsZXQgbyA9MDtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB3aGlsZSAoKHIuZ3QoYmlnSW50Lnplcm8pKSYmKG88YnVmZi5sZW5ndGgpKSB7XG4gICAgICAgIGxldCBjID0gTnVtYmVyKHIuYW5kKGJpZ0ludCgyNTUpKSk7XG4gICAgICAgIGJ1ZmZbb10gPSBjO1xuICAgICAgICBvKys7XG4gICAgICAgIHIgPSByLnNoaWZ0UmlnaHQoOCk7XG4gICAgfVxuICAgIGlmICghci5lcShiaWdJbnQuemVybykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG4iLCJpbXBvcnQgKiBhcyB1dGlsc19uYXRpdmUgZnJvbSBcIi4vdXRpbHNfbmF0aXZlLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsc19iaWdpbnQgZnJvbSBcIi4vdXRpbHNfYmlnaW50LmpzXCI7XG5cbmxldCB1dGlscyA9IHt9O1xuXG5jb25zdCBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcbmlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xuICAgIE9iamVjdC5hc3NpZ24odXRpbHMsIHV0aWxzX25hdGl2ZSk7XG59IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24odXRpbHMsIHV0aWxzX2JpZ2ludCk7XG59XG5cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGVbaV0gPSBfcmV2U2xvdyhpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3coaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbnV0aWxzLmJpdFJldmVyc2UgPSBmdW5jdGlvbiBiaXRSZXZlcnNlKGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIF9yZXZUYWJsZVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gMTYpICYgMHhGRl0gPDwgOCkgfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDgpICYgMHhGRl0gPDwgMTYpIHxcbiAgICAgICAgKF9yZXZUYWJsZVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59O1xuXG5cbnV0aWxzLmxvZzIgPSBmdW5jdGlvbiBsb2cyKCBWIClcbntcbiAgICByZXR1cm4oICggKCBWICYgMHhGRkZGMDAwMCApICE9PSAwID8gKCBWICY9IDB4RkZGRjAwMDAsIDE2ICkgOiAwICkgfCAoICggViAmIDB4RkYwMEZGMDAgKSAhPT0gMCA/ICggViAmPSAweEZGMDBGRjAwLCA4ICkgOiAwICkgfCAoICggViAmIDB4RjBGMEYwRjAgKSAhPT0gMCA/ICggViAmPSAweEYwRjBGMEYwLCA0ICkgOiAwICkgfCAoICggViAmIDB4Q0NDQ0NDQ0MgKSAhPT0gMCA/ICggViAmPSAweENDQ0NDQ0NDLCAyICkgOiAwICkgfCAoICggViAmIDB4QUFBQUFBQUEgKSAhPT0gMCApICk7XG59O1xuXG51dGlscy5idWZmUmV2ZXJzZUJpdHMgPSBmdW5jdGlvbiBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgZVNpemUpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC9lU2l6ZTtcbiAgICBjb25zdCBiaXRzID0gdXRpbHMubG9nMihuKTtcbiAgICBpZiAobiAhPSAoMSA8PCBiaXRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICBjb25zdCByID0gdXRpbHMuYml0UmV2ZXJzZShpLGJpdHMpO1xuICAgICAgICBpZiAoaT5yKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBidWZmLnNsaWNlKGkqZVNpemUsIChpKzEpKmVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KCBidWZmLnNsaWNlKHIqZVNpemUsIChyKzEpKmVTaXplKSwgaSplU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldCh0bXAsIHIqZVNpemUpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGxldCB7XG4gICAgYml0UmV2ZXJzZSxcbiAgICBsb2cyLFxuICAgIGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50cyxcbiAgICBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmYsXG4gICAgbGVCdWZmMmludCxcbiAgICBsZUludDJCdWZmLFxufSA9IHV0aWxzO1xuXG4iLCJcbmltcG9ydCAqIGFzIF9TY2FsYXIgIGZyb20gXCIuL3NyYy9zY2FsYXIuanNcIjtcbmV4cG9ydCBjb25zdCBTY2FsYXI9X1NjYWxhcjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFBvbEZpZWxkfSBmcm9tIFwiLi9zcmMvcG9sZmllbGQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGMUZpZWxkfSBmcm9tIFwiLi9zcmMvZjFmaWVsZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEYyRmllbGR9IGZyb20gXCIuL3NyYy9mMmZpZWxkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgRjNGaWVsZH0gZnJvbSBcIi4vc3JjL2YzZmllbGQuanNcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFpxRmllbGR9IGZyb20gXCIuL3NyYy9mMWZpZWxkLmpzXCI7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBFQ30gZnJvbSBcIi4vc3JjL2VjLmpzXCI7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBidWlsZEJuMTI4fSBmcm9tIFwiLi9zcmMvYm4xMjguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBidWlsZEJsczEyMzgxfSBmcm9tIFwiLi9zcmMvYmxzMTIzODEuanNcIjtcblxuaW1wb3J0ICogYXMgX3V0aWxzIGZyb20gXCIuL3NyYy91dGlscy5qc1wiO1xuZXhwb3J0IGNvbnN0IHV0aWxzID0gX3V0aWxzO1xuZXhwb3J0IHtkZWZhdWx0IGFzIENoYUNoYX0gZnJvbSBcIi4vc3JjL2NoYWNoYS5qc1wiO1xuXG4iLCJcbmltcG9ydCBmcyBmcm9tXCJmc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbihmaWxlTmFtZSwgb3BlbkZsYWdzLCBjYWNoZVNpemUpIHtcbiAgICBjYWNoZVNpemUgPSBjYWNoZVNpemUgfHwgNDA5Nio2NDtcbiAgICBpZiAoW1widytcIiwgXCJ3eCtcIiwgXCJyXCIsIFwiYXgrXCIsIFwiYStcIl0uaW5kZXhPZihvcGVuRmxhZ3MpIDwwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9wZW4gb3B0aW9uXCIpO1xuICAgIGNvbnN0IGZkID1hd2FpdCBmcy5wcm9taXNlcy5vcGVuKGZpbGVOYW1lLCBvcGVuRmxhZ3MpO1xuXG4gICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmZC5zdGF0KCk7XG5cbiAgICByZXR1cm4gIG5ldyBGYXN0RmlsZShmZCwgc3RhdHMsIGNhY2hlU2l6ZSwgZmlsZU5hbWUpO1xufVxuXG5jbGFzcyBGYXN0RmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihmZCwgc3RhdHMsIGNhY2hlU2l6ZSwgZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5wYWdlQml0cyA9IDg7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAoMSA8PCB0aGlzLnBhZ2VCaXRzKTtcbiAgICAgICAgd2hpbGUgKHRoaXMucGFnZVNpemUgPCBzdGF0cy5ibGtzaXplKjQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUJpdHMgKys7XG4gICAgICAgICAgICB0aGlzLnBhZ2VTaXplICo9IDI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b3RhbFNpemUgPSBzdGF0cy5zaXplO1xuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmZsb29yKChzdGF0cy5zaXplIC0xKSAvIHRoaXMucGFnZVNpemUpKzE7XG4gICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyB0aGlzLnBhZ2VTaXplKSsxO1xuICAgICAgICB0aGlzLnBhZ2VzID0ge307XG4gICAgICAgIHRoaXMucGVuZGluZ0xvYWRzID0gW107XG4gICAgICAgIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBfbG9hZFBhZ2UocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nTG9hZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGFnZTogcCxcbiAgICAgICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBfdHJpZ2dlckxvYWQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBwcm9jZXNzUGVuZGluZ0xvYWRzKCk7XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2VsZi5wYWdlcykubGVuZ3RoID49IHNlbGYubWF4UGFnZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRwID0gZ2V0RGVsZXRhYmxlUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGRwPDApIHsgIC8vIC8vIE5vIHNpemVzIGF2YWlsYWJsZVxuLy8gICAgICAgICAgICAgICAgc2V0VGltZW91dChzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpLCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbZHBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvYWQgPSBzZWxmLnBlbmRpbmdMb2Fkcy5zaGlmdCgpO1xuICAgICAgICBpZiAobG9hZC5wYWdlPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXSA9IHtcbiAgICAgICAgICAgICAgICBkaXJ0eTogZmFsc2UsXG4gICAgICAgICAgICAgICAgYnVmZjogbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlU2l6ZSksXG4gICAgICAgICAgICAgICAgcGVuZGluZ09wczogMSxcbiAgICAgICAgICAgICAgICBzaXplOiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbG9hZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGYucmVhZGluZykge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nTG9hZHMudW5zaGlmdChsb2FkKTtcbiAgICAgICAgICAgIHJldHVybjsgIC8vIE9ubHkgb25lIHJlYWQgYXQgYSB0aW1lLlxuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5yZWFkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHtcbiAgICAgICAgICAgIGRpcnR5OiBmYWxzZSxcbiAgICAgICAgICAgIGJ1ZmY6IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZVNpemUpLFxuICAgICAgICAgICAgcGVuZGluZ09wczogMSxcbiAgICAgICAgICAgIHNpemU6IDBcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5mZC5yZWFkKHBhZ2UuYnVmZiwgMCwgc2VsZi5wYWdlU2l6ZSwgbG9hZC5wYWdlKnNlbGYucGFnZVNpemUpLnRoZW4oKHJlcyk9PiB7XG4gICAgICAgICAgICBwYWdlLnNpemUgPSByZXMuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdID0gcGFnZTtcbiAgICAgICAgICAgIHNlbGYucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgbG9hZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGxvYWQucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQZW5kaW5nTG9hZHMoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdQZW5kaW5nTG9hZHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvYWQgPSBzZWxmLnBlbmRpbmdMb2Fkc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbbG9hZC5wYWdlXSAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5wZW5kaW5nT3BzICsrO1xuICAgICAgICAgICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdQZW5kaW5nTG9hZHMucHVzaChsb2FkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdMb2FkcyA9IG5ld1BlbmRpbmdMb2FkcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldERlbGV0YWJsZVBhZ2UoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBwIGluIHNlbGYucGFnZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gc2VsZi5wYWdlc1twXTtcbiAgICAgICAgICAgICAgICBpZiAoKHBhZ2UuZGlydHkgPT0gZmFsc2UpJiYocGFnZS5wZW5kaW5nT3BzPT0wKSkgcmV0dXJuIHA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfdHJpZ2dlcldyaXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHNlbGYud3JpdGluZykgcmV0dXJuO1xuICAgICAgICBjb25zdCBwID0gc2VsZi5fZ2V0RGlydHlQYWdlKCk7XG4gICAgICAgIGlmIChwPDApIHtcbiAgICAgICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSkgc2VsZi5wZW5kaW5nQ2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLndyaXRpbmc9dHJ1ZTtcbiAgICAgICAgc2VsZi5wYWdlc1twXS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICBzZWxmLmZkLndyaXRlKHNlbGYucGFnZXNbcF0uYnVmZiwgMCwgc2VsZi5wYWdlc1twXS5zaXplLCBwKnNlbGYucGFnZVNpemUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2VsZi53cml0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SIFdyaXRpbmc6IFwiK2Vycik7XG4gICAgICAgICAgICBzZWxmLmVycm9yID0gZXJyO1xuICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBfZ2V0RGlydHlQYWdlKCkge1xuICAgICAgICBmb3IgKGxldCBwIGluIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VzW3BdLmRpcnR5KSByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGUoYnVmZiwgcG9zKSB7XG4gICAgICAgIGlmIChidWZmLmJ5dGVMZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBzZWxmLnBvcyA9IHBvcytidWZmLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChzZWxmLnRvdGFsU2l6ZSA8IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCkgc2VsZi50b3RhbFNpemUgPSBwb3MgKyBidWZmLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gc2VsZi5wYWdlU2l6ZSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigocG9zK2J1ZmYuYnl0ZUxlbmd0aC0xKSAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGZvciAobGV0IGk9Zmlyc3RQYWdlOyBpPD1sYXN0UGFnZTsgaSsrKSBhd2FpdCBzZWxmLl9sb2FkUGFnZShpKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBzZWxmLnBhZ2VTaXplKSA/IChzZWxmLnBhZ2VTaXplIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIsIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIG8sIGwpO1xuICAgICAgICAgICAgZHN0Vmlldy5zZXQoc3JjVmlldyk7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbcF0ucGVuZGluZ09wcyAtLTtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbcF0uc2l6ZSA9IE1hdGgubWF4KG8rbCwgc2VsZi5wYWdlc1twXS5zaXplKTtcbiAgICAgICAgICAgIGlmIChwPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnRvdGFsUGFnZXMgPSBwKzE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyV3JpdGUuYmluZChzZWxmKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBpZiAobGVuID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGxlbiA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IobGVuICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBzZWxmLnBvcyA9IHBvcytsZW47XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gc2VsZi5wYWdlU2l6ZSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigocG9zK2xlbi0xKSAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGZvciAobGV0IGk9Zmlyc3RQYWdlOyBpPD1sYXN0UGFnZTsgaSsrKSBhd2FpdCBzZWxmLl9sb2FkUGFnZShpKTtcblxuICAgICAgICBsZXQgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGxldCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZik7XG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIHNlbGYucGFnZVNpemU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gcG9zICsgbGVuID4gc2VsZi50b3RhbFNpemUgPyBsZW4gLSAocG9zICsgbGVuIC0gc2VsZi50b3RhbFNpemUpOiBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIG8sIGwpO1xuICAgICAgICAgICAgYnVmZi5zZXQoc3JjVmlldywgZHN0Vmlldy5ieXRlTGVuZ3RoLXIpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIF90cnlDbG9zZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICghc2VsZi5wZW5kaW5nQ2xvc2UpIHJldHVybjtcbiAgICAgICAgaWYgKHNlbGYuZXJyb3IpIHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlUmVqZWN0KHNlbGYuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHAgPSBzZWxmLl9nZXREaXJ0eVBhZ2UoKTtcbiAgICAgICAgaWYgKChwPj0wKSB8fCAoc2VsZi53cml0aW5nKSB8fCAoc2VsZi5yZWFkaW5nKSB8fCAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApKSByZXR1cm47XG4gICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlKCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbG9zaW5nIHRoZSBmaWxlIHR3aWNlXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2UgPSByZXNvbHZlO1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2VSZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgc2VsZi5mZC5jbG9zZSgpO1xuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZkLmNsb3NlKCk7XG4gICAgICAgICAgICB0aHJvdyAoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGF3YWl0IHNlbGYuY2xvc2UoKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IGIgPSBVaW50MzJBcnJheS5vZih2KTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKG5ldyBVaW50OEFycmF5KGIuYnVmZmVyKSwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgYnVmZlYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKGJ1ZmYsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBiID0gVWludDMyQXJyYXkub2YodiAmIDB4RkZGRkZGRkYsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZShuZXcgVWludDhBcnJheShiLmJ1ZmZlciksIHBvcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXcobykge1xuICAgIGNvbnN0IGluaXRpYWxTaXplID0gby5pbml0aWFsU2l6ZSB8fCAxPDwyMDtcbiAgICBjb25zdCBmZCA9IG5ldyBNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQuby5kYXRhID0gbmV3IFVpbnQ4QXJyYXkoaW5pdGlhbFNpemUpO1xuICAgIGZkLmFsbG9jU2l6ZSA9IGluaXRpYWxTaXplO1xuICAgIGZkLnRvdGFsU2l6ZSA9IDA7XG4gICAgZmQucmVhZE9ubHkgPSBmYWxzZTtcbiAgICBmZC5wb3MgPSAwO1xuICAgIHJldHVybiBmZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRFeGlzdGluZyhvKSB7XG4gICAgY29uc3QgZmQgPSBuZXcgTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLmFsbG9jU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnRvdGFsU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICBmZC5wb3MgPSAwO1xuICAgIHJldHVybiBmZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXcml0ZUV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQuYWxsb2NTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQudG90YWxTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSBmYWxzZTtcbiAgICBmZC5wb3MgPSAwO1xuICAgIHJldHVybiBmZDtcbn1cblxuY2xhc3MgTWVtRmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEgPDwgMTQ7ICAvLyBmb3IgY29tcGF0aWJpbGl0eVxuICAgIH1cblxuICAgIF9yZXNpemVJZk5lZWRlZChuZXdMZW4pIHtcbiAgICAgICAgaWYgKG5ld0xlbiA+IHRoaXMuYWxsb2NTaXplKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdBbGxvY1NpemUgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSArICgxIDw8IDIwKSxcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKHRoaXMuYWxsb2NTaXplICogMS4xKSxcbiAgICAgICAgICAgICAgICBuZXdMZW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IFVpbnQ4QXJyYXkobmV3QWxsb2NTaXplKTtcbiAgICAgICAgICAgIG5ld0RhdGEuc2V0KHRoaXMuby5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gbmV3RGF0YTtcbiAgICAgICAgICAgIHRoaXMuYWxsb2NTaXplID0gbmV3QWxsb2NTaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGUoYnVmZiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPXRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkgdGhyb3cgbmV3IEVycm9yKFwiV3JpdGluZyBhIHJlYWQgb25seSBmaWxlXCIpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5vLmRhdGEuc2V0KGJ1ZmYsIHBvcyk7XG5cbiAgICAgICAgaWYgKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCA+IHRoaXMudG90YWxTaXplKSB0aGlzLnRvdGFsU2l6ZSA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkKGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChwb3MgKyBsZW4gPiB0aGlzLnRvdGFsU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGxlbik7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IHRoaXMuby5kYXRhLnNsaWNlKHBvcywgcG9zK2xlbik7XG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgbGVuO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuby5kYXRhLmJ5dGVMZW5ndGggIT0gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gdGhpcy5vLmRhdGEuc2xpY2UoMCwgdGhpcy50b3RhbFNpemUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBiID0gVWludDMyQXJyYXkub2Yodik7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZShuZXcgVWludDhBcnJheShiLmJ1ZmZlciksIHBvcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVVQkUzMih2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZShidWZmLCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgd3JpdGVVTEU2NCh2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgYiA9IFVpbnQzMkFycmF5Lm9mKHYgJiAweEZGRkZGRkZGLCBNYXRoLmZsb29yKHYgLyAweDEwMDAwMDAwMCkpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUobmV3IFVpbnQ4QXJyYXkoYi5idWZmZXIpLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG59XG4iLCIvKiBnbG9iYWwgZmV0Y2ggKi9cbmltcG9ydCB7IG9wZW4gfSBmcm9tIFwiLi9vc2ZpbGUuanNcIjtcbmltcG9ydCAqIGFzIG1lbUZpbGUgZnJvbSBcIi4vbWVtZmlsZS5qc1wiO1xuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVPdmVycmlkZShvLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wZW4oby5maWxlTmFtZSwgXCJ3K1wiLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5vT3ZlcnJpZGUobywgYikge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYlxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIFwid3grXCIsIG8uY2FjaGVTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBtZW1GaWxlLmNyZWF0ZU5ldyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8sIGIpIHtcbiAgICBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwibWVtXCIsXG4gICAgICAgICAgICBkYXRhOiBvXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmV0Y2gobykudGhlbiggZnVuY3Rpb24ocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYWIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibWVtXCIsXG4gICAgICAgICAgICAgICAgZGF0YTogYnVmZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgICAgICBjYWNoZVNpemU6IGJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgb3BlbihvLmZpbGVOYW1lLCBcInJcIiwgby5jYWNoZVNpemUpO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwibWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG1lbUZpbGUucmVhZEV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZyhvLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wZW4oby5maWxlTmFtZSwgXCJhK1wiLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3RpbmdPckNyZWF0ZShvLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wZW4oby5maWxlTmFtZSwgXCJheCtcIiwgby5jYWNoZVNpemUpO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwibWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIG1lbUZpbGUucmVhZFdyaXRlRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7U2NhbGFyLCBacUZpZWxkfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcblxuYXN5bmMgZnVuY3Rpb24gcmVhZEJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIG1heFZlcnNpb24pIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGZpbGVOYW1lKTtcblxuICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKDQpO1xuICAgIGxldCByZWFkZWRUeXBlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSByZWFkZWRUeXBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYltpXSk7XG5cbiAgICBpZiAocmVhZGVkVHlwZSAhPSB0eXBlKSB0aHJvdyBuZXcgRXJyb3IoZmlsZU5hbWUgKyBcIjogSW52YWxpZCBGaWxlIGZvcm1hdFwiKTtcblxuICAgIGxldCB2ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBpZiAodj5tYXhWZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJWZXJzaW9uIG5vdCBzdXBwb3J0ZWRcIik7XG5cbiAgICBjb25zdCBuU2VjdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIC8vIFNjYW4gc2VjdGlvbnNcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blNlY3Rpb25zOyBpKyspIHtcbiAgICAgICAgbGV0IGh0ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGxldCBobCA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zW2h0XSA9PSBcInVuZGVmaW5lZFwiKSBzZWN0aW9uc1todF0gPSBbXTtcbiAgICAgICAgc2VjdGlvbnNbaHRdLnB1c2goe1xuICAgICAgICAgICAgcDogZmQucG9zLFxuICAgICAgICAgICAgc2l6ZTogaGxcbiAgICAgICAgfSk7XG4gICAgICAgIGZkLnBvcyArPSBobDtcbiAgICB9XG5cbiAgICByZXR1cm4ge2ZkLCBzZWN0aW9uc307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBpZFNlY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIGZkLnJlYWRpbmdTZWN0aW9uICE9IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFzZWN0aW9uc1tpZFNlY3Rpb25dKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IE1pc3Npbmcgc2VjdGlvbiBcIisgaWRTZWN0aW9uICk7XG4gICAgaWYgKHNlY3Rpb25zW2lkU2VjdGlvbl0ubGVuZ3RoPjEpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IFNlY3Rpb24gRHVwbGljYXRlZCBcIiAraWRTZWN0aW9uKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0ucDtcblxuICAgIGZkLnJlYWRpbmdTZWN0aW9uID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5kUmVhZFNlY3Rpb24oZmQsIG5vQ2hlY2spIHtcbiAgICBpZiAodHlwZW9mIGZkLnJlYWRpbmdTZWN0aW9uID09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCByZWFkaW5nIGEgc2VjdGlvblwiKTtcbiAgICBpZiAoIW5vQ2hlY2spIHtcbiAgICAgICAgaWYgKGZkLnBvcy1mZC5yZWFkaW5nU2VjdGlvbi5wICE9IGZkLnJlYWRpbmdTZWN0aW9uLnNpemUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHNlY3Rpb24gc2l6ZVwiKTtcbiAgICB9XG4gICAgZGVsZXRlIGZkLnJlYWRpbmdTZWN0aW9uO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRCaWdJbnQoZmQsIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCwgcG9zKTtcbiAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShidWZmLCAwLCBuOCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSGVhZGVyKGZkLHNlY3Rpb25zKSB7XG5cblxuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICAvLyBSZWFkIEhlYWRlclxuICAgIHJlcy5uOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5wcmltZSA9IGF3YWl0IHJlYWRCaWdJbnQoZmQsIHJlcy5uOCk7XG4gICAgcmVzLkZyID0gbmV3IFpxRmllbGQocmVzLnByaW1lKTtcblxuICAgIHJlcy5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uT3V0cHV0cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uUHViSW5wdXRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5QcnZJbnB1dHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMubkxhYmVscyA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgIHJlcy5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZChmaWxlTmFtZSwgbG9hZENvbnN0cmFpbnRzLCBsb2FkTWFwKSB7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IHJlYWRCaW5GaWxlKGZpbGVOYW1lLCBcInIxY3NcIiwgMSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgbG9hZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG5cbiAgICBpZiAobG9hZENvbnN0cmFpbnRzKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICAgICAgcmVzLmNvbnN0cmFpbnRzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXMubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBhd2FpdCByZWFkQ29uc3RyYWludCgpO1xuICAgICAgICAgICAgcmVzLmNvbnN0cmFpbnRzLnB1c2goYyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQpO1xuICAgIH1cblxuICAgIC8vIFJlYWQgTGFiZWxzXG5cbiAgICBpZiAobG9hZE1hcCkge1xuICAgICAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMyk7XG5cbiAgICAgICAgcmVzLm1hcCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzLm5WYXJzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgICAgICAgICAgcmVzLm1hcC5wdXNoKGlkeCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQpO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgIGNvbnN0IGMgPSBbXTtcbiAgICAgICAgY1swXSA9IGF3YWl0IHJlYWRMQygpO1xuICAgICAgICBjWzFdID0gYXdhaXQgcmVhZExDKCk7XG4gICAgICAgIGNbMl0gPSBhd2FpdCByZWFkTEMoKTtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZExDKCkge1xuICAgICAgICBjb25zdCBsYz0ge307XG4gICAgICAgIGNvbnN0IG5JZHggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5JZHg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByZXMuRnIuZShhd2FpdCByZWFkQmlnSW50KGZkLCByZXMubjgpKTtcbiAgICAgICAgICAgIGxjW2lkeF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxjO1xuICAgIH1cbn1cblxuIiwiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtsb2FkIGFzIGxvYWRSMWNzfSAgZnJvbSBcInIxY3NmaWxlXCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByMWNzSW5mbyhyMWNzTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBjaXIgPSBhd2FpdCBsb2FkUjFjcyhyMWNzTmFtZSk7XG5cbiAgICBpZiAoU2NhbGFyLmVxKGNpci5wcmltZSwgYm4xMjhyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkN1cnZlOiBibi0xMjhcIik7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoY2lyLnByaW1lLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiQ3VydmU6IGJsczEyLTM4MVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgVW5rbm93biBDdXJ2ZS4gUHJpbWU6ICR7U2NhbGFyLnRvU3RyaW5nKGNpci5wcmltZSl9YCk7XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFdpcmVzOiAke2Npci5uVmFyc31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBDb25zdHJhaW50czogJHtjaXIubkNvbnN0cmFpbnRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFByaXZhdGUgSW5wdXRzOiAke2Npci5uUHJ2SW5wdXRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFB1YmxpYyBJbnB1dHM6ICR7Y2lyLm5QdWJJbnB1dHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgT3V0cHV0czogJHtjaXIubk91dHB1dHN9YCk7XG5cbiAgICByZXR1cm4gY2lyO1xufVxuIiwiaW1wb3J0IHtsb2FkIGFzIGxvYWRSMWNzfSAgZnJvbSBcInIxY3NmaWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHIxY3NFeHBvcnRKc29uKHIxY3NGaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBjaXIgPSBhd2FpdCBsb2FkUjFjcyhyMWNzRmlsZU5hbWUsIHRydWUsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNpcjtcbn1cbiIsImltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBsb2FkU3ltYm9scyhzeW1GaWxlTmFtZSkge1xuICAgIGNvbnN0IHN5bSA9IHtcbiAgICAgICAgbGFiZWxJZHgyTmFtZTogWyBcIm9uZVwiIF0sXG4gICAgICAgIHZhcklkeDJOYW1lOiBbIFwib25lXCIgXSxcbiAgICAgICAgY29tcG9uZW50SWR4Mk5hbWU6IFtdXG4gICAgfTtcbiAgICBjb25zdCBmZCA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhzeW1GaWxlTmFtZSk7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoZmQudG90YWxTaXplKTtcbiAgICBjb25zdCBzeW1zU3RyID0gbmV3IFRleHREZWNvZGVyKFwidXRmLThcIikuZGVjb2RlKGJ1ZmYpO1xuICAgIGNvbnN0IGxpbmVzID0gc3ltc1N0ci5zcGxpdChcIlxcblwiKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYXJyID0gbGluZXNbaV0uc3BsaXQoXCIsXCIpO1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCE9NCkgY29udGludWU7XG4gICAgICAgIGlmIChzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSkge1xuICAgICAgICAgICAgc3ltLnZhcklkeDJOYW1lW2FyclsxXV0gKz0gXCJ8XCIgKyBhcnJbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSA9IGFyclszXTtcbiAgICAgICAgfVxuICAgICAgICBzeW0ubGFiZWxJZHgyTmFtZVthcnJbMF1dID0gYXJyWzNdO1xuICAgICAgICBpZiAoIXN5bS5jb21wb25lbnRJZHgyTmFtZVthcnJbMl1dKSB7XG4gICAgICAgICAgICBzeW0uY29tcG9uZW50SWR4Mk5hbWVbYXJyWzJdXSA9IGV4dHJhY3RDb21wb25lbnQoYXJyWzNdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gc3ltO1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdENvbXBvbmVudChuYW1lKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBhcnIucG9wKCk7IC8vIFJlbW92ZSB0aGUgbGFzciBlbGVtZW50XG4gICAgICAgIHJldHVybiBhcnIuam9pbihcIi5cIik7XG4gICAgfVxufVxuIiwiaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgY2lyY29tUnVudGltZSBmcm9tIFwiY2lyY29tX3J1bnRpbWVcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5pbXBvcnQgbG9hZFN5bXMgZnJvbSBcIi4vbG9hZHN5bXMuanNcIjtcblxuY29uc3QgeyBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIgfSA9IGNpcmNvbVJ1bnRpbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHd0bnNEZWJ1ZyhpbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIHN5bU5hbWUsIG9wdGlvbnMsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG5cbiAgICBsZXQgd2NPcHMgPSB7XG4gICAgICAgIHNhbml0eUNoZWNrOiB0cnVlXG4gICAgfTtcbiAgICBsZXQgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgaWYgKG9wdGlvbnMuc2V0KSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nU2V0U2lnbmFsPSBmdW5jdGlvbihsYWJlbElkeCwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiU0VUIFwiICsgc3ltLmxhYmVsSWR4Mk5hbWVbbGFiZWxJZHhdICsgXCIgPC0tIFwiICsgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmdldCkge1xuICAgICAgICBpZiAoIXN5bSkgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgICAgIHdjT3BzLmxvZ0dldFNpZ25hbD0gZnVuY3Rpb24odmFySWR4LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJHRVQgXCIgKyBzeW0ubGFiZWxJZHgyTmFtZVt2YXJJZHhdICsgXCIgLS0+IFwiICsgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyaWdnZXIpIHtcbiAgICAgICAgaWYgKCFzeW0pIHN5bSA9IGF3YWl0IGxvYWRTeW1zKHN5bU5hbWUpO1xuICAgICAgICB3Y09wcy5sb2dTdGFydENvbXBvbmVudD0gZnVuY3Rpb24oY0lkeCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJTVEFSVDogXCIgKyBzeW0uY29tcG9uZW50SWR4Mk5hbWVbY0lkeF0pO1xuICAgICAgICB9O1xuICAgICAgICB3Y09wcy5sb2dGaW5pc2hDb21wb25lbnQ9IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRklOSVNIOiBcIiArIHN5bS5jb21wb25lbnRJZHgyTmFtZVtjSWR4XSk7XG4gICAgICAgIH07XG4gICAgfVxuXG5cbiAgICBjb25zdCB3YyA9IGF3YWl0IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlcih3YXNtLCB3Y09wcyk7XG4gICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZVdpdG5lc3MoaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXdG5zID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUod3Ruc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMik7XG5cbiAgICBhd2FpdCB3dG5zVXRpbHMud3JpdGUoZmRXdG5zLCB3LCB3Yy5wcmltZSk7XG5cbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbn1cbiIsImltcG9ydCB7cmVhZH0gZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zRXhwb3J0SnNvbih3dG5zRmlsZU5hbWUpIHtcblxuICAgIGNvbnN0IHcgPSBhd2FpdCByZWFkKHd0bnNGaWxlTmFtZSk7XG5cbiAgICByZXR1cm4gdztcbn1cbiIsImNvbnN0IFNVQkFSUkFZX1NJWkUgPSAweDQwMDAwO1xuXG5jb25zdCBCaWdBcnJheUhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5nZXRFbGVtZW50KHByb3ApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIG9ialtwcm9wXTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24ob2JqLCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnNldEVsZW1lbnQocHJvcCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNsYXNzIF9CaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IgKGluaXRTaXplKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gaW5pdFNpemUgfHwgMDtcbiAgICAgICAgdGhpcy5hcnIgPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGluaXRTaXplOyBpKz1TVUJBUlJBWV9TSVpFKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpL1NVQkFSUkFZX1NJWkVdID0gbmV3IEFycmF5KE1hdGgubWluKFNVQkFSUkFZX1NJWkUsIGluaXRTaXplIC0gaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwdXNoICgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50ICh0aGlzLmxlbmd0aCwgYXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNsaWNlIChmLCB0KSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheSh0LWYpO1xuICAgICAgICBmb3IgKGxldCBpPWY7IGk8IHQ7IGkrKykgYXJyW2ktZl0gPSB0aGlzLmdldEVsZW1lbnQoaSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGdldEVsZW1lbnQoaWR4KSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyW2lkeDFdID8gdGhpcy5hcnJbaWR4MV1baWR4Ml0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldEVsZW1lbnQoaWR4LCB2YWx1ZSkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgaWYgKCF0aGlzLmFycltpZHgxXSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaWR4MV0gPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHRoaXMuYXJyW2lkeDFdW2lkeDJdID0gdmFsdWU7XG4gICAgICAgIGlmIChpZHggPj0gdGhpcy5sZW5ndGgpIHRoaXMubGVuZ3RoID0gaWR4KzE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRLZXlzKCkge1xuICAgICAgICBjb25zdCBuZXdBID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRoaXMuYXJyW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcnJbaV1bal0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0EucHVzaChpKlNVQkFSUkFZX1NJWkUraik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0E7XG4gICAgfVxufVxuXG5jbGFzcyBCaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IoIGluaXRTaXplICkge1xuICAgICAgICBjb25zdCBvYmogPSBuZXcgX0JpZ0FycmF5KGluaXRTaXplKTtcbiAgICAgICAgY29uc3QgZXh0T2JqID0gbmV3IFByb3h5KG9iaiwgQmlnQXJyYXlIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV4dE9iajtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJpZ0FycmF5O1xuIiwiXG5pbXBvcnQge2xvYWRIZWFkZXIgYXMgbG9hZFIxY3NIZWFkZXJ9IGZyb20gXCJyMWNzZmlsZVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcbmltcG9ydCB7IGxvZzIsIGZvcm1hdEhhc2ggfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBuZXdaS2V5KHIxY3NOYW1lLCBwdGF1TmFtZSwgemtleU5hbWUsIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcbiAgICBjb25zdCBjc0hhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3Qge2ZkOiBmZFIxY3MsIHNlY3Rpb25zOiBzZWN0aW9uc1IxY3N9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHIxY3NOYW1lLCBcInIxY3NcIiwgMSk7XG4gICAgY29uc3QgcjFjcyA9IGF3YWl0IGxvYWRSMWNzSGVhZGVyKGZkUjFjcywgc2VjdGlvbnNSMWNzKTtcblxuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogc2VjdGlvbnNQVGF1fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwdGF1TmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBzZWN0aW9uc1BUYXUpO1xuXG4gICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAxLCAxMCk7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgaWYgKHIxY3MucHJpbWUgIT0gY3VydmUucikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJyMWNzIGN1cnZlIGRvZXMgbm90IG1hdGNoIHBvd2VycyBvZiB0YXUgY2VyZW1vbnkgY3VydmVcIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBjaXJQb3dlciA9IGxvZzIocjFjcy5uQ29uc3RyYWludHMgKyByMWNzLm5QdWJJbnB1dHMgKyByMWNzLm5PdXRwdXRzICsxIC0xKSArMTtcblxuICAgIGlmIChjaXJQb3dlciA+IHBvd2VyKzEpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBjaXJjdWl0IHRvbyBiaWcgZm9yIHRoaXMgcG93ZXIgb2YgdGF1IGNlcmVtb255LiAke3IxY3MubkNvbnN0cmFpbnRzfSoyID4gMioqJHtwb3dlcn1gKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGlmICghc2VjdGlvbnNQVGF1WzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlcnMgb2YgdGF1IGlzIG5vdCBwcmVwYXJlZC5cIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBuUHVibGljID0gcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0cztcbiAgICBjb25zdCBkb21haW5TaXplID0gMSA8PCBjaXJQb3dlcjtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDEpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKDEpOyAvLyBHcm90aFxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIC8vIFdyaXRlIHRoZSBHcm90aCBoZWFkZXIgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAyKTtcbiAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICBjb25zdCBwcmltZVIgPSBjdXJ2ZS5yO1xuICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVIpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgY29uc3QgUnIgPSBTY2FsYXIubW9kKFNjYWxhci5zaGwoMSwgbjhyKjgpLCBwcmltZVIpO1xuICAgIGNvbnN0IFIyciA9IGN1cnZlLkZyLmUoU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgcHJpbWVSKSk7XG5cbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHEpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUSwgbjhxKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUiwgbjhyKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihyMWNzLm5WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoZG9tYWluU2l6ZSk7ICAgICAgICAgICAgICAgICAgLy8gZG9tYWluU2l6ZVxuXG4gICAgbGV0IGJBbHBoYTE7XG4gICAgYkFscGhhMSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMSwgc2VjdGlvbnNQVGF1WzRdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShiQWxwaGExKTtcbiAgICBiQWxwaGExID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYkFscGhhMSk7XG4gICAgY3NIYXNoZXIudXBkYXRlKGJBbHBoYTEpO1xuXG4gICAgbGV0IGJCZXRhMTtcbiAgICBiQmV0YTEgPSBhd2FpdCBmZFBUYXUucmVhZChzRzEsIHNlY3Rpb25zUFRhdVs1XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkJldGExKTtcbiAgICBiQmV0YTEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShiQmV0YTEpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQmV0YTEpO1xuXG4gICAgbGV0IGJCZXRhMjtcbiAgICBiQmV0YTIgPSBhd2FpdCBmZFBUYXUucmVhZChzRzIsIHNlY3Rpb25zUFRhdVs2XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkJldGEyKTtcbiAgICBiQmV0YTIgPSBhd2FpdCBjdXJ2ZS5HMi5iYXRjaExFTXRvVShiQmV0YTIpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQmV0YTIpO1xuXG4gICAgY29uc3QgYmcxID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICBjdXJ2ZS5HMS50b1JwckxFTShiZzEsIDAsIGN1cnZlLkcxLmcpO1xuICAgIGNvbnN0IGJnMiA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgY3VydmUuRzIudG9ScHJMRU0oYmcyLCAwLCBjdXJ2ZS5HMi5nKTtcbiAgICBjb25zdCBiZzFVID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChiZzFVLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjb25zdCBiZzJVID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZChiZzJVLCAwLCBjdXJ2ZS5HMi5nKTtcblxuICAgIGF3YWl0IGZkWktleS53cml0ZShiZzIpOyAgICAgICAgLy8gZ2FtbWEyXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJnMSk7ICAgICAgICAvLyBkZWx0YTFcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYmcyKTsgICAgICAgIC8vIGRlbHRhMlxuICAgIGNzSGFzaGVyLnVwZGF0ZShiZzJVKTsgICAgICAvLyBnYW1tYTJcbiAgICBjc0hhc2hlci51cGRhdGUoYmcxVSk7ICAgICAgLy8gZGVsdGExXG4gICAgY3NIYXNoZXIudXBkYXRlKGJnMlUpOyAgICAgIC8vIGRlbHRhMlxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuXG4gICAgY29uc3QgQSA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBCMSA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBCMiA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBDID0gbmV3IEJpZ0FycmF5KHIxY3MublZhcnMtIG5QdWJsaWMgLTEpO1xuICAgIGNvbnN0IElDID0gbmV3IEFycmF5KG5QdWJsaWMrMSk7XG5cbiAgICBjb25zdCBidWZmQ29lZmYgPSBuZXcgVWludDhBcnJheSgxMiArIGN1cnZlLkZyLm44KTtcbiAgICBjb25zdCBidWZmQ29lZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmZDb2VmZi5idWZmZXIpO1xuXG4gICAgY29uc3QgbFRhdUcxID0gc2VjdGlvbnNQVGF1WzEyXVswXS5wICsgKCgxIDw8IGNpclBvd2VyKSAtMSkqc0cxO1xuICAgIGNvbnN0IGxUYXVHMiA9IHNlY3Rpb25zUFRhdVsxM11bMF0ucCArICgoMSA8PCBjaXJQb3dlcikgLTEpKnNHMjtcbiAgICBjb25zdCBsQWxwaGFUYXVHMSA9IHNlY3Rpb25zUFRhdVsxNF1bMF0ucCArICgoMSA8PCBjaXJQb3dlcikgLTEpKnNHMTtcbiAgICBjb25zdCBsQmV0YVRhdUcxID0gc2VjdGlvbnNQVGF1WzE1XVswXS5wICsgKCgxIDw8IGNpclBvd2VyKSAtMSkqc0cxO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuXG4gICAgY29uc3QgcE5Db2VmcyA9ICBmZFpLZXkucG9zO1xuICAgIGxldCBuQ29lZnMgPSAwO1xuICAgIGZkWktleS5wb3MgKz0gNDtcbiAgICBmb3IgKGxldCBjPTA7IGM8cjFjcy5uQ29uc3RyYWludHM7IGMrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihjJTEwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHByb2Nlc3NpbmcgY29uc3RyYWludHM6ICR7Y30vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgY29uc3QgbkEgPSBhd2FpdCBmZFIxY3MucmVhZFVMRTMyKCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzID0gYXdhaXQgZmRSMWNzLnJlYWRVTEUzMigpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IGF3YWl0IGZkUjFjcy5yZWFkKHIxY3MubjgpO1xuXG4gICAgICAgICAgICBjb25zdCBsMSA9IGxUYXVHMSArIHNHMSpjO1xuICAgICAgICAgICAgY29uc3QgbDIgPSBsQmV0YVRhdUcxICsgc0cxKmM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIEFbc10gPT09IFwidW5kZWZpbmVkXCIpIEFbc10gPSBbXTtcbiAgICAgICAgICAgIEFbc10ucHVzaChbbDEsIGNvZWZdKTtcblxuICAgICAgICAgICAgaWYgKHMgPD0gblB1YmxpYykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDIsIGNvZWZdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDW3MtIG5QdWJsaWMgLTFdID09PSBcInVuZGVmaW5lZFwiKSBDW3MtIG5QdWJsaWMgLTFdID0gW107XG4gICAgICAgICAgICAgICAgQ1tzIC0gblB1YmxpYyAtMV0ucHVzaChbbDIsIGNvZWZdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHdyaXRlQ29lZigwLCBjLCBzLCBjb2VmKTtcbiAgICAgICAgICAgIG5Db2VmcyArKztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5CID0gYXdhaXQgZmRSMWNzLnJlYWRVTEUzMigpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcyA9IGF3YWl0IGZkUjFjcy5yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBhd2FpdCBmZFIxY3MucmVhZChyMWNzLm44KTtcblxuICAgICAgICAgICAgY29uc3QgbDEgPSBsVGF1RzEgKyBzRzEqYztcbiAgICAgICAgICAgIGNvbnN0IGwyID0gbFRhdUcyICsgc0cyKmM7XG4gICAgICAgICAgICBjb25zdCBsMyA9IGxBbHBoYVRhdUcxICsgc0cxKmM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIEIxW3NdID09PSBcInVuZGVmaW5lZFwiKSBCMVtzXSA9IFtdO1xuICAgICAgICAgICAgQjFbc10ucHVzaChbbDEsIGNvZWZdKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgQjJbc10gPT09IFwidW5kZWZpbmVkXCIpIEIyW3NdID0gW107XG4gICAgICAgICAgICBCMltzXS5wdXNoKFtsMiwgY29lZl0pO1xuXG4gICAgICAgICAgICBpZiAocyA8PSBuUHVibGljKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICBJQ1tzXS5wdXNoKFtsMywgY29lZl0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICBDW3MtIG5QdWJsaWMgLTFdLnB1c2goW2wzLCBjb2VmXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IHdyaXRlQ29lZigxLCBjLCBzLCBjb2VmKTtcbiAgICAgICAgICAgIG5Db2VmcyArKztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5DID0gYXdhaXQgZmRSMWNzLnJlYWRVTEUzMigpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcyA9IGF3YWl0IGZkUjFjcy5yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBhd2FpdCBmZFIxY3MucmVhZChyMWNzLm44KTtcblxuICAgICAgICAgICAgY29uc3QgbDEgPSBsVGF1RzEgKyBzRzEqYztcbiAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIElDW3NdID09PSBcInVuZGVmaW5lZFwiKSBJQ1tzXSA9IFtdO1xuICAgICAgICAgICAgICAgIElDW3NdLnB1c2goW2wxLCBjb2VmXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ1tzLSBuUHVibGljIC0xXSA9PT0gXCJ1bmRlZmluZWRcIikgQ1tzLSBuUHVibGljIC0xXSA9IFtdO1xuICAgICAgICAgICAgICAgIENbcy0gblB1YmxpYyAtMV0ucHVzaChbbDEsIGNvZWZdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJPbmUgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5Gci5uOCk7XG4gICAgY3VydmUuRnIudG9ScHJMRShiT25lLCAwLCBjdXJ2ZS5Gci5lKDEpKTtcbiAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBuUHVibGljIDsgcysrKSB7XG4gICAgICAgIGNvbnN0IGwxID0gbFRhdUcxICsgc0cxKihyMWNzLm5Db25zdHJhaW50cyArIHMpO1xuICAgICAgICBjb25zdCBsMiA9IGxCZXRhVGF1RzEgKyBzRzEqKHIxY3MubkNvbnN0cmFpbnRzICsgcyk7XG4gICAgICAgIGlmICh0eXBlb2YgQVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQVtzXSA9IFtdO1xuICAgICAgICBBW3NdLnB1c2goW2wxLCBiT25lXSk7XG4gICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgIElDW3NdLnB1c2goW2wyLCBiT25lXSk7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29lZigwLCByMWNzLm5Db25zdHJhaW50cyArIHMsIHMsIGJPbmUpO1xuICAgICAgICBuQ29lZnMgKys7XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkUG9zID0gZmRaS2V5LnBvcztcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuQ29lZnMsIHBOQ29lZnMpO1xuICAgIGZkWktleS5wb3MgPSBvbGRQb3M7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkUjFjcyk7XG5cbi8qXG4gICAgektleS5oRXhwcyA9IG5ldyBBcnJheSh6S2V5LmRvbWFpblNpemUtMSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPCB6S2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICBjb25zdCB0MSA9IGF3YWl0IHJlYWRFdmFsdWF0aW9uKFwidGF1RzFcIiwgaSk7XG4gICAgICAgIGNvbnN0IHQyID0gYXdhaXQgcmVhZEV2YWx1YXRpb24oXCJ0YXVHMVwiLCBpK3pLZXkuZG9tYWluU2l6ZSk7XG4gICAgICAgIHpLZXkuaEV4cHNbaV0gPSBjdXJ2ZS5HMS5zdWIodDIsIHQxKTtcbiAgICB9XG4qL1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDMsIFwiRzFcIiwgSUMsIFwiSUNcIik7XG5cbiAgICAvLyBXcml0ZSBIc1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDkpO1xuICAgIGNvbnN0IG8gPSBzZWN0aW9uc1BUYXVbMTJdWzBdLnAgKyAoKDEgPDwgKGNpclBvd2VyKzEpKSAtMSkqc0cxO1xuICAgIGZvciAobGV0IGk9MDsgaTwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZFBUYXUucmVhZChzRzEsIG8gKyAoaSoyKzEpKnNHMSApO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZik7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICBhd2FpdCBoYXNoSFBvaW50cygpO1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDgsIFwiRzFcIiwgQywgXCJDXCIpO1xuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg1LCBcIkcxXCIsIEEsIFwiQVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNiwgXCJHMVwiLCBCMSwgXCJCMVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNywgXCJHMlwiLCBCMiwgXCJCMlwiKTtcblxuICAgIGNvbnN0IGNzSGFzaCA9IGNzSGFzaGVyLmRpZ2VzdCgpO1xuICAgIC8vIENvbnRyaWJ1dGlvbnMgc2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDEwKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoY3NIYXNoKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMigwKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhmb3JtYXRIYXNoKGNzSGFzaCwgXCJDaXJjdWl0IGhhc2g6IFwiKSk7XG5cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGNzSGFzaDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29lZihhLCBjLCBzLCBjb2VmKSB7XG4gICAgICAgIGNvbnN0IG4gPSBjdXJ2ZS5Gci5mcm9tUnByTEUoY29lZiwgMCk7XG4gICAgICAgIGNvbnN0IG5SMiA9IGN1cnZlLkZyLm11bChuLCBSMnIpO1xuICAgICAgICBidWZmQ29lZmZWLnNldFVpbnQzMigwLCBhLCB0cnVlKTtcbiAgICAgICAgYnVmZkNvZWZmVi5zZXRVaW50MzIoNCwgYywgdHJ1ZSk7XG4gICAgICAgIGJ1ZmZDb2VmZlYuc2V0VWludDMyKDgsIHMsIHRydWUpO1xuICAgICAgICBjdXJ2ZS5Gci50b1JwckxFKGJ1ZmZDb2VmZiwgMTIsIG5SMik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmQ29lZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXBvc2VBbmRXcml0ZVBvaW50cyhpZFNlY3Rpb24sIGdyb3VwTmFtZSwgYXJyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFPSAxPDwxNjtcblxuICAgICAgICBoYXNoVTMyKGFyci5sZW5ndGgpO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKz0gQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgIGxvZ2dlci5kZWJ1ZyhgV3JpdGluZyBwb2ludHMgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHthcnIubGVuZ3RofWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKGFyci5sZW5ndGggLWksIENIVU5LX1NJWkUpO1xuICAgICAgICAgICAgY29uc3Qgc3ViQXJyID0gYXJyLnNsaWNlKGksIGkgKyBuKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50c0NodW5rKGdyb3VwTmFtZSwgc3ViQXJyKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFuZFdyaXRlUG9pbnRzQ2h1bmsoZ3JvdXBOYW1lLCBhcnIpIHtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3k9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgICAgICBjb25zdCBuRWxlbWVudHNQZXJUaHJlYWQgPSBNYXRoLmZsb29yKGFyci5sZW5ndGggLyBjb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IG5FbGVtZW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IGFyci5sZW5ndGggLSBpKm5FbGVtZW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgc3ViQXJyID0gYXJyLnNsaWNlKGkqbkVsZW1lbnRzUGVyVGhyZWFkLCBpKm5FbGVtZW50c1BlclRocmVhZCArIG4pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKGNvbXBvc2VBbmRXcml0ZVBvaW50c1RocmVhZChncm91cE5hbWUsIHN1YkFycikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShyZXN1bHRbaV1bMF0pO1xuICAgICAgICAgICAgY3NIYXNoZXIudXBkYXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFuZFdyaXRlUG9pbnRzVGhyZWFkKGdyb3VwTmFtZSwgYXJyKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzR2luID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgIGNvbnN0IHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgIGxldCBmbkV4cCwgZm5NdWx0aUV4cCwgZm5CYXRjaFRvQWZmaW5lLCBmblplcm87XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzFtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMW1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzFtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMm1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzJtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFjYyA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykgYWNjICs9IGFycltpXSA/IGFycltpXS5sZW5ndGggOiAwO1xuICAgICAgICBjb25zdCBiQmFzZXMgPSBuZXcgVWludDhBcnJheShhY2Mqc0dpbik7XG4gICAgICAgIGNvbnN0IGJTY2FsYXJzID0gbmV3IFVpbnQ4QXJyYXkoYWNjKmN1cnZlLkZyLm44KTtcbiAgICAgICAgbGV0IHBCID0wO1xuICAgICAgICBsZXQgcFMgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghYXJyW2ldKSBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxhcnJbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiQmFzZSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHaW4sIGFycltpXVtqXVswXSk7XG4gICAgICAgICAgICAgICAgYkJhc2VzLnNldChiQmFzZSwgcEIpO1xuICAgICAgICAgICAgICAgIHBCICs9IHNHaW47XG4gICAgICAgICAgICAgICAgYlNjYWxhcnMuc2V0KGFycltpXVtqXVsxXSwgcFMpO1xuICAgICAgICAgICAgICAgIHBTICs9IGN1cnZlLkZyLm44O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBiQmFzZXN9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBiU2NhbGFyc30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogYXJyLmxlbmd0aCpzR21pZH0pO1xuICAgICAgICBwQiA9IDA7XG4gICAgICAgIHBTID0gMDtcbiAgICAgICAgbGV0IHBEID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIWFycltpXSkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblplcm8sIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhcnJbaV0ubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5FeHAsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IHBCfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBwU30sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IGN1cnZlLkZyLm44fSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk11bHRpRXhwLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBwQn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogcFN9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBjdXJ2ZS5Gci5uOH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IGFycltpXS5sZW5ndGh9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBCICs9IHNHaW4qYXJyW2ldLmxlbmd0aDtcbiAgICAgICAgICAgIHBTICs9IGN1cnZlLkZyLm44KmFycltpXS5sZW5ndGg7XG4gICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgfVxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5CYXRjaFRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogYXJyLmxlbmd0aH0sXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogYXJyLmxlbmd0aCpzR291dH0pO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoSFBvaW50cygpIHtcbiAgICAgICAgY29uc3QgQ0hVTktfU0laRSA9IDE8PDE0O1xuXG4gICAgICAgIGhhc2hVMzIoZG9tYWluU2l6ZS0xKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ZG9tYWluU2l6ZS0xOyBpKz0gQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZ0hQb2ludHM6ICR7aX0vJHtkb21haW5TaXplfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKGRvbWFpblNpemUtMSwgQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBhd2FpdCBoYXNoSFBvaW50c0NodW5rKGksIG4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHNDaHVuayhvZmZzZXQsIG5Qb2ludHMpIHtcbiAgICAgICAgY29uc3QgYnVmZjEgPSBhd2FpdCBmZFBUYXUucmVhZChuUG9pbnRzICpzRzEsIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgKG9mZnNldCArIGRvbWFpblNpemUpKnNHMSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gYXdhaXQgZmRQVGF1LnJlYWQoblBvaW50cyAqc0cxLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIG9mZnNldCpzRzEpO1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeT0gY3VydmUudG0uY29uY3VycmVuY3k7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNQZXJUaHJlYWQgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyBjb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKm5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYxID0gYnVmZjEuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjIgPSBidWZmMi5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goaGFzaEhQb2ludHNUaHJlYWQoc3ViQnVmZjEsIHN1YkJ1ZmYyKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNzSGFzaGVyLnVwZGF0ZShyZXN1bHRbaV1bMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHNUaHJlYWQoYnVmZjEsIGJ1ZmYyKSB7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmMS5ieXRlTGVuZ3RoL3NHMTtcbiAgICAgICAgY29uc3Qgc0dtaWQgPSBjdXJ2ZS5HMS5GLm44KjM7XG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmMX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJ1ZmYyfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHbWlkfSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IFwiZzFtX3N1YkFmZmluZVwiLFxuICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogaSpzR21pZH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoVG9BZmZpbmVcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoTEVNdG9VXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHMX0pO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzaFUzMihuKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgYnVmZlYuc2V0VWludDMyKDAsIG4sIGZhbHNlKTtcbiAgICAgICAgY3NIYXNoZXIudXBkYXRlKGJ1ZmYpO1xuICAgIH1cblxufTtcblxuXG4iLCJcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UyZXhwb3J0TVBDUGFyYW1zKHprZXlOYW1lLCBtcGNwYXJhbXNOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogc2VjdGlvbnNaS2V5fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXksIHNlY3Rpb25zWktleSwgXCJncm90aDE2XCIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZFpLZXksIGN1cnZlLCBzZWN0aW9uc1pLZXkpO1xuXG4gICAgY29uc3QgZmRNUENQYXJhbXMgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShtcGNwYXJhbXNOYW1lKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFZlcmlmaWNhdGlvbiBLZXkgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IHdyaXRlRzEoemtleS52a19hbHBoYV8xKTtcbiAgICBhd2FpdCB3cml0ZUcxKHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfYmV0YV8yKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfZ2FtbWFfMik7XG4gICAgYXdhaXQgd3JpdGVHMSh6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoemtleS52a19kZWx0YV8yKTtcblxuICAgIC8vIElDXG4gICAgbGV0IGJ1ZmZCYXNlc0lDO1xuICAgIGJ1ZmZCYXNlc0lDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRGdWxsU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgMyk7XG4gICAgYnVmZkJhc2VzSUMgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNJQyk7XG5cbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNJQyk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBoIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBjb25zdCBidWZmQmFzZXNIX0xvZGQgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEZ1bGxTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA5KTtcblxuICAgIGxldCBidWZmQmFzZXNIX1RhdTtcbiAgICBidWZmQmFzZXNIX1RhdSA9IGF3YWl0IGN1cnZlLkcxLmZmdChidWZmQmFzZXNIX0xvZGQsIFwiYWZmaW5lXCIsIFwiamFjb2JpYW5cIiwgbG9nZ2VyKTtcbiAgICBidWZmQmFzZXNIX1RhdSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoQXBwbHlLZXkoYnVmZkJhc2VzSF9UYXUsIGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5lKDIpKSwgY3VydmUuRnIud1t6a2V5LnBvd2VyKzFdLCBcImphY29iaWFuXCIsIFwiYWZmaW5lXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBSZW1vdmUgbGFzdCBlbGVtZW50LiAgKFRoZSBkZWdyZWUgb2YgSCB3aWxsIGJlIGFsbHdheXMgbS0yKVxuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYnVmZkJhc2VzSF9UYXUuc2xpY2UoMCwgYnVmZkJhc2VzSF9UYXUuYnl0ZUxlbmd0aCAtIHNHMSk7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNIX1RhdSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzSF9UYXUpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gTCBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0M7XG4gICAgYnVmZkJhc2VzQyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkRnVsbFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDgpO1xuICAgIGJ1ZmZCYXNlc0MgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNDKTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNDKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEEgU2VjdGlvbiAoQyBzZWN0aW9uKVxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNBO1xuICAgIGJ1ZmZCYXNlc0EgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEZ1bGxTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA1KTtcbiAgICBidWZmQmFzZXNBID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQSk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0IxO1xuICAgIGJ1ZmZCYXNlc0IxID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRGdWxsU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNik7XG4gICAgYnVmZkJhc2VzQjEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNCMSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQjEpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNCMjtcbiAgICBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkRnVsbFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDcpO1xuICAgIGJ1ZmZCYXNlc0IyID0gYXdhaXQgY3VydmUuRzIuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQjIpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcyXCIsIGJ1ZmZCYXNlc0IyKTtcblxuICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IHdyaXRlVTMyKG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGFBZnRlcik7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3N4KTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMihjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRNUENQYXJhbXMuY2xvc2UoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICAgICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICAgICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlUG9pbnRBcnJheShncm91cE5hbWUsIGJ1ZmYpIHtcbiAgICAgICAgbGV0IHNHO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgc0cgPSBzRzE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzRyA9IHNHMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplViA9IG5ldyBEYXRhVmlldyhidWZmU2l6ZS5idWZmZXIsIGJ1ZmZTaXplLmJ5dGVPZmZzZXQsIGJ1ZmZTaXplLmJ5dGVMZW5ndGgpO1xuICAgICAgICBidWZmU2l6ZVYuc2V0VWludDMyKDAsIGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHLCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZlNpemUpO1xuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVUzMihuKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplViA9IG5ldyBEYXRhVmlldyhidWZmU2l6ZS5idWZmZXIsIGJ1ZmZTaXplLmJ5dGVPZmZzZXQsIGJ1ZmZTaXplLmJ5dGVMZW5ndGgpO1xuICAgICAgICBidWZmU2l6ZVYuc2V0VWludDMyKDAsIG4sIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmU2l6ZSk7XG4gICAgfVxuXG5cblxufTtcbiIsImltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIi4vYmluZmlsZXV0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJpbXBvcnRNUENQYXJhbXMoemtleU5hbWVPbGQsIG1wY3BhcmFtc05hbWUsIHprZXlOYW1lTmV3LCBuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5T2xkLCBzZWN0aW9uczogc2VjdGlvbnNaS2V5T2xkfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXlIZWFkZXIgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgXCJncm90aDE2XCIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5SGVhZGVyLnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBvbGRNUENQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZFpLZXlPbGQsIGN1cnZlLCBzZWN0aW9uc1pLZXlPbGQpO1xuICAgIGNvbnN0IG5ld01QQ1BhcmFtcyA9IHt9O1xuXG4gICAgY29uc3QgZmRNUENQYXJhbXMgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcobXBjcGFyYW1zTmFtZSk7XG5cbiAgICBmZE1QQ1BhcmFtcy5wb3MgPVxuICAgICAgICBzRzEqMyArIHNHMiozICsgICAgICAgICAgICAgICAgICAgICAvLyB2S2V5XG4gICAgICAgIDggKyBzRzEqemtleUhlYWRlci5uVmFycyArICAgICAgICAgICAgICAvLyBJQyArIENcbiAgICAgICAgNCArIHNHMSooemtleUhlYWRlci5kb21haW5TaXplLTEpICsgICAgIC8vIEhcbiAgICAgICAgNCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIEFcbiAgICAgICAgNCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIEIxXG4gICAgICAgIDQgKyBzRzIqemtleUhlYWRlci5uVmFyczsgICAgICAgICAgICAgICAvLyBCMlxuXG4gICAgLy8gY3NIYXNoXG4gICAgbmV3TVBDUGFyYW1zLmNzSGFzaCA9ICBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKDY0KTtcblxuICAgIGNvbnN0IG5Db250dHJpYnV0aW9ucyA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5Db250dHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSB7IGRlbHRhOnt9IH07XG4gICAgICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfc3ggPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMihmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoNjQpO1xuICAgICAgICBpZiAoaTxvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGMudHlwZSA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLnR5cGU7XG4gICAgICAgICAgICBpZiAoYy50eXBlPT0xKSB7XG4gICAgICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0uYmVhY29uSGFzaDtcbiAgICAgICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5udW1JdGVyYXRpb25zRXhwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjLm5hbWUgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goYyk7XG4gICAgfVxuXG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5ld01QQ1BhcmFtcy5jc0hhc2gsIG9sZE1QQ1BhcmFtcy5jc0hhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkhhc2ggb2YgdGhlIG9yaWdpbmFsIGNpcmN1aXQgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgTVBDIG9uZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGggPiBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiVGhlIGltcG9lcnRlZCBmaWxlIGRvZXMgbm90IGluY2x1ZGUgbmV3IGNvbnRyaWJ1dGlvbnNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8b2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFjb250cmlidXRpb25Jc0VxdWFsKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLCBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXSkpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgUHJldmlvcyBjb250cmlidXRpb24gJHtpfSBkb2VzIG5vdCBtYXRjaGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBTZXQgdGhlIHNhbWUgbmFtZSB0byBhbGwgbmV3IGNvbnRyb2J1dGlvbnNcbiAgICBpZiAobmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpPW9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaTxuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0ubmFtZSA9IG5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmZFpLZXlOZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcbiAgICBmZE1QQ1BhcmFtcy5wb3MgPSAwO1xuXG4gICAgLy8gSGVhZGVyXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMTsgIC8vIGlnbm9yZSBhbHBoYTEgKGtlZXAgb3JpZ2luYWwpXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMTsgIC8vIGlnbm9yZSBiZXRhMVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzI7ICAvLyBpZ25vcmUgYmV0YTJcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyOyAgLy8gaWdub3JlIGdhbW1hMlxuICAgIHprZXlIZWFkZXIudmtfZGVsdGFfMSA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgemtleUhlYWRlci52a19kZWx0YV8yID0gYXdhaXQgcmVhZEcyKGZkTVBDUGFyYW1zKTtcbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmRaS2V5TmV3LCB6a2V5SGVhZGVyKTtcblxuICAgIC8vIElDIChLZWVwIG9yaWdpbmFsKVxuICAgIGNvbnN0IG5JQyA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuSUMgIT0gemtleUhlYWRlci5uUHVibGljICsxKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBJQ1wiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5QdWJsaWMrMSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDMpO1xuXG4gICAgLy8gQ29lZmZzIChLZWVwIG9yaWdpbmFsKVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCA0KTtcblxuICAgIC8vIEggU2VjdGlvblxuICAgIGNvbnN0IG5IID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5IICE9IHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBIXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBidWZmSDtcbiAgICBjb25zdCBidWZmVGF1VSA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkpO1xuICAgIGNvbnN0IGJ1ZmZUYXVMRU0gPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaFV0b0xFTShidWZmVGF1VSk7XG4gICAgYnVmZkggPSBuZXcgVWludDhBcnJheSh6a2V5SGVhZGVyLmRvbWFpblNpemUqc0cxKTtcbiAgICBidWZmSC5zZXQoYnVmZlRhdUxFTSk7ICAgLy8gTGV0IHRoZSBsYXN0IG9uZSB0byB6ZXJvLlxuICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmZILCBzRzEqKHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSwgY3VydmUuRzEuemVyb0FmZmluZSk7XG4gICAgY29uc3QgbjJJbnYgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuaW52KGN1cnZlLkZyLmUoMikpKTtcbiAgICBjb25zdCB3SW52ID0gY3VydmUuRnIuaW52KGN1cnZlLkZyLndbemtleUhlYWRlci5wb3dlcisxXSk7XG4gICAgYnVmZkggPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaEFwcGx5S2V5KGJ1ZmZILCBuMkludiwgd0ludiwgXCJhZmZpbmVcIiwgXCJqYWNvYmlhblwiLCBsb2dnZXIpO1xuICAgIGJ1ZmZIID0gYXdhaXQgY3VydmUuRzEuaWZmdChidWZmSCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXlOZXcsIDkpO1xuICAgIGF3YWl0IGZkWktleU5ldy53cml0ZShidWZmSCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZFpLZXlOZXcpO1xuXG4gICAgLy8gQyBTZWNpb24gKEwgc2VjdGlvbilcbiAgICBjb25zdCBuTCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuTCAhPSAoemtleUhlYWRlci5uVmFycy16a2V5SGVhZGVyLm5QdWJsaWMtMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIExcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGJ1ZmZMO1xuICAgIGJ1ZmZMID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZChzRzEqKHprZXlIZWFkZXIublZhcnMtemtleUhlYWRlci5uUHVibGljLTEpKTtcbiAgICBidWZmTCA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoVXRvTEVNKGJ1ZmZMKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3LCA4KTtcbiAgICBhd2FpdCBmZFpLZXlOZXcud3JpdGUoYnVmZkwpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3KTtcblxuICAgIC8vIEEgU2VjdGlvblxuICAgIGNvbnN0IG5BID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5BICE9IHprZXlIZWFkZXIublZhcnMpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIEFcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGNvbnN0IG5CMSA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuQjEgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQjFcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDYpO1xuXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIGNvbnN0IG5CMiA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuQjIgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQjJcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMiooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDcpO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlTVBDUGFyYW1zKGZkWktleU5ldywgY3VydmUsIG5ld01QQ1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE1QQ1BhcmFtcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkWktleU5ldy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkWktleU9sZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoZmQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcyKGZkKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcyLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMi5mcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gY29udHJpYnV0aW9uSXNFcXVhbChjMSwgYzIpIHtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjMS5kZWx0YUFmdGVyICAgLCBjMi5kZWx0YUFmdGVyKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGMxLmRlbHRhLmcxX3MgICAsIGMyLmRlbHRhLmcxX3MpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoYzEuZGVsdGEuZzFfc3ggICwgYzIuZGVsdGEuZzFfc3gpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoYzEuZGVsdGEuZzJfc3B4ICwgYzIuZGVsdGEuZzJfc3B4KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwoYzEudHJhbnNjcmlwdCwgYzIudHJhbnNjcmlwdCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbn1cblxuIiwiaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IG5ld1pLZXkgZnJvbSBcIi4vemtleV9uZXcuanNcIjtcbmltcG9ydCB7aGFzaEcxLCBoYXNoUHViS2V5fSBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMnZlcmlmeShyMWNzRmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIGxldCBzcjtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zLCBcImdyb3RoMTZcIik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgYWNjdW11bGF0ZWRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBhY2N1bXVsYXRlZEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgbGV0IGN1ckRlbHRhID0gY3VydmUuRzEuZztcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBjb25zdCBvdXJIYXNoZXIgPSBtaXNjLmNsb25lSGFzaGVyKGFjY3VtdWxhdGVkSGFzaGVyKTtcblxuICAgICAgICBoYXNoRzEob3VySGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgaGFzaEcxKG91ckhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuXG4gICAgICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChvdXJIYXNoZXIuZGlnZXN0KCksIGMudHJhbnNjcmlwdCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBJbmNvbnNpc3RlbnQgdHJhbnNjcmlwdCBgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlbHRhX2cyX3NwID0gaGFzaFRvRzIoY3VydmUsIGMudHJhbnNjcmlwdCk7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGMuZGVsdGEuZzFfcywgYy5kZWx0YS5nMV9zeCwgZGVsdGFfZzJfc3AsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogcHVibGljIGtleSBHMSBhbmQgRzIgZG8gbm90IGhhdmUgdGhlIHNhbWUgcmF0aW9uIGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ckRlbHRhLCBjLmRlbHRhQWZ0ZXIsIGRlbHRhX2cyX3NwLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IGRlbHRhQWZ0ZXIgZG9lcyBub3QgZmlsbG93IHRoZSBwdWJsaWMga2V5IGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBybmcgPSBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYy5iZWFjb25IYXNoLCBjLm51bUl0ZXJhdGlvbnNFeHApO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfcHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZF9nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoZXhwZWN0ZWRfZzFfcywgZXhwZWN0ZWRfcHJ2S2V5KSk7XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfcywgYy5kZWx0YS5nMV9zKSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBLZXkgb2YgdGhlIGJlYWNvbiBkb2VzIG5vdCBtYXRjaC4gZzFfcyBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfc3gsIGMuZGVsdGEuZzFfc3gpICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IEtleSBvZiB0aGUgYmVhY29uIGRvZXMgbm90IG1hdGNoLiBnMV9zeCBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoYXNoUHViS2V5KGFjY3VtdWxhdGVkSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgICAgIGhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgYy5jb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgICAgIGN1ckRlbHRhID0gYy5kZWx0YUFmdGVyO1xuICAgIH1cblxuXG5cbiAgICAvLyBjb25zdCBpbml0RmlsZU5hbWUgPSBcIn5cIiArIHprZXlGaWxlTmFtZSArIFwiLmluaXRcIjtcbiAgICBjb25zdCBpbml0RmlsZU5hbWUgPSB7dHlwZTogXCJtZW1cIn07XG4gICAgYXdhaXQgbmV3WktleShyMWNzRmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgaW5pdEZpbGVOYW1lKTtcblxuICAgIGNvbnN0IHtmZDogZmRJbml0LCBzZWN0aW9uczogc2VjdGlvbnNJbml0fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShpbml0RmlsZU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5SW5pdCA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkSW5pdCwgc2VjdGlvbnNJbml0LCBcImdyb3RoMTZcIik7XG5cbiAgICBpZiAoICAoIVNjYWxhci5lcSh6a2V5SW5pdC5xLCB6a2V5LnEpKVxuICAgICAgICB8fCghU2NhbGFyLmVxKHprZXlJbml0LnIsIHprZXkucikpXG4gICAgICAgIHx8KHprZXlJbml0Lm44cSAhPSB6a2V5Lm44cSlcbiAgICAgICAgfHwoemtleUluaXQubjhyICE9IHprZXkubjhyKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBEaWZmZXJlbnQgY3VydmVzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCAgKHprZXlJbml0Lm5WYXJzICE9IHprZXkublZhcnMpXG4gICAgICAgIHx8KHprZXlJbml0Lm5QdWJsaWMgIT0gIHprZXkublB1YmxpYylcbiAgICAgICAgfHwoemtleUluaXQuZG9tYWluU2l6ZSAhPSB6a2V5LmRvbWFpblNpemUpKVxuICAgIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIERpZmZlcmVudCBjaXJjdWl0IHBhcmFtZXRlcnNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnZlLkcxLmVxKHprZXkudmtfYWxwaGFfMSwgemtleUluaXQudmtfYWxwaGFfMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgYWxwaGExXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19iZXRhXzEsIHprZXlJbml0LnZrX2JldGFfMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgYmV0YTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcSh6a2V5LnZrX2JldGFfMiwgemtleUluaXQudmtfYmV0YV8yKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBiZXRhMlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKHprZXkudmtfZ2FtbWFfMiwgemtleUluaXQudmtfZ2FtbWFfMikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgZ2FtbWEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19kZWx0YV8xLCBjdXJEZWx0YSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsdWQgZGVsdGExXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXJ2ZS5HMS5nLCBjdXJEZWx0YSwgY3VydmUuRzIuZywgemtleS52a19kZWx0YV8yKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsdWQgZGVsdGEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbXBjUGFyYW1zSW5pdCA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkSW5pdCwgY3VydmUsIHNlY3Rpb25zSW5pdCk7XG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG1wY1BhcmFtcy5jc0hhc2gsIG1wY1BhcmFtc0luaXQuY3NIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgQ2lyY3VpdCBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHNpemVzIG9mIHNlY3Rpb25zXG4gICAgaWYgKHNlY3Rpb25zWzhdWzBdLnNpemUgIT0gc0cxKih6a2V5Lm5WYXJzLXprZXkublB1YmxpYy0xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBMIHNlY3Rpb24gc2l6ZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzZWN0aW9uc1s5XVswXS5zaXplICE9IHNHMSooemtleS5kb21haW5TaXplKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBIIHNlY3Rpb24gc2l6ZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzcztcbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCAzKTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJQyBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA0KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkNvZWZmcyBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA1KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkEgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgNik7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJCMSBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA3KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkIyIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIExcbiAgICBzciA9IGF3YWl0IHNlY3Rpb25IYXNTYW1lUmF0aW8oXCJHMVwiLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgZmQsIHNlY3Rpb25zLCA4LCB6a2V5LnZrX2RlbHRhXzIsIHprZXlJbml0LnZrX2RlbHRhXzIsIFwiTCBzZWN0aW9uXCIpO1xuICAgIGlmIChzciE9PXRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiTCBzZWN0aW9uIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgSFxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvSCgpO1xuICAgIGlmIChzciE9PXRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSCBzZWN0aW9uIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKG1wY1BhcmFtcy5jc0hhc2gsIFwiQ2lyY3VpdCBIYXNoOiBcIikpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZEluaXQuY2xvc2UoKTtcblxuICAgIGZvciAobGV0IGk9bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGMuY29udHJpYnV0aW9uSGFzaCwgYGNvbnRyaWJ1dGlvbiAjJHtpKzF9ICR7Yy5uYW1lID8gYy5uYW1lIDogXCJcIn06YCkpO1xuICAgICAgICBpZiAoYy50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGBCZWFjb24gZ2VuZXJhdG9yOiAke21pc2MuYnl0ZUFycmF5MmhleChjLmJlYWNvbkhhc2gpfWApO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYEJlYWNvbiBpdGVyYXRpb25zIEV4cDogJHtjLm51bUl0ZXJhdGlvbnNFeHB9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJaS2V5IE9rIVwiKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBzZWN0aW9uSGFzU2FtZVJhdGlvKGdyb3VwTmFtZSwgZmQxLCBzZWN0aW9uczEsIGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24sIGcyc3AsIGcyc3B4LCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDE8PDIwO1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQxLCBzZWN0aW9uczEsIGlkU2VjdGlvbik7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBzZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplIC8gc0c7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgU2FtZSByYXRpbyBjaGVjayAke3NlY3Rpb25OYW1lfTogICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlczEgPSBhd2FpdCBmZDEucmVhZChuKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VzMiA9IGF3YWl0IGZkMi5yZWFkKG4qc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBzY2FsYXJzID0gbmV3IFVpbnQ4QXJyYXkoNCpuKTtcbiAgICAgICAgICAgIGNyeXB0by5yYW5kb21GaWxsU3luYyhzY2FsYXJzKTtcblxuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMxLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlczIsIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkMSk7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZDIpO1xuXG4gICAgICAgIGlmIChuUG9pbnRzID09IDApIHJldHVybiB0cnVlO1xuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBSMSwgUjIsIGcyc3AsIGcyc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gc2FtZVJhdGlvSCgpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwyMDtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlLkcxO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogc2VjdGlvbnNQVGF1fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwVGF1RmlsZU5hbWUsIFwicHRhdVwiLCAxKTtcblxuICAgICAgICBsZXQgYnVmZl9yID0gbmV3IFVpbnQ4QXJyYXkoemtleS5kb21haW5TaXplICogemtleS5uOHIpO1xuXG4gICAgICAgIGNvbnN0IHNlZWQ9IG5ldyBBcnJheSg4KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgc2VlZFtpXSA9IGNyeXB0by5yYW5kb21CeXRlcyg0KS5yZWFkVUludDMyQkUoMCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZS0xOyBpKyspIHsgICAvLyBOb3RlIHRoYXQgbGFzdCBvbmUgaXMgemVyb1xuICAgICAgICAgICAgY29uc3QgZSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYnVmZl9yLCBpKnprZXkubjhyLCBlKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJ2ZS5Gci50b1JwckxFKGJ1ZmZfciwgKHprZXkuZG9tYWluU2l6ZS0xKSp6a2V5Lm44ciwgY3VydmUuRnIuemVybyk7XG5cbiAgICAgICAgbGV0IFIxID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEggVmVyaWZpY2FpdGlvbih0YXUpOiAgJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih6a2V5LmRvbWFpblNpemUgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYxID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cqbiwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyB6a2V5LmRvbWFpblNpemUqc0cgKyBpKk1BWF9DSFVOS19TSVpFKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYyID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cqbiwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyBpKk1BWF9DSFVOS19TSVpFKnNHKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkIgPSBhd2FpdCBiYXRjaFN1YnN0cmFjdChidWZmMSwgYnVmZjIpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlMgPSBidWZmX3Iuc2xpY2UoKGkqTUFYX0NIVU5LX1NJWkUpKnprZXkubjhyLCAoaSpNQVhfQ0hVTktfU0laRStuKSp6a2V5Lm44cik7XG4gICAgICAgICAgICBjb25zdCByID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShidWZmQiwgYnVmZlMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbHVjbGF0ZSBvZGQgY29lZmljaWVudHMgaW4gdHJhbnNmb3JtZWQgZG9tYWluXG5cbiAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZl9yKTtcbiAgICAgICAgLy8gY29uc3QgZmlyc3QgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuaW52KGN1cnZlLkZyLmUoMikpKTtcbiAgICAgICAgLy8gV29ya3MqMiAgIGNvbnN0IGZpcnN0ID0gY3VydmUuRnIubmVnKGN1cnZlLkZyLmUoMikpO1xuICAgICAgICBjb25zdCBmaXJzdCA9IGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5lKDIpKTtcbiAgICAgICAgLy8gY29uc3QgaW5jID0gY3VydmUuRnIuaW52KGN1cnZlLlBGci53W3prZXkucG93ZXIrMV0pO1xuICAgICAgICBjb25zdCBpbmMgPSBjdXJ2ZS5Gci53W3prZXkucG93ZXIrMV07XG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmJhdGNoQXBwbHlLZXkoYnVmZl9yLCBmaXJzdCwgaW5jKTtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuZmZ0KGJ1ZmZfcik7XG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkoYnVmZl9yKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDkpO1xuICAgICAgICBsZXQgUjIgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSCBWZXJpZmljYWl0aW9uKGxhZ3JhbmdlKTogICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oemtleS5kb21haW5TaXplIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRypuKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTID0gYnVmZl9yLnNsaWNlKChpKk1BWF9DSFVOS19TSVpFKSp6a2V5Lm44ciwgKGkqTUFYX0NIVU5LX1NJWkUrbikqemtleS5uOHIpO1xuICAgICAgICAgICAgY29uc3QgciA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZiwgYnVmZlMpO1xuXG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBSMSwgUjIsIHprZXkudmtfZGVsdGFfMiwgemtleUluaXQudmtfZGVsdGFfMik7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBiYXRjaFN1YnN0cmFjdChidWZmMSwgYnVmZjIpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmMS5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5PSBjdXJ2ZS50bS5jb25jdXJyZW5jeTtcbiAgICAgICAgY29uc3QgblBvaW50c1BlclRocmVhZCA9IE1hdGguZmxvb3IoblBvaW50cyAvIGNvbmN1cnJlbmN5KTtcbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjEgPSBidWZmMS5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMiA9IGJ1ZmYyLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChiYXRjaFN1YnN0cmFjdFRocmVhZChzdWJCdWZmMSwgc3ViQnVmZjIpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBiYXRjaFN1YnN0cmFjdFRocmVhZChidWZmMSwgYnVmZjIpIHtcbiAgICAgICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgICAgICBjb25zdCBzR21pZCA9IGN1cnZlLkcxLkYubjgqMztcbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYxLmJ5dGVMZW5ndGgvc0cxO1xuICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZjF9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmMn0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogblBvaW50cypzR21pZH0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSsrKSB7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBcImcxbV9zdWJBZmZpbmVcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IGkqc0dtaWR9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaFRvQWZmaW5lXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHMX0pO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG59XG5cbiIsIlxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCIuL2JpbmZpbGV1dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJjb250cmlidXRlKHprZXlOYW1lT2xkLCB6a2V5TmFtZU5ldywgbmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnM6IHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZE9sZCwgc2VjdGlvbnMsIFwiZ3JvdGgxNlwiKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcblxuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHV0aWxzLmhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuXG4gICAgemtleS52a19kZWx0YV8xID0gY3VydmUuRzEudGltZXNGcih6a2V5LnZrX2RlbHRhXzEsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGN1cnZlLkcyLnRpbWVzRnIoemtleS52a19kZWx0YV8yLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gemtleS52a19kZWx0YV8xO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAwO1xuICAgIGlmIChuYW1lKSBjdXJDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmROZXcsIHprZXkpO1xuXG4gICAgLy8gSUNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA4LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJMIFNlY3Rpb25cIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA5LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJIIFNlY3Rpb25cIiwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZE5ldywgY3VydmUsIG1wY1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB1dGlscy5oYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidWlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY29udHJpYnVpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1aW9uSGFzaDtcbn1cbiIsImltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb1NlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWFjb24oemtleU5hbWVPbGQsIHprZXlOYW1lTmV3LCBuYW1lLCBiZWFjb25IYXNoU3RyLCBudW1JdGVyYXRpb25zRXhwLCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBiZWFjb25IYXNoID0gbWlzYy5oZXgyQnl0ZUFycmF5KGJlYWNvbkhhc2hTdHIpO1xuICAgIGlmICggICAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoID09IDApXG4gICAgICAgIHx8IChiZWFjb25IYXNoLmJ5dGVMZW5ndGgqMiAhPWJlYWNvbkhhc2hTdHIubGVuZ3RoKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgQmVhY29uIEhhc2guIChJdCBtdXN0IGJlIGEgdmFsaWQgaGV4YWRlY2ltYWwgc2VxdWVuY2UpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChiZWFjb25IYXNoLmxlbmd0aD49MjU2KSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIk1heGltdW0gbGVuZ2h0IG9mIGJlYWNvbiBoYXNoIGlzIDI1NSBieXRlc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG51bUl0ZXJhdGlvbnNFeHAgPSBwYXJzZUludChudW1JdGVyYXRpb25zRXhwKTtcbiAgICBpZiAoKG51bUl0ZXJhdGlvbnNFeHA8MTApfHwobnVtSXRlcmF0aW9uc0V4cD42MykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1JdGVyYXRpb25zRXhwLiAoTXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCA2MylcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zOiBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWVPbGQsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRPbGQsIHNlY3Rpb25zLCBcImdyb3RoMTZcIik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWVOZXcsIFwiemtleVwiLCAxLCAxMCk7XG5cbiAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHV0aWxzLmhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuXG4gICAgemtleS52a19kZWx0YV8xID0gY3VydmUuRzEudGltZXNGcih6a2V5LnZrX2RlbHRhXzEsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGN1cnZlLkcyLnRpbWVzRnIoemtleS52a19kZWx0YV8yLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gemtleS52a19kZWx0YV8xO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAxO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5udW1JdGVyYXRpb25zRXhwID0gbnVtSXRlcmF0aW9uc0V4cDtcbiAgICBjdXJDb250cmlidXRpb24uYmVhY29uSGFzaCA9IGJlYWNvbkhhc2g7XG5cbiAgICBpZiAobmFtZSkgY3VyQ29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlSGVhZGVyKGZkTmV3LCB6a2V5KTtcblxuICAgIC8vIElDXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuXG4gICAgLy8gQ29lZmZzIChLZWVwIG9yaWdpbmFsKVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcblxuICAgIC8vIEEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1KTtcblxuICAgIC8vIEIxIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNik7XG5cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDcpO1xuXG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOCwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiTCBTZWN0aW9uXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOSwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiSCBTZWN0aW9uXCIsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMoZmROZXcsIGN1cnZlLCBtcGNQYXJhbXMpO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdXRpbHMuaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24pO1xuXG4gICAgY29uc3QgY29udHJpYnVpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNvbnRyaWJ1aW9uSGFzaCwgXCJDb250cmlidXRpb24gSGFzaDogXCIpKTtcblxuICAgIHJldHVybiBjb250cmlidWlvbkhhc2g7XG59XG4iLCJpbXBvcnQgeyByZWFkWktleSBhcyByZWFkWktleSB9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gemtleUV4cG9ydEpzb24oemtleUZpbGVOYW1lLCB2ZXJib3NlKSB7XG5cbiAgICBjb25zdCB6S2V5ID0gYXdhaXQgcmVhZFpLZXkoemtleUZpbGVOYW1lKTtcblxuICAgIHJldHVybiB6S2V5O1xufVxuIiwiLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICBQdWJsaWMgS2V5XG4vLyAgICAgICAgICBCZXRhRzIgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1KmJldGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMipzcCp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip0cCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnVwKmJldGEgKGNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuaW1wb3J0IHsgaGFzaFB1YktleSB9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWxsbWFuQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbmVzRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoZGVsdGEpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbmVzRmlsZU5hbWUpO1xuXG5cbiAgICBhd2FpdCBjb3B5KHNHMSk7IC8vIGFscGhhMVxuICAgIGF3YWl0IGNvcHkoc0cxKTsgLy8gYmV0YTFcbiAgICBhd2FpdCBjb3B5KHNHMik7IC8vIGJldGEyXG4gICAgYXdhaXQgY29weShzRzIpOyAvLyBnYW1tYTJcbiAgICBjb25zdCBvbGREZWx0YTEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjb25zdCBkZWx0YTEgPSBjdXJ2ZS5HMS50aW1lc0ZyKG9sZERlbHRhMSwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzEoZGVsdGExKTtcbiAgICBjb25zdCBvbGREZWx0YTIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjb25zdCBkZWx0YTIgPSBjdXJ2ZS5HMi50aW1lc0ZyKG9sZERlbHRhMiwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZGVsdGEyKTtcblxuICAgIC8vIElDXG4gICAgY29uc3QgbklDID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuSUMpO1xuICAgIGF3YWl0IGNvcHkobklDKnNHMSk7XG5cbiAgICAvLyBIXG4gICAgY29uc3QgbkggPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5IKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5ILCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJIXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBMXG4gICAgY29uc3QgbkwgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5MKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5MLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJMXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBBXG4gICAgY29uc3QgbkEgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5BKTtcbiAgICBhd2FpdCBjb3B5KG5BKnNHMSk7XG5cbiAgICAvLyBCMVxuICAgIGNvbnN0IG5CMSA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkIxKTtcbiAgICBhd2FpdCBjb3B5KG5CMSpzRzEpO1xuXG4gICAgLy8gQjJcbiAgICBjb25zdCBuQjIgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5CMik7XG4gICAgYXdhaXQgY29weShuQjIqc0cyKTtcblxuXG4gICAgLy8vLy8vLy8vL1xuICAgIC8vLyBSZWFkIGNvbnRyaWJ1dGlvbnNcbiAgICAvLy8vLy8vLy8vXG4gICAgY29uc3QgdHJhbnNjcmlwdEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0ge307XG4gICAgLy8gY3NIYXNoXG4gICAgbXBjUGFyYW1zLmNzSGFzaCA9ICBhd2FpdCBmZEZyb20ucmVhZCg2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG5cbiAgICBjb25zdCBuQ29udHRyaWJ1dGlvbnMgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvbnR0cmlidXRpb25zOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IHsgZGVsdGE6e30gfTtcbiAgICAgICAgYy5kZWx0YUFmdGVyID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgICAgIGMuZGVsdGEuZzJfc3B4ID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkRnJvbS5yZWFkKDY0KTtcbiAgICAgICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICAgICAgaGFzaFB1YktleSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgYyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSA9IGRlbHRhO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBkZWx0YSkpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4KTtcbiAgICBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCA9IHRyYW5zY3JpcHRIYXNoZXIuZGlnZXN0KCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0KTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AsIGRlbHRhKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhQWZ0ZXIgPSBkZWx0YTE7XG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAwO1xuICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goY3VyQ29udHJpYnV0aW9uKTtcblxuXG4gICAgLy8vLy8vLy8vL1xuICAgIC8vLyBXcml0ZSBDT250cmlidXRpb25cbiAgICAvLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBmZFRvLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhQWZ0ZXIpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfcyk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zeCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoYy5kZWx0YS5nMl9zcHgpO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24pO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaCA9IGNvbnRyaWJ1dGlvbkhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjb250cmlidXRpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuICAgIGF3YWl0IGZkRnJvbS5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbkhhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb3B5KG5CeXRlcykge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFID0gZmRGcm9tLnBhZ2VTaXplKjI7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrPSBDSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4obkJ5dGVzIC1pLCBDSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChuKTtcbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICAgICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgfVxuXG5cbn1cbiIsImltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiLi9iaW5maWxldXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHprZXlFeHBvcnRWZXJpZmljYXRpb25LZXkoemtleU5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zLCBcImdyb3RoMTZcIik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuXG4gICAgY29uc3QgYWxwaGFCZXRhID0gYXdhaXQgY3VydmUucGFpcmluZyggemtleS52a19hbHBoYV8xICwgemtleS52a19iZXRhXzIgKTtcblxuICAgIGxldCB2S2V5ID0ge1xuICAgICAgICBwcm90b2NvbDogemtleS5wcm90b2NvbCxcbiAgICAgICAgY3VydmU6IGN1cnZlLm5hbWUsXG4gICAgICAgIG5QdWJsaWM6IHprZXkublB1YmxpYyxcblxuICAgICAgICB2a19hbHBoYV8xOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LnZrX2FscGhhXzEpLFxuXG4gICAgICAgIHZrX2JldGFfMjogY3VydmUuRzIudG9PYmplY3QoemtleS52a19iZXRhXzIpLFxuICAgICAgICB2a19nYW1tYV8yOiAgY3VydmUuRzIudG9PYmplY3QoemtleS52a19nYW1tYV8yKSxcbiAgICAgICAgdmtfZGVsdGFfMjogIGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfZGVsdGFfMiksXG5cbiAgICAgICAgdmtfYWxwaGFiZXRhXzEyOiBjdXJ2ZS5HdC50b09iamVjdChhbHBoYUJldGEpXG4gICAgfTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB2S2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cxKTtcbiAgICAgICAgY29uc3QgUCA9IGN1cnZlLkcxLnRvT2JqZWN0KGJ1ZmYpO1xuICAgICAgICB2S2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICB2S2V5ID0gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gdktleTtcbn1cbiIsImltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5pbXBvcnQgZXhwb3J0VmVyaWZpY2F0aW9uS2V5IGZyb20gXCIuL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qc1wiO1xuLy8gTm90IHJlYWR5IHlldFxuLy8gbW9kdWxlLmV4cG9ydHMuZ2VuZXJhdGVWZXJpZmllcl9raW1sZWVvaCA9IGdlbmVyYXRlVmVyaWZpZXJfa2ltbGVlb2g7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBleHBvcnRTb2xpZGl0eVZlcmlmaWVyKHpLZXlOYW1lLCB0ZW1wbGF0ZU5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgdmVyaWZpY2F0aW9uS2V5ID0gYXdhaXQgZXhwb3J0VmVyaWZpY2F0aW9uS2V5KHpLZXlOYW1lLCBsb2dnZXIpO1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcodGVtcGxhdGVOYW1lKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChmZC50b3RhbFNpemUpO1xuICAgIGxldCB0ZW1wbGF0ZSA9IG5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpLmRlY29kZShidWZmKTtcblxuICAgIGNvbnN0IHZrYWxwaGExX3N0ciA9IGAke3ZlcmlmaWNhdGlvbktleS52a19hbHBoYV8xWzBdLnRvU3RyaW5nKCl9LGArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHt2ZXJpZmljYXRpb25LZXkudmtfYWxwaGFfMVsxXS50b1N0cmluZygpfWA7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKFwiPCV2a19hbHBoYTElPlwiLCB2a2FscGhhMV9zdHIpO1xuXG4gICAgY29uc3QgdmtiZXRhMl9zdHIgPSBgWyR7dmVyaWZpY2F0aW9uS2V5LnZrX2JldGFfMlswXVsxXS50b1N0cmluZygpfSxgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ZlcmlmaWNhdGlvbktleS52a19iZXRhXzJbMF1bMF0udG9TdHJpbmcoKX1dLCBgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYFske3ZlcmlmaWNhdGlvbktleS52a19iZXRhXzJbMV1bMV0udG9TdHJpbmcoKX0sYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7dmVyaWZpY2F0aW9uS2V5LnZrX2JldGFfMlsxXVswXS50b1N0cmluZygpfV1gO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZShcIjwldmtfYmV0YTIlPlwiLCB2a2JldGEyX3N0cik7XG5cbiAgICBjb25zdCB2a2dhbW1hMl9zdHIgPSBgWyR7dmVyaWZpY2F0aW9uS2V5LnZrX2dhbW1hXzJbMF1bMV0udG9TdHJpbmcoKX0sYCtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dmVyaWZpY2F0aW9uS2V5LnZrX2dhbW1hXzJbMF1bMF0udG9TdHJpbmcoKX1dLCBgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHt2ZXJpZmljYXRpb25LZXkudmtfZ2FtbWFfMlsxXVsxXS50b1N0cmluZygpfSxgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dmVyaWZpY2F0aW9uS2V5LnZrX2dhbW1hXzJbMV1bMF0udG9TdHJpbmcoKX1dYDtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoXCI8JXZrX2dhbW1hMiU+XCIsIHZrZ2FtbWEyX3N0cik7XG5cbiAgICBjb25zdCB2a2RlbHRhMl9zdHIgPSBgWyR7dmVyaWZpY2F0aW9uS2V5LnZrX2RlbHRhXzJbMF1bMV0udG9TdHJpbmcoKX0sYCtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dmVyaWZpY2F0aW9uS2V5LnZrX2RlbHRhXzJbMF1bMF0udG9TdHJpbmcoKX1dLCBgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHt2ZXJpZmljYXRpb25LZXkudmtfZGVsdGFfMlsxXVsxXS50b1N0cmluZygpfSxgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dmVyaWZpY2F0aW9uS2V5LnZrX2RlbHRhXzJbMV1bMF0udG9TdHJpbmcoKX1dYDtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoXCI8JXZrX2RlbHRhMiU+XCIsIHZrZGVsdGEyX3N0cik7XG5cbiAgICAvLyBUaGUgcG9pbnRzXG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoXCI8JXZrX2lucHV0X2xlbmd0aCU+XCIsICh2ZXJpZmljYXRpb25LZXkuSUMubGVuZ3RoLTEpLnRvU3RyaW5nKCkpO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZShcIjwldmtfaWNfbGVuZ3RoJT5cIiwgdmVyaWZpY2F0aW9uS2V5LklDLmxlbmd0aC50b1N0cmluZygpKTtcbiAgICBsZXQgdmkgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTx2ZXJpZmljYXRpb25LZXkuSUMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHZpICE9IFwiXCIpIHZpID0gdmkgKyBcIiAgICAgICAgXCI7XG4gICAgICAgIHZpID0gdmkgKyBgdmsuSUNbJHtpfV0gPSBQYWlyaW5nLkcxUG9pbnQoJHt2ZXJpZmljYXRpb25LZXkuSUNbaV1bMF0udG9TdHJpbmcoKX0sYCtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ZlcmlmaWNhdGlvbktleS5JQ1tpXVsxXS50b1N0cmluZygpfSk7XFxuYDtcbiAgICB9XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKFwiPCV2a19pY19wdHMlPlwiLCB2aSk7XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG59XG4iXSwibmFtZXMiOlsidW5kZWZpbmVkIiwiZnJvbVN0cmluZyIsImJpZ0ludCIsImUiLCJmcm9tQXJyYXkiLCJiaXRMZW5ndGgiLCJpc05lZ2F0aXZlIiwiaXNaZXJvIiwic2hpZnRMZWZ0Iiwic2hpZnRSaWdodCIsInNobCIsInNociIsImlzT2RkIiwibmFmIiwiYml0cyIsInRvTnVtYmVyIiwidG9BcnJheSIsImFkZCIsInN1YiIsIm5lZyIsIm11bCIsInNxdWFyZSIsInBvdyIsImV4cCIsImFicyIsImRpdiIsIm1vZCIsImVxIiwibmVxIiwibHQiLCJndCIsImxlcSIsImdlcSIsImJhbmQiLCJib3IiLCJieG9yIiwibGFuZCIsImxvciIsImxub3QiLCJTY2FsYXIuaXNaZXJvIiwiU2NhbGFyLmJpdHMiLCJTY2FsYXIuZXEiLCJTY2FsYXIubW9kIiwiU2NhbGFyLnBvdyIsIlNjYWxhci5zdWIiLCJTY2FsYXIuaXNPZGQiLCJTY2FsYXIuZGl2IiwiU2NhbGFyLmFkZCIsIlNjYWxhci5tdWwiLCJTY2FsYXIuYml0TGVuZ3RoIiwiZnV0aWxzLmV4cCIsIlpxRmllbGQiLCJzdXBwb3J0c05hdGl2ZUJpZ0ludCIsIkYxRmllbGRfbmF0aXZlIiwiRjFGaWVsZF9iaWdpbnQiLCJTY2FsYXIudG9ScHJMRSIsIlNjYWxhci50b1JwckJFIiwiU2NhbGFyLmZyb21ScHJMRSIsIlNjYWxhci5mcm9tUnByQkUiLCJyZXF1aXJlJCQwIiwicmVxdWlyZSQkMSIsInN0cmluZ2lmeUJpZ0ludHMiLCJ1bnN0cmluZ2lmeUJpZ0ludHMiLCJiZUJ1ZmYyaW50IiwiYmVJbnQyQnVmZiIsImxlQnVmZjJpbnQiLCJsZUludDJCdWZmIiwiX3JldlRhYmxlIiwiX3JldlNsb3ciLCJTY2FsYXIuc2hpZnRSaWdodCIsIlNjYWxhci5vbmUiLCJTY2FsYXIuc2hpZnRMZWZ0IiwiU2NhbGFyLnRvTEVCdWZmIiwiU2NhbGFyLmUiLCJTY2FsYXIuaXNOZWdhdGl2ZSIsIlNjYWxhci5uZWciLCJTY2FsYXIuZ3QiLCJ1dGlscy5sZUludDJCdWZmIiwiU2NhbGFyLnRvU3RyaW5nIiwiU2NhbGFyLnplcm8iLCJTY2FsYXIuYmFuZCIsIlNjYWxhci5nZXEiLCJOb2RlV29ya2VyX21vZCIsIm9zIiwiYnVpbGRNdWx0aUV4cCIsImN1cnZlIiwiU2NhbGFyIiwidXRpbHMiLCJmcyIsInRtcEJ1ZmYzMiIsInRtcEJ1ZmYzMnYiLCJ0bXBCdWZmNjQiLCJ0bXBCdWZmNjR2IiwiY3JlYXRlTmV3IiwicmVhZEV4aXN0aW5nIiwibWVtRmlsZS5jcmVhdGVOZXciLCJiaWdNZW1GaWxlLmNyZWF0ZU5ldyIsIm1lbUZpbGUucmVhZEV4aXN0aW5nIiwiYmlnTWVtRmlsZS5yZWFkRXhpc3RpbmciLCJmYXN0RmlsZS5yZWFkRXhpc3RpbmciLCJmYXN0RmlsZS5jcmVhdGVPdmVycmlkZSIsInJlcXVpcmUiLCJhc3NlcnQiLCJiaXRSZXZlcnNlIiwibG9nMiIsIkJsYWtlMmIiLCJiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24iLCJiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uIiwiZ2V0Q3VydmUiLCJiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQiLCJiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbiIsImJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbiIsImJpbkZpbGVVdGlscy5yZWFkQmlnSW50IiwiYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlIiwicmVhZEhlYWRlciIsInd0bnNVdGlscy5yZWFkSGVhZGVyIiwiemtleVV0aWxzLnJlYWRIZWFkZXIiLCJiaW5GaWxlVXRpbHMucmVhZEZ1bGxTZWN0aW9uIiwiZm52IiwiaGV4TGVuIiwiU2NhbGFyX25hdGl2ZSIsIlNjYWxhcl9iaWdpbnQiLCJ0b1JwckxFIiwidG9ScHJCRSIsImZyb21ScHJMRSIsImZyb21ScHJCRSIsInRvU3RyaW5nIiwidG9MRUJ1ZmYiLCJ6ZXJvIiwib25lIiwiU2NhbGFyLm5hZiIsImJ1aWxkU3FydCIsImFsZzVfdG9uZWxsaVNoYW5rcyIsImFsZzRfa29uZyIsImFsZzNfYXRraW4iLCJhbGcyX3NoYW5rcyIsImFsZzEwX2FkaiIsImFsZzlfYWRqIiwiYWxnOF9jb21wbGV4IiwicXVhcnRlclJvdW5kIiwiZG91YmxlUm91bmQiLCJDaGFDaGEiLCJnZXRSYW5kb21CeXRlcyIsImdldFJhbmRvbVNlZWQiLCJ0aHJlYWRSbmciLCJnZXRUaHJlYWRSbmciLCJfRjFGaWVsZCIsIkYxRmllbGQiLCJmVXRpbHMubXVsU2NhbGFyIiwiZlV0aWxzLmV4cCIsInV0aWxzX25hdGl2ZSIsInV0aWxzX2JpZ2ludCIsImJ1ZmZSZXZlcnNlQml0cyIsImJ1aWxkQmF0Y2hDb252ZXJ0IiwiV2FzbUZpZWxkMSIsIldhc21GaWVsZDIiLCJXYXNtRmllbGQzIiwiV2FzbUN1cnZlIiwidGhyZWFkIiwiTUVNX1NJWkUiLCJpbkJyb3dzZXIiLCJOb2RlV29ya2VyIiwiRGVmZXJyZWQiLCJzbGVlcCIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJidWlsZFRocmVhZE1hbmFnZXIiLCJUaHJlYWRNYW5hZ2VyIiwiYnVpbGRCYXRjaEFwcGx5S2V5IiwiYnVpbGRQYWlyaW5nIiwicFRTaXplcyIsImJ1aWxkTXVsdGlleHAiLCJidWlsZEZGVCIsImJ1aWxkRW5naW5lIiwiYnVpbGRCbjEyOCIsImJ1aWxkQmxzMTIzODEiLCJfU2NhbGFyIiwiX3V0aWxzIiwiV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIiwiY2lyY29tUnVudGltZSIsImJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlIiwid3Ruc1V0aWxzLndyaXRlQmluIiwid3Ruc19jYWxjdWxhdGUiLCJncm90aDE2X3Byb3ZlIiwiY3VydmVzLmdldEN1cnZlRnJvbU5hbWUiLCJibGFrZTJiIiwicmVhZENvbnRyaWJ1dGlvbiIsIndyaXRlQ29udHJpYnV0aW9uIiwibWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zIiwia2V5UGFpci5jcmVhdGVQVGF1S2V5IiwicHRhdVV0aWxzLndyaXRlUFRhdUhlYWRlciIsInB0YXVVdGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2giLCJtaXNjLmZvcm1hdEhhc2giLCJ1dGlscy5yZWFkUFRhdUhlYWRlciIsInV0aWxzLnJlYWRDb250cmlidXRpb25zIiwidXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoIiwibWlzYy5oYXNoSXNFcXVhbCIsInV0aWxzLndyaXRlUFRhdUhlYWRlciIsInV0aWxzLmZyb21QdGF1UHViS2V5UnByIiwidXRpbHMud3JpdGVDb250cmlidXRpb25zIiwic2FtZVJhdGlvIiwibWlzYy5zYW1lUmF0aW8iLCJ1dGlscy5rZXlGcm9tQmVhY29uIiwia2V5UGFpci5nZXRHMnNwIiwidXRpbHMudG9QdGF1UHViS2V5UnByIiwibWlzYy5ieXRlQXJyYXkyaGV4IiwibWlzYy5nZXRSYW5kb21SbmciLCJtaXNjLmhleDJCeXRlQXJyYXkiLCJiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24iLCJvcGVuIiwiRmFzdEZpbGUiLCJNZW1GaWxlIiwicmVhZEJpbkZpbGUiLCJzdGFydFJlYWRVbmlxdWVTZWN0aW9uIiwiZW5kUmVhZFNlY3Rpb24iLCJyZWFkQmlnSW50IiwiYmxzMTIzODFyIiwiYm4xMjhyIiwibG9hZFIxY3MiLCJsb2FkU3ltcyIsInd0bnNVdGlscy53cml0ZSIsImxvYWRSMWNzSGVhZGVyIiwiemtleVV0aWxzLnJlYWRNUENQYXJhbXMiLCJ6a2V5VXRpbHMud3JpdGVIZWFkZXIiLCJ6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMiLCJtaXNjLmNsb25lSGFzaGVyIiwiYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsIiwidXRpbHMuaGFzaFB1YktleSIsInV0aWxzLmhhc2hHMSIsImJlYWNvbiIsImV4cG9ydFZlcmlmaWNhdGlvbktleSJdLCJtYXBwaW5ncyI6Ijs7O0lBQUE7SUFDQSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FB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L0MsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMvRSxRQUFRLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUMxSDtJQUNBLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDNUMsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNqRixRQUFRLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUM5SDtJQUNBLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FB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QUFPLENBQUM7QUFDdEU7SUFDQSxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ2xMO0lBQ0EsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNsRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUM5TDtJQUNBLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDaEQsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdB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QUFTLEVBQUUsT0FBTyxPQUFPLENBQUM7SUFDbEQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsR0FBRyxVQUFVLEtBQUtBLFdBQVMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzFELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsU0FBUztJQUNULFFBQVEsT0FBTyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7QUFDM0g7SUFDQSxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDdEcsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQy9CLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFD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RyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLO0lBQ0wsSUFBSSxTQUFTLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUNwQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxPQUFPLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDekMsUUFBUSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxRQUFRLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0MsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRCxZQUFZLElBQUksR0FBRyxH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LENBQUMsTUFBTTtJQUNQLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNEO0FBQ0E7SUFDQTtJQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hELElBQUksTUFBTSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUMsQ0FBQztBQUNGO0lBQ0E7SUFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDRjtJQUNBO0lBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMvQixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM3RSxJQUFJLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQztBQUNGO0lBQ0E7SUFDQSxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hELElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckUsS0FBSztJQUNMLElBQUksT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0FBQ0Y7SUFDQSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDOUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7SUFDQSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUN2QyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtJQUNBLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJ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QUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNsQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7QUFDQTtJQUNBLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTjs7SUNoS0EsU0FBUyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0QztJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7QUFDRDtJQUNBLFNBQVMsV0FBVyxDQUFDLEVBQUUsRUFBRTtJQUN6QixJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakM7SUFDQSxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ2UsTUFBTSxNQUFNLENBQUM7QUFDNUI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7SUFDdEIsUUFBUSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRztJQUNyQixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLENBQUM7SUFDYixZQUFZLENBQUM7SUFDYixZQUFZLENBQUM7SUFDYixZQUFZLENBQUM7SUFDYixTQUFTLENBQUM7SUFDVixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRztJQUNkLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDMUMsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUc7SUFDZCxRQUFRLE9BQU9HLEtBQVUsQ0FBQ0MsS0FBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRixLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsR0FBRztJQUNmLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxHQUFHO0lBQ2I7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JGO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNyQjtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztJQUN4QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7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LENBQUMsRUFBRSxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBR0MsV0FBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3hEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RD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RUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxD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USxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUdBLFVBQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDdkMsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJ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SSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2YsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNaLFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDbEMsWUFBWSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxF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QyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzdCLFNBQVNBLFdBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLFNBQVNBLFdBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdDLFNBQVNBLFdBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNGO0FBQ0E7SUFDQSxLQUFLLENBQUMsSUFBSSxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDN0I7SUFDQSxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEVBQUUsR0FBRztJQUM1UixDQUFDLENBQUM7QUFDRjtJQUNBLEtBQUssQ0FBQyxlQUFlLEdBQUcsU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUM5RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxD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RUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lB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LENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFP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QU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9B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R0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0E7O0lDdEtlLE1BQU0sVUFBVSxDQUFDO0FBQ2hDO0lBQ0EsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDL0IsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0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QUFZLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxPQUFPLEdBQUcsQ0FBQztJQUN2QixTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxDQUFD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SSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN0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QUM7SUFDOUMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztBQUNOO0lBQ0E7O0lDL0hBLE1BQU0sT0FBTyxHQUFHO0lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNwQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3BDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDcEMsQ0FBQyxDQUFDO0FBQ0Y7SUFDZSxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3hELElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLElBQUksZUFBZSxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxNQUFNLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQztBQUNwQztJQUNBLFFBQVEsSUFBSSxJQUFJLENBQUM7SUFDakIsUUFBUSxJQUFJLE1BQU0sQ0FBQztJQUNuQixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsTUFBTSxHQUFHLDBCQUEwQixDQUFDO0lBQ3BELGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsTUFBTSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWE7SUFDYixTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksSUFBSSxNQUFNLElBQUksUUFBUSxFQUFFO0lBQ3BDLGdCQUFnQixNQUFNLEdBQUcsMEJBQTBCLENBQUM7SUFDcEQsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEdBQUcsb0JBQW9CLENBQUM7SUFDOUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsYUFBYTtJQUNiLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxTQUFTO0lBQ1QsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDaEU7SUFDQSxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckUsUUFBUSxJQUFJLE9BQU8sR0FBRyxPQUFPLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTtJQUN6RCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsWUFBWSxNQUFNLElBQUksR0FBRztJQUN6QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQztJQUMxRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ3RELG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO0lBQ2xDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7SUFDbEMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDekMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUIsaUJBQWlCLENBQUM7SUFDbEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxhQUFhLENBQUM7SUFDZCxZQUFZLFVBQVUsQ0FBQyxJQUFJO0lBQzNCLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDdEMsYUFBYSxDQUFDO0lBQ2QsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNoQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RSxhQUFhO0lBQ2IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsZUFBZSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtJQUN2RSxRQUFRLE9BQU8sTUFBTSxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxLQUFLLENBQUM7SUFDTixJQUFJLENBQUMsQ0FBQyxjQUFjLEdBQUcsZUFBZSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtJQUM3RSxRQUFRLE9BQU8sTUFBTSxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRSxLQUFLLENBQUM7SUFDTjs7SUNyRmUsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BCLElBQUksZUFBZSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUNoRTtJQUNBLFFBQVEsTUFBTSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUM7SUFDcEMsUUFBUSxPQUFPLEdBQUcsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUN0QyxRQUFRLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUNuQztJQUNBLFFBQVEsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQztJQUMxRixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixnQkFBZ0IsUUFBUSxHQUFHLHFCQUFxQixDQUFDO0lBQ2pELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixhQUFhO0lBQ2IsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFlBQVksSUFBSSxPQUFPLEVBQUU7SUFDekIsZ0JBQWdCLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDcEMsZ0JBQWdCLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDNUMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25DLGFBQWE7SUFDYixZQUFZLFNBQVMsR0FBRyxhQUFhLENBQUM7SUFDdEMsWUFBWSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBQ3BDO0lBQ0EsWUFBWSxJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUU7SUFDckMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsZ0JBQWdCLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRCxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsYUFBYTtBQUNiO0lBQ0EsU0FBUyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUN0QyxZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixnQkFBZ0IsUUFBUSxHQUFHLHFCQUFxQixDQUFDO0lBQ2pELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixhQUFhO0lBQ2IsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFlBQVksSUFBSSxPQUFPLEVBQUU7SUFDekIsZ0JBQWdCLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDcEMsZ0JBQWdCLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDNUMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25DLGFBQWE7SUFDYixZQUFZLFNBQVMsR0FBRyxhQUFhLENBQUM7SUFDdEMsWUFBWSxRQUFRLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLFlBQVksSUFBSSxPQUFPLElBQUksUUFBUSxFQUFFO0lBQ3JDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGdCQUFnQixTQUFTLEdBQUcsbUJBQW1CLENBQUM7SUFDaEQsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWE7SUFDYixTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkIsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QixZQUFZLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hCLFlBQVksSUFBSSxPQUFPLEVBQUU7SUFDekIsZ0JBQWdCLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDcEMsZ0JBQWdCLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDNUMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25DLGFBQWE7SUFDYixZQUFZLFFBQVEsR0FBRyxZQUFZLENBQUM7SUFDcEMsWUFBWSxTQUFTLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDaEMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDakMsWUFBWSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsWUFBWSxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQy9CLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDOUMsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtJQUNyQyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxPQUFPLEVBQUU7SUFDckIsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtJQUNBLFFBQVEsSUFBSSxPQUFPLENBQUM7SUFDcEIsUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksZUFBZSxDQUFDLEVBQUU7SUFDL0MsWUFBWSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsWUFBWSxJQUFJLFFBQVEsRUFBRTtJQUMxQixnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RyxhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksSUFBSSxTQUFTLEVBQUU7SUFDM0IsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFlBQVksTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELFlBQVksT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixTQUFTLE1BQU07QUFDZjtJQUNBLFlBQVksZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QztJQUNBLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDdkIsWUFBWSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDO0lBQ3ZELFlBQVksTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUNwRDtJQUNBLFlBQVksTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMzRSxnQkFBZ0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRSxnQkFBZ0IsSUFBSSxRQUFRLEVBQUU7SUFDOUIsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakgsaUJBQWlCO0lBQ2pCLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3RELG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pILGlCQUFpQjtJQUNqQixnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoRixnQkFBZ0IsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSztJQUNoRSxvQkFBb0IsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxvQkFBb0IsT0FBTyxDQUFDLENBQUM7SUFDN0IsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLGFBQWE7QUFDYjtJQUNBLFlBQVksTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUQsZ0JBQWdCLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsZ0JBQWdCLE1BQU0sZUFBZSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDMUQsZ0JBQWdCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN0QyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM5QyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0Qsd0JBQXdCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEUsd0JBQXdCLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsd0JBQXdCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELHdCQUF3QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0lBQ0Esd0JBQXdCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4Qyx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRSx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RSx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDM0UsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7SUFDaEQsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztJQUM1Qix3QkFBd0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFO0lBQ3JDLDRCQUE0QixJQUFJLFVBQVUsRUFBRTtJQUM1QyxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDcEYsb0NBQW9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxvQ0FBb0MsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDO0lBQ3hELG9DQUFvQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLGdDQUFnQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUNwRixvQ0FBb0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLG9DQUFvQyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7SUFDeEQsb0NBQW9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsNkJBQTZCO0lBQzdCLDRCQUE0QixJQUFJLFNBQVMsRUFBRTtJQUMzQyxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SCxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SCw2QkFBNkI7SUFDN0IsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YseUJBQXlCLE1BQU07SUFDL0IsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YseUJBQXlCO0lBQ3pCLHdCQUF3QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxxQkFBcUI7SUFDckIsaUJBQWlCO0FBQ2pCO0lBQ0EsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM5QyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0Qsd0JBQXdCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELHdCQUF3QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzdFLHdCQUF3QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckQsd0JBQXdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsd0JBQXdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckQsWUFBWSxJQUFJLE9BQU8sRUFBRTtJQUN6QixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDNUIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hELG9CQUFvQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxvQkFBb0IsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDNUMsb0JBQW9CLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGlCQUFpQjtJQUNqQixnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM5QyxvQkFBb0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxvQkFBb0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksV0FBVyxFQUFFO0lBQ3pCLFlBQVksT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxTQUFTLE1BQU07SUFDZixZQUFZLE9BQU8sT0FBTyxDQUFDO0lBQzNCLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsZUFBZSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUQsUUFBUSxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRSxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxlQUFlLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzRCxRQUFRLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLGVBQWUsTUFBTSxDQUFDLElBQUksRUFBRTtJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUM5QixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDbEMsWUFBWSxTQUFTLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLFNBQVMsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDdEMsWUFBWSxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBQ2xDLFlBQVksU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksTUFBTSxHQUFHLFlBQVksQ0FBQztJQUNsQyxZQUFZLFNBQVMsR0FBRyxhQUFhLENBQUM7SUFDdEMsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxNQUFNLGNBQWMsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsWUFBWSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ2hFLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNwQixhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDMUIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0FBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELFlBQVksTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLE1BQU0sZUFBZSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDdEQsWUFBWSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDbEMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6RCxvQkFBb0IsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRSxvQkFBb0IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxvQkFBb0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDckQsb0JBQW9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDekU7SUFDQSxvQkFBb0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUN2RSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQztJQUM3Qyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLG9CQUFvQixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEQsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6RCxvQkFBb0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDckQsb0JBQW9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDekUsb0JBQW9CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqRCxvQkFBb0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxvQkFBb0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFlBQVksV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNwQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sV0FBVyxDQUFDO0lBQzNCLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLGVBQWUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksTUFBTSxDQUFDO0lBQ25CLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQy9CLFlBQVksTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUNuQyxTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUNuQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtJQUNsRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxTQUFTO0lBQ1QsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUQsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQzNDLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3hELFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLE1BQU0sY0FBYyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDakQ7QUFDQTtJQUNBLFFBQVEsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0QyxZQUFZLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1QjtJQUNBLFlBQVksTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUM1RCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQztJQUNyQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoQixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGFBQWEsQ0FBQztBQUNkO0lBQ0EsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxZQUFZLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLGVBQWUsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDeEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDL0IsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDL0IsWUFBWSxNQUFNLEdBQUcsY0FBYyxDQUFDO0lBQ3BDLFlBQVksVUFBVSxHQUFHLG1CQUFtQixDQUFDO0lBQzdDLFNBQVMsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDdEMsWUFBWSxNQUFNLEdBQUcsY0FBYyxDQUFDO0lBQ3BDLFlBQVksVUFBVSxHQUFHLG1CQUFtQixDQUFDO0lBQzdDLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6RCxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDM0MsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFD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LEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3pCO0lBQ0EsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsSUFBSSxrQkFBa0IsQ0FBQyxLQUFL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QUMsUUFBUSxDQUFDLENBQUM7QUFDMUQ7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDcEM7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ3JGLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFlBQVksTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsWUFBWSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQztJQUN4QyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLFlBQVksWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFB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QUFDO0FBQzFCO0lBQ0EsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJ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UUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0E7O0lDcEpBLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDeEI7SUFDTyxTQUFTRSxXQUFTLENBQUMsQ0FBQyxFQUFFO0lBQzdCLElBQUksTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ2hDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLE1BQU0sTUFBTSxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFD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LEdBQUcsRUFBRTtJQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVFELFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDRCxXQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUUMsWUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUNELFdBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVFHLFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEQsUUFBUUEsWUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQ0QsV0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElB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QUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBQztJQUM1QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQVk7SUFDcEMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUM7SUFDdkMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUM7SUFDcEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUM7QUFDcEI7SUFDQSxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUM7SUFDckMsRUFBRSxJQUFJLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFDO0FBQzdDO0lBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUM7SUFDL0UsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUM7QUFDNUQ7SUFDQSxFQUFFLElBQUksR0FBRyxFQUFFO0lBQ1gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQztJQUNwQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUM7SUFDaEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcs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SUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsU0FBU0EsV0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsU0FBU0EsV0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNEO0FBQ0E7SUFDTyxTQUFTcUMsTUFBSSxFQUFFLENBQUM7SUFDdkI7SUFDQSxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEVBQUUsR0FBRztJQUM1UixDQUFDO0FBQ0Q7QUFDQTtJQUNPLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDckMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVCLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDM0IsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ3BCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckUsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztBQUNEO0lBQ08sU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNwQyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3JELElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtJQUM3QyxJQUFJO0lBQ0osUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxL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Q0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0FBQ0E7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU1DLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekM7SUFDQSxJQUFJLE1BQU1GLGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQ3BCLFFBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsUUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUksTUFBTXVCLFdBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLE1BQU1BLFdBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxNQUFNLEVBQUUsQ0FB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LENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUQsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLEtBQUs7QUFDTDtJQUNBLENBQUM7QUFDRDtBQUNBO0lBQ0EsZUFBZSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFO0lBQzNDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNsQztJQUNBLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0MsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzFCLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLElBQUksT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxXQUFXLEVBQUU7SUFDeEMsUUFBUSxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ3JHLFFBQVEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM1QixZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsU0FBUyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQyxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsU0FBUyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQyxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3hELFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxHQUFHLFdBQVcsRUFBRTtJQUN4QyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztBQUNEO0FBQ0E7SUFDTyxlQUFlLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN6RCxJQUFJLE1BQU1GLHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEUsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsUUFBUSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxLQUFLO0lBQ0wsSUFBSSxNQUFNQyxjQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLGVBQWUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDL0MsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQztJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO0lBQ3JCLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENB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LEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEM7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4RCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkQsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDMUM7QUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkUsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUY7QUFDQTtJQUNBLElBQUksSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQzNCO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELFFBQVEsYUFBYSxDQUFDLElBQUksQ0FBQy9CLFFBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMs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QztJQUNwQixTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0M7SUFDQSxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUks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LEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsQixHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEo7SUFDQSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDOUIsRUFBRSxJQUFJLFFBQVEsR0FBRyxzQ0FBc0M7SUFDdkQsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQzFDO0lBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQzdCLElBQUksS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSTtJQUNKLEdBQUcsT0FBTyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ3JCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMvQixJQUFJO0lBQ0osR0FBRztBQUNIO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJ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QUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRztBQUNIO0FBQ0E7SUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMzQixFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDekQ7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUc7QUFDSDtBQUNBO0lBQ0EsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGVBQWUsQ0FBQyxHQUFHLENBQUM7SUFDOUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ25GO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRztJQUN0QixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksZUFBZSxHQUFHLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztJQUNsQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbkY7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHO0FBQ0g7SUFDQSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekcsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGVBQWUsQ0FBQyxHQUFHLENBQUM7SUFDOUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ25GO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRztJQUN0QixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0YsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtJQUNuQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3JEO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMzQixFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFO0lBQ3ZDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDckQ7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFJO0lBQ1IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUc7QUFDSDtBQUNBO0lBQ0EsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztJQUNsQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbkY7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDekIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGVBQWUsR0FBRyxFQUFFLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyx1QkFBdUIsRUFBRSxHQUFHLENBQUM7SUFDdkMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ25GO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekcsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztJQUNsQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDbkY7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDekIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLEVBQUU7SUFDRjtJQUNBO0lBQ0E7QUFDQTtJQUNBLENBQUMsU0FBUyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRTtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3hCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRTtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQzdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRTtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNkLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDekIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSTtJQUNKLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQzVCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRTtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4QyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNkLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEVBQUU7QUFDRjtJQUNBLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUN0QjtJQUNBLENBQUMsU0FBUyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0c7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHO0FBQ0g7SUFDQSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEYsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RixFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsY0FBYyxDQUFDLEdBQUcsQ0FBQztJQUM3QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdHO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEYsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDNUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNkLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFJO0lBQ1IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSTtJQUNKLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLEVBQUU7QUFDRjtJQUNBLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUN0QjtJQUNBLENBQUMsU0FBUyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0c7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHO0FBQ0g7SUFDQSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZGLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RyxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsY0FBYyxDQUFDLEdBQUcsQ0FBQztJQUM3QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdHO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMzQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkYsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDNUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2RixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNkLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM1QyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEYsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFJO0lBQ1IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4RixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDNUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hGLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSTtJQUNKLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLEVBQUU7QUFDRjtJQUNBLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztBQUN0QjtJQUNBLENBQUMsU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDO0lBQzFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxSztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDbkYsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZMLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25GLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2TCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNuRixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkwsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDbkYsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZMLEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25GLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2TCxHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDak0sRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFLO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRztJQUN0QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25GLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2TCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNuRixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkwsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDbkYsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZMLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25GLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2TCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNuRixHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkwsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqTSxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsZUFBZSxDQUFDLEdBQUcsQ0FBQztJQUM5QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUs7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEwsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDcEYsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hMLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDekIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEwsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3BGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4TCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEwsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3BGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4TCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25GLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2TCxHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDak0sRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDN0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFLO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDbkYsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZMLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDcEYsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hMLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3BGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN4TCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDcEYsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hMLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEwsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDcEYsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hMLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEwsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pNLEVBQUU7QUFDRjtJQUNBLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztBQUN4QjtJQUNBLENBQUMsU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDO0lBQzFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcFQ7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9LLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3WSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvSyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN1ksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL0ssR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdZLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9LLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3WSxHQUFHO0FBQ0g7SUFDQSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvSyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN1ksR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDclgsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwVDtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvSyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN1ksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL0ssR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdZLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9LLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3WSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvSyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN1ksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL0ssR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdZLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyWCxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsZUFBZSxDQUFDLEdBQUcsQ0FBQztJQUM5QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BUO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEwsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlZLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hMLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5WSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEwsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlZLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoTCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOVksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEwsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlZLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoTCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOVksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvSyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN1ksR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDclgsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxTQUFTLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDN0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwVDtJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9LLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3WSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNkLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hMLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5WSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoTCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOVksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hMLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5WSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEwsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlZLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFJO0lBQ1IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hMLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5WSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEwsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlZLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSTtJQUNKLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JYLEVBQUU7QUFDRjtJQUNBLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztBQUN4QjtJQUNBLENBQUMsU0FBUyxXQUFXLENBQUMsR0FBRyxDQUFDO0lBQzFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwbEI7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9XLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0gsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3MEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL1csR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3SCxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzcwQixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvVyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdILEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDNzBCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9XLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0gsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3MEIsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL1csR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3SCxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzcwQixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcnVCLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwbEI7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL1csR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3SCxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzcwQixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvVyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdILEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDNzBCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9XLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0gsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3MEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL1csR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3SCxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzcwQixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvVyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdILEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDNzBCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcnVCLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxlQUFlLENBQUMsR0FBRyxDQUFDO0lBQzlCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwbEI7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoWCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlILElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOTBCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hYLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUgsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5MEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hYLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUgsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5MEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hYLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUgsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5MEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUk7SUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaFgsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5SCxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzkwQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaFgsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5SCxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzkwQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy9XLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0gsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM3MEIsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3J1QixFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsY0FBYyxDQUFDLEdBQUcsQ0FBQztJQUM3QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcGxCO0lBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDL1csR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3SCxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzcwQixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNkLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hYLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUgsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5MEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaFgsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5SCxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzkwQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaFgsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5SCxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzkwQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaFgsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5SCxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzkwQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoWCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlILElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOTBCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoWCxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlILElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOTBCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSTtJQUNKLEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNydUIsRUFBRTtBQUNGO0lBQ0EsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO0FBQ3hCO0lBQ0EsQ0FBQyxTQUFTLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDM0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNycEM7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUc7QUFDSDtJQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3Q4QyxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQztJQUMxQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JwQztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvdUIsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqUSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdzRCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvdUIsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqUSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdzRCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvdUIsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqUSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdzRCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvdUIsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqUSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdzRCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMvdUIsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqUSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzdzRCxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdDhDLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7SUFDL0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNycEM7SUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNodkIsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNodkIsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaHZCLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbFEsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5c0QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2h2QixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xRLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOXNELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkIsSUFBSSxLQUFJO0lBQ1IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNwQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2h2QixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xRLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOXNELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNodkIsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUk7SUFDSixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3Q4QyxFQUFFO0FBQ0Y7SUFDQSxDQUFDLFNBQVMsZUFBZSxDQUFDLEdBQUcsQ0FBQztJQUM5QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JwQztJQUNBLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQy91QixHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pRLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDN3NELEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaHZCLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbFEsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5c0QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3BCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaHZCLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbFEsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5c0QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2h2QixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xRLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDOXNELElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNodkIsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSTtJQUNSLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNodkIsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzlzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaHZCLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbFEsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5c0QsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuQixJQUFJO0lBQ0osR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdDhDLEVBQUU7QUFDRjtJQUNBLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztBQUMxQjtJQUNBO0lBQ0EsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFD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QyxDQUFDLENBQUM7SUFDMUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUMxQixLQUFLO0lBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtBQUNBO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRTtJQUN2QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsUUFBTSxDQUFDLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3ZCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxJQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxJQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxJQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxNQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMzQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxNQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMzQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxNQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMzQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxNQUFJLENB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USxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxRQUFNLENBQUMsUUFBUSxDQUFDQSxRQUFNLENBQUMsSUFBSSxDQUFDQSxRQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDLENBQUM7QUFDRjtJQUNBO0FBQ0FBLFlBQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2pELElBQUksTUFBTSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuSCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztBQUNGO0lBQ0E7QUFDQUEsWUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMvQixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM3RSxJQUFJLE9BQU9BLFFBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUM7QUFDRjtJQUNBO0FBQ0FBLFlBQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDaEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDL0IsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFB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QjtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDekI7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRjtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0M7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDckIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FB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Q0FBQyxFQUFFLEVBQUU7SUFDdkMsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFFLFNBQVM7SUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxVQUFVLEdBQUdBLE1BQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBUSxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQVEsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQU8sQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RFLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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UUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMxQixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDakIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxD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R0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtBQUNBO0lBQ0EsU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDaEM7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDeEIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLE1BQU1yQyxXQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsSUFBSUEsV0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHQyxVQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDRDtJQUNBLFNBQVNBLFVBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQzdCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxJQUFJ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QU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTjs7SUNoS0EsU0FBU0MsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdEM7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekQ7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxhQUFXLENBQUMsRUFBRSxFQUFFO0lBQ3pCLElBQUlELGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakM7SUFDQSxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNlLE1BQU1FLFFBQU0sQ0FBQztBQUM1QjtJQUNBLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtJQUN0QixRQUFRLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHO0lBQ3JCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksQ0FBQztJQUNiLFlBQVksQ0FBQztJQUNiLFlBQVksQ0FBQztJQUNiLFlBQVksQ0FBQztJQUNiLFNBQVMsQ0FBQztJQUNWLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHO0lBQ2QsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxQyxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRztJQUNkLFFBQVEsT0FBTzlGLEtBQVUsQ0FBQ0MsS0FBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRixLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsR0FBRztJQUNmLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxHQUFHO0lBQ2I7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU0RixhQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckY7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztJQUN4QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU87SUFDeEMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELEtBQUs7SUFDTDs7SUMvRkE7QUFHQTtJQUNPLFNBQVNFLGdCQUFjLENBQUMsQ0FBQyxFQUFFO0lBQ2xDLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUN2QyxRQUFRLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUNsRCxZQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELFNBQVMsTUFBTTtJQUNmLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFDMUQsYUFBYTtJQUNiLFNBQVM7SUFDVCxLQUFLO0lBQ0wsU0FBUztJQUNULFFBQVEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxlQUFhLEdBQUc7SUFDaEMsSUFBSSxNQUFNLEdBQUcsR0FBR0QsZ0JBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLEtBQUs7SUFDTCxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDRDtJQUNBLElBQUlFLFdBQVMsR0FBRyxJQUFJLENBQUM7QUFDckI7SUFDTyxTQUFTQyxjQUFZLEdBQUc7SUFDL0IsSUFBSSxJQUFJRCxXQUFTLEVBQUUsT0FBT0EsV0FBUyxDQUFDO0lBQ3BDLElBQUlBLFdBQVMsR0FBRyxJQUFJSCxRQUFNLENBQUNFLGVBQWEsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxPQUFPQyxXQUFTLENBQUM7SUFDckI7O0lDckNBO0FBS0E7SUFDZSxNQUFNN0YsU0FBTyxDQUFDO0lBQzdCLElBQUksV0FBVyxDQUFDLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBR0YsV0FBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3hEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNwQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUWtGLFdBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixLQUFLO0FBQ0w7SUFDQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsWUFBWSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFNBQVMsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDMUIsWUFBWSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxTQUFTO0lBQ1QsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDckIsWUFBWSxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUM1QixZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxTQUFTLE1BQU07SUFDZixZQUFZLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDckQsU0FBUztBQUNUO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixRQUFRLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2hELEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNw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QUFHLEdBQUdqRCxVQUFNLENBQUMsR0FBRyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBR0EsVUFBTSxDQUFDLElBQUksQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUdBLFVBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQ0EsVUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBR0EsVUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUdBLFVBQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUNBLFVBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRTtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHQSxVQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3ZDLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFD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RyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsUUFBUSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJ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QUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsT0FBT0MsV0FBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQTs7SUNyREE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBSUE7SUFDZSxNQUFNLE9BQU8sQ0FBQztJQUM3QixJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFO0lBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUks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QUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCx3QkFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QztJQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO0lBQ3RCLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDMUIsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztJQUM5Qix3QkFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5Qyx3QkFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkMsZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO0lBQ3RCLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDMUIsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztJQUM5Qix3QkFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5Qyx3QkFBd0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RDtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDO0lBQ0E7SUFDQSxRQUFRLE1BQU0sRUFBRTtJQUNoQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN0QixnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO0lBQzFCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3hDLG9CQUFvQixJQUFJLENBQUMsZ0JBQWdCO0lBQ3pDLHdCQUF3QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDbEMsNEJBQTRCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsNEJBQTRCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxPQUFPO0lBQ2YsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzlCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM5QixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07SUFDaEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0E7SUFDQSxRQUFRLE9BQU87SUFDZixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN0QixnQkFBZ0IsRUFBRTtJQUNsQixnQkFBZ0IsSUFBSSxDQUFD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QyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDeEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QixLQUFLO0FBQ0w7SUFDQTs7SUN4UkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBTUE7QUFDQTtJQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDMUIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbkMsZ0JBQWdCLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUssTUFBTTtJQUNYLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLE9BQU96RSxJQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLEtBQUs7SUFDTCxDQUFDO0FBQ0Q7QUFDQTtJQUNlLE1BQU0sRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUNoQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6QjtJQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUMsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5QztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENB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Q0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDNUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNoQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMs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Q0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbEQsWUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDN0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNsRCxZQUFZLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUM3QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2xELFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzdCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QixRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDM0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtJQUMzQixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENB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M0IsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7QUFDQW1CLFdBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtJQUNsRCxJQUFJLE9BQU87SUFDWCxRQUFRcEIsV0FBUyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDN0IsU0FBU0EsV0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsU0FBU0EsV0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsU0FBU0EsV0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBb0IsV0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQzdCO0lBQ0EsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxF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QUMsQ0FBQztBQUN6RjtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxD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LElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUs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QUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ1osUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7SUFDbEIsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNwQixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakYsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDWixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxVQUFVLENBQUMsRUFBRTtJQUN4QyxZQUFZLENBQUMsR0FBR3BGLFVBQWUsQ0FBQ0MsR0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEcsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNaLFFBQVEsSUFBSSxDQUFDLFlBQVksVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNuRCxZQUFZLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxZQUFZLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxZQUFZLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUN2QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDakIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDd0UsY0FBWSxFQUFFLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0E7O0lDbExlLE1BQU1ZLFdBQVMsQ0FBQztBQUMvQjtJQUNBLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO0lBQ3BELFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7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QUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakcsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lB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QUN0QyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsU0FBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQztJQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUMzQixZQUFZLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzVCLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNkLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNCLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDMUMsWUFBWSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDbkMsU0FBUyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDN0MsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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SUFDOUIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDbEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkUsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFFB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RUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SCxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SCw2QkFBNkI7SUFDN0IsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YseUJBQXlCLE1BQU07SUFDL0IsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFD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O0lBQzdCLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSWlGLFlBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJQSxZQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUMsWUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJRSxXQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRyxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUEsV0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUlELFlBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FB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RUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuQztJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakU7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVM7SUFDckMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFD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QUU7SUFDbEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztJQUNMLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztJQUNMLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFD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Q0FBQ0EsT0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQ0EsT0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqSTtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1ILFdBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUcsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FB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QU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDckksSUFBSSxlQUFlLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMvSCxJQUFJLGVBQWUsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN2SixJQUFJLGVBQWUsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNySixJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDdkgsSUFBSSxlQUFlLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUMvSSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzdJLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuSSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsSUFBSSxlQUFlLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNsRTtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQSxJQUFJTyxlQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekU7SUFDQSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ1osVUFBZSxDQUFDLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7QUFDcEc7SUFDQSxJQUFJLE1BQU0sbUJBQW1CLEdBQUcsSUFBSXRGLFdBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM3QztJQUNBLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxZQUFZLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsV0FBVyxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLG9CQUFvQixRQUFRLENBQUMsQ0FBQztBQUNyRTtJQUNBLElBQUksZUFBZSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ3NGLFVBQWUsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUNyRztJQUNBLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksTUFBTU8sa0JBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNoRTtJQUNBLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksT0FBTyxZQUFZLENBQUM7QUFDeEI7SUFDQSxJQUFJLGVBQWUsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO0lBQzFGLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxNQUFNNUYsaUJBQThCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM3QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUU7SUFDbEQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsWUFBWSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDckQsWUFBWSxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFlBQVksTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLFlBQVksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RCxZQUFZLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RDtJQUNBLFlBQVksY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxZQUFZLE1BQU0sWUFBWSxDQUFDO0lBQy9CLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNwQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6RCxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNQyxlQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksZUFBZSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtBQUNqRjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksWUFBWSxFQUFFO0lBQ3JELFlBQVksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDeEQ7SUFDQSxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RDtJQUNBLFlBQVksbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDMUIsS0FBSztBQUNMO0FBQ0E7SUFDQTs7SUNqS2UsZUFBZSxhQUFhLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUU7QUFDdEY7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU1NLFdBQXdCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTStFLGNBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNYixhQUEwQixDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLElBQUksTUFBTWlCLGVBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNaEcsY0FBdUIsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsSUFBSSxNQUFNMkcsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsSUFBSSxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNoRCxJQUFJLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELElBQUksTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDckQsSUFBSSxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUNwRDtJQUNBLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCO0lBQ0E7QUFDQTtJQUNBLElBQUksT0FBTztBQUNYO0lBQ0EsSUFBSSxlQUFlLGNBQWMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakYsUUFBUSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDNUIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNckcsaUJBQThCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFlBQVksTUFBTSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU1DLGVBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLGVBQWUsbUJBQW1CLENBQUMsQ0FBQyxFQUFFO0lBQzlDLFlBQVksTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzNELFlBQVksTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUNqRCxZQUFZLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsWUFBWSxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsY0FBYyxDQUFDO0FBQ3JEO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2hDLFlBQVksTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsWUFBWSxNQUFNRyxzQkFBbUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JGO0lBQ0EsWUFBWSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6QixZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDO0lBQ3pCLGdCQUFnQixJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixnQkFBZ0IsSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckQsb0JBQW9CLEtBQUssQ0FBQyxHQUFHLEdBQUdQLFlBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsb0JBQW9CLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekUsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLE1BQU1RLGNBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLGdCQUFnQixJQUFJLElBQUksQ0FBQztJQUN6QixnQkFBZ0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDO0lBQ3JELGdCQUFnQixJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxnQkFBZ0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDO0lBQ3JELGdCQUFnQixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsYUFBYTtJQUNiLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDakQsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsZ0JBQWdCLE1BQU0sZUFBZSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDMUQsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsb0JBQW9CLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdELHdCQUF3QixJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSSx3QkFBd0IsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RSx3QkFBd0IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1Qyx3QkFBd0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDekQsd0JBQXdCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDN0U7SUFDQSx3QkFBd0IsSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3pDLHdCQUF3QixLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzVELHdCQUF3QixLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN6RSx3QkFBd0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUM1RCx3QkFBd0IsS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekU7SUFDQSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25GO0lBQ0Esd0JBQXdCLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDNUQsd0JBQXdCLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCx3QkFBd0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUM1RCx3QkFBd0IsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsU0FBUztJQUNULFFBQVEsZUFBZSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ3ZDLFlBQVksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxZQUFZLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxZQUFZLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQztJQUNBLFlBQVksTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQzNELFlBQVksTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUNqRCxZQUFZLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsWUFBWSxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsY0FBYyxDQUFDO0FBQ3JEO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2hDLFlBQVksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUIsWUFBWSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLGdCQUFnQixJQUFJLElBQUksQ0FBQztJQUN6QixnQkFBZ0IsSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDaEUsZ0JBQWdCLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsZ0JBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM3QixvQkFBb0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbEMsb0JBQW9CLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLG9CQUFvQixLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMvRSxvQkFBb0IsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9FLGlCQUFpQixNQUFNO0lBQ3ZCLG9CQUFvQixLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDbkYsb0JBQW9CLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxHQUFHLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDN0QsU0FBUztJQUNULEtBQUs7SUFDTDs7SUM3SWUsZUFBZSxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUNoRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTUUsV0FBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25GO0lBQ0EsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0rRSxjQUFvQixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRTtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU1DLGlCQUF1QixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUU7SUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDL0UsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztJQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNyRSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRTtJQUNBLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDckI7SUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCO0FBQ0E7QUFDQTtJQUNBLElBQUksZUFBZSxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0lBQzdFLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdkIsUUFBUSxNQUFNbkYsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsWUFBWSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRixZQUFZLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0lBQ1QsUUFBUSxNQUFNQyxjQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFO0lBQ3JFLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdkIsUUFBUSxNQUFNRCxzQkFBbUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxZQUFZLElBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixZQUFZLE1BQU0sT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE1BQU1DLGNBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7QUFDQTtJQUNBOzs7Ozs7Ozs7Ozs7Ozs7SUNsRWUsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDdEQsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsUUFBUSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7SUFDTCxJQUFJLFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRTtJQUMvQixRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQy9CLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVksTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxZQUFZLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUs7SUFDakMsZ0JBQWdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzdDO0lBQ0EsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QyxnQkFBZ0IsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDekMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUM7SUFDbkMsYUFBYSxDQUFDLENBQUM7SUFDZixZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVMsQ0FBQztJQUNWLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSztBQUNMO0lBQ0E7O0lDMUJBO0lBQ0EsTUFBTVEsUUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDTyxTQUFTdEgsWUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDckMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQy9CLFFBQVEsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSyxNQUFNLElBQUksS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO0lBQ2xDLFlBQVksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsU0FBUztJQUNULEtBQUs7SUFDTCxDQUFDO0FBQ0Q7SUFDTyxNQUFNRSxHQUFDLEdBQUdGLFlBQVUsQ0FBQztBQUM1QjtJQUNPLFNBQVNHLFdBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQ3BDLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ2hCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7SUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ08sU0FBU0MsV0FBUyxDQUFDLENBQUMsRUFBRTtJQUM3QixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFa0gsUUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0FBQ0Q7SUFDTyxTQUFTakgsWUFBVSxDQUFDLENBQUMsRUFBRTtJQUM5QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxRQUFNLENBQUMsQ0FBQyxFQUFFO0lBQzFCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7QUFDRDtJQUNPLFNBQVNDLFdBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hDLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDRDtJQUNPLFNBQVNDLFlBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2pDLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDRDtJQUNPLE1BQU1DLEtBQUcsR0FBR0YsV0FBUyxDQUFDO0lBQ3RCLE1BQU1HLEtBQUcsR0FBR0YsWUFBVSxDQUFDO0FBQzlCO0lBQ08sU0FBU0csT0FBSyxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7QUFDQTtJQUNPLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDbkIsSUFBSSxPQUFPLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3BCLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsU0FBUyxNQUFNO0lBQ2YsWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLFNBQVM7SUFDVCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLEtBQUs7SUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0FBQ0E7SUFDTyxTQUFTQyxNQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksT0FBTyxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNwQixZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsU0FBUyxNQUFNO0lBQ2YsWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLFNBQVM7SUFDVCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLEtBQUs7SUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ08sU0FBU0MsVUFBUSxDQUFDLENBQUMsRUFBRTtJQUM1QixJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtJQUM1QyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxLQUFLO0lBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxTQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUNsQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsSUFBSSxPQUFPLEdBQUcsRUFBRTtJQUNoQixRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDMUIsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7QUFDQTtJQUNPLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNPLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNPLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDRDtJQUNPLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNPLFNBQVNDLFFBQU0sQ0FBQyxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRTtJQUN2QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDekIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDekIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDekIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsTUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDM0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsTUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDM0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ08sU0FBU0MsTUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDM0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxD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TUFBTSxDQUFDbEMsUUFBTSxFQUFFbUMsZUFBYSxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNEO0FBQ0E7SUFDQTtBQUNBbkMsWUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDaEQsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR0EsUUFBTSxDQUFDLFFBQVEsQ0FBQ0EsUUFBTSxDQUFDLElBQUksQ0FBQ0EsUUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtBQUNBQSxZQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDRjtJQUNBO0FBQ0FBLFlBQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDaEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDL0IsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0UsSUFBSSxPQUFPQSxRQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtBQUNBQSxZQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hELElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFD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QixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUNBLFVBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUdBLFVBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHQSxVQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDQSxVQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0U7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBR0EsVUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FB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RDtBQUNBO0lBQ08sU0FBU0MsWUFBVSxDQUFDLElBQUksRUFBRTtJQUNqQyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ2xDLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLFNBQVMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUN6QyxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixTQUFTLE1BQU07SUFDZixZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixTQUFTO0lBQ1QsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDTyxTQUFTQyxZQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUNu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LENBQUMsQ0FBQztJQUMzRSxTQUFTO0lBQ1QsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN0RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUMzQixRQUFRLElBQUksSUFBSSxDQUFDLFlBQVk7SUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3BDO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNyRixRQUFRLE9BQU8sQ0FBQyxDQUFD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RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FB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QUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxRQUFRLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lB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TUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUNyQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1FLGlCQUE4QixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU1DLGVBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBO0FBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQ3BCLFFBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQ0EsUUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxJQUFJLE1BQU0sRUFBRSxHQUFHQSxRQUFNLENBQUMsR0FBRyxDQUFDQSxRQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ0EsUUFBTSxDQUFDLEdBQUcsQ0FBQ0EsUUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTXVCLFdBQXdCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU1BLFdBQXdCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEM7SUFDQSxJQUFJLElBQUksT0FBTyxDQUFDO0lBQ2hCLElBQUksT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLElBQUksT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQztJQUNmLElBQUksTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQztJQUNmLElBQUksTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixJQUFJLE1BQU1GLGVBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7QUFDQTtJQUNBLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEM7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUksTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDcEUsSUFBSSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDcEUsSUFBSSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDekUsSUFBSSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU1JLHNCQUFtQyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxJQUFJLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDaEMsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxF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QUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRTtJQUN4QyxRQUFRLE1BQU0sRUFBRSxHQUFHLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLFVBQVUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkQsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3JELFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxRQUFRLE1BQU0sR0FBRyxDQUFDO0lBQ2xCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJ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QVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQy9CLFlBQVksS0FBSyxHQUFHLHVCQUF1QixDQUFDO0lBQzVDLFlBQVksVUFBVSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLFlBQVksZUFBZSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xELFlBQVksTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksS0FBSyxHQUFHLHVCQUF1QixDQUFDO0lBQzVDLFlBQVksVUFBVSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLFlBQVksZUFBZSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xELFlBQVksTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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QUNsRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxLQUFLLENBQUM7SUFDZCxJQUFJLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLElBQUksTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pGLElBQUksTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxN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LENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksY0FBYyxFQUFFO0lBQzlELFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDcEU7SUFDQSxZQUFZLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsWUFBWSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25HLFlBQVksTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxRDtJQUNBLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFNBQVM7SUFDVCxRQUFRLE1BQU1DLGNBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLEVBQUUsR0FBRyxNQUFNd0YsV0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ3RDO0FBQ0E7SUFDQSxRQUFRLE9BQU8sSUFB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
|